1/* 2 * Copyright (C) 2010 Pengutronix 3 * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> 4 * 5 * This program is free software; you can redistribute it and/or modify it under 6 * the terms of the GNU General Public License version 2 as published by the 7 * Free Software Foundation. 8 */ 9#include <mach/hardware.h> 10#include <mach/devices-common.h> 11 12#define imx_mx2_camera_data_entry_single(soc) \ 13 { \ 14 .iobasecsi = soc ## _CSI_BASE_ADDR, \ 15 .iosizecsi = SZ_4K, \ 16 .irqcsi = soc ## _INT_CSI, \ 17 } 18#define imx_mx2_camera_data_entry_single_emma(soc) \ 19 { \ 20 .iobasecsi = soc ## _CSI_BASE_ADDR, \ 21 .iosizecsi = SZ_32, \ 22 .irqcsi = soc ## _INT_CSI, \ 23 .iobaseemmaprp = soc ## _EMMAPRP_BASE_ADDR, \ 24 .iosizeemmaprp = SZ_32, \ 25 .irqemmaprp = soc ## _INT_EMMAPRP, \ 26 } 27 28#ifdef CONFIG_SOC_IMX25 29const struct imx_mx2_camera_data imx25_mx2_camera_data __initconst = 30 imx_mx2_camera_data_entry_single(MX25); 31#endif /* ifdef CONFIG_SOC_IMX25 */ 32 33#ifdef CONFIG_SOC_IMX27 34const struct imx_mx2_camera_data imx27_mx2_camera_data __initconst = 35 imx_mx2_camera_data_entry_single_emma(MX27); 36#endif /* ifdef CONFIG_SOC_IMX27 */ 37 38struct platform_device *__init imx_add_mx2_camera( 39 const struct imx_mx2_camera_data *data, 40 const struct mx2_camera_platform_data *pdata) 41{ 42 struct resource res[] = { 43 { 44 .start = data->iobasecsi, 45 .end = data->iobasecsi + data->iosizecsi - 1, 46 .flags = IORESOURCE_MEM, 47 }, { 48 .start = data->irqcsi, 49 .end = data->irqcsi, 50 .flags = IORESOURCE_IRQ, 51 }, { 52 .start = data->iobaseemmaprp, 53 .end = data->iobaseemmaprp + data->iosizeemmaprp - 1, 54 .flags = IORESOURCE_MEM, 55 }, { 56 .start = data->irqemmaprp, 57 .end = data->irqemmaprp, 58 .flags = IORESOURCE_IRQ, 59 }, 60 }; 61 return imx_add_platform_device_dmamask("mx2-camera", 0, 62 res, data->iobaseemmaprp ? 4 : 2, 63 pdata, sizeof(*pdata), DMA_BIT_MASK(32)); 64} 65 66struct platform_device *__init imx_add_mx2_emmaprp( 67 const struct imx_mx2_camera_data *data) 68{ 69 struct resource res[] = { 70 { 71 .start = data->iobaseemmaprp, 72 .end = data->iobaseemmaprp + data->iosizeemmaprp - 1, 73 .flags = IORESOURCE_MEM, 74 }, { 75 .start = data->irqemmaprp, 76 .end = data->irqemmaprp, 77 .flags = IORESOURCE_IRQ, 78 }, 79 }; 80 return imx_add_platform_device_dmamask("m2m-emmaprp", 0, 81 res, 2, NULL, 0, DMA_BIT_MASK(32)); 82} 83