Add gpio support to the BCM947xx platform
Same as the previous patch, submitting it now as I don't want to miss the 2.6.24 merge window.
Add GPIO support to the BCM947xx platform. It will be used by a GPIO LED driver.
Signed-off-by Aurelien Jarno <[email protected]>
arch/mips/bcm947xx/gpio.c +79 -0
@@ -0,0 +1,79 @@ +/* +* This file is subject to the terms and conditions of the GNU General Public +* License. See the file "COPYING" in the main directory of this archive +* for more details. +* +* Copyright (C) 2007 Aurelien Jarno <[email protected]> +*/ + +#include <linux/ssb/ssb.h> +#include <linux/ssb/ssb_driver_chipcommon.h> +#include <linux/ssb/ssb_driver_extif.h> +#include <asm/mach-bcm947xx/bcm947xx.h> +#include <asm/mach-bcm947xx/gpio.h> + +int bcm947xx_gpio_to_irq (unsigned gpio) +{ +if (ssb_bcm947xx.chipco.dev) +return ssb_mips_irq (ssb_bcm947xx.chipco.dev) +2 ; +else if (ssb_bcm947xx.extif.dev) +return ssb_mips_irq (ssb_bcm947xx.extif.dev) +2 ; +else +return -EINVAL ; +} +EXPORT_SYMBOL (bcm947xx_gpio_to_irq); + +int bcm947xx_gpio_get_value (unsigned gpio) +{ +if (ssb_bcm947xx.chipco.dev) +return ssb_chipco_gpio_in (&ssb_bcm947xx.chipco,1 << gpio); +else if (ssb_bcm947xx.extif.dev) +return ssb_extif_gpio_in (&ssb_bcm947xx.extif,1 << gpio); +else +return 0 ; +} +EXPORT_SYMBOL (bcm947xx_gpio_get_value); + +void bcm947xx_gpio_set_value (unsigned gpio,int value) +{ +if (ssb_bcm947xx.chipco.dev) +ssb_chipco_gpio_out (&ssb_bcm947xx.chipco, +1 << gpio, + value ?1 << gpio :0 ); +else if (ssb_bcm947xx.extif.dev) +ssb_extif_gpio_out (&ssb_bcm947xx.extif, +1 << gpio, + value ?1 << gpio :0 ); +} +EXPORT_SYMBOL (bcm947xx_gpio_set_value); + +int bcm947xx_gpio_direction_input (unsigned gpio) +{ +if (ssb_bcm947xx.chipco.dev && (gpio <BCM947XX_CHIPCO_GPIO_LINES )) +ssb_chipco_gpio_outen (&ssb_bcm947xx.chipco, +1 << gpio,0 ); +else if (ssb_bcm947xx.extif.dev && (gpio <BCM947XX_EXTIF_GPIO_LINES )) +ssb_extif_gpio_outen (&ssb_bcm947xx.extif, +1 << gpio,0 ); +else +return -EINVAL ; +return 0 ; +} +EXPORT_SYMBOL (bcm947xx_gpio_direction_input); + +int bcm947xx_gpio_direction_output (unsigned gpio,int value) +{ +bcm947xx_gpio_set_value (gpio, value); + +if (ssb_bcm947xx.chipco.dev && (gpio <BCM947XX_CHIPCO_GPIO_LINES )) +ssb_chipco_gpio_outen (&ssb_bcm947xx.chipco, +1 << gpio,1 << gpio); +else if (ssb_bcm947xx.extif.dev && (gpio <BCM947XX_EXTIF_GPIO_LINES )) +ssb_extif_gpio_outen (&ssb_bcm947xx.extif, +1 << gpio,1 << gpio); +else +return -EINVAL ; +return 0 ; +} +EXPORT_SYMBOL (bcm947xx_gpio_direction_output); +
arch/mips/bcm947xx/Makefile +1 -1
@@ -3,4 +3,4 @@ # under Linux. # -obj-y := irq.o prom.o serial.o setup.o time.o +obj-y := gpio.o irq.o prom.o serial.o setup.o time.o
include/asm-mips/mach-bcm947xx/gpio.h +59 -0
59 lines not on this page · raw message
Signature · 4 lines
.''`. Aurelien Jarno | GPG: 1024D/F1BCDB73 : :' : Debian developer | Electrical Engineer `. `' [email protected] | [email protected] `- people.debian.org/~aurel32 | www.aurel32.net
PATCH 3/3 GPIO LED driver for the WGT634U machine
Add LED support to the WGT634U machine. It uses the new gpio-led driver and a platform driver for the pin definitions.
Signed-off-by Aurelien Jarno <[email protected]>
arch/mips/bcm947xx/Makefile +1 -1
@@ -3,4 +3,4 @@ # under Linux. # -obj-y := gpio.o irq.o prom.o serial.o setup.o time.o +obj-y := gpio.o irq.o prom.o serial.o setup.o time.o wgt634u.o
mips/bcm947xx/wgt634u.c +64 -0
64 lines not on this page · raw message
Signature · 4 lines
.''`. Aurelien Jarno | GPG: 1024D/F1BCDB73 : :' : Debian developer | Electrical Engineer `. `' [email protected] | [email protected] `- people.debian.org/~aurel32 | www.aurel32.net