2011/5/12 Mike Rapoport <m...@compulab.co.il>:
> Add IGEP3 machine support to board-igep0020
>
> Signed-off-by: Mike Rapoport <m...@compulab.co.il>
> ---
>  arch/arm/mach-omap2/board-igep0020.c |  103 
> ++++++++++++++++++++++++++--------
>  1 files changed, 80 insertions(+), 23 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/board-igep0020.c 
> b/arch/arm/mach-omap2/board-igep0020.c
> index ea7cbc6..0d6d583 100644
> --- a/arch/arm/mach-omap2/board-igep0020.c
> +++ b/arch/arm/mach-omap2/board-igep0020.c
> @@ -55,6 +55,11 @@
>  #define IGEP2_RC_GPIO_WIFI_NRESET  139
>  #define IGEP2_RC_GPIO_BT_NRESET    137
>
> +#define IGEP3_GPIO_LED0_GREEN  54
> +#define IGEP3_GPIO_LED0_RED    53
> +#define IGEP3_GPIO_LED1_RED    16
> +#define IGEP3_GPIO_USBH_NRESET  183
> +
>  /*
>  * IGEP2 Hardware Revision Table
>  *
> @@ -69,6 +74,7 @@
>
>  #define IGEP2_BOARD_HWREV_B    0
>  #define IGEP2_BOARD_HWREV_C    1
> +#define IGEP3_BOARD_HWREV      2
>
>  static u8 hwrev;
>
> @@ -76,6 +82,11 @@ static void __init igep2_get_revision(void)
>  {
>        u8 ret;
>
> +       if (machine_is_igep0030()) {
> +               hwrev = IGEP3_BOARD_HWREV;
> +               return;
> +       }
> +
>        omap_mux_init_gpio(IGEP2_GPIO_LED1_RED, OMAP_PIN_INPUT);
>
>        if (gpio_request_one(IGEP2_GPIO_LED1_RED, GPIOF_IN, "GPIO_HW0_REV")) {
> @@ -332,24 +343,40 @@ static struct platform_device igep_led_device = {
>
>  static void __init igep_leds_init(void)
>  {
> -       igep_gpio_leds[0].gpio = IGEP2_GPIO_LED0_RED;
> -       igep_gpio_leds[1].gpio = IGEP2_GPIO_LED0_GREEN;
> -       igep_gpio_leds[2].gpio = IGEP2_GPIO_LED1_RED;
> +       if (machine_is_igep0020()) {
> +               igep_gpio_leds[0].gpio = IGEP2_GPIO_LED0_RED;
> +               igep_gpio_leds[1].gpio = IGEP2_GPIO_LED0_GREEN;
> +               igep_gpio_leds[2].gpio = IGEP2_GPIO_LED1_RED;
> +       } else {
> +               igep_gpio_leds[0].gpio = IGEP3_GPIO_LED0_RED;
> +               igep_gpio_leds[1].gpio = IGEP3_GPIO_LED0_GREEN;
> +               igep_gpio_leds[2].gpio = IGEP3_GPIO_LED1_RED;
> +       }
>
>        platform_device_register(&igep_led_device);
>  }
>
>  #else
>  static struct gpio igep_gpio_leds[] __initdata = {
> -       { IGEP2_GPIO_LED0_RED,   GPIOF_OUT_INIT_LOW, "gpio-led:red:d0"   },
> -       { IGEP2_GPIO_LED0_GREEN, GPIOF_OUT_INIT_LOW, "gpio-led:green:d0" },
> -       { IGEP2_GPIO_LED1_RED,   GPIOF_OUT_INIT_LOW, "gpio-led:red:d1"   },
> +       { -EINVAL,      GPIOF_OUT_INIT_LOW, "gpio-led:red:d0"   },
> +       { -EINVAL,      GPIOF_OUT_INIT_LOW, "gpio-led:green:d0" },
> +       { -EINVAL,      GPIOF_OUT_INIT_LOW, "gpio-led:red:d1"   },
>  };
>
>  static inline void igep_leds_init(void)
>  {
>        int i;
>
> +       if (machine_is_igep0020()) {
> +               igep_gpio_leds[0].gpio = IGEP2_GPIO_LED0_RED;
> +               igep_gpio_leds[1].gpio = IGEP2_GPIO_LED0_GREEN;
> +               igep_gpio_leds[2].gpio = IGEP2_GPIO_LED1_RED;
> +       } else {
> +               igep_gpio_leds[0].gpio = IGEP3_GPIO_LED0_RED;
> +               igep_gpio_leds[1].gpio = IGEP3_GPIO_LED0_GREEN;
> +               igep_gpio_leds[2].gpio = IGEP3_GPIO_LED1_RED;
> +       }
> +
>        if (gpio_request_array(igep_gpio_leds, ARRAY_SIZE(igep_gpio_leds))) {
>                pr_warning("IGEP v2: Could not obtain leds gpios\n");
>                return;
> @@ -386,6 +413,9 @@ static int igep_twl_gpio_setup(struct device *dev,
>        igep_gpio_leds[3].gpio = gpio + TWL4030_GPIO_MAX + 1;
>  #endif
>
> +       if (machine_is_igep0030())
> +               return 0;
> +
>        /*
>         * REVISIT: need ehci-omap hooks for external VBUS
>         * power switch and overcurrent detect
> @@ -548,18 +578,20 @@ static void __init igep_i2c_init(void)
>  {
>        int ret;
>
> -       /*
> -        * Bus 3 is attached to the DVI port where devices like the pico DLP
> -        * projector don't work reliably with 400kHz
> -        */
> -       ret = omap_register_i2c_bus(3, 100, igep2_i2c3_boardinfo,
> -               ARRAY_SIZE(igep2_i2c3_boardinfo));
> -       if (ret)
> -               pr_warning("IGEP2: Could not register I2C3 bus (%d)\n", ret);
> -
> -       igep_twldata.codec      = &igep2_codec_data;
> -       igep_twldata.keypad     = &igep2_keypad_pdata;
> -       igep_twldata.vpll2      = &igep2_vpll2;
> +       if (machine_is_igep0020()) {
> +               /*
> +                * Bus 3 is attached to the DVI port where devices like the
> +                * pico DLP projector don't work reliably with 400kHz
> +                */
> +               ret = omap_register_i2c_bus(3, 100, igep2_i2c3_boardinfo,
> +                                           ARRAY_SIZE(igep2_i2c3_boardinfo));
> +               if (ret)
> +                       pr_warning("IGEP2: Could not register I2C3 bus 
> (%d)\n", ret);
> +
> +               igep_twldata.codec      = &igep2_codec_data;
> +               igep_twldata.keypad     = &igep2_keypad_pdata;
> +               igep_twldata.vpll2      = &igep2_vpll2;
> +       }
>
>        omap3_pmic_init("twl4030", &igep_twldata);
>  }
> @@ -575,6 +607,17 @@ static const struct usbhs_omap_board_data 
> igep2_usbhs_bdata __initconst = {
>        .reset_gpio_port[2] = -EINVAL,
>  };
>
> +static const struct usbhs_omap_board_data igep3_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] = IGEP3_GPIO_USBH_NRESET,
> +       .reset_gpio_port[2] = -EINVAL,
> +};
> +
>  #ifdef CONFIG_OMAP_MUX
>  static struct omap_board_mux board_mux[] __initdata = {
>        { .reg_offset = OMAP_MUX_TERMINATOR },
> @@ -597,7 +640,7 @@ static void __init igep_wlan_bt_init(void)
>                igep_wlan_bt_gpios[0].gpio = IGEP2_RB_GPIO_WIFI_NPD;
>                igep_wlan_bt_gpios[1].gpio = IGEP2_RB_GPIO_WIFI_NRESET;
>                igep_wlan_bt_gpios[2].gpio = IGEP2_RB_GPIO_BT_NRESET;
> -       } else if (hwrev == IGEP2_BOARD_HWREV_C) {
> +       } else if (hwrev == IGEP2_BOARD_HWREV_C || machine_is_igep0030()) {
>                igep_wlan_bt_gpios[0].gpio = IGEP2_RC_GPIO_WIFI_NPD;
>                igep_wlan_bt_gpios[1].gpio = IGEP2_RC_GPIO_WIFI_NRESET;
>                igep_wlan_bt_gpios[2].gpio = IGEP2_RC_GPIO_BT_NRESET;
> @@ -645,10 +688,14 @@ static void __init igep_init(void)
>         */
>        igep_wlan_bt_init();
>
> -       omap_display_init(&igep2_dss_data);
> -       igep2_display_init();
> -       igep2_init_smsc911x();
> -       usbhs_init(&igep2_usbhs_bdata);
> +       if (machine_is_igep0020()) {
> +               omap_display_init(&igep2_dss_data);
> +               igep2_display_init();
> +               igep2_init_smsc911x();
> +               usbhs_init(&igep2_usbhs_bdata);
> +       } else {
> +               usbhs_init(&igep3_usbhs_bdata);
> +       }
>  }
>
>  MACHINE_START(IGEP0020, "IGEP v2 board")
> @@ -660,3 +707,13 @@ MACHINE_START(IGEP0020, "IGEP v2 board")
>        .init_machine   = igep_init,
>        .timer          = &omap_timer,
>  MACHINE_END
> +
> +MACHINE_START(IGEP0030, "IGEP OMAP3 module")
> +       .boot_params    = 0x80000100,
> +       .reserve        = omap_reserve,
> +       .map_io         = omap3_map_io,
> +       .init_early     = igep_init_early,
> +       .init_irq       = omap_init_irq,
> +       .init_machine   = igep_init,
> +       .timer          = &omap_timer,
> +MACHINE_END
> --
> 1.7.3.1
>
>
Acked-by: Enric Balletbo i Serra <eballe...@iseebcn.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to