Changeset 10119


Ignore:
Timestamp:
2008-01-05T05:11:46+01:00 (9 years ago)
Author:
rwhitby
Message:

ixp4xx/fsg3: Added LEDs support, and refreshed patches for 2.6.23.12

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

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ixp4xx/patches-2.6.23/013-fsg3_support.patch

    r10016 r10119  
    1 diff -uprN linux-2.6.23.orig/arch/arm/mach-ixp4xx/fsg-pci.c linux-2.6.23/arch/arm/mach-ixp4xx/fsg-pci.c 
    2 --- linux-2.6.23.orig/arch/arm/mach-ixp4xx/fsg-pci.c    1969-12-31 18:00:00.000000000 -0600 
    3 +++ linux-2.6.23/arch/arm/mach-ixp4xx/fsg-pci.c 2007-10-11 00:55:34.000000000 -0500 
     1Index: linux-2.6.23.12/arch/arm/mach-ixp4xx/fsg-pci.c 
     2=================================================================== 
     3--- /dev/null   1970-01-01 00:00:00.000000000 +0000 
     4+++ linux-2.6.23.12/arch/arm/mach-ixp4xx/fsg-pci.c      2008-01-05 13:32:23.000000000 +1030 
    45@@ -0,0 +1,71 @@ 
    56+/* 
     
    7475+ 
    7576+subsys_initcall(fsg_pci_init); 
    76 diff -uprN linux-2.6.23.orig/arch/arm/mach-ixp4xx/fsg-setup.c linux-2.6.23/arch/arm/mach-ixp4xx/fsg-setup.c 
    77 --- linux-2.6.23.orig/arch/arm/mach-ixp4xx/fsg-setup.c  1969-12-31 18:00:00.000000000 -0600 
    78 +++ linux-2.6.23/arch/arm/mach-ixp4xx/fsg-setup.c       2007-10-11 00:55:34.000000000 -0500 
    79 @@ -0,0 +1,186 @@ 
     77Index: linux-2.6.23.12/arch/arm/mach-ixp4xx/fsg-setup.c 
     78=================================================================== 
     79--- /dev/null   1970-01-01 00:00:00.000000000 +0000 
     80+++ linux-2.6.23.12/arch/arm/mach-ixp4xx/fsg-setup.c    2008-01-05 14:07:41.000000000 +1030 
     81@@ -0,0 +1,148 @@ 
    8082+/* 
    8183+ * arch/arm/mach-ixp4xx/fsg-setup.c 
     
    9597+#include <linux/serial_8250.h> 
    9698+#include <linux/leds.h> 
    97 +#include <linux/i2c-gpio.h> 
     99+#include <linux/mtd/mtd.h> 
     100+#include <linux/reboot.h> 
    98101+ 
    99102+#include <asm/mach-types.h> 
     
    118121+}; 
    119122+ 
    120 +static struct i2c_gpio_platform_data fsg_i2c_gpio_data = { 
     123+static struct ixp4xx_i2c_pins fsg_i2c_gpio_pins = { 
    121124+       .sda_pin                = FSG_SDA_PIN, 
    122125+       .scl_pin                = FSG_SCL_PIN, 
    123126+}; 
    124127+ 
    125 +static struct platform_device fsg_i2c_gpio = { 
    126 +       .name                   = "i2c-gpio", 
    127 +       .id                     = 0, 
    128 +       .dev     = { 
    129 +               .platform_data  = &fsg_i2c_gpio_data, 
    130 +       }, 
    131 +}; 
    132 + 
    133 +#ifdef CONFIG_LEDS_CLASS 
    134 +static struct resource fsg_led_resources[] = { 
    135 +       { 
    136 +               .name           = "ring", 
    137 +               .start          = FSG_LED_RING_GPIO, 
    138 +               .end            = FSG_LED_RING_GPIO, 
    139 +               .flags          = IXP4XX_GPIO_HIGH, 
    140 +       }, 
    141 +       { 
    142 +               .name           = "sync", 
    143 +               .start          = FSG_LED_SYNC_GPIO, 
    144 +               .end            = FSG_LED_SYNC_GPIO, 
    145 +               .flags          = IXP4XX_GPIO_HIGH, 
    146 +       }, 
    147 +       { 
    148 +               .name           = "usb", 
    149 +               .start          = FSG_LED_USB_GPIO, 
    150 +               .end            = FSG_LED_USB_GPIO, 
    151 +               .flags          = IXP4XX_GPIO_HIGH, 
    152 +       }, 
    153 +       { 
    154 +               .name           = "sata", 
    155 +               .start          = FSG_LED_SATA_GPIO, 
    156 +               .end            = FSG_LED_SATA_GPIO, 
    157 +               .flags          = IXP4XX_GPIO_HIGH, 
    158 +       }, 
    159 +       { 
    160 +               .name           = "wan", 
    161 +               .start          = FSG_LED_WAN_GPIO, 
    162 +               .end            = FSG_LED_WAN_GPIO, 
    163 +               .flags          = IXP4XX_GPIO_HIGH, 
    164 +       }, 
    165 +       { 
    166 +               .name           = "wlan", 
    167 +               .start          = FSG_LED_WLAN_GPIO, 
    168 +               .end            = FSG_LED_WLAN_GPIO, 
    169 +               .flags          = IXP4XX_GPIO_HIGH, 
    170 +       }, 
    171 +}; 
    172 + 
    173 +static struct platform_device fsg_leds = { 
    174 +        .name                   = "IXP4XX-GPIO-LED", 
    175 +        .id                     = -1, 
    176 +        .num_resources          = ARRAY_SIZE(fsg_led_resources), 
    177 +        .resource               = fsg_led_resources, 
    178 +}; 
    179 +#endif 
     128+static struct platform_device fsg_i2c_controller = { 
     129+        .name                   = "IXP4XX-I2C", 
     130+        .id                     = 0, 
     131+        .dev.platform_data      = &fsg_i2c_gpio_pins, 
     132+        .num_resources          = 0, 
     133+}; 
    180134+ 
    181135+static struct resource fsg_uart_resources[] = { 
     
    222176+}; 
    223177+ 
     178+static struct platform_device fsg_leds = { 
     179+       .name           = "fsg-led", 
     180+       .id             = -1, 
     181+}; 
     182+ 
    224183+static struct platform_device *fsg_devices[] __initdata = { 
    225 +       &fsg_i2c_gpio, 
     184+       &fsg_i2c_controller, 
    226185+       &fsg_flash, 
    227 +#ifdef CONFIG_LEDS_IXP4XX 
    228186+       &fsg_leds, 
    229 +#endif 
    230 +}; 
     187+}; 
     188+ 
     189+static void fsg_power_off(void) 
     190+{ 
     191+       printk("Restarting system.\n"); 
     192+       machine_restart(NULL); 
     193+} 
    231194+ 
    232195+static void __init fsg_init(void) 
     
    238201+               IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1; 
    239202+ 
    240 +        *IXP4XX_EXP_CS0 |= IXP4XX_FLASH_WRITABLE; 
    241 +        *IXP4XX_EXP_CS1 = *IXP4XX_EXP_CS0; 
     203+       pm_power_off = fsg_power_off; 
     204+ 
     205+       *IXP4XX_EXP_CS0 |= IXP4XX_FLASH_WRITABLE; 
     206+       *IXP4XX_EXP_CS1 = *IXP4XX_EXP_CS0; 
    242207+ 
    243208+       /* Configure CS2 for operation, 8bit and writable */ 
     
    254219+ 
    255220+MACHINE_START(FSG, "Freecom FSG-3") 
    256 +       /* Maintainer: www.nslu2-linux.org */ 
    257221+       .phys_io        = IXP4XX_PERIPHERAL_BASE_PHYS, 
    258222+       .io_pg_offst    = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, 
     
    264228+MACHINE_END 
    265229+ 
    266 diff -uprN linux-2.6.23.orig/arch/arm/mach-ixp4xx/Kconfig linux-2.6.23/arch/arm/mach-ixp4xx/Kconfig 
    267 --- linux-2.6.23.orig/arch/arm/mach-ixp4xx/Kconfig      2007-10-09 15:31:38.000000000 -0500 
    268 +++ linux-2.6.23/arch/arm/mach-ixp4xx/Kconfig   2007-10-11 00:55:34.000000000 -0500 
    269 @@ -125,6 +125,15 @@ config     ARCH_IXDP4XX 
     230Index: linux-2.6.23.12/arch/arm/mach-ixp4xx/Kconfig 
     231=================================================================== 
     232--- linux-2.6.23.12.orig/arch/arm/mach-ixp4xx/Kconfig   2008-01-05 13:29:20.000000000 +1030 
     233+++ linux-2.6.23.12/arch/arm/mach-ixp4xx/Kconfig        2008-01-05 14:07:40.000000000 +1030 
     234@@ -125,6 +125,15 @@ 
    270235        depends on ARCH_IXDP425 || MACH_IXDP465 || MACH_KIXRP435 
    271236        default y 
     
    283248 # Certain registers and IRQs are only enabled if supporting IXP465 CPUs 
    284249 # 
    285 diff -uprN linux-2.6.23.orig/arch/arm/mach-ixp4xx/Makefile linux-2.6.23/arch/arm/mach-ixp4xx/Makefile 
    286 --- linux-2.6.23.orig/arch/arm/mach-ixp4xx/Makefile     2007-10-09 15:31:38.000000000 -0500 
    287 +++ linux-2.6.23/arch/arm/mach-ixp4xx/Makefile  2007-10-11 00:55:34.000000000 -0500 
    288 @@ -15,6 +15,7 @@ obj-pci-$(CONFIG_MACH_NAS100D)                += nas10 
     250Index: linux-2.6.23.12/arch/arm/mach-ixp4xx/Makefile 
     251=================================================================== 
     252--- linux-2.6.23.12.orig/arch/arm/mach-ixp4xx/Makefile  2008-01-05 13:29:20.000000000 +1030 
     253+++ linux-2.6.23.12/arch/arm/mach-ixp4xx/Makefile       2008-01-05 14:07:40.000000000 +1030 
     254@@ -15,6 +15,7 @@ 
    289255 obj-pci-$(CONFIG_MACH_DSMG600)         += dsmg600-pci.o 
    290256 obj-pci-$(CONFIG_MACH_GATEWAY7001)     += gateway7001-pci.o 
     
    294260 obj-y  += common.o 
    295261  
    296 @@ -28,5 +29,6 @@ obj-$(CONFIG_MACH_NAS100D)    += nas100d-se 
     262@@ -28,5 +29,6 @@ 
    297263 obj-$(CONFIG_MACH_DSMG600)      += dsmg600-setup.o dsmg600-power.o 
    298264 obj-$(CONFIG_MACH_GATEWAY7001) += gateway7001-setup.o 
    299265 obj-$(CONFIG_MACH_WG302V2)     += wg302v2-setup.o 
    300 +obj-$(CONFIG_MACH_FSG)         += fsg-setup.o 
     266+obj-$(CONFIG_MACH_FSG)         += fsg-setup.o fsg-power.o 
    301267  
    302268 obj-$(CONFIG_PCI)              += $(obj-pci-$(CONFIG_PCI)) common-pci.o 
    303 diff -uprN linux-2.6.23.orig/include/asm-arm/arch-ixp4xx/fsg.h linux-2.6.23/include/asm-arm/arch-ixp4xx/fsg.h 
    304 --- linux-2.6.23.orig/include/asm-arm/arch-ixp4xx/fsg.h 1969-12-31 18:00:00.000000000 -0600 
    305 +++ linux-2.6.23/include/asm-arm/arch-ixp4xx/fsg.h      2007-10-11 00:55:34.000000000 -0500 
    306 @@ -0,0 +1,74 @@ 
     269Index: linux-2.6.23.12/include/asm-arm/arch-ixp4xx/fsg.h 
     270=================================================================== 
     271--- /dev/null   1970-01-01 00:00:00.000000000 +0000 
     272+++ linux-2.6.23.12/include/asm-arm/arch-ixp4xx/fsg.h   2008-01-05 14:08:23.000000000 +1030 
     273@@ -0,0 +1,58 @@ 
    307274+/* 
    308275+ * include/asm-arm/arch-ixp4xx/fsg.h 
     
    357324+/* LEDs */ 
    358325+ 
    359 +#define FSG_LED_RING_GPIO      0 
    360 +#define FSG_LED_SYNC_GPIO      1 
    361 +#define FSG_LED_USB_GPIO       2 
    362 +#define FSG_LED_SATA_GPIO      3 
    363 +#define FSG_LED_WAN_GPIO       4 
    364 +#define FSG_LED_WLAN_GPIO      5 
    365 + 
    366 +/* %%% REMOVE %%% 
    367 +#define FSG_PCI_SLOT0_PIN      6 
    368 +#define FSG_PCI_SLOT1_PIN      7 
    369 + 
    370 +#define        FSG_PCI_SLOT0_DEVID     14 
    371 +#define        FSG_PCI_SLOT1_DEVID     15 
    372 + 
    373 +#define        FSG_IDE_BASE_PHYS       IXP4XX_EXP_BUS_BASE(3) 
    374 +#define        FSG_IDE_BASE_VIRT       0xFFFE1000 
    375 +#define        FSG_IDE_REGION_SIZE     0x1000 
    376 + 
    377 +#define        FSG_IDE_DATA_PORT       0xFFFE10E0 
    378 +#define        FSG_IDE_CTRL_PORT       0xFFFE10FC 
    379 +#define        FSG_IDE_ERROR_PORT      0xFFFE10E2 
    380 +*/ 
    381 diff -uprN linux-2.6.23.orig/include/asm-arm/arch-ixp4xx/hardware.h linux-2.6.23/include/asm-arm/arch-ixp4xx/hardware.h 
    382 --- linux-2.6.23.orig/include/asm-arm/arch-ixp4xx/hardware.h    2007-10-09 15:31:38.000000000 -0500 
    383 +++ linux-2.6.23/include/asm-arm/arch-ixp4xx/hardware.h 2007-10-11 00:55:34.000000000 -0500 
     326+#define FSG_LED_WLAN_BIT       0 
     327+#define FSG_LED_WAN_BIT                1 
     328+#define FSG_LED_SATA_BIT       2 
     329+#define FSG_LED_USB_BIT                4 
     330+#define FSG_LED_RING_BIT       5 
     331+#define FSG_LED_SYNC_BIT       7 
     332Index: linux-2.6.23.12/include/asm-arm/arch-ixp4xx/hardware.h 
     333=================================================================== 
     334--- linux-2.6.23.12.orig/include/asm-arm/arch-ixp4xx/hardware.h 2008-01-05 13:29:20.000000000 +1030 
     335+++ linux-2.6.23.12/include/asm-arm/arch-ixp4xx/hardware.h      2008-01-05 14:07:39.000000000 +1030 
    384336@@ -45,5 +45,6 @@ 
    385337 #include "nslu2.h" 
     
    389341  
    390342 #endif  /* _ASM_ARCH_HARDWARE_H */ 
    391 diff -uprN linux-2.6.23.orig/include/asm-arm/arch-ixp4xx/irqs.h linux-2.6.23/include/asm-arm/arch-ixp4xx/irqs.h 
    392 --- linux-2.6.23.orig/include/asm-arm/arch-ixp4xx/irqs.h        2007-10-09 15:31:38.000000000 -0500 
    393 +++ linux-2.6.23/include/asm-arm/arch-ixp4xx/irqs.h     2007-10-11 00:55:34.000000000 -0500 
     343Index: linux-2.6.23.12/include/asm-arm/arch-ixp4xx/irqs.h 
     344=================================================================== 
     345--- linux-2.6.23.12.orig/include/asm-arm/arch-ixp4xx/irqs.h     2008-01-05 13:29:20.000000000 +1030 
     346+++ linux-2.6.23.12/include/asm-arm/arch-ixp4xx/irqs.h  2008-01-05 13:29:24.000000000 +1030 
    394347@@ -128,4 +128,17 @@ 
    395348 #define        IRQ_DSMG600_PCI_INTE    IRQ_IXP4XX_GPIO7 
     
    410363+ 
    411364 #endif 
     365Index: linux-2.6.23.12/arch/arm/mach-ixp4xx/fsg-power.c 
     366=================================================================== 
     367--- /dev/null   1970-01-01 00:00:00.000000000 +0000 
     368+++ linux-2.6.23.12/arch/arm/mach-ixp4xx/fsg-power.c    2008-01-05 13:32:27.000000000 +1030 
     369@@ -0,0 +1,87 @@ 
     370+/* 
     371+ * arch/arm/mach-ixp4xx/fsg-power.c 
     372+ * 
     373+ * FSG Power/Reset driver 
     374+ * 
     375+ * Copyright (C) 2008 Rod Whitby <rod@whitby.id.au> 
     376+ * 
     377+ * based on nslu2-power.c 
     378+ *  Copyright (C) 2005 Tower Technologies 
     379+ * 
     380+ * This program is free software; you can redistribute it and/or modify 
     381+ * it under the terms of the GNU General Public License version 2 as 
     382+ * published by the Free Software Foundation. 
     383+ * 
     384+ */ 
     385+ 
     386+#include <linux/module.h> 
     387+#include <linux/reboot.h> 
     388+#include <linux/irq.h> 
     389+#include <linux/interrupt.h> 
     390+#include <linux/kernel.h> 
     391+ 
     392+#include <asm/mach-types.h> 
     393+ 
     394+static irqreturn_t fsg_power_handler(int irq, void *dev_id) 
     395+{ 
     396+       /* Signal init to do the ctrlaltdel action, this will bypass init if 
     397+        * it hasn't started and do a kernel_restart. 
     398+        */ 
     399+       ctrl_alt_del(); 
     400+ 
     401+       return IRQ_HANDLED; 
     402+} 
     403+ 
     404+static irqreturn_t fsg_reset_handler(int irq, void *dev_id) 
     405+{ 
     406+       /* This is the paper-clip reset, it shuts the machine down directly. 
     407+        */ 
     408+       machine_power_off(); 
     409+ 
     410+       return IRQ_HANDLED; 
     411+} 
     412+ 
     413+static int __init fsg_power_init(void) 
     414+{ 
     415+       if (!(machine_is_fsg())) 
     416+               return 0; 
     417+ 
     418+       set_irq_type(FSG_RB_IRQ, IRQT_LOW); 
     419+       set_irq_type(FSG_SB_IRQ, IRQT_LOW); 
     420+ 
     421+       if (request_irq(FSG_RB_IRQ, &fsg_reset_handler, 
     422+               IRQF_DISABLED, "FSG reset button", NULL) < 0) { 
     423+ 
     424+               printk(KERN_DEBUG "Reset Button IRQ %d not available\n", 
     425+                       FSG_RB_IRQ); 
     426+ 
     427+               return -EIO; 
     428+       } 
     429+ 
     430+       if (request_irq(FSG_SB_IRQ, &fsg_power_handler, 
     431+               IRQF_DISABLED, "FSG power button", NULL) < 0) { 
     432+ 
     433+               printk(KERN_DEBUG "Power Button IRQ %d not available\n", 
     434+                       FSG_SB_IRQ); 
     435+ 
     436+               return -EIO; 
     437+       } 
     438+ 
     439+       return 0; 
     440+} 
     441+ 
     442+static void __exit fsg_power_exit(void) 
     443+{ 
     444+       if (!(machine_is_fsg())) 
     445+               return; 
     446+ 
     447+       free_irq(FSG_SB_IRQ, NULL); 
     448+       free_irq(FSG_RB_IRQ, NULL); 
     449+} 
     450+ 
     451+module_init(fsg_power_init); 
     452+module_exit(fsg_power_exit); 
     453+ 
     454+MODULE_AUTHOR("Rod Whitby <rod@whitby.id.au>"); 
     455+MODULE_DESCRIPTION("FSG Power/Reset driver"); 
     456+MODULE_LICENSE("GPL"); 
     457Index: linux-2.6.23.12/drivers/leds/Kconfig 
     458=================================================================== 
     459--- linux-2.6.23.12.orig/drivers/leds/Kconfig   2008-01-05 13:31:05.000000000 +1030 
     460+++ linux-2.6.23.12/drivers/leds/Kconfig        2008-01-05 13:33:48.000000000 +1030 
     461@@ -48,6 +48,12 @@ 
     462          particular board must have LEDs and they must be connected 
     463          to the GPIO lines.  If unsure, say Y. 
     464  
     465+config LEDS_FSG 
     466+       tristate "LED Support for the Freecom FSG-3" 
     467+       depends on LEDS_CLASS && MACH_FSG 
     468+       help 
     469+         This option enables support for the LEDs on the Freecom FSG-3. 
     470+ 
     471 config LEDS_TOSA 
     472        tristate "LED Support for the Sharp SL-6000 series" 
     473        depends on LEDS_CLASS && PXA_SHARPSL 
     474Index: linux-2.6.23.12/drivers/leds/Makefile 
     475=================================================================== 
     476--- linux-2.6.23.12.orig/drivers/leds/Makefile  2008-01-05 13:31:04.000000000 +1030 
     477+++ linux-2.6.23.12/drivers/leds/Makefile       2008-01-05 13:33:21.000000000 +1030 
     478@@ -9,6 +9,7 @@ 
     479 obj-$(CONFIG_LEDS_LOCOMO)              += leds-locomo.o 
     480 obj-$(CONFIG_LEDS_SPITZ)               += leds-spitz.o 
     481 obj-$(CONFIG_LEDS_IXP4XX)              += leds-ixp4xx-gpio.o 
     482+obj-$(CONFIG_LEDS_FSG)                 += leds-fsg.o 
     483 obj-$(CONFIG_LEDS_TOSA)                        += leds-tosa.o 
     484 obj-$(CONFIG_LEDS_S3C24XX)             += leds-s3c24xx.o 
     485 obj-$(CONFIG_LEDS_AMS_DELTA)           += leds-ams-delta.o 
     486Index: linux-2.6.23.12/drivers/leds/leds-fsg.c 
     487=================================================================== 
     488--- /dev/null   1970-01-01 00:00:00.000000000 +0000 
     489+++ linux-2.6.23.12/drivers/leds/leds-fsg.c     2008-01-05 13:31:52.000000000 +1030 
     490@@ -0,0 +1,243 @@ 
     491+/* 
     492+ * LED Driver for the Freecom FSG-3 
     493+ * 
     494+ * Copyright (c) 2008 Rod Whitby <rod@whitby.id.au> 
     495+ * 
     496+ * Author: Rod Whitby <rod@whitby.id.au> 
     497+ * 
     498+ * Based on leds-spitz.c 
     499+ * Copyright 2005-2006 Openedhand Ltd. 
     500+ * Author: Richard Purdie <rpurdie@openedhand.com> 
     501+ * 
     502+ * This program is free software; you can redistribute it and/or modify 
     503+ * it under the terms of the GNU General Public License version 2 as 
     504+ * published by the Free Software Foundation. 
     505+ * 
     506+ */ 
     507+ 
     508+#include <linux/kernel.h> 
     509+#include <linux/init.h> 
     510+#include <linux/platform_device.h> 
     511+#include <linux/leds.h> 
     512+#include <asm/arch/hardware.h> 
     513+#include <asm/io.h> 
     514+ 
     515+static short __iomem *latch_address; 
     516+static unsigned short latch_value; 
     517+ 
     518+ 
     519+static void fsg_led_wlan_set(struct led_classdev *led_cdev, enum led_brightness value) 
     520+{ 
     521+       if (value) { 
     522+               latch_value &= ~(1 << FSG_LED_WLAN_BIT); 
     523+               *latch_address = latch_value; 
     524+       } 
     525+       else { 
     526+               latch_value |=  (1 << FSG_LED_WLAN_BIT); 
     527+               *latch_address = latch_value; 
     528+       } 
     529+} 
     530+ 
     531+static void fsg_led_wan_set(struct led_classdev *led_cdev, enum led_brightness value) 
     532+{ 
     533+       if (value) { 
     534+               latch_value &= ~(1 << FSG_LED_WAN_BIT); 
     535+               *latch_address = latch_value; 
     536+       } 
     537+       else { 
     538+               latch_value |=  (1 << FSG_LED_WAN_BIT); 
     539+               *latch_address = latch_value; 
     540+       } 
     541+} 
     542+ 
     543+static void fsg_led_sata_set(struct led_classdev *led_cdev, enum led_brightness value) 
     544+{ 
     545+       if (value) { 
     546+               latch_value &= ~(1 << FSG_LED_SATA_BIT); 
     547+               *latch_address = latch_value; 
     548+       } 
     549+       else { 
     550+               latch_value |=  (1 << FSG_LED_SATA_BIT); 
     551+               *latch_address = latch_value; 
     552+       } 
     553+} 
     554+ 
     555+static void fsg_led_usb_set(struct led_classdev *led_cdev, enum led_brightness value) 
     556+{ 
     557+       if (value) { 
     558+               latch_value &= ~(1 << FSG_LED_USB_BIT); 
     559+               *latch_address = latch_value; 
     560+       } 
     561+       else { 
     562+               latch_value |=  (1 << FSG_LED_USB_BIT); 
     563+               *latch_address = latch_value; 
     564+       } 
     565+} 
     566+ 
     567+static void fsg_led_sync_set(struct led_classdev *led_cdev, enum led_brightness value) 
     568+{ 
     569+       if (value) { 
     570+               latch_value &= ~(1 << FSG_LED_SYNC_BIT); 
     571+               *latch_address = latch_value; 
     572+       } 
     573+       else { 
     574+               latch_value |=  (1 << FSG_LED_SYNC_BIT); 
     575+               *latch_address = latch_value; 
     576+       } 
     577+} 
     578+ 
     579+static void fsg_led_ring_set(struct led_classdev *led_cdev, enum led_brightness value) 
     580+{ 
     581+       if (value) { 
     582+               latch_value &= ~(1 << FSG_LED_RING_BIT); 
     583+               *latch_address = latch_value; 
     584+       } 
     585+       else { 
     586+               latch_value |=  (1 << FSG_LED_RING_BIT); 
     587+               *latch_address = latch_value; 
     588+       } 
     589+} 
     590+ 
     591+ 
     592+ 
     593+static struct led_classdev fsg_wlan_led = { 
     594+       .name                   = "fsg:wlan", 
     595+       .brightness_set         = fsg_led_wlan_set, 
     596+}; 
     597+ 
     598+static struct led_classdev fsg_wan_led = { 
     599+       .name                   = "fsg:wan", 
     600+       .brightness_set         = fsg_led_wan_set, 
     601+}; 
     602+ 
     603+static struct led_classdev fsg_sata_led = { 
     604+       .name                   = "fsg:sata", 
     605+       .brightness_set         = fsg_led_sata_set, 
     606+}; 
     607+ 
     608+static struct led_classdev fsg_usb_led = { 
     609+       .name                   = "fsg:usb", 
     610+       .brightness_set         = fsg_led_usb_set, 
     611+}; 
     612+ 
     613+static struct led_classdev fsg_sync_led = { 
     614+       .name                   = "fsg:sync", 
     615+       .brightness_set         = fsg_led_sync_set, 
     616+}; 
     617+ 
     618+static struct led_classdev fsg_ring_led = { 
     619+       .name                   = "fsg:ring", 
     620+       .brightness_set         = fsg_led_ring_set, 
     621+}; 
     622+ 
     623+ 
     624+ 
     625+#ifdef CONFIG_PM 
     626+static int fsg_led_suspend(struct platform_device *dev, pm_message_t state) 
     627+{ 
     628+       led_classdev_suspend(&fsg_wlan_led); 
     629+       led_classdev_suspend(&fsg_wan_led); 
     630+       led_classdev_suspend(&fsg_sata_led); 
     631+       led_classdev_suspend(&fsg_usb_led); 
     632+       led_classdev_suspend(&fsg_sync_led); 
     633+       led_classdev_suspend(&fsg_ring_led); 
     634+       return 0; 
     635+} 
     636+ 
     637+static int fsg_led_resume(struct platform_device *dev) 
     638+{ 
     639+       led_classdev_resume(&fsg_wlan_led); 
     640+       led_classdev_resume(&fsg_wan_led); 
     641+       led_classdev_resume(&fsg_sata_led); 
     642+       led_classdev_resume(&fsg_usb_led); 
     643+       led_classdev_resume(&fsg_sync_led); 
     644+       led_classdev_resume(&fsg_ring_led); 
     645+       return 0; 
     646+} 
     647+#endif 
     648+ 
     649+ 
     650+static int fsg_led_probe(struct platform_device *pdev) 
     651+{ 
     652+       int ret; 
     653+ 
     654+       /* FIXME: Need to work out how to handle failure below */ 
     655+ 
     656+       ret = led_classdev_register(&pdev->dev, &fsg_wlan_led); 
     657+       if (ret < 0) 
     658+               return ret; 
     659+ 
     660+       ret = led_classdev_register(&pdev->dev, &fsg_wan_led); 
     661+       if (ret < 0) 
     662+               return ret; 
     663+ 
     664+       ret = led_classdev_register(&pdev->dev, &fsg_sata_led); 
     665+       if (ret < 0) 
     666+               return ret; 
     667+ 
     668+       ret = led_classdev_register(&pdev->dev, &fsg_usb_led); 
     669+       if (ret < 0) 
     670+               return ret; 
     671+ 
     672+       ret = led_classdev_register(&pdev->dev, &fsg_sync_led); 
     673+       if (ret < 0) 
     674+               return ret; 
     675+ 
     676+       ret = led_classdev_register(&pdev->dev, &fsg_ring_led); 
     677+       if (ret < 0) 
     678+               return ret; 
     679+ 
     680+       return ret; 
     681+} 
     682+ 
     683+static int fsg_led_remove(struct platform_device *pdev) 
     684+{ 
     685+       led_classdev_unregister(&fsg_wlan_led); 
     686+       led_classdev_unregister(&fsg_wan_led); 
     687+       led_classdev_unregister(&fsg_sata_led); 
     688+       led_classdev_unregister(&fsg_usb_led); 
     689+       led_classdev_unregister(&fsg_sync_led); 
     690+       led_classdev_unregister(&fsg_ring_led); 
     691+ 
     692+       return 0; 
     693+} 
     694+ 
     695+ 
     696+static struct platform_driver fsg_led_driver = { 
     697+       .probe          = fsg_led_probe, 
     698+       .remove         = fsg_led_remove, 
     699+#ifdef CONFIG_PM 
     700+       .suspend        = fsg_led_suspend, 
     701+       .resume         = fsg_led_resume, 
     702+#endif 
     703+       .driver         = { 
     704+               .name           = "fsg-led", 
     705+       }, 
     706+}; 
     707+ 
     708+ 
     709+static int __init fsg_led_init(void) 
     710+{ 
     711+       /* Map the LED chip select address space */ 
     712+       latch_address = (unsigned short *) ioremap(IXP4XX_EXP_BUS_BASE(2), 512); 
     713+       if (!latch_address) 
     714+               return -ENOMEM; 
     715+       latch_value = 0xffff; 
     716+       *latch_address = latch_value; 
     717+       /* FIXME: We leak memory if the next line fails */ 
     718+       return platform_driver_register(&fsg_led_driver); 
     719+} 
     720+ 
     721+static void __exit fsg_led_exit(void) 
     722+{ 
     723+       platform_driver_unregister(&fsg_led_driver); 
     724+       iounmap(latch_address); 
     725+} 
     726+ 
     727+ 
     728+module_init(fsg_led_init); 
     729+module_exit(fsg_led_exit); 
     730+ 
     731+MODULE_AUTHOR("Rod Whitby <rod@whitby.id.au>"); 
     732+MODULE_DESCRIPTION("Freecom FSG-3 LED driver"); 
     733+MODULE_LICENSE("GPL"); 
  • trunk/target/linux/ixp4xx/patches-2.6.23/054-fsg3_mac_plat_info.patch

    r10016 r10119  
    1 diff --git a/arch/arm/mach-ixp4xx/fsg-setup.c b/arch/arm/mach-ixp4xx/fsg-setup.c 
    2 index 11336e6..ec3d517 100644 
    3 --- a/arch/arm/mach-ixp4xx/fsg-setup.c 
    4 +++ b/arch/arm/mach-ixp4xx/fsg-setup.c 
    5 @@ -142,12 +142,39 @@ static struct platform_device fsg_uart = { 
     1Index: linux-2.6.23.12/arch/arm/mach-ixp4xx/fsg-setup.c 
     2=================================================================== 
     3--- linux-2.6.23.12.orig/arch/arm/mach-ixp4xx/fsg-setup.c       2008-01-05 13:53:26.000000000 +1030 
     4+++ linux-2.6.23.12/arch/arm/mach-ixp4xx/fsg-setup.c    2008-01-05 13:56:28.000000000 +1030 
     5@@ -94,6 +94,31 @@ 
    66        .resource               = fsg_uart_resources, 
    77 }; 
    88  
    9 +/* Built-in 10/100 Ethernet MAC interfaces */ 
    10 +static struct eth_plat_info fsg_plat_eth[] = { 
    11 +        { 
    12 +                .phy            = 5, 
    13 +                .rxq            = 3, 
    14 +               .txreadyq       = 20, 
    15 +        }, { 
    16 +                .phy            = 4, 
    17 +                .rxq            = 4, 
    18 +               .txreadyq       = 21, 
    19 +        } 
    20 +}; 
    21 + 
    22 +static struct platform_device fsg_eth[] = { 
    23 +        { 
    24 +                .name                   = "ixp4xx_eth", 
    25 +                .id                     = IXP4XX_ETH_NPEB, 
    26 +                .dev.platform_data      = fsg_plat_eth, 
    27 +        }, { 
    28 +                .name                   = "ixp4xx_eth", 
    29 +                .id                     = IXP4XX_ETH_NPEC, 
    30 +                .dev.platform_data      = fsg_plat_eth + 1, 
    31 +        } 
    32 +}; 
    33 + 
     9+ /* Built-in 10/100 Ethernet MAC interfaces */ 
     10+ static struct eth_plat_info fsg_plat_eth[] = { 
     11+         { 
     12+                 .phy            = 5, 
     13+                 .rxq            = 3, 
     14+               .txreadyq       = 20, 
     15+         }, { 
     16+                 .phy            = 4, 
     17+                 .rxq            = 4, 
     18+               .txreadyq       = 21, 
     19+         } 
     20+ }; 
     21+  
     22+ static struct platform_device fsg_eth[] = { 
     23+         { 
     24+                 .name                   = "ixp4xx_eth", 
     25+                 .id                     = IXP4XX_ETH_NPEB, 
     26+                 .dev.platform_data      = fsg_plat_eth, 
     27+         }, { 
     28+                 .name                   = "ixp4xx_eth", 
     29+                 .id                     = IXP4XX_ETH_NPEC, 
     30+                 .dev.platform_data      = fsg_plat_eth + 1, 
     31+         } 
     32+ }; 
     33+  
     34 static struct platform_device fsg_leds = { 
     35        .name           = "fsg-led", 
     36        .id             = -1, 
     37@@ -102,6 +127,8 @@ 
    3438 static struct platform_device *fsg_devices[] __initdata = { 
    35         &fsg_i2c_gpio, 
     39        &fsg_i2c_controller, 
    3640        &fsg_flash, 
    37  #ifdef CONFIG_LEDS_IXP4XX 
    38         &fsg_leds, 
    39  #endif 
    4041+       &fsg_eth[0], 
    4142+       &fsg_eth[1], 
     43        &fsg_leds, 
    4244 }; 
    4345  
    44  static void __init fsg_init(void) 
  • trunk/target/linux/ixp4xx/patches-2.6.23/068-fsg3_fetch_mac.patch

    r10116 r10119  
    1 Index: linux-2.6.23.11-armeb/arch/arm/mach-ixp4xx/fsg-setup.c 
     1Index: linux-2.6.23.12/arch/arm/mach-ixp4xx/fsg-setup.c 
    22=================================================================== 
    3 --- linux-2.6.23.11-armeb.orig/arch/arm/mach-ixp4xx/fsg-setup.c 2007-12-29 23:10:08.000000000 +1030 
    4 +++ linux-2.6.23.11-armeb/arch/arm/mach-ixp4xx/fsg-setup.c      2007-12-29 23:25:24.000000000 +1030 
    5 @@ -20,6 +20,7 @@ 
     3--- linux-2.6.23.12.orig/arch/arm/mach-ixp4xx/fsg-setup.c       2008-01-05 13:56:28.000000000 +1030 
     4+++ linux-2.6.23.12/arch/arm/mach-ixp4xx/fsg-setup.c    2008-01-05 13:56:43.000000000 +1030 
     5@@ -21,6 +21,7 @@ 
    66 #include <asm/mach-types.h> 
    77 #include <asm/mach/arch.h> 
     
    1111 static struct flash_platform_data fsg_flash_data = { 
    1212        .map_name               = "cfi_probe", 
    13 @@ -179,6 +180,9 @@ 
     13@@ -140,6 +141,9 @@ 
    1414  
    1515 static void __init fsg_init(void) 
     
    2121  
    2222        fsg_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); 
    23 @@ -198,6 +202,45 @@ 
     23@@ -161,6 +165,45 @@ 
    2424        (void)platform_device_register(&fsg_uart); 
    2525  
  • trunk/target/linux/ixp4xx/patches-2.6.23/110-pronghorn_metro_support.patch

    r10016 r10119  
    1 diff -Nur linux-2.6.23/arch/arm/mach-ixp4xx/Kconfig linux-2.6.23-owrt/arch/arm/mach-ixp4xx/Kconfig 
    2 --- linux-2.6.23/arch/arm/mach-ixp4xx/Kconfig   2007-10-22 14:47:50.000000000 +0200 
    3 +++ linux-2.6.23-owrt/arch/arm/mach-ixp4xx/Kconfig      2007-10-22 15:16:43.000000000 +0200 
     1Index: linux-2.6.23.12/arch/arm/mach-ixp4xx/Kconfig 
     2=================================================================== 
     3--- linux-2.6.23.12.orig/arch/arm/mach-ixp4xx/Kconfig   2008-01-05 13:30:14.000000000 +1030 
     4+++ linux-2.6.23.12/arch/arm/mach-ixp4xx/Kconfig        2008-01-05 13:37:05.000000000 +1030 
    45@@ -57,6 +57,14 @@ 
    56          WG302 v2 or WAG302 v2 Access Points. For more information 
     
    1718        bool "IXDP425" 
    1819        help 
    19 diff -Nur linux-2.6.23/arch/arm/mach-ixp4xx/Makefile linux-2.6.23-owrt/arch/arm/mach-ixp4xx/Makefile 
    20 --- linux-2.6.23/arch/arm/mach-ixp4xx/Makefile  2007-10-22 14:47:50.000000000 +0200 
    21 +++ linux-2.6.23-owrt/arch/arm/mach-ixp4xx/Makefile     2007-10-22 15:26:15.000000000 +0200 
     20Index: linux-2.6.23.12/arch/arm/mach-ixp4xx/Makefile 
     21=================================================================== 
     22--- linux-2.6.23.12.orig/arch/arm/mach-ixp4xx/Makefile  2008-01-05 13:32:45.000000000 +1030 
     23+++ linux-2.6.23.12/arch/arm/mach-ixp4xx/Makefile       2008-01-05 13:37:37.000000000 +1030 
    2224@@ -16,6 +16,7 @@ 
    2325 obj-pci-$(CONFIG_MACH_GATEWAY7001)     += gateway7001-pci.o 
     
    2830 obj-y  += common.o 
    2931  
    30 @@ -30,6 +31,7 @@ 
     32@@ -30,5 +31,6 @@ 
    3133 obj-$(CONFIG_MACH_GATEWAY7001) += gateway7001-setup.o 
    3234 obj-$(CONFIG_MACH_WG302V2)     += wg302v2-setup.o 
    33  obj-$(CONFIG_MACH_FSG)         += fsg-setup.o 
     35 obj-$(CONFIG_MACH_FSG)         += fsg-setup.o fsg-power.o 
    3436+obj-$(CONFIG_MACH_PRONGHORNMETRO)      += pronghornmetro-setup.o 
    3537  
    3638 obj-$(CONFIG_PCI)              += $(obj-pci-$(CONFIG_PCI)) common-pci.o 
    37  obj-$(CONFIG_IXP4XX_QMGR)      += ixp4xx_qmgr.o 
    38 diff -Nur linux-2.6.23/arch/arm/mach-ixp4xx/pronghornmetro-pci.c linux-2.6.23-owrt/arch/arm/mach-ixp4xx/pronghornmetro-pci.c 
    39 --- linux-2.6.23/arch/arm/mach-ixp4xx/pronghornmetro-pci.c      1970-01-01 01:00:00.000000000 +0100 
    40 +++ linux-2.6.23-owrt/arch/arm/mach-ixp4xx/pronghornmetro-pci.c 2007-10-22 15:16:43.000000000 +0200 
     39Index: linux-2.6.23.12/arch/arm/mach-ixp4xx/pronghornmetro-pci.c 
     40=================================================================== 
     41--- /dev/null   1970-01-01 00:00:00.000000000 +0000 
     42+++ linux-2.6.23.12/arch/arm/mach-ixp4xx/pronghornmetro-pci.c   2008-01-05 13:37:05.000000000 +1030 
    4143@@ -0,0 +1,74 @@ 
    4244+/* 
     
    114116+ 
    115117+subsys_initcall(pronghornmetro_pci_init); 
    116 diff -Nur linux-2.6.23/arch/arm/mach-ixp4xx/pronghornmetro-setup.c linux-2.6.23-owrt/arch/arm/mach-ixp4xx/pronghornmetro-setup.c 
    117 --- linux-2.6.23/arch/arm/mach-ixp4xx/pronghornmetro-setup.c    1970-01-01 01:00:00.000000000 +0100 
    118 +++ linux-2.6.23-owrt/arch/arm/mach-ixp4xx/pronghornmetro-setup.c       2007-10-22 15:36:35.000000000 +0200 
     118Index: linux-2.6.23.12/arch/arm/mach-ixp4xx/pronghornmetro-setup.c 
     119=================================================================== 
     120--- /dev/null   1970-01-01 00:00:00.000000000 +0000 
     121+++ linux-2.6.23.12/arch/arm/mach-ixp4xx/pronghornmetro-setup.c 2008-01-05 13:37:05.000000000 +1030 
    119122@@ -0,0 +1,147 @@ 
    120123+/* 
     
    265268+MACHINE_END 
    266269+#endif 
    267 diff -Nur linux-2.6.23/Documentation/arm/IXP4xx linux-2.6.23-owrt/Documentation/arm/IXP4xx 
    268 --- linux-2.6.23/Documentation/arm/IXP4xx       2007-10-09 22:31:38.000000000 +0200 
    269 +++ linux-2.6.23-owrt/Documentation/arm/IXP4xx  2007-10-22 15:16:43.000000000 +0200 
     270Index: linux-2.6.23.12/Documentation/arm/IXP4xx 
     271=================================================================== 
     272--- linux-2.6.23.12.orig/Documentation/arm/IXP4xx       2008-01-05 13:30:14.000000000 +1030 
     273+++ linux-2.6.23.12/Documentation/arm/IXP4xx    2008-01-05 13:37:05.000000000 +1030 
    270274@@ -111,6 +111,9 @@ 
    271275    the platform has two mini-PCI slots used for 802.11[bga] cards. 
     
    278282 http://www.gateworks.com/avila_sbc.htm 
    279283  
    280 diff -Nur linux-2.6.23/include/asm-arm/arch-ixp4xx/uncompress.h linux-2.6.23-owrt/include/asm-arm/arch-ixp4xx/uncompress.h 
    281 --- linux-2.6.23/include/asm-arm/arch-ixp4xx/uncompress.h       2007-10-22 14:47:50.000000000 +0200 
    282 +++ linux-2.6.23-owrt/include/asm-arm/arch-ixp4xx/uncompress.h  2007-10-22 15:18:47.000000000 +0200 
     284Index: linux-2.6.23.12/include/asm-arm/arch-ixp4xx/uncompress.h 
     285=================================================================== 
     286--- linux-2.6.23.12.orig/include/asm-arm/arch-ixp4xx/uncompress.h       2008-01-05 13:30:14.000000000 +1030 
     287+++ linux-2.6.23.12/include/asm-arm/arch-ixp4xx/uncompress.h    2008-01-05 13:37:05.000000000 +1030 
    283288@@ -41,7 +41,8 @@ 
    284289         * Some boards are using UART2 as console 
Note: See TracChangeset for help on using the changeset viewer.