Loading arch/arm/plat-mxc/devices.c +0 −53 Original line number Original line Diff line number Diff line Loading @@ -37,59 +37,6 @@ int __init mxc_register_device(struct platform_device *pdev, void *data) return ret; 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 = { struct device mxc_aips_bus = { .init_name = "mxc_aips", .init_name = "mxc_aips", .parent = &platform_bus, .parent = &platform_bus, Loading arch/arm/plat-mxc/include/mach/devices-common.h +14 −2 Original line number Original line Diff line number Diff line Loading @@ -14,10 +14,22 @@ extern struct device mxc_aips_bus; extern struct device mxc_aips_bus; extern struct device mxc_ahb_bus; extern struct device mxc_ahb_bus; struct platform_device *imx_add_platform_device_dmamask( static inline struct platform_device *imx_add_platform_device_dmamask( const char *name, int id, const char *name, int id, const struct resource *res, unsigned int num_resources, const struct resource *res, unsigned int num_resources, const void *data, size_t size_data, u64 dmamask); const void *data, size_t size_data, u64 dmamask) { struct platform_device_info pdevinfo = { .name = name, .id = id, .res = res, .num_res = num_resources, .data = data, .size_data = size_data, .dma_mask = dmamask, }; return platform_device_register_full(&pdevinfo); } static inline struct platform_device *imx_add_platform_device( static inline struct platform_device *imx_add_platform_device( const char *name, int id, const char *name, int id, Loading Loading
arch/arm/plat-mxc/devices.c +0 −53 Original line number Original line Diff line number Diff line Loading @@ -37,59 +37,6 @@ int __init mxc_register_device(struct platform_device *pdev, void *data) return ret; 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 = { struct device mxc_aips_bus = { .init_name = "mxc_aips", .init_name = "mxc_aips", .parent = &platform_bus, .parent = &platform_bus, Loading
arch/arm/plat-mxc/include/mach/devices-common.h +14 −2 Original line number Original line Diff line number Diff line Loading @@ -14,10 +14,22 @@ extern struct device mxc_aips_bus; extern struct device mxc_aips_bus; extern struct device mxc_ahb_bus; extern struct device mxc_ahb_bus; struct platform_device *imx_add_platform_device_dmamask( static inline struct platform_device *imx_add_platform_device_dmamask( const char *name, int id, const char *name, int id, const struct resource *res, unsigned int num_resources, const struct resource *res, unsigned int num_resources, const void *data, size_t size_data, u64 dmamask); const void *data, size_t size_data, u64 dmamask) { struct platform_device_info pdevinfo = { .name = name, .id = id, .res = res, .num_res = num_resources, .data = data, .size_data = size_data, .dma_mask = dmamask, }; return platform_device_register_full(&pdevinfo); } static inline struct platform_device *imx_add_platform_device( static inline struct platform_device *imx_add_platform_device( const char *name, int id, const char *name, int id, Loading