* rebase 3.0 patches * fold some fixes into existing patches

SVN-Revision: 28308
master
John Crispin 13 years ago
parent 07986230f1
commit cf59e7255d
  1. 4
      target/linux/lantiq/patches-3.0/020-xway-fix-mtd.patch
  2. 6
      target/linux/lantiq/patches-3.0/030-lmo-queue.patch
  3. 132
      target/linux/lantiq/patches-3.0/110-falcon_board.patch
  4. 898
      target/linux/lantiq/patches-3.0/120-falcon-i2c.patch
  5. 4
      target/linux/lantiq/patches-3.0/130-falcon-spi-flash.patch
  6. 4
      target/linux/lantiq/patches-3.0/150-falcon-easy98020.patch
  7. 6
      target/linux/lantiq/patches-3.0/160-falcon-95C3AM1.patch
  8. 16
      target/linux/lantiq/patches-3.0/170-falcon-dm9000-polling.patch
  9. 32
      target/linux/lantiq/patches-3.0/180-falcon-linux3.0.patch
  10. 7
      target/linux/lantiq/patches-3.0/190-falcon-fix_include.patch
  11. 2
      target/linux/lantiq/patches-3.0/200-netif_receive_skb.patch
  12. 8
      target/linux/lantiq/patches-3.0/210-mtd_uimage_split.patch
  13. 2
      target/linux/lantiq/patches-3.0/230-cmdline_hack.patch
  14. 14
      target/linux/lantiq/patches-3.0/240-udp_redirect.patch
  15. 4
      target/linux/lantiq/patches-3.0/250-mt-vpe.patch
  16. 6
      target/linux/lantiq/patches-3.0/260-ar9-cache-split.patch
  17. 4
      target/linux/lantiq/patches-3.0/410-spi2.patch
  18. 2
      target/linux/lantiq/patches-3.0/420-spi3.patch
  19. 6
      target/linux/lantiq/patches-3.0/440-dwc_otg.patch
  20. 6
      target/linux/lantiq/patches-3.0/450-mach-arv45xx.patch
  21. 6
      target/linux/lantiq/patches-3.0/460-mach-dgn3500.patch
  22. 6
      target/linux/lantiq/patches-3.0/470-mach-gigasx76x.patch
  23. 27
      target/linux/lantiq/patches-3.0/480-mach-easy98020.patch
  24. 4
      target/linux/lantiq/patches-3.0/510-register_madwifi.patch
  25. 4
      target/linux/lantiq/patches-3.0/520-register_buttons.patch
  26. 6
      target/linux/lantiq/patches-3.0/530-register_tapi.patch
  27. 2
      target/linux/lantiq/patches-3.0/550-register_ebu.patch
  28. 59
      target/linux/lantiq/patches-3.0/998-easy98000-asc1.patch

@ -1,6 +1,6 @@
--- a/arch/mips/lantiq/xway/mach-easy50601.c --- a/arch/mips/lantiq/xway/mach-easy50601.c
+++ b/arch/mips/lantiq/xway/mach-easy50601.c +++ b/arch/mips/lantiq/xway/mach-easy50601.c
@@ -32,12 +32,7 @@ @@ -32,12 +32,7 @@ static struct mtd_partition easy50601_pa
{ {
.name = "linux", .name = "linux",
.offset = 0x20000, .offset = 0x20000,
@ -16,7 +16,7 @@
--- a/arch/mips/lantiq/xway/mach-easy50712.c --- a/arch/mips/lantiq/xway/mach-easy50712.c
+++ b/arch/mips/lantiq/xway/mach-easy50712.c +++ b/arch/mips/lantiq/xway/mach-easy50712.c
@@ -34,12 +34,7 @@ @@ -34,12 +34,7 @@ static struct mtd_partition easy50712_pa
{ {
.name = "linux", .name = "linux",
.offset = 0x20000, .offset = 0x20000,

@ -11,7 +11,7 @@
--- a/arch/mips/lantiq/clk.c --- a/arch/mips/lantiq/clk.c
+++ b/arch/mips/lantiq/clk.c +++ b/arch/mips/lantiq/clk.c
@@ -100,6 +100,17 @@ @@ -100,6 +100,17 @@ void clk_put(struct clk *clk)
} }
EXPORT_SYMBOL(clk_put); EXPORT_SYMBOL(clk_put);
@ -39,7 +39,7 @@
#include <asm/bootinfo.h> #include <asm/bootinfo.h>
#include <asm/irq_cpu.h> #include <asm/irq_cpu.h>
@@ -105,6 +106,7 @@ @@ -99,6 +100,7 @@ void ltq_mask_and_ack_irq(struct irq_dat
ltq_icu_w32(ltq_icu_r32(ier) & ~(1 << irq_nr), ier); ltq_icu_w32(ltq_icu_r32(ier) & ~(1 << irq_nr), ier);
ltq_icu_w32((1 << irq_nr), isr); ltq_icu_w32((1 << irq_nr), isr);
} }
@ -58,7 +58,7 @@
void __init plat_mem_setup(void) void __init plat_mem_setup(void)
{ {
/* assume 16M as default incase uboot fails to pass proper ramsize */ /* assume 16M as default incase uboot fails to pass proper ramsize */
@@ -40,8 +42,8 @@ @@ -40,8 +42,8 @@ void __init plat_mem_setup(void)
} }
envp++; envp++;
} }

@ -72,7 +72,7 @@
+EXPORT_SYMBOL(ltq_get_fpi_hz); +EXPORT_SYMBOL(ltq_get_fpi_hz);
--- /dev/null --- /dev/null
+++ b/arch/mips/lantiq/falcon/devices.c +++ b/arch/mips/lantiq/falcon/devices.c
@@ -0,0 +1,254 @@ @@ -0,0 +1,258 @@
+#include <linux/init.h> +#include <linux/init.h>
+#include <linux/module.h> +#include <linux/module.h>
+#include <linux/types.h> +#include <linux/types.h>
@ -109,6 +109,10 @@
+unsigned char ltq_ethaddr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; +unsigned char ltq_ethaddr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+EXPORT_SYMBOL(ltq_ethaddr); +EXPORT_SYMBOL(ltq_ethaddr);
+ +
+/* create dummy ebu spinlock for drivers shared with XWAY targets */
+DEFINE_SPINLOCK(ebu_lock);
+EXPORT_SYMBOL_GPL(ebu_lock);
+
+static int __init +static int __init
+falcon_set_ethaddr(char *str) +falcon_set_ethaddr(char *str)
+{ +{
@ -793,7 +797,7 @@
+EXPORT_SYMBOL(sys_gpe_hw_is_activated); +EXPORT_SYMBOL(sys_gpe_hw_is_activated);
--- /dev/null --- /dev/null
+++ b/arch/mips/lantiq/falcon/gpio.c +++ b/arch/mips/lantiq/falcon/gpio.c
@@ -0,0 +1,463 @@ @@ -0,0 +1,505 @@
+/* +/*
+ * 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
@ -842,6 +846,8 @@
+#define gpio_w32(val, reg) __raw_writel(val, reg) +#define gpio_w32(val, reg) __raw_writel(val, reg)
+#define gpio_w32_mask(clear, set, reg) gpio_w32((gpio_r32(reg) & ~(clear)) | (set), reg) +#define gpio_w32_mask(clear, set, reg) gpio_w32((gpio_r32(reg) & ~(clear)) | (set), reg)
+ +
+#define MAX_PORTS 5
+#define PINS_PER_PORT 32
+ +
+/** register structure for padctrl +/** register structure for padctrl
+ (mainly needed for mux control) */ + (mainly needed for mux control) */
@ -926,6 +932,8 @@
+ unsigned int chained_irq; + unsigned int chained_irq;
+}; +};
+ +
+static struct falcon_gpio_port ltq_gpio_port[MAX_PORTS];
+
+static int gpio_exported = 0; +static int gpio_exported = 0;
+static int __init gpio_export_setup(char *str) +static int __init gpio_export_setup(char *str)
+{ +{
@ -946,13 +954,6 @@
+ return 0; + return 0;
+} +}
+ +
+static int falcon_gpio_direction_output(struct gpio_chip *chip, unsigned int offset, int value)
+{
+ struct falcon_gpio_port *gpio_port = to_falcon_gpio_port(chip);
+ gpio_w32(1<<offset, &gpio_port->port->dirset);
+ return 0;
+}
+
+static void falcon_gpio_set(struct gpio_chip *chip, unsigned int offset, int value) +static void falcon_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
+{ +{
+ struct falcon_gpio_port *gpio_port = to_falcon_gpio_port(chip); + struct falcon_gpio_port *gpio_port = to_falcon_gpio_port(chip);
@ -962,6 +963,14 @@
+ gpio_w32(1<<offset, &gpio_port->port->outclr); + gpio_w32(1<<offset, &gpio_port->port->outclr);
+} +}
+ +
+static int falcon_gpio_direction_output(struct gpio_chip *chip, unsigned int offset, int value)
+{
+ struct falcon_gpio_port *gpio_port = to_falcon_gpio_port(chip);
+ falcon_gpio_set(chip, offset, value);
+ gpio_w32(1<<offset, &gpio_port->port->dirset);
+ return 0;
+}
+
+static int falcon_gpio_get(struct gpio_chip *chip, unsigned int offset) +static int falcon_gpio_get(struct gpio_chip *chip, unsigned int offset)
+{ +{
+ struct falcon_gpio_port *gpio_port = to_falcon_gpio_port(chip); + struct falcon_gpio_port *gpio_port = to_falcon_gpio_port(chip);
@ -1038,6 +1047,46 @@
+ gpio_w32(1<<offset, &gpio_port->port->irncr); + gpio_w32(1<<offset, &gpio_port->port->irncr);
+} +}
+ +
+int ltq_gpio_mux_set(unsigned int pin, unsigned int mux)
+{
+ int port = pin / 100;
+ int offset = pin % 100;
+ struct falcon_gpio_port *gpio_port;
+
+ if (offset >= PINS_PER_PORT || port >= MAX_PORTS)
+ return -EINVAL;
+
+ gpio_port = &ltq_gpio_port[port];
+ gpio_w32(mux, &gpio_port->pad->muxc[offset]);
+
+ return 0;
+}
+EXPORT_SYMBOL(ltq_gpio_mux_set);
+
+int ltq_gpio_request(unsigned int pin, unsigned int alt0,
+ unsigned int alt1, unsigned int dir, const char *name)
+{
+ int port = pin / 100;
+ int offset = pin % 100;
+ unsigned int mux = (alt0 & 1) + (alt1 & 1) * 2;
+
+ if (offset >= PINS_PER_PORT || port >= MAX_PORTS)
+ return -EINVAL;
+
+ if (gpio_request(pin, name)) {
+ pr_err("failed to setup lantiq gpio: %s\n", name);
+ return -EBUSY;
+ }
+
+ if (dir)
+ gpio_direction_output(pin, 1);
+ else
+ gpio_direction_input(pin);
+
+ return ltq_gpio_mux_set(pin, mux);
+}
+EXPORT_SYMBOL(ltq_gpio_request);
+
+static struct irq_chip falcon_gpio_irq_chip; +static struct irq_chip falcon_gpio_irq_chip;
+static int falcon_gpio_irq_type(struct irq_data *d, unsigned int type) +static int falcon_gpio_irq_type(struct irq_data *d, unsigned int type)
+{ +{
@ -1115,16 +1164,16 @@
+ struct resource *gpiores, *padres; + struct resource *gpiores, *padres;
+ int irq; + int irq;
+ +
+ if (pdev->id >= MAX_PORTS)
+ return -ENODEV;
+
+ gpiores = platform_get_resource(pdev, IORESOURCE_MEM, 0); + gpiores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ padres = platform_get_resource(pdev, IORESOURCE_MEM, 1); + padres = platform_get_resource(pdev, IORESOURCE_MEM, 1);
+ irq = platform_get_irq(pdev, 0); + irq = platform_get_irq(pdev, 0);
+ if (!gpiores || !padres) + if (!gpiores || !padres)
+ return -ENODEV; + return -ENODEV;
+ +
+ gpio_port = kzalloc(sizeof(*gpio_port), GFP_KERNEL); + gpio_port = &ltq_gpio_port[pdev->id];
+ if (gpio_port == NULL)
+ return -ENOMEM;
+
+ gpio_port->gpio_chip.label = "falcon-gpio"; + gpio_port->gpio_chip.label = "falcon-gpio";
+ gpio_port->gpio_chip.direction_input = falcon_gpio_direction_input; + gpio_port->gpio_chip.direction_input = falcon_gpio_direction_input;
+ gpio_port->gpio_chip.direction_output = falcon_gpio_direction_output; + gpio_port->gpio_chip.direction_output = falcon_gpio_direction_output;
@ -1200,7 +1249,6 @@
+ iounmap(gpio_port->port); + iounmap(gpio_port->port);
+ if (gpio_port->pad) + if (gpio_port->pad)
+ iounmap(gpio_port->pad); + iounmap(gpio_port->pad);
+ kfree(gpio_port);
+ return ret; + return ret;
+} +}
+ +
@ -1218,8 +1266,6 @@
+ iounmap(gpio_port->port); + iounmap(gpio_port->port);
+ if (gpio_port->pad) + if (gpio_port->pad)
+ iounmap(gpio_port->pad); + iounmap(gpio_port->pad);
+ if (ret == 0)
+ kfree(gpio_port);
+ +
+ return ret; + return ret;
+} +}
@ -1278,7 +1324,7 @@
+#endif +#endif
--- /dev/null --- /dev/null
+++ b/arch/mips/lantiq/falcon/reset.c +++ b/arch/mips/lantiq/falcon/reset.c
@@ -0,0 +1,80 @@ @@ -0,0 +1,95 @@
+/* +/*
+ * 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
@ -1305,6 +1351,22 @@
+#define WDT_PW2 0x00DC0000 +#define WDT_PW2 0x00DC0000
+#define WDT_REG_BASE (KSEG1 | 0x1F8803F0) +#define WDT_REG_BASE (KSEG1 | 0x1F8803F0)
+ +
+struct gpon_reg_boot {
+ /* bootrom related virtual registers */
+ unsigned int rvec;
+ unsigned int nvec;
+ unsigned int evec;
+ unsigned int cp0_status;
+ unsigned int cp0_epc;
+ unsigned int cp0_eepc;
+ unsigned int size;
+ unsigned int cfg_stat;
+ /* additional virtual registers */
+ unsigned int magic0; /* magic for valid reboot */
+ unsigned int magic1; /* -"- */
+ unsigned int bcount; /* reboot counter, used by u-boot */
+} * const pBOOT = (struct gpon_reg_boot *)GPON_SBS0RAM_BASE;
+
+/* This function is used by the watchdog driver */ +/* This function is used by the watchdog driver */
+int ltq_reset_cause(void) +int ltq_reset_cause(void)
+{ +{
@ -1317,11 +1379,11 @@
+{ +{
+ printk(KERN_NOTICE "System restart\n"); + printk(KERN_NOTICE "System restart\n");
+ local_irq_disable(); + local_irq_disable();
+ ltq_w32(0, (void*)0xBF200000); /* reset Bootreg RVEC */ + /* write magic to signal a valid restart */
+#if 0 + ltq_w32(0x4C545100, &pBOOT->magic0); /* 'LTQ\0' */
+ ltq_w32(RBT_CPU_TRIG, &pSYS1->rbt); + ltq_w32(0x0051544C, &pBOOT->magic1); /* '\0QTL' */
+#else + ltq_w32(0, &pBOOT->rvec); /* reset Bootreg RVEC */
+ /* use workaround via watchdog timer */ + /* reset via watchdog timer, to ensure reset of all hardware components */
+ ltq_w32(WDT_PW1, (void*)WDT_REG_BASE); + ltq_w32(WDT_PW1, (void*)WDT_REG_BASE);
+ ltq_w32(WDT_PW2 | + ltq_w32(WDT_PW2 |
+ (0x3 << 26) | /* PWL */ + (0x3 << 26) | /* PWL */
@ -1329,7 +1391,6 @@
+ (0x1 << 31) | /* enable */ + (0x1 << 31) | /* enable */
+ (1), /* reload */ + (1), /* reload */
+ (void*)WDT_REG_BASE); + (void*)WDT_REG_BASE);
+#endif
+ for(;;); + for(;;);
+} +}
+ +
@ -1778,7 +1839,7 @@
+#endif +#endif
--- a/arch/mips/lantiq/Kconfig --- a/arch/mips/lantiq/Kconfig
+++ b/arch/mips/lantiq/Kconfig +++ b/arch/mips/lantiq/Kconfig
@@ -16,8 +16,12 @@ @@ -16,8 +16,12 @@ config SOC_XWAY
bool "XWAY" bool "XWAY"
select SOC_TYPE_XWAY select SOC_TYPE_XWAY
select HW_HAS_PCI select HW_HAS_PCI
@ -1793,21 +1854,21 @@
endif endif
--- a/arch/mips/lantiq/Makefile --- a/arch/mips/lantiq/Makefile
+++ b/arch/mips/lantiq/Makefile +++ b/arch/mips/lantiq/Makefile
@@ -9,3 +9,4 @@ @@ -9,3 +9,4 @@ obj-y := irq.o setup.o clk.o prom.o devi
obj-$(CONFIG_EARLY_PRINTK) += early_printk.o obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
obj-$(CONFIG_SOC_TYPE_XWAY) += xway/ obj-$(CONFIG_SOC_TYPE_XWAY) += xway/
+obj-$(CONFIG_SOC_FALCON) += falcon/ +obj-$(CONFIG_SOC_FALCON) += falcon/
--- a/arch/mips/lantiq/Platform --- a/arch/mips/lantiq/Platform
+++ b/arch/mips/lantiq/Platform +++ b/arch/mips/lantiq/Platform
@@ -6,3 +6,4 @@ @@ -6,3 +6,4 @@ platform-$(CONFIG_LANTIQ) += lantiq/
cflags-$(CONFIG_LANTIQ) += -I$(srctree)/arch/mips/include/asm/mach-lantiq cflags-$(CONFIG_LANTIQ) += -I$(srctree)/arch/mips/include/asm/mach-lantiq
load-$(CONFIG_LANTIQ) = 0xffffffff80002000 load-$(CONFIG_LANTIQ) = 0xffffffff80002000
cflags-$(CONFIG_SOC_TYPE_XWAY) += -I$(srctree)/arch/mips/include/asm/mach-lantiq/xway cflags-$(CONFIG_SOC_TYPE_XWAY) += -I$(srctree)/arch/mips/include/asm/mach-lantiq/xway
+cflags-$(CONFIG_SOC_FALCON) += -I$(srctree)/arch/mips/include/asm/mach-lantiq/falcon +cflags-$(CONFIG_SOC_FALCON) += -I$(srctree)/arch/mips/include/asm/mach-lantiq/falcon
--- a/arch/mips/lantiq/machtypes.h --- a/arch/mips/lantiq/machtypes.h
+++ b/arch/mips/lantiq/machtypes.h +++ b/arch/mips/lantiq/machtypes.h
@@ -15,6 +15,12 @@ @@ -15,6 +15,12 @@ enum lantiq_mach_type {
LTQ_MACH_GENERIC = 0, LTQ_MACH_GENERIC = 0,
LTQ_MACH_EASY50712, /* Danube evaluation board */ LTQ_MACH_EASY50712, /* Danube evaluation board */
LTQ_MACH_EASY50601, /* Amazon SE evaluation board */ LTQ_MACH_EASY50601, /* Amazon SE evaluation board */
@ -2035,3 +2096,20 @@
+ +
+module_init(easy98000_addon_init); +module_init(easy98000_addon_init);
+module_exit(easy98000_addon_exit); +module_exit(easy98000_addon_exit);
--- a/arch/mips/lantiq/prom.c
+++ b/arch/mips/lantiq/prom.c
@@ -45,10 +45,12 @@ static void __init prom_init_cmdline(voi
char **argv = (char **) KSEG1ADDR(fw_arg1);
int i;
+ arcs_cmdline[0] = '\0';
+
for (i = 0; i < argc; i++) {
- char *p = (char *) KSEG1ADDR(argv[i]);
+ char *p = (char *) KSEG1ADDR(argv[i]);
- if (p && *p) {
+ if (CPHYSADDR(p) && *p) {
strlcat(arcs_cmdline, p, sizeof(arcs_cmdline));
strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline));
}

File diff suppressed because it is too large Load Diff

@ -1,6 +1,6 @@
--- a/drivers/spi/Makefile --- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile +++ b/drivers/spi/Makefile
@@ -55,6 +55,7 @@ obj-$(CONFIG_SPI_SH_SCI) += spi_sh_sci. @@ -56,6 +56,7 @@ obj-$(CONFIG_SPI_SH_SCI) += spi_sh_sci.
obj-$(CONFIG_SPI_SH_MSIOF) += spi_sh_msiof.o obj-$(CONFIG_SPI_SH_MSIOF) += spi_sh_msiof.o
obj-$(CONFIG_SPI_STMP3XXX) += spi_stmp.o obj-$(CONFIG_SPI_STMP3XXX) += spi_stmp.o
obj-$(CONFIG_SPI_NUC900) += spi_nuc900.o obj-$(CONFIG_SPI_NUC900) += spi_nuc900.o
@ -484,7 +484,7 @@
+MODULE_DESCRIPTION("Lantiq Falcon SPI controller driver"); +MODULE_DESCRIPTION("Lantiq Falcon SPI controller driver");
--- a/drivers/spi/Kconfig --- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig
@@ -210,6 +210,10 @@ config SPI_MPC52xx @@ -219,6 +219,10 @@ config SPI_MPC52xx
This drivers supports the MPC52xx SPI controller in master SPI This drivers supports the MPC52xx SPI controller in master SPI
mode. mode.

@ -116,7 +116,7 @@
+ easy98020_init); + easy98020_init);
--- a/arch/mips/lantiq/falcon/Kconfig --- a/arch/mips/lantiq/falcon/Kconfig
+++ b/arch/mips/lantiq/falcon/Kconfig +++ b/arch/mips/lantiq/falcon/Kconfig
@@ -6,6 +6,10 @@ @@ -6,6 +6,10 @@ config LANTIQ_MACH_EASY98000
bool "Easy98000" bool "Easy98000"
default y default y
@ -129,7 +129,7 @@
endif endif
--- a/arch/mips/lantiq/falcon/Makefile --- a/arch/mips/lantiq/falcon/Makefile
+++ b/arch/mips/lantiq/falcon/Makefile +++ b/arch/mips/lantiq/falcon/Makefile
@@ -3,3 +3,4 @@ @@ -3,3 +3,4 @@ obj-y += softdog_vpe.o
obj-$(CONFIG_LANTIQ_MACH_EASY98000) += addon-easy98000.o obj-$(CONFIG_LANTIQ_MACH_EASY98000) += addon-easy98000.o
obj-$(CONFIG_LANTIQ_MACH_EASY98000) += mach-easy98000.o obj-$(CONFIG_LANTIQ_MACH_EASY98000) += mach-easy98000.o
obj-$(CONFIG_LANTIQ_MACH_EASY98000) += dev-leds-easy98000-cpld.o obj-$(CONFIG_LANTIQ_MACH_EASY98000) += dev-leds-easy98000-cpld.o

@ -102,7 +102,7 @@
+ board_95C3AM1_init); + board_95C3AM1_init);
--- a/arch/mips/lantiq/falcon/Kconfig --- a/arch/mips/lantiq/falcon/Kconfig
+++ b/arch/mips/lantiq/falcon/Kconfig +++ b/arch/mips/lantiq/falcon/Kconfig
@@ -10,6 +10,10 @@ @@ -10,6 +10,10 @@ config LANTIQ_MACH_EASY98020
bool "Easy98020" bool "Easy98020"
default y default y
@ -115,14 +115,14 @@
endif endif
--- a/arch/mips/lantiq/falcon/Makefile --- a/arch/mips/lantiq/falcon/Makefile
+++ b/arch/mips/lantiq/falcon/Makefile +++ b/arch/mips/lantiq/falcon/Makefile
@@ -4,3 +4,4 @@ @@ -4,3 +4,4 @@ obj-$(CONFIG_LANTIQ_MACH_EASY98000) += a
obj-$(CONFIG_LANTIQ_MACH_EASY98000) += mach-easy98000.o obj-$(CONFIG_LANTIQ_MACH_EASY98000) += mach-easy98000.o
obj-$(CONFIG_LANTIQ_MACH_EASY98000) += dev-leds-easy98000-cpld.o obj-$(CONFIG_LANTIQ_MACH_EASY98000) += dev-leds-easy98000-cpld.o
obj-$(CONFIG_LANTIQ_MACH_EASY98020) += mach-easy98020.o obj-$(CONFIG_LANTIQ_MACH_EASY98020) += mach-easy98020.o
+obj-$(CONFIG_LANTIQ_MACH_95C3AM1) += mach-95C3AM1.o +obj-$(CONFIG_LANTIQ_MACH_95C3AM1) += mach-95C3AM1.o
--- a/arch/mips/lantiq/machtypes.h --- a/arch/mips/lantiq/machtypes.h
+++ b/arch/mips/lantiq/machtypes.h +++ b/arch/mips/lantiq/machtypes.h
@@ -21,6 +21,7 @@ @@ -21,6 +21,7 @@ enum lantiq_mach_type {
LANTIQ_MACH_EASY98000SF, /* Falcon Eval Board, Serial Flash */ LANTIQ_MACH_EASY98000SF, /* Falcon Eval Board, Serial Flash */
LANTIQ_MACH_EASY98000NAND, /* Falcon Eval Board, NAND Flash */ LANTIQ_MACH_EASY98000NAND, /* Falcon Eval Board, NAND Flash */
LANTIQ_MACH_EASY98020, /* Falcon Reference Board */ LANTIQ_MACH_EASY98020, /* Falcon Reference Board */

@ -8,7 +8,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/netdevice.h> #include <linux/netdevice.h>
@@ -125,6 +126,8 @@ @@ -125,6 +126,8 @@ typedef struct board_info {
struct delayed_work phy_poll; struct delayed_work phy_poll;
struct net_device *ndev; struct net_device *ndev;
@ -17,7 +17,7 @@
spinlock_t lock; spinlock_t lock;
struct mii_if_info mii; struct mii_if_info mii;
@@ -824,6 +827,8 @@ @@ -824,6 +827,8 @@ static void dm9000_timeout(struct net_de
netif_stop_queue(dev); netif_stop_queue(dev);
dm9000_reset(db); dm9000_reset(db);
dm9000_init_dm9000(dev); dm9000_init_dm9000(dev);
@ -26,7 +26,7 @@
/* We can accept TX packets again */ /* We can accept TX packets again */
dev->trans_start = jiffies; /* prevent tx timeout */ dev->trans_start = jiffies; /* prevent tx timeout */
netif_wake_queue(dev); netif_wake_queue(dev);
@@ -895,6 +900,12 @@ @@ -895,6 +900,12 @@ dm9000_start_xmit(struct sk_buff *skb, s
/* free this SKB */ /* free this SKB */
dev_kfree_skb(skb); dev_kfree_skb(skb);
@ -39,7 +39,7 @@
return NETDEV_TX_OK; return NETDEV_TX_OK;
} }
@@ -1136,6 +1147,18 @@ @@ -1136,6 +1147,18 @@ static void dm9000_poll_controller(struc
} }
#endif #endif
@ -58,7 +58,7 @@
/* /*
* Open the interface. * Open the interface.
* The interface is opened whenever "ifconfig" actives it. * The interface is opened whenever "ifconfig" actives it.
@@ -1149,14 +1172,15 @@ @@ -1149,14 +1172,15 @@ dm9000_open(struct net_device *dev)
if (netif_msg_ifup(db)) if (netif_msg_ifup(db))
dev_dbg(db->dev, "enabling %s\n", dev->name); dev_dbg(db->dev, "enabling %s\n", dev->name);
@ -80,7 +80,7 @@
/* GPIO0 on pre-activate PHY, Reg 1F is not set by reset */ /* GPIO0 on pre-activate PHY, Reg 1F is not set by reset */
iow(db, DM9000_GPR, 0); /* REG_1F bit0 activate phyxcer */ iow(db, DM9000_GPR, 0); /* REG_1F bit0 activate phyxcer */
mdelay(1); /* delay needs by DM9000B */ mdelay(1); /* delay needs by DM9000B */
@@ -1165,8 +1189,14 @@ @@ -1165,8 +1189,14 @@ dm9000_open(struct net_device *dev)
dm9000_reset(db); dm9000_reset(db);
dm9000_init_dm9000(dev); dm9000_init_dm9000(dev);
@ -97,7 +97,7 @@
/* Init driver variable */ /* Init driver variable */
db->dbug_cnt = 0; db->dbug_cnt = 0;
@@ -1174,6 +1204,9 @@ @@ -1174,6 +1204,9 @@ dm9000_open(struct net_device *dev)
mii_check_media(&db->mii, netif_msg_link(db), 1); mii_check_media(&db->mii, netif_msg_link(db), 1);
netif_start_queue(dev); netif_start_queue(dev);
@ -107,7 +107,7 @@
dm9000_schedule_poll(db); dm9000_schedule_poll(db);
return 0; return 0;
@@ -1371,6 +1404,7 @@ @@ -1371,6 +1404,7 @@ dm9000_probe(struct platform_device *pde
mutex_init(&db->addr_lock); mutex_init(&db->addr_lock);
INIT_DELAYED_WORK(&db->phy_poll, dm9000_poll_work); INIT_DELAYED_WORK(&db->phy_poll, dm9000_poll_work);

@ -1,6 +1,6 @@
--- a/arch/mips/lantiq/irq.c --- a/arch/mips/lantiq/irq.c
+++ b/arch/mips/lantiq/irq.c +++ b/arch/mips/lantiq/irq.c
@@ -51,6 +51,7 @@ @@ -52,6 +52,7 @@
#define ltq_eiu_w32(x, y) ltq_w32((x), ltq_eiu_membase + (y)) #define ltq_eiu_w32(x, y) ltq_w32((x), ltq_eiu_membase + (y))
#define ltq_eiu_r32(x) ltq_r32(ltq_eiu_membase + (x)) #define ltq_eiu_r32(x) ltq_r32(ltq_eiu_membase + (x))
@ -8,7 +8,7 @@
static unsigned short ltq_eiu_irq[MAX_EIU] = { static unsigned short ltq_eiu_irq[MAX_EIU] = {
LTQ_EIU_IR0, LTQ_EIU_IR0,
LTQ_EIU_IR1, LTQ_EIU_IR1,
@@ -59,6 +60,7 @@ @@ -60,6 +61,7 @@ static unsigned short ltq_eiu_irq[MAX_EI
LTQ_EIU_IR4, LTQ_EIU_IR4,
LTQ_EIU_IR5, LTQ_EIU_IR5,
}; };
@ -16,7 +16,7 @@
static struct resource ltq_icu_resource = { static struct resource ltq_icu_resource = {
.name = "icu", .name = "icu",
@@ -67,15 +69,19 @@ @@ -68,15 +70,19 @@ static struct resource ltq_icu_resource
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}; };
@ -36,7 +36,7 @@
void ltq_disable_irq(struct irq_data *d) void ltq_disable_irq(struct irq_data *d)
{ {
@@ -120,6 +126,7 @@ @@ -122,6 +128,7 @@ void ltq_enable_irq(struct irq_data *d)
ltq_icu_w32(ltq_icu_r32(ier) | (1 << irq_nr), ier); ltq_icu_w32(ltq_icu_r32(ier) | (1 << irq_nr), ier);
} }
@ -44,7 +44,7 @@
static unsigned int ltq_startup_eiu_irq(struct irq_data *d) static unsigned int ltq_startup_eiu_irq(struct irq_data *d)
{ {
int i; int i;
@@ -159,6 +166,7 @@ @@ -161,6 +168,7 @@ static void ltq_shutdown_eiu_irq(struct
} }
} }
} }
@ -52,7 +52,7 @@
static struct irq_chip ltq_irq_type = { static struct irq_chip ltq_irq_type = {
"icu", "icu",
@@ -170,6 +178,7 @@ @@ -172,6 +180,7 @@ static struct irq_chip ltq_irq_type = {
.irq_mask_ack = ltq_mask_and_ack_irq, .irq_mask_ack = ltq_mask_and_ack_irq,
}; };
@ -60,7 +60,7 @@
static struct irq_chip ltq_eiu_type = { static struct irq_chip ltq_eiu_type = {
"eiu", "eiu",
.irq_startup = ltq_startup_eiu_irq, .irq_startup = ltq_startup_eiu_irq,
@@ -181,6 +190,7 @@ @@ -183,6 +192,7 @@ static struct irq_chip ltq_eiu_type = {
.irq_mask = ltq_disable_irq, .irq_mask = ltq_disable_irq,
.irq_mask_ack = ltq_mask_and_ack_irq, .irq_mask_ack = ltq_mask_and_ack_irq,
}; };
@ -68,7 +68,7 @@
static void ltq_hw_irqdispatch(int module) static void ltq_hw_irqdispatch(int module)
{ {
@@ -196,10 +206,12 @@ @@ -198,10 +208,12 @@ static void ltq_hw_irqdispatch(int modul
irq = __fls(irq); irq = __fls(irq);
do_IRQ((int)irq + INT_NUM_IM0_IRL0 + (INT_NUM_IM_OFFSET * module)); do_IRQ((int)irq + INT_NUM_IM0_IRL0 + (INT_NUM_IM_OFFSET * module));
@ -81,7 +81,7 @@
} }
#define DEFINE_HWx_IRQDISPATCH(x) \ #define DEFINE_HWx_IRQDISPATCH(x) \
@@ -262,6 +274,7 @@ @@ -264,6 +276,7 @@ void __init arch_init_irq(void)
if (!ltq_icu_membase) if (!ltq_icu_membase)
panic("Failed to remap icu memory\n"); panic("Failed to remap icu memory\n");
@ -89,7 +89,7 @@
if (insert_resource(&iomem_resource, &ltq_eiu_resource) < 0) if (insert_resource(&iomem_resource, &ltq_eiu_resource) < 0)
panic("Failed to insert eiu memory\n"); panic("Failed to insert eiu memory\n");
@@ -273,6 +286,7 @@ @@ -275,6 +288,7 @@ void __init arch_init_irq(void)
resource_size(&ltq_eiu_resource)); resource_size(&ltq_eiu_resource));
if (!ltq_eiu_membase) if (!ltq_eiu_membase)
panic("Failed to remap eiu memory\n"); panic("Failed to remap eiu memory\n");
@ -97,7 +97,7 @@
/* make sure all irqs are turned off by default */ /* make sure all irqs are turned off by default */
for (i = 0; i < 5; i++) for (i = 0; i < 5; i++)
@@ -298,6 +312,7 @@ @@ -300,6 +314,7 @@ void __init arch_init_irq(void)
for (i = INT_NUM_IRQ0; for (i = INT_NUM_IRQ0;
i <= (INT_NUM_IRQ0 + (5 * INT_NUM_IM_OFFSET)); i++) i <= (INT_NUM_IRQ0 + (5 * INT_NUM_IM_OFFSET)); i++)
@ -105,7 +105,7 @@
if ((i == LTQ_EIU_IR0) || (i == LTQ_EIU_IR1) || if ((i == LTQ_EIU_IR0) || (i == LTQ_EIU_IR1) ||
(i == LTQ_EIU_IR2)) (i == LTQ_EIU_IR2))
irq_set_chip_and_handler(i, &ltq_eiu_type, irq_set_chip_and_handler(i, &ltq_eiu_type,
@@ -308,6 +323,7 @@ @@ -310,6 +325,7 @@ void __init arch_init_irq(void)
irq_set_chip_and_handler(i, &ltq_eiu_type, irq_set_chip_and_handler(i, &ltq_eiu_type,
handle_level_irq); handle_level_irq);
else else
@ -115,7 +115,7 @@
--- a/arch/mips/lantiq/clk.c --- a/arch/mips/lantiq/clk.c
+++ b/arch/mips/lantiq/clk.c +++ b/arch/mips/lantiq/clk.c
@@ -46,6 +46,7 @@ @@ -46,6 +46,7 @@ static struct clk cpu_clk_generic[] = {
}, },
}; };
@ -123,7 +123,7 @@
static struct resource ltq_cgu_resource = { static struct resource ltq_cgu_resource = {
.name = "cgu", .name = "cgu",
.start = LTQ_CGU_BASE_ADDR, .start = LTQ_CGU_BASE_ADDR,
@@ -55,6 +56,7 @@ @@ -55,6 +56,7 @@ static struct resource ltq_cgu_resource
/* remapped clock register range */ /* remapped clock register range */
void __iomem *ltq_cgu_membase; void __iomem *ltq_cgu_membase;
@ -131,7 +131,7 @@
void clk_init(void) void clk_init(void)
{ {
@@ -120,6 +122,7 @@ @@ -131,6 +133,7 @@ void __init plat_time_init(void)
{ {
struct clk *clk; struct clk *clk;
@ -139,7 +139,7 @@
if (insert_resource(&iomem_resource, &ltq_cgu_resource) < 0) if (insert_resource(&iomem_resource, &ltq_cgu_resource) < 0)
panic("Failed to insert cgu memory\n"); panic("Failed to insert cgu memory\n");
@@ -133,6 +136,7 @@ @@ -144,6 +147,7 @@ void __init plat_time_init(void)
pr_err("Failed to remap cgu memory\n"); pr_err("Failed to remap cgu memory\n");
unreachable(); unreachable();
} }

@ -1,6 +1,6 @@
--- /dev/null --- /dev/null
+++ b/arch/mips/include/asm/mach-lantiq/falcon/lantiq_soc.h +++ b/arch/mips/include/asm/mach-lantiq/falcon/lantiq_soc.h
@@ -0,0 +1,40 @@ @@ -0,0 +1,45 @@
+/* +/*
+ * This program is free software; you can redistribute it and/or modify it + * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published + * under the terms of the GNU General Public License version 2 as published
@ -39,5 +39,10 @@
+#define LTQ_WDT_BASE_ADDR 0x1F8803F0 +#define LTQ_WDT_BASE_ADDR 0x1F8803F0
+#define LTQ_WDT_SIZE 0x10 +#define LTQ_WDT_SIZE 0x10
+ +
+extern int ltq_gpio_request(unsigned int pin, unsigned int alt0,
+ unsigned int alt1, unsigned int dir,
+ const char *name);
+extern int ltq_gpio_mux_set(unsigned int pin, unsigned int mux);
+
+#endif /* CONFIG_SOC_FALCON */ +#endif /* CONFIG_SOC_FALCON */
+#endif /* _LTQ_XWAY_H__ */ +#endif /* _LTQ_XWAY_H__ */

@ -1,6 +1,6 @@
--- a/drivers/net/lantiq_etop.c --- a/drivers/net/lantiq_etop.c
+++ b/drivers/net/lantiq_etop.c +++ b/drivers/net/lantiq_etop.c
@@ -155,8 +155,12 @@ @@ -147,8 +147,12 @@ ltq_etop_hw_receive(struct ltq_etop_chan
skb_put(skb, len); skb_put(skb, len);
skb->dev = ch->netdev; skb->dev = ch->netdev;

@ -1,7 +1,7 @@
--- a/drivers/mtd/Kconfig --- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig +++ b/drivers/mtd/Kconfig
@@ -57,6 +57,10 @@ config MTD_ROOTFS_SPLIT @@ -41,6 +41,10 @@ config MTD_ROOTFS_SPLIT
depends on MTD_PARTITIONS bool "Automatically split 'rootfs' partition for squashfs"
default y default y
+config MTD_UIMAGE_SPLIT +config MTD_UIMAGE_SPLIT
@ -13,7 +13,7 @@
---help--- ---help---
--- a/drivers/mtd/mtdpart.c --- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c
@@ -860,6 +860,82 @@ static int refresh_rootfs_split(struct m @@ -861,6 +861,82 @@ static int refresh_rootfs_split(struct m
} }
#endif /* CONFIG_MTD_ROOTFS_SPLIT */ #endif /* CONFIG_MTD_ROOTFS_SPLIT */
@ -96,7 +96,7 @@
/* /*
* This function, given a master MTD object and a partition table, creates * This function, given a master MTD object and a partition table, creates
* and registers slave MTD objects which are bound to the master according to * and registers slave MTD objects which are bound to the master according to
@@ -893,6 +969,17 @@ int add_mtd_partitions(struct mtd_info * @@ -894,6 +970,17 @@ int add_mtd_partitions(struct mtd_info *
add_mtd_device(&slave->mtd); add_mtd_device(&slave->mtd);

@ -35,7 +35,7 @@
static void __init prom_init_cmdline(void) static void __init prom_init_cmdline(void)
{ {
int argc = fw_arg0; int argc = fw_arg0;
@@ -53,6 +81,7 @@ static void __init prom_init_cmdline(voi @@ -55,6 +83,7 @@ static void __init prom_init_cmdline(voi
strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline)); strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline));
} }
} }

@ -250,7 +250,7 @@
--- a/net/ipv4/Makefile --- a/net/ipv4/Makefile
+++ b/net/ipv4/Makefile +++ b/net/ipv4/Makefile
@@ -14,6 +14,9 @@ obj-y := route.o inetpeer.o protocol @@ -14,6 +14,9 @@ obj-y := route.o inetpeer.o protocol
inet_fragment.o inet_fragment.o ping.o
obj-$(CONFIG_SYSCTL) += sysctl_net_ipv4.o obj-$(CONFIG_SYSCTL) += sysctl_net_ipv4.o
+ifneq ($(CONFIG_IFX_UDP_REDIRECT),) +ifneq ($(CONFIG_IFX_UDP_REDIRECT),)
@ -279,9 +279,9 @@
- int (*getfrag)(void *, char *, int, int, int, struct sk_buff *); - int (*getfrag)(void *, char *, int, int, int, struct sk_buff *);
+ int (*getfrag)(void *, char *, int, int, int, struct sk_buff *) = NULL; + int (*getfrag)(void *, char *, int, int, int, struct sk_buff *) = NULL;
struct sk_buff *skb; struct sk_buff *skb;
struct ip_options_data opt_copy;
if (len > 0xFFFF) @@ -819,7 +823,13 @@ int udp_sendmsg(struct kiocb *iocb, stru
@@ -818,7 +822,13 @@ int udp_sendmsg(struct kiocb *iocb, stru
ipc.opt = NULL; ipc.opt = NULL;
ipc.tx_flags = 0; ipc.tx_flags = 0;
@ -294,9 +294,9 @@
+#endif /* IFX_UDP_REDIRECT */ +#endif /* IFX_UDP_REDIRECT */
+ getfrag = is_udplite ? udplite_getfrag : ip_generic_getfrag; + getfrag = is_udplite ? udplite_getfrag : ip_generic_getfrag;
fl4 = &inet->cork.fl.u.ip4;
if (up->pending) { if (up->pending) {
/* @@ -1619,6 +1629,7 @@ int __udp4_lib_rcv(struct sk_buff *skb,
@@ -1608,6 +1618,7 @@ int __udp4_lib_rcv(struct sk_buff *skb,
struct rtable *rt = skb_rtable(skb); struct rtable *rt = skb_rtable(skb);
__be32 saddr, daddr; __be32 saddr, daddr;
struct net *net = dev_net(skb->dev); struct net *net = dev_net(skb->dev);
@ -304,7 +304,7 @@
/* /*
* Validate the packet. * Validate the packet.
@@ -1640,7 +1651,16 @@ int __udp4_lib_rcv(struct sk_buff *skb, @@ -1651,7 +1662,16 @@ int __udp4_lib_rcv(struct sk_buff *skb,
sk = __udp4_lib_lookup_skb(skb, uh->source, uh->dest, udptable); sk = __udp4_lib_lookup_skb(skb, uh->source, uh->dest, udptable);
if (sk != NULL) { if (sk != NULL) {
@ -322,7 +322,7 @@
sock_put(sk); sock_put(sk);
/* a return value > 0 means to resubmit the input, but /* a return value > 0 means to resubmit the input, but
@@ -1937,7 +1957,7 @@ struct proto udp_prot = { @@ -1948,7 +1968,7 @@ struct proto udp_prot = {
.clear_sk = sk_prot_clear_portaddr_nulls, .clear_sk = sk_prot_clear_portaddr_nulls,
}; };
EXPORT_SYMBOL(udp_prot); EXPORT_SYMBOL(udp_prot);

@ -1,6 +1,6 @@
--- a/arch/mips/Kconfig --- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig +++ b/arch/mips/Kconfig
@@ -1871,6 +1871,28 @@ config MIPS_VPE_LOADER @@ -1905,6 +1905,28 @@ config MIPS_VPE_LOADER
Includes a loader for loading an elf relocatable object Includes a loader for loading an elf relocatable object
onto another VPE and running it. onto another VPE and running it.
@ -140,7 +140,7 @@
#define read_tc_gpr_sp() mftgpr(29) #define read_tc_gpr_sp() mftgpr(29)
--- a/arch/mips/kernel/Makefile --- a/arch/mips/kernel/Makefile
+++ b/arch/mips/kernel/Makefile +++ b/arch/mips/kernel/Makefile
@@ -85,7 +85,8 @@ obj-$(CONFIG_MIPS32_O32) += binfmt_elfo3 @@ -86,7 +86,8 @@ obj-$(CONFIG_MIPS32_O32) += binfmt_elfo3
obj-$(CONFIG_KGDB) += kgdb.o obj-$(CONFIG_KGDB) += kgdb.o
obj-$(CONFIG_PROC_FS) += proc.o obj-$(CONFIG_PROC_FS) += proc.o

@ -1,6 +1,6 @@
--- a/arch/mips/Kconfig --- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig +++ b/arch/mips/Kconfig
@@ -1878,6 +1878,28 @@ config IFX_VPE_EXT @@ -1912,6 +1912,28 @@ config IFX_VPE_EXT
help help
IFX included extensions in APRP IFX included extensions in APRP
@ -113,7 +113,7 @@
write_vpe_c0_cause(0); write_vpe_c0_cause(0);
--- a/arch/mips/mm/c-r4k.c --- a/arch/mips/mm/c-r4k.c
+++ b/arch/mips/mm/c-r4k.c +++ b/arch/mips/mm/c-r4k.c
@@ -1345,6 +1345,106 @@ static int __init setcoherentio(char *st @@ -1346,6 +1346,106 @@ static int __init setcoherentio(char *st
__setup("coherentio", setcoherentio); __setup("coherentio", setcoherentio);
#endif #endif
@ -220,7 +220,7 @@
void __cpuinit r4k_cache_init(void) void __cpuinit r4k_cache_init(void)
{ {
extern void build_clear_page(void); extern void build_clear_page(void);
@@ -1364,6 +1464,78 @@ void __cpuinit r4k_cache_init(void) @@ -1365,6 +1465,78 @@ void __cpuinit r4k_cache_init(void)
break; break;
} }

@ -10,7 +10,7 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@googlemail.com>
--- a/drivers/spi/Kconfig --- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig
@@ -193,6 +193,14 @@ @@ -202,6 +202,14 @@ config SPI_IMX
This enables using the Freescale i.MX SPI controllers in master This enables using the Freescale i.MX SPI controllers in master
mode. mode.
@ -27,7 +27,7 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@googlemail.com>
depends on PARPORT && EXPERIMENTAL depends on PARPORT && EXPERIMENTAL
--- a/drivers/spi/Makefile --- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile +++ b/drivers/spi/Makefile
@@ -26,6 +26,7 @@ @@ -27,6 +27,7 @@ obj-$(CONFIG_SPI_EP93XX) += ep93xx_spi.
obj-$(CONFIG_SPI_GPIO) += spi_gpio.o obj-$(CONFIG_SPI_GPIO) += spi_gpio.o
obj-$(CONFIG_SPI_GPIO_OLD) += spi_gpio_old.o obj-$(CONFIG_SPI_GPIO_OLD) += spi_gpio_old.o
obj-$(CONFIG_SPI_IMX) += spi_imx.o obj-$(CONFIG_SPI_IMX) += spi_imx.o

@ -34,7 +34,7 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@googlemail.com>
#include <asm/bootinfo.h> #include <asm/bootinfo.h>
#include <asm/irq.h> #include <asm/irq.h>
@@ -119,3 +120,41 @@ @@ -119,3 +120,41 @@ ltq_register_etop(struct ltq_eth_data *e
platform_device_register(&ltq_etop); platform_device_register(&ltq_etop);
} }
} }

@ -1,6 +1,6 @@
--- a/drivers/usb/Kconfig --- a/drivers/usb/Kconfig
+++ b/drivers/usb/Kconfig +++ b/drivers/usb/Kconfig
@@ -116,6 +116,8 @@ @@ -116,6 +116,8 @@ source "drivers/usb/wusbcore/Kconfig"
source "drivers/usb/host/Kconfig" source "drivers/usb/host/Kconfig"
@ -11,7 +11,7 @@
source "drivers/usb/renesas_usbhs/Kconfig" source "drivers/usb/renesas_usbhs/Kconfig"
--- a/drivers/usb/Makefile --- a/drivers/usb/Makefile
+++ b/drivers/usb/Makefile +++ b/drivers/usb/Makefile
@@ -28,6 +28,8 @@ @@ -28,6 +28,8 @@ obj-$(CONFIG_USB_C67X00_HCD) += c67x00/
obj-$(CONFIG_USB_WUSB) += wusbcore/ obj-$(CONFIG_USB_WUSB) += wusbcore/
@ -15615,7 +15615,7 @@
+#endif +#endif
--- a/drivers/usb/core/hub.c --- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c
@@ -2879,11 +2879,11 @@ @@ -2885,11 +2885,11 @@ hub_port_init (struct usb_hub *hub, stru
udev->ttport = hdev->ttport; udev->ttport = hdev->ttport;
} else if (udev->speed != USB_SPEED_HIGH } else if (udev->speed != USB_SPEED_HIGH
&& hdev->speed == USB_SPEED_HIGH) { && hdev->speed == USB_SPEED_HIGH) {

@ -1,6 +1,6 @@
--- a/arch/mips/lantiq/xway/Kconfig --- a/arch/mips/lantiq/xway/Kconfig
+++ b/arch/mips/lantiq/xway/Kconfig +++ b/arch/mips/lantiq/xway/Kconfig
@@ -6,6 +6,10 @@ @@ -6,6 +6,10 @@ config LANTIQ_MACH_EASY50712
bool "Easy50712 - Danube" bool "Easy50712 - Danube"
default y default y
@ -13,7 +13,7 @@
endif endif
--- a/arch/mips/lantiq/xway/Makefile --- a/arch/mips/lantiq/xway/Makefile
+++ b/arch/mips/lantiq/xway/Makefile +++ b/arch/mips/lantiq/xway/Makefile
@@ -5,3 +5,4 @@ @@ -5,3 +5,4 @@ obj-$(CONFIG_SOC_AMAZON_SE) += clk-ase.o
obj-$(CONFIG_LANTIQ_MACH_EASY50712) += mach-easy50712.o obj-$(CONFIG_LANTIQ_MACH_EASY50712) += mach-easy50712.o
obj-$(CONFIG_LANTIQ_MACH_EASY50601) += mach-easy50601.o obj-$(CONFIG_LANTIQ_MACH_EASY50601) += mach-easy50601.o
@ -518,7 +518,7 @@
+ arv752dpw22_init); + arv752dpw22_init);
--- a/arch/mips/lantiq/machtypes.h --- a/arch/mips/lantiq/machtypes.h
+++ b/arch/mips/lantiq/machtypes.h +++ b/arch/mips/lantiq/machtypes.h
@@ -22,6 +22,17 @@ @@ -22,6 +22,17 @@ enum lantiq_mach_type {
LANTIQ_MACH_EASY98000NAND, /* Falcon Eval Board, NAND Flash */ LANTIQ_MACH_EASY98000NAND, /* Falcon Eval Board, NAND Flash */
LANTIQ_MACH_EASY98020, /* Falcon Reference Board */ LANTIQ_MACH_EASY98020, /* Falcon Reference Board */
LANTIQ_MACH_95C3AM1, /* Board 95C3AM1 */ LANTIQ_MACH_95C3AM1, /* Board 95C3AM1 */

@ -1,6 +1,6 @@
--- a/arch/mips/lantiq/machtypes.h --- a/arch/mips/lantiq/machtypes.h
+++ b/arch/mips/lantiq/machtypes.h +++ b/arch/mips/lantiq/machtypes.h
@@ -33,6 +33,9 @@ @@ -33,6 +33,9 @@ enum lantiq_mach_type {
LANTIQ_MACH_ARV752DPW, /* Arcor easybox a802 */ LANTIQ_MACH_ARV752DPW, /* Arcor easybox a802 */
LANTIQ_MACH_ARV752DPW22, /* Arcor easybox a803 */ LANTIQ_MACH_ARV752DPW22, /* Arcor easybox a803 */
LANTIQ_MACH_ARV7518PW, /* ASTORIA */ LANTIQ_MACH_ARV7518PW, /* ASTORIA */
@ -12,7 +12,7 @@
#endif #endif
--- a/arch/mips/lantiq/xway/Kconfig --- a/arch/mips/lantiq/xway/Kconfig
+++ b/arch/mips/lantiq/xway/Kconfig +++ b/arch/mips/lantiq/xway/Kconfig
@@ -10,6 +10,10 @@ @@ -10,6 +10,10 @@ config LANTIQ_MACH_ARV45XX
bool "ARV45XX" bool "ARV45XX"
default y default y
@ -25,7 +25,7 @@
endif endif
--- a/arch/mips/lantiq/xway/Makefile --- a/arch/mips/lantiq/xway/Makefile
+++ b/arch/mips/lantiq/xway/Makefile +++ b/arch/mips/lantiq/xway/Makefile
@@ -6,3 +6,4 @@ @@ -6,3 +6,4 @@ obj-$(CONFIG_SOC_AMAZON_SE) += clk-ase.o
obj-$(CONFIG_LANTIQ_MACH_EASY50712) += mach-easy50712.o obj-$(CONFIG_LANTIQ_MACH_EASY50712) += mach-easy50712.o
obj-$(CONFIG_LANTIQ_MACH_EASY50601) += mach-easy50601.o obj-$(CONFIG_LANTIQ_MACH_EASY50601) += mach-easy50601.o
obj-$(CONFIG_LANTIQ_MACH_ARV45XX) += mach-arv45xx.o obj-$(CONFIG_LANTIQ_MACH_ARV45XX) += mach-arv45xx.o

@ -1,6 +1,6 @@
--- a/arch/mips/lantiq/xway/Kconfig --- a/arch/mips/lantiq/xway/Kconfig
+++ b/arch/mips/lantiq/xway/Kconfig +++ b/arch/mips/lantiq/xway/Kconfig
@@ -14,6 +14,10 @@ @@ -14,6 +14,10 @@ config LANTIQ_MACH_NETGEAR
bool "Netgear" bool "Netgear"
default y default y
@ -13,7 +13,7 @@
endif endif
--- a/arch/mips/lantiq/xway/Makefile --- a/arch/mips/lantiq/xway/Makefile
+++ b/arch/mips/lantiq/xway/Makefile +++ b/arch/mips/lantiq/xway/Makefile
@@ -7,3 +7,4 @@ @@ -7,3 +7,4 @@ obj-$(CONFIG_LANTIQ_MACH_EASY50712) += m
obj-$(CONFIG_LANTIQ_MACH_EASY50601) += mach-easy50601.o obj-$(CONFIG_LANTIQ_MACH_EASY50601) += mach-easy50601.o
obj-$(CONFIG_LANTIQ_MACH_ARV45XX) += mach-arv45xx.o obj-$(CONFIG_LANTIQ_MACH_ARV45XX) += mach-arv45xx.o
obj-$(CONFIG_LANTIQ_MACH_NETGEAR) += mach-netgear.o obj-$(CONFIG_LANTIQ_MACH_NETGEAR) += mach-netgear.o
@ -132,7 +132,7 @@
+ gigasx76x_init); + gigasx76x_init);
--- a/arch/mips/lantiq/machtypes.h --- a/arch/mips/lantiq/machtypes.h
+++ b/arch/mips/lantiq/machtypes.h +++ b/arch/mips/lantiq/machtypes.h
@@ -36,6 +36,9 @@ @@ -36,6 +36,9 @@ enum lantiq_mach_type {
/* Netgear */ /* Netgear */
LANTIQ_MACH_DGN3500B, /* Netgear DGN3500 */ LANTIQ_MACH_DGN3500B, /* Netgear DGN3500 */

@ -0,0 +1,27 @@
--- a/arch/mips/lantiq/falcon/mach-easy98020.c
+++ b/arch/mips/lantiq/falcon/mach-easy98020.c
@@ -111,3 +111,13 @@ MIPS_MACHINE(LANTIQ_MACH_EASY98020,
"EASY98020",
"EASY98020 Eval Board",
easy98020_init);
+
+MIPS_MACHINE(LANTIQ_MACH_EASY98020_1LAN,
+ "EASY98020_1LAN",
+ "EASY98020 Eval Board (1 LAN port)",
+ easy98020_init);
+
+MIPS_MACHINE(LANTIQ_MACH_EASY98020_2LAN,
+ "EASY98020_2LAN",
+ "EASY98020 Eval Board (2 LAN ports)",
+ easy98020_init);
--- a/arch/mips/lantiq/machtypes.h
+++ b/arch/mips/lantiq/machtypes.h
@@ -21,6 +21,8 @@ enum lantiq_mach_type {
LANTIQ_MACH_EASY98000SF, /* Falcon Eval Board, Serial Flash */
LANTIQ_MACH_EASY98000NAND, /* Falcon Eval Board, NAND Flash */
LANTIQ_MACH_EASY98020, /* Falcon Reference Board */
+ LANTIQ_MACH_EASY98020_1LAN, /* Falcon Reference Board (1 LAN port) */
+ LANTIQ_MACH_EASY98020_2LAN, /* Falcon Reference Board (2 LAN ports) */
LANTIQ_MACH_95C3AM1, /* Board 95C3AM1 */
/* Arcadyan */

@ -1,6 +1,6 @@
--- a/arch/mips/lantiq/xway/devices.c --- a/arch/mips/lantiq/xway/devices.c
+++ b/arch/mips/lantiq/xway/devices.c +++ b/arch/mips/lantiq/xway/devices.c
@@ -121,6 +121,16 @@ @@ -121,6 +121,16 @@ ltq_register_etop(struct ltq_eth_data *e
} }
} }
@ -19,7 +19,7 @@
.start = LTQ_SSC_BASE_ADDR, .start = LTQ_SSC_BASE_ADDR,
--- a/arch/mips/lantiq/xway/devices.h --- a/arch/mips/lantiq/xway/devices.h
+++ b/arch/mips/lantiq/xway/devices.h +++ b/arch/mips/lantiq/xway/devices.h
@@ -19,5 +19,6 @@ @@ -19,5 +19,6 @@ extern void ltq_register_ase_asc(void);
extern void ltq_register_etop(struct ltq_eth_data *eth); extern void ltq_register_etop(struct ltq_eth_data *eth);
extern void ltq_register_spi(struct ltq_spi_platform_data *pdata, extern void ltq_register_spi(struct ltq_spi_platform_data *pdata,
struct spi_board_info const *info, unsigned n); struct spi_board_info const *info, unsigned n);

@ -1,6 +1,6 @@
--- a/arch/mips/lantiq/xway/devices.c --- a/arch/mips/lantiq/xway/devices.c
+++ b/arch/mips/lantiq/xway/devices.c +++ b/arch/mips/lantiq/xway/devices.c
@@ -131,6 +131,26 @@ @@ -131,6 +131,26 @@ ltq_register_madwifi_eep(void)
lantiq_emulate_madwifi_eep = 1; lantiq_emulate_madwifi_eep = 1;
} }
@ -37,7 +37,7 @@
extern void ltq_register_gpio(void); extern void ltq_register_gpio(void);
extern void ltq_register_gpio_stp(void); extern void ltq_register_gpio_stp(void);
@@ -20,5 +21,6 @@ @@ -20,5 +21,6 @@ extern void ltq_register_etop(struct ltq
extern void ltq_register_spi(struct ltq_spi_platform_data *pdata, extern void ltq_register_spi(struct ltq_spi_platform_data *pdata,
struct spi_board_info const *info, unsigned n); struct spi_board_info const *info, unsigned n);
extern void ltq_register_madwifi_eep(void); extern void ltq_register_madwifi_eep(void);

@ -1,6 +1,6 @@
--- a/arch/mips/lantiq/devices.c --- a/arch/mips/lantiq/devices.c
+++ b/arch/mips/lantiq/devices.c +++ b/arch/mips/lantiq/devices.c
@@ -120,3 +120,20 @@ @@ -120,3 +120,20 @@ void __init ltq_register_pci(struct ltq_
pr_err("kernel is compiled without PCI support\n"); pr_err("kernel is compiled without PCI support\n");
} }
#endif #endif
@ -23,7 +23,7 @@
+} +}
--- a/arch/mips/lantiq/devices.h --- a/arch/mips/lantiq/devices.h
+++ b/arch/mips/lantiq/devices.h +++ b/arch/mips/lantiq/devices.h
@@ -19,5 +19,6 @@ @@ -19,5 +19,6 @@ extern void ltq_register_nor(struct phys
extern void ltq_register_wdt(void); extern void ltq_register_wdt(void);
extern void ltq_register_asc(int port); extern void ltq_register_asc(int port);
extern void ltq_register_pci(struct ltq_pci_data *data); extern void ltq_register_pci(struct ltq_pci_data *data);
@ -32,7 +32,7 @@
#endif #endif
--- a/arch/mips/lantiq/xway/mach-easy50712.c --- a/arch/mips/lantiq/xway/mach-easy50712.c
+++ b/arch/mips/lantiq/xway/mach-easy50712.c +++ b/arch/mips/lantiq/xway/mach-easy50712.c
@@ -61,6 +61,7 @@ @@ -61,6 +61,7 @@ static void __init easy50712_init(void)
ltq_register_nor(&easy50712_flash_data); ltq_register_nor(&easy50712_flash_data);
ltq_register_pci(&ltq_pci_data); ltq_register_pci(&ltq_pci_data);
ltq_register_etop(&ltq_eth_data); ltq_register_etop(&ltq_eth_data);

@ -1,6 +1,6 @@
--- a/arch/mips/lantiq/xway/devices.c --- a/arch/mips/lantiq/xway/devices.c
+++ b/arch/mips/lantiq/xway/devices.c +++ b/arch/mips/lantiq/xway/devices.c
@@ -151,6 +151,29 @@ @@ -151,6 +151,29 @@ ltq_register_gpio_buttons(struct gpio_bu
platform_device_register(&ltq_gpio_buttons_platform_device); platform_device_register(&ltq_gpio_buttons_platform_device);
} }

@ -0,0 +1,59 @@
activate serial driver for ASC1 if "use_asc1=x" is given on kernel commandline
mux setup for pins is done via late_initcall, when the gpio driver is initialized
only implemented for EASY98000, generic version t.b.d.
--- a/arch/mips/lantiq/falcon/devices.c
+++ b/arch/mips/lantiq/falcon/devices.c
@@ -75,6 +75,7 @@ void __init falcon_register_asc(int port
case 1:
platform_device_register_simple("ltq_asc", 1,
falcon_asc1_resources, ARRAY_SIZE(falcon_asc1_resources));
+ sys1_hw_activate(ACTS_ASC1_ACT);
break;
default:
break;
--- a/arch/mips/lantiq/falcon/mach-easy98000.c
+++ b/arch/mips/lantiq/falcon/mach-easy98000.c
@@ -15,6 +15,7 @@
#include <linux/spi/spi.h>
#include <linux/spi/spi_gpio.h>
#include <linux/spi/eeprom.h>
+#include <falcon/lantiq_soc.h>
#include "../machtypes.h"
@@ -206,9 +207,34 @@ static void __init easy98000_spi_gpio_in
platform_device_register(&easy98000_spi_gpio_device);
}
+static int register_asc1 = 0;
+static int __init parse_asc1(char *p)
+{
+ register_asc1 = 1;
+ return 0;
+}
+__setup("use_asc1", parse_asc1);
+
+#define MUXC_SIF_RX_PIN 112
+#define MUXC_SIF_TX_PIN 113
+
+static int __init asc1_mux_setup(void)
+{
+ if (register_asc1) {
+ if (ltq_gpio_request(MUXC_SIF_RX_PIN, 1, 1, 0, "asc1-rx"))
+ return -1;
+ if (ltq_gpio_request(MUXC_SIF_TX_PIN, 1, 1, 1, "asc1-tx"))
+ return -1;
+ }
+ return 0;
+}
+late_initcall(asc1_mux_setup);
+
static void __init easy98000_init_common(void)
{
falcon_register_asc(0);
+ if (register_asc1)
+ falcon_register_asc(1);
falcon_register_gpio();
falcon_register_wdt();
falcon_register_i2c();
Loading…
Cancel
Save