@@ -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)
@@ -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
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@ti.com> --- arch/arm/mach-omap2/devices.c | 76 ++++++++++++++++++++++++++-- arch/arm/plat-omap/include/mach/omap34xx.h | 53 +++++++++++++++++++- 2 files changed, 123 insertions(+), 6 deletions(-)