xref: /linux/drivers/net/ipa/ipa_reg.c (revision 24bce201d79807b668bf9d9e0aca801c5c0d5f78)
1 // SPDX-License-Identifier: GPL-2.0
2 
3 /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
4  * Copyright (C) 2019-2020 Linaro Ltd.
5  */
6 
7 #include <linux/io.h>
8 
9 #include "ipa.h"
10 #include "ipa_reg.h"
11 
12 int ipa_reg_init(struct ipa *ipa)
13 {
14 	struct device *dev = &ipa->pdev->dev;
15 	struct resource *res;
16 
17 	/* Setup IPA register memory  */
18 	res = platform_get_resource_byname(ipa->pdev, IORESOURCE_MEM,
19 					   "ipa-reg");
20 	if (!res) {
21 		dev_err(dev, "DT error getting \"ipa-reg\" memory property\n");
22 		return -ENODEV;
23 	}
24 
25 	ipa->reg_virt = ioremap(res->start, resource_size(res));
26 	if (!ipa->reg_virt) {
27 		dev_err(dev, "unable to remap \"ipa-reg\" memory\n");
28 		return -ENOMEM;
29 	}
30 	ipa->reg_addr = res->start;
31 
32 	return 0;
33 }
34 
35 void ipa_reg_exit(struct ipa *ipa)
36 {
37 	iounmap(ipa->reg_virt);
38 }
39