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