This patch reassigns resources of a omap3isp platform device, which is more adequate than the older one. This is needed for using __raw_[readl,writel] calls after ioremapping the specified platform resources in ISP driver. Signed-off-by: Sergio Aguirre <saaguirre@xxxxxx> --- arch/arm/mach-omap2/devices.c | 76 ++++++++++++++++++++++++++-- arch/arm/plat-omap/include/mach/omap34xx.h | 53 +++++++++++++++++++- 2 files changed, 123 insertions(+), 6 deletions(-) diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index d7e848e..4617c8b 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c @@ -56,10 +56,68 @@ static inline void omap_init_camera(void) #elif defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) -static struct resource cam_resources[] = { +static struct resource omap34xxcam_resources[] = { +}; + +static struct resource omap3isp_resources[] = { + { + .start = OMAP3_ISP_BASE, + .end = OMAP3_ISP_END, + .flags = IORESOURCE_MEM, + }, + { + .start = OMAP3_ISP_CBUFF_BASE, + .end = OMAP3_ISP_CBUFF_END, + .flags = IORESOURCE_MEM, + }, + { + .start = OMAP3_ISP_CCP2_BASE, + .end = OMAP3_ISP_CCP2_END, + .flags = IORESOURCE_MEM, + }, + { + .start = OMAP3_ISP_CCDC_BASE, + .end = OMAP3_ISP_CCDC_END, + .flags = IORESOURCE_MEM, + }, + { + .start = OMAP3_ISP_HIST_BASE, + .end = OMAP3_ISP_HIST_END, + .flags = IORESOURCE_MEM, + }, + { + .start = OMAP3_ISP_H3A_BASE, + .end = OMAP3_ISP_H3A_END, + .flags = IORESOURCE_MEM, + }, { - .start = OMAP34XX_CAMERA_BASE, - .end = OMAP34XX_CAMERA_BASE + 0x1B70, + .start = OMAP3_ISP_PREV_BASE, + .end = OMAP3_ISP_PREV_END, + .flags = IORESOURCE_MEM, + }, + { + .start = OMAP3_ISP_RESZ_BASE, + .end = OMAP3_ISP_RESZ_END, + .flags = IORESOURCE_MEM, + }, + { + .start = OMAP3_ISP_SBL_BASE, + .end = OMAP3_ISP_SBL_END, + .flags = IORESOURCE_MEM, + }, + { + .start = OMAP3_ISP_MMU_BASE, + .end = OMAP3_ISP_MMU_END, + .flags = IORESOURCE_MEM, + }, + { + .start = OMAP3_ISP_CSI2A_BASE, + .end = OMAP3_ISP_CSI2A_END, + .flags = IORESOURCE_MEM, + }, + { + .start = OMAP3_ISP_CSI2PHY_BASE, + .end = OMAP3_ISP_CSI2PHY_END, .flags = IORESOURCE_MEM, }, { @@ -71,13 +129,21 @@ static struct resource cam_resources[] = { static struct platform_device omap_cam_device = { .name = "omap34xxcam", .id = -1, - .num_resources = ARRAY_SIZE(cam_resources), - .resource = cam_resources, + .num_resources = ARRAY_SIZE(omap34xxcam_resources), + .resource = omap34xxcam_resources, +}; + +static struct platform_device omap_isp_device = { + .name = "omap3isp", + .id = -1, + .num_resources = ARRAY_SIZE(omap3isp_resources), + .resource = omap3isp_resources, }; static inline void omap_init_camera(void) { platform_device_register(&omap_cam_device); + platform_device_register(&omap_isp_device); } #else static inline void omap_init_camera(void) diff --git a/arch/arm/plat-omap/include/mach/omap34xx.h b/arch/arm/plat-omap/include/mach/omap34xx.h index 27a1e45..d19c423 100644 --- a/arch/arm/plat-omap/include/mach/omap34xx.h +++ b/arch/arm/plat-omap/include/mach/omap34xx.h @@ -56,7 +56,32 @@ #define OMAP34XX_SR1_BASE 0x480C9000 #define OMAP34XX_SR2_BASE 0x480CB000 -#define OMAP34XX_CAMERA_BASE (L4_34XX_BASE + 0xBC000) +#define OMAP3430_ISP_BASE (L4_34XX_BASE + 0xBC000) +#define OMAP3430_ISP_CBUFF_BASE (OMAP3430_ISP_BASE + 0x0100) +#define OMAP3430_ISP_CCP2_BASE (OMAP3430_ISP_BASE + 0x0400) +#define OMAP3430_ISP_CCDC_BASE (OMAP3430_ISP_BASE + 0x0600) +#define OMAP3430_ISP_HIST_BASE (OMAP3430_ISP_BASE + 0x0A00) +#define OMAP3430_ISP_H3A_BASE (OMAP3430_ISP_BASE + 0x0C00) +#define OMAP3430_ISP_PREV_BASE (OMAP3430_ISP_BASE + 0x0E00) +#define OMAP3430_ISP_RESZ_BASE (OMAP3430_ISP_BASE + 0x1000) +#define OMAP3430_ISP_SBL_BASE (OMAP3430_ISP_BASE + 0x1200) +#define OMAP3430_ISP_MMU_BASE (OMAP3430_ISP_BASE + 0x1400) +#define OMAP3430_ISP_CSI2A_BASE (OMAP3430_ISP_BASE + 0x1800) +#define OMAP3430_ISP_CSI2PHY_BASE (OMAP3430_ISP_BASE + 0x1970) + +#define OMAP3430_ISP_END (OMAP3430_ISP_BASE + 0x06F) +#define OMAP3430_ISP_CBUFF_END (OMAP3430_ISP_CBUFF_BASE + 0x077) +#define OMAP3430_ISP_CCP2_END (OMAP3430_ISP_CCP2_BASE + 0x1EF) +#define OMAP3430_ISP_CCDC_END (OMAP3430_ISP_CCDC_BASE + 0x0A7) +#define OMAP3430_ISP_HIST_END (OMAP3430_ISP_HIST_BASE + 0x047) +#define OMAP3430_ISP_H3A_END (OMAP3430_ISP_H3A_BASE + 0x05F) +#define OMAP3430_ISP_PREV_END (OMAP3430_ISP_PREV_BASE + 0x09F) +#define OMAP3430_ISP_RESZ_END (OMAP3430_ISP_RESZ_BASE + 0x0AB) +#define OMAP3430_ISP_SBL_END (OMAP3430_ISP_SBL_BASE + 0x0FB) +#define OMAP3430_ISP_MMU_END (OMAP3430_ISP_MMU_BASE + 0x06F) +#define OMAP3430_ISP_CSI2A_END (OMAP3430_ISP_CSI2A_BASE + 0x16F) +#define OMAP3430_ISP_CSI2PHY_END (OMAP3430_ISP_CSI2PHY_BASE + 0x007) + #define OMAP34XX_MAILBOX_BASE (L4_34XX_BASE + 0x94000) @@ -67,6 +92,32 @@ #define OMAP2_PRM_BASE OMAP3430_PRM_BASE #define OMAP2_VA_IC_BASE IO_ADDRESS(OMAP34XX_IC_BASE) +#define OMAP3_ISP_BASE OMAP3430_ISP_BASE +#define OMAP3_ISP_CBUFF_BASE OMAP3430_ISP_CBUFF_BASE +#define OMAP3_ISP_CCP2_BASE OMAP3430_ISP_CCP2_BASE +#define OMAP3_ISP_CCDC_BASE OMAP3430_ISP_CCDC_BASE +#define OMAP3_ISP_HIST_BASE OMAP3430_ISP_HIST_BASE +#define OMAP3_ISP_H3A_BASE OMAP3430_ISP_H3A_BASE +#define OMAP3_ISP_PREV_BASE OMAP3430_ISP_PREV_BASE +#define OMAP3_ISP_RESZ_BASE OMAP3430_ISP_RESZ_BASE +#define OMAP3_ISP_SBL_BASE OMAP3430_ISP_SBL_BASE +#define OMAP3_ISP_MMU_BASE OMAP3430_ISP_MMU_BASE +#define OMAP3_ISP_CSI2A_BASE OMAP3430_ISP_CSI2A_BASE +#define OMAP3_ISP_CSI2PHY_BASE OMAP3430_ISP_CSI2PHY_BASE + +#define OMAP3_ISP_END OMAP3430_ISP_END +#define OMAP3_ISP_CBUFF_END OMAP3430_ISP_CBUFF_END +#define OMAP3_ISP_CCP2_END OMAP3430_ISP_CCP2_END +#define OMAP3_ISP_CCDC_END OMAP3430_ISP_CCDC_END +#define OMAP3_ISP_HIST_END OMAP3430_ISP_HIST_END +#define OMAP3_ISP_H3A_END OMAP3430_ISP_H3A_END +#define OMAP3_ISP_PREV_END OMAP3430_ISP_PREV_END +#define OMAP3_ISP_RESZ_END OMAP3430_ISP_RESZ_END +#define OMAP3_ISP_SBL_END OMAP3430_ISP_SBL_END +#define OMAP3_ISP_MMU_END OMAP3430_ISP_MMU_END +#define OMAP3_ISP_CSI2A_END OMAP3430_ISP_CSI2A_END +#define OMAP3_ISP_CSI2PHY_END OMAP3430_ISP_CSI2PHY_END + #endif #define OMAP34XX_DSP_BASE 0x58000000 -- 1.5.6.5 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html