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