.. | .. |
---|
148 | 148 | { |
---|
149 | 149 | struct device_node *cn, *node = pdev->dev.of_node; |
---|
150 | 150 | struct cvm_mmc_host *host; |
---|
151 | | - struct resource *res; |
---|
152 | 151 | void __iomem *base; |
---|
153 | 152 | int mmc_irq[9]; |
---|
154 | 153 | int i, ret = 0; |
---|
.. | .. |
---|
205 | 204 | |
---|
206 | 205 | host->last_slot = -1; |
---|
207 | 206 | |
---|
208 | | - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
---|
209 | | - if (!res) { |
---|
210 | | - dev_err(&pdev->dev, "Platform resource[0] is missing\n"); |
---|
211 | | - return -ENXIO; |
---|
212 | | - } |
---|
213 | | - base = devm_ioremap_resource(&pdev->dev, res); |
---|
| 207 | + base = devm_platform_ioremap_resource(pdev, 0); |
---|
214 | 208 | if (IS_ERR(base)) |
---|
215 | 209 | return PTR_ERR(base); |
---|
216 | | - host->base = (void __iomem *)base; |
---|
| 210 | + host->base = base; |
---|
217 | 211 | host->reg_off = 0; |
---|
218 | 212 | |
---|
219 | | - res = platform_get_resource(pdev, IORESOURCE_MEM, 1); |
---|
220 | | - if (!res) { |
---|
221 | | - dev_err(&pdev->dev, "Platform resource[1] is missing\n"); |
---|
222 | | - return -EINVAL; |
---|
223 | | - } |
---|
224 | | - base = devm_ioremap_resource(&pdev->dev, res); |
---|
| 213 | + base = devm_platform_ioremap_resource(pdev, 1); |
---|
225 | 214 | if (IS_ERR(base)) |
---|
226 | 215 | return PTR_ERR(base); |
---|
227 | | - host->dma_base = (void __iomem *)base; |
---|
| 216 | + host->dma_base = base; |
---|
228 | 217 | /* |
---|
229 | 218 | * To keep the register addresses shared we intentionaly use |
---|
230 | 219 | * a negative offset here, first register used on Octeon therefore |
---|
.. | .. |
---|
288 | 277 | if (ret) { |
---|
289 | 278 | dev_err(&pdev->dev, "Error populating slots\n"); |
---|
290 | 279 | octeon_mmc_set_shared_power(host, 0); |
---|
| 280 | + of_node_put(cn); |
---|
291 | 281 | goto error; |
---|
292 | 282 | } |
---|
293 | 283 | i++; |
---|
.. | .. |
---|
338 | 328 | .remove = octeon_mmc_remove, |
---|
339 | 329 | .driver = { |
---|
340 | 330 | .name = KBUILD_MODNAME, |
---|
| 331 | + .probe_type = PROBE_PREFER_ASYNCHRONOUS, |
---|
341 | 332 | .of_match_table = octeon_mmc_match, |
---|
342 | 333 | }, |
---|
343 | 334 | }; |
---|