Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0e392412 authored by Uwe Kleine-König's avatar Uwe Kleine-König Committed by Greg Kroah-Hartman
Browse files

ARM: mxc: convert device creation to use platform_device_register_full

parent 01dcc60a
Loading
Loading
Loading
Loading
+0 −53
Original line number Original line Diff line number Diff line
@@ -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,
+14 −2
Original line number Original line Diff line number Diff line
@@ -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,