فهرست منبع

omap: Fix MMC gpio_wp for BeagleBoard C2 and above

Earlier BeagleBoards were using pad AH8 muxed to GPIO29 for MMC write-protect.
However, this signal has been changed to pad AG9 in board revision C2.

Fix this by adding mux configuration for pad AG9, runtime check for board
revisions and set the gpio number and pad muxing accordingly.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Jarkko Nikula 15 سال پیش
والد
کامیت
44e74840d6
3فایلهای تغییر یافته به همراه9 افزوده شده و 1 حذف شده
  1. 6 1
      arch/arm/mach-omap2/board-omap3beagle.c
  2. 2 0
      arch/arm/mach-omap2/mux.c
  3. 1 0
      arch/arm/plat-omap/include/mach/mux.h

+ 6 - 1
arch/arm/mach-omap2/board-omap3beagle.c

@@ -139,8 +139,13 @@ static struct gpio_led gpio_leds[];
 static int beagle_twl_gpio_setup(struct device *dev,
 static int beagle_twl_gpio_setup(struct device *dev,
 		unsigned gpio, unsigned ngpio)
 		unsigned gpio, unsigned ngpio)
 {
 {
+	if (system_rev >= 0x20 && system_rev <= 0x34301000) {
+		omap_cfg_reg(AG9_34XX_GPIO23);
+		mmc[0].gpio_wp = 23;
+	} else {
+		omap_cfg_reg(AH8_34XX_GPIO29);
+	}
 	/* gpio + 0 is "mmc0_cd" (input/IRQ) */
 	/* gpio + 0 is "mmc0_cd" (input/IRQ) */
-	omap_cfg_reg(AH8_34XX_GPIO29);
 	mmc[0].gpio_cd = gpio + 0;
 	mmc[0].gpio_cd = gpio + 0;
 	twl4030_mmc_init(mmc);
 	twl4030_mmc_init(mmc);
 
 

+ 2 - 0
arch/arm/mach-omap2/mux.c

@@ -460,6 +460,8 @@ MUX_CFG_34XX("AF26_34XX_GPIO0", 0x1e0,
 		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
 		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
 MUX_CFG_34XX("AF22_34XX_GPIO9", 0xa18,
 MUX_CFG_34XX("AF22_34XX_GPIO9", 0xa18,
 		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
 		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
+MUX_CFG_34XX("AG9_34XX_GPIO23", 0x5ee,
+		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
 MUX_CFG_34XX("AH8_34XX_GPIO29", 0x5fa,
 MUX_CFG_34XX("AH8_34XX_GPIO29", 0x5fa,
 		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
 		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
 MUX_CFG_34XX("U8_34XX_GPIO54_OUT", 0x0b4,
 MUX_CFG_34XX("U8_34XX_GPIO54_OUT", 0x0b4,

+ 1 - 0
arch/arm/plat-omap/include/mach/mux.h

@@ -840,6 +840,7 @@ enum omap34xx_index {
 	 */
 	 */
 	AF26_34XX_GPIO0,
 	AF26_34XX_GPIO0,
 	AF22_34XX_GPIO9,
 	AF22_34XX_GPIO9,
+	AG9_34XX_GPIO23,
 	AH8_34XX_GPIO29,
 	AH8_34XX_GPIO29,
 	U8_34XX_GPIO54_OUT,
 	U8_34XX_GPIO54_OUT,
 	U8_34XX_GPIO54_DOWN,
 	U8_34XX_GPIO54_DOWN,