aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/mach-ux500/mcde.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-ux500/mcde.c')
-rw-r--r--arch/arm/mach-ux500/mcde.c788
1 files changed, 46 insertions, 742 deletions
diff --git a/arch/arm/mach-ux500/mcde.c b/arch/arm/mach-ux500/mcde.c
index ede2bf310ec..b7b5991cbff 100644
--- a/arch/arm/mach-ux500/mcde.c
+++ b/arch/arm/mach-ux500/mcde.c
@@ -1,777 +1,81 @@
/*
- * Copyright (C) 2010 ST Ericsson
+ * Copyright (C) ST-Ericsson AB 2010
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2, as
- * published by the Free Software Foundation.
+ * MOP500/HREF500 ed/v1 Display platform devices
+ *
+ * Author: Marcus Lorentzon <marcus.xm.lorentzon@stericsson.com>
+ * for ST-Ericsson.
+ *
+ * License terms: GNU General Public License (GPL), version 2.
*/
-
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/device.h>
#include <linux/platform_device.h>
-#include <linux/io.h>
-
-#include <mach/devices.h>
#include <mach/hardware.h>
-#include <mach/mcde.h>
-#include <mach/mcde_common.h>
-
-#ifdef CONFIG_FB_U8500_MCDE_CHANNELC0
-/* Channel C0 */
-
-#ifdef CONFIG_MCDE_ENABLE_FEATURE_HW_V1_SUPPORT
-
-static struct resource mcde2_resources[] = {
- [0] = {
- .start = U8500_MCDE_BASE,
- .end = U8500_MCDE_BASE + (U8500_MCDE_BASE_SIZE - 1),
- .name = "mcde_top",
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = U8500_MCDE_EXTSRC_BASE,
- .end = U8500_MCDE_EXTSRC_BASE + (U8500_MCDE_EXTSRC_SIZE - 1),
- .name = "mcde_extsrc",
- .flags = IORESOURCE_MEM,
- },
- [2] = {
- .start = U8500_MCDE_OVERLAY_BASE,
- .end = U8500_MCDE_OVERLAY_BASE + (U8500_MCDE_OVERLAY_SIZE - 1),
- .name = "mcde_overlay",
- .flags = IORESOURCE_MEM,
- },
- [3] = {
- .start = U8500_MCDE_CHANNELC0_CONFIG_BASE,
- .end = U8500_MCDE_CHANNELC0_CONFIG_BASE + (U8500_MCDE_CHANNEL_CONFIG_SIZE - 1),
- .name = "mcde_chc0_config",
- .flags = IORESOURCE_MEM,
- },
- [4] = {
- .start = U8500_MCDE_CHANNELC0C1_SPECIFIC_REGISTER_BASE,
- .end = U8500_MCDE_CHANNELC0C1_SPECIFIC_REGISTER_BASE + (U8500_MCDE_CHANNELC0C1_SPECIFIC_REGISTER_SIZE - 1),
- .name = "mcde_chc0c1_specific",
- .flags = IORESOURCE_MEM,
- },
- [5] = {
- .start = U8500_MCDE_DSI_CHANNEL_BASE,
- .end = U8500_MCDE_DSI_CHANNEL_BASE + (U8500_MCDE_DSI_CHANNEL_SIZE - 1),
- .name = "mcde_dsi_channel",
- .flags = IORESOURCE_MEM,
- },
- [6] = {
- .start = U8500_DSI_LINK1_BASE,
- .end = U8500_DSI_LINK1_BASE + ((U8500_DSI_LINK_SIZE * U8500_DSI_LINK_COUNT) - 1),
- .name = "dsi_link",
- .flags = IORESOURCE_MEM,
- },
- [7] = {
- .start = PRCM_MCDECLK_MGT_REG,
- .end = PRCM_MCDECLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_mcde_clk",
- .flags = IORESOURCE_MEM,
- },
- [8] = {
- .start = PRCM_HDMICLK_MGT_REG,
- .end = PRCM_HDMICLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_hdmi_clk",
- .flags = IORESOURCE_MEM,
- },
- [9] = {
- .start = PRCM_TVCLK_MGT_REG,
- .end = PRCM_TVCLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_tv_clk",
- .flags = IORESOURCE_MEM,
- },
- [10] = {
- .start = IRQ_DISP,
- .end = IRQ_DISP,
- .name = "mcde_irq",
- .flags = IORESOURCE_IRQ
- },
- [11] = {
- .start = U8500_MCDE_CHANNELA_SPECIFIC_REGISTER_BASE,
- .end = U8500_MCDE_CHANNELA_SPECIFIC_REGISTER_BASE +
- (U8500_MCDE_CHANNELA_SPECIFIC_REGISTER_SIZE - 1),
- .name = "cha_specific",
- .flags = IORESOURCE_MEM,
- },
- [12] = {
- .start = U8500_MCDE_CHANNELB_SPECIFIC_REGISTER_BASE,
- .end = U8500_MCDE_CHANNELB_SPECIFIC_REGISTER_BASE +
- (U8500_MCDE_CHANNELB_SPECIFIC_REGISTER_SIZE - 1),
- .name = "chb_specific",
- .flags = IORESOURCE_MEM,
- },
-};
-
-#else /* CONFIG_MCDE_ENABLE_FEATURE_HW_V1_SUPPORT */
-
-static struct resource mcde2_resources[] = {
- [0] = {
- .start = U8500_MCDE_BASE,
- .end = U8500_MCDE_BASE + (U8500_MCDE_REGISTER_SIZE - 1),
- .name = "mcde_base",
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = U8500_MCDE_EXTSRC_BASE,
- .end = U8500_MCDE_EXTSRC_BASE + (U8500_MCDE_EXTSRC_SIZE - 1),
- .name = "mcde_extsrc_base",
- .flags = IORESOURCE_MEM,
- },
- [2] = {
- .start = U8500_MCDE_OVL_BASE,
- .end = U8500_MCDE_OVL_BASE + (U8500_MCDE_OVL_SIZE - 1),
- .name = "mcde_overlay_base",
- .flags = IORESOURCE_MEM,
- },
- [3] = {
- .start = U8500_MCDE_CHANNELC0_CONFIG_BASE,
- .end = U8500_MCDE_CHANNELC0_CONFIG_BASE +
- (U8500_MCDE_CHANNEL_CONFIG_SIZE - 1),
- .name = "chc0_config",
- .flags = IORESOURCE_MEM,
- },
- [4] = {
- .start = U8500_MCDE_CHANNELC_SPECIFIC_REGISTER_BASE,
- .end = U8500_MCDE_CHANNELC_SPECIFIC_REGISTER_BASE +
- (U8500_MCDE_CHANNELC_SPECIFIC_REGISTER_SIZE - 1),
- .name = "chb_specific",
- .flags = IORESOURCE_MEM,
- },
- [5] = {
- .start = U8500_MCDE_DSI_CHANNEL_BASE,
- .end = U8500_MCDE_DSI_CHANNEL_BASE + (U8500_MCDE_DSI_SIZE - 1),
- .name = "mcde_dsi_channel_base",
- .flags = IORESOURCE_MEM,
- },
- [6] = {
- .start = U8500_DSI_LINK1_BASE,
- .end = U8500_DSI_LINK1_BASE +
- ((U8500_DSI_LINK_SIZE*U8500_DSI_LINK_COUNT) - 1),
- .name = "dsi_link_base",
- .flags = IORESOURCE_MEM,
- },
- [7] = {
- .start = PRCM_MCDECLK_MGT_REG,
- .end = PRCM_MCDECLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_mcde_clk",
- .flags = IORESOURCE_MEM,
- },
- [8] = {
- .start = PRCM_HDMICLK_MGT_REG,
- .end = PRCM_HDMICLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_hdmi_clk",
- .flags = IORESOURCE_MEM,
- },
- [9] = {
- .start = PRCM_TVCLK_MGT_REG,
- .end = PRCM_TVCLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_tv_clk",
- .flags = IORESOURCE_MEM,
- },
- [10] = {
- .start = IRQ_DISP,
- .end = IRQ_DISP,
- .name = "mcde_irq",
- .flags = IORESOURCE_IRQ
- },
- [11] = {
- .start = U8500_MCDE_CHANNELA_SPECIFIC_REGISTER_BASE,
- .end = U8500_MCDE_CHANNELA_SPECIFIC_REGISTER_BASE +
- (U8500_MCDE_CHANNEL_SPECIFIC_REGISTER_SIZE - 1),
- .name = "cha_specific",
- .flags = IORESOURCE_MEM,
- },
-};
-
-#endif /* CONFIG_MCDE_ENABLE_FEATURE_HW_V1_SUPPORT */
-
-static struct mcde_channel_data mcde2_channel_data = {
- .channelid = CHANNEL_C0,
- .nopan = 1,
- .nowrap = 1,
-#ifdef CONFIG_FB_U8500_MCDE_CHANNELC0
- .restype = CONFIG_FB_U8500_MCDE_CHANNELC0_DISPLAY_TYPE,
- .inbpp = CONFIG_FB_U8500_MCDE_CHANNELC0_INPUT_BPP,
- .outbpp = CONFIG_FB_U8500_MCDE_CHANNELC0_OUTPUT_BPP,
- .bpp16_type = CONFIG_FB_U8500_MCDE_CHANNELC0_INPUT_16BPP_TYPE,
- .bgrinput = CONFIG_FB_U8500_MCDE_CHANNELC0_INPUT_BGR,
-#else
- .restype = "WVGA",
- .inbpp = 16,
- .outbpp = 0x2,
- .bpp16_type = 1,
- .bgrinput = 0x0,
-#endif
-};
-
-struct platform_device u8500_mcde2_device = {
- .name = "U8500-MCDE",
- .id = 2,
- .dev = {
- .init_name = "mcde_bus",
- .coherent_dma_mask = ~0,
- .platform_data = &mcde2_channel_data,
- },
- .num_resources = ARRAY_SIZE(mcde2_resources),
- .resource = mcde2_resources
-};
-#endif /* CONFIG_FB_U8500_MCDE_CHANNELC0 */
-
-#ifdef CONFIG_FB_U8500_MCDE_CHANNELC1
-/* Channel C1 */
-
-#ifdef CONFIG_MCDE_ENABLE_FEATURE_HW_V1_SUPPORT
-
-static struct resource mcde3_resources[] = {
- [0] = {
- .start = U8500_MCDE_BASE,
- .end = U8500_MCDE_BASE + (U8500_MCDE_BASE_SIZE - 1),
- .name = "mcde_top",
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = U8500_MCDE_EXTSRC_BASE,
- .end = U8500_MCDE_EXTSRC_BASE + (U8500_MCDE_EXTSRC_SIZE - 1),
- .name = "mcde_extsrc",
- .flags = IORESOURCE_MEM,
- },
- [2] = {
- .start = U8500_MCDE_OVERLAY_BASE,
- .end = U8500_MCDE_OVERLAY_BASE + (U8500_MCDE_OVERLAY_SIZE - 1),
- .name = "mcde_overlay",
- .flags = IORESOURCE_MEM,
- },
- [3] = {
- .start = U8500_MCDE_CHANNELC1_CONFIG_BASE,
- .end = U8500_MCDE_CHANNELC1_CONFIG_BASE + (U8500_MCDE_CHANNEL_CONFIG_SIZE - 1),
- .name = "mcde_chc1_config",
- .flags = IORESOURCE_MEM,
- },
- [4] = {
- .start = U8500_MCDE_CHANNELC0C1_SPECIFIC_REGISTER_BASE,
- .end = U8500_MCDE_CHANNELC0C1_SPECIFIC_REGISTER_BASE + (U8500_MCDE_CHANNELC0C1_SPECIFIC_REGISTER_SIZE - 1),
- .name = "mcde_chc0c1_specific",
- .flags = IORESOURCE_MEM,
- },
- [5] = {
- .start = U8500_MCDE_DSI_CHANNEL_BASE,
- .end = U8500_MCDE_DSI_CHANNEL_BASE + (U8500_MCDE_DSI_SIZE - 1),
- .name = "mcde_dsi_channel",
- .flags = IORESOURCE_MEM,
- },
- [6] = {
- .start = U8500_DSI_LINK1_BASE,
- .end = U8500_DSI_LINK1_BASE + ((U8500_DSI_LINK_SIZE * U8500_DSI_LINK_COUNT) - 1),
- .name = "dsi_link",
- .flags = IORESOURCE_MEM,
- },
- [7] = {
- .start = PRCM_MCDECLK_MGT_REG,
- .end = PRCM_MCDECLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_mcde_clk",
- .flags = IORESOURCE_MEM,
- },
- [8] = {
- .start = PRCM_HDMICLK_MGT_REG,
- .end = PRCM_HDMICLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_hdmi_clk",
- .flags = IORESOURCE_MEM,
- },
- [9] = {
- .start = PRCM_TVCLK_MGT_REG,
- .end = PRCM_TVCLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_tv_clk",
- .flags = IORESOURCE_MEM,
- },
- [10] = {
- .start = IRQ_DISP,
- .end = IRQ_DISP,
- .name = "mcde_irq",
- .flags = IORESOURCE_IRQ
- },
- [11] = {
- .start = U8500_MCDE_CHANNELA_SPECIFIC_REGISTER_BASE,
- .end = U8500_MCDE_CHANNELA_SPECIFIC_REGISTER_BASE +
- (U8500_MCDE_CHANNELA_SPECIFIC_REGISTER_SIZE - 1),
- .name = "cha_specific",
- .flags = IORESOURCE_MEM,
- },
- [12] = {
- .start = U8500_MCDE_CHANNELB_SPECIFIC_REGISTER_BASE,
- .end = U8500_MCDE_CHANNELB_SPECIFIC_REGISTER_BASE +
- (U8500_MCDE_CHANNELB_SPECIFIC_REGISTER_SIZE - 1),
- .name = "chb_specific",
- .flags = IORESOURCE_MEM,
- },
-};
-
-#else /* CONFIG_MCDE_ENABLE_FEATURE_HW_V1_SUPPORT */
-
-static struct resource mcde3_resources[] = {
- [0] = {
- .start = U8500_MCDE_BASE,
- .end = U8500_MCDE_BASE + (U8500_MCDE_REGISTER_SIZE - 1),
- .name = "mcde_base",
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = U8500_MCDE_EXTSRC_BASE,
- .end = U8500_MCDE_EXTSRC_BASE + (U8500_MCDE_EXTSRC_SIZE - 1),
- .name = "mcde_extsrc_base",
- .flags = IORESOURCE_MEM,
- },
- [2] = {
- .start = U8500_MCDE_OVL_BASE,
- .end = U8500_MCDE_OVL_BASE + (U8500_MCDE_OVL_SIZE - 1),
- .name = "mcde_overlay_base",
- .flags = IORESOURCE_MEM,
- },
- [3] = {
- .start = U8500_MCDE_CHANNELC1_CONFIG_BASE,
- .end = U8500_MCDE_CHANNELC1_CONFIG_BASE +
- (U8500_MCDE_CHANNEL_CONFIG_SIZE - 1),
- .name = "chc1_config",
- .flags = IORESOURCE_MEM,
- },
- [4] = {
- .start = U8500_MCDE_CHANNELC_SPECIFIC_REGISTER_BASE,
- .end = U8500_MCDE_CHANNELC_SPECIFIC_REGISTER_BASE +
- (U8500_MCDE_CHANNELC_SPECIFIC_REGISTER_SIZE - 1),
- .name = "chb_specific",
- .flags = IORESOURCE_MEM,
- },
- [5] = {
- .start = U8500_MCDE_DSI_CHANNEL_BASE,
- .end = U8500_MCDE_DSI_CHANNEL_BASE + (U8500_MCDE_DSI_SIZE - 1),
- .name = "mcde_dsi_channel_base",
- .flags = IORESOURCE_MEM,
- },
- [6] = {
- .start = U8500_DSI_LINK1_BASE,
- .end = U8500_DSI_LINK1_BASE +
- ((U8500_DSI_LINK_SIZE*U8500_DSI_LINK_COUNT) - 1),
- .name = "dsi_link_base",
- .flags = IORESOURCE_MEM,
- },
- [7] = {
- .start = PRCM_MCDECLK_MGT_REG,
- .end = PRCM_MCDECLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_mcde_clk",
- .flags = IORESOURCE_MEM,
- },
- [8] = {
- .start = PRCM_HDMICLK_MGT_REG,
- .end = PRCM_HDMICLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_hdmi_clk",
- .flags = IORESOURCE_MEM,
- },
- [9] = {
- .start = PRCM_TVCLK_MGT_REG,
- .end = PRCM_TVCLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_tv_clk",
- .flags = IORESOURCE_MEM,
- },
- [10] = {
- .start = IRQ_DISP,
- .end = IRQ_DISP,
- .name = "mcde_irq",
- .flags = IORESOURCE_IRQ
- },
-};
+#include <mach/irqs.h>
+#include <video/mcde.h>
-#endif /* CONFIG_MCDE_ENABLE_FEATURE_HW_V1_SUPPORT */
-
-static struct mcde_channel_data mcde3_channel_data = {
- .channelid = CHANNEL_C1,
- .nopan = 1,
- .nowrap = 1,
-#ifdef CONFIG_FB_U8500_MCDE_CHANNELC1
- .restype = CONFIG_FB_U8500_MCDE_CHANNELC1_DISPLAY_TYPE,
- .inbpp = CONFIG_FB_U8500_MCDE_CHANNELC1_INPUT_BPP,
- .outbpp = CONFIG_FB_U8500_MCDE_CHANNELC1_OUTPUT_BPP,
- .bpp16_type = CONFIG_FB_U8500_MCDE_CHANNELC1_INPUT_16BPP_TYPE,
- .bgrinput = CONFIG_FB_U8500_MCDE_CHANNELC1_INPUT_BGR,
-#else
- .restype = "WVGA",
- .inbpp = 16,
- .outbpp = 0x2,
- .bpp16_type = 1,
- .bgrinput = 0x0,
-#endif
-};
-
-struct platform_device u8500_mcde3_device = {
- .name = "U8500-MCDE",
- .id = 3,
- .dev = {
- .bus_id = "mcde_bus",
- .coherent_dma_mask = ~0,
- .platform_data = &mcde3_channel_data,
- },
-
- .num_resources = ARRAY_SIZE(mcde3_resources),
- .resource = mcde3_resources
-};
-#endif /* CONFIG_FB_U8500_MCDE_CHANNELC1 */
-
-#ifdef CONFIG_FB_U8500_MCDE_CHANNELB
-/* Channel B */
-
-#ifdef CONFIG_MCDE_ENABLE_FEATURE_HW_V1_SUPPORT
-
-static struct resource mcde1_resources[] = {
+static struct resource mcde_resources[] = {
[0] = {
+ .name = MCDE_IO_AREA,
.start = U8500_MCDE_BASE,
- .end = U8500_MCDE_BASE + (U8500_MCDE_BASE_SIZE - 1),
- .name = "mcde_base",
+ .end = U8500_MCDE_BASE + 0x1000 - 1, /* TODO: Fix size */
.flags = IORESOURCE_MEM,
},
[1] = {
- .start = U8500_MCDE_EXTSRC_BASE,
- .end = U8500_MCDE_EXTSRC_BASE + (U8500_MCDE_EXTSRC_SIZE - 1),
- .name = "mcde_extsrc",
- .flags = IORESOURCE_MEM,
- },
- [2] = {
- .start = U8500_MCDE_OVERLAY_BASE,
- .end = U8500_MCDE_OVERLAY_BASE + (U8500_MCDE_OVERLAY_SIZE - 1),
- .name = "mcde_overlay",
- .flags = IORESOURCE_MEM,
- },
- [3] = {
- .start = U8500_MCDE_CHANNELB_CONFIG_BASE,
- .end = U8500_MCDE_CHANNELB_CONFIG_BASE + (U8500_MCDE_CHANNEL_CONFIG_SIZE - 1),
- .name = "mcde_chb_config",
- .flags = IORESOURCE_MEM,
- },
- [4] = {
- .start = U8500_MCDE_CHANNELB_SPECIFIC_REGISTER_BASE,
- .end = U8500_MCDE_CHANNELB_SPECIFIC_REGISTER_BASE + (U8500_MCDE_CHANNELB_SPECIFIC_REGISTER_SIZE - 1),
- .name = "mcde_chb_specific",
- .flags = IORESOURCE_MEM,
- },
- [5] = {
- .start = U8500_MCDE_DSI_CHANNEL_BASE,
- .end = U8500_MCDE_DSI_CHANNEL_BASE + (U8500_MCDE_DSI_SIZE - 1),
- .name = "mcde_dsi_channel",
- .flags = IORESOURCE_MEM,
- },
- [6] = {
+ .name = MCDE_IO_AREA,
.start = U8500_DSI_LINK1_BASE,
- .end = U8500_DSI_LINK1_BASE + ((U8500_DSI_LINK_SIZE*U8500_DSI_LINK_COUNT) - 1),
- .name = "dsi_link",
- .flags = IORESOURCE_MEM,
- },
- [7] = {
- .start = PRCM_MCDECLK_MGT_REG,
- .end = PRCM_MCDECLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_mcde_clk",
- .flags = IORESOURCE_MEM,
- },
- [8] = {
- .start = PRCM_HDMICLK_MGT_REG,
- .end = PRCM_HDMICLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_hdmi_clk",
- .flags = IORESOURCE_MEM,
- },
- [9] = {
- .start = PRCM_TVCLK_MGT_REG,
- .end = PRCM_TVCLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_tv_clk",
- .flags = IORESOURCE_MEM,
- },
- [10] = {
- .start = IRQ_DISP,
- .end = IRQ_DISP,
- .name = "mcde_irq",
- .flags = IORESOURCE_IRQ
- },
-};
-
-#else /* CONFIG_MCDE_ENABLE_FEATURE_HW_V1_SUPPORT */
-
-static struct resource mcde1_resources[] = {
- [0] = {
- .start = U8500_MCDE_BASE,
- .end = U8500_MCDE_BASE + (U8500_MCDE_REGISTER_SIZE - 1),
- .name = "mcde_base",
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = U8500_MCDE_EXTSRC_BASE,
- .end = U8500_MCDE_EXTSRC_BASE + (U8500_MCDE_EXTSRC_SIZE - 1),
- .name = "mcde_extsrc_base",
+ .end = U8500_DSI_LINK1_BASE + U8500_DSI_LINK_SIZE - 1,
.flags = IORESOURCE_MEM,
},
[2] = {
- .start = U8500_MCDE_OVL_BASE,
- .end = U8500_MCDE_OVL_BASE + (U8500_MCDE_OVL_SIZE - 1),
- .name = "mcde_overlay_base",
+ .name = MCDE_IO_AREA,
+ .start = U8500_DSI_LINK2_BASE,
+ .end = U8500_DSI_LINK2_BASE + U8500_DSI_LINK_SIZE - 1,
.flags = IORESOURCE_MEM,
},
[3] = {
- .start = U8500_MCDE_CHANNELB_CONFIG_BASE,
- .end = U8500_MCDE_CHANNELB_CONFIG_BASE +
- (U8500_MCDE_CHANNEL_CONFIG_SIZE - 1),
- .name = "chb_config",
+ .name = MCDE_IO_AREA,
+ .start = U8500_DSI_LINK3_BASE,
+ .end = U8500_DSI_LINK3_BASE + U8500_DSI_LINK_SIZE - 1,
.flags = IORESOURCE_MEM,
},
[4] = {
- .start = U8500_MCDE_CHANNELB_SPECIFIC_REGISTER_BASE,
- .end = U8500_MCDE_CHANNELB_SPECIFIC_REGISTER_BASE +
- (U8500_MCDE_CHANNEL_SPECIFIC_REGISTER_SIZE - 1),
- .name = "chb_specific",
- .flags = IORESOURCE_MEM,
- },
- [5] = {
- .start = U8500_MCDE_DSI_CHANNEL_BASE,
- .end = U8500_MCDE_DSI_CHANNEL_BASE + (U8500_MCDE_DSI_SIZE - 1),
- .name = "mcde_dsi_channel_base",
- .flags = IORESOURCE_MEM,
- },
- [6] = {
- .start = U8500_DSI_LINK1_BASE,
- .end = U8500_DSI_LINK1_BASE +
- ((U8500_DSI_LINK_SIZE*U8500_DSI_LINK_COUNT) - 1),
- .name = "dsi_link_base",
- .flags = IORESOURCE_MEM,
- },
- [7] = {
- .start = PRCM_MCDECLK_MGT_REG,
- .end = PRCM_MCDECLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_mcde_clk",
- .flags = IORESOURCE_MEM,
- },
- [8] = {
- .start = PRCM_HDMICLK_MGT_REG,
- .end = PRCM_HDMICLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_hdmi_clk",
- .flags = IORESOURCE_MEM,
- },
- [9] = {
- .start = PRCM_TVCLK_MGT_REG,
- .end = PRCM_TVCLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_tv_clk",
- .flags = IORESOURCE_MEM,
- },
- [10] = {
+ .name = MCDE_IRQ,
.start = IRQ_DISP,
- .end = IRQ_DISP,
- .name = "mcde_irq",
- .flags = IORESOURCE_IRQ
+ .end = IRQ_DISP,
+ .flags = IORESOURCE_IRQ,
},
};
-#endif /* CONFIG_MCDE_ENABLE_FEATURE_HW_V1_SUPPORT */
+static void dev_release_noop(struct device *dev)
+{
+ /* Do nothing */
+}
-static struct mcde_channel_data mcde1_channel_data = {
- .channelid = CHANNEL_B,
- .nopan = 1,
- .nowrap = 1,
-#ifdef CONFIG_FB_U8500_MCDE_CHANNELB
- .restype = CONFIG_FB_U8500_MCDE_CHANNELB_DISPLAY_TYPE,
- .inbpp = CONFIG_FB_U8500_MCDE_CHANNELB_INPUT_BPP,
- .outbpp = CONFIG_FB_U8500_MCDE_CHANNELB_OUTPUT_BPP,
- .bpp16_type = CONFIG_FB_U8500_MCDE_CHANNELB_INPUT_16BPP_TYPE,
- .bgrinput = CONFIG_FB_U8500_MCDE_CHANNELB_INPUT_BGR,
-#else
- .restype = "PAL",
- .inbpp = 16,
- .outbpp = 0x2,
- .bpp16_type = 1,
- .bgrinput = 0x0,
-#endif
-#ifdef CONFIG_MCDE_ENABLE_FEATURE_HW_V1_SUPPORT
- .gpio_alt_func = GPIO_ALT_LCD_PANELB
-#else
- .gpio_alt_func = GPIO_ALT_LCD_PANELB_ED
-#endif
+static struct mcde_platform_data mcde_pdata = {
+ .num_dsilinks = 3,
+ /* YCbCr to AB8500 on D[8:15]: connect LSB Ch B */
+ .outmux = { 0, 3, 0, 0, 0 },
+ .syncmux = 0x01,
+ .regulator_id = "v-ana",
+ .clock_dsi_id = "hdmi",
+ .clock_dsi_lp_id = "tv",
+ .clock_mcde_id = "mcde",
};
-struct platform_device u8500_mcde1_device = {
- .name = "U8500-MCDE",
- .id = 1,
+struct platform_device ux500_mcde_device = {
+ .name = "mcde",
+ .id = -1,
.dev = {
- .bus_id = "mcde_bus",
- .coherent_dma_mask = ~0,
- .platform_data = &mcde1_channel_data,
+ .release = dev_release_noop,
+ .platform_data = &mcde_pdata,
},
- .num_resources = ARRAY_SIZE(mcde1_resources),
- .resource = mcde1_resources
+ .num_resources = ARRAY_SIZE(mcde_resources),
+ .resource = mcde_resources,
};
-#endif /* CONFIG_FB_U8500_MCDE_CHANNELB */
-#ifdef CONFIG_FB_U8500_MCDE_CHANNELA
-/* Channel A */
-#ifdef CONFIG_MCDE_ENABLE_FEATURE_HW_V1_SUPPORT
-static struct resource mcde0_resources[] = {
- [0] = {
- .start = U8500_MCDE_BASE,
- .end = U8500_MCDE_BASE + (U8500_MCDE_BASE_SIZE - 1),
- .name = "mcde_base",
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = U8500_MCDE_EXTSRC_BASE,
- .end = U8500_MCDE_EXTSRC_BASE + (U8500_MCDE_EXTSRC_SIZE - 1),
- .name = "mcde_extsrc",
- .flags = IORESOURCE_MEM,
- },
- [2] = {
- .start = U8500_MCDE_OVERLAY_BASE,
- .end = U8500_MCDE_OVERLAY_BASE + (U8500_MCDE_OVERLAY_SIZE - 1),
- .name = "mcde_overlay",
- .flags = IORESOURCE_MEM,
- },
- [3] = {
- .start = U8500_MCDE_CHANNELA_CONFIG_BASE,
- .end = U8500_MCDE_CHANNELA_CONFIG_BASE + (U8500_MCDE_CHANNEL_CONFIG_SIZE - 1),
- .name = "mcde_cha_config",
- .flags = IORESOURCE_MEM,
- },
- [4] = {
- .start = U8500_MCDE_CHANNELA_SPECIFIC_REGISTER_BASE,
- .end = U8500_MCDE_CHANNELA_SPECIFIC_REGISTER_BASE + (U8500_MCDE_CHANNELA_SPECIFIC_REGISTER_SIZE - 1),
- .name = "mcde_cha_specific",
- .flags = IORESOURCE_MEM,
- },
- [5] = {
- .start = U8500_MCDE_DSI_CHANNEL_BASE,
- .end = U8500_MCDE_DSI_CHANNEL_BASE + (U8500_MCDE_DSI_SIZE - 1),
- .name = "mcde_dsi_channel",
- .flags = IORESOURCE_MEM,
- },
- [6] = {
- .start = U8500_DSI_LINK1_BASE,
- .end = U8500_DSI_LINK1_BASE + ((U8500_DSI_LINK_SIZE * U8500_DSI_LINK_COUNT) - 1),
- .name = "dsi_link",
- .flags = IORESOURCE_MEM,
- },
- [7] = {
- .start = PRCM_MCDECLK_MGT_REG,
- .end = PRCM_MCDECLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_mcde_clk",
- .flags = IORESOURCE_MEM,
- },
- [8] = {
- .start = PRCM_HDMICLK_MGT_REG,
- .end = PRCM_HDMICLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_hdmi_clk",
- .flags = IORESOURCE_MEM,
- },
- [9] = {
- .start = PRCM_TVCLK_MGT_REG,
- .end = PRCM_TVCLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_tv_clk",
- .flags = IORESOURCE_MEM,
- },
- [10] = {
- .start = IRQ_DISP,
- .end = IRQ_DISP,
- .name = "mcde_irq",
- .flags = IORESOURCE_IRQ
- },
-};
-
-#else /* CONFIG_MCDE_ENABLE_FEATURE_HW_V1_SUPPORT */
-
-static struct resource mcde0_resources[] = {
- [0] = {
- .start = U8500_MCDE_BASE,
- .end = U8500_MCDE_BASE + (U8500_MCDE_REGISTER_SIZE - 1),
- .name = "mcde_base",
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = U8500_MCDE_EXTSRC_BASE,
- .end = U8500_MCDE_EXTSRC_BASE + (U8500_MCDE_EXTSRC_SIZE - 1),
- .name = "mcde_extsrc_base",
- .flags = IORESOURCE_MEM,
- },
- [2] = {
- .start = U8500_MCDE_OVL_BASE,
- .end = U8500_MCDE_OVL_BASE + (U8500_MCDE_OVL_SIZE - 1),
- .name = "mcde_overlay_base",
- .flags = IORESOURCE_MEM,
- },
- [3] = {
- .start = U8500_MCDE_CHANNELA_CONFIG_BASE,
- .end = U8500_MCDE_CHANNELA_CONFIG_BASE +
- (U8500_MCDE_CHANNEL_CONFIG_SIZE - 1),
- .name = "cha_config",
- .flags = IORESOURCE_MEM,
- },
- [4] = {
- .start = U8500_MCDE_CHANNELA_SPECIFIC_REGISTER_BASE,
- .end = U8500_MCDE_CHANNELA_SPECIFIC_REGISTER_BASE +
- (U8500_MCDE_CHANNEL_SPECIFIC_REGISTER_SIZE - 1),
- .name = "cha_specific",
- .flags = IORESOURCE_MEM,
- },
- [5] = {
- .start = U8500_MCDE_DSI_CHANNEL_BASE,
- .end = U8500_MCDE_DSI_CHANNEL_BASE + (U8500_MCDE_DSI_SIZE - 1),
- .name = "mcde_dsi_channel_base",
- .flags = IORESOURCE_MEM,
- },
- [6] = {
- .start = U8500_DSI_LINK1_BASE,
- .end = U8500_DSI_LINK1_BASE +
- ((U8500_DSI_LINK_SIZE*U8500_DSI_LINK_COUNT) - 1),
- .name = "dsi_link_base",
- .flags = IORESOURCE_MEM,
- },
- [7] = {
- .start = PRCM_MCDECLK_MGT_REG,
- .end = PRCM_MCDECLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_mcde_clk",
- .flags = IORESOURCE_MEM,
- },
- [8] = {
- .start = PRCM_HDMICLK_MGT_REG,
- .end = PRCM_HDMICLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_hdmi_clk",
- .flags = IORESOURCE_MEM,
- },
- [9] = {
- .start = PRCM_TVCLK_MGT_REG,
- .end = PRCM_TVCLK_MGT_REG + (sizeof(u32) - 1),
- .name = "prcm_tv_clk",
- .flags = IORESOURCE_MEM,
- },
- [10] = {
- .start = IRQ_DISP,
- .end = IRQ_DISP,
- .name = "mcde_irq",
- .flags = IORESOURCE_IRQ
- },
-};
-
-#endif /* CONFIG_MCDE_ENABLE_FEATURE_HW_V1_SUPPORT */
-
-static struct mcde_channel_data mcde0_channel_data = {
- .channelid = CHANNEL_A,
- .nopan = 1,
- .nowrap = 1,
- .restype = CONFIG_FB_U8500_MCDE_CHANNELA_DISPLAY_TYPE,
- .inbpp = CONFIG_FB_U8500_MCDE_CHANNELA_INPUT_BPP,
- .outbpp = CONFIG_FB_U8500_MCDE_CHANNELA_OUTPUT_BPP,
- .bpp16_type = CONFIG_FB_U8500_MCDE_CHANNELA_INPUT_16BPP_TYPE,
- .bgrinput = CONFIG_FB_U8500_MCDE_CHANNELA_INPUT_BGR,
- .gpio_alt_func = GPIO_ALT_LCD_PANELA
-};
-struct platform_device u8500_mcde0_device = {
- .name = "U8500-MCDE",
- .id = 0,
- .dev = {
- .bus_id = "mcde_bus",
- .coherent_dma_mask = ~0,
- .platform_data = &mcde0_channel_data,
- },
- .num_resources = ARRAY_SIZE(mcde0_resources),
- .resource = mcde0_resources
-};
-#endif /* CONFIG_FB_U8500_MCDE_CHANNELA */