diff options
author | kaloz <kaloz@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-02-10 18:55:46 +0000 |
---|---|---|
committer | kaloz <kaloz@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-02-10 18:55:46 +0000 |
commit | 85b39abe7d82d9b6b3ee3c7bc9f9d94fbb65beff (patch) | |
tree | fa7878f563435b7abc90c1947d39d8ba46c20bde /target/linux/ixp4xx/patches-2.6.24/016-dsmg600_auto_power_on.patch | |
parent | 7679574444aac81b080e163e118bb5feac5a400a (diff) |
prepare 2.6.24 on ixp4xx
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@10438 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ixp4xx/patches-2.6.24/016-dsmg600_auto_power_on.patch')
-rw-r--r-- | target/linux/ixp4xx/patches-2.6.24/016-dsmg600_auto_power_on.patch | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/target/linux/ixp4xx/patches-2.6.24/016-dsmg600_auto_power_on.patch b/target/linux/ixp4xx/patches-2.6.24/016-dsmg600_auto_power_on.patch new file mode 100644 index 000000000..2a1f2415f --- /dev/null +++ b/target/linux/ixp4xx/patches-2.6.24/016-dsmg600_auto_power_on.patch @@ -0,0 +1,111 @@ +Upgrade the power and reset button handling for the DSMG600: + * Remove the superfluous declaration of ctrl_alt_del(). + * Convert GPIO and IRQ handling to use the <asm/gpio.h> api. + * Perform 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. + * Remove all superflous constants from dsmg600.h + +Signed-off-by: Rod Whitby <rod@whitby.id.au> + +--- + arch/arm/mach-ixp4xx/dsmg600-power.c | 24 ++++++++++++++---------- + include/asm-arm/arch-ixp4xx/dsmg600.h | 7 +------ + 2 files changed, 15 insertions(+), 16 deletions(-) + +Index: linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/dsmg600-power.c +=================================================================== +--- linux-2.6.23.12-armeb.orig/arch/arm/mach-ixp4xx/dsmg600-power.c 2008-01-11 16:20:26.000000000 +1030 ++++ linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/dsmg600-power.c 2008-01-11 16:20:30.000000000 +1030 +@@ -26,10 +26,9 @@ + #include <linux/jiffies.h> + #include <linux/timer.h> + ++#include <asm/gpio.h> + #include <asm/mach-types.h> + +-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. + */ +@@ -47,9 +46,16 @@ + * state of the power button. + */ + +- if (*IXP4XX_GPIO_GPINR & DSMG600_PB_BM) { ++ if (gpio_get_value(DSMG600_PB_GPIO)) { + + /* IO Pin is 1 (button pushed) */ ++ 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. +@@ -58,11 +64,9 @@ + + /* Change the state of the power LED to "blink" */ + gpio_line_set(DSMG600_LED_PWR_GPIO, IXP4XX_GPIO_LOW); ++ } else { ++ power_button_countdown = PBUTTON_HOLDDOWN_COUNT; + } +- power_button_countdown--; +- +- } else { +- power_button_countdown = PBUTTON_HOLDDOWN_COUNT; + } + + mod_timer(&dsmg600_power_timer, jiffies + msecs_to_jiffies(500)); +@@ -81,12 +85,12 @@ + if (!(machine_is_dsmg600())) + return 0; + +- if (request_irq(DSMG600_RB_IRQ, &dsmg600_reset_handler, ++ if (request_irq(gpio_to_irq(DSMG600_RB_GPIO), &dsmg600_reset_handler, + IRQF_DISABLED | IRQF_TRIGGER_LOW, "DSM-G600 reset button", + NULL) < 0) { + + printk(KERN_DEBUG "Reset Button IRQ %d not available\n", +- DSMG600_RB_IRQ); ++ gpio_to_irq(DSMG600_RB_GPIO)); + + return -EIO; + } +@@ -114,7 +118,7 @@ + + del_timer_sync(&dsmg600_power_timer); + +- free_irq(DSMG600_RB_IRQ, NULL); ++ free_irq(gpio_to_irq(DSMG600_RB_GPIO), NULL); + } + + module_init(dsmg600_power_init); +Index: linux-2.6.23.12-armeb/include/asm-arm/arch-ixp4xx/dsmg600.h +=================================================================== +--- linux-2.6.23.12-armeb.orig/include/asm-arm/arch-ixp4xx/dsmg600.h 2008-01-11 16:20:26.000000000 +1030 ++++ linux-2.6.23.12-armeb/include/asm-arm/arch-ixp4xx/dsmg600.h 2008-01-11 16:20:30.000000000 +1030 +@@ -40,18 +40,13 @@ + /* Buttons */ + + #define DSMG600_PB_GPIO 15 /* power button */ +-#define DSMG600_PB_BM (1L << DSMG600_PB_GPIO) +- + #define DSMG600_RB_GPIO 3 /* reset button */ + +-#define DSMG600_RB_IRQ IRQ_IXP4XX_GPIO3 ++/* Power control */ + + #define DSMG600_PO_GPIO 2 /* power off */ + + /* LEDs */ + + #define DSMG600_LED_PWR_GPIO 0 +-#define DSMG600_LED_PWR_BM (1L << DSMG600_LED_PWR_GPIO) +- + #define DSMG600_LED_WLAN_GPIO 14 +-#define DSMG600_LED_WLAN_BM (1L << DSMG600_LED_WLAN_GPIO) |