hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/hwspinlock/rockchip_hwspinlock.c
....@@ -5,13 +5,10 @@
55 #include <linux/module.h>
66 #include <linux/device.h>
77 #include <linux/io.h>
8
-#include <linux/pm_runtime.h>
98 #include <linux/slab.h>
10
-#include <linux/spinlock.h>
119 #include <linux/hwspinlock.h>
1210 #include <linux/platform_device.h>
1311 #include <linux/of.h>
14
-#include <linux/of_address.h>
1512
1613 #include "hwspinlock_internal.h"
1714
....@@ -59,19 +56,15 @@
5956 {
6057 struct rockchip_hwspinlock *hwspin;
6158 struct hwspinlock *hwlock;
62
- struct resource *res;
63
- int idx, ret;
59
+ int idx;
6460
65
- if (!pdev->dev.of_node)
66
- return -ENODEV;
67
-
68
- hwspin = devm_kzalloc(&pdev->dev, sizeof(*hwspin) +
69
- sizeof(*hwlock) * HWSPINLOCK_NUMBER, GFP_KERNEL);
61
+ hwspin = devm_kzalloc(&pdev->dev,
62
+ struct_size(hwspin, bank.lock, HWSPINLOCK_NUMBER),
63
+ GFP_KERNEL);
7064 if (!hwspin)
7165 return -ENOMEM;
7266
73
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
74
- hwspin->io_base = devm_ioremap_resource(&pdev->dev, res);
67
+ hwspin->io_base = devm_platform_ioremap_resource(pdev, 0);
7568 if (IS_ERR(hwspin->io_base))
7669 return PTR_ERR(hwspin->io_base);
7770
....@@ -82,39 +75,9 @@
8275
8376 platform_set_drvdata(pdev, hwspin);
8477
85
- pm_runtime_enable(&pdev->dev);
86
-
87
- ret = hwspin_lock_register(&hwspin->bank, &pdev->dev,
88
- &rockchip_hwspinlock_ops, 0,
89
- HWSPINLOCK_NUMBER);
90
- if (ret)
91
- goto reg_fail;
92
-
93
- return 0;
94
-
95
-reg_fail:
96
- pm_runtime_disable(&pdev->dev);
97
- iounmap(hwspin->io_base);
98
-
99
- return ret;
100
-}
101
-
102
-static int rockchip_hwspinlock_remove(struct platform_device *pdev)
103
-{
104
- struct rockchip_hwspinlock *hwspin = platform_get_drvdata(pdev);
105
- int ret;
106
-
107
- ret = hwspin_lock_unregister(&hwspin->bank);
108
- if (ret) {
109
- dev_err(&pdev->dev, "%s failed: %d\n", __func__, ret);
110
- return ret;
111
- }
112
-
113
- pm_runtime_disable(&pdev->dev);
114
-
115
- iounmap(hwspin->io_base);
116
-
117
- return 0;
78
+ return devm_hwspin_lock_register(&pdev->dev, &hwspin->bank,
79
+ &rockchip_hwspinlock_ops, 0,
80
+ HWSPINLOCK_NUMBER);
11881 }
11982
12083 static const struct of_device_id rockchip_hwpinlock_ids[] = {
....@@ -125,7 +88,6 @@
12588
12689 static struct platform_driver rockchip_hwspinlock_driver = {
12790 .probe = rockchip_hwspinlock_probe,
128
- .remove = rockchip_hwspinlock_remove,
12991 .driver = {
13092 .name = "rockchip_hwspinlock",
13193 .of_match_table = of_match_ptr(rockchip_hwpinlock_ids),