> -----Original Message-----
> From: Fernandes, Joel A
> Sent: Tuesday, June 07, 2011 4:55 PM
> To: [email protected]
> Cc: Kridner, Jason; Kooi, Koen; [email protected]
> Subject: [PATCH v7] OMAP3: beagle: add support for beagleboard xM
> revision C
> 
> OMAP3: beagle: add support for beagleboard xM revision C
> 
> The USB enable GPIO has been in beagleboard xM revision C.
> The USER button has been moved since beagleboard xM.
> Also, board specific initialization has been moved to beagle_config
> struct
> and initialized in omap3_beagle_init_rev. Default values in struct are
> for xMC.
> 
> Signed-off-by: Joel A Fernandes <[email protected]>
> Signed-off-by: Koen Kooi <[email protected]>

Hope this isn't considered noise, but...

Ack.

> ---
> diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-
> omap2/board-omap3beagle.c
> index 7f21d24..4b113b2 100644
> --- a/arch/arm/mach-omap2/board-omap3beagle.c
> +++ b/arch/arm/mach-omap2/board-omap3beagle.c
> @@ -61,7 +61,8 @@
>   *   AXBX    = GPIO173, GPIO172, GPIO171: 1 1 1
>   *   C1_3    = GPIO173, GPIO172, GPIO171: 1 1 0
>   *   C4      = GPIO173, GPIO172, GPIO171: 1 0 1
> - *   XM      = GPIO173, GPIO172, GPIO171: 0 0 0
> + *   XMA/XMB = GPIO173, GPIO172, GPIO171: 0 0 0
> + *   XMC = GPIO173, GPIO172, GPIO171: 0 1 0
>   */
>  enum {
>       OMAP3BEAGLE_BOARD_UNKN = 0,
> @@ -69,14 +70,26 @@ enum {
>       OMAP3BEAGLE_BOARD_C1_3,
>       OMAP3BEAGLE_BOARD_C4,
>       OMAP3BEAGLE_BOARD_XM,
> +     OMAP3BEAGLE_BOARD_XMC,
>  };
> 
>  static u8 omap3_beagle_version;
> 
> -static u8 omap3_beagle_get_rev(void)
> -{
> -     return omap3_beagle_version;
> -}
> +/*
> + * Board-specific configuration
> + * Defaults to BeagleBoard-xMC
> + */
> +static struct {
> +     int mmc1_gpio_wp;
> +     int usb_pwr_level;
> +     int reset_gpio;
> +     int usr_button_gpio;
> +} beagle_config = {
> +     .mmc1_gpio_wp = -EINVAL,
> +     .usb_pwr_level = GPIOF_OUT_INIT_LOW,
> +     .reset_gpio = 129,
> +     .usr_button_gpio = 4,
> +};
> 
>  static struct gpio omap3_beagle_rev_gpios[] __initdata = {
>       { 171, GPIOF_IN, "rev_id_0"    },
> @@ -111,18 +124,32 @@ static void __init omap3_beagle_init_rev(void)
>       case 7:
>               printk(KERN_INFO "OMAP3 Beagle Rev: Ax/Bx\n");
>               omap3_beagle_version = OMAP3BEAGLE_BOARD_AXBX;
> +             beagle_config.mmc1_gpio_wp = 29;
> +             beagle_config.reset_gpio = 170;
> +             beagle_config.usr_button_gpio = 7;
>               break;
>       case 6:
>               printk(KERN_INFO "OMAP3 Beagle Rev: C1/C2/C3\n");
>               omap3_beagle_version = OMAP3BEAGLE_BOARD_C1_3;
> +             beagle_config.mmc1_gpio_wp = 23;
> +             beagle_config.reset_gpio = 170;
> +             beagle_config.usr_button_gpio = 7;
>               break;
>       case 5:
>               printk(KERN_INFO "OMAP3 Beagle Rev: C4\n");
>               omap3_beagle_version = OMAP3BEAGLE_BOARD_C4;
> +             beagle_config.mmc1_gpio_wp = 23;
> +             beagle_config.reset_gpio = 170;
> +             beagle_config.usr_button_gpio = 7;
>               break;
>       case 0:
> -             printk(KERN_INFO "OMAP3 Beagle Rev: xM\n");
> +             printk(KERN_INFO "OMAP3 Beagle Rev: xM Ax/Bx\n");
>               omap3_beagle_version = OMAP3BEAGLE_BOARD_XM;
> +             beagle_config.usb_pwr_level = GPIOF_OUT_INIT_HIGH;
> +             break;
> +     case 2:
> +             printk(KERN_INFO "OMAP3 Beagle Rev: xM C\n");
> +             omap3_beagle_version = OMAP3BEAGLE_BOARD_XMC;
>               break;
>       default:
>               printk(KERN_INFO "OMAP3 Beagle Rev: unknown %hd\n",
> beagle_rev);
> @@ -234,7 +261,7 @@ static struct omap2_hsmmc_info mmc[] = {
>       {
>               .mmc            = 1,
>               .caps           = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
> -             .gpio_wp        = 29,
> +             .gpio_wp        = -EINVAL,
>       },
>       {}      /* Terminator */
>  };
> @@ -252,17 +279,11 @@ static struct gpio_led gpio_leds[];
>  static int beagle_twl_gpio_setup(struct device *dev,
>               unsigned gpio, unsigned ngpio)
>  {
> -     int r, usb_pwr_level;
> -
> -     if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
> -             mmc[0].gpio_wp = -EINVAL;
> -     } else if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3)
> ||
> -             (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C4)) {
> -             omap_mux_init_gpio(23, OMAP_PIN_INPUT);
> -             mmc[0].gpio_wp = 23;
> -     } else {
> -             omap_mux_init_gpio(29, OMAP_PIN_INPUT);
> -     }
> +     int r;
> +
> +     if (beagle_config.mmc1_gpio_wp != -EINVAL)
> +             omap_mux_init_gpio(beagle_config.mmc1_gpio_wp,
> OMAP_PIN_INPUT);
> +     mmc[0].gpio_wp = beagle_config.mmc1_gpio_wp;
>       /* gpio + 0 is "mmc0_cd" (input/IRQ) */
>       mmc[0].gpio_cd = gpio + 0;
>       omap2_hsmmc_init(mmc);
> @@ -276,9 +297,8 @@ static int beagle_twl_gpio_setup(struct device *dev,
>        * high / others active low)
>        * DVI reset GPIO is different between beagle revisions
>        */
> -     if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
> -             usb_pwr_level = GPIOF_OUT_INIT_HIGH;
> -             beagle_dvi_device.reset_gpio = 129;
> +     /* Valid for all -xM revisions */
> +     if (cpu_is_omap3630()) {
>               /*
>                * gpio + 1 on Xm controls the TFP410's enable line
> (active low)
>                * gpio + 2 control varies depending on the board rev as
> below:
> @@ -296,8 +316,6 @@ static int beagle_twl_gpio_setup(struct device *dev,
>                       pr_err("%s: unable to configure DVI_LDO_EN\n",
>                               __func__);
>       } else {
> -             usb_pwr_level = GPIOF_OUT_INIT_LOW;
> -             beagle_dvi_device.reset_gpio = 170;
>               /*
>                * REVISIT: need ehci-omap hooks for external VBUS
>                * power switch and overcurrent detect
> @@ -305,8 +323,10 @@ static int beagle_twl_gpio_setup(struct device
> *dev,
>               if (gpio_request_one(gpio + 1, GPIOF_IN, "EHCI_nOC"))
>                       pr_err("%s: unable to configure EHCI_nOC\n",
> __func__);
>       }
> +     beagle_dvi_device.reset_gpio = beagle_config.reset_gpio;
> 
> -     gpio_request_one(gpio + TWL4030_GPIO_MAX, usb_pwr_level,
> "nEN_USB_PWR");
> +     gpio_request_one(gpio + TWL4030_GPIO_MAX,
> beagle_config.usb_pwr_level,
> +                     "nEN_USB_PWR");
> 
>       /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED)
> */
>       gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
> @@ -458,7 +478,8 @@ static struct platform_device leds_gpio = {
>  static struct gpio_keys_button gpio_buttons[] = {
>       {
>               .code                   = BTN_EXTRA,
> -             .gpio                   = 7,
> +             /* Dynamically assigned depending on board */
> +             .gpio                   = -EINVAL,
>               .desc                   = "user",
>               .wakeup                 = 1,
>       },
> @@ -525,8 +546,8 @@ static void __init beagle_opp_init(void)
>               return;
>       }
> 
> -     /* Custom OPP enabled for XM */
> -     if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
> +     /* Custom OPP enabled for all xM versions */
> +     if (cpu_is_omap3630()) {
>               struct omap_hwmod *mh = omap_hwmod_lookup("mpu");
>               struct omap_hwmod *dh = omap_hwmod_lookup("iva");
>               struct device *dev;
> @@ -566,6 +587,9 @@ static void __init omap3_beagle_init(void)
>       omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
>       omap3_beagle_init_rev();
>       omap3_beagle_i2c_init();
> +
> +     gpio_buttons[0].gpio = beagle_config.usr_button_gpio;
> +
>       platform_add_devices(omap3_beagle_devices,
>                       ARRAY_SIZE(omap3_beagle_devices));
>       omap_display_init(&beagle_dss_data);
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to