Merge branch 'for-paul' of git://gitorious.org/linux-omap-dss2/linux
Paul Mundt [Tue, 22 Mar 2011 05:27:36 +0000 (14:27 +0900)]
Conflicts:
arch/arm/mach-omap2/board-overo.c

Signed-off-by: Paul Mundt <lethal@linux-sh.org>

19 files changed:
1  2 
MAINTAINERS
arch/arm/mach-omap2/board-3430sdp.c
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/board-cm-t35.c
arch/arm/mach-omap2/board-devkit8000.c
arch/arm/mach-omap2/board-igep0020.c
arch/arm/mach-omap2/board-omap3beagle.c
arch/arm/mach-omap2/board-omap3evm.c
arch/arm/mach-omap2/board-omap3pandora.c
arch/arm/mach-omap2/board-omap3stalker.c
arch/arm/mach-omap2/board-omap4panda.c
arch/arm/mach-omap2/board-overo.c
arch/arm/mach-omap2/clock2420_data.c
arch/arm/mach-omap2/clock2430_data.c
arch/arm/mach-omap2/clock3xxx_data.c
arch/arm/mach-omap2/clock44xx_data.c
arch/arm/mach-omap2/omap_hwmod_2420_data.c
arch/arm/mach-omap2/omap_hwmod_2430_data.c
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -462,79 -481,192 +482,259 @@@ static struct omap_board_mux board_mux[
        OMAP4_MUX(SDMMC5_DAT1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
        OMAP4_MUX(SDMMC5_DAT2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
        OMAP4_MUX(SDMMC5_DAT3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
+       /* gpio 0 - TFP410 PD */
+       OMAP4_MUX(KPD_COL1, OMAP_PIN_OUTPUT | OMAP_MUX_MODE3),
+       /* dispc2_data23 */
+       OMAP4_MUX(USBB2_ULPITLL_STP, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data22 */
+       OMAP4_MUX(USBB2_ULPITLL_DIR, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data21 */
+       OMAP4_MUX(USBB2_ULPITLL_NXT, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data20 */
+       OMAP4_MUX(USBB2_ULPITLL_DAT0, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data19 */
+       OMAP4_MUX(USBB2_ULPITLL_DAT1, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data18 */
+       OMAP4_MUX(USBB2_ULPITLL_DAT2, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data15 */
+       OMAP4_MUX(USBB2_ULPITLL_DAT3, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data14 */
+       OMAP4_MUX(USBB2_ULPITLL_DAT4, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data13 */
+       OMAP4_MUX(USBB2_ULPITLL_DAT5, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data12 */
+       OMAP4_MUX(USBB2_ULPITLL_DAT6, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data11 */
+       OMAP4_MUX(USBB2_ULPITLL_DAT7, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data10 */
+       OMAP4_MUX(DPM_EMU3, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data9 */
+       OMAP4_MUX(DPM_EMU4, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data16 */
+       OMAP4_MUX(DPM_EMU5, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data17 */
+       OMAP4_MUX(DPM_EMU6, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_hsync */
+       OMAP4_MUX(DPM_EMU7, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_pclk */
+       OMAP4_MUX(DPM_EMU8, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_vsync */
+       OMAP4_MUX(DPM_EMU9, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_de */
+       OMAP4_MUX(DPM_EMU10, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data8 */
+       OMAP4_MUX(DPM_EMU11, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data7 */
+       OMAP4_MUX(DPM_EMU12, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data6 */
+       OMAP4_MUX(DPM_EMU13, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data5 */
+       OMAP4_MUX(DPM_EMU14, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data4 */
+       OMAP4_MUX(DPM_EMU15, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data3 */
+       OMAP4_MUX(DPM_EMU16, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data2 */
+       OMAP4_MUX(DPM_EMU17, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data1 */
+       OMAP4_MUX(DPM_EMU18, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
+       /* dispc2_data0 */
+       OMAP4_MUX(DPM_EMU19, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),
        { .reg_offset = OMAP_MUX_TERMINATOR },
  };
 +
 +static struct omap_device_pad serial2_pads[] __initdata = {
 +      OMAP_MUX_STATIC("uart2_cts.uart2_cts",
 +                       OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0),
 +      OMAP_MUX_STATIC("uart2_rts.uart2_rts",
 +                       OMAP_PIN_OUTPUT | OMAP_MUX_MODE0),
 +      OMAP_MUX_STATIC("uart2_rx.uart2_rx",
 +                       OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0),
 +      OMAP_MUX_STATIC("uart2_tx.uart2_tx",
 +                       OMAP_PIN_OUTPUT | OMAP_MUX_MODE0),
 +};
 +
 +static struct omap_device_pad serial3_pads[] __initdata = {
 +      OMAP_MUX_STATIC("uart3_cts_rctx.uart3_cts_rctx",
 +                       OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE0),
 +      OMAP_MUX_STATIC("uart3_rts_sd.uart3_rts_sd",
 +                       OMAP_PIN_OUTPUT | OMAP_MUX_MODE0),
 +      OMAP_MUX_STATIC("uart3_rx_irrx.uart3_rx_irrx",
 +                       OMAP_PIN_INPUT | OMAP_MUX_MODE0),
 +      OMAP_MUX_STATIC("uart3_tx_irtx.uart3_tx_irtx",
 +                       OMAP_PIN_OUTPUT | OMAP_MUX_MODE0),
 +};
 +
 +static struct omap_device_pad serial4_pads[] __initdata = {
 +      OMAP_MUX_STATIC("uart4_rx.uart4_rx",
 +                       OMAP_PIN_INPUT | OMAP_MUX_MODE0),
 +      OMAP_MUX_STATIC("uart4_tx.uart4_tx",
 +                       OMAP_PIN_OUTPUT | OMAP_MUX_MODE0),
 +};
 +
 +static struct omap_board_data serial2_data = {
 +      .id             = 1,
 +      .pads           = serial2_pads,
 +      .pads_cnt       = ARRAY_SIZE(serial2_pads),
 +};
 +
 +static struct omap_board_data serial3_data = {
 +      .id             = 2,
 +      .pads           = serial3_pads,
 +      .pads_cnt       = ARRAY_SIZE(serial3_pads),
 +};
 +
 +static struct omap_board_data serial4_data = {
 +      .id             = 3,
 +      .pads           = serial4_pads,
 +      .pads_cnt       = ARRAY_SIZE(serial4_pads),
 +};
 +
 +static inline void board_serial_init(void)
 +{
 +      struct omap_board_data bdata;
 +      bdata.flags     = 0;
 +      bdata.pads      = NULL;
 +      bdata.pads_cnt  = 0;
 +      bdata.id        = 0;
 +      /* pass dummy data for UART1 */
 +      omap_serial_init_port(&bdata);
 +
 +      omap_serial_init_port(&serial2_data);
 +      omap_serial_init_port(&serial3_data);
 +      omap_serial_init_port(&serial4_data);
 +}
  #else
  #define board_mux     NULL
 +
 +static inline void board_serial_init(void)
 +{
 +      omap_serial_init();
 +}
  #endif
  
+ /* Display DVI */
+ #define PANDA_DVI_TFP410_POWER_DOWN_GPIO      0
+ static int omap4_panda_enable_dvi(struct omap_dss_device *dssdev)
+ {
+       gpio_set_value(dssdev->reset_gpio, 1);
+       return 0;
+ }
+ static void omap4_panda_disable_dvi(struct omap_dss_device *dssdev)
+ {
+       gpio_set_value(dssdev->reset_gpio, 0);
+ }
+ /* Using generic display panel */
+ static struct panel_generic_dpi_data omap4_dvi_panel = {
+       .name                   = "generic",
+       .platform_enable        = omap4_panda_enable_dvi,
+       .platform_disable       = omap4_panda_disable_dvi,
+ };
+ struct omap_dss_device omap4_panda_dvi_device = {
+       .type                   = OMAP_DISPLAY_TYPE_DPI,
+       .name                   = "dvi",
+       .driver_name            = "generic_dpi_panel",
+       .data                   = &omap4_dvi_panel,
+       .phy.dpi.data_lines     = 24,
+       .reset_gpio             = PANDA_DVI_TFP410_POWER_DOWN_GPIO,
+       .channel                = OMAP_DSS_CHANNEL_LCD2,
+ };
+ int __init omap4_panda_dvi_init(void)
+ {
+       int r;
+       /* Requesting TFP410 DVI GPIO and disabling it, at bootup */
+       r = gpio_request_one(omap4_panda_dvi_device.reset_gpio,
+                               GPIOF_OUT_INIT_LOW, "DVI PD");
+       if (r)
+               pr_err("Failed to get DVI powerdown GPIO\n");
+       return r;
+ }
+ static void omap4_panda_hdmi_mux_init(void)
+ {
+       /* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
+       omap_mux_init_signal("hdmi_hpd",
+                       OMAP_PIN_INPUT_PULLUP);
+       omap_mux_init_signal("hdmi_cec",
+                       OMAP_PIN_INPUT_PULLUP);
+       /* PAD0_HDMI_DDC_SCL_PAD1_HDMI_DDC_SDA */
+       omap_mux_init_signal("hdmi_ddc_scl",
+                       OMAP_PIN_INPUT_PULLUP);
+       omap_mux_init_signal("hdmi_ddc_sda",
+                       OMAP_PIN_INPUT_PULLUP);
+ }
+ static int omap4_panda_panel_enable_hdmi(struct omap_dss_device *dssdev)
+ {
+       int status;
+       status = gpio_request_one(HDMI_GPIO_HPD, GPIOF_OUT_INIT_HIGH,
+                                                       "hdmi_gpio_hpd");
+       if (status) {
+               pr_err("Cannot request GPIO %d\n", HDMI_GPIO_HPD);
+               return status;
+       }
+       status = gpio_request_one(HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH,
+                                                       "hdmi_gpio_ls_oe");
+       if (status) {
+               pr_err("Cannot request GPIO %d\n", HDMI_GPIO_LS_OE);
+               goto error1;
+       }
+       return 0;
+ error1:
+       gpio_free(HDMI_GPIO_HPD);
+       return status;
+ }
+ static void omap4_panda_panel_disable_hdmi(struct omap_dss_device *dssdev)
+ {
+       gpio_free(HDMI_GPIO_LS_OE);
+       gpio_free(HDMI_GPIO_HPD);
+ }
+ static struct omap_dss_device  omap4_panda_hdmi_device = {
+       .name = "hdmi",
+       .driver_name = "hdmi_panel",
+       .type = OMAP_DISPLAY_TYPE_HDMI,
+       .platform_enable = omap4_panda_panel_enable_hdmi,
+       .platform_disable = omap4_panda_panel_disable_hdmi,
+       .channel = OMAP_DSS_CHANNEL_DIGIT,
+ };
+ static struct omap_dss_device *omap4_panda_dss_devices[] = {
+       &omap4_panda_dvi_device,
+       &omap4_panda_hdmi_device,
+ };
+ static struct omap_dss_board_info omap4_panda_dss_data = {
+       .num_devices    = ARRAY_SIZE(omap4_panda_dss_devices),
+       .devices        = omap4_panda_dss_devices,
+       .default_device = &omap4_panda_dvi_device,
+ };
+ void omap4_panda_display_init(void)
+ {
+       int r;
+       r = omap4_panda_dvi_init();
+       if (r)
+               pr_err("error initializing panda DVI\n");
+       omap4_panda_hdmi_mux_init();
+       omap_display_init(&omap4_panda_dss_data);
+ }
  static void __init omap4_panda_init(void)
  {
        int package = OMAP_PACKAGE_CBS;
@@@ -414,15 -706,11 +706,10 @@@ static void __init overo_init_early(voi
                                  mt46h32m32lf6_sdrc_params);
  }
  
- static struct platform_device *overo_devices[] __initdata = {
-       &overo_lcd_device,
- };
 -static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
 -      .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN,
 -      .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
 -      .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
 -
 +static const struct usbhs_omap_board_data usbhs_bdata __initconst = {
 +      .port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED,
 +      .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
 +      .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
        .phy_reset  = true,
        .reset_gpio_port[0]  = -EINVAL,
        .reset_gpio_port[1]  = OVERO_GPIO_USBH_NRESET,
@@@ -451,9 -737,12 +736,13 @@@ static void __init overo_init(void
        omap_serial_init();
        overo_flash_init();
        usb_musb_init(&musb_board_data);
 -      usb_ehci_init(&ehci_pdata);
 +      usbhs_init(&usbhs_bdata);
+       overo_spi_init();
 +      overo_ads7846_init();
        overo_init_smsc911x();
+       overo_display_init();
+       overo_init_led();
+       overo_init_keys();
  
        /* Ensure SDRC pins are mux'd for self-refresh */
        omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
Simple merge
Simple merge
Simple merge
Simple merge