Loading arch/arm/plat-mxc/devices.c +21 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ */ #include <linux/kernel.h> #include <linux/slab.h> #include <linux/init.h> #include <linux/err.h> #include <linux/platform_device.h> Loading @@ -36,9 +37,10 @@ int __init mxc_register_device(struct platform_device *pdev, void *data) return ret; } struct platform_device *__init imx_add_platform_device(const char *name, int id, 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) const void *data, size_t size_data, u64 dmamask) { int ret = -ENOMEM; struct platform_device *pdev; Loading @@ -47,6 +49,23 @@ struct platform_device *__init imx_add_platform_device(const char *name, int 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) Loading arch/arm/plat-mxc/include/mach/devices-common.h +12 −2 Original line number Diff line number Diff line Loading @@ -10,9 +10,19 @@ #include <linux/platform_device.h> #include <linux/init.h> struct platform_device *imx_add_platform_device(const char *name, int id, struct platform_device *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); const void *data, size_t size_data, u64 dmamask); static inline struct platform_device *imx_add_platform_device( const char *name, int id, const struct resource *res, unsigned int num_resources, const void *data, size_t size_data) { return imx_add_platform_device_dmamask( name, id, res, num_resources, data, size_data, 0); } #include <linux/fec.h> struct imx_fec_data { Loading Loading
arch/arm/plat-mxc/devices.c +21 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ */ #include <linux/kernel.h> #include <linux/slab.h> #include <linux/init.h> #include <linux/err.h> #include <linux/platform_device.h> Loading @@ -36,9 +37,10 @@ int __init mxc_register_device(struct platform_device *pdev, void *data) return ret; } struct platform_device *__init imx_add_platform_device(const char *name, int id, 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) const void *data, size_t size_data, u64 dmamask) { int ret = -ENOMEM; struct platform_device *pdev; Loading @@ -47,6 +49,23 @@ struct platform_device *__init imx_add_platform_device(const char *name, int 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) Loading
arch/arm/plat-mxc/include/mach/devices-common.h +12 −2 Original line number Diff line number Diff line Loading @@ -10,9 +10,19 @@ #include <linux/platform_device.h> #include <linux/init.h> struct platform_device *imx_add_platform_device(const char *name, int id, struct platform_device *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); const void *data, size_t size_data, u64 dmamask); static inline struct platform_device *imx_add_platform_device( const char *name, int id, const struct resource *res, unsigned int num_resources, const void *data, size_t size_data) { return imx_add_platform_device_dmamask( name, id, res, num_resources, data, size_data, 0); } #include <linux/fec.h> struct imx_fec_data { Loading