Changeset 10168


Ignore:
Timestamp:
2008-01-11T08:26:59+01:00 (10 years ago)
Author:
rwhitby
Message:

Refreshed the dsmg600 and nas100d power patches from nslu2-linux

Location:
trunk/target/linux/ixp4xx/patches-2.6.23
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ixp4xx/patches-2.6.23/016-dsmg600_auto_power_on.patch

    r10016 r10168  
     1Upgrade the power and reset button handling for the DSMG600: 
     2 * Remove the superfluous declaration of ctrl_alt_del(). 
     3 * Convert GPIO and IRQ handling to use the <asm/gpio.h> api. 
     4 * Perform the reset on the release of the power button, so that 
     5   NAS devices which have been set to auto-power-on (by bridging 
     6   the power button) do not continuously power cycle. 
     7 * Remove all superflous constants from dsmg600.h 
     8 
     9Signed-off-by: Rod Whitby <rod@whitby.id.au> 
     10 
    111--- 
    2  arch/arm/mach-ixp4xx/dsmg600-power.c |   13 +++++++++---- 
    3  1 file changed, 9 insertions(+), 4 deletions(-) 
     12 arch/arm/mach-ixp4xx/dsmg600-power.c  |   24 ++++++++++++++---------- 
     13 include/asm-arm/arch-ixp4xx/dsmg600.h |    7 +------ 
     14 2 files changed, 15 insertions(+), 16 deletions(-) 
    415 
    5 Index: linux-2.6.22-rc5-armeb/arch/arm/mach-ixp4xx/dsmg600-power.c 
     16Index: linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/dsmg600-power.c 
    617=================================================================== 
    7 --- linux-2.6.22-rc5-armeb.orig/arch/arm/mach-ixp4xx/dsmg600-power.c 
    8 +++ linux-2.6.22-rc5-armeb/arch/arm/mach-ixp4xx/dsmg600-power.c 
    9 @@ -50,6 +50,13 @@ 
    10         if (*IXP4XX_GPIO_GPINR & DSMG600_PB_BM) { 
     18--- linux-2.6.23.12-armeb.orig/arch/arm/mach-ixp4xx/dsmg600-power.c     2008-01-11 16:20:26.000000000 +1030 
     19+++ linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/dsmg600-power.c  2008-01-11 16:20:30.000000000 +1030 
     20@@ -26,10 +26,9 @@ 
     21 #include <linux/jiffies.h> 
     22 #include <linux/timer.h> 
     23  
     24+#include <asm/gpio.h> 
     25 #include <asm/mach-types.h> 
     26  
     27-extern void ctrl_alt_del(void); 
     28- 
     29 /* This is used to make sure the power-button pusher is serious.  The button 
     30  * must be held until the value of this counter reaches zero. 
     31  */ 
     32@@ -47,9 +46,16 @@ 
     33         * state of the power button. 
     34         */ 
     35  
     36-       if (*IXP4XX_GPIO_GPINR & DSMG600_PB_BM) { 
     37+       if (gpio_get_value(DSMG600_PB_GPIO)) { 
    1138  
    1239                /* IO Pin is 1 (button pushed) */ 
     
    2148                        /* Signal init to do the ctrlaltdel action, this will bypass 
    2249                         * init if it hasn't started and do a kernel_restart. 
    23 @@ -58,11 +65,9 @@ 
     50@@ -58,11 +64,9 @@ 
    2451  
    2552                        /* Change the state of the power LED to "blink" */ 
     
    3562  
    3663        mod_timer(&dsmg600_power_timer, jiffies + msecs_to_jiffies(500)); 
     64@@ -81,12 +85,12 @@ 
     65        if (!(machine_is_dsmg600())) 
     66                return 0; 
     67  
     68-       if (request_irq(DSMG600_RB_IRQ, &dsmg600_reset_handler, 
     69+       if (request_irq(gpio_to_irq(DSMG600_RB_GPIO), &dsmg600_reset_handler, 
     70                IRQF_DISABLED | IRQF_TRIGGER_LOW, "DSM-G600 reset button", 
     71                NULL) < 0) { 
     72  
     73                printk(KERN_DEBUG "Reset Button IRQ %d not available\n", 
     74-                       DSMG600_RB_IRQ); 
     75+                       gpio_to_irq(DSMG600_RB_GPIO)); 
     76  
     77                return -EIO; 
     78        } 
     79@@ -114,7 +118,7 @@ 
     80  
     81        del_timer_sync(&dsmg600_power_timer); 
     82  
     83-       free_irq(DSMG600_RB_IRQ, NULL); 
     84+       free_irq(gpio_to_irq(DSMG600_RB_GPIO), NULL); 
     85 } 
     86  
     87 module_init(dsmg600_power_init); 
     88Index: linux-2.6.23.12-armeb/include/asm-arm/arch-ixp4xx/dsmg600.h 
     89=================================================================== 
     90--- linux-2.6.23.12-armeb.orig/include/asm-arm/arch-ixp4xx/dsmg600.h    2008-01-11 16:20:26.000000000 +1030 
     91+++ linux-2.6.23.12-armeb/include/asm-arm/arch-ixp4xx/dsmg600.h 2008-01-11 16:20:30.000000000 +1030 
     92@@ -40,18 +40,13 @@ 
     93 /* Buttons */ 
     94  
     95 #define DSMG600_PB_GPIO                15      /* power button */ 
     96-#define DSMG600_PB_BM          (1L << DSMG600_PB_GPIO) 
     97- 
     98 #define DSMG600_RB_GPIO                3       /* reset button */ 
     99  
     100-#define DSMG600_RB_IRQ         IRQ_IXP4XX_GPIO3 
     101+/* Power control */ 
     102  
     103 #define DSMG600_PO_GPIO                2       /* power off */ 
     104  
     105 /* LEDs */ 
     106  
     107 #define DSMG600_LED_PWR_GPIO   0 
     108-#define DSMG600_LED_PWR_BM     (1L << DSMG600_LED_PWR_GPIO) 
     109- 
     110 #define DSMG600_LED_WLAN_GPIO  14 
     111-#define DSMG600_LED_WLAN_BM    (1L << DSMG600_LED_WLAN_GPIO) 
  • trunk/target/linux/ixp4xx/patches-2.6.23/017-nas100d_auto_power_on.patch

    r10016 r10168  
    1 --- 
    2  arch/arm/mach-ixp4xx/nas100d-power.c  |   68 ++++++++++++++++++++++++++++++++-- 
    3  include/asm-arm/arch-ixp4xx/nas100d.h |   18 +++++---- 
    4  2 files changed, 75 insertions(+), 11 deletions(-) 
     1Upgrade the power and reset button handling for the NAS100D: 
     2 * Convert GPIO and IRQ handling to use the <asm/gpio.h> api. 
     3 * Perform the reset only after the power button has been held down 
     4   for at least two seconds.  Do the reset on the release of the power 
     5   button, so that NAS devices which have been set to auto-power-on (by 
     6   bridging the power button) do not continuously power cycle. 
     7 * Remove all superflous constants from nas100d.h 
     8 * Add LED constants to nas100d.h while we're there. 
     9Also, update the board LED setup code to use constants. 
    510 
    6 Index: linux-2.6.22-rc5-armeb/arch/arm/mach-ixp4xx/nas100d-power.c 
     11Signed-off-by: Rod Whitby <rod@whitby.id.au> 
     12 
     13Index: linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-power.c 
    714=================================================================== 
    8 --- linux-2.6.22-rc5-armeb.orig/arch/arm/mach-ixp4xx/nas100d-power.c 
    9 +++ linux-2.6.22-rc5-armeb/arch/arm/mach-ixp4xx/nas100d-power.c 
    10 @@ -21,15 +21,60 @@ 
     15--- linux-2.6.23.12-armeb.orig/arch/arm/mach-ixp4xx/nas100d-power.c     2008-01-11 16:59:20.000000000 +1030 
     16+++ linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-power.c  2008-01-11 17:03:23.000000000 +1030 
     17@@ -21,15 +21,61 @@ 
    1118 #include <linux/irq.h> 
    1219 #include <linux/module.h> 
     
    1522+#include <linux/timer.h> 
    1623  
     24+#include <asm/gpio.h> 
    1725 #include <asm/mach-types.h> 
    1826  
     
    4048-       ctrl_alt_del(); 
    4149+ 
    42 +       if (*IXP4XX_GPIO_GPINR & NAS100D_PB_BM) { 
     50+       if (gpio_get_value(NAS100D_PB_GPIO)) { 
    4351+ 
    4452+               /* IO Pin is 1 (button pushed) */ 
     
    7381        return IRQ_HANDLED; 
    7482 } 
    75 @@ -50,6 +95,19 @@ 
     83@@ -39,17 +85,30 @@ 
     84        if (!(machine_is_nas100d())) 
     85                return 0; 
     86  
     87-       set_irq_type(NAS100D_RB_IRQ, IRQT_LOW); 
     88+       set_irq_type(gpio_to_irq(NAS100D_RB_GPIO), IRQT_LOW); 
     89  
     90-       if (request_irq(NAS100D_RB_IRQ, &nas100d_reset_handler, 
     91+       if (request_irq(gpio_to_irq(NAS100D_RB_GPIO), &nas100d_reset_handler, 
     92                IRQF_DISABLED, "NAS100D reset button", NULL) < 0) { 
     93  
     94                printk(KERN_DEBUG "Reset Button IRQ %d not available\n", 
     95-                       NAS100D_RB_IRQ); 
     96+                       gpio_to_irq(NAS100D_RB_GPIO)); 
     97  
    7698                return -EIO; 
    7799        } 
     
    93115 } 
    94116  
    95 @@ -58,6 +116,8 @@ 
     117@@ -58,7 +117,9 @@ 
    96118        if (!(machine_is_nas100d())) 
    97119                return; 
    98120  
     121-       free_irq(NAS100D_RB_IRQ, NULL); 
    99122+       del_timer_sync(&nas100d_power_timer); 
    100123+ 
    101         free_irq(NAS100D_RB_IRQ, NULL); 
     124+       free_irq(gpio_to_irq(NAS100D_RB_GPIO), NULL); 
    102125 } 
    103126  
    104 Index: linux-2.6.22-rc5-armeb/include/asm-arm/arch-ixp4xx/nas100d.h 
     127 module_init(nas100d_power_init); 
     128Index: linux-2.6.23.12-armeb/include/asm-arm/arch-ixp4xx/nas100d.h 
    105129=================================================================== 
    106 --- linux-2.6.22-rc5-armeb.orig/include/asm-arm/arch-ixp4xx/nas100d.h 
    107 +++ linux-2.6.22-rc5-armeb/include/asm-arm/arch-ixp4xx/nas100d.h 
    108 @@ -39,14 +39,18 @@ 
     130--- linux-2.6.23.12-armeb.orig/include/asm-arm/arch-ixp4xx/nas100d.h    2008-01-11 16:59:20.000000000 +1030 
     131+++ linux-2.6.23.12-armeb/include/asm-arm/arch-ixp4xx/nas100d.h 2008-01-11 17:03:23.000000000 +1030 
     132@@ -38,15 +38,15 @@ 
     133  
    109134 /* Buttons */ 
    110135  
    111  #define NAS100D_PB_GPIO         14 
    112 +#define NAS100D_PB_BM           (1L << NAS100D_PB_GPIO) 
     136-#define NAS100D_PB_GPIO         14 
     137-#define NAS100D_RB_GPIO         4 
     138+#define NAS100D_PB_GPIO         14   /* power button */ 
     139+#define NAS100D_RB_GPIO         4    /* reset button */ 
    113140+ 
    114  #define NAS100D_RB_GPIO         4 
    115 -#define NAS100D_PO_GPIO         12   /* power off */ 
     141+/* Power control */ 
     142+ 
     143 #define NAS100D_PO_GPIO         12   /* power off */ 
    116144  
    117145-#define NAS100D_PB_IRQ          IRQ_IXP4XX_GPIO14 
    118  #define NAS100D_RB_IRQ          IRQ_IXP4XX_GPIO4 
     146-#define NAS100D_RB_IRQ          IRQ_IXP4XX_GPIO4 
     147+/* LEDs */ 
    119148  
    120149-/* 
     
    123152-#define NAS100D_RB_BM           (1L << NAS100D_RB_GPIO) 
    124153-*/ 
    125 +#define NAS100D_PO_GPIO         12   /* power off */ 
    126 + 
    127 +/* LEDs */ 
    128 + 
     154+#define NAS100D_LED_WLAN_GPIO  0 
     155+#define NAS100D_LED_DISK_GPIO  3 
    129156+#define NAS100D_LED_PWR_GPIO   15 
    130 +#define NAS100D_LED_PWR_BM     (1L << NAS100D_LED_PWR_GPIO) 
    131 + 
    132 +#define NAS100D_LED_WLAN_GPIO  0 
    133 +#define NAS100D_LED_WLAN_BM    (1L << NAS100D_LED_WLAN_GPIO) 
     157Index: linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-setup.c 
     158=================================================================== 
     159--- linux-2.6.23.12-armeb.orig/arch/arm/mach-ixp4xx/nas100d-setup.c     2008-01-11 17:03:23.000000000 +1030 
     160+++ linux-2.6.23.12-armeb/arch/arm/mach-ixp4xx/nas100d-setup.c  2008-01-11 17:06:15.000000000 +1030 
     161@@ -44,20 +44,20 @@ 
     162 static struct resource nas100d_led_resources[] = { 
     163        { 
     164                .name           = "wlan",   /* green led */ 
     165-               .start          = 0, 
     166-               .end            = 0, 
     167+               .start          = NAS100D_LED_WLAN_GPIO, 
     168+               .end            = NAS100D_LED_WLAN_GPIO, 
     169                .flags          = IXP4XX_GPIO_LOW, 
     170        }, 
     171        { 
     172-               .name           = "ready",  /* blue power led (off is flashing!) */ 
     173-               .start          = 15, 
     174-               .end            = 15, 
     175+               .name           = "power",  /* blue power led (off is flashing!) */ 
     176+               .start          = NAS100D_LED_PWR_GPIO, 
     177+               .end            = NAS100D_LED_PWR_GPIO, 
     178                .flags          = IXP4XX_GPIO_LOW, 
     179        }, 
     180        { 
     181                .name           = "disk",   /* yellow led */ 
     182-               .start          = 3, 
     183-               .end            = 3, 
     184+               .start          = NAS100D_LED_DISK_GPIO, 
     185+               .end            = NAS100D_LED_DISK_GPIO, 
     186                .flags          = IXP4XX_GPIO_LOW, 
     187        }, 
     188 }; 
Note: See TracChangeset for help on using the changeset viewer.