diff options
6 files changed, 52 insertions, 89 deletions
diff --git a/target/linux/atheros/patches-3.14/100-board.patch b/target/linux/atheros/patches-3.14/100-board.patch index 24533574bc..4840813669 100644 --- a/target/linux/atheros/patches-3.14/100-board.patch +++ b/target/linux/atheros/patches-3.14/100-board.patch @@ -681,7 +681,7 @@ +#endif /* __ASM_MACH_AR231X_WAR_H */ --- /dev/null +++ b/arch/mips/include/asm/mach-ar231x/ar2315_regs.h -@@ -0,0 +1,617 @@ +@@ -0,0 +1,614 @@ +/* + * Register definitions for AR2315+ + * @@ -707,7 +707,6 @@ +#define AR2315_IRQ_LCBUS_PCI (MIPS_CPU_IRQ_BASE+5) /* C0_CAUSE: 0x2000 */ +#define AR2315_IRQ_WLAN0_POLL (MIPS_CPU_IRQ_BASE+6) /* C0_CAUSE: 0x4000 */ + -+ +/* + * Miscellaneous interrupts, which share IP2. + */ @@ -723,7 +722,6 @@ +#define AR2315_MISC_IRQ_IR_RSVD (AR231X_MISC_IRQ_BASE+9) +#define AR2315_MISC_IRQ_COUNT 10 + -+ +/* + * Address map + */ @@ -742,7 +740,7 @@ +#define AR2315_ENET0_MII (AR2315_ENET0 + 0x14) + +/* -+ * Reset Register ++ * Cold reset register + */ +#define AR2315_COLD_RESET (AR2315_DSLBASE + 0x0000) + @@ -756,7 +754,9 @@ + RESET_COLD_AHB) /* full system */ +#define AR2317_RESET_SYSTEM 0x00000010 + -+ ++/* ++ * Reset register ++ */ +#define AR2315_RESET (AR2315_DSLBASE + 0x0004) + +/* warm reset WLAN0 MAC */ @@ -837,7 +837,6 @@ +#define AR2315_CONFIG_CPU_MMR 0x00040000 +#define AR2315_CONFIG_BIG 0x00000400 + -+ +/* + * NMI control + */ @@ -1173,7 +1172,6 @@ +#define AR2315_PCI_HOST_OUT_DIS (AR2315_PCI + 0x0904) +#define AR2315_PCI_HOST_OUT_PTR (AR2315_PCI + 0x0908) + -+ +/* + * Local Bus Interface Registers + */ @@ -1220,7 +1218,6 @@ +#define AR2315_LBM_TIMEOUT_SHFT 7 +#define AR2315_LBM_PORTMUX 0x07000000 + -+ +#define AR2315_LB_RXTSOFF (AR2315_LOCAL + 0x0010) + +#define AR2315_LB_TX_CHAIN_EN (AR2315_LOCAL + 0x0100) @@ -1301,7 +1298,7 @@ +#endif /* __ASM_MACH_AR231X_AR2315_REGS_H */ --- /dev/null +++ b/arch/mips/include/asm/mach-ar231x/ar5312_regs.h -@@ -0,0 +1,253 @@ +@@ -0,0 +1,249 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive @@ -1320,14 +1317,12 @@ +/* + * IRQs + */ -+ +#define AR5312_IRQ_WLAN0_INTRS (MIPS_CPU_IRQ_BASE+2) /* C0_CAUSE: 0x0400 */ +#define AR5312_IRQ_ENET0_INTRS (MIPS_CPU_IRQ_BASE+3) /* C0_CAUSE: 0x0800 */ +#define AR5312_IRQ_ENET1_INTRS (MIPS_CPU_IRQ_BASE+4) /* C0_CAUSE: 0x1000 */ +#define AR5312_IRQ_WLAN1_INTRS (MIPS_CPU_IRQ_BASE+5) /* C0_CAUSE: 0x2000 */ +#define AR5312_IRQ_MISC_INTRS (MIPS_CPU_IRQ_BASE+6) /* C0_CAUSE: 0x4000 */ + -+ +/* + * Miscellaneous interrupts, which share IP6. + */ @@ -1343,8 +1338,9 @@ +#define AR5312_MISC_IRQ_SPI (AR231X_MISC_IRQ_BASE+9) +#define AR5312_MISC_IRQ_COUNT 10 + -+ -+/* Address Map */ ++/* ++ * Address Map ++ */ +#define AR5312_WLAN0 0x18000000 +#define AR5312_WLAN1 0x18500000 +#define AR5312_ENET0 0x18100000 @@ -1465,7 +1461,6 @@ +#define AR2313_CLOCKCTL1_MULTIPLIER_SHIFT 16 +#define AR2313_CLOCKCTL1_DOUBLER_MASK 0x00000000 + -+ +/* AR5312_ENABLE register bit field definitions */ +#define AR5312_ENABLE_WLAN0 0x0001 +#define AR5312_ENABLE_ENET0 0x0002 @@ -1552,12 +1547,10 @@ +#define AR5312_GPIO_CR_UART(x) (1 << ((x)+16)) /* uart multiplex */ +#define AR5312_NUM_GPIO 8 + -+ +#endif /* __ASM_MACH_AR231X_AR5312_REGS_H */ -+ --- /dev/null +++ b/arch/mips/ar231x/ar5312.c -@@ -0,0 +1,541 @@ +@@ -0,0 +1,534 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive @@ -1634,7 +1627,6 @@ + do_IRQ(AR231X_IRQ_CPU_CLOCK); +} + -+ +/* Enable the specified AR5312_MISC_IRQ interrupt */ +static void +ar5312_misc_irq_unmask(struct irq_data *d) @@ -1664,7 +1656,6 @@ + .irq_mask = ar5312_misc_irq_mask, +}; + -+ +static irqreturn_t ar5312_ahb_proc_handler(int cpl, void *dev_id) +{ + u32 proc1 = ar231x_read_reg(AR5312_PROC1); @@ -1679,13 +1670,11 @@ + return IRQ_HANDLED; +} + -+ +static struct irqaction ar5312_ahb_proc_interrupt = { + .handler = ar5312_ahb_proc_handler, + .name = "ar5312_ahb_proc_interrupt", +}; + -+ +void __init ar5312_irq_init(void) +{ + int i; @@ -1951,7 +1940,6 @@ + return 0; +} + -+ +static void ar5312_restart(char *command) +{ + /* reset the system */ @@ -1960,14 +1948,12 @@ + ar231x_write_reg(AR5312_RESET, AR5312_RESET_SYSTEM); +} + -+ +/* + * This table is indexed by bits 5..4 of the CLOCKCTL1 register + * to determine the predevisor value. + */ +static int clockctl1_predivide_table[4] __initdata = { 1, 2, 4, 5 }; + -+ +static int __init +ar5312_cpu_frequency(void) +{ @@ -2079,7 +2065,7 @@ + devid = ar231x_read_reg(AR5312_REV); + devid >>= AR5312_REV_WMAC_MIN_S; + devid &= AR5312_REV_CHIP; -+ ar231x_board.devid = (u16) devid; ++ ar231x_board.devid = (u16)devid; + ar5312_gpio_init(); +} + @@ -2101,7 +2087,7 @@ + --- /dev/null +++ b/arch/mips/ar231x/ar2315.c -@@ -0,0 +1,559 @@ +@@ -0,0 +1,556 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive @@ -2308,13 +2294,13 @@ + int irq = AR231X_MISC_IRQ_BASE + i; + + irq_set_chip_and_handler(irq, &ar2315_misc_irq_chip, -+ handle_level_irq); ++ handle_level_irq); + } + for (i = 0; i < AR2315_NUM_GPIO; i++) { + int irq = AR231X_GPIO_IRQ_BASE + i; + + irq_set_chip_and_handler(irq, &ar2315_gpio_irq_chip, -+ handle_level_irq); ++ handle_level_irq); + } + irq_set_chained_handler(AR2315_MISC_IRQ_GPIO, ar2315_gpio_irq_handler); + setup_irq(AR2315_MISC_IRQ_AHB, &ar2315_ahb_proc_interrupt); @@ -2529,7 +2515,6 @@ + mips_reset_vec(); +} + -+ +/* + * This table is indexed by bits 5..4 of the CLOCKCTL1 register + * to determine the predevisor value. @@ -2610,8 +2595,6 @@ + return ret; +} + -+ -+ +void __init +ar2315_prom_init(void) +{ @@ -2830,7 +2813,7 @@ +#endif --- /dev/null +++ b/arch/mips/ar231x/devices.c -@@ -0,0 +1,182 @@ +@@ -0,0 +1,180 @@ +#include <linux/kernel.h> +#include <linux/init.h> +#include <linux/serial.h> @@ -2915,7 +2898,6 @@ + } +}; + -+ +static struct platform_device ar231x_wmac[] = { + { + .id = 0, @@ -2946,12 +2928,11 @@ +const char *get_system_type(void) +{ + if ((ar231x_devtype >= ARRAY_SIZE(devtype_strings)) || -+ !devtype_strings[ar231x_devtype]) ++ !devtype_strings[ar231x_devtype]) + return devtype_strings[DEV_TYPE_UNKNOWN]; + return devtype_strings[ar231x_devtype]; +} + -+ +int __init +ar231x_add_ethernet(int nr, u32 base, const char *mii_name, u32 mii_base, + int irq, void *pdata) diff --git a/target/linux/atheros/patches-3.14/105-ar2315_pci.patch b/target/linux/atheros/patches-3.14/105-ar2315_pci.patch index 0ce670febf..53222a1af2 100644 --- a/target/linux/atheros/patches-3.14/105-ar2315_pci.patch +++ b/target/linux/atheros/patches-3.14/105-ar2315_pci.patch @@ -61,7 +61,7 @@ + ar231x_mask_reg(AR2315_PCI_MISC_CONFIG, 0, AR2315_PCIMISC_CFG_SEL); + mb(); + -+ addr = (u32) configspace + (1 << (13 + dev)) + (func << 8) + where; ++ addr = (u32)configspace + (1 << (13 + dev)) + (func << 8) + where; + if (size == 1) + addr ^= 0x3; + else if (size == 2) @@ -189,10 +189,10 @@ + return -ENODEV; + + /* Remap PCI config space */ -+ configspace = (unsigned long) ioremap_nocache(AR2315_PCIEXT, -+ 1*1024*1024); ++ configspace = (unsigned long)ioremap_nocache(AR2315_PCIEXT, ++ 1 * 1024 * 1024); + ar231x_pci_controller.io_map_base = -+ (unsigned long) ioremap_nocache(AR2315_MEM_BASE + ++ (unsigned long)ioremap_nocache(AR2315_MEM_BASE + + AR2315_MEM_SIZE, AR2315_IO_SIZE); + set_io_port_base(ar231x_pci_controller.io_map_base); /* PCI I/O space*/ + @@ -204,29 +204,29 @@ + msleep(20); + + ar231x_mask_reg(AR2315_ENDIAN_CTL, 0, -+ AR2315_CONFIG_PCIAHB | AR2315_CONFIG_PCIAHB_BRIDGE); ++ AR2315_CONFIG_PCIAHB | AR2315_CONFIG_PCIAHB_BRIDGE); + + ar231x_write_reg(AR2315_PCICLK, AR2315_PCICLK_PLLC_CLKM | -+ (AR2315_PCICLK_IN_FREQ_DIV_6 << AR2315_PCICLK_DIV_S)); ++ (AR2315_PCICLK_IN_FREQ_DIV_6 << AR2315_PCICLK_DIV_S)); + ar231x_mask_reg(AR2315_AHB_ARB_CTL, 0, AR2315_ARB_PCI); + ar231x_mask_reg(AR2315_IF_CTL, AR2315_IF_PCI_CLK_MASK | AR2315_IF_MASK, -+ AR2315_IF_PCI | AR2315_IF_PCI_HOST | AR2315_IF_PCI_INTR | -+ (AR2315_IF_PCI_CLK_OUTPUT_CLK << AR2315_IF_PCI_CLK_SHIFT)); ++ AR2315_IF_PCI | AR2315_IF_PCI_HOST | ++ AR2315_IF_PCI_INTR | (AR2315_IF_PCI_CLK_OUTPUT_CLK << ++ AR2315_IF_PCI_CLK_SHIFT)); + + /* Reset the PCI bus by setting bits 5-4 in PCI_MCFG */ + ar231x_mask_reg(AR2315_PCI_MISC_CONFIG, AR2315_PCIMISC_RST_MODE, -+ AR2315_PCIRST_LOW); ++ AR2315_PCIRST_LOW); + msleep(100); + + /* Bring the PCI out of reset */ + ar231x_mask_reg(AR2315_PCI_MISC_CONFIG, AR2315_PCIMISC_RST_MODE, -+ AR2315_PCIRST_HIGH | AR2315_PCICACHE_DIS | 0x8); ++ AR2315_PCIRST_HIGH | AR2315_PCICACHE_DIS | 0x8); + + ar231x_write_reg(AR2315_PCI_UNCACHE_CFG, -+ 0x1E | /* 1GB uncached */ -+ (1 << 5) | /* Enable uncached */ -+ (0x2 << 30) /* Base: 0x80000000 */ -+ ); ++ 0x1E | /* 1GB uncached */ ++ (1 << 5) | /* Enable uncached */ ++ (0x2 << 30) /* Base: 0x80000000 */); + ar231x_read_reg(AR2315_PCI_UNCACHE_CFG); + + msleep(500); diff --git a/target/linux/atheros/patches-3.14/110-ar2313_ethernet.patch b/target/linux/atheros/patches-3.14/110-ar2313_ethernet.patch index 1bd445b2a7..367c6cf8b5 100644 --- a/target/linux/atheros/patches-3.14/110-ar2313_ethernet.patch +++ b/target/linux/atheros/patches-3.14/110-ar2313_ethernet.patch @@ -33,7 +33,7 @@ +obj-$(CONFIG_NET_AR231X) += ar231x.o --- /dev/null +++ b/drivers/net/ethernet/atheros/ar231x/ar231x.c -@@ -0,0 +1,1218 @@ +@@ -0,0 +1,1206 @@ +/* + * ar231x.c: Linux driver for the Atheros AR231x Ethernet device. + * @@ -241,7 +241,7 @@ + dev->features |= NETIF_F_HIGHDMA; + dev->netdev_ops = &ar231x_ops; + -+ tasklet_init(&sp->rx_tasklet, rx_tasklet_func, (unsigned long) dev); ++ tasklet_init(&sp->rx_tasklet, rx_tasklet_func, (unsigned long)dev); + tasklet_disable(&sp->rx_tasklet); + + sp->eth_regs = ioremap_nocache(ar_eth_base, sizeof(*sp->eth_regs)); @@ -324,7 +324,6 @@ + return 0; +} + -+ +static void ar231x_multicast_list(struct net_device *dev) +{ + struct ar231x_private *sp = netdev_priv(dev); @@ -372,7 +371,6 @@ + return 0; +} + -+ +/** + * Restart the AR2313 ethernet controller. + */ @@ -412,7 +410,6 @@ + } +} + -+ +static int ar231x_allocate_descriptors(struct net_device *dev) +{ + struct ar231x_private *sp = netdev_priv(dev); @@ -431,7 +428,7 @@ + return 1; + + /* invalidate caches */ -+ dma_cache_inv((unsigned int) space, size); ++ dma_cache_inv((unsigned int)space, size); + + /* now convert pointer to KSEG1 */ + space = (ar231x_descr_t *)KSEG1ADDR(space); @@ -457,7 +454,6 @@ + return 0; +} + -+ +/** + * Generic cleanup handling data allocated during init. Used when the + * module is unloaded or if an error occurs during initialization @@ -509,7 +505,7 @@ + init_timer(&sp->link_timer); + + sp->link_timer.function = ar231x_link_timer_fn; -+ sp->link_timer.data = (int) dev; ++ sp->link_timer.data = (int)dev; + sp->link_timer.expires = jiffies + HZ; + + add_timer(&sp->link_timer); @@ -568,7 +564,7 @@ + } + + printk(KERN_INFO "%s: Configuring MAC for %s duplex\n", -+ dev->name, (duplex) ? "full" : "half"); ++ dev->name, (duplex) ? "full" : "half"); + + if (duplex) { + /* full duplex */ @@ -649,7 +645,6 @@ + return 0; +} + -+ +static int ar231x_init(struct net_device *dev) +{ + struct ar231x_private *sp = netdev_priv(dev); @@ -667,7 +662,7 @@ + if (sp->rx_skb == NULL) { + sp->rx_skb = + kmalloc(sizeof(struct sk_buff *) * AR2313_DESCR_ENTRIES, -+ GFP_KERNEL); ++ GFP_KERNEL); + if (!(sp->rx_skb)) { + printk("%s: %s: rx_skb kmalloc failed\n", + dev->name, __func__); @@ -680,7 +675,7 @@ + if (sp->tx_skb == NULL) { + sp->tx_skb = + kmalloc(sizeof(struct sk_buff *) * AR2313_DESCR_ENTRIES, -+ GFP_KERNEL); ++ GFP_KERNEL); + if (!(sp->tx_skb)) { + printk("%s: %s: tx_skb kmalloc failed\n", + dev->name, __func__); @@ -714,17 +709,14 @@ + ar231x_reset_reg(dev); + + /* Get the IRQ */ -+ ecode = -+ request_irq(dev->irq, &ar231x_interrupt, -+ IRQF_DISABLED, -+ dev->name, dev); ++ ecode = request_irq(dev->irq, &ar231x_interrupt, IRQF_DISABLED, ++ dev->name, dev); + if (ecode) { + printk(KERN_WARNING "%s: %s: Requested IRQ %d is busy\n", + dev->name, __func__, dev->irq); + goto init_error; + } + -+ + tasklet_enable(&sp->rx_tasklet); + + return 0; @@ -866,7 +858,6 @@ + return rval; +} + -+ +static void ar231x_tx_int(struct net_device *dev) +{ + struct ar231x_private *sp = netdev_priv(dev); @@ -918,7 +909,6 @@ + sp->tx_csm = idx; +} + -+ +static void rx_tasklet_func(unsigned long data) +{ + struct net_device *dev = (struct net_device *)data; @@ -982,7 +972,6 @@ + return IRQ_HANDLED; +} + -+ +static int ar231x_open(struct net_device *dev) +{ + struct ar231x_private *sp = netdev_priv(dev); @@ -1245,16 +1234,15 @@ + sp->oldduplex = -1; + sp->phy_dev = phydev; + -+ printk(KERN_INFO "%s: attached PHY driver [%s] " -+ "(mii_bus:phy_addr=%s)\n", -+ dev->name, phydev->drv->name, dev_name(&phydev->dev)); ++ printk(KERN_INFO "%s: attached PHY driver [%s] (mii_bus:phy_addr=%s)\n", ++ dev->name, phydev->drv->name, dev_name(&phydev->dev)); + + return 0; +} + --- /dev/null +++ b/drivers/net/ethernet/atheros/ar231x/ar231x.h -@@ -0,0 +1,295 @@ +@@ -0,0 +1,288 @@ +/* + * ar231x.h: Linux driver for the Atheros AR231x Ethernet device. + * @@ -1404,7 +1392,6 @@ +#define DMA_CONTROL_ST BIT(13) /* start transmit */ +#define DMA_CONTROL_SF BIT(21) /* store and forward */ + -+ +typedef struct { + volatile unsigned int status; /* OWN, Device control and status. */ + volatile unsigned int devcs; /* pkt Control bits + Length */ @@ -1412,8 +1399,6 @@ + volatile unsigned int descr; /* Next descriptor in chain. */ +} ar231x_descr_t; + -+ -+ +/** + * New Combo structure for Both Eth0 AND eth1 + * @@ -1430,7 +1415,6 @@ + volatile unsigned int vlan_tag; /* 0x20 */ + volatile unsigned int pad[7]; /* 0x24 - 0x3c */ + volatile unsigned int ucast_table[8]; /* 0x40-0x5c */ -+ +} ETHERNET_STRUCT; + +typedef struct { @@ -1496,7 +1480,6 @@ + ar231x_descr_t *rx_ring; + ar231x_descr_t *tx_ring; + -+ + struct sk_buff **rx_skb; + struct sk_buff **tx_skb; + @@ -1516,7 +1499,6 @@ + char *mapping; + } desc; + -+ + struct timer_list link_timer; + unsigned short phy; /* merlot phy = 1, samsung phy = 0x1f */ + unsigned short mac; @@ -1531,7 +1513,6 @@ + int oldduplex; +}; + -+ +/* Prototypes */ +static int ar231x_init(struct net_device *dev); +#ifdef TX_TIMEOUT @@ -1543,10 +1524,10 @@ +static int ar231x_open(struct net_device *dev); +static int ar231x_start_xmit(struct sk_buff *skb, struct net_device *dev); +static int ar231x_close(struct net_device *dev); -+static int ar231x_ioctl(struct net_device *dev, struct ifreq *ifr, -+ int cmd); ++static int ar231x_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd); +static void ar231x_init_cleanup(struct net_device *dev); +static int ar231x_setup_timer(struct net_device *dev); +static void ar231x_link_timer_fn(unsigned long data); +static void ar231x_check_link(struct net_device *dev); -+#endif /* _AR2313_H_ */ ++ ++#endif /* _AR2313_H_ */ diff --git a/target/linux/atheros/patches-3.14/120-spiflash.patch b/target/linux/atheros/patches-3.14/120-spiflash.patch index 5fe86cbc0b..94f8e401a0 100644 --- a/target/linux/atheros/patches-3.14/120-spiflash.patch +++ b/target/linux/atheros/patches-3.14/120-spiflash.patch @@ -183,7 +183,7 @@ + op = &stm_opcodes[opcode]; + reg = spiflash_wait_busy(priv); + spiflash_write_reg(priv, SPI_FLASH_OPCODE, -+ ((u32) op->code) | (addr << 8)); ++ ((u32)op->code) | (addr << 8)); + + reg &= ~SPI_CTL_TX_RX_CNT_MASK; + reg |= SPI_CTL_START | op->tx_cnt | (op->rx_cnt << 4); @@ -453,7 +453,7 @@ + /* parse redboot partitions */ + + result = mtd_device_parse_register(mtd, part_probe_types, -+ NULL, NULL, 0); ++ NULL, NULL, 0); +#endif + + return result; diff --git a/target/linux/atheros/patches-3.14/130-watchdog.patch b/target/linux/atheros/patches-3.14/130-watchdog.patch index 149bd458c2..8d65ffa344 100644 --- a/target/linux/atheros/patches-3.14/130-watchdog.patch +++ b/target/linux/atheros/patches-3.14/130-watchdog.patch @@ -1,6 +1,6 @@ --- /dev/null +++ b/drivers/watchdog/ar2315-wtd.c -@@ -0,0 +1,208 @@ +@@ -0,0 +1,209 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by @@ -77,7 +77,8 @@ + if (in_use) + return -EBUSY; + ar2315_wdt_enable(); -+ in_use = started = 1; ++ in_use = 1; ++ started = 1; + return nonseekable_open(inode, file); +} + diff --git a/target/linux/atheros/patches-3.14/220-enet_micrel_workaround.patch b/target/linux/atheros/patches-3.14/220-enet_micrel_workaround.patch index 3d3949bb9d..398495a80c 100644 --- a/target/linux/atheros/patches-3.14/220-enet_micrel_workaround.patch +++ b/target/linux/atheros/patches-3.14/220-enet_micrel_workaround.patch @@ -66,7 +66,7 @@ if (ar231x_mdiobus_probe(dev) != 0) { printk(KERN_ERR "%s: mdiobus_probe failed\n", dev->name); rx_tasklet_cleanup(dev); -@@ -330,8 +375,10 @@ static int ar231x_remove(struct platform +@@ -329,8 +374,10 @@ static int ar231x_remove(struct platform rx_tasklet_cleanup(dev); ar231x_init_cleanup(dev); unregister_netdev(dev); @@ -79,7 +79,7 @@ kfree(dev); return 0; } -@@ -1090,6 +1137,9 @@ static int ar231x_ioctl(struct net_devic +@@ -1079,6 +1126,9 @@ static int ar231x_ioctl(struct net_devic { struct ar231x_private *sp = netdev_priv(dev); |