1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (C) 2021-2022 Digiteq Automotive
4  *     author: Martin Tuma <martin.tuma@digiteqautomotive.com>
5  */
6 
7 #include <linux/ioport.h>
8 #include <linux/errno.h>
9 #include "mgb4_regs.h"
10 
mgb4_regs_map(struct resource * res,struct mgb4_regs * regs)11 int mgb4_regs_map(struct resource *res, struct mgb4_regs *regs)
12 {
13 	regs->mapbase = res->start;
14 	regs->mapsize = resource_size(res);
15 
16 	if (!request_mem_region(regs->mapbase, regs->mapsize, res->name))
17 		return -EINVAL;
18 	regs->membase = ioremap(regs->mapbase, regs->mapsize);
19 	if (!regs->membase) {
20 		release_mem_region(regs->mapbase, regs->mapsize);
21 		return -EINVAL;
22 	}
23 
24 	return 0;
25 }
26 
mgb4_regs_free(struct mgb4_regs * regs)27 void mgb4_regs_free(struct mgb4_regs *regs)
28 {
29 	iounmap(regs->membase);
30 	release_mem_region(regs->mapbase, regs->mapsize);
31 }
32