Ver código fonte

[ARM] pxa: allow gpio_reset drive high during normal work

I want to reuse tosa/spitz gpio_reset code, but my board needs the reset
gpio to be driven high during normal operation.

Signed-off-by: Daniel Ribeiro <drwyrm@gmail.com>
Acked-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Daniel Ribeiro 16 anos atrás
pai
commit
216e3b7abb

+ 3 - 2
arch/arm/mach-pxa/include/mach/reset.h

@@ -13,8 +13,9 @@ extern void clear_reset_status(unsigned int mask);
 /**
 /**
  * init_gpio_reset() - register GPIO as reset generator
  * init_gpio_reset() - register GPIO as reset generator
  * @gpio: gpio nr
  * @gpio: gpio nr
- * @output: set gpio as out/low instead of input during normal work
+ * @output: set gpio as output instead of input during normal work
+ * @level: output level
  */
  */
-extern int init_gpio_reset(int gpio, int output);
+extern int init_gpio_reset(int gpio, int output, int level);
 
 
 #endif /* __ASM_ARCH_RESET_H */
 #endif /* __ASM_ARCH_RESET_H */

+ 2 - 2
arch/arm/mach-pxa/reset.c

@@ -20,7 +20,7 @@ static void do_hw_reset(void);
 
 
 static int reset_gpio = -1;
 static int reset_gpio = -1;
 
 
-int init_gpio_reset(int gpio, int output)
+int init_gpio_reset(int gpio, int output, int level)
 {
 {
 	int rc;
 	int rc;
 
 
@@ -31,7 +31,7 @@ int init_gpio_reset(int gpio, int output)
 	}
 	}
 
 
 	if (output)
 	if (output)
-		rc = gpio_direction_output(gpio, 0);
+		rc = gpio_direction_output(gpio, level);
 	else
 	else
 		rc = gpio_direction_input(gpio);
 		rc = gpio_direction_input(gpio);
 	if (rc) {
 	if (rc) {

+ 1 - 1
arch/arm/mach-pxa/spitz.c

@@ -731,7 +731,7 @@ static void spitz_restart(char mode, const char *cmd)
 
 
 static void __init common_init(void)
 static void __init common_init(void)
 {
 {
-	init_gpio_reset(SPITZ_GPIO_ON_RESET, 1);
+	init_gpio_reset(SPITZ_GPIO_ON_RESET, 1, 0);
 	pm_power_off = spitz_poweroff;
 	pm_power_off = spitz_poweroff;
 	arm_pm_restart = spitz_restart;
 	arm_pm_restart = spitz_restart;
 
 

+ 1 - 1
arch/arm/mach-pxa/tosa.c

@@ -897,7 +897,7 @@ static void __init tosa_init(void)
 	gpio_set_wake(MFP_PIN_GPIO1, 1);
 	gpio_set_wake(MFP_PIN_GPIO1, 1);
 	/* We can't pass to gpio-keys since it will drop the Reset altfunc */
 	/* We can't pass to gpio-keys since it will drop the Reset altfunc */
 
 
-	init_gpio_reset(TOSA_GPIO_ON_RESET, 0);
+	init_gpio_reset(TOSA_GPIO_ON_RESET, 0, 0);
 
 
 	pm_power_off = tosa_poweroff;
 	pm_power_off = tosa_poweroff;
 	arm_pm_restart = tosa_restart;
 	arm_pm_restart = tosa_restart;