hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
kernel/drivers/char/hw_random/exynos-trng.c
....@@ -109,7 +109,6 @@
109109 static int exynos_trng_probe(struct platform_device *pdev)
110110 {
111111 struct exynos_trng_dev *trng;
112
- struct resource *res;
113112 int ret = -ENOMEM;
114113
115114 trng = devm_kzalloc(&pdev->dev, sizeof(*trng), GFP_KERNEL);
....@@ -128,13 +127,12 @@
128127 platform_set_drvdata(pdev, trng);
129128 trng->dev = &pdev->dev;
130129
131
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
132
- trng->mem = devm_ioremap_resource(&pdev->dev, res);
130
+ trng->mem = devm_platform_ioremap_resource(pdev, 0);
133131 if (IS_ERR(trng->mem))
134132 return PTR_ERR(trng->mem);
135133
136134 pm_runtime_enable(&pdev->dev);
137
- ret = pm_runtime_get_sync(&pdev->dev);
135
+ ret = pm_runtime_resume_and_get(&pdev->dev);
138136 if (ret < 0) {
139137 dev_err(&pdev->dev, "Could not get runtime PM.\n");
140138 goto err_pm_get;
....@@ -153,7 +151,7 @@
153151 goto err_clock;
154152 }
155153
156
- ret = hwrng_register(&trng->rng);
154
+ ret = devm_hwrng_register(&pdev->dev, &trng->rng);
157155 if (ret) {
158156 dev_err(&pdev->dev, "Could not register hwrng device.\n");
159157 goto err_register;
....@@ -167,7 +165,7 @@
167165 clk_disable_unprepare(trng->clk);
168166
169167 err_clock:
170
- pm_runtime_put_sync(&pdev->dev);
168
+ pm_runtime_put_noidle(&pdev->dev);
171169
172170 err_pm_get:
173171 pm_runtime_disable(&pdev->dev);
....@@ -179,7 +177,6 @@
179177 {
180178 struct exynos_trng_dev *trng = platform_get_drvdata(pdev);
181179
182
- hwrng_unregister(&trng->rng);
183180 clk_disable_unprepare(trng->clk);
184181
185182 pm_runtime_put_sync(&pdev->dev);