|
@@ -37,59 +37,6 @@ int __init mxc_register_device(struct platform_device *pdev, void *data)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-struct platform_device *__init imx_add_platform_device_dmamask(
|
|
|
- const char *name, int id,
|
|
|
- const struct resource *res, unsigned int num_resources,
|
|
|
- const void *data, size_t size_data, u64 dmamask)
|
|
|
-{
|
|
|
- int ret = -ENOMEM;
|
|
|
- struct platform_device *pdev;
|
|
|
-
|
|
|
- pdev = platform_device_alloc(name, id);
|
|
|
- if (!pdev)
|
|
|
- goto err;
|
|
|
-
|
|
|
- if (dmamask) {
|
|
|
- /*
|
|
|
- * This memory isn't freed when the device is put,
|
|
|
- * I don't have a nice idea for that though. Conceptually
|
|
|
- * dma_mask in struct device should not be a pointer.
|
|
|
- * See http://thread.gmane.org/gmane.linux.kernel.pci/9081
|
|
|
- */
|
|
|
- pdev->dev.dma_mask =
|
|
|
- kmalloc(sizeof(*pdev->dev.dma_mask), GFP_KERNEL);
|
|
|
- if (!pdev->dev.dma_mask)
|
|
|
- /* ret is still -ENOMEM; */
|
|
|
- goto err;
|
|
|
-
|
|
|
- *pdev->dev.dma_mask = dmamask;
|
|
|
- pdev->dev.coherent_dma_mask = dmamask;
|
|
|
- }
|
|
|
-
|
|
|
- if (res) {
|
|
|
- ret = platform_device_add_resources(pdev, res, num_resources);
|
|
|
- if (ret)
|
|
|
- goto err;
|
|
|
- }
|
|
|
-
|
|
|
- if (data) {
|
|
|
- ret = platform_device_add_data(pdev, data, size_data);
|
|
|
- if (ret)
|
|
|
- goto err;
|
|
|
- }
|
|
|
-
|
|
|
- ret = platform_device_add(pdev);
|
|
|
- if (ret) {
|
|
|
-err:
|
|
|
- if (dmamask)
|
|
|
- kfree(pdev->dev.dma_mask);
|
|
|
- platform_device_put(pdev);
|
|
|
- return ERR_PTR(ret);
|
|
|
- }
|
|
|
-
|
|
|
- return pdev;
|
|
|
-}
|
|
|
-
|
|
|
struct device mxc_aips_bus = {
|
|
|
.init_name = "mxc_aips",
|
|
|
.parent = &platform_bus,
|