diff mbox

[v7] OMAP3: beagle: add support for beagleboard xM revision C

Message ID 8FFAA0BFC4E5374B8F85F65FE1F2BFA5C62252EF@dlee02.ent.ti.com (mailing list archive)
State Accepted, archived
Delegated to: Tony Lindgren
Headers show

Commit Message

Fernandes, Joel A June 7, 2011, 8:54 p.m. UTC
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 <joelagnel@ti.com>
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
---
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Kridner, Jason June 7, 2011, 10:26 p.m. UTC | #1
> -----Original Message-----
> From: Fernandes, Joel A
> Sent: Tuesday, June 07, 2011 4:55 PM
> To: linux-omap@vger.kernel.org
> Cc: Kridner, Jason; Kooi, Koen; beagleboard@googlegroups.com
> 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 <joelagnel@ti.com>
> Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>

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 majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tony Lindgren June 14, 2011, 10:37 a.m. UTC | #2
* Kridner, Jason <jdk@ti.com> [110607 15:22]:
> > -----Original Message-----
> > From: Fernandes, Joel A
> > Sent: Tuesday, June 07, 2011 4:55 PM
> > To: linux-omap@vger.kernel.org
> > Cc: Kridner, Jason; Kooi, Koen; beagleboard@googlegroups.com
> > 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 <joelagnel@ti.com>
> > Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
> 
> Hope this isn't considered noise, but...
> 
> Ack.

Thanks, adding Acked-by: Jason Kridner <jkridner@beagleboard.org>
and adding this patch to devel-board branch for next merge window.

Jason, can you please reply with proper Acked-by next time?
This way patchwork.kernel.org will automatically add the acks
to the patch.

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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);