+subsys_initcall(wg302v1_pci_init);
--- /dev/null
+++ b/arch/arm/mach-ixp4xx/wg302v1-setup.c
-@@ -0,0 +1,142 @@
+@@ -0,0 +1,140 @@
+/*
+ * arch/arm/mach-ixp4xx/wg302v1-setup.c
+ *
+#ifdef CONFIG_MACH_WG302V1
+MACHINE_START(WG302V1, "Netgear WG302 v1 / WAG302 v1")
+ /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+ .map_io = ixp4xx_map_io,
+ .init_irq = ixp4xx_init_irq,
+ .timer = &ixp4xx_timer,
+ bool "ADI Pronghorn series"
+ select PCI
+ help
-+ Say 'Y' here if you want your kernel to support the ADI
++ Say 'Y' here if you want your kernel to support the ADI
+ Engineering Pronghorn series. For more
+ information on this platform, see http://www.adiengineering.com
+
+subsys_initcall(pronghorn_pci_init);
--- /dev/null
+++ b/arch/arm/mach-ixp4xx/pronghorn-setup.c
-@@ -0,0 +1,245 @@
+@@ -0,0 +1,241 @@
+/*
+ * arch/arm/mach-ixp4xx/pronghorn-setup.c
+ *
+
+MACHINE_START(PRONGHORN, "ADI Engineering Pronghorn")
+ /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+ .map_io = ixp4xx_map_io,
+ .init_irq = ixp4xx_init_irq,
+ .timer = &ixp4xx_timer,
+
+MACHINE_START(PRONGHORNMETRO, "ADI Engineering Pronghorn Metro")
+ /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+ .map_io = ixp4xx_map_io,
+ .init_irq = ixp4xx_init_irq,
+ .timer = &ixp4xx_timer,
+subsys_initcall(sidewinder_pci_init);
--- /dev/null
+++ b/arch/arm/mach-ixp4xx/sidewinder-setup.c
-@@ -0,0 +1,149 @@
+@@ -0,0 +1,147 @@
+/*
+ * arch/arm/mach-ixp4xx/sidewinder-setup.c
+ *
+
+MACHINE_START(SIDEWINDER, "ADI Engineering Sidewinder")
+ /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+ .map_io = ixp4xx_map_io,
+ .init_irq = ixp4xx_init_irq,
+ .timer = &ixp4xx_timer,
obj-$(CONFIG_IXP4XX_QMGR) += ixp4xx_qmgr.o
--- /dev/null
+++ b/arch/arm/mach-ixp4xx/compex-setup.c
-@@ -0,0 +1,136 @@
+@@ -0,0 +1,134 @@
+/*
+ * arch/arm/mach-ixp4xx/compex-setup.c
+ *
+
+MACHINE_START(COMPEX, "Compex WP18 / NP18A")
+ /* Maintainer: Imre Kaloz <Kaloz@openwrt.org> */
-+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+ .map_io = ixp4xx_map_io,
+ .init_irq = ixp4xx_init_irq,
+ .timer = &ixp4xx_timer,
+subsys_initcall(wrt300nv2_pci_init);
--- /dev/null
+++ b/arch/arm/mach-ixp4xx/wrt300nv2-setup.c
-@@ -0,0 +1,108 @@
+@@ -0,0 +1,106 @@
+/*
+ * arch/arm/mach-ixp4xx/wrt300nv2-setup.c
+ *
+#ifdef CONFIG_MACH_WRT300NV2
+MACHINE_START(WRT300NV2, "Linksys WRT300N v2")
+ /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+ .map_io = ixp4xx_map_io,
+ .init_irq = ixp4xx_init_irq,
+ .timer = &ixp4xx_timer,
--- /dev/null
+++ b/arch/arm/mach-ixp4xx/ap1000-setup.c
-@@ -0,0 +1,151 @@
+@@ -0,0 +1,149 @@
+/*
+ * arch/arm/mach-ixp4xx/ap1000-setup.c
+ *
+#ifdef CONFIG_MACH_AP1000
+MACHINE_START(AP1000, "Lanready AP-1000")
+ /* Maintainer: Imre Kaloz <Kaloz@openwrt.org> */
-+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+ .fixup = ap1000_fixup,
+ .map_io = ixp4xx_map_io,
+ .init_irq = ixp4xx_init_irq,
static void __init wg302v1_init(void)
{
ixp4xx_sys_init();
-@@ -133,6 +163,7 @@ MACHINE_START(WG302V1, "Netgear WG302 v1
+@@ -131,6 +161,7 @@ static void __init wg302v1_init(void)
+ #ifdef CONFIG_MACH_WG302V1
+ MACHINE_START(WG302V1, "Netgear WG302 v1 / WAG302 v1")
/* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
- .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
- .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+ .fixup = wg302v1_fixup,
.map_io = ixp4xx_map_io,
.init_irq = ixp4xx_init_irq,
obj-$(CONFIG_IXP4XX_QMGR) += ixp4xx_qmgr.o
--- /dev/null
+++ b/arch/arm/mach-ixp4xx/tw5334-setup.c
-@@ -0,0 +1,163 @@
+@@ -0,0 +1,161 @@
+/*
+ * arch/arm/mach-ixp4xx/tw5334-setup.c
+ *
+#ifdef CONFIG_MACH_TW5334
+MACHINE_START(TW5334, "Titan Wireless TW-533-4")
+ /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+ .map_io = ixp4xx_map_io,
+ .init_irq = ixp4xx_init_irq,
+ .timer = &ixp4xx_timer,
+
--- /dev/null
+++ b/arch/arm/mach-ixp4xx/mi424wr-setup.c
-@@ -0,0 +1,344 @@
+@@ -0,0 +1,342 @@
+/*
+ * arch/arm/mach-ixp4xx/mi424wr-setup.c
+ *
+
+MACHINE_START(MI424WR, "Actiontec MI424WR")
+ /* Maintainer: Jose Vasconcellos */
-+ .phys_io = IXP4XX_UART2_BASE_PHYS,
-+ .io_pg_offst = ((IXP4XX_UART2_BASE_VIRT) >> 18) & 0xfffc,
+ .map_io = ixp4xx_map_io,
+ .init_irq = ixp4xx_init_irq,
+ .timer = &ixp4xx_timer,
+subsys_initcall(cambria_pci_init);
--- /dev/null
+++ b/arch/arm/mach-ixp4xx/cambria-setup.c
-@@ -0,0 +1,429 @@
+@@ -0,0 +1,427 @@
+/*
+ * arch/arm/mach-ixp4xx/cambria-setup.c
+ *
+
+MACHINE_START(CAMBRIA, "Gateworks Cambria series")
+ /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+ .map_io = ixp4xx_map_io,
+ .init_irq = ixp4xx_init_irq,
+ .timer = &ixp4xx_timer,
unsigned int custom_divisor;
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
-@@ -412,6 +412,20 @@ static void mem_serial_out(struct uart_p
+@@ -413,6 +413,20 @@ static void mem_serial_out(struct uart_p
writeb(value, p->membase + offset);
}
static void mem32_serial_out(struct uart_port *p, int offset, int value)
{
offset = map_8250_out_reg(p, offset) << p->regshift;
-@@ -503,6 +517,11 @@ static void set_io_from_upio(struct uart
+@@ -504,6 +518,11 @@ static void set_io_from_upio(struct uart
p->serial_out = mem32_serial_out;
break;
case UPIO_AU:
p->serial_in = au_serial_in;
p->serial_out = au_serial_out;
-@@ -534,6 +553,7 @@ serial_out_sync(struct uart_8250_port *u
+@@ -535,6 +554,7 @@ serial_out_sync(struct uart_8250_port *u
switch (p->iotype) {
case UPIO_MEM:
case UPIO_MEM32:
case UPIO_AU:
case UPIO_DWAPB:
p->serial_out(p, offset, value);
-@@ -2476,6 +2496,7 @@ static int serial8250_request_std_resour
+@@ -2477,6 +2497,7 @@ static int serial8250_request_std_resour
case UPIO_MEM32:
case UPIO_MEM:
case UPIO_DWAPB:
if (!up->port.mapbase)
break;
-@@ -2513,6 +2534,7 @@ static void serial8250_release_std_resou
+@@ -2514,6 +2535,7 @@ static void serial8250_release_std_resou
case UPIO_MEM32:
case UPIO_MEM:
case UPIO_DWAPB:
if (!up->port.mapbase)
break;
-@@ -3024,6 +3046,7 @@ static int __devinit serial8250_probe(st
+@@ -3025,6 +3047,7 @@ static int __devinit serial8250_probe(st
port.set_termios = p->set_termios;
port.pm = p->pm;
port.dev = &dev->dev;
port.irqflags |= irqflag;
ret = serial8250_register_port(&port);
if (ret < 0) {
-@@ -3173,6 +3196,7 @@ int serial8250_register_port(struct uart
+@@ -3174,6 +3197,7 @@ int serial8250_register_port(struct uart
uart->port.iotype = port->iotype;
uart->port.flags = port->flags | UPF_BOOT_AUTOCONF;
uart->port.mapbase = port->mapbase;
uart->port.dev = port->dev;
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
-@@ -2130,6 +2130,7 @@ uart_report_port(struct uart_driver *drv
+@@ -2129,6 +2129,7 @@ uart_report_port(struct uart_driver *drv
snprintf(address, sizeof(address),
"I/O 0x%lx offset 0x%x", port->iobase, port->hub6);
break;
case UPIO_MEM:
case UPIO_MEM32:
case UPIO_AU:
-@@ -2550,6 +2551,7 @@ int uart_match_port(struct uart_port *po
+@@ -2549,6 +2550,7 @@ int uart_match_port(struct uart_port *po
case UPIO_HUB6:
return (port1->iobase == port2->iobase) &&
(port1->hub6 == port2->hub6);
}
static struct cambria_board_info cambria_boards[] __initdata = {
-@@ -460,6 +507,14 @@ static struct i2c_board_info __initdata
+@@ -460,6 +507,14 @@ static struct i2c_board_info __initdata
I2C_BOARD_INFO("24c08", 0x51),
.platform_data = &cambria_eeprom_info
},
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
-@@ -176,6 +176,13 @@ config LEDS_LP3944
- To compile this driver as a module, choose M here: the
- module will be called leds-lp3944.
+@@ -210,6 +210,13 @@ config LEDS_LP5523
+ Driver provides direct control via LED class and interface for
+ programming the engines.
+config LEDS_LATCH
+ tristate "LED Support for Memory Latched LEDs"
+
config LEDS_CLEVO_MAIL
tristate "Mail LED on Clevo notebook"
- depends on X86 && SERIO_I8042 && DMI
+ depends on LEDS_CLASS
--- /dev/null
+++ b/drivers/leds/leds-latch.c
@@ -0,0 +1,150 @@
obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
+obj-$(CONFIG_LEDS_LATCH) += leds-latch.o
obj-$(CONFIG_LEDS_LP3944) += leds-lp3944.o
- obj-$(CONFIG_LEDS_CLEVO_MAIL) += leds-clevo-mail.o
- obj-$(CONFIG_LEDS_HP6XX) += leds-hp6xx.o
+ obj-$(CONFIG_LEDS_LP5521) += leds-lp5521.o
+ obj-$(CONFIG_LEDS_LP5523) += leds-lp5523.o
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
-@@ -165,5 +165,19 @@ struct gpio_led_platform_data {
+@@ -204,5 +204,19 @@ struct gpio_led_platform_data {
unsigned long *delay_off);
};
+subsys_initcall(usr8200_pci_init);
--- /dev/null
+++ b/arch/arm/mach-ixp4xx/usr8200-setup.c
-@@ -0,0 +1,212 @@
+@@ -0,0 +1,210 @@
+/*
+ * arch/arm/mach-ixp4xx/usr8200-setup.c
+ *
+
+MACHINE_START(USR8200, "USRobotics USR8200")
+ /* Maintainer: Peter Denison <openwrt@marshadder.org> */
-+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+ .map_io = ixp4xx_map_io,
+ .init_irq = ixp4xx_init_irq,
+ .timer = &ixp4xx_timer,
+subsys_initcall(tw2662_pci_init);
--- /dev/null
+++ b/arch/arm/mach-ixp4xx/tw2662-setup.c
-@@ -0,0 +1,212 @@
+@@ -0,0 +1,210 @@
+/*
+ * arch/arm/mach-ixp4xx/tw2662-setup.c
+ *
+#ifdef CONFIG_MACH_TW2662
+MACHINE_START(TW2662, "Titan Wireless TW-266-2")
+ /* Maintainer: Alexandros C. Couloumbis <alex@ozo.com> */
-+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+ .fixup = tw2662_fixup,
+ .map_io = ixp4xx_map_io,
+ .init_irq = ixp4xx_init_irq,
+++ /dev/null
---- a/arch/arm/mach-ixp4xx/ap1000-setup.c
-+++ b/arch/arm/mach-ixp4xx/ap1000-setup.c
-@@ -167,8 +167,6 @@ static void __init ap1000_init(void)
- #ifdef CONFIG_MACH_AP1000
- MACHINE_START(AP1000, "Lanready AP-1000")
- /* Maintainer: Imre Kaloz <Kaloz@openwrt.org> */
-- .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-- .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
- .fixup = ap1000_fixup,
- .map_io = ixp4xx_map_io,
- .init_irq = ixp4xx_init_irq,
---- a/arch/arm/mach-ixp4xx/cambria-setup.c
-+++ b/arch/arm/mach-ixp4xx/cambria-setup.c
-@@ -563,8 +563,6 @@ late_initcall(cambria_model_setup);
-
- MACHINE_START(CAMBRIA, "Gateworks Cambria series")
- /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-- .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-- .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
- .map_io = ixp4xx_map_io,
- .init_irq = ixp4xx_init_irq,
- .timer = &ixp4xx_timer,
---- a/arch/arm/mach-ixp4xx/compex-setup.c
-+++ b/arch/arm/mach-ixp4xx/compex-setup.c
-@@ -126,8 +126,6 @@ static void __init compex_init(void)
-
- MACHINE_START(COMPEX, "Compex WP18 / NP18A")
- /* Maintainer: Imre Kaloz <Kaloz@openwrt.org> */
-- .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-- .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
- .map_io = ixp4xx_map_io,
- .init_irq = ixp4xx_init_irq,
- .timer = &ixp4xx_timer,
---- a/arch/arm/mach-ixp4xx/mi424wr-setup.c
-+++ b/arch/arm/mach-ixp4xx/mi424wr-setup.c
-@@ -333,8 +333,6 @@ static void __init mi424wr_init(void)
-
- MACHINE_START(MI424WR, "Actiontec MI424WR")
- /* Maintainer: Jose Vasconcellos */
-- .phys_io = IXP4XX_UART2_BASE_PHYS,
-- .io_pg_offst = ((IXP4XX_UART2_BASE_VIRT) >> 18) & 0xfffc,
- .map_io = ixp4xx_map_io,
- .init_irq = ixp4xx_init_irq,
- .timer = &ixp4xx_timer,
---- a/arch/arm/mach-ixp4xx/pronghorn-setup.c
-+++ b/arch/arm/mach-ixp4xx/pronghorn-setup.c
-@@ -224,8 +224,6 @@ static void __init pronghorn_init(void)
-
- MACHINE_START(PRONGHORN, "ADI Engineering Pronghorn")
- /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-- .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-- .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
- .map_io = ixp4xx_map_io,
- .init_irq = ixp4xx_init_irq,
- .timer = &ixp4xx_timer,
-@@ -235,8 +233,6 @@ MACHINE_END
-
- MACHINE_START(PRONGHORNMETRO, "ADI Engineering Pronghorn Metro")
- /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-- .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-- .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
- .map_io = ixp4xx_map_io,
- .init_irq = ixp4xx_init_irq,
- .timer = &ixp4xx_timer,
---- a/arch/arm/mach-ixp4xx/sidewinder-setup.c
-+++ b/arch/arm/mach-ixp4xx/sidewinder-setup.c
-@@ -139,8 +139,6 @@ static void __init sidewinder_init(void)
-
- MACHINE_START(SIDEWINDER, "ADI Engineering Sidewinder")
- /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-- .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-- .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
- .map_io = ixp4xx_map_io,
- .init_irq = ixp4xx_init_irq,
- .timer = &ixp4xx_timer,
---- a/arch/arm/mach-ixp4xx/tw2662-setup.c
-+++ b/arch/arm/mach-ixp4xx/tw2662-setup.c
-@@ -200,8 +200,6 @@ static void __init tw2662_init(void)
- #ifdef CONFIG_MACH_TW2662
- MACHINE_START(TW2662, "Titan Wireless TW-266-2")
- /* Maintainer: Alexandros C. Couloumbis <alex@ozo.com> */
-- .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-- .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
- .fixup = tw2662_fixup,
- .map_io = ixp4xx_map_io,
- .init_irq = ixp4xx_init_irq,
---- a/arch/arm/mach-ixp4xx/tw5334-setup.c
-+++ b/arch/arm/mach-ixp4xx/tw5334-setup.c
-@@ -152,8 +152,6 @@ static void __init tw5334_init(void)
- #ifdef CONFIG_MACH_TW5334
- MACHINE_START(TW5334, "Titan Wireless TW-533-4")
- /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-- .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-- .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
- .map_io = ixp4xx_map_io,
- .init_irq = ixp4xx_init_irq,
- .timer = &ixp4xx_timer,
---- a/arch/arm/mach-ixp4xx/usr8200-setup.c
-+++ b/arch/arm/mach-ixp4xx/usr8200-setup.c
-@@ -202,8 +202,6 @@ static void __init usr8200_init(void)
-
- MACHINE_START(USR8200, "USRobotics USR8200")
- /* Maintainer: Peter Denison <openwrt@marshadder.org> */
-- .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-- .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
- .map_io = ixp4xx_map_io,
- .init_irq = ixp4xx_init_irq,
- .timer = &ixp4xx_timer,
---- a/arch/arm/mach-ixp4xx/wg302v1-setup.c
-+++ b/arch/arm/mach-ixp4xx/wg302v1-setup.c
-@@ -161,8 +161,6 @@ static void __init wg302v1_init(void)
- #ifdef CONFIG_MACH_WG302V1
- MACHINE_START(WG302V1, "Netgear WG302 v1 / WAG302 v1")
- /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-- .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-- .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
- .fixup = wg302v1_fixup,
- .map_io = ixp4xx_map_io,
- .init_irq = ixp4xx_init_irq,
---- a/arch/arm/mach-ixp4xx/wrt300nv2-setup.c
-+++ b/arch/arm/mach-ixp4xx/wrt300nv2-setup.c
-@@ -157,8 +157,6 @@ static void __init wrt300nv2_init(void)
- #ifdef CONFIG_MACH_WRT300NV2
- MACHINE_START(WRT300NV2, "Linksys WRT300N v2")
- /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
-- .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
-- .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
- .map_io = ixp4xx_map_io,
- .init_irq = ixp4xx_init_irq,
- .timer = &ixp4xx_timer,