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)11int 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)27void mgb4_regs_free(struct mgb4_regs *regs) 28 { 29 iounmap(regs->membase); 30 release_mem_region(regs->mapbase, regs->mapsize); 31 } 32