]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/arm/mach-shmobile/board-mackerel.c
Merge tag 'soc2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[mv-sheeva.git] / arch / arm / mach-shmobile / board-mackerel.c
index 55da7a1159127f776c252ce8c2479795155ee7db..ca609502d6cdda92dda69a3cc421e58d25e9b4c7 100644 (file)
@@ -316,8 +316,14 @@ static struct sh_mobile_meram_info mackerel_meram_info = {
 
 static struct resource meram_resources[] = {
        [0] = {
-               .name   = "MERAM",
+               .name   = "regs",
                .start  = 0xe8000000,
+               .end    = 0xe807ffff,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .name   = "meram",
+               .start  = 0xe8080000,
                .end    = 0xe81fffff,
                .flags  = IORESOURCE_MEM,
        },
@@ -349,29 +355,23 @@ static struct fb_videomode mackerel_lcdc_modes[] = {
        },
 };
 
-static int mackerel_set_brightness(void *board_data, int brightness)
+static int mackerel_set_brightness(int brightness)
 {
        gpio_set_value(GPIO_PORT31, brightness);
 
        return 0;
 }
 
-static int mackerel_get_brightness(void *board_data)
+static int mackerel_get_brightness(void)
 {
        return gpio_get_value(GPIO_PORT31);
 }
 
-static struct sh_mobile_meram_cfg lcd_meram_cfg = {
+static const struct sh_mobile_meram_cfg lcd_meram_cfg = {
        .icb[0] = {
-               .marker_icb     = 28,
-               .cache_icb      = 24,
-               .meram_offset   = 0x0,
                .meram_size     = 0x40,
        },
        .icb[1] = {
-               .marker_icb     = 29,
-               .cache_icb      = 25,
-               .meram_offset   = 0x40,
                .meram_size     = 0x40,
        },
 };
@@ -382,20 +382,20 @@ static struct sh_mobile_lcdc_info lcdc_info = {
        .ch[0] = {
                .chan = LCDC_CHAN_MAINLCD,
                .fourcc = V4L2_PIX_FMT_RGB565,
-               .lcd_cfg = mackerel_lcdc_modes,
-               .num_cfg = ARRAY_SIZE(mackerel_lcdc_modes),
+               .lcd_modes = mackerel_lcdc_modes,
+               .num_modes = ARRAY_SIZE(mackerel_lcdc_modes),
                .interface_type         = RGB24,
                .clock_divider          = 3,
                .flags                  = 0,
-               .lcd_size_cfg.width     = 152,
-               .lcd_size_cfg.height    = 91,
-               .board_cfg = {
-                       .set_brightness = mackerel_set_brightness,
-                       .get_brightness = mackerel_get_brightness,
+               .panel_cfg = {
+                       .width          = 152,
+                       .height         = 91,
                },
                .bl_info = {
                        .name = "sh_mobile_lcdc_bl",
                        .max_brightness = 1,
+                       .set_brightness = mackerel_set_brightness,
+                       .get_brightness = mackerel_get_brightness,
                },
                .meram_cfg = &lcd_meram_cfg,
        }
@@ -424,21 +424,44 @@ static struct platform_device lcdc_device = {
        },
 };
 
-static struct sh_mobile_meram_cfg hdmi_meram_cfg = {
+/* HDMI */
+static struct sh_mobile_hdmi_info hdmi_info = {
+       .flags          = HDMI_SND_SRC_SPDIF,
+};
+
+static struct resource hdmi_resources[] = {
+       [0] = {
+               .name   = "HDMI",
+               .start  = 0xe6be0000,
+               .end    = 0xe6be00ff,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               /* There's also an HDMI interrupt on INTCS @ 0x18e0 */
+               .start  = evt2irq(0x17e0),
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device hdmi_device = {
+       .name           = "sh-mobile-hdmi",
+       .num_resources  = ARRAY_SIZE(hdmi_resources),
+       .resource       = hdmi_resources,
+       .id             = -1,
+       .dev    = {
+               .platform_data  = &hdmi_info,
+       },
+};
+
+static const struct sh_mobile_meram_cfg hdmi_meram_cfg = {
        .icb[0] = {
-               .marker_icb     = 30,
-               .cache_icb      = 26,
-               .meram_offset   = 0x80,
                .meram_size     = 0x100,
        },
        .icb[1] = {
-               .marker_icb     = 31,
-               .cache_icb      = 27,
-               .meram_offset   = 0x180,
                .meram_size     = 0x100,
        },
 };
-/* HDMI */
+
 static struct sh_mobile_lcdc_info hdmi_lcdc_info = {
        .meram_dev = &mackerel_meram_info,
        .clock_source = LCDC_CLK_EXTERNAL,
@@ -449,6 +472,7 @@ static struct sh_mobile_lcdc_info hdmi_lcdc_info = {
                .clock_divider = 1,
                .flags = LCDC_FLAGS_DWPOL,
                .meram_cfg = &hdmi_meram_cfg,
+               .tx_dev = &hdmi_device,
        }
 };
 
@@ -476,36 +500,6 @@ static struct platform_device hdmi_lcdc_device = {
        },
 };
 
-static struct sh_mobile_hdmi_info hdmi_info = {
-       .lcd_chan       = &hdmi_lcdc_info.ch[0],
-       .lcd_dev        = &hdmi_lcdc_device.dev,
-       .flags          = HDMI_SND_SRC_SPDIF,
-};
-
-static struct resource hdmi_resources[] = {
-       [0] = {
-               .name   = "HDMI",
-               .start  = 0xe6be0000,
-               .end    = 0xe6be00ff,
-               .flags  = IORESOURCE_MEM,
-       },
-       [1] = {
-               /* There's also an HDMI interrupt on INTCS @ 0x18e0 */
-               .start  = evt2irq(0x17e0),
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device hdmi_device = {
-       .name           = "sh-mobile-hdmi",
-       .num_resources  = ARRAY_SIZE(hdmi_resources),
-       .resource       = hdmi_resources,
-       .id             = -1,
-       .dev    = {
-               .platform_data  = &hdmi_info,
-       },
-};
-
 static struct platform_device fsi_hdmi_device = {
        .name           = "sh_fsi2_b_hdmi",
 };
@@ -858,7 +852,7 @@ static int __fsi_set_round_rate(struct clk *clk, long rate, int enable)
        return clk_enable(clk);
 }
 
-static int fsi_set_rate(struct device *dev, int is_porta, int rate, int enable)
+static int fsi_b_set_rate(struct device *dev, int rate, int enable)
 {
        struct clk *fsib_clk;
        struct clk *fdiv_clk = &sh7372_fsidivb_clk;
@@ -867,10 +861,6 @@ static int fsi_set_rate(struct device *dev, int is_porta, int rate, int enable)
        int ackmd_bpfmd;
        int ret;
 
-       /* FSIA is slave mode. nothing to do here */
-       if (is_porta)
-               return 0;
-
        /* clock start */
        switch (rate) {
        case 44100:
@@ -914,14 +904,16 @@ fsi_set_rate_end:
 }
 
 static struct sh_fsi_platform_info fsi_info = {
-       .porta_flags =  SH_FSI_BRS_INV,
-
-       .portb_flags =  SH_FSI_BRS_INV  |
+       .port_a = {
+               .flags = SH_FSI_BRS_INV,
+       },
+       .port_b = {
+               .flags = SH_FSI_BRS_INV |
                        SH_FSI_BRM_INV  |
                        SH_FSI_LRS_INV  |
                        SH_FSI_FMT_SPDIF,
-
-       .set_rate = fsi_set_rate,
+               .set_rate = fsi_b_set_rate,
+       }
 };
 
 static struct resource fsi_resources[] = {
@@ -1274,8 +1266,8 @@ static struct platform_device *mackerel_devices[] __initdata = {
        &sh_mmcif_device,
        &ceu_device,
        &mackerel_camera,
-       &hdmi_lcdc_device,
        &hdmi_device,
+       &hdmi_lcdc_device,
        &meram_device,
 };