xref: /linux/drivers/media/pci/mgb4/mgb4_regs.c (revision 576d7fed09c7edbae7600f29a8a3ed6c1ead904f)
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 "mgb4_regs.h"
9 
10 int mgb4_regs_map(struct resource *res, struct mgb4_regs *regs)
11 {
12 	regs->mapbase = res->start;
13 	regs->mapsize = res->end - res->start;
14 
15 	if (!request_mem_region(regs->mapbase, regs->mapsize, res->name))
16 		return -EINVAL;
17 	regs->membase = ioremap(regs->mapbase, regs->mapsize);
18 	if (!regs->membase) {
19 		release_mem_region(regs->mapbase, regs->mapsize);
20 		return -EINVAL;
21 	}
22 
23 	return 0;
24 }
25 
26 void mgb4_regs_free(struct mgb4_regs *regs)
27 {
28 	iounmap(regs->membase);
29 	release_mem_region(regs->mapbase, regs->mapsize);
30 }
31