From 85c0074e097432263d4ad5bba44b9026aa7bda4b Mon Sep 17 00:00:00 2001 From: David Brownell Date: Mon, 6 Oct 2008 13:17:35 -0700 Subject: [PATCH] beagle: two more GPIOs Request two more GPIOs on Beagle: MMC write protect, DVI enable. Also define the first OMAP3 GPIO mux config symbols, with a new naming convention. Examples: - GPIO42 is bidirectional, and uses external pull up/down (if any); - GPIO42_UP is bidirectional, with an internal pullup; - GPIO42_DOWN is bidirectional, with an internal pulldown. - GPIO42_OUT is output-only, and needs no pullup or pulldown. All of those would be fully functional through the standard GPIO interface as well as the legacy OMAP-only one, except GPIO42_OUT which won't let you read the actual pin value after setting it. There's no special off-mode support for these particular pins; on Beagle they have external pullups or pulldowns. (OMAP2 can use this naming convention too, except that since it has no input-enable the "_OUT" convention can't be used there.) Signed-off-by: David Brownell Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/board-omap3beagle.c | 11 +++++++++++ arch/arm/mach-omap2/mux.c | 8 ++++++++ arch/arm/plat-omap/include/mach/mux.h | 8 ++++++++ 3 files changed, 27 insertions(+) diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 093150c97c0..19702c74955 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c @@ -43,6 +43,7 @@ #include #include #include +#include #define GPMC_CS0_BASE 0x60 @@ -291,7 +292,17 @@ static void __init omap3_beagle_init(void) omap_board_config = omap3_beagle_config; omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); omap_serial_init(); + + omap_cfg_reg(AH8_34XX_GPIO29); + gpio_request(29, "mmc0_wp"); + gpio_direction_input(29); hsmmc_init(); + + omap_cfg_reg(J25_34XX_GPIO170); + gpio_request(170, "DVI_nPD"); + /* REVISIT leave DVI powered down until it's needed ... */ + gpio_direction_output(170, true); + usb_musb_init(); usb_ehci_init(); omap3beagle_flash_init(); diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index 4d4112108d0..ba37764a9e4 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c @@ -416,6 +416,14 @@ MUX_CFG_34XX("AD2_3430_USB3FS_PHY_MM3_TXDAT", 0x188, MUX_CFG_34XX("AC1_3430_USB3FS_PHY_MM3_TXEN_N", 0x18a, OMAP34XX_MUX_MODE6 | OMAP34XX_PIN_OUTPUT) + +/* 34XX GPIO - bidirectional, unless the name has an "_OUT" suffix. + * No internal pullup/pulldown without "_UP" or "_DOWN" suffix. + */ +MUX_CFG_34XX("AH8_34XX_GPIO29", 0x5fa, + OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT) +MUX_CFG_34XX("J25_34XX_GPIO170", 0x1c6, + OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT) }; #define OMAP34XX_PINS_SZ ARRAY_SIZE(omap34xx_pins) diff --git a/arch/arm/plat-omap/include/mach/mux.h b/arch/arm/plat-omap/include/mach/mux.h index 6bbf1789bed..360840b03ff 100644 --- a/arch/arm/plat-omap/include/mach/mux.h +++ b/arch/arm/plat-omap/include/mach/mux.h @@ -749,6 +749,14 @@ enum omap34xx_index { AD2_3430_USB3FS_PHY_MM3_TXDAT, AC1_3430_USB3FS_PHY_MM3_TXEN_N, + /* 34xx GPIO + * - normally these are bidirectional, no internal pullup/pulldown + * - "_UP" suffix (GPIO3_UP) if internal pullup is configured + * - "_DOWN" suffix (GPIO3_DOWN) with internal pulldown + * - "_OUT" suffix (GPIO3_OUT) for output-only pins (unlike 24xx) + */ + AH8_34XX_GPIO29, + J25_34XX_GPIO170, }; struct omap_mux_cfg { -- 2.41.0