Skip to content

Commit 1c459de

Browse files
zonquebroonie
authored andcommitted
ARM: pxa: ssp: use devm_ functions
Use devm_ functions to allocate memory, ioremap, clk_get etc to clean up the error unwind path. Signed-off-by: Daniel Mack <[email protected]> Acked-by: Haojian Zhuang <[email protected]> Signed-off-by: Mark Brown <[email protected]>
1 parent a6e56c2 commit 1c459de

File tree

1 file changed

+12
-28
lines changed

1 file changed

+12
-28
lines changed

arch/arm/plat-pxa/ssp.c

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -94,19 +94,16 @@ static int pxa_ssp_probe(struct platform_device *pdev)
9494
struct resource *res;
9595
struct ssp_device *ssp;
9696
struct device *dev = &pdev->dev;
97-
int ret = 0;
9897

99-
ssp = kzalloc(sizeof(struct ssp_device), GFP_KERNEL);
98+
ssp = devm_kzalloc(dev, sizeof(struct ssp_device), GFP_KERNEL);
10099
if (ssp == NULL)
101100
return -ENOMEM;
102101

103102
ssp->pdev = pdev;
104103

105-
ssp->clk = clk_get(dev, NULL);
106-
if (IS_ERR(ssp->clk)) {
107-
ret = PTR_ERR(ssp->clk);
108-
goto err_free;
109-
}
104+
ssp->clk = devm_clk_get(dev, NULL);
105+
if (IS_ERR(ssp->clk))
106+
return PTR_ERR(ssp->clk);
110107

111108
if (dev->of_node) {
112109
struct of_phandle_args dma_spec;
@@ -148,32 +145,28 @@ static int pxa_ssp_probe(struct platform_device *pdev)
148145
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
149146
if (res == NULL) {
150147
dev_err(dev, "no memory resource defined\n");
151-
ret = -ENODEV;
152-
goto err_free_clk;
148+
return -ENODEV;
153149
}
154150

155-
res = request_mem_region(res->start, resource_size(res),
156-
pdev->name);
151+
res = devm_request_mem_region(dev, res->start, resource_size(res),
152+
pdev->name);
157153
if (res == NULL) {
158154
dev_err(dev, "failed to request memory resource\n");
159-
ret = -EBUSY;
160-
goto err_free_clk;
155+
return -EBUSY;
161156
}
162157

163158
ssp->phys_base = res->start;
164159

165-
ssp->mmio_base = ioremap(res->start, resource_size(res));
160+
ssp->mmio_base = devm_ioremap(dev, res->start, resource_size(res));
166161
if (ssp->mmio_base == NULL) {
167162
dev_err(dev, "failed to ioremap() registers\n");
168-
ret = -ENODEV;
169-
goto err_free_mem;
163+
return -ENODEV;
170164
}
171165

172166
ssp->irq = platform_get_irq(pdev, 0);
173167
if (ssp->irq < 0) {
174168
dev_err(dev, "no IRQ resource defined\n");
175-
ret = -ENODEV;
176-
goto err_free_io;
169+
return -ENODEV;
177170
}
178171

179172
if (dev->of_node) {
@@ -198,17 +191,8 @@ static int pxa_ssp_probe(struct platform_device *pdev)
198191
mutex_unlock(&ssp_lock);
199192

200193
platform_set_drvdata(pdev, ssp);
201-
return 0;
202194

203-
err_free_io:
204-
iounmap(ssp->mmio_base);
205-
err_free_mem:
206-
release_mem_region(res->start, resource_size(res));
207-
err_free_clk:
208-
clk_put(ssp->clk);
209-
err_free:
210-
kfree(ssp);
211-
return ret;
195+
return 0;
212196
}
213197

214198
static int pxa_ssp_remove(struct platform_device *pdev)

0 commit comments

Comments
 (0)