ixp4xx: Updated patches to include all upstream-merged ixp4xx patches
[openwrt/svn-archive/archive.git] / target / linux / ixp4xx / patches-2.6.24 / 017-nas100d_auto_power_on.patch
index b77df4850b6c610ac11f50a25c1d2cf7e144b6b3..1be3bb7004812bc08a1906d09b8eeb583e16bc50 100644 (file)
@@ -1,20 +1,28 @@
-Upgrade the power and reset button handling for the NAS100D:
+From 6261e59795d861f21f63878944900a3da713348c Mon Sep 17 00:00:00 2001
+From: Rod Whitby <rod@whitby.id.au>
+Date: Tue, 29 Jan 2008 09:53:46 +1030
+Subject: ixp4xx: Button and LED updates for the nas100d board (Patch #4768)
+
  * Convert GPIO and IRQ handling to use the <asm/gpio.h> api.
  * Perform the reset only after the power button has been held down
    for at least two seconds.  Do the reset on the release of the power
    button, so that NAS devices which have been set to auto-power-on (by
-   bridging the power button) do not continuously power cycle.
+   solder bridging the power button) do not continuously power cycle.
  * Remove all superflous constants from nas100d.h
  * Add LED constants to nas100d.h while we're there.
-Also, update the board LED setup code to use constants.
+ * Update the board LED setup code to use those constants.
 
 Signed-off-by: Rod Whitby <rod@whitby.id.au>
+Acked-by: Lennert Buytenhek <buytenh@wantstofly.org>
+
+PATCH FOLLOWS
+KernelVersion: 2.6.24-git5
 
-Index: linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-power.c
-===================================================================
---- linux-2.6.23.12-armeb.orig/arch/arm/mach-ixp4xx/nas100d-power.c    2008-01-11 16:59:20.000000000 +1030
-+++ linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-power.c 2008-01-11 17:03:23.000000000 +1030
-@@ -21,15 +21,61 @@
+diff --git a/arch/arm/mach-ixp4xx/nas100d-power.c b/arch/arm/mach-ixp4xx/nas100d-power.c
+index 29aa98d..4c1c01b 100644
+--- a/arch/arm/mach-ixp4xx/nas100d-power.c
++++ b/arch/arm/mach-ixp4xx/nas100d-power.c
+@@ -21,15 +21,59 @@
  #include <linux/irq.h>
  #include <linux/module.h>
  #include <linux/reboot.h>
@@ -25,12 +33,10 @@ Index: linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-power.c
  #include <asm/mach-types.h>
  
 -static irqreturn_t nas100d_reset_handler(int irq, void *dev_id)
-+extern void ctrl_alt_del(void);
-+
 +/* This is used to make sure the power-button pusher is serious.  The button
 + * must be held until the value of this counter reaches zero.
 + */
-+static volatile int power_button_countdown;
++static int power_button_countdown;
 +
 +/* Must hold the button down for at least this many counts to be processed */
 +#define PBUTTON_HOLDDOWN_COUNT 4 /* 2 secs */
@@ -50,16 +56,16 @@ Index: linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-power.c
 +      if (gpio_get_value(NAS100D_PB_GPIO)) {
 +
 +              /* IO Pin is 1 (button pushed) */
-+              if (power_button_countdown > 0) {
++              if (power_button_countdown > 0)
 +                      power_button_countdown--;
-+              }
 +
 +      } else {
 +
 +              /* Done on button release, to allow for auto-power-on mods. */
 +              if (power_button_countdown == 0) {
-+                      /* Signal init to do the ctrlaltdel action, this will bypass
-+                       * init if it hasn't started and do a kernel_restart.
++                      /* Signal init to do the ctrlaltdel action,
++                       * this will bypass init if it hasn't started
++                       * and do a kernel_restart.
 +                       */
 +                      ctrl_alt_del();
 +
@@ -80,7 +86,7 @@ Index: linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-power.c
  
        return IRQ_HANDLED;
  }
-@@ -39,17 +85,30 @@
+@@ -39,17 +83,30 @@ static int __init nas100d_power_init(void)
        if (!(machine_is_nas100d()))
                return 0;
  
@@ -114,7 +120,7 @@ Index: linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-power.c
        return 0;
  }
  
-@@ -58,7 +117,9 @@
+@@ -58,7 +115,9 @@ static void __exit nas100d_power_exit(void)
        if (!(machine_is_nas100d()))
                return;
  
@@ -125,40 +131,11 @@ Index: linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-power.c
  }
  
  module_init(nas100d_power_init);
-Index: linux-2.6.23.12-armeb/include/asm-arm/arch-ixp4xx/nas100d.h
-===================================================================
---- linux-2.6.23.12-armeb.orig/include/asm-arm/arch-ixp4xx/nas100d.h   2008-01-11 16:59:20.000000000 +1030
-+++ linux-2.6.23.12-armeb/include/asm-arm/arch-ixp4xx/nas100d.h        2008-01-11 17:03:23.000000000 +1030
-@@ -38,15 +38,15 @@
- /* Buttons */
--#define NAS100D_PB_GPIO         14
--#define NAS100D_RB_GPIO         4
-+#define NAS100D_PB_GPIO         14   /* power button */
-+#define NAS100D_RB_GPIO         4    /* reset button */
-+
-+/* Power control */
-+
- #define NAS100D_PO_GPIO         12   /* power off */
--#define NAS100D_PB_IRQ          IRQ_IXP4XX_GPIO14
--#define NAS100D_RB_IRQ          IRQ_IXP4XX_GPIO4
-+/* LEDs */
--/*
--#define NAS100D_PB_BM           (1L << NAS100D_PB_GPIO)
--#define NAS100D_PO_BM           (1L << NAS100D_PO_GPIO)
--#define NAS100D_RB_BM           (1L << NAS100D_RB_GPIO)
--*/
-+#define NAS100D_LED_WLAN_GPIO 0
-+#define NAS100D_LED_DISK_GPIO 3
-+#define NAS100D_LED_PWR_GPIO  15
-Index: linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-setup.c
-===================================================================
---- linux-2.6.23.12-armeb.orig/arch/arm/mach-ixp4xx/nas100d-setup.c    2008-01-11 17:03:23.000000000 +1030
-+++ linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-setup.c 2008-01-11 17:06:15.000000000 +1030
-@@ -44,20 +44,20 @@
+diff --git a/arch/arm/mach-ixp4xx/nas100d-setup.c b/arch/arm/mach-ixp4xx/nas100d-setup.c
+index 54d884f..213a4ce 100644
+--- a/arch/arm/mach-ixp4xx/nas100d-setup.c
++++ b/arch/arm/mach-ixp4xx/nas100d-setup.c
+@@ -43,20 +43,20 @@ static struct platform_device nas100d_flash = {
  static struct resource nas100d_led_resources[] = {
        {
                .name           = "wlan",   /* green led */
@@ -172,7 +149,7 @@ Index: linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-setup.c
 -              .name           = "ready",  /* blue power led (off is flashing!) */
 -              .start          = 15,
 -              .end            = 15,
-+              .name           = "power",  /* blue power led (off is flashing!) */
++              .name           = "power",  /* blue power led (off=flashing) */
 +              .start          = NAS100D_LED_PWR_GPIO,
 +              .end            = NAS100D_LED_PWR_GPIO,
                .flags          = IXP4XX_GPIO_LOW,
@@ -186,3 +163,35 @@ Index: linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-setup.c
                .flags          = IXP4XX_GPIO_LOW,
        },
  };
+diff --git a/include/asm-arm/arch-ixp4xx/nas100d.h b/include/asm-arm/arch-ixp4xx/nas100d.h
+index 131e0a1..98d9378 100644
+--- a/include/asm-arm/arch-ixp4xx/nas100d.h
++++ b/include/asm-arm/arch-ixp4xx/nas100d.h
+@@ -38,15 +38,15 @@
+ /* Buttons */
+-#define NAS100D_PB_GPIO         14
+-#define NAS100D_RB_GPIO         4
++#define NAS100D_PB_GPIO         14   /* power button */
++#define NAS100D_RB_GPIO         4    /* reset button */
++
++/* Power control */
++
+ #define NAS100D_PO_GPIO         12   /* power off */
+-#define NAS100D_PB_IRQ          IRQ_IXP4XX_GPIO14
+-#define NAS100D_RB_IRQ          IRQ_IXP4XX_GPIO4
++/* LEDs */
+-/*
+-#define NAS100D_PB_BM           (1L << NAS100D_PB_GPIO)
+-#define NAS100D_PO_BM           (1L << NAS100D_PO_GPIO)
+-#define NAS100D_RB_BM           (1L << NAS100D_RB_GPIO)
+-*/
++#define NAS100D_LED_WLAN_GPIO 0
++#define NAS100D_LED_DISK_GPIO 3
++#define NAS100D_LED_PWR_GPIO  15
+-- 
+1.5.2.5
+