ARM: mach-shmobile: ag5evm: Add LCDC tx_dev field to platform data
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Mon, 13 Aug 2012 14:11:32 +0000 (16:11 +0200)
committerLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Wed, 21 Nov 2012 14:50:00 +0000 (15:50 +0100)
Reference the MIPI-DSI transceiver in the LCDC platform data and make
sure it gets registered before the LCDC.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Simon Horman <horms@verge.net.au>
arch/arm/mach-shmobile/board-ag5evm.c

index 25eb88a923e6097f66af5157d8bd998e9a2e53f1..52b5e64eb6b9c7f424dc5c8cdbf185e8c56e299f 100644 (file)
@@ -213,6 +213,84 @@ static struct platform_device irda_device = {
        .num_resources  = ARRAY_SIZE(irda_resources),
 };
 
+/* MIPI-DSI */
+static struct resource mipidsi0_resources[] = {
+       [0] = {
+               .name   = "DSI0",
+               .start  = 0xfeab0000,
+               .end    = 0xfeab3fff,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .name   = "DSI0",
+               .start  = 0xfeab4000,
+               .end    = 0xfeab7fff,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static int sh_mipi_set_dot_clock(struct platform_device *pdev,
+                                void __iomem *base,
+                                int enable)
+{
+       struct clk *pck, *phy;
+       int ret;
+
+       pck = clk_get(&pdev->dev, "dsip_clk");
+       if (IS_ERR(pck)) {
+               ret = PTR_ERR(pck);
+               goto sh_mipi_set_dot_clock_pck_err;
+       }
+
+       phy = clk_get(&pdev->dev, "dsiphy_clk");
+       if (IS_ERR(phy)) {
+               ret = PTR_ERR(phy);
+               goto sh_mipi_set_dot_clock_phy_err;
+       }
+
+       if (enable) {
+               clk_set_rate(pck, clk_round_rate(pck,  24000000));
+               clk_set_rate(phy, clk_round_rate(pck, 510000000));
+               clk_enable(pck);
+               clk_enable(phy);
+       } else {
+               clk_disable(pck);
+               clk_disable(phy);
+       }
+
+       ret = 0;
+
+       clk_put(phy);
+sh_mipi_set_dot_clock_phy_err:
+       clk_put(pck);
+sh_mipi_set_dot_clock_pck_err:
+       return ret;
+}
+
+static struct sh_mobile_lcdc_info lcdc0_info;
+
+static struct sh_mipi_dsi_info mipidsi0_info = {
+       .data_format    = MIPI_RGB888,
+       .lcd_chan       = &lcdc0_info.ch[0],
+       .lane           = 2,
+       .vsynw_offset   = 20,
+       .clksrc         = 1,
+       .flags          = SH_MIPI_DSI_HSABM             |
+                         SH_MIPI_DSI_SYNC_PULSES_MODE  |
+                         SH_MIPI_DSI_HSbyteCLK,
+       .set_dot_clock  = sh_mipi_set_dot_clock,
+};
+
+static struct platform_device mipidsi0_device = {
+       .name           = "sh-mipi-dsi",
+       .num_resources  = ARRAY_SIZE(mipidsi0_resources),
+       .resource       = mipidsi0_resources,
+       .id             = 0,
+       .dev    = {
+               .platform_data  = &mipidsi0_info,
+       },
+};
+
 static unsigned char lcd_backlight_seq[3][2] = {
        { 0x04, 0x07 },
        { 0x23, 0x80 },
@@ -275,6 +353,7 @@ static struct sh_mobile_lcdc_info lcdc0_info = {
                        .display_on = lcd_backlight_on,
                        .display_off = lcd_backlight_reset,
                },
+               .tx_dev = &mipidsi0_device,
        }
 };
 
@@ -302,82 +381,6 @@ static struct platform_device lcdc0_device = {
        },
 };
 
-/* MIPI-DSI */
-static struct resource mipidsi0_resources[] = {
-       [0] = {
-               .name   = "DSI0",
-               .start  = 0xfeab0000,
-               .end    = 0xfeab3fff,
-               .flags  = IORESOURCE_MEM,
-       },
-       [1] = {
-               .name   = "DSI0",
-               .start  = 0xfeab4000,
-               .end    = 0xfeab7fff,
-               .flags  = IORESOURCE_MEM,
-       },
-};
-
-static int sh_mipi_set_dot_clock(struct platform_device *pdev,
-                                void __iomem *base,
-                                int enable)
-{
-       struct clk *pck, *phy;
-       int ret;
-
-       pck = clk_get(&pdev->dev, "dsip_clk");
-       if (IS_ERR(pck)) {
-               ret = PTR_ERR(pck);
-               goto sh_mipi_set_dot_clock_pck_err;
-       }
-
-       phy = clk_get(&pdev->dev, "dsiphy_clk");
-       if (IS_ERR(phy)) {
-               ret = PTR_ERR(phy);
-               goto sh_mipi_set_dot_clock_phy_err;
-       }
-
-       if (enable) {
-               clk_set_rate(pck, clk_round_rate(pck,  24000000));
-               clk_set_rate(phy, clk_round_rate(pck, 510000000));
-               clk_enable(pck);
-               clk_enable(phy);
-       } else {
-               clk_disable(pck);
-               clk_disable(phy);
-       }
-
-       ret = 0;
-
-       clk_put(phy);
-sh_mipi_set_dot_clock_phy_err:
-       clk_put(pck);
-sh_mipi_set_dot_clock_pck_err:
-       return ret;
-}
-
-static struct sh_mipi_dsi_info mipidsi0_info = {
-       .data_format    = MIPI_RGB888,
-       .lcd_chan       = &lcdc0_info.ch[0],
-       .lane           = 2,
-       .vsynw_offset   = 20,
-       .clksrc         = 1,
-       .flags          = SH_MIPI_DSI_HSABM             |
-                         SH_MIPI_DSI_SYNC_PULSES_MODE  |
-                         SH_MIPI_DSI_HSbyteCLK,
-       .set_dot_clock  = sh_mipi_set_dot_clock,
-};
-
-static struct platform_device mipidsi0_device = {
-       .name           = "sh-mipi-dsi",
-       .num_resources  = ARRAY_SIZE(mipidsi0_resources),
-       .resource       = mipidsi0_resources,
-       .id             = 0,
-       .dev    = {
-               .platform_data  = &mipidsi0_info,
-       },
-};
-
 /* Fixed 2.8V regulators to be used by SDHI0 */
 static struct regulator_consumer_supply fixed2v8_power_consumers[] =
 {
@@ -531,8 +534,8 @@ static struct platform_device *ag5evm_devices[] __initdata = {
        &fsi_device,
        &mmc_device,
        &irda_device,
-       &lcdc0_device,
        &mipidsi0_device,
+       &lcdc0_device,
        &sdhi0_device,
        &sdhi1_device,
 };