--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
-@@ -417,7 +417,6 @@ config ARCH_IXP4XX
+@@ -418,7 +418,6 @@ config ARCH_IXP4XX
select GENERIC_GPIO
select GENERIC_TIME
select GENERIC_CLOCKEVENTS
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
-@@ -417,6 +417,7 @@ config ARCH_IXP4XX
+@@ -418,6 +418,7 @@ config ARCH_IXP4XX
select GENERIC_GPIO
select GENERIC_TIME
select GENERIC_CLOCKEVENTS
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
-@@ -427,6 +427,17 @@ static void __init ixp4xx_clocksource_in
+@@ -466,6 +466,17 @@ static void __init ixp4xx_clocksource_in
}
/*
+MODULE_AUTHOR("Chris Lang");
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
-@@ -196,6 +196,14 @@ config GPIO_LANGWELL
- help
- Say Y here to support Intel Moorestown platform GPIO.
+@@ -275,6 +275,14 @@ config GPIO_TIMBERDALE
+ ---help---
+ Add support for the GPIO IP in the timberdale FPGA.
+config GPIO_GW_I2C_PLD
+ tristate "Gateworks I2C PLD GPIO Expander"
---- a/arch/arm/Kconfig 2010-05-17 19:51:29.000000000 +0200
-+++ b/arch/arm/Kconfig 2010-05-18 17:44:39.000000000 +0200
-@@ -433,7 +433,6 @@ config ARCH_IXP4XX
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -434,7 +434,6 @@ config ARCH_IXP4XX
select GENERIC_GPIO
select GENERIC_TIME
select GENERIC_CLOCKEVENTS
help
Support for Intel's IXP4XX (XScale) family of processors.
---- a/arch/arm/mach-ixp4xx/Kconfig 2010-02-25 14:45:00.000000000 +0100
-+++ b/arch/arm/mach-ixp4xx/Kconfig 2010-05-18 17:44:39.000000000 +0200
+--- a/arch/arm/mach-ixp4xx/Kconfig
++++ b/arch/arm/mach-ixp4xx/Kconfig
@@ -199,6 +199,43 @@ config IXP4XX_INDIRECT_PCI
need to use the indirect method instead. If you don't know
what you need, leave this option unselected.
config IXP4XX_QMGR
tristate "IXP4xx Queue Manager support"
help
---- a/arch/arm/mach-ixp4xx/common-pci.c 2010-05-17 19:51:29.000000000 +0200
-+++ b/arch/arm/mach-ixp4xx/common-pci.c 2010-05-18 17:44:39.000000000 +0200
+--- a/arch/arm/mach-ixp4xx/common-pci.c
++++ b/arch/arm/mach-ixp4xx/common-pci.c
@@ -321,27 +321,33 @@ static int abort_handler(unsigned long a
*/
static int ixp4xx_pci_platform_notify(struct device *dev)
void __init ixp4xx_pci_preinit(void)
{
---- a/arch/arm/mach-ixp4xx/include/mach/memory.h 2009-03-24 18:00:31.000000000 +0100
-+++ b/arch/arm/mach-ixp4xx/include/mach/memory.h 2010-05-18 17:44:39.000000000 +0200
+--- a/arch/arm/mach-ixp4xx/include/mach/memory.h
++++ b/arch/arm/mach-ixp4xx/include/mach/memory.h
@@ -16,10 +16,12 @@
#if !defined(__ASSEMBLY__) && defined(CONFIG_PCI)
--- a/arch/arm/mach-ixp4xx/gateway7001-setup.c
+++ b/arch/arm/mach-ixp4xx/gateway7001-setup.c
-@@ -76,9 +76,35 @@ static struct platform_device gateway700
+@@ -75,9 +75,35 @@ static struct platform_device gateway700
.resource = &gateway7001_uart_resource,
};
static void __init gateway7001_init(void)
--- a/arch/arm/mach-ixp4xx/wg302v2-setup.c
+++ b/arch/arm/mach-ixp4xx/wg302v2-setup.c
-@@ -77,9 +77,26 @@ static struct platform_device wg302v2_ua
+@@ -76,9 +76,26 @@ static struct platform_device wg302v2_ua
.resource = &wg302v2_uart_resource,
};
--- a/arch/arm/mach-ixp4xx/coyote-setup.c
+++ b/arch/arm/mach-ixp4xx/coyote-setup.c
-@@ -82,9 +82,37 @@ static struct platform_device coyote_uar
+@@ -81,9 +81,37 @@ static struct platform_device coyote_uar
.resource = &coyote_uart_resource,
};
unsigned int custom_divisor;
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
-@@ -409,6 +409,20 @@ static void mem_serial_out(struct uart_p
+@@ -410,6 +410,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;
-@@ -502,6 +516,11 @@ static void set_io_from_upio(struct uart
+@@ -503,6 +517,11 @@ static void set_io_from_upio(struct uart
p->serial_out = mem32_serial_out;
break;
#ifdef CONFIG_SERIAL_8250_AU1X00
case UPIO_AU:
p->serial_in = au_serial_in;
-@@ -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:
#ifdef CONFIG_SERIAL_8250_AU1X00
case UPIO_AU:
#endif
-@@ -2450,6 +2470,7 @@ static int serial8250_request_std_resour
+@@ -2460,6 +2480,7 @@ static int serial8250_request_std_resour
case UPIO_MEM32:
case UPIO_MEM:
case UPIO_DWAPB:
if (!up->port.mapbase)
break;
-@@ -2487,6 +2508,7 @@ static void serial8250_release_std_resou
+@@ -2497,6 +2518,7 @@ static void serial8250_release_std_resou
case UPIO_MEM32:
case UPIO_MEM:
case UPIO_DWAPB:
if (!up->port.mapbase)
break;
-@@ -2964,6 +2986,7 @@ static int __devinit serial8250_probe(st
+@@ -2995,6 +3017,7 @@ static int __devinit serial8250_probe(st
port.serial_in = p->serial_in;
port.serial_out = p->serial_out;
port.dev = &dev->dev;
port.irqflags |= irqflag;
ret = serial8250_register_port(&port);
if (ret < 0) {
-@@ -3113,6 +3136,7 @@ int serial8250_register_port(struct uart
+@@ -3144,6 +3167,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;
--- a/arch/arm/mach-ixp4xx/ixp4xx_npe.c
+++ b/arch/arm/mach-ixp4xx/ixp4xx_npe.c
-@@ -583,6 +583,8 @@ int npe_load_firmware(struct npe *npe, c
+@@ -582,6 +582,8 @@ int npe_load_firmware(struct npe *npe, c
npe_reset(npe);
#endif
--- a/drivers/net/arm/ixp4xx_eth.c
+++ b/drivers/net/arm/ixp4xx_eth.c
-@@ -1217,6 +1217,10 @@ static int __devinit eth_init_one(struct
+@@ -1221,6 +1221,10 @@ static int __devinit eth_init_one(struct
if ((err = IS_ERR(port->phydev)))
goto err_free_mem;
--- a/drivers/net/arm/ixp4xx_eth.c
+++ b/drivers/net/arm/ixp4xx_eth.c
-@@ -396,6 +396,50 @@ static void ixp4xx_adjust_link(struct ne
+@@ -397,6 +397,50 @@ static void ixp4xx_adjust_link(struct ne
dev->name, port->speed, port->duplex ? "full" : "half");
}
static inline void debug_pkt(struct net_device *dev, const char *func,
u8 *data, int len)
-@@ -1005,8 +1049,7 @@ static int eth_open(struct net_device *d
+@@ -1009,8 +1053,7 @@ static int eth_open(struct net_device *d
return err;
}
for (i = 0; i < ETH_ALEN; i++)
__raw_writel(dev->dev_addr[i], &port->regs->hw_addr[i]);
-@@ -1127,7 +1170,7 @@ static int eth_close(struct net_device *
+@@ -1131,7 +1174,7 @@ static int eth_close(struct net_device *
printk(KERN_CRIT "%s: unable to disable loopback\n",
dev->name);
if (!ports_open)
qmgr_disable_irq(TXDONE_QUEUE);
-@@ -1153,7 +1196,6 @@ static int __devinit eth_init_one(struct
+@@ -1157,7 +1200,6 @@ static int __devinit eth_init_one(struct
struct net_device *dev;
struct eth_plat_info *plat = pdev->dev.platform_data;
u32 regs_phys;
int err;
if (!(dev = alloc_etherdev(sizeof(struct port))))
-@@ -1211,18 +1253,10 @@ static int __devinit eth_init_one(struct
+@@ -1215,18 +1257,10 @@ static int __devinit eth_init_one(struct
__raw_writel(DEFAULT_CORE_CNTRL, &port->regs->core_control);
udelay(50);
if ((err = register_netdev(dev)))
goto err_phy_dis;
-@@ -1232,7 +1266,7 @@ static int __devinit eth_init_one(struct
+@@ -1236,7 +1270,7 @@ static int __devinit eth_init_one(struct
return 0;
err_phy_dis:
err_free_mem:
npe_port_tab[NPE_ID(port->id)] = NULL;
platform_set_drvdata(pdev, NULL);
-@@ -1250,7 +1284,7 @@ static int __devexit eth_remove_one(stru
+@@ -1254,7 +1288,7 @@ static int __devexit eth_remove_one(stru
struct port *port = netdev_priv(dev);
unregister_netdev(dev);
--- a/drivers/net/arm/ixp4xx_eth.c
+++ b/drivers/net/arm/ixp4xx_eth.c
-@@ -168,7 +168,7 @@ struct port {
+@@ -169,7 +169,7 @@ struct port {
struct desc *desc_tab; /* coherent */
u32 desc_tab_phys;
int id; /* logical port ID */
u8 firmware[4];
};
-@@ -365,37 +365,52 @@ static void ixp4xx_mdio_remove(void)
+@@ -366,37 +366,52 @@ static void ixp4xx_mdio_remove(void)
mdiobus_free(mdio_bus);
}
static int ixp4xx_phy_connect(struct net_device *dev)
{
struct port *port = netdev_priv(dev);
-@@ -430,7 +445,6 @@ static void ixp4xx_phy_start(struct net_
+@@ -431,7 +446,6 @@ static void ixp4xx_phy_start(struct net_
{
struct port *port = netdev_priv(dev);
phy_start(port->phydev);
}
-@@ -1260,6 +1274,10 @@ static int __devinit eth_init_one(struct
+@@ -1264,6 +1278,10 @@ static int __devinit eth_init_one(struct
if ((err = register_netdev(dev)))
goto err_phy_dis;
/* Information about built-in HSS (synchronous serial) interfaces */
--- a/drivers/net/arm/ixp4xx_eth.c
+++ b/drivers/net/arm/ixp4xx_eth.c
-@@ -417,6 +417,37 @@ static int ixp4xx_phy_connect(struct net
+@@ -418,6 +418,37 @@ static int ixp4xx_phy_connect(struct net
struct eth_plat_info *plat = port->plat;
char phy_id[MII_BUS_ID_SIZE + 3];
snprintf(phy_id, MII_BUS_ID_SIZE + 3, PHY_ID_FMT, "0", plat->phy);
port->phydev = phy_connect(dev, phy_id, &ixp4xx_adjust_link, 0,
PHY_INTERFACE_MODE_MII);
-@@ -438,21 +469,32 @@ static void ixp4xx_phy_disconnect(struct
+@@ -439,21 +470,32 @@ static void ixp4xx_phy_disconnect(struct
{
struct port *port = netdev_priv(dev);
}
static inline void debug_pkt(struct net_device *dev, const char *func,
-@@ -826,6 +868,10 @@ static int eth_ioctl(struct net_device *
+@@ -830,6 +872,10 @@ static int eth_ioctl(struct net_device *
if (!netif_running(dev))
return -EINVAL;
return phy_mii_ioctl(port->phydev, if_mii(req), cmd);
}
-@@ -845,18 +891,30 @@ static void ixp4xx_get_drvinfo(struct ne
+@@ -849,18 +895,30 @@ static void ixp4xx_get_drvinfo(struct ne
static int ixp4xx_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
{
struct port *port = netdev_priv(dev);
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
-@@ -157,6 +157,13 @@ config LEDS_LP3944
+@@ -166,6 +166,13 @@ config LEDS_LP3944
To compile this driver as a module, choose M here: the
module will be called leds-lp3944.
+
config LEDS_CLEVO_MAIL
tristate "Mail LED on Clevo notebook"
- depends on LEDS_CLASS && X86 && SERIO_I8042 && DMI
+ depends on X86 && SERIO_I8042 && DMI
--- /dev/null
+++ b/drivers/leds/leds-latch.c
@@ -0,0 +1,150 @@
+MODULE_LICENSE("GPL");
--- a/drivers/leds/Makefile
+++ b/drivers/leds/Makefile
-@@ -20,6 +20,7 @@ obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-c
+@@ -21,6 +21,7 @@ obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-c
obj-$(CONFIG_LEDS_SUNFIRE) += leds-sunfire.o
obj-$(CONFIG_LEDS_PCA9532) += leds-pca9532.o
obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
--- a/arch/arm/mach-ixp4xx/avila-setup.c
+++ b/arch/arm/mach-ixp4xx/avila-setup.c
-@@ -38,6 +38,13 @@
+@@ -36,6 +36,13 @@
#define AVILA_SDA_PIN 7
#define AVILA_SCL_PIN 6
--- a/drivers/net/arm/ixp4xx_eth.c
+++ b/drivers/net/arm/ixp4xx_eth.c
-@@ -52,7 +52,7 @@
+@@ -53,7 +53,7 @@
#define POOL_ALLOC_SIZE (sizeof(struct desc) * (RX_DESCS + TX_DESCS))
#define REGS_SIZE 0x1000
#define RX_BUFF_SIZE ALIGN((NET_IP_ALIGN) + MAX_MRU, 4)
#define NAPI_WEIGHT 16
-@@ -1061,6 +1061,32 @@ static void destroy_queues(struct port *
+@@ -1065,6 +1065,32 @@ static void destroy_queues(struct port *
}
}
static int eth_open(struct net_device *dev)
{
struct port *port = netdev_priv(dev);
-@@ -1112,6 +1138,8 @@ static int eth_open(struct net_device *d
+@@ -1116,6 +1142,8 @@ static int eth_open(struct net_device *d
if (npe_send_recv_message(port->npe, &msg, "ETH_SET_FIREWALL_MODE"))
return -EIO;
if ((err = request_queues(port)) != 0)
return err;
-@@ -1251,7 +1279,26 @@ static int eth_close(struct net_device *
+@@ -1255,7 +1283,26 @@ static int eth_close(struct net_device *
return 0;
}
--- a/arch/arm/mach-ixp4xx/gtwx5715-setup.c
+++ b/arch/arm/mach-ixp4xx/gtwx5715-setup.c
-@@ -179,10 +179,37 @@ static struct platform_device gtwx5715_s
+@@ -178,10 +178,37 @@ static struct platform_device gtwx5715_s
},
};
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
-@@ -417,6 +417,7 @@ config ARCH_IXP4XX
+@@ -434,6 +434,7 @@ config ARCH_IXP4XX
select GENERIC_GPIO
select GENERIC_TIME
select GENERIC_CLOCKEVENTS
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
-@@ -384,7 +384,8 @@ EXPORT_SYMBOL(dma_mmap_writecombine);
+@@ -381,7 +381,8 @@ EXPORT_SYMBOL(dma_mmap_writecombine);
*/
void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr_t handle)
{
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
-@@ -322,12 +322,13 @@ static void __init setup_processor(void)
+@@ -323,12 +323,13 @@ static void __init setup_processor(void)
void cpu_init(void)
{
unsigned int cpu = smp_processor_id();
/*
* Define the placement constraint for the inline asm directive below.
-@@ -386,13 +387,14 @@ static struct machine_desc * __init setu
+@@ -387,13 +388,14 @@ static struct machine_desc * __init setu
static int __init arm_add_memory(unsigned long start, unsigned long size)
{
+MODULE_AUTHOR("Chris Lang");
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
-@@ -221,6 +221,14 @@ config GPIO_TIMBERDALE
- ---help---
- Add support for the GPIO IP in the timberdale FPGA.
+@@ -298,6 +298,14 @@ config GPIO_RDC321X
+ Support for the RDC R321x SoC GPIOs over southbridge
+ PCI configuration space.
+config GPIO_GW_I2C_PLD
+ tristate "Gateworks I2C PLD GPIO Expander"
config GPIO_MAX7301
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
-@@ -31,3 +31,4 @@ obj-$(CONFIG_GPIO_WM8994) += wm8994-gpio
+@@ -35,3 +35,4 @@ obj-$(CONFIG_GPIO_WM8994) += wm8994-gpio
obj-$(CONFIG_GPIO_SCH) += sch_gpio.o
obj-$(CONFIG_GPIO_RDC321X) += rdc321x-gpio.o
obj-$(CONFIG_GPIO_JANZ_TTL) += janz-ttl.o
--- a/arch/arm/mach-ixp4xx/gateway7001-setup.c
+++ b/arch/arm/mach-ixp4xx/gateway7001-setup.c
-@@ -76,9 +76,35 @@ static struct platform_device gateway700
+@@ -75,9 +75,35 @@ static struct platform_device gateway700
.resource = &gateway7001_uart_resource,
};
static void __init gateway7001_init(void)
--- a/arch/arm/mach-ixp4xx/wg302v2-setup.c
+++ b/arch/arm/mach-ixp4xx/wg302v2-setup.c
-@@ -77,9 +77,26 @@ static struct platform_device wg302v2_ua
+@@ -76,9 +76,26 @@ static struct platform_device wg302v2_ua
.resource = &wg302v2_uart_resource,
};
--- a/arch/arm/configs/ixp4xx_defconfig
+++ b/arch/arm/configs/ixp4xx_defconfig
-@@ -155,6 +155,7 @@ CONFIG_MACH_AVILA=y
+@@ -13,6 +13,7 @@ CONFIG_MACH_AVILA=y
CONFIG_MACH_LOFT=y
CONFIG_ARCH_ADI_COYOTE=y
CONFIG_MACH_GATEWAY7001=y
--- a/arch/arm/configs/ixp4xx_defconfig
+++ b/arch/arm/configs/ixp4xx_defconfig
-@@ -157,6 +157,8 @@ CONFIG_ARCH_ADI_COYOTE=y
+@@ -15,6 +15,8 @@ CONFIG_ARCH_ADI_COYOTE=y
CONFIG_MACH_GATEWAY7001=y
CONFIG_MACH_WG302V1=y
CONFIG_MACH_WG302V2=y
--- a/arch/arm/mach-ixp4xx/coyote-setup.c
+++ b/arch/arm/mach-ixp4xx/coyote-setup.c
-@@ -82,9 +82,37 @@ static struct platform_device coyote_uar
+@@ -81,9 +81,37 @@ static struct platform_device coyote_uar
.resource = &coyote_uart_resource,
};
unsigned int type; /* If UPF_FIXED_TYPE */
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
-@@ -288,6 +288,7 @@ struct uart_port {
+@@ -293,6 +293,7 @@ struct uart_port {
#define UPIO_TSI (5) /* Tsi108/109 type IO */
#define UPIO_DWAPB (6) /* DesignWare APB UART */
#define UPIO_RM9000 (7) /* RM9000 type IO */
unsigned int read_status_mask; /* driver specific */
unsigned int ignore_status_mask; /* driver specific */
-@@ -330,6 +331,7 @@ struct uart_port {
+@@ -335,6 +336,7 @@ struct uart_port {
unsigned int mctrl; /* current modem ctrl settings */
unsigned int timeout; /* character-based timeout */
unsigned int custom_divisor;
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
-@@ -409,6 +409,20 @@ static void mem_serial_out(struct uart_p
+@@ -410,6 +410,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;
-@@ -502,6 +516,11 @@ static void set_io_from_upio(struct uart
+@@ -503,6 +517,11 @@ static void set_io_from_upio(struct uart
p->serial_out = mem32_serial_out;
break;
#ifdef CONFIG_SERIAL_8250_AU1X00
case UPIO_AU:
p->serial_in = au_serial_in;
-@@ -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:
#ifdef CONFIG_SERIAL_8250_AU1X00
case UPIO_AU:
#endif
-@@ -2450,6 +2470,7 @@ static int serial8250_request_std_resour
+@@ -2460,6 +2480,7 @@ static int serial8250_request_std_resour
case UPIO_MEM32:
case UPIO_MEM:
case UPIO_DWAPB:
if (!up->port.mapbase)
break;
-@@ -2487,6 +2508,7 @@ static void serial8250_release_std_resou
+@@ -2497,6 +2518,7 @@ static void serial8250_release_std_resou
case UPIO_MEM32:
case UPIO_MEM:
case UPIO_DWAPB:
if (!up->port.mapbase)
break;
-@@ -2964,6 +2986,7 @@ static int __devinit serial8250_probe(st
+@@ -2995,6 +3017,7 @@ static int __devinit serial8250_probe(st
port.serial_in = p->serial_in;
port.serial_out = p->serial_out;
port.dev = &dev->dev;
port.irqflags |= irqflag;
ret = serial8250_register_port(&port);
if (ret < 0) {
-@@ -3113,6 +3136,7 @@ int serial8250_register_port(struct uart
+@@ -3144,6 +3167,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;
--- a/arch/arm/mach-ixp4xx/ixp4xx_npe.c
+++ b/arch/arm/mach-ixp4xx/ixp4xx_npe.c
-@@ -583,6 +583,8 @@ int npe_load_firmware(struct npe *npe, c
+@@ -582,6 +582,8 @@ int npe_load_firmware(struct npe *npe, c
npe_reset(npe);
#endif
--- a/drivers/net/arm/ixp4xx_eth.c
+++ b/drivers/net/arm/ixp4xx_eth.c
-@@ -1217,6 +1217,10 @@ static int __devinit eth_init_one(struct
+@@ -1220,6 +1220,10 @@ static int __devinit eth_init_one(struct
if ((err = IS_ERR(port->phydev)))
goto err_free_mem;
--- a/drivers/net/arm/ixp4xx_eth.c
+++ b/drivers/net/arm/ixp4xx_eth.c
-@@ -396,6 +396,50 @@ static void ixp4xx_adjust_link(struct ne
+@@ -397,6 +397,50 @@ static void ixp4xx_adjust_link(struct ne
dev->name, port->speed, port->duplex ? "full" : "half");
}
static inline void debug_pkt(struct net_device *dev, const char *func,
u8 *data, int len)
-@@ -1005,8 +1049,7 @@ static int eth_open(struct net_device *d
+@@ -1008,8 +1052,7 @@ static int eth_open(struct net_device *d
return err;
}
for (i = 0; i < ETH_ALEN; i++)
__raw_writel(dev->dev_addr[i], &port->regs->hw_addr[i]);
-@@ -1127,7 +1170,7 @@ static int eth_close(struct net_device *
+@@ -1130,7 +1173,7 @@ static int eth_close(struct net_device *
printk(KERN_CRIT "%s: unable to disable loopback\n",
dev->name);
if (!ports_open)
qmgr_disable_irq(TXDONE_QUEUE);
-@@ -1153,7 +1196,6 @@ static int __devinit eth_init_one(struct
+@@ -1156,7 +1199,6 @@ static int __devinit eth_init_one(struct
struct net_device *dev;
struct eth_plat_info *plat = pdev->dev.platform_data;
u32 regs_phys;
int err;
if (!(dev = alloc_etherdev(sizeof(struct port))))
-@@ -1211,18 +1253,10 @@ static int __devinit eth_init_one(struct
+@@ -1214,18 +1256,10 @@ static int __devinit eth_init_one(struct
__raw_writel(DEFAULT_CORE_CNTRL, &port->regs->core_control);
udelay(50);
if ((err = register_netdev(dev)))
goto err_phy_dis;
-@@ -1232,7 +1266,7 @@ static int __devinit eth_init_one(struct
+@@ -1235,7 +1269,7 @@ static int __devinit eth_init_one(struct
return 0;
err_phy_dis:
err_free_mem:
npe_port_tab[NPE_ID(port->id)] = NULL;
platform_set_drvdata(pdev, NULL);
-@@ -1250,7 +1284,7 @@ static int __devexit eth_remove_one(stru
+@@ -1253,7 +1287,7 @@ static int __devexit eth_remove_one(stru
struct port *port = netdev_priv(dev);
unregister_netdev(dev);
--- a/drivers/net/arm/ixp4xx_eth.c
+++ b/drivers/net/arm/ixp4xx_eth.c
-@@ -168,7 +168,7 @@ struct port {
+@@ -169,7 +169,7 @@ struct port {
struct desc *desc_tab; /* coherent */
u32 desc_tab_phys;
int id; /* logical port ID */
u8 firmware[4];
};
-@@ -365,37 +365,52 @@ static void ixp4xx_mdio_remove(void)
+@@ -366,37 +366,52 @@ static void ixp4xx_mdio_remove(void)
mdiobus_free(mdio_bus);
}
static int ixp4xx_phy_connect(struct net_device *dev)
{
struct port *port = netdev_priv(dev);
-@@ -430,7 +445,6 @@ static void ixp4xx_phy_start(struct net_
+@@ -431,7 +446,6 @@ static void ixp4xx_phy_start(struct net_
{
struct port *port = netdev_priv(dev);
phy_start(port->phydev);
}
-@@ -1260,6 +1274,10 @@ static int __devinit eth_init_one(struct
+@@ -1263,6 +1277,10 @@ static int __devinit eth_init_one(struct
if ((err = register_netdev(dev)))
goto err_phy_dis;
/* Information about built-in HSS (synchronous serial) interfaces */
--- a/drivers/net/arm/ixp4xx_eth.c
+++ b/drivers/net/arm/ixp4xx_eth.c
-@@ -417,6 +417,37 @@ static int ixp4xx_phy_connect(struct net
+@@ -418,6 +418,37 @@ static int ixp4xx_phy_connect(struct net
struct eth_plat_info *plat = port->plat;
char phy_id[MII_BUS_ID_SIZE + 3];
snprintf(phy_id, MII_BUS_ID_SIZE + 3, PHY_ID_FMT, "0", plat->phy);
port->phydev = phy_connect(dev, phy_id, &ixp4xx_adjust_link, 0,
PHY_INTERFACE_MODE_MII);
-@@ -438,21 +469,32 @@ static void ixp4xx_phy_disconnect(struct
+@@ -439,21 +470,32 @@ static void ixp4xx_phy_disconnect(struct
{
struct port *port = netdev_priv(dev);
}
static inline void debug_pkt(struct net_device *dev, const char *func,
-@@ -826,6 +868,10 @@ static int eth_ioctl(struct net_device *
+@@ -829,6 +871,10 @@ static int eth_ioctl(struct net_device *
if (!netif_running(dev))
return -EINVAL;
return phy_mii_ioctl(port->phydev, if_mii(req), cmd);
}
-@@ -845,18 +891,30 @@ static void ixp4xx_get_drvinfo(struct ne
+@@ -848,18 +894,30 @@ static void ixp4xx_get_drvinfo(struct ne
static int ixp4xx_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
{
struct port *port = netdev_priv(dev);
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
-@@ -157,6 +157,13 @@ config LEDS_LP3944
+@@ -176,6 +176,13 @@ config LEDS_LP3944
To compile this driver as a module, choose M here: the
module will be called leds-lp3944.
+
config LEDS_CLEVO_MAIL
tristate "Mail LED on Clevo notebook"
- depends on LEDS_CLASS && X86 && SERIO_I8042 && DMI
+ depends on X86 && SERIO_I8042 && DMI
--- /dev/null
+++ b/drivers/leds/leds-latch.c
@@ -0,0 +1,150 @@
+
+MODULE_AUTHOR("Chris Lang <clang@gateworks.com>");
+MODULE_DESCRIPTION("Latch LED driver");
-+MODULE_LICENSE("GPL");
--- a/drivers/leds/Makefile
+++ b/drivers/leds/Makefile
-@@ -20,6 +20,7 @@ obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-c
+@@ -22,6 +22,7 @@ obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-c
obj-$(CONFIG_LEDS_SUNFIRE) += leds-sunfire.o
obj-$(CONFIG_LEDS_PCA9532) += leds-pca9532.o
obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
obj-$(CONFIG_LEDS_HP6XX) += leds-hp6xx.o
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
-@@ -161,5 +161,19 @@ struct gpio_led_platform_data {
+@@ -165,5 +165,19 @@ struct gpio_led_platform_data {
unsigned long *delay_off);
};
--- a/arch/arm/mach-ixp4xx/avila-setup.c
+++ b/arch/arm/mach-ixp4xx/avila-setup.c
-@@ -38,6 +38,13 @@
+@@ -36,6 +36,13 @@
#define AVILA_SDA_PIN 7
#define AVILA_SCL_PIN 6
--- a/drivers/net/arm/ixp4xx_eth.c
+++ b/drivers/net/arm/ixp4xx_eth.c
-@@ -52,7 +52,7 @@
+@@ -53,7 +53,7 @@
#define POOL_ALLOC_SIZE (sizeof(struct desc) * (RX_DESCS + TX_DESCS))
#define REGS_SIZE 0x1000
#define RX_BUFF_SIZE ALIGN((NET_IP_ALIGN) + MAX_MRU, 4)
#define NAPI_WEIGHT 16
-@@ -1061,6 +1061,32 @@ static void destroy_queues(struct port *
+@@ -1064,6 +1064,32 @@ static void destroy_queues(struct port *
}
}
static int eth_open(struct net_device *dev)
{
struct port *port = netdev_priv(dev);
-@@ -1112,6 +1138,8 @@ static int eth_open(struct net_device *d
+@@ -1115,6 +1141,8 @@ static int eth_open(struct net_device *d
if (npe_send_recv_message(port->npe, &msg, "ETH_SET_FIREWALL_MODE"))
return -EIO;
if ((err = request_queues(port)) != 0)
return err;
-@@ -1251,7 +1279,26 @@ static int eth_close(struct net_device *
+@@ -1254,7 +1282,26 @@ static int eth_close(struct net_device *
return 0;
}
--- a/arch/arm/mach-ixp4xx/gtwx5715-setup.c
+++ b/arch/arm/mach-ixp4xx/gtwx5715-setup.c
-@@ -179,10 +179,37 @@ static struct platform_device gtwx5715_s
+@@ -178,10 +178,37 @@ static struct platform_device gtwx5715_s
},
};
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
-@@ -36,6 +36,7 @@
+@@ -35,6 +35,7 @@
#include <asm/pgtable.h>
#include <asm/page.h>
#include <asm/irq.h>
#include <asm/mach/map.h>
#include <asm/mach/irq.h>
-@@ -375,12 +376,39 @@ static struct platform_device *ixp46x_de
+@@ -374,12 +375,39 @@ static struct platform_device *ixp46x_de
unsigned long ixp4xx_exp_bus_size;
EXPORT_SYMBOL(ixp4xx_exp_bus_size);
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
-@@ -417,6 +417,7 @@ config ARCH_IXP4XX
+@@ -435,6 +435,7 @@ config ARCH_IXP4XX
+ select CPU_XSCALE
select GENERIC_GPIO
- select GENERIC_TIME
select GENERIC_CLOCKEVENTS
+ select ARCH_REQUIRE_GPIOLIB
help