Loading drivers/dma/coh901318.c +24 −48 Original line number Diff line number Diff line Loading @@ -1438,34 +1438,32 @@ static int __init coh901318_probe(struct platform_device *pdev) io = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!io) goto err_get_resource; return -ENODEV; /* Map DMA controller registers to virtual memory */ if (request_mem_region(io->start, if (devm_request_mem_region(&pdev->dev, io->start, resource_size(io), pdev->dev.driver->name) == NULL) { err = -EBUSY; goto err_request_mem; } pdev->dev.driver->name) == NULL) return -ENOMEM; pdata = pdev->dev.platform_data; if (!pdata) goto err_no_platformdata; return -ENODEV; base = kmalloc(ALIGN(sizeof(struct coh901318_base), 4) + base = devm_kzalloc(&pdev->dev, ALIGN(sizeof(struct coh901318_base), 4) + pdata->max_channels * sizeof(struct coh901318_chan), GFP_KERNEL); if (!base) goto err_alloc_coh_dma_channels; return -ENOMEM; base->chans = ((void *)base) + ALIGN(sizeof(struct coh901318_base), 4); base->virtbase = ioremap(io->start, resource_size(io)); if (!base->virtbase) { err = -ENOMEM; goto err_no_ioremap; } base->virtbase = devm_ioremap(&pdev->dev, io->start, resource_size(io)); if (!base->virtbase) return -ENOMEM; base->dev = &pdev->dev; base->platform = pdata; Loading @@ -1474,25 +1472,20 @@ static int __init coh901318_probe(struct platform_device *pdev) COH901318_DEBUGFS_ASSIGN(debugfs_dma_base, base); platform_set_drvdata(pdev, base); irq = platform_get_irq(pdev, 0); if (irq < 0) goto err_no_irq; return irq; err = request_irq(irq, dma_irq_handler, IRQF_DISABLED, err = devm_request_irq(&pdev->dev, irq, dma_irq_handler, IRQF_DISABLED, "coh901318", base); if (err) { dev_crit(&pdev->dev, "Cannot allocate IRQ for DMA controller!\n"); goto err_request_irq; } if (err) return err; err = coh901318_pool_create(&base->pool, &pdev->dev, sizeof(struct coh901318_lli), 32); if (err) goto err_pool_create; return err; /* init channels for device transfers */ coh901318_base_init(&base->dma_slave, base->platform->chans_slave, Loading Loading @@ -1538,6 +1531,7 @@ static int __init coh901318_probe(struct platform_device *pdev) if (err) goto err_register_memcpy; platform_set_drvdata(pdev, base); dev_info(&pdev->dev, "Initialized COH901318 DMA on virtual base 0x%08x\n", (u32) base->virtbase); Loading @@ -1547,19 +1541,6 @@ static int __init coh901318_probe(struct platform_device *pdev) dma_async_device_unregister(&base->dma_slave); err_register_slave: coh901318_pool_destroy(&base->pool); err_pool_create: free_irq(platform_get_irq(pdev, 0), base); err_request_irq: err_no_irq: iounmap(base->virtbase); err_no_ioremap: kfree(base); err_alloc_coh_dma_channels: err_no_platformdata: release_mem_region(pdev->resource->start, resource_size(pdev->resource)); err_request_mem: err_get_resource: return err; } Loading @@ -1570,11 +1551,6 @@ static int __exit coh901318_remove(struct platform_device *pdev) dma_async_device_unregister(&base->dma_memcpy); dma_async_device_unregister(&base->dma_slave); coh901318_pool_destroy(&base->pool); free_irq(platform_get_irq(pdev, 0), base); iounmap(base->virtbase); kfree(base); release_mem_region(pdev->resource->start, resource_size(pdev->resource)); return 0; } Loading Loading
drivers/dma/coh901318.c +24 −48 Original line number Diff line number Diff line Loading @@ -1438,34 +1438,32 @@ static int __init coh901318_probe(struct platform_device *pdev) io = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!io) goto err_get_resource; return -ENODEV; /* Map DMA controller registers to virtual memory */ if (request_mem_region(io->start, if (devm_request_mem_region(&pdev->dev, io->start, resource_size(io), pdev->dev.driver->name) == NULL) { err = -EBUSY; goto err_request_mem; } pdev->dev.driver->name) == NULL) return -ENOMEM; pdata = pdev->dev.platform_data; if (!pdata) goto err_no_platformdata; return -ENODEV; base = kmalloc(ALIGN(sizeof(struct coh901318_base), 4) + base = devm_kzalloc(&pdev->dev, ALIGN(sizeof(struct coh901318_base), 4) + pdata->max_channels * sizeof(struct coh901318_chan), GFP_KERNEL); if (!base) goto err_alloc_coh_dma_channels; return -ENOMEM; base->chans = ((void *)base) + ALIGN(sizeof(struct coh901318_base), 4); base->virtbase = ioremap(io->start, resource_size(io)); if (!base->virtbase) { err = -ENOMEM; goto err_no_ioremap; } base->virtbase = devm_ioremap(&pdev->dev, io->start, resource_size(io)); if (!base->virtbase) return -ENOMEM; base->dev = &pdev->dev; base->platform = pdata; Loading @@ -1474,25 +1472,20 @@ static int __init coh901318_probe(struct platform_device *pdev) COH901318_DEBUGFS_ASSIGN(debugfs_dma_base, base); platform_set_drvdata(pdev, base); irq = platform_get_irq(pdev, 0); if (irq < 0) goto err_no_irq; return irq; err = request_irq(irq, dma_irq_handler, IRQF_DISABLED, err = devm_request_irq(&pdev->dev, irq, dma_irq_handler, IRQF_DISABLED, "coh901318", base); if (err) { dev_crit(&pdev->dev, "Cannot allocate IRQ for DMA controller!\n"); goto err_request_irq; } if (err) return err; err = coh901318_pool_create(&base->pool, &pdev->dev, sizeof(struct coh901318_lli), 32); if (err) goto err_pool_create; return err; /* init channels for device transfers */ coh901318_base_init(&base->dma_slave, base->platform->chans_slave, Loading Loading @@ -1538,6 +1531,7 @@ static int __init coh901318_probe(struct platform_device *pdev) if (err) goto err_register_memcpy; platform_set_drvdata(pdev, base); dev_info(&pdev->dev, "Initialized COH901318 DMA on virtual base 0x%08x\n", (u32) base->virtbase); Loading @@ -1547,19 +1541,6 @@ static int __init coh901318_probe(struct platform_device *pdev) dma_async_device_unregister(&base->dma_slave); err_register_slave: coh901318_pool_destroy(&base->pool); err_pool_create: free_irq(platform_get_irq(pdev, 0), base); err_request_irq: err_no_irq: iounmap(base->virtbase); err_no_ioremap: kfree(base); err_alloc_coh_dma_channels: err_no_platformdata: release_mem_region(pdev->resource->start, resource_size(pdev->resource)); err_request_mem: err_get_resource: return err; } Loading @@ -1570,11 +1551,6 @@ static int __exit coh901318_remove(struct platform_device *pdev) dma_async_device_unregister(&base->dma_memcpy); dma_async_device_unregister(&base->dma_slave); coh901318_pool_destroy(&base->pool); free_irq(platform_get_irq(pdev, 0), base); iounmap(base->virtbase); kfree(base); release_mem_region(pdev->resource->start, resource_size(pdev->resource)); return 0; } Loading