[lantiq] move files-3.3 -> files
authorJohn Crispin <john@openwrt.org>
Sun, 27 May 2012 16:13:02 +0000 (16:13 +0000)
committerJohn Crispin <john@openwrt.org>
Sun, 27 May 2012 16:13:02 +0000 (16:13 +0000)
SVN-Revision: 31912

58 files changed:
target/linux/lantiq/files-3.3/arch/mips/include/asm/mach-lantiq/dev-gpio-buttons.h [deleted file]
target/linux/lantiq/files-3.3/arch/mips/include/asm/mach-lantiq/dev-gpio-leds.h [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/dev-gpio-buttons.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/dev-gpio-leds.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/addon-easy98000.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/dev-leds-easy98000-cpld.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/dev-leds-easy98000-cpld.h [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/mach-95C3AM1.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/mach-easy98020.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-dwc_otg.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-dwc_otg.h [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-wifi-athxk.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-wifi-athxk.h [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-wifi-rt2x00.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-wifi-rt2x00.h [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-arv.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-bthomehubv2b.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-easy50601.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-easy50712.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-fritz_ar9.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-fritz_vr9.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-gigasx76x.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-gigasx76x.h [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-h201l.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-netgear.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-p2601hnfx.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-wbmr.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/pci-ath-fixup.c [deleted file]
target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/pci-ath-fixup.h [deleted file]
target/linux/lantiq/files/arch/mips/include/asm/mach-lantiq/dev-gpio-buttons.h [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/include/asm/mach-lantiq/dev-gpio-leds.h [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/dev-gpio-buttons.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/dev-gpio-leds.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/falcon/addon-easy98000.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/falcon/dev-leds-easy98000-cpld.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/falcon/dev-leds-easy98000-cpld.h [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/falcon/mach-95C3AM1.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/falcon/mach-easy98020.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/dev-dwc_otg.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/dev-dwc_otg.h [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/dev-wifi-athxk.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/dev-wifi-athxk.h [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/dev-wifi-rt2x00.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/dev-wifi-rt2x00.h [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/mach-arv.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/mach-bthomehubv2b.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/mach-easy50601.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/mach-easy50712.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/mach-fritz_ar9.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/mach-fritz_vr9.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/mach-gigasx76x.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/mach-gigasx76x.h [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/mach-h201l.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/mach-netgear.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/mach-p2601hnfx.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/mach-wbmr.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/pci-ath-fixup.c [new file with mode: 0644]
target/linux/lantiq/files/arch/mips/lantiq/xway/pci-ath-fixup.h [new file with mode: 0644]

diff --git a/target/linux/lantiq/files-3.3/arch/mips/include/asm/mach-lantiq/dev-gpio-buttons.h b/target/linux/lantiq/files-3.3/arch/mips/include/asm/mach-lantiq/dev-gpio-buttons.h
deleted file mode 100644 (file)
index adb531c..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- *  Lantiq GPIO button support
- *
- *  Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
- *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- *  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
- *  by the Free Software Foundation.
- */
-
-#ifndef _LANTIQ_DEV_GPIO_BUTTONS_H
-#define _LANTIQ_DEV_GPIO_BUTTONS_H
-
-#include <linux/input.h>
-#include <linux/gpio_keys.h>
-
-#define LTQ_KEYS_POLL_INTERVAL         20 /* msecs */
-#define LTQ_KEYS_DEBOUNCE_INTERVAL     (3 * LTQ_KEYS_POLL_INTERVAL)
-
-void ltq_register_gpio_keys_polled(int id,
-                                     unsigned poll_interval,
-                                     unsigned nbuttons,
-                                     struct gpio_keys_button *buttons);
-
-#endif /* _LANTIQ_DEV_GPIO_BUTTONS_H */
diff --git a/target/linux/lantiq/files-3.3/arch/mips/include/asm/mach-lantiq/dev-gpio-leds.h b/target/linux/lantiq/files-3.3/arch/mips/include/asm/mach-lantiq/dev-gpio-leds.h
deleted file mode 100644 (file)
index d51e496..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- *  Lantiq GPIO LED device support
- *
- *  Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
- *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- *  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
- *  by the Free Software Foundation.
- */
-
-#ifndef _LANTIQ_DEV_LEDS_GPIO_H
-#define _LANTIQ_DEV_LEDS_GPIO_H
-
-#include <linux/leds.h>
-
-void ltq_add_device_gpio_leds(int id,
-       unsigned num_leds,
-       struct gpio_led *leds) __init;
-
-#endif /* _LANTIQ_DEV_LEDS_GPIO_H */
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/dev-gpio-buttons.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/dev-gpio-buttons.c
deleted file mode 100644 (file)
index ad25cac..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- *  Lantiq GPIO button support
- *
- *  Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
- *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- *  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
- *  by the Free Software Foundation.
- */
-
-#include <linux/init.h>
-#include <linux/slab.h>
-#include <linux/platform_device.h>
-
-#include <dev-gpio-buttons.h>
-
-void __init ltq_register_gpio_keys_polled(int id,
-                                            unsigned poll_interval,
-                                            unsigned nbuttons,
-                                            struct gpio_keys_button *buttons)
-{
-       struct platform_device *pdev;
-       struct gpio_keys_platform_data pdata;
-       struct gpio_keys_button *p;
-       int err;
-
-       p = kmalloc(nbuttons * sizeof(*p), GFP_KERNEL);
-       if (!p)
-               return;
-
-       memcpy(p, buttons, nbuttons * sizeof(*p));
-
-       pdev = platform_device_alloc("gpio-keys-polled", id);
-       if (!pdev)
-               goto err_free_buttons;
-
-       memset(&pdata, 0, sizeof(pdata));
-       pdata.poll_interval = poll_interval;
-       pdata.nbuttons = nbuttons;
-       pdata.buttons = p;
-
-       err = platform_device_add_data(pdev, &pdata, sizeof(pdata));
-       if (err)
-               goto err_put_pdev;
-
-       err = platform_device_add(pdev);
-       if (err)
-               goto err_put_pdev;
-
-       return;
-
-err_put_pdev:
-       platform_device_put(pdev);
-
-err_free_buttons:
-       kfree(p);
-}
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/dev-gpio-leds.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/dev-gpio-leds.c
deleted file mode 100644 (file)
index 89dc79d..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- *  Lantiq GPIO LED device support
- *
- *  Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
- *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- *  Parts of this file are based on Atheros' 2.6.15 BSP
- *
- *  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
- *  by the Free Software Foundation.
- */
-
-#include <linux/init.h>
-#include <linux/slab.h>
-#include <linux/platform_device.h>
-
-#include <dev-gpio-leds.h>
-
-void __init ltq_add_device_gpio_leds(int id, unsigned num_leds,
-                                       struct gpio_led *leds)
-{
-       struct platform_device *pdev;
-       struct gpio_led_platform_data pdata;
-       struct gpio_led *p;
-       int err;
-
-       p = kmalloc(num_leds * sizeof(*p), GFP_KERNEL);
-       if (!p)
-               return;
-
-       memcpy(p, leds, num_leds * sizeof(*p));
-
-       pdev = platform_device_alloc("leds-gpio", id);
-       if (!pdev)
-               goto err_free_leds;
-
-       memset(&pdata, 0, sizeof(pdata));
-       pdata.num_leds = num_leds;
-       pdata.leds = p;
-
-       err = platform_device_add_data(pdev, &pdata, sizeof(pdata));
-       if (err)
-               goto err_put_pdev;
-
-       err = platform_device_add(pdev);
-       if (err)
-               goto err_put_pdev;
-
-       return;
-
-err_put_pdev:
-       platform_device_put(pdev);
-
-err_free_leds:
-       kfree(p);
-}
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/addon-easy98000.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/addon-easy98000.c
deleted file mode 100644 (file)
index 317ee40..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- *  EASY98000 CPLD Addon driver
- *
- *  Copyright (C) 2011 Thomas Langer <thomas.langer@lantiq.com>
- *
- *  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
- *  by the Free Software Foundation.
- *
- */
-
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/version.h>
-#include <linux/types.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/errno.h>
-#include <linux/slab.h>
-#include <linux/proc_fs.h>
-#include <linux/seq_file.h>
-
-struct easy98000_reg_cpld {
-       u16 cmdreg1;            /* 0x1 */
-       u16 cmdreg0;            /* 0x0 */
-       u16 idreg0;             /* 0x3 */
-       u16 resreg;             /* 0x2 */
-       u16 intreg;             /* 0x5 */
-       u16 idreg1;             /* 0x4 */
-       u16 ledreg;             /* 0x7 */
-       u16 pcmconconfig;       /* 0x6 */
-       u16 res0;               /* 0x9 */
-       u16 ethledreg;          /* 0x8 */
-       u16 res1[4];            /* 0xa-0xd */
-       u16 cpld1v;             /* 0xf */
-       u16 cpld2v;             /* 0xe */
-};
-static struct easy98000_reg_cpld * const cpld =
-       (struct easy98000_reg_cpld *)(KSEG1 | 0x17c00000);
-#define cpld_r8(reg) (__raw_readw(&cpld->reg) & 0xFF)
-#define cpld_w8(val, reg) __raw_writew((val) & 0xFF, &cpld->reg)
-
-int easy98000_addon_has_dm9000(void)
-{
-       if ((cpld_r8(idreg0) & 0xF) == 1)
-               return 1;
-       return 0;
-}
-
-#if defined(CONFIG_PROC_FS)
-typedef void (*cpld_dump) (struct seq_file *s);
-struct proc_entry {
-       char *name;
-       void *callback;
-};
-
-static int cpld_proc_show ( struct seq_file *s, void *p )
-{
-       cpld_dump dump = s->private;
-
-       if ( dump != NULL )
-               dump(s);
-
-       return 0;
-}
-
-static int cpld_proc_open ( struct inode *inode, struct file *file )
-{
-       return single_open ( file, cpld_proc_show, PDE(inode)->data );
-}
-
-static void cpld_versions_get ( struct seq_file *s )
-{
-       seq_printf(s, "CPLD1: V%d\n", cpld_r8(cpld1v));
-       seq_printf(s, "CPLD2: V%d\n", cpld_r8(cpld2v));
-}
-
-static void cpld_ebu_module_get ( struct seq_file *s )
-{
-       u8 addon_id;
-
-       addon_id = cpld_r8(idreg0) & 0xF;
-       switch (addon_id) {
-       case 0xF: /* nothing connected */
-               break;
-       case 1:
-               seq_printf(s, "Ethernet Controller module (dm9000)\n");
-               break;
-       default:
-               seq_printf(s, "Unknown EBU module (EBU_ID=0x%02X)\n", addon_id);
-               break;
-       }
-}
-
-static void cpld_xmii_module_get ( struct seq_file *s )
-{
-       u8 addon_id;
-       char *mod = NULL;
-
-       addon_id = cpld_r8(idreg1) & 0xF;
-       switch (addon_id) {
-       case 0xF:
-               mod = "no module";
-               break;
-       case 0x1:
-               mod = "RGMII module";
-               break;
-       case 0x4:
-               mod = "GMII MAC Mode (XWAY TANTOS-3G)";
-               break;
-       case 0x6:
-               mod = "TMII MAC Mode (XWAY TANTOS-3G)";
-               break;
-       case 0x8:
-               mod = "GMII PHY module";
-               break;
-       case 0x9:
-               mod = "MII PHY module";
-               break;
-       case 0xA:
-               mod = "RMII PHY module";
-               break;
-       default:
-               break;
-       }
-       if (mod)
-               seq_printf(s, "%s\n", mod);
-       else
-               seq_printf(s, "unknown xMII module (xMII_ID=0x%02X)\n", addon_id);
-}
-
-static struct proc_entry proc_entries[] = {
-       {"versions",    cpld_versions_get},
-       {"ebu",         cpld_ebu_module_get},
-       {"xmii",        cpld_xmii_module_get},
-};
-
-static struct file_operations ops = {
-       .owner   = THIS_MODULE,
-       .open    = cpld_proc_open,
-       .read    = seq_read,
-       .llseek  = seq_lseek,
-       .release = single_release,
-};
-
-static void cpld_proc_entry_create(struct proc_dir_entry *parent_node,
-                                  struct proc_entry *proc_entry)
-{
-       proc_create_data ( proc_entry->name, (S_IFREG | S_IRUGO), parent_node,
-                          &ops, proc_entry->callback);
-}
-
-static int cpld_proc_install(void)
-{
-       struct proc_dir_entry *driver_proc_node;
-
-       driver_proc_node = proc_mkdir("cpld", NULL);
-       if (driver_proc_node != NULL) {
-               int i;
-               for (i = 0; i < ARRAY_SIZE(proc_entries); i++)
-                       cpld_proc_entry_create(driver_proc_node,
-                                             &proc_entries[i]);
-       } else {
-               printk("cannot create proc entry");
-               return -1;
-       }
-       return 0;
-}
-#else
-static inline int cpld_proc_install(void) {}
-#endif
-
-static int easy98000_addon_probe(struct platform_device *pdev)
-{
-       return cpld_proc_install();
-}
-
-static int easy98000_addon_remove(struct platform_device *pdev)
-{
-#if defined(CONFIG_PROC_FS)
-       char buf[64];
-       int i;
-
-       for (i = 0; i < sizeof(proc_entries) / sizeof(proc_entries[0]); i++) {
-               sprintf(buf, "cpld/%s", proc_entries[i].name);
-               remove_proc_entry(buf, 0);
-       }
-       remove_proc_entry("cpld", 0);
-#endif
-       return 0;
-}
-
-static struct platform_driver easy98000_addon_driver = {
-       .probe = easy98000_addon_probe,
-       .remove = __devexit_p(easy98000_addon_remove),
-       .driver = {
-               .name = "easy98000_addon",
-               .owner = THIS_MODULE,
-       },
-};
-
-int __init easy98000_addon_init(void)
-{
-       return platform_driver_register(&easy98000_addon_driver);
-}
-
-void __exit easy98000_addon_exit(void)
-{
-       platform_driver_unregister(&easy98000_addon_driver);
-}
-
-module_init(easy98000_addon_init);
-module_exit(easy98000_addon_exit);
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/dev-leds-easy98000-cpld.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/dev-leds-easy98000-cpld.c
deleted file mode 100644 (file)
index 94622cf..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- *  EASY98000 CPLD LED driver
- *
- *  Copyright (C) 2010 Ralph Hempel <ralph.hempel@lantiq.com>
- *
- *  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
- *  by the Free Software Foundation.
- *
- */
-
-#include <linux/kernel.h>
-#include <linux/version.h>
-#include <linux/types.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/module.h>
-#include <linux/errno.h>
-#include <linux/leds.h>
-#include <linux/slab.h>
-
-#include "dev-leds-easy98000-cpld.h"
-
-const char *led_name[8] = {
-       "ge0_act",
-       "ge0_link",
-       "ge1_act",
-       "ge1_link",
-       "fe2_act",
-       "fe2_link",
-       "fe3_act",
-       "fe3_link"
-};
-
-#define cpld_base7                     ((u16 *)(KSEG1 | 0x17c0000c))
-#define cpld_base8                     ((u16 *)(KSEG1 | 0x17c00012))
-
-#define ltq_r16(reg)                   __raw_readw(reg)
-#define ltq_w16(val, reg)              __raw_writew(val, reg)
-
-struct cpld_led_dev {
-       struct led_classdev     cdev;
-       u8                      mask;
-       u16                     *base;
-};
-
-struct cpld_led_drvdata {
-       struct cpld_led_dev     *led_devs;
-       int                     num_leds;
-};
-
-void led_set(u8 mask, u16 *base)
-{
-       ltq_w16(ltq_r16(base) | mask, base);
-}
-
-void led_clear(u8 mask, u16 *base)
-{
-       ltq_w16(ltq_r16(base) & (~mask), base);
-}
-
-void led_blink_clear(u8 mask, u16 *base)
-{
-       led_clear(mask, base);
-}
-
-static void led_brightness(struct led_classdev *led_cdev,
-                              enum led_brightness value)
-{
-       struct cpld_led_dev *led_dev =
-           container_of(led_cdev, struct cpld_led_dev, cdev);
-
-       if (value)
-               led_set(led_dev->mask, led_dev->base);
-       else
-               led_clear(led_dev->mask, led_dev->base);
-}
-
-static int led_probe(struct platform_device *pdev)
-{
-       int i;
-       char name[32];
-       struct cpld_led_drvdata *drvdata;
-       int ret = 0;
-
-       drvdata = kzalloc(sizeof(struct cpld_led_drvdata) +
-                         sizeof(struct cpld_led_dev) * MAX_LED,
-                         GFP_KERNEL);
-       if (!drvdata)
-               return -ENOMEM;
-
-       drvdata->led_devs = (struct cpld_led_dev *) &drvdata[1];
-
-       for (i = 0; i < MAX_LED; i++) {
-               struct cpld_led_dev *led_dev = &drvdata->led_devs[i];
-               led_dev->cdev.brightness_set = led_brightness;
-               led_dev->cdev.default_trigger = NULL;
-               led_dev->mask = 1 << (i % 8);
-               if(i < 8) {
-                       sprintf(name, "easy98000-cpld:%s", led_name[i]);
-                       led_dev->base = cpld_base8;
-               } else {
-                       sprintf(name, "easy98000-cpld:red:%d", i-8);
-                       led_dev->base = cpld_base7;
-               }
-               led_dev->cdev.name = name;
-               ret = led_classdev_register(&pdev->dev, &led_dev->cdev);
-               if (ret)
-                       goto err;
-       }
-       platform_set_drvdata(pdev, drvdata);
-       return 0;
-
-err:
-       printk("led_probe: 3\n");
-       for (i = i - 1; i >= 0; i--)
-               led_classdev_unregister(&drvdata->led_devs[i].cdev);
-
-       kfree(drvdata);
-       return ret;
-}
-
-static int led_remove(struct platform_device *pdev)
-{
-       int i;
-       struct cpld_led_drvdata *drvdata = platform_get_drvdata(pdev);
-       for (i = 0; i < MAX_LED; i++)
-               led_classdev_unregister(&drvdata->led_devs[i].cdev);
-       kfree(drvdata);
-       return 0;
-}
-
-static struct platform_driver led_driver = {
-       .probe = led_probe,
-       .remove = __devexit_p(led_remove),
-       .driver = {
-                  .name = LED_NAME,
-                  .owner = THIS_MODULE,
-                  },
-};
-
-int __init easy98000_cpld_led_init(void)
-{
-       pr_info(LED_DESC ", Version " LED_VERSION
-               " (c) Copyright 2011, Lantiq Deutschland GmbH\n");
-       return platform_driver_register(&led_driver);
-}
-
-void __exit easy98000_cpld_led_exit(void)
-{
-       platform_driver_unregister(&led_driver);
-}
-
-module_init(easy98000_cpld_led_init);
-module_exit(easy98000_cpld_led_exit);
-
-MODULE_DESCRIPTION(LED_NAME);
-MODULE_DESCRIPTION(LED_DESC);
-MODULE_AUTHOR("Ralph Hempel <ralph.hempel@lantiq.com>");
-MODULE_LICENSE("GPL v2");
-
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/dev-leds-easy98000-cpld.h b/target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/dev-leds-easy98000-cpld.h
deleted file mode 100644 (file)
index 3160189..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- *  EASY98000 CPLD LED driver
- *
- *  Copyright (C) 2010 Ralph Hempel <ralph.hempel@lantiq.com>
- *
- *  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
- *  by the Free Software Foundation.
- *
- */
-#ifndef _INCLUDE_EASY98000_CPLD_LED_H_
-#define _INCLUDE_EASY98000_CPLD_LED_H_
-
-#define LED_NAME       "easy98000_cpld_led"
-#define LED_DESC       "EASY98000 LED driver"
-#define LED_VERSION    "1.0.0"
-
-#define MAX_LED                16
-
-#endif /* _INCLUDE_EASY98000_CPLD_LED_H_ */
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/mach-95C3AM1.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/mach-95C3AM1.c
deleted file mode 100644 (file)
index 42a3344..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/i2c-gpio.h>
-
-#include <dev-gpio-leds.h>
-
-#include "../machtypes.h"
-#include "devices.h"
-
-#define BOARD_95C3AM1_GPIO_LED_0 10
-#define BOARD_95C3AM1_GPIO_LED_1 11
-#define BOARD_95C3AM1_GPIO_LED_2 12
-#define BOARD_95C3AM1_GPIO_LED_3 13
-
-static struct mtd_partition board_95C3AM1_partitions[] =
-{
-       {
-               .name   = "uboot",
-               .offset = 0x0,
-               .size   = 0x40000,
-       },
-       {
-               .name   = "uboot_env",
-               .offset = 0x40000,
-               .size   = 0x40000,      /* 2 sectors for redundant env. */
-       },
-       {
-               .name   = "linux",
-               .offset = 0x80000,
-               .size   = 0xF80000,     /* map only 16 MiB */
-       },
-};
-
-static struct flash_platform_data board_95C3AM1_flash_platform_data = {
-       .name = "sflash",
-       .parts = board_95C3AM1_partitions,
-       .nr_parts = ARRAY_SIZE(board_95C3AM1_partitions)
-};
-
-static struct spi_board_info board_95C3AM1_flash_data __initdata = {
-       .modalias               = "m25p80",
-       .bus_num                = 0,
-       .chip_select            = 0,
-       .max_speed_hz           = 10 * 1000 * 1000,
-       .mode                   = SPI_MODE_3,
-       .platform_data          = &board_95C3AM1_flash_platform_data
-};
-
-static struct gpio_led board_95C3AM1_gpio_leds[] __initdata = {
-       {
-               .name           = "power",
-               .gpio           = BOARD_95C3AM1_GPIO_LED_0,
-               .active_low     = 0,
-       }, {
-               .name           = "optical",
-               .gpio           = BOARD_95C3AM1_GPIO_LED_1,
-               .active_low     = 0,
-       }, {
-               .name           = "lan",
-               .gpio           = BOARD_95C3AM1_GPIO_LED_2,
-               .active_low     = 0,
-       }, {
-               .name           = "update",
-               .gpio           = BOARD_95C3AM1_GPIO_LED_3,
-               .active_low     = 0,
-       }
-};
-
-static struct i2c_gpio_platform_data board_95C3AM1_i2c_gpio_data = {
-       .sda_pin        = 107,
-       .scl_pin        = 108,
-};
-
-static struct platform_device board_95C3AM1_i2c_gpio_device = {
-       .name           = "i2c-gpio",
-       .id             = 0,
-       .dev = {
-               .platform_data  = &board_95C3AM1_i2c_gpio_data,
-       }
-};
-
-static void __init board_95C3AM1_init(void)
-{
-       falcon_register_i2c();
-       falcon_register_spi_flash(&board_95C3AM1_flash_data);
-       platform_device_register(&board_95C3AM1_i2c_gpio_device);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(board_95C3AM1_gpio_leds),
-                                               board_95C3AM1_gpio_leds);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_95C3AM1,
-                       "95C3AM1",
-                       "95C3AM1 Board",
-                       board_95C3AM1_init);
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/mach-easy98020.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/falcon/mach-easy98020.c
deleted file mode 100644 (file)
index 4cdfc19..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/leds.h>
-#include <linux/gpio.h>
-#include <linux/gpio_buttons.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/input.h>
-#include <linux/interrupt.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/flash.h>
-
-#include <dev-gpio-leds.h>
-
-#include "../machtypes.h"
-#include "devices.h"
-
-#define EASY98020_GPIO_LED_0 9
-#define EASY98020_GPIO_LED_1 10
-#define EASY98020_GPIO_LED_2 11
-#define EASY98020_GPIO_LED_3 12
-#define EASY98020_GPIO_LED_GE0_ACT 110
-#define EASY98020_GPIO_LED_GE0_LINK 109
-#define EASY98020_GPIO_LED_GE1_ACT 106
-#define EASY98020_GPIO_LED_GE1_LINK 105
-
-static struct mtd_partition easy98020_spi_partitions[] =
-{
-       {
-               .name   = "uboot",
-               .offset = 0x0,
-               .size   = 0x40000,
-       },
-       {
-               .name   = "uboot_env",
-               .offset = 0x40000,
-               .size   = 0x40000,      /* 2 sectors for redundant env. */
-       },
-       {
-               .name   = "linux",
-               .offset = 0x80000,
-               .size   = 0xF80000,     /* map only 16 MiB */
-       },
-};
-
-static struct flash_platform_data easy98020_spi_flash_platform_data = {
-       .name = "sflash",
-       .parts = easy98020_spi_partitions,
-       .nr_parts = ARRAY_SIZE(easy98020_spi_partitions)
-};
-
-static struct spi_board_info easy98020_spi_flash_data __initdata = {
-       .modalias               = "m25p80",
-       .bus_num                = 0,
-       .chip_select            = 0,
-       .max_speed_hz           = 10 * 1000 * 1000,
-       .mode                   = SPI_MODE_3,
-       .platform_data          = &easy98020_spi_flash_platform_data
-};
-
-static struct gpio_led easy98020_gpio_leds[] __initdata = {
-       {
-               .name           = "easy98020:green:0",
-               .gpio           = EASY98020_GPIO_LED_0,
-               .active_low     = 0,
-       }, {
-               .name           = "easy98020:green:1",
-               .gpio           = EASY98020_GPIO_LED_1,
-               .active_low     = 0,
-       }, {
-               .name           = "easy98020:green:2",
-               .gpio           = EASY98020_GPIO_LED_2,
-               .active_low     = 0,
-       }, {
-               .name           = "easy98020:green:3",
-               .gpio           = EASY98020_GPIO_LED_3,
-               .active_low     = 0,
-       }, {
-               .name           = "easy98020:ge0_act",
-               .gpio           = EASY98020_GPIO_LED_GE0_ACT,
-               .active_low     = 0,
-       }, {
-               .name           = "easy98020:ge0_link",
-               .gpio           = EASY98020_GPIO_LED_GE0_LINK,
-               .active_low     = 0,
-       }, {
-               .name           = "easy98020:ge1_act",
-               .gpio           = EASY98020_GPIO_LED_GE1_ACT,
-               .active_low     = 0,
-       }, {
-               .name           = "easy98020:ge1_link",
-               .gpio           = EASY98020_GPIO_LED_GE1_LINK,
-               .active_low     = 0,
-       }
-};
-
-static void __init easy98020_init(void)
-{
-       falcon_register_i2c();
-       falcon_register_spi_flash(&easy98020_spi_flash_data);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(easy98020_gpio_leds),
-                                       easy98020_gpio_leds);
-}
-
-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);
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-dwc_otg.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-dwc_otg.c
deleted file mode 100644 (file)
index 56086fa..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * 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
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Copyright (C) 2010 John Crispin <blogic@openwrt.org>
- */
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/types.h>
-#include <linux/string.h>
-#include <linux/mtd/physmap.h>
-#include <linux/kernel.h>
-#include <linux/reboot.h>
-#include <linux/platform_device.h>
-#include <linux/leds.h>
-#include <linux/etherdevice.h>
-#include <linux/reboot.h>
-#include <linux/time.h>
-#include <linux/io.h>
-#include <linux/gpio.h>
-#include <linux/leds.h>
-
-#include <asm/bootinfo.h>
-#include <asm/irq.h>
-
-#include <lantiq_soc.h>
-#include <lantiq_irq.h>
-#include <lantiq_platform.h>
-
-#define LTQ_USB_IOMEM_BASE 0x1e101000
-#define LTQ_USB_IOMEM_SIZE 0x00001000
-
-static struct resource resources[] =
-{
-       [0] = {
-               .name   = "dwc_otg_membase",
-               .start  = LTQ_USB_IOMEM_BASE,
-               .end    = LTQ_USB_IOMEM_BASE + LTQ_USB_IOMEM_SIZE - 1,
-               .flags  = IORESOURCE_MEM,
-       },
-       [1] = {
-               .name   = "dwc_otg_irq",
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static u64 dwc_dmamask = (u32)0x1fffffff;
-
-static struct platform_device platform_dev = {
-       .name = "dwc_otg",
-       .dev = {
-               .dma_mask       = &dwc_dmamask,
-       },
-       .resource               = resources,
-       .num_resources          = ARRAY_SIZE(resources),
-};
-
-int __init
-xway_register_dwc(int pin)
-{
-       struct irq_data d;
-       d.irq = resources[1].start;
-       ltq_enable_irq(&d);
-       resources[1].start = ltq_is_ase() ? LTQ_USB_ASE_INT : LTQ_USB_INT;
-       platform_dev.dev.platform_data = (void*) pin;
-       return platform_device_register(&platform_dev);
-}
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-dwc_otg.h b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-dwc_otg.h
deleted file mode 100644 (file)
index 521fad0..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * 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
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Copyright (C) 2010 John Crispin <blogic@openwrt.org>
- */
-
-#ifndef _LTQ_DEV_DWC_H__
-#define _LTQ_DEV_DWC_H__
-
-#include <lantiq_platform.h>
-
-extern void __init xway_register_dwc(int pin);
-
-#endif
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-wifi-athxk.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-wifi-athxk.c
deleted file mode 100644 (file)
index a75abe3..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *  Copyright (C) 2011 John Crispin <blogic@openwrt.org>
- *  Copyright (C) 2011 Andrej Vlašić <andrej.vlasic0@gmail.com>
- *
- *  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
- *  by the Free Software Foundation.
- */
-
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/ath5k_platform.h>
-#include <linux/ath9k_platform.h>
-#include <linux/pci.h>
-
-#include "dev-wifi-athxk.h"
-
-extern int (*ltqpci_plat_dev_init)(struct pci_dev *dev);
-struct ath5k_platform_data ath5k_pdata;
-struct ath9k_platform_data ath9k_pdata = {
-       .led_pin = -1,
-       .endian_check = true,
-};
-
-static int
-ath5k_pci_plat_dev_init(struct pci_dev *dev)
-{
-       dev->dev.platform_data = &ath5k_pdata;
-       return 0;
-}
-
-static int
-ath9k_pci_plat_dev_init(struct pci_dev *dev)
-{
-       dev->dev.platform_data = &ath9k_pdata;
-       return 0;
-}
-
-void __init
-ltq_register_ath5k(u16 *eeprom_data, u8 *macaddr)
-{
-       ath5k_pdata.eeprom_data = eeprom_data;
-       ath5k_pdata.macaddr = macaddr;
-       ltqpci_plat_dev_init = ath5k_pci_plat_dev_init;
-}
-
-void __init
-ltq_register_ath9k(u16 *eeprom_data, u8 *macaddr)
-{
-       memcpy(ath9k_pdata.eeprom_data, eeprom_data, sizeof(ath9k_pdata.eeprom_data));
-       ath9k_pdata.macaddr = macaddr;
-       ltqpci_plat_dev_init = ath9k_pci_plat_dev_init;
-}
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-wifi-athxk.h b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-wifi-athxk.h
deleted file mode 100644 (file)
index 5fdb46b..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- *  Copyright (C) 2011 John Crispin <blogic@openwrt.org>
- *  Copyright (C) 2011 Andrej Vlašić <andrej.vlasic0@gmail.com>
- *
- *  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
- *  by the Free Software Foundation.
- */
-
-#ifndef _DEV_WIFI_ATHXK_H__
-#define _DEV_WIFI_ATHXK_H__
-
-extern void ltq_register_ath5k(u16 *eeprom_data, u8 *macaddr);
-extern void ltq_register_ath9k(u16 *eeprom_data, u8 *macaddr);
-
-#endif
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-wifi-rt2x00.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-wifi-rt2x00.c
deleted file mode 100644 (file)
index 8e271f0..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *  Copyright (C) 2011 John Crispin <blogic@openwrt.org>
- *
- *  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
- *  by the Free Software Foundation.
- */
-
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/rt2x00_platform.h>
-#include <linux/pci.h>
-
-#include "dev-wifi-rt2x00.h"
-
-extern int (*ltqpci_plat_dev_init)(struct pci_dev *dev);
-struct rt2x00_platform_data rt2x00_pdata;
-
-static int
-rt2x00_pci_plat_dev_init(struct pci_dev *dev)
-{
-       dev->dev.platform_data = &rt2x00_pdata;
-       return 0;
-}
-
-void __init
-ltq_register_rt2x00(const char *firmware, const u8 *mac)
-{
-       rt2x00_pdata.eeprom_file_name = kstrdup(firmware, GFP_KERNEL);
-       rt2x00_pdata.mac_address = mac;
-       ltqpci_plat_dev_init = rt2x00_pci_plat_dev_init;
-}
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-wifi-rt2x00.h b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/dev-wifi-rt2x00.h
deleted file mode 100644 (file)
index 941c265..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- *  Copyright (C) 2011 John Crispin <blogic@openwrt.org>
- *
- *  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
- *  by the Free Software Foundation.
- */
-
-#ifndef _DEV_WIFI_RT2X00_H__
-#define _DEV_WIFI_RT2X00_H__
-
-extern void ltq_register_rt2x00(const char *firmware, const u8 *mac);
-
-#endif
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-arv.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-arv.c
deleted file mode 100644 (file)
index 4abb2d5..0000000
+++ /dev/null
@@ -1,788 +0,0 @@
-/*
- *  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
- *  by the Free Software Foundation.
- *
- *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
- */
-
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/leds.h>
-#include <linux/gpio.h>
-#include <linux/gpio_buttons.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/physmap.h>
-#include <linux/input.h>
-#include <linux/etherdevice.h>
-#include <linux/ath5k_platform.h>
-#include <linux/ath9k_platform.h>
-#include <linux/pci.h>
-
-#include <lantiq_soc.h>
-#include <lantiq_platform.h>
-#include <dev-gpio-leds.h>
-#include <dev-gpio-buttons.h>
-
-#include "../machtypes.h"
-#include "dev-wifi-rt2x00.h"
-#include "dev-wifi-athxk.h"
-#include "devices.h"
-#include "dev-dwc_otg.h"
-#include "pci-ath-fixup.h"
-
-static struct mtd_partition arv45xx_brnboot_partitions[] =
-{
-       {
-               .name   = "brn-boot",
-               .offset = 0x0,
-               .size   = 0x20000,
-       },
-       {
-               .name   = "config",
-               .offset = 0x20000,
-               .size   = 0x30000,
-       },
-       {
-               .name   = "linux",
-               .offset = 0x50000,
-               .size   = 0x390000,
-       },
-       {
-               .name   = "reserved", /* 12-byte signature at 0x3efff4 :/ */
-               .offset = 0x3e0000,
-               .size   = 0x010000,
-       },
-       {
-               .name   = "eeprom",
-               .offset = 0x3f0000,
-               .size   = 0x10000,
-       },
-};
-
-static struct mtd_partition arv75xx_brnboot_partitions[] =
-{
-       {
-               .name   = "brn-boot",
-               .offset = 0x0,
-               .size   = 0x20000,
-       },
-       {
-               .name   = "config",
-               .offset = 0x20000,
-               .size   = 0x40000,
-       },
-       {
-               .name   = "linux",
-               .offset = 0x440000,
-               .size   = 0x3a0000,
-       },
-       {
-               .name   = "reserved", /* 12-byte signature at 0x7efff4 :/ */
-               .offset = 0x7e0000,
-               .size   = 0x010000,
-       },
-       {
-               .name   = "board_config",
-               .offset = 0x7f0000,
-               .size   = 0x10000,
-       },
-};
-
-/*
- * this is generic configuration for all arv based boards, note that it can be
- * rewriten in arv_load_nor()
- */
-static struct mtd_partition arv_partitions[] =
-{
-       {
-               .name   = "uboot",
-               .offset = 0x0,
-               .size   = 0x20000,
-       },
-       {
-               .name   = "uboot_env",
-               .offset = 0x20000,
-               .size   = 0x10000,
-       },
-       {
-               .name   = "linux",
-               .offset = 0x30000,
-               .size   = 0x3c0000,
-       },
-       {
-               .name   = "board_config",
-               .offset = 0x3f0000,
-               .size   = 0x10000,
-       },
-};
-
-static struct physmap_flash_data arv45xx_brnboot_flash_data = {
-       .nr_parts       = ARRAY_SIZE(arv45xx_brnboot_partitions),
-       .parts          = arv45xx_brnboot_partitions,
-};
-
-static struct physmap_flash_data arv75xx_brnboot_flash_data = {
-       .nr_parts       = ARRAY_SIZE(arv75xx_brnboot_partitions),
-       .parts          = arv75xx_brnboot_partitions,
-};
-
-static struct physmap_flash_data arv_flash_data = {
-       .nr_parts       = ARRAY_SIZE(arv_partitions),
-       .parts          = arv_partitions,
-};
-
-static struct ltq_pci_data ltq_pci_data = {
-       .clock  = PCI_CLOCK_EXT,
-       .gpio   = PCI_GNT1 | PCI_REQ1,
-       .irq    = {
-               [14] = INT_NUM_IM0_IRL0 + 22,
-       },
-};
-
-static struct ltq_eth_data ltq_eth_data = {
-       .mii_mode       = PHY_INTERFACE_MODE_RMII,
-};
-
-static struct gpio_led
-arv4510pw_gpio_leds[] __initdata = {
-       { .name = "soc:green:foo", .gpio = 4, .active_low = 1, },
-};
-
-static struct gpio_led
-arv4518pw_gpio_leds[] __initdata = {
-       { .name = "soc:green:power", .gpio = 3, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:adsl", .gpio = 4, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:internet", .gpio = 5, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:wifi", .gpio = 6, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:yellow:wps", .gpio = 7, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:red:fail", .gpio = 8, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:usb", .gpio = 19, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:voip", .gpio = 100, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:fxs1", .gpio = 101, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:fxs2", .gpio = 102, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:fxo", .gpio = 103, .active_low = 1, .default_trigger = "default-on" },
-};
-
-static struct gpio_keys_button
-arv4518pw_gpio_keys[] __initdata = {
-       {
-               .desc           = "wifi",
-               .type           = EV_KEY,
-               .code           = BTN_0,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 28,
-               .active_low     = 1,
-       },
-       {
-               .desc           = "reset",
-               .type           = EV_KEY,
-               .code           = BTN_1,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 30,
-               .active_low     = 1,
-       },
-       {
-               .desc           = "wps",
-               .type           = EV_KEY,
-               .code           = BTN_2,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 29,
-               .active_low     = 1,
-       },
-};
-
-static struct gpio_led
-arv4519pw_gpio_leds[] __initdata = {
-       { .name = "soc:red:power", .gpio = 7, .active_low = 1, },
-       { .name = "soc:green:power", .gpio = 2, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:wifi", .gpio = 6, .active_low = 1, },
-       { .name = "soc:green:adsl", .gpio = 4, .active_low = 1, },
-       { .name = "soc:green:internet", .gpio = 5, .active_low = 1, },
-       { .name = "soc:red:internet", .gpio = 8, .active_low = 1, },
-       { .name = "soc:green:voip", .gpio = 100, .active_low = 1, },
-       { .name = "soc:green:phone1", .gpio = 101, .active_low = 1, },
-       { .name = "soc:green:phone2", .gpio = 102, .active_low = 1, },
-       { .name = "soc:green:fxo", .gpio = 103, .active_low = 1, },
-       { .name = "soc:green:usb", .gpio = 19, .active_low = 1, },
-       { .name = "soc:orange:wps", .gpio = 104, .active_low = 1, },
-       { .name = "soc:green:wps", .gpio = 105, .active_low = 1, },
-       { .name = "soc:red:wps", .gpio = 106, .active_low = 1, },
-
-};
-
-static struct gpio_keys_button
-arv4519pw_gpio_keys[] __initdata = {
-       {
-               .desc           = "reset",
-               .type           = EV_KEY,
-               .code           = BTN_1,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 30,
-               .active_low     = 1,
-       },
-       {
-               .desc           = "wlan",
-               .type           = EV_KEY,
-               .code           = BTN_2,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 28,
-               .active_low     = 1,
-       },
-};
-
-static struct gpio_led
-arv4520pw_gpio_leds[] __initdata = {
-       { .name = "soc:blue:power", .gpio = 3, .active_low = 1, },
-       { .name = "soc:blue:adsl", .gpio = 4, .active_low = 1, },
-       { .name = "soc:blue:internet", .gpio = 5, .active_low = 1, },
-       { .name = "soc:red:power", .gpio = 6, .active_low = 1, },
-       { .name = "soc:yellow:wps", .gpio = 7, .active_low = 1, },
-       { .name = "soc:red:wps", .gpio = 9, .active_low = 1, },
-       { .name = "soc:blue:voip", .gpio = 100, .active_low = 1, },
-       { .name = "soc:blue:fxs1", .gpio = 101, .active_low = 1, },
-       { .name = "soc:blue:fxs2", .gpio = 102, .active_low = 1, },
-       { .name = "soc:blue:fxo", .gpio = 103, .active_low = 1, },
-       { .name = "soc:blue:voice", .gpio = 104, .active_low = 1, },
-       { .name = "soc:blue:usb", .gpio = 105, .active_low = 1, },
-       { .name = "soc:blue:wifi", .gpio = 106, .active_low = 1, },
-};
-
-static struct gpio_led
-arv452cpw_gpio_leds[] __initdata = {
-       { .name = "soc:blue:power", .gpio = 3, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:blue:adsl", .gpio = 4, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:blue:isdn", .gpio = 5, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:red:power", .gpio = 6, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:yellow:wps", .gpio = 7, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:red:wps", .gpio = 9, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:blue:fxs1", .gpio = 100, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:blue:fxs2", .gpio = 101, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:blue:wps", .gpio = 102, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:blue:fxo", .gpio = 103, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:blue:voice", .gpio = 104, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:blue:usb", .gpio = 105, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:blue:wifi", .gpio = 106, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:blue:internet", .gpio = 108, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:red:internet", .gpio = 109, .active_low = 1, .default_trigger = "default-on" },
-};
-
-static struct gpio_led
-arv4525pw_gpio_leds[] __initdata = {
-       { .name = "soc:green:dsl", .gpio = 6, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:wifi", .gpio = 8, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:online", .gpio = 9, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:fxs-internet", .gpio = 5, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:fxs-festnetz", .gpio = 4, .active_low = 1, .default_trigger = "default-on" },
-};
-
-#define ARV4525PW_PHYRESET     13
-#define ARV4525PW_RELAY                31
-
-static struct gpio
-arv4525pw_gpios[] __initdata = {
-       { ARV4525PW_PHYRESET,   GPIOF_OUT_INIT_HIGH, "phyreset" },
-       { ARV4525PW_RELAY,      GPIOF_OUT_INIT_HIGH, "relay"    },
-};
-
-
-static struct gpio_led
-arv752dpw22_gpio_leds[] __initdata = {
-       { .name = "soc:blue:power", .gpio = 3, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:red:internet", .gpio = 5, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:red:power", .gpio = 6, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:red:wps", .gpio = 8, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:red:fxo", .gpio = 103, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:red:voice", .gpio = 104, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:usb", .gpio = 105, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:wifi", .gpio = 106, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:wifi1", .gpio = 107, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:blue:wifi", .gpio = 108, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:blue:wifi1", .gpio = 109, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:eth1", .gpio = 111, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:eth2", .gpio = 112, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:eth3", .gpio = 113, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:eth4", .gpio = 114, .active_low = 1, .default_trigger = "default-on", },
-};
-
-static struct gpio_keys_button
-arv752dpw22_gpio_keys[] __initdata = {
-       {
-               .desc           = "btn0",
-               .type           = EV_KEY,
-               .code           = BTN_0,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 12,
-               .active_low     = 1,
-       },
-       {
-               .desc           = "btn1",
-               .type           = EV_KEY,
-               .code           = BTN_1,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 13,
-               .active_low     = 1,
-       },
-       {
-               .desc           = "btn2",
-               .type           = EV_KEY,
-               .code           = BTN_2,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 28,
-               .active_low     = 1,
-       },
-};
-
-static struct gpio_led
-arv7518pw_gpio_leds[] __initdata = {
-       { .name = "soc:red:power", .gpio = 7, .active_low = 1, },
-       { .name = "soc:green:power", .gpio = 2, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:wifi", .gpio = 6, .active_low = 1, },
-       { .name = "soc:green:adsl", .gpio = 4, .active_low = 1, },
-       { .name = "soc:green:internet", .gpio = 5, .active_low = 1, },
-       { .name = "soc:red:internet", .gpio = 8, .active_low = 1, },
-       { .name = "soc:green:voip", .gpio = 100, .active_low = 1, },
-       { .name = "soc:green:phone1", .gpio = 101, .active_low = 1, },
-       { .name = "soc:green:phone2", .gpio = 102, .active_low = 1, },
-       { .name = "soc:orange:fail", .gpio = 103, .active_low = 1, },
-       { .name = "soc:green:usb", .gpio = 19, .active_low = 1, },
-       { .name = "soc:orange:wps", .gpio = 104, .active_low = 1, },
-       { .name = "soc:green:wps", .gpio = 105, .active_low = 1, },
-       { .name = "soc:red:wps", .gpio = 106, .active_low = 1, },
-
-};
-
-static struct gpio_keys_button
-arv7518pw_gpio_keys[] __initdata = {
-       /*{
-               .desc           = "reset",
-               .type           = EV_KEY,
-               .code           = BTN_1,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 23,
-               .active_low     = 1,
-       },*/
-       {
-               .desc           = "wifi",
-               .type           = EV_KEY,
-               .code           = BTN_2,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 25,
-               .active_low     = 1,
-       },
-};
-
-static struct gpio_keys_button
-arv7525pw_gpio_keys[] __initdata = {
-       {
-               .desc           = "restart",
-               .type           = EV_KEY,
-               .code           = BTN_0,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 29,
-               .active_low     = 1,
-       },
-};
-
-static void __init
-arv_load_nor(unsigned int max)
-{
-#define UBOOT_MAGIC    0x27051956
-
-       int i;
-       int sector = -1;
-
-       if (ltq_brn_boot) {
-               if (max == 0x800000)
-                       ltq_register_nor(&arv75xx_brnboot_flash_data);
-               else
-                       ltq_register_nor(&arv45xx_brnboot_flash_data);
-               return;
-       }
-
-       for (i = 1; i < 4 && sector < 0; i++) {
-               unsigned int uboot_magic;
-               memcpy_fromio(&uboot_magic, (void *)KSEG1ADDR(LTQ_FLASH_START) + (i * 0x10000), 4);
-               if (uboot_magic == UBOOT_MAGIC)
-                       sector = i;
-       }
-
-       if (sector < 0)
-               return;
-
-       arv_partitions[0].size = arv_partitions[1].offset = (sector - 1) * 0x10000;
-       arv_partitions[2].offset = arv_partitions[0].size + 0x10000;
-       arv_partitions[2].size = max - arv_partitions[2].offset - 0x10000;
-       arv_partitions[3].offset = max - 0x10000;
-       ltq_register_nor(&arv_flash_data);
-}
-
-static void __init
-arv_register_ethernet(unsigned int mac_addr)
-{
-       memcpy_fromio(&ltq_eth_data.mac.sa_data,
-               (void *)KSEG1ADDR(LTQ_FLASH_START + mac_addr), 6);
-       ltq_register_etop(&ltq_eth_data);
-}
-
-static u16 arv_ath5k_eeprom_data[ATH5K_PLAT_EEP_MAX_WORDS];
-static u16 arv_ath9k_eeprom_data[ATH9K_PLAT_EEP_MAX_WORDS];
-static u8 arv_athxk_eeprom_mac[6];
-
-static void __init
-arv_register_ath5k(unsigned int ath_addr, unsigned int mac_addr)
-{
-       int i;
-
-       memcpy_fromio(arv_athxk_eeprom_mac,
-               (void *)KSEG1ADDR(LTQ_FLASH_START + mac_addr), 6);
-       arv_athxk_eeprom_mac[5]++;
-       memcpy_fromio(arv_ath5k_eeprom_data,
-               (void *)KSEG1ADDR(LTQ_FLASH_START + ath_addr), ATH5K_PLAT_EEP_MAX_WORDS);
-       // swap eeprom bytes
-       for (i = 0; i < ATH5K_PLAT_EEP_MAX_WORDS>>1; i++) {
-               arv_ath5k_eeprom_data[i] = swab16(arv_ath5k_eeprom_data[i]);
-               if (i == 0x17e>>1) {
-                       /*
-                        * regdomain is invalid. it's unknown how did original
-                        * fw convered value to 0x82d4 so for now force to 0x67
-                        */
-                       arv_ath5k_eeprom_data[i] &= 0x0000;
-                       arv_ath5k_eeprom_data[i] |= 0x67;
-               }
-       }
-}
-
-static void __init
-arv_register_ath9k(unsigned int ath_addr, unsigned int mac_addr)
-{
-       int i;
-       u16 *eepdata, sum, el;
-
-       memcpy_fromio(arv_athxk_eeprom_mac,
-               (void *)KSEG1ADDR(LTQ_FLASH_START + mac_addr), 6);
-       arv_athxk_eeprom_mac[5]++;
-       memcpy_fromio(arv_ath9k_eeprom_data,
-               (void *)KSEG1ADDR(LTQ_FLASH_START + ath_addr), ATH9K_PLAT_EEP_MAX_WORDS);
-
-       // force regdomain to 0x67
-       arv_ath9k_eeprom_data[0x208>>1] = 0x67;
-
-       // calculate new checksum
-       sum = arv_ath9k_eeprom_data[0x200>>1];
-       el = sum / sizeof(u16) - 2;  /* skip length and (old) checksum */
-       eepdata = (u16 *) (&arv_ath9k_eeprom_data[0x204>>1]); /* after checksum */
-       for (i = 0; i < el; i++)
-               sum ^= *eepdata++;
-       sum ^= 0xffff;
-       arv_ath9k_eeprom_data[0x202>>1] = sum;
-}
-
-static void __init
-arv3527p_init(void)
-{
-#define ARV3527P_MAC_ADDR              0x3f0016
-
-       ltq_register_gpio_stp();
-       // ltq_add_device_gpio_leds(arv3527p_gpio_leds, ARRAY_SIZE(arv3527p_gpio_leds));
-       arv_load_nor(0x400000);
-       arv_register_ethernet(ARV3527P_MAC_ADDR);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_ARV3527P,
-                       "ARV3527P",
-                       "ARV3527P - Arcor Easybox 401",
-                       arv3527p_init);
-
-static void __init
-arv4510pw_init(void)
-{
-#define ARV4510PW_MAC_ADDR             0x3f0014
-
-       ltq_register_gpio_stp();
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4510pw_gpio_leds), arv4510pw_gpio_leds);
-       arv_load_nor(0x400000);
-       ltq_pci_data.irq[12] = (INT_NUM_IM2_IRL0 + 31);
-       ltq_pci_data.irq[15] = (INT_NUM_IM0_IRL0 + 26);
-       ltq_pci_data.gpio |= PCI_EXIN2 | PCI_REQ2;
-       ltq_register_pci(&ltq_pci_data);
-       arv_register_ethernet(ARV4510PW_MAC_ADDR);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_ARV4510PW,
-                       "ARV4510PW",
-                       "ARV4510PW - Wippies Homebox",
-                       arv4510pw_init);
-
-static void __init
-arv4518pw_init(void)
-{
-#define ARV4518PW_EBU                  0
-#define ARV4518PW_USB                  14
-#define ARV4518PW_SWITCH_RESET         13
-#define ARV4518PW_ATH_ADDR             0x3f0400
-#define ARV4518PW_MADWIFI_ADDR         0xb03f0400
-#define ARV4518PW_MAC_ADDR             0x3f0016
-
-       ltq_register_gpio_ebu(ARV4518PW_EBU);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4518pw_gpio_leds), arv4518pw_gpio_leds);
-       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
-                               ARRAY_SIZE(arv4518pw_gpio_keys), arv4518pw_gpio_keys);
-       arv_load_nor(0x400000);
-       ltq_pci_data.gpio = PCI_GNT2 | PCI_REQ2;
-       ltq_register_pci(&ltq_pci_data);
-       xway_register_dwc(ARV4518PW_USB);
-       arv_register_ethernet(ARV4518PW_MAC_ADDR);
-       arv_register_ath5k(ARV4518PW_ATH_ADDR, ARV4518PW_MAC_ADDR);
-       ltq_register_ath5k(arv_ath5k_eeprom_data, arv_athxk_eeprom_mac);
-
-       gpio_request(ARV4518PW_SWITCH_RESET, "switch");
-       gpio_direction_output(ARV4518PW_SWITCH_RESET, 1);
-       gpio_export(ARV4518PW_SWITCH_RESET, 0);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_ARV4518PW,
-                       "ARV4518PW",
-                       "ARV4518PW - SMC7908A-ISP, Airties WAV-221",
-                       arv4518pw_init);
-
-static void __init
-arv4519pw_init(void)
-{
-#define ARV4519PW_EBU                  0
-#define ARV4519PW_USB                  14
-#define ARV4519PW_RELAY                        31
-#define ARV4519PW_SWITCH_RESET         13
-#define ARV4519PW_ATH_ADDR             0x3f0400
-#define ARV4519PW_MAC_ADDR             0x3f0016
-
-       arv_load_nor(0x400000);
-       ltq_register_gpio_ebu(ARV4519PW_EBU);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4519pw_gpio_leds), arv4519pw_gpio_leds);
-       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
-                               ARRAY_SIZE(arv4519pw_gpio_keys), arv4519pw_gpio_keys);
-       ltq_pci_data.gpio = PCI_GNT2 | PCI_REQ1;
-       ltq_register_pci(&ltq_pci_data);
-       xway_register_dwc(ARV4519PW_USB);
-       arv_register_ethernet(ARV4519PW_MAC_ADDR);
-       arv_register_ath5k(ARV4519PW_ATH_ADDR, ARV4519PW_MAC_ADDR);
-       ltq_register_ath5k(arv_ath5k_eeprom_data, arv_athxk_eeprom_mac);
-
-       gpio_request(ARV4519PW_RELAY, "relay");
-       gpio_direction_output(ARV4519PW_RELAY, 1);
-       gpio_export(ARV4519PW_RELAY, 0);
-
-       gpio_request(ARV4519PW_SWITCH_RESET, "switch");
-       gpio_set_value(ARV4519PW_SWITCH_RESET, 1);
-       gpio_export(ARV4519PW_SWITCH_RESET, 0);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_ARV4519PW,
-                       "ARV4519PW",
-                       "ARV4519PW - Vodafone, Pirelli",
-                       arv4519pw_init);
-
-static void __init
-arv4520pw_init(void)
-{
-#define ARV4520PW_EBU                  0x400
-#define ARV4520PW_USB                  28
-#define ARV4520PW_SWITCH_RESET         110
-#define ARV4520PW_MAC_ADDR             0x3f0016
-
-       ltq_register_gpio_ebu(ARV4520PW_EBU);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4520pw_gpio_leds), arv4520pw_gpio_leds);
-       arv_load_nor(0x400000);
-       ltq_register_pci(&ltq_pci_data);
-       ltq_register_tapi();
-       arv_register_ethernet(ARV4520PW_MAC_ADDR);
-       ltq_register_rt2x00(NULL, (const u8 *) ltq_eth_data.mac.sa_data);
-       xway_register_dwc(ARV4520PW_USB);
-
-       gpio_request(ARV4520PW_SWITCH_RESET, "switch");
-       gpio_set_value(ARV4520PW_SWITCH_RESET, 1);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_ARV4520PW,
-                       "ARV4520PW",
-                       "ARV4520PW - Airties WAV-281, Arcor A800",
-                       arv4520pw_init);
-
-static void __init
-arv452Cpw_init(void)
-{
-#define ARV452CPW_EBU                  0x77f
-#define ARV452CPW_USB                  28
-#define ARV452CPW_RELAY1               31
-#define ARV452CPW_RELAY2               107
-#define ARV452CPW_SWITCH_RESET         110
-#define ARV452CPW_ATH_ADDR             0x3f0400
-#define ARV452CPW_MADWIFI_ADDR         0xb03f0400
-#define ARV452CPW_MAC_ADDR             0x3f0016
-
-       ltq_register_gpio_ebu(ARV452CPW_EBU);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv452cpw_gpio_leds), arv452cpw_gpio_leds);
-       arv_load_nor(0x400000);
-       ltq_register_pci(&ltq_pci_data);
-       xway_register_dwc(ARV452CPW_USB);
-       arv_register_ethernet(ARV452CPW_MAC_ADDR);
-       arv_register_ath5k(ARV452CPW_ATH_ADDR, ARV452CPW_MAC_ADDR);
-       ltq_register_ath5k(arv_ath5k_eeprom_data, arv_athxk_eeprom_mac);
-
-       gpio_request(ARV452CPW_SWITCH_RESET, "switch");
-       gpio_set_value(ARV452CPW_SWITCH_RESET, 1);
-       gpio_export(ARV452CPW_SWITCH_RESET, 0);
-
-       gpio_request(ARV452CPW_RELAY1, "relay1");
-       gpio_direction_output(ARV452CPW_RELAY1, 1);
-       gpio_export(ARV452CPW_RELAY1, 0);
-
-       gpio_request(ARV452CPW_RELAY2, "relay2");
-       gpio_set_value(ARV452CPW_RELAY2, 1);
-       gpio_export(ARV452CPW_RELAY2, 0);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_ARV452CPW,
-                       "ARV452CPW",
-                       "ARV452CPW - Arcor A801",
-                       arv452Cpw_init);
-
-static void __init
-arv4525pw_init(void)
-{
-#define ARV4525PW_ATH_ADDR             0x3f0400
-#define ARV4525PW_MADWIFI_ADDR         0xb03f0400
-#define ARV4525PW_MAC_ADDR             0x3f0016
-
-       arv_load_nor(0x400000);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4525pw_gpio_leds), arv4525pw_gpio_leds);
-       gpio_request_array(arv4525pw_gpios, ARRAY_SIZE(arv4525pw_gpios));
-       gpio_export(ARV4525PW_RELAY, false);
-       gpio_export(ARV4525PW_PHYRESET, false);
-       ltq_pci_data.clock = PCI_CLOCK_INT;
-       ltq_register_pci(&ltq_pci_data);
-       arv_register_ath5k(ARV4525PW_ATH_ADDR, ARV4525PW_MADWIFI_ADDR);
-       ltq_register_ath5k(arv_ath5k_eeprom_data, arv_athxk_eeprom_mac);
-       ltq_eth_data.mii_mode = PHY_INTERFACE_MODE_MII;
-       arv_register_ethernet(ARV4525PW_MAC_ADDR);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_ARV4525PW,
-                       "ARV4525PW",
-                       "ARV4525PW - Speedport W502V",
-                       arv4525pw_init);
-
-static void __init
-arv7525pw_init(void)
-{
-#define ARV7525P_MAC_ADDR      0x3f0016
-
-       arv_load_nor(0x400000);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4525pw_gpio_leds), arv4525pw_gpio_leds);
-       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
-                               ARRAY_SIZE(arv7525pw_gpio_keys), arv7525pw_gpio_keys);
-       ltq_pci_data.clock = PCI_CLOCK_INT;
-       ltq_pci_data.gpio = PCI_GNT1 | PCI_EXIN1;
-       ltq_pci_data.irq[14] = (INT_NUM_IM3_IRL0 + 31);
-       ltq_register_pci(&ltq_pci_data);
-       ltq_eth_data.mii_mode = PHY_INTERFACE_MODE_MII;
-       ltq_register_rt2x00("RT2860.eeprom", NULL);
-       ltq_register_tapi();
-       arv_register_ethernet(ARV7525P_MAC_ADDR);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_ARV7525PW,
-                       "ARV7525PW",
-                       "ARV7525PW - Speedport W303V",
-                       arv7525pw_init);
-
-static void __init
-arv7518pw_init(void)
-{
-#define ARV7518PW_EBU                  0x2
-#define ARV7518PW_USB                  14
-#define ARV7518PW_SWITCH_RESET         13
-#define ARV7518PW_ATH_ADDR             0x7f0400
-#define ARV7518PW_MAC_ADDR             0x7f0016
-
-       arv_load_nor(0x800000);
-       ltq_register_gpio_ebu(ARV7518PW_EBU);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv7518pw_gpio_leds), arv7518pw_gpio_leds);
-       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
-                               ARRAY_SIZE(arv7518pw_gpio_keys), arv7518pw_gpio_keys);
-       ltq_register_pci(&ltq_pci_data);
-       ltq_register_tapi();
-       xway_register_dwc(ARV7518PW_USB);
-       arv_register_ethernet(ARV7518PW_MAC_ADDR);
-       arv_register_ath9k(ARV7518PW_ATH_ADDR, ARV7518PW_MAC_ADDR);
-       ltq_register_ath9k(arv_ath9k_eeprom_data, arv_athxk_eeprom_mac);
-       ltq_pci_ath_fixup(14, arv_ath9k_eeprom_data);
-
-       gpio_request(ARV7518PW_SWITCH_RESET, "switch");
-       gpio_direction_output(ARV7518PW_SWITCH_RESET, 1);
-       gpio_export(ARV7518PW_SWITCH_RESET, 0);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_ARV7518PW,
-                       "ARV7518PW",
-                       "ARV7518PW - ASTORIA",
-                       arv7518pw_init);
-
-static void __init
-arv752dpw22_init(void)
-{
-#define ARV752DPW22_EBU                        0x2
-#define ARV752DPW22_USB                        100
-#define ARV752DPW22_RELAY              101
-#define ARV752DPW22_MAC_ADDR           0x7f0016
-
-       arv_load_nor(0x800000);
-       ltq_register_gpio_ebu(ARV752DPW22_EBU);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv752dpw22_gpio_leds), arv752dpw22_gpio_leds);
-       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
-                               ARRAY_SIZE(arv752dpw22_gpio_keys), arv752dpw22_gpio_keys);
-       ltq_pci_data.irq[15] = (INT_NUM_IM3_IRL0 + 31);
-       ltq_pci_data.gpio |= PCI_EXIN1 | PCI_REQ2;
-       ltq_register_pci(&ltq_pci_data);
-       xway_register_dwc(ARV752DPW22_USB);
-       arv_register_ethernet(ARV752DPW22_MAC_ADDR);
-
-       gpio_request(ARV752DPW22_RELAY, "relay");
-       gpio_set_value(ARV752DPW22_RELAY, 1);
-       gpio_export(ARV752DPW22_RELAY, 0);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_ARV752DPW22,
-                       "ARV752DPW22",
-                       "ARV752DPW22 - Arcor A803",
-                       arv752dpw22_init);
-
-static void __init
-arv752dpw_init(void)
-{
-#define ARV752DPW22_EBU                        0x2
-#define ARV752DPW22_USB                        100
-#define ARV752DPW22_RELAY              101
-#define ARV752DPW22_MAC_ADDR           0x7f0016
-
-       arv_load_nor(0x800000);
-       ltq_register_gpio_ebu(ARV752DPW22_EBU);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv752dpw22_gpio_leds), arv752dpw22_gpio_leds);
-       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(arv752dpw22_gpio_keys), arv752dpw22_gpio_keys);
-       ltq_pci_data.irq[14] = (INT_NUM_IM3_IRL0 + 31);
-       ltq_pci_data.gpio |= PCI_EXIN1 | PCI_REQ2;
-       ltq_register_pci(&ltq_pci_data);
-       xway_register_dwc(ARV752DPW22_USB);
-       ltq_register_rt2x00("RT2860.eeprom", NULL);
-       arv_register_ethernet(ARV752DPW22_MAC_ADDR);
-       gpio_request(ARV752DPW22_RELAY, "relay");
-       gpio_set_value(ARV752DPW22_RELAY, 1);
-       gpio_export(ARV752DPW22_RELAY, 0);
-
-}
-
-MIPS_MACHINE(LANTIQ_MACH_ARV752DPW,
-                       "ARV752DPW",
-                       "ARV752DPW - Arcor A802",
-                       arv752dpw_init);
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-bthomehubv2b.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-bthomehubv2b.c
deleted file mode 100644 (file)
index 44fe2f4..0000000
+++ /dev/null
@@ -1,542 +0,0 @@
-/*
- *  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
- *  by the Free Software Foundation.
- *
- *  Copyright (C) 2011 Andrej Vlašić
- *  Copyright (C) 2011 Luka Perkov
- *
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/leds.h>
-#include <linux/gpio.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/physmap.h>
-#include <linux/input.h>
-#include <linux/ath5k_platform.h>
-#include <linux/ath9k_platform.h>
-#include <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/io.h>
-#include <linux/string.h>
-#include <linux/delay.h>
-#include <linux/module.h>
-
-#include <irq.h>
-#include <lantiq_soc.h>
-#include <lantiq_platform.h>
-#include <dev-gpio-leds.h>
-#include <dev-gpio-buttons.h>
-
-#include "../machtypes.h"
-//#include "dev-wifi-ath9k.h"
-#include "devices.h"
-#include "dev-dwc_otg.h"
-
-#undef USE_BTHH_GPIO_INIT
-
-// this reads certain data from u-boot if it's there
-#define USE_UBOOT_ENV_DATA
-
-#define UBOOT_ENV_OFFSET       0x040000
-#define UBOOT_ENV_SIZE         0x010000
-
-#ifdef NAND_ORGLAYOUT
-// this is only here for reference
-// definition of NAND flash area
-static struct mtd_partition bthomehubv2b_nand_partitions[] =
-{
-       {
-               .name   = "ART",
-               .offset = 0x0000000,
-               .size   = 0x0004000,
-       },
-       {
-               .name   = "image1",
-               .offset = 0x0004000,
-               .size   = 0x0E00000,
-       },
-       {
-               .name   = "unknown1",
-               .offset = 0x0E04000,
-               .size   = 0x00FC000,
-       },
-       {
-               .name   = "image2",
-               .offset = 0x0F00000,
-               .size   = 0x0E00000,
-       },
-       {
-               .name   = "unknown2",
-               .offset = 0x1D00000,
-               .size   = 0x0300000,
-       },
-
-};
-#endif
-
-#ifdef NAND_KEEPOPENRG
-// this allows both firmwares to co-exist
-
-static struct mtd_partition bthomehubv2b_nand_partitions[] =
-{
-       {
-               .name   = "art",
-               .offset = 0x0000000,
-               .size   = 0x0004000,
-       },
-       {
-               .name   = "Image1",
-               .offset = 0x0004000,
-               .size   = 0x0E00000,
-       },
-       {
-               .name   = "linux",
-               .offset = 0x0E04000,
-               .size   = 0x11fC000,
-       },
-       {
-               .name   = "wholeflash",
-               .offset = 0x0000000,
-               .size   = 0x2000000,
-       },
-
-};
-#endif
-
-// this gives more jffs2 by overwriting openrg
-
-static struct mtd_partition bthomehubv2b_nand_partitions[] =
-{
-       {
-               .name   = "art",
-               .offset = 0x0000000,
-               .size   = 0x0004000,
-       },
-       {
-               .name   = "linux",
-               .offset = 0x0004000,
-               .size   = 0x1ffC000,
-       },
-       {
-               .name   = "wholeflash",
-               .offset = 0x0000000,
-               .size   = 0x2000000,
-       },
-
-};
-
-extern void __init xway_register_nand(struct mtd_partition *parts, int count);
-
-// end BTHH_USE_NAND
-
-static struct gpio_led
-bthomehubv2b_gpio_leds[] __initdata = {
-
-       { .name = "soc:orange:upgrading",       .gpio = 213, },
-       { .name = "soc:orange:phone",           .gpio = 214, },
-       { .name = "soc:blue:phone",             .gpio = 215, },
-       { .name = "soc:orange:wireless",        .gpio = 216, },
-       { .name = "soc:blue:wireless",          .gpio = 217, },
-       { .name = "soc:red:broadband",          .gpio = 218, },
-       { .name = "soc:orange:broadband",       .gpio = 219, },
-       { .name = "soc:blue:broadband",         .gpio = 220, },
-       { .name = "soc:red:power",              .gpio = 221, },
-       { .name = "soc:orange:power",           .gpio = 222, },
-       { .name = "soc:blue:power",             .gpio = 223, },
-};
-
-static struct gpio_keys_button
-bthomehubv2b_gpio_keys[] __initdata = {
-       {
-               .desc           = "restart",
-               .type           = EV_KEY,
-               .code           = BTN_0,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 2,
-               .active_low     = 1,
-       },
-       {
-               .desc           = "findhandset",
-               .type           = EV_KEY,
-               .code           = BTN_1,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 15,
-               .active_low     = 1,
-       },
-       {
-               .desc           = "wps",
-               .type           = EV_KEY,
-               .code           = BTN_2,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 22,
-               .active_low     = 1,
-       },
-};
-
-// definition of NOR flash area - as per original.
-static struct mtd_partition bthomehubv2b_partitions[] =
-{
-       {
-               .name   = "uboot",
-               .offset = 0x000000,
-               .size   = 0x040000,
-       },
-       {
-               .name   = "uboot_env",
-               .offset = UBOOT_ENV_OFFSET,
-               .size   = UBOOT_ENV_SIZE,
-       },
-       {
-               .name   = "rg_conf_1",
-               .offset = 0x050000,
-               .size   = 0x010000,
-       },
-       {
-               .name   = "rg_conf_2",
-               .offset = 0x060000,
-               .size   = 0x010000,
-       },
-       {
-               .name   = "rg_conf_factory",
-               .offset = 0x070000,
-               .size   = 0x010000,
-       },
-};
-
-
-/* nor flash */
-/* bt homehubv2b has a very small nor flash */
-/* so make it look for a small one, else we get a lot of alias chips identified - */
-/* not a bug problem, but fills the logs. */
-static struct resource bthhv2b_nor_resource =
-       MEM_RES("nor", LTQ_FLASH_START, 0x80000);
-
-static struct platform_device ltq_nor = {
-       .name           = "ltq_nor",
-       .resource       = &bthhv2b_nor_resource,
-       .num_resources  = 1,
-};
-
-static void __init bthhv2b_register_nor(struct physmap_flash_data *data)
-{
-       ltq_nor.dev.platform_data = data;
-       platform_device_register(&ltq_nor);
-}
-
-static struct physmap_flash_data bthomehubv2b_flash_data = {
-       .nr_parts       = ARRAY_SIZE(bthomehubv2b_partitions),
-       .parts          = bthomehubv2b_partitions,
-};
-
-
-
-
-static struct ltq_pci_data ltq_pci_data = {
-       .clock  = PCI_CLOCK_INT,
-       .gpio   = PCI_GNT1 | PCI_REQ1,
-       .irq    = { [14] = INT_NUM_IM0_IRL0 + 22, },
-};
-
-
-
-
-static struct ltq_eth_data ltq_eth_data = {
-       .mii_mode       = PHY_INTERFACE_MODE_MII,
-};
-
-
-
-
-static char __init *get_uboot_env_var(char *haystack, int haystack_len, char *needle, int needle_len) {
-       int i;
-       for (i = 0; i <= haystack_len - needle_len; i++) {
-               if (memcmp(haystack + i, needle, needle_len) == 0) {
-                       return haystack + i + needle_len;
-               }
-       }
-       return NULL;
-}
-
-/*
- * bthomehubv2b_parse_hex_* are not uniq. in arm/orion there are also duplicates:
- * dns323_parse_hex_*
- * TODO: one day write a patch for this :)
- */
-static int __init bthomehubv2b_parse_hex_nibble(char n) {
-       if (n >= '0' && n <= '9')
-               return n - '0';
-
-       if (n >= 'A' && n <= 'F')
-               return n - 'A' + 10;
-
-       if (n >= 'a' && n <= 'f')
-               return n - 'a' + 10;
-
-       return -1;
-}
-
-static int __init bthomehubv2b_parse_hex_byte(const char *b) {
-       int hi;
-       int lo;
-
-       hi = bthomehubv2b_parse_hex_nibble(b[0]);
-       lo = bthomehubv2b_parse_hex_nibble(b[1]);
-
-       if (hi < 0 || lo < 0)
-               return -1;
-
-       return (hi << 4) | lo;
-}
-
-static int __init bthomehubv2b_register_ethernet(void) {
-       u_int8_t addr[6];
-       int i;
-       char *mac = "01:02:03:04:05:06";
-       int gotmac = 0;
-       char *boardid = "BTHHV2B";
-       int gotboardid = 0;
-
-       char *uboot_env_page;
-       uboot_env_page = ioremap(LTQ_FLASH_START + UBOOT_ENV_OFFSET, UBOOT_ENV_SIZE);
-       if (uboot_env_page)
-       {
-               char *Data = NULL;
-               Data = get_uboot_env_var(uboot_env_page, UBOOT_ENV_SIZE, "\0ethaddr=", 9);
-               if (Data)
-               {
-                       mac = Data;
-               }
-
-               Data = get_uboot_env_var(uboot_env_page, UBOOT_ENV_SIZE, "\0boardid=", 9);
-
-               if (Data)
-                       boardid = Data;
-       }
-       else
-       {
-               printk("bthomehubv2b: Failed to get uboot_env_page");
-       }
-
-       if (!mac) {
-       goto error_fail;
-       }
-
-       if (!boardid) {
-       goto error_fail;
-       }
-
-       /* Sanity check the string we're looking at */
-       for (i = 0; i < 5; i++) {
-       if (*(mac + (i * 3) + 2) != ':') {
-               goto error_fail;
-               }
-       }
-
-       for (i = 0; i < 6; i++) {
-               int byte;
-               byte = bthomehubv2b_parse_hex_byte(mac + (i * 3));
-               if (byte < 0) {
-                       goto error_fail;
-               }
-               addr[i] = byte;
-       }
-
-       if (gotmac)
-               printk("bthomehubv2b: Found ethernet MAC address: ");
-       else
-               printk("bthomehubv2b: using default MAC (pls set ethaddr in u-boot): ");
-
-       for (i = 0; i < 6; i++)
-               printk("%.2x%s", addr[i], (i < 5) ? ":" : ".\n");
-
-       memcpy(&ltq_eth_data.mac.sa_data, addr, 6);
-       ltq_register_etop(&ltq_eth_data);
-
-       //memcpy(&bthomehubv2b_ath5k_eeprom_mac, addr, 6);
-       //bthomehubv2b_ath5k_eeprom_mac[5]++;
-
-       if (gotboardid)
-               printk("bthomehubv2b: Board id is %s.", boardid);
-       else
-               printk("bthomehubv2b: Default Board id is %s.", boardid);
-
-       if (strncmp(boardid, "BTHHV2B", 7) == 0) {
-               // read in dev-wifi-ath9k
-               //memcpy(&bthomehubv2b_ath5k_eeprom_data, sx763_eeprom_data, ATH5K_PLAT_EEP_MAX_WORDS);
-       }
-       else {
-               printk("bthomehubv2b: Board id is unknown, fix uboot_env data.");
-       }
-
-
-       // should not unmap while we are using the ram?
-       if (uboot_env_page)
-               iounmap(uboot_env_page);
-
-       return 0;
-
-error_fail:
-       if (uboot_env_page)
-               iounmap(uboot_env_page);
-       return -EINVAL;
-}
-
-
-#define PORTA2_HW_PASS1 0
-#define PORTA2_HW_PASS1_SC14480 1
-#define PORTA2_HW_PASS2 2
-
-int porta2_hw_revision = -1;
-EXPORT_SYMBOL(porta2_hw_revision);
-
-#define LTQ_GPIO_OUT           0x00
-#define LTQ_GPIO_IN            0x04
-#define LTQ_GPIO_DIR           0x08
-#define LTQ_GPIO_ALTSEL0       0x0C
-#define LTQ_GPIO_ALTSEL1       0x10
-#define LTQ_GPIO_OD            0x14
-#define LTQ_GPIO_PUDSEL                0x1C
-#define LTQ_GPIO_PUDEN         0x20
-
-#ifdef USE_BTHH_GPIO_INIT
-static void bthomehubv2b_board_prom_init(void)
-{
-       int revision = 0;
-       unsigned int gpio = 0;
-       void __iomem *mem = ioremap(LTQ_GPIO0_BASE_ADDR, LTQ_GPIO_SIZE*2);
-
-#define DANUBE_GPIO_P0_OUT (unsigned short *)(mem + LTQ_GPIO_OUT)
-#define DANUBE_GPIO_P0_IN (unsigned short *)(mem + LTQ_GPIO_IN)
-#define DANUBE_GPIO_P0_DIR (unsigned short *)(mem + LTQ_GPIO_DIR)
-#define DANUBE_GPIO_P0_ALTSEL0 (unsigned short *)(mem + LTQ_GPIO_ALTSEL0)
-#define DANUBE_GPIO_P0_ALTSEL1 (unsigned short *)(mem + LTQ_GPIO_ALTSEL1)
-
-#define DANUBE_GPIO_P1_OUT (unsigned short *)(mem + LTQ_GPIO_SIZE + LTQ_GPIO_OUT)
-#define DANUBE_GPIO_P1_IN (unsigned short *)(mem + LTQ_GPIO_SIZE + LTQ_GPIO_IN)
-#define DANUBE_GPIO_P1_DIR (unsigned short *)(mem + LTQ_GPIO_SIZE + LTQ_GPIO_DIR)
-#define DANUBE_GPIO_P1_ALTSEL0 (unsigned short *)(mem + LTQ_GPIO_SIZE + LTQ_GPIO_ALTSEL0)
-#define DANUBE_GPIO_P1_ALTSEL1 (unsigned short *)(mem + LTQ_GPIO_SIZE + LTQ_GPIO_ALTSEL1)
-#define DANUBE_GPIO_P1_OD (unsigned short *)(mem + LTQ_GPIO_SIZE + LTQ_GPIO_OD)
-
-       printk("About to sense board using GPIOs at %8.8X\n", (unsigned int)mem);
-
-
-       /* First detect HW revision of the board. For that we need to set the GPIO
-        * lines according to table 7.2.1/7.2.2 in HSI */
-       *DANUBE_GPIO_P0_OUT = 0x0200;
-       *DANUBE_GPIO_P0_DIR = 0x2610;
-       *DANUBE_GPIO_P0_ALTSEL0 = 0x7812;
-       *DANUBE_GPIO_P0_ALTSEL1 = 0x0000;
-
-       *DANUBE_GPIO_P1_OUT = 0x7008;
-       *DANUBE_GPIO_P1_DIR = 0xF3AE;
-       *DANUBE_GPIO_P1_ALTSEL0 = 0x83A7;
-       *DANUBE_GPIO_P1_ALTSEL1 = 0x0400;
-
-       gpio = (*DANUBE_GPIO_P0_IN & 0xFFFF) | 
-               ((*DANUBE_GPIO_P1_IN & 0xFFFF) << 16);
-
-       revision |= (gpio & (1 << 27)) ? (1 << 0) : 0;
-       revision |= (gpio & (1 << 20)) ? (1 << 1) : 0;
-       revision |= (gpio & (1 << 8)) ? (1 << 2) : 0;
-       revision |= (gpio & (1 << 6)) ? (1 << 3) : 0;
-       revision |= (gpio & (1 << 5)) ? (1 << 4) : 0;
-       revision |= (gpio & (1 << 0)) ? (1 << 5) : 0;
-
-       porta2_hw_revision = revision;
-       printk("PORTA2: detected HW revision %d\n", revision);
-
-       /* Set GPIO lines according to HW revision. */
-       /* !!! Note that we are setting SPI_CS5 (GPIO 9) to be GPIO out with value
-        * of HIGH since the FXO does not use the SPI CS mechanism, it does it
-        * manually by controlling the GPIO line. We need the CS line to be disabled
-        * (HIGH) until needed since it will intefere with other devices on the SPI
-        * bus. */
-       *DANUBE_GPIO_P0_OUT = 0x0200;
-       /*
-        * During the manufacturing process a different machine takes over uart0
-        * so set it as input (so it wouldn't drive the line)
-        */
-#define cCONFIG_SHC_BT_MFG_TEST 0
-       *DANUBE_GPIO_P0_DIR = 0x2671 | (cCONFIG_SHC_BT_MFG_TEST ? 0 : (1 << 12));
-
-       if (revision == PORTA2_HW_PASS1_SC14480 || revision == PORTA2_HW_PASS2)
-               *DANUBE_GPIO_P0_ALTSEL0 = 0x7873;
-       else
-               *DANUBE_GPIO_P0_ALTSEL0 = 0x3873;
-
-       *DANUBE_GPIO_P0_ALTSEL1 = 0x0001;
-
-
-       //###################################################################################    
-       // Register values before patch
-       // P1_ALTSEL0 = 0x83A7
-       // P1_ALTSEL1 = 0x0400
-       // P1_OU        T     = 0x7008
-       // P1_DIR     = 0xF3AE
-       // P1_OD      = 0xE3Fc
-       printk("\nApplying Patch for CPU1 IRQ Issue\n");
-       *DANUBE_GPIO_P1_ALTSEL0 &= ~(1<<12);  // switch P1.12 (GPIO28) to GPIO functionality
-       *DANUBE_GPIO_P1_ALTSEL1 &= ~(1<<12);  // switch P1.12 (GPIO28) to GPIO functionality
-       *DANUBE_GPIO_P1_OUT     &= ~(1<<12);  // set P1.12 (GPIO28) to 0
-       *DANUBE_GPIO_P1_DIR     |= (1<<12);   // configure P1.12 (GPIO28) as output 
-       *DANUBE_GPIO_P1_OD      |= (1<<12);   // activate Push/Pull mode 
-       udelay(100);                          // wait a little bit (100us)
-       *DANUBE_GPIO_P1_OD      &= ~(1<<12);  // switch back from Push/Pull to Open Drain
-       // important: before! setting output to 1 (3,3V) the mode must be switched 
-       // back to Open Drain because the reset pin of the SC14488 is internally 
-       // pulled to 1,8V
-       *DANUBE_GPIO_P1_OUT     |= (1<<12);   // set output P1.12 (GPIO28) to 1
-       // Register values after patch, should be the same as before
-       // P1_ALTSEL0 = 0x83A7
-       // P1_ALTSEL1 = 0x0400
-       // P1_OUT     = 0x7008
-       // P1_DIR     = 0xF3AE
-       // P1_OD      = 0xE3Fc
-       //###################################################################################
-
-
-       *DANUBE_GPIO_P1_OUT = 0x7008;
-       *DANUBE_GPIO_P1_DIR = 0xEBAE | (revision == PORTA2_HW_PASS2 ? 0x1000 : 0);
-       *DANUBE_GPIO_P1_ALTSEL0 = 0x8BA7;
-       *DANUBE_GPIO_P1_ALTSEL1 = 0x0400;
-
-       iounmap(mem);
-}
-#endif
-static void __init bthomehubv2b_init(void) {
-#define bthomehubv2b_USB               13
-
-       // read the board version
-#ifdef USE_BTHH_GPIO_INIT
-       bthomehubv2b_board_prom_init();
-#endif
-
-       // register extra GPPOs used by LEDs as GPO 0x200+
-       ltq_register_gpio_stp();
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(bthomehubv2b_gpio_leds), bthomehubv2b_gpio_leds);
-       bthhv2b_register_nor(&bthomehubv2b_flash_data);
-       xway_register_nand(bthomehubv2b_nand_partitions, ARRAY_SIZE(bthomehubv2b_nand_partitions));
-       ltq_register_pci(&ltq_pci_data);
-       ltq_register_tapi();
-       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(bthomehubv2b_gpio_keys), bthomehubv2b_gpio_keys);
-//     ltq_register_ath9k();
-       xway_register_dwc(bthomehubv2b_USB);
-       bthomehubv2b_register_ethernet();
-
-}
-
-MIPS_MACHINE(LANTIQ_MACH_BTHOMEHUBV2BOPENRG,
-       "BTHOMEHUBV2BOPENRG",
-       "BTHOMEHUBV2B - BT Homehub V2.0 Type B with OpenRG image retained",
-       bthomehubv2b_init);
-
-MIPS_MACHINE(LANTIQ_MACH_BTHOMEHUBV2B,
-       "BTHOMEHUBV2B",
-       "BTHOMEHUBV2B - BT Homehub V2.0 Type B",
-       bthomehubv2b_init);
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-easy50601.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-easy50601.c
deleted file mode 100644 (file)
index e76c29a..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- *  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
- *  by the Free Software Foundation.
- *
- *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
- */
-
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/physmap.h>
-#include <linux/input.h>
-
-#include <lantiq.h>
-
-#include "../machtypes.h"
-#include "devices.h"
-
-static struct mtd_partition easy50601_partitions[] = {
-       {
-               .name   = "uboot",
-               .offset = 0x0,
-               .size   = 0x10000,
-       },
-       {
-               .name   = "uboot_env",
-               .offset = 0x10000,
-               .size   = 0x10000,
-       },
-       {
-               .name   = "linux",
-               .offset = 0x20000,
-               .size   = 0x3d0000,
-       },
-};
-
-static struct physmap_flash_data easy50601_flash_data = {
-       .nr_parts       = ARRAY_SIZE(easy50601_partitions),
-       .parts          = easy50601_partitions,
-};
-
-static struct ltq_eth_data ltq_eth_data = {
-       .mii_mode = -1, /* use EPHY */
-};
-
-static void __init
-easy50601_init(void)
-{
-       ltq_register_nor(&easy50601_flash_data);
-       ltq_register_etop(&ltq_eth_data);
-}
-
-MIPS_MACHINE(LTQ_MACH_EASY50601,
-                       "EASY50601",
-                       "EASY50601 Eval Board",
-                       easy50601_init);
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-easy50712.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-easy50712.c
deleted file mode 100644 (file)
index 581aa76..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- *  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
- *  by the Free Software Foundation.
- *
- *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
- */
-
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/physmap.h>
-#include <linux/input.h>
-#include <linux/phy.h>
-
-#include <lantiq_soc.h>
-#include <irq.h>
-
-#include "../machtypes.h"
-#include "devices.h"
-
-static struct mtd_partition easy50712_partitions[] = {
-       {
-               .name   = "uboot",
-               .offset = 0x0,
-               .size   = 0x10000,
-       },
-       {
-               .name   = "uboot_env",
-               .offset = 0x10000,
-               .size   = 0x10000,
-       },
-       {
-               .name   = "linux",
-               .offset = 0x20000,
-               .size   = 0x3d0000,
-       },
-};
-
-static struct physmap_flash_data easy50712_flash_data = {
-       .nr_parts       = ARRAY_SIZE(easy50712_partitions),
-       .parts          = easy50712_partitions,
-};
-
-static struct ltq_pci_data ltq_pci_data = {
-       .clock  = PCI_CLOCK_INT,
-       .gpio   = PCI_GNT1 | PCI_REQ1,
-       .irq    = {
-               [14] = INT_NUM_IM0_IRL0 + 22,
-       },
-};
-
-static struct ltq_eth_data ltq_eth_data = {
-       .mii_mode = PHY_INTERFACE_MODE_MII,
-};
-
-static void __init
-easy50712_init(void)
-{
-       ltq_register_gpio_stp();
-       ltq_register_nor(&easy50712_flash_data);
-       ltq_register_pci(&ltq_pci_data);
-       ltq_register_etop(&ltq_eth_data);
-       ltq_register_tapi();
-}
-
-MIPS_MACHINE(LTQ_MACH_EASY50712,
-                       "EASY50712",
-                       "EASY50712 Eval Board",
-                       easy50712_init);
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-fritz_ar9.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-fritz_ar9.c
deleted file mode 100644 (file)
index 5bd6341..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- *  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
- *  by the Free Software Foundation.
- *
- *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
- */
-
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/physmap.h>
-#include <linux/input.h>
-#include <linux/phy.h>
-#include <linux/spi/spi_gpio.h>
-#include <linux/spi/flash.h>
-
-#include <lantiq_soc.h>
-#include <irq.h>
-
-#include "../machtypes.h"
-#include "devices.h"
-#include "dev-ifxhcd.h"
-#include "dev-gpio-leds.h"
-#include "dev-gpio-buttons.h"
-
-static struct mtd_partition fritz7320_partitions[] = {
-       {
-               .name   = "urlader",
-               .offset = 0x0,
-               .size   = 0x20000,
-       },
-       {
-               .name   = "linux",
-               .offset = 0x20000,
-               .size   = 0xf60000,
-       },
-       {
-               .name   = "tffs (1)",
-               .offset = 0xf80000,
-               .size   = 0x40000,
-       },
-       {
-               .name   = "tffs (2)",
-               .offset = 0xfc0000,
-               .size   = 0x40000,
-       },
-};
-
-static struct physmap_flash_data fritz7320_flash_data = {
-       .nr_parts       = ARRAY_SIZE(fritz7320_partitions),
-       .parts          = fritz7320_partitions,
-};
-
-static struct gpio_led
-fritz7320_gpio_leds[] __initdata = {
-       { .name = "soc:green:power", .gpio = 44, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:internet", .gpio = 47, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:dect", .gpio = 38, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:wlan", .gpio = 37, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:dual1", .gpio = 35, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:red:dual2", .gpio = 45, .active_low = 1, .default_trigger = "default-on" },
-};
-
-static struct gpio_keys_button
-fritz7320_gpio_keys[] __initdata = {
-       {
-               .desc = "wifi",
-               .type = EV_KEY,
-               .code = BTN_0,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio = 1,
-               .active_low = 1,
-       },
-       {
-               .desc = "dect",
-               .type = EV_KEY,
-               .code = BTN_1,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio = 2,
-               .active_low = 1,
-       },
-};
-
-static struct ltq_pci_data ltq_pci_data = {
-       .clock  = PCI_CLOCK_INT,
-       .gpio   = PCI_GNT1 | PCI_REQ1,
-       .irq    = {
-               [14] = INT_NUM_IM0_IRL0 + 22,
-       },
-};
-
-static struct ltq_eth_data ltq_eth_data = {
-       .mii_mode       = PHY_INTERFACE_MODE_RMII,
-};
-
-static int usb_pins[2] = { 50, 51 };
-
-static void __init
-fritz7320_init(void)
-{
-       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
-               ARRAY_SIZE(fritz7320_gpio_keys), fritz7320_gpio_keys);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(fritz7320_gpio_leds), fritz7320_gpio_leds);
-       ltq_register_pci(&ltq_pci_data);
-       ltq_register_etop(&ltq_eth_data);
-       ltq_register_nor(&fritz7320_flash_data);
-       xway_register_hcd(usb_pins);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_FRITZ7320,
-                       "FRITZ7320",
-                       "FRITZ!BOX 7320",
-                       fritz7320_init);
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-fritz_vr9.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-fritz_vr9.c
deleted file mode 100644 (file)
index 293c7b7..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- *  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
- *  by the Free Software Foundation.
- *
- *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
- */
-
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/physmap.h>
-#include <linux/input.h>
-#include <linux/phy.h>
-#include <linux/spi/spi_gpio.h>
-#include <linux/spi/flash.h>
-
-#include <lantiq_soc.h>
-#include <irq.h>
-
-#include "../machtypes.h"
-#include "devices.h"
-#include "dev-ifxhcd.h"
-#include "dev-gpio-leds.h"
-#include "dev-gpio-buttons.h"
-
-static struct mtd_partition fritz3370_partitions[] = {
-       {
-               .name   = "linux",
-               .offset = 0x0,
-               .size   = 0x400000,
-       },
-       {
-               .name   = "filesystem",
-               .offset = 0x400000,
-               .size   = 0x3000000,
-       },
-       {
-               .name   = "reserved-kernel",
-               .offset = 0x3400000,
-               .size   = 0x400000,
-       },
-       {
-               .name   = "reserved",
-               .offset = 0x3800000,
-               .size   = 0x3000000,
-       },
-       {
-               .name   = "config",
-               .offset = 0x6800000,
-               .size   = 0x200000,
-       },
-       {
-               .name   = "nand-filesystem",
-               .offset = 0x6a00000,
-               .size   = 0x1600000,
-       },
-};
-
-static struct mtd_partition spi_flash_partitions[] = {
-       {
-               .name   = "urlader",
-               .offset = 0x0,
-               .size   = 0x20000,
-       },
-       {
-               .name   = "tffs",
-               .offset = 0x20000,
-               .size   = 0x10000,
-       },
-       {
-               .name   = "tffs",
-               .offset = 0x30000,
-               .size   = 0x10000,
-       },
-};
-
-static struct gpio_led
-fritz3370_gpio_leds[] __initdata = {
-       { .name = "soc:green:1", .gpio = 32, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:red:2", .gpio = 33, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:red:3", .gpio = 34, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:4", .gpio = 35, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:5", .gpio = 36, .active_low = 1, .default_trigger = "default-on" },
-       { .name = "soc:green:6", .gpio = 47, .active_low = 1, .default_trigger = "default-on" },
-};
-
-static struct gpio_keys_button
-fritz3370_gpio_keys[] __initdata = {
-       {
-               .desc = "wifi",
-               .type = EV_KEY,
-               .code = BTN_0,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio = 29,
-               .active_low = 1,
-       },
-};
-
-static struct ltq_eth_data ltq_eth_data = {
-       .mii_mode       = PHY_INTERFACE_MODE_RMII,
-};
-
-static int usb_pins[2] = { 5, 14 };
-
-#define SPI_GPIO_MRST  16
-#define SPI_GPIO_MTSR  17
-#define SPI_GPIO_CLK   18
-#define SPI_GPIO_CS0   10
-
-static struct spi_gpio_platform_data spi_gpio_data = {
-       .sck            = SPI_GPIO_CLK,
-       .mosi           = SPI_GPIO_MTSR,
-       .miso           = SPI_GPIO_MRST,
-       .num_chipselect = 2,
-};
-
-static struct platform_device spi_gpio_device = {
-       .name                   = "spi_gpio",
-       .dev.platform_data      = &spi_gpio_data,
-};
-
-static struct flash_platform_data spi_flash_data = {
-       .name           = "SPL",
-       .parts          = spi_flash_partitions,
-       .nr_parts       = ARRAY_SIZE(spi_flash_partitions),
-};
-
-static struct spi_board_info spi_flash __initdata = {
-       .modalias               = "m25p80",
-       .bus_num                = 0,
-       .chip_select            = 0,
-       .max_speed_hz           = 10 * 1000 * 1000,
-       .mode                   = SPI_MODE_3,
-       .chip_select            = 0,
-       .controller_data        = (void *) SPI_GPIO_CS0,
-       .platform_data          = &spi_flash_data
-};
-
-static void __init
-spi_gpio_init(void)
-{
-       spi_register_board_info(&spi_flash, 1);
-       platform_device_register(&spi_gpio_device);
-}
-
-static void __init
-fritz3370_init(void)
-{
-       spi_gpio_init();
-       platform_device_register_simple("pcie-xway", 0, NULL, 0);
-       xway_register_nand(fritz3370_partitions, ARRAY_SIZE(fritz3370_partitions));
-       xway_register_hcd(usb_pins);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(fritz3370_gpio_leds), fritz3370_gpio_leds);
-       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
-               ARRAY_SIZE(fritz3370_gpio_keys), fritz3370_gpio_keys);
-       ltq_register_vrx200(&ltq_eth_data);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_FRITZ3370,
-                       "FRITZ3370",
-                       "FRITZ!BOX 3370",
-                       fritz3370_init);
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-gigasx76x.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-gigasx76x.c
deleted file mode 100644 (file)
index af27825..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- *  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
- *  by the Free Software Foundation.
- *
- *  Copyright (C) 2011 Andrej Vlašić
- *  Copyright (C) 2011 Luka Perkov
- *
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/leds.h>
-#include <linux/gpio.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/physmap.h>
-#include <linux/input.h>
-#include <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/io.h>
-#include <linux/if_ether.h>
-#include <linux/etherdevice.h>
-#include <linux/string.h>
-
-#include <irq.h>
-#include <lantiq_soc.h>
-#include <lantiq_platform.h>
-#include <dev-gpio-leds.h>
-#include <dev-gpio-buttons.h>
-
-#include "../machtypes.h"
-#include "dev-wifi-athxk.h"
-#include "devices.h"
-#include "dev-dwc_otg.h"
-
-#include "mach-gigasx76x.h"
-
-static u8 ltq_ethaddr[6] = { 0 };
-
-static int __init
-setup_ethaddr(char *str)
-{
-       if (!mac_pton(str, ltq_ethaddr))
-               memset(ltq_ethaddr, 0, 6);
-       return 0;
-}
-__setup("ethaddr=", setup_ethaddr);
-
-
-enum {
-       UNKNOWN = 0,
-       SX761,
-       SX762,
-       SX763,
-};
-static u8 board __initdata = SX763;
-
-static int __init
-setup_board(char *str)
-{
-       if (!strcmp(str, "sx761"))
-               board = SX761;
-       else if (!strcmp(str, "sx762"))
-               board = SX762;
-       else if (!strcmp(str, "sx763"))
-               board = SX763;
-       else
-               board = UNKNOWN;
-       return 0;
-}
-__setup("board=", setup_board);
-
-static struct mtd_partition gigasx76x_partitions[] =
-{
-       {
-               .name   = "uboot",
-               .offset = 0x0,
-               .size   = 0x10000,
-       },
-       {
-               .name   = "uboot_env",
-               .offset = 0x10000,
-               .size   = 0x10000,
-       },
-       {
-               .name   = "linux",
-               .offset = 0x20000,
-               .size   = 0x7e0000,
-       },
-};
-
-static struct gpio_led
-gigasx76x_gpio_leds[] __initdata = {
-       { .name = "soc:green:voip", .gpio = 216, },
-       { .name = "soc:green:adsl", .gpio = 217, },
-       { .name = "soc:green:usb", .gpio = 218, },
-       { .name = "soc:green:wifi", .gpio = 219, },
-       { .name = "soc:green:phone2", .gpio = 220, },
-       { .name = "soc:green:phone1", .gpio = 221, },
-       { .name = "soc:green:line", .gpio = 222, },
-       { .name = "soc:green:online", .gpio = 223, },
-};
-
-static struct gpio_keys_button
-gigasx76x_gpio_keys[] __initdata = {
-       {
-               .desc           = "wps",
-               .type           = EV_KEY,
-               .code           = KEY_WPS_BUTTON,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 22,
-               .active_low     = 1,
-       },
-       {
-               .desc           = "reset",
-               .type           = EV_KEY,
-               .code           = BTN_0,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 14,
-               .active_low     = 0,
-       },
-};
-
-static struct physmap_flash_data gigasx76x_flash_data = {
-       .nr_parts       = ARRAY_SIZE(gigasx76x_partitions),
-       .parts          = gigasx76x_partitions,
-};
-
-static struct ltq_pci_data ltq_pci_data = {
-       .clock  = PCI_CLOCK_INT,
-       .gpio   = PCI_GNT1 | PCI_REQ1,
-       .irq    = { [14] = INT_NUM_IM0_IRL0 + 22, },
-};
-
-static struct ltq_eth_data ltq_eth_data = {
-       .mii_mode       = PHY_INTERFACE_MODE_MII,
-};
-
-static void __init
-gigasx76x_init(void)
-{
-#define GIGASX76X_USB          29
-
-       ltq_register_gpio_stp();
-       ltq_register_nor(&gigasx76x_flash_data);
-       ltq_register_pci(&ltq_pci_data);
-       ltq_register_tapi();
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(gigasx76x_gpio_leds), gigasx76x_gpio_leds);
-       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(gigasx76x_gpio_keys), gigasx76x_gpio_keys);
-       xway_register_dwc(GIGASX76X_USB);
-
-       if (!is_valid_ether_addr(ltq_ethaddr))
-               random_ether_addr(ltq_ethaddr);
-
-       memcpy(&ltq_eth_data.mac.sa_data, ltq_ethaddr, 6);
-       ltq_register_etop(&ltq_eth_data);
-       if (board == SX762) 
-               ltq_register_ath5k(sx762_eeprom_data, ltq_ethaddr);
-       else
-               ltq_register_ath5k(sx763_eeprom_data, ltq_ethaddr);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_GIGASX76X,
-                       "GIGASX76X",
-                       "GIGASX76X - Gigaset SX761,SX762,SX763",
-                       gigasx76x_init);
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-gigasx76x.h b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-gigasx76x.h
deleted file mode 100644 (file)
index 74e5ba2..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- *  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
- *  by the Free Software Foundation.
- *
- *  Copyright (C) 2011 Andrej Vlašić
- *  Copyright (C) 2011 Luka Perkov
- *
- */
-
-#ifndef _MACH_GIGASX76X_H__
-#define _MACH_GIGASX76X_H__
-
-#include <linux/ath5k_platform.h>
-
-static u16 sx763_eeprom_data[ATH5K_PLAT_EEP_MAX_WORDS] =
-{
-0x0013,0x168c,0x0200,0x0001,0x0000,0x5001,0x0000,0x2051,0x2051,0x1c0a,0x0100,
-0x0000,0x01c2,0x0002,0xc606,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xf165,0x7fbe,0x0003,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aa5,0x0000,0x0000,0x0313,0x4943,
-0x2053,0x7104,0x1202,0x0400,0x0306,0x0001,0x0000,0x0500,0x410e,0x39b1,0x1eb5,
-0x4e2d,0x3056,0xffff,0xe902,0x0700,0x0106,0x0000,0x0100,0x1500,0x0752,0x4101,
-0x6874,0x7265,0x736f,0x4320,0x6d6f,0x756d,0x696e,0x6163,0x6974,0x6e6f,0x2c73,
-0x4920,0x636e,0x002e,0x5241,0x3035,0x3130,0x302d,0x3030,0x2d30,0x3030,0x3030,
-0x5700,0x7269,0x6c65,0x7365,0x2073,0x414c,0x204e,0x6552,0x6566,0x6572,0x636e,
-0x2065,0x6143,0x6472,0x3000,0x0030,0x00ff,0x2100,0x0602,0x2201,0x0205,0x8d80,
-0x005b,0x0522,0x4002,0x8954,0x2200,0x0205,0x1b00,0x00b7,0x0522,0x8002,0x12a8,
-0x2201,0x0205,0x3600,0x016e,0x0522,0x0002,0x2551,0x2202,0x0205,0x6c00,0x02dc,
-0x0522,0x8002,0x37f9,0x2203,0x0205,0xa200,0x044a,0x0222,0x0803,0x0822,0x0604,
-0x0300,0xbe7f,0x65f1,0x0222,0x0105,0x00ff,0x0000,0x0000,0x0000,0x0000,0x0000,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0x0037,0x971f,0x5003,0x9a66,0x0001,0x81c4,0x016a,
-0x02ff,0x84ff,0x15a3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x2d2c,0x0000,0x0000,0x0000,0x0000,0xe028,0xa492,0x1c00,
-0x000e,0xb8ca,0x0013,0x0000,0x0000,0x6b4b,0xc059,0x1571,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x2370,0x00a5,0x9618,0x419a,0x68a2,0xda35,0x001c,0x0007,0xb0ff,0x01b5,0x0000,
-0x0000,0xff70,0x19ff,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x3170,0x00a5,0x9618,0x419a,0x68a2,0xda35,
-0x001c,0x000e,0xb0ff,0x21b5,0x0000,0x2fd8,0xff70,0x1226,0x19ff,0x07be,0x6201,
-0x032e,0x0587,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1112,
-0x1441,0x4231,0x3234,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x8000,0x0000,0x0000,0x0000,0x0000,0x8000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4d31,0x7f54,0x3c93,0x1205,0x1931,
-0x492d,0x7f50,0x3c93,0x0e01,0x192d,0x0070,0x0000,0x8140,0x724b,0x2ba9,0x3a09,
-0x99d9,0x1949,0x0070,0x0000,0x80e0,0x624a,0x2af8,0x35c7,0x9d47,0x1938,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x7082,0x0820,0xb882,0x0820,0x7092,0x28a0,0x8992,
-0x28a0,0xa292,0x28a0,0x70a2,0xa7ac,0x0000,0x0000,0x2464,0x6424,0x0000,0x0000,
-0x70a2,0xa7ac,0x0000,0x0000,0x2464,0x6424,0x0000,0x0000,0x8989,0x0000,0x0000,
-0x0000,0x2424,0x0000,0x0000,0x0000,0x7075,0xa2ac,0xb800,0x0000,0x2464,0x2424,
-0x2400,0x0000,0x7075,0xa2ac,0x0000,0x0000,0x2464,0x2424,0x0000,0x0000,0x7075,
-0xa7ac,0x0000,0x0000,0x2464,0x6424,0x0000,0x0000,0x7075,0xa7ac,0x0000,0x0000,
-0x2464,0x6424,0x0000,0x0000,0x8989,0x0000,0x0000,0x0000,0x2424,0x0000,0x0000,
-0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff};
-
-static u16 sx762_eeprom_data[ATH5K_PLAT_EEP_MAX_WORDS] =
-{
-0x001a,0x168c,0x0200,0x0001,0x0000,0x5001,0x0000,0x2051,0x2051,0x1c0a,0x0100,
-0x0000,0x01c2,0x0002,0xc606,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xf165,0x7fbe,0x0003,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aa5,0x0000,0x0000,0x0313,0x4943,
-0x2053,0x7104,0x1202,0x0400,0x0306,0x0001,0x0000,0x0500,0x410e,0x39b1,0x1eb5,
-0x4e2d,0x3056,0xffff,0xe902,0x0700,0x0106,0x0000,0x0100,0x1500,0x0752,0x4101,
-0x6874,0x7265,0x736f,0x4320,0x6d6f,0x756d,0x696e,0x6163,0x6974,0x6e6f,0x2c73,
-0x4920,0x636e,0x002e,0x5241,0x3035,0x3130,0x302d,0x3030,0x2d30,0x3030,0x3030,
-0x5700,0x7269,0x6c65,0x7365,0x2073,0x414c,0x204e,0x6552,0x6566,0x6572,0x636e,
-0x2065,0x6143,0x6472,0x3000,0x0030,0x00ff,0x2100,0x0602,0x2201,0x0205,0x8d80,
-0x005b,0x0522,0x4002,0x8954,0x2200,0x0205,0x1b00,0x00b7,0x0522,0x8002,0x12a8,
-0x2201,0x0205,0x3600,0x016e,0x0522,0x0002,0x2551,0x2202,0x0205,0x6c00,0x02dc,
-0x0522,0x8002,0x37f9,0x2203,0x0205,0xa200,0x044a,0x0222,0x0803,0x0822,0x0604,
-0x0300,0xbe7f,0x65f1,0x0222,0x0105,0x00ff,0x0000,0x0000,0x0000,0x0000,0x0000,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0x0037,0x6aaa,0x5003,0x9a66,0x0001,0x81c4,0x016a,
-0x02ff,0x84ff,0x15a3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x2d2c,0x0000,0x0000,0x0000,0x0000,0xe028,0xa492,0x1c00,
-0x000e,0xb8ca,0x0013,0x0000,0x0000,0x6b4b,0xc059,0x1571,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x2370,0x00a5,0x9618,0x419a,0x68a2,0xda35,0x001c,0x0007,0xb0ff,0x01b5,0x0000,
-0x0000,0xff70,0x19ff,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x3170,0x00a5,0x9618,0x419a,0x68a2,0xda35,
-0x001c,0x000e,0xb0ff,0x21b5,0x0000,0x2fd8,0xff70,0x1226,0x19ff,0x07fa,0x6201,
-0x032e,0x0587,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1112,
-0x1441,0x4231,0x3234,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x8000,0x0000,0x0000,0x0000,0x0000,0x8000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4d31,0x7f54,0x3c93,0x1205,0x1931,
-0x492d,0x7f50,0x3c93,0x0e01,0x192d,0x0070,0x0000,0x8180,0x724d,0xab59,0x3a08,
-0xdd79,0x2559,0x0070,0x0000,0x81a0,0x6e4d,0x2b99,0x3a09,0x9989,0x2157,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
-0x0000,0x0000,0x0000,0x0000,0x7092,0x4924,0xb892,0x4924,0x7092,0x289e,0x8992,
-0x289e,0xa292,0x289e,0x70a2,0xa7ac,0x0000,0x0000,0x2462,0x5e13,0x0000,0x0000,
-0x70a2,0xa7ac,0x0000,0x0000,0x1e5c,0x5713,0x0000,0x0000,0x8989,0x0000,0x0000,
-0x0000,0x2424,0x0000,0x0000,0x0000,0x7075,0xa2ac,0xb800,0x0000,0x2868,0x2828,
-0x2800,0x0000,0x7075,0xa2ac,0x0000,0x0000,0x2868,0x2828,0x0000,0x0000,0x7075,
-0xac00,0x0000,0x0000,0x2161,0x2100,0x0000,0x0000,0x7075,0xac00,0x0000,0x0000,
-0x1b5b,0x1b00,0x0000,0x0000,0x8989,0x0000,0x0000,0x0000,0x2121,0x0000,0x0000,
-0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
-0xffff,0xffff};
-
-#endif
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-h201l.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-h201l.c
deleted file mode 100644 (file)
index 86101f5..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- *  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
- *  by the Free Software Foundation.
- *
- *  Copyright (C) 2012 Luka Perkov <openwrt@lukaperkov.net>
- */
-
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/leds.h>
-#include <linux/gpio.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/physmap.h>
-#include <linux/input.h>
-#include <linux/kernel.h>
-#include <linux/delay.h>
-#include <linux/io.h>
-#include <linux/if_ether.h>
-#include <linux/etherdevice.h>
-#include <linux/string.h>
-
-#include <lantiq_soc.h>
-#include <lantiq_platform.h>
-#include <dev-gpio-leds.h>
-#include <dev-gpio-buttons.h>
-
-#include "../machtypes.h"
-#include "devices.h"
-#include "dev-dwc_otg.h"
-
-static u8 ltq_ethaddr[6] = { 0 };
-
-static int __init
-setup_ethaddr(char *str)
-{
-       if (!mac_pton(str, ltq_ethaddr))
-               memset(ltq_ethaddr, 0, 6);
-       return 0;
-}
-__setup("ethaddr=", setup_ethaddr);
-
-static struct mtd_partition h201l_partitions[] __initdata =
-{
-       {
-               .name   = "uboot",
-               .offset = 0x0,
-               .size   = 0x20000,
-       },
-       {
-               .name   = "uboot_env",
-               .offset = 0x20000,
-               .size   = 0x10000,
-       },
-       {
-               .name   = "linux",
-               .offset = 0x30000,
-               .size   = 0x7d0000,
-       },
-};
-
-static struct physmap_flash_data h201l_flash_data __initdata = {
-       .nr_parts       = ARRAY_SIZE(h201l_partitions),
-       .parts          = h201l_partitions,
-};
-
-static struct gpio_led
-h201l_leds_gpio[] __initdata = {
-};
-
-static struct gpio_keys_button
-h201l_gpio_keys[] __initdata = {
-};
-
-static struct ltq_eth_data ltq_eth_data = {
-       .mii_mode       = PHY_INTERFACE_MODE_RMII,
-};
-
-static void __init
-h201l_init(void)
-{
-       ltq_register_gpio_stp();
-       ltq_register_nor(&h201l_flash_data);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(h201l_leds_gpio), h201l_leds_gpio);
-       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(h201l_gpio_keys), h201l_gpio_keys);
-
-       if (!is_valid_ether_addr(ltq_ethaddr))
-               random_ether_addr(ltq_ethaddr);
-
-       memcpy(&ltq_eth_data.mac.sa_data, ltq_ethaddr, 6);
-       ltq_register_etop(&ltq_eth_data);
-
-       xway_register_dwc(-1);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_H201L,
-                       "H201L",
-                       "ZTE ZXV10 H201L",
-                       h201l_init);
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-netgear.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-netgear.c
deleted file mode 100644 (file)
index 29b0728..0000000
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- *  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
- *  by the Free Software Foundation.
- *
- *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
- *  Copyright (C) 2012 Pieter Voorthuijsen <p.voorthuijsen@gmail.com>
- */
-
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/physmap.h>
-#include <linux/input.h>
-#include <linux/phy.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/flash.h>
-#include <linux/spi/spi_gpio.h>
-#include <linux/ath9k_platform.h>
-#include <linux/if_ether.h>
-#include <linux/etherdevice.h>
-#include <linux/kobject.h>
-#include <linux/sysfs.h>
-
-#include <lantiq_soc.h>
-#include <irq.h>
-#include <dev-gpio-leds.h>
-#include <dev-gpio-buttons.h>
-#include "dev-wifi-athxk.h"
-
-#include "../machtypes.h"
-#include "devices.h"
-#include "dev-dwc_otg.h"
-#include "pci-ath-fixup.h"
-#include <mtd/mtd-abi.h>
-#include <asm-generic/sizes.h>
-
-static struct mtd_partition dgn3500_partitions[] = {
-       {
-               .name = "u-boot",
-               .offset = 0,
-               .size = 0x10000,
-               .mask_flags = MTD_WRITEABLE,
-       },
-       {
-               .name = "environment",
-               .offset = 0x10000,
-               .size = 0x10000,
-               .mask_flags = MTD_WRITEABLE,
-       },
-       {
-               .name = "calibration",
-               .offset = 0x20000,
-               .size = 0x10000,
-               .mask_flags = MTD_WRITEABLE,
-       },
-       {
-               .name = "linux",
-               .offset = 0x50000,
-               .size = 0xfa0000,
-       },
-};
-
-static struct ltq_pci_data ltq_pci_data = {
-       .clock  = PCI_CLOCK_INT,
-       .gpio   = PCI_GNT1 | PCI_REQ1,
-       .irq    = {
-               [14] = INT_NUM_IM0_IRL0 + 22,
-       },
-};
-
-static struct ltq_eth_data ltq_eth_data = {
-       .mii_mode = PHY_INTERFACE_MODE_MII,
-};
-
-static struct gpio_led
-dgn3500_gpio_leds[] __initdata = {
-       { .name = "soc:green:power", .gpio = 34, .active_low = 1, },
-       { .name = "soc:red:power", .gpio = 39, .active_low = 1, },
-       { .name = "soc:orange:wlan", .gpio = 51, .active_low = 1, },
-       { .name = "soc:green:wps", .gpio = 52, .active_low = 1, },
-       { .name = "soc:green:usb", .gpio = 22, .active_low = 1, },
-       { .name = "soc:green:dsl", .gpio = 4, .active_low = 1, },
-       { .name = "soc:green:internet", .gpio = 2, .active_low = 1, },
-};
-
-static struct gpio_keys_button
-dgn3500_gpio_keys[] __initdata = {
-       {
-               .desc = "wps",
-               .type = EV_KEY,
-               .code = BTN_0,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio = 54,
-               .active_low = 1,
-       },
-       {
-               .desc = "reset",
-               .type = EV_KEY,
-               .code = BTN_1,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio = 36,
-               .active_low = 1,
-       },
-};
-
-#define SPI_GPIO_MRST   16
-#define SPI_GPIO_MTSR   17
-#define SPI_GPIO_CLK    18
-#define SPI_GPIO_CS0    10
-
-static struct spi_gpio_platform_data spi_gpio_data = {
-       .sck            = SPI_GPIO_CLK,
-       .mosi           = SPI_GPIO_MTSR,
-       .miso           = SPI_GPIO_MRST,
-       .num_chipselect = 2,
-};
-
-static struct platform_device spi_gpio_device = {
-       .name                   = "spi_gpio",
-       .dev.platform_data      = &spi_gpio_data,
-};
-
-static struct flash_platform_data spi_flash_data = {
-       .name           = "sflash",
-       .parts          = dgn3500_partitions,
-       .nr_parts       = ARRAY_SIZE(dgn3500_partitions),
-};
-
-static struct spi_board_info spi_flash __initdata = {
-       .modalias               = "m25p80",
-       .bus_num                = 0,
-       .chip_select            = 0,
-       .max_speed_hz           = 10 * 1000 * 1000,
-       .mode                   = SPI_MODE_3,
-       .chip_select            = 0,
-       .controller_data        = (void *) SPI_GPIO_CS0,
-       .platform_data          = &spi_flash_data
-};
-
-static u8 ltq_ethaddr[6] = { 0 };
-
-static int __init setup_ethaddr(char *str)
-{
-       if (!mac_pton(str, ltq_ethaddr))
-               memset(ltq_ethaddr, 0, 6);
-       return 0;
-}
-__setup("ethaddr=", setup_ethaddr);
-
-static u16 dgn3500_eeprom_data[ATH9K_PLAT_EEP_MAX_WORDS] = {0};
-
-static ssize_t ath_eeprom_read(struct file *filp, struct kobject *kobj,
-               struct bin_attribute *attr, char *buf,
-               loff_t offset, size_t count)
-{
-       if (unlikely(offset >= sizeof(dgn3500_eeprom_data)))
-               return 0;
-       if ((offset + count) > sizeof(dgn3500_eeprom_data))
-               count = sizeof(dgn3500_eeprom_data) - offset;
-       if (unlikely(!count))
-               return count;
-
-       memcpy(buf, (char *)(dgn3500_eeprom_data) + offset, count);
-
-       return count;
-}
-
-extern struct ath9k_platform_data ath9k_pdata;
-
-static ssize_t ath_eeprom_write(struct file *filp, struct kobject *kobj,
-               struct bin_attribute *attr, char *buf,
-               loff_t offset, size_t count)
-{
-       int i;
-       char *eeprom_bytes = (char *)dgn3500_eeprom_data;
-
-       if (unlikely(offset >= sizeof(dgn3500_eeprom_data)))
-               return -EFBIG;
-       if ((offset + count) > sizeof(dgn3500_eeprom_data))
-               count = sizeof(dgn3500_eeprom_data) - offset;
-       if (unlikely(!count))
-               return count;
-       if (count % 2)
-               return 0;
-
-       /* The PCI fixup routine requires an endian swap of the calibartion data
-        * stored in flash */
-       for (i = 0; i < count; i += 2) {
-               eeprom_bytes[offset + i + 1] = buf[i];
-               eeprom_bytes[offset + i] = buf[i+1];
-       }
-
-       /* The original data does not contain a checksum. Set the country and
-        * calculate new checksum when all data is received */
-       if ((count + offset) == sizeof(dgn3500_eeprom_data))
-               memcpy(ath9k_pdata.eeprom_data, dgn3500_eeprom_data,
-                               sizeof(ath9k_pdata.eeprom_data));
-
-       return count;
-}
-
-static struct bin_attribute dev_attr_ath_eeprom = {
-       .attr = {
-               .name = "ath_eeprom",
-               .mode = S_IRUGO|S_IWUSR,
-       },
-       .read = ath_eeprom_read,
-       .write = ath_eeprom_write,
-};
-
-static void __init dgn3500_init(void)
-{
-       if (sysfs_create_bin_file(firmware_kobj, &dev_attr_ath_eeprom))
-               printk(KERN_INFO "Failed to create ath eeprom sysfs entry\n");
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(dgn3500_gpio_leds),
-                       dgn3500_gpio_leds);
-       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
-                       ARRAY_SIZE(dgn3500_gpio_keys), dgn3500_gpio_keys);
-       platform_device_register(&spi_gpio_device);
-       ltq_register_pci(&ltq_pci_data);
-       spi_register_board_info(&spi_flash, 1);
-       if (!is_valid_ether_addr(ltq_ethaddr)) {
-               printk(KERN_INFO "MAC invalid using random\n");
-               random_ether_addr(ltq_ethaddr);
-       }
-       memcpy(&ltq_eth_data.mac.sa_data, ltq_ethaddr, 6);
-       ltq_register_etop(&ltq_eth_data);
-       ltq_register_ath9k(dgn3500_eeprom_data, ltq_ethaddr);
-       ltq_pci_ath_fixup(14, dgn3500_eeprom_data);
-       /* The usb power is always enabled, protected by a fuse */
-       xway_register_dwc(-1);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_DGN3500B,
-            "DGN3500B",
-            "Netgear DGN3500B",
-             dgn3500_init);
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-p2601hnfx.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-p2601hnfx.c
deleted file mode 100644 (file)
index 247dfb5..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- *  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
- *  by the Free Software Foundation.
- *
- *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
- */
-
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/leds.h>
-#include <linux/gpio.h>
-#include <linux/gpio_buttons.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/physmap.h>
-#include <linux/input.h>
-#include <linux/etherdevice.h>
-#include <linux/mdio-gpio.h>
-#include <linux/kernel.h>
-#include <linux/delay.h>
-
-#include <lantiq_soc.h>
-#include <lantiq_platform.h>
-#include <dev-gpio-leds.h>
-#include <dev-gpio-buttons.h>
-
-#include "../machtypes.h"
-#include "devices.h"
-#include "dev-dwc_otg.h"
-
-static struct mtd_partition p2601hnfx_partitions[] __initdata =
-{
-       {
-               .name   = "uboot",
-               .offset = 0x0,
-               .size   = 0x20000,
-       },
-       {
-               .name   = "uboot_env",
-               .offset = 0x20000,
-               .size   = 0x20000,
-       },
-       {
-               .name   = "linux",
-               .offset = 0x40000,
-               .size   = 0xfc0000,
-       },
-};
-
-static struct physmap_flash_data p2601hnfx_flash_data __initdata = {
-       .nr_parts       = ARRAY_SIZE(p2601hnfx_partitions),
-       .parts          = p2601hnfx_partitions,
-};
-
-static struct gpio_led
-p2601hnfx_leds_gpio[] __initdata = {
-       { .name = "soc:yellow:phone", .gpio = 216, .active_low = 1 },
-       { .name = "soc:green:phone", .gpio = 217, .active_low = 1 },
-       { .name = "soc:yellow:wifi", .gpio = 218, .active_low = 1 },
-       { .name = "soc:green:power", .gpio = 219, .active_low = 1 },
-       { .name = "soc:red:internet", .gpio = 220, .active_low = 1 },
-       { .name = "soc:green:internet", .gpio = 221, .active_low = 1 },
-       { .name = "soc:green:dsl", .gpio = 222, .active_low = 1 },
-       { .name = "soc:green:wifi", .gpio = 223, .active_low = 1 },
-};
-
-static struct gpio_keys_button
-p2601hnfx_gpio_keys[] __initdata = {
-       {
-               .desc           = "reset",
-               .type           = EV_KEY,
-               .code           = BTN_0,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 53,
-               .active_low     = 1,
-       },
-       {
-               .desc           = "wifi",
-               .type           = EV_KEY,
-               .code           = BTN_1,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio           = 54,
-               .active_low     = 1,
-       },
-};
-
-static struct ltq_eth_data ltq_eth_data = {
-       .mii_mode       = PHY_INTERFACE_MODE_RMII,
-};
-
-static void __init
-p2601hnfx_init(void)
-{
-#define P2601HNFX_USB                  9
-
-       ltq_register_gpio_stp();
-       ltq_register_nor(&p2601hnfx_flash_data);
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(p2601hnfx_leds_gpio), p2601hnfx_leds_gpio);
-       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(p2601hnfx_gpio_keys), p2601hnfx_gpio_keys);
-       ltq_register_etop(&ltq_eth_data);
-       xway_register_dwc(P2601HNFX_USB);
-
-       // enable the ethernet ports on the SoC
-//     ltq_w32((ltq_r32(LTQ_GPORT_P0_CTL) & ~(1 << 17)) | (1 << 18), LTQ_GPORT_P0_CTL);
-//     ltq_w32((ltq_r32(LTQ_GPORT_P1_CTL) & ~(1 << 17)) | (1 << 18), LTQ_GPORT_P1_CTL);
-//     ltq_w32((ltq_r32(LTQ_GPORT_P2_CTL) & ~(1 << 17)) | (1 << 18), LTQ_GPORT_P2_CTL);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_P2601HNFX,
-                       "P2601HNFX",
-                       "ZyXEL P-2601HN-Fx",
-                       p2601hnfx_init);
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-wbmr.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/mach-wbmr.c
deleted file mode 100644 (file)
index a57e092..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- *  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
- *  by the Free Software Foundation.
- *
- *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
- */
-
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/leds.h>
-#include <linux/gpio.h>
-#include <linux/gpio_buttons.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/physmap.h>
-#include <linux/input.h>
-
-#include <lantiq_soc.h>
-#include <irq.h>
-#include <dev-gpio-leds.h>
-#include <dev-gpio-buttons.h>
-
-#include "../machtypes.h"
-#include "devices.h"
-#include "dev-dwc_otg.h"
-
-static struct mtd_partition wbmr_partitions[] =
-{
-       {
-               .name   = "uboot",
-               .offset = 0x0,
-               .size   = 0x40000,
-       },
-       {
-               .name   = "uboot-env",
-               .offset = 0x40000,
-               .size   = 0x20000,
-       },
-       {
-               .name   = "linux",
-               .offset = 0x60000,
-               .size   = 0x1f20000,
-       },
-       {
-               .name   = "calibration",
-               .offset = 0x1fe0000,
-               .size   = 0x20000,
-       },
-};
-
-static struct physmap_flash_data wbmr_flash_data = {
-       .nr_parts       = ARRAY_SIZE(wbmr_partitions),
-       .parts          = wbmr_partitions,
-};
-
-static struct gpio_led
-wbmr_gpio_leds[] __initdata = {
-       { .name = "soc:blue:movie", .gpio = 20, .active_low = 1, },
-       { .name = "soc:red:internet", .gpio = 18, .active_low = 1, },
-       { .name = "soc:green:internet", .gpio = 17, .active_low = 1, },
-       { .name = "soc:green:adsl", .gpio = 16, .active_low = 1, },
-       { .name = "soc:green:wlan", .gpio = 15, .active_low = 1, },
-       { .name = "soc:red:security", .gpio = 14, .active_low = 1, },
-       { .name = "soc:green:power", .gpio = 1, .active_low = 1, },
-       { .name = "soc:red:power", .gpio = 5, .active_low = 1, },
-       { .name = "soc:green:usb", .gpio = 28, .active_low = 1, },
-};
-
-static struct gpio_keys_button
-wbmr_gpio_keys[] __initdata = {
-       {
-               .desc = "aoss",
-               .type = EV_KEY,
-               .code = BTN_0,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio = 0,
-               .active_low = 1,
-       },
-       {
-               .desc = "reset",
-               .type = EV_KEY,
-               .code = BTN_1,
-               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
-               .gpio = 37,
-               .active_low = 1,
-       },
-};
-
-static struct ltq_pci_data ltq_pci_data = {
-       .clock  = PCI_CLOCK_INT,
-       .gpio   = PCI_GNT1 | PCI_REQ1,
-       .irq    = {
-               [14] = INT_NUM_IM0_IRL0 + 22,
-       },
-};
-
-static struct ltq_eth_data ltq_eth_data = {
-       .mii_mode = PHY_INTERFACE_MODE_RGMII,
-};
-
-static void __init
-wbmr_init(void)
-{
-#define WMBR_BRN_MAC                   0x1fd0024
-
-       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(wbmr_gpio_leds), wbmr_gpio_leds);
-       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(wbmr_gpio_keys), wbmr_gpio_keys);
-       ltq_register_nor(&wbmr_flash_data);
-       ltq_register_pci(&ltq_pci_data);
-       memcpy_fromio(&ltq_eth_data.mac.sa_data,
-               (void *)KSEG1ADDR(LTQ_FLASH_START + WMBR_BRN_MAC), 6);
-       ltq_register_etop(&ltq_eth_data);
-       xway_register_dwc(36);
-}
-
-MIPS_MACHINE(LANTIQ_MACH_WBMR,
-                       "WBMR",
-                       "WBMR",
-                       wbmr_init);
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/pci-ath-fixup.c b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/pci-ath-fixup.c
deleted file mode 100644 (file)
index c87ffb2..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- *  Atheros AP94 reference board PCI initialization
- *
- *  Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org>
- *
- *  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
- *  by the Free Software Foundation.
- */
-
-#include <linux/pci.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <lantiq_soc.h>
-
-#define LTQ_PCI_MEM_BASE               0x18000000
-
-struct ath_fixup {
-       u16             *cal_data;
-       unsigned        slot;
-};
-
-static int ath_num_fixups;
-static struct ath_fixup ath_fixups[2];
-
-static void ath_pci_fixup(struct pci_dev *dev)
-{
-       void __iomem *mem;
-       u16 *cal_data = NULL;
-       u16 cmd;
-       u32 bar0;
-       u32 val;
-       unsigned i;
-
-       for (i = 0; i < ath_num_fixups; i++) {
-               if (ath_fixups[i].cal_data == NULL)
-                       continue;
-
-               if (ath_fixups[i].slot != PCI_SLOT(dev->devfn))
-                       continue;
-
-               cal_data = ath_fixups[i].cal_data;
-               break;
-       }
-
-       if (cal_data == NULL)
-               return;
-
-       if (*cal_data != 0xa55a) {
-               pr_err("pci %s: invalid calibration data\n", pci_name(dev));
-               return;
-       }
-
-       pr_info("pci %s: fixup device configuration\n", pci_name(dev));
-
-       mem = ioremap(LTQ_PCI_MEM_BASE, 0x10000);
-       if (!mem) {
-               pr_err("pci %s: ioremap error\n", pci_name(dev));
-               return;
-       }
-
-       pci_read_config_dword(dev, PCI_BASE_ADDRESS_0, &bar0);
-       pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, LTQ_PCI_MEM_BASE);
-       pci_read_config_word(dev, PCI_COMMAND, &cmd);
-       cmd |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
-       pci_write_config_word(dev, PCI_COMMAND, cmd);
-
-       /* set pointer to first reg address */
-       cal_data += 3;
-       while (*cal_data != 0xffff) {
-               u32 reg;
-               reg = *cal_data++;
-               val = *cal_data++;
-               val |= (*cal_data++) << 16;
-
-               ltq_w32(swab32(val), mem + reg);
-               udelay(100);
-       }
-
-       pci_read_config_dword(dev, PCI_VENDOR_ID, &val);
-       dev->vendor = val & 0xffff;
-       dev->device = (val >> 16) & 0xffff;
-
-       pci_read_config_dword(dev, PCI_CLASS_REVISION, &val);
-       dev->revision = val & 0xff;
-       dev->class = val >> 8; /* upper 3 bytes */
-
-       pr_info("pci %s: fixup info: [%04x:%04x] revision %02x class %#08x\n", 
-               pci_name(dev), dev->vendor, dev->device, dev->revision, dev->class);
-
-       pci_read_config_word(dev, PCI_COMMAND, &cmd);
-       cmd &= ~(PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY);
-       pci_write_config_word(dev, PCI_COMMAND, cmd);
-
-       pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, bar0);
-
-       iounmap(mem);
-}
-DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATHEROS, PCI_ANY_ID, ath_pci_fixup);
-
-void __init ltq_pci_ath_fixup(unsigned slot, u16 *cal_data)
-{
-       if (ath_num_fixups >= ARRAY_SIZE(ath_fixups))
-               return;
-
-       ath_fixups[ath_num_fixups].slot = slot;
-       ath_fixups[ath_num_fixups].cal_data = cal_data;
-       ath_num_fixups++;
-}
diff --git a/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/pci-ath-fixup.h b/target/linux/lantiq/files-3.3/arch/mips/lantiq/xway/pci-ath-fixup.h
deleted file mode 100644 (file)
index 095d261..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _PCI_ATH_FIXUP
-#define _PCI_ATH_FIXUP
-
-void ltq_pci_ath_fixup(unsigned slot, u16 *cal_data) __init;
-
-#endif /* _PCI_ATH_FIXUP */
diff --git a/target/linux/lantiq/files/arch/mips/include/asm/mach-lantiq/dev-gpio-buttons.h b/target/linux/lantiq/files/arch/mips/include/asm/mach-lantiq/dev-gpio-buttons.h
new file mode 100644 (file)
index 0000000..adb531c
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ *  Lantiq GPIO button support
+ *
+ *  Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
+ *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
+ *
+ *  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
+ *  by the Free Software Foundation.
+ */
+
+#ifndef _LANTIQ_DEV_GPIO_BUTTONS_H
+#define _LANTIQ_DEV_GPIO_BUTTONS_H
+
+#include <linux/input.h>
+#include <linux/gpio_keys.h>
+
+#define LTQ_KEYS_POLL_INTERVAL         20 /* msecs */
+#define LTQ_KEYS_DEBOUNCE_INTERVAL     (3 * LTQ_KEYS_POLL_INTERVAL)
+
+void ltq_register_gpio_keys_polled(int id,
+                                     unsigned poll_interval,
+                                     unsigned nbuttons,
+                                     struct gpio_keys_button *buttons);
+
+#endif /* _LANTIQ_DEV_GPIO_BUTTONS_H */
diff --git a/target/linux/lantiq/files/arch/mips/include/asm/mach-lantiq/dev-gpio-leds.h b/target/linux/lantiq/files/arch/mips/include/asm/mach-lantiq/dev-gpio-leds.h
new file mode 100644 (file)
index 0000000..d51e496
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ *  Lantiq GPIO LED device support
+ *
+ *  Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
+ *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
+ *
+ *  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
+ *  by the Free Software Foundation.
+ */
+
+#ifndef _LANTIQ_DEV_LEDS_GPIO_H
+#define _LANTIQ_DEV_LEDS_GPIO_H
+
+#include <linux/leds.h>
+
+void ltq_add_device_gpio_leds(int id,
+       unsigned num_leds,
+       struct gpio_led *leds) __init;
+
+#endif /* _LANTIQ_DEV_LEDS_GPIO_H */
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/dev-gpio-buttons.c b/target/linux/lantiq/files/arch/mips/lantiq/dev-gpio-buttons.c
new file mode 100644 (file)
index 0000000..ad25cac
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ *  Lantiq GPIO button support
+ *
+ *  Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
+ *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
+ *
+ *  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
+ *  by the Free Software Foundation.
+ */
+
+#include <linux/init.h>
+#include <linux/slab.h>
+#include <linux/platform_device.h>
+
+#include <dev-gpio-buttons.h>
+
+void __init ltq_register_gpio_keys_polled(int id,
+                                            unsigned poll_interval,
+                                            unsigned nbuttons,
+                                            struct gpio_keys_button *buttons)
+{
+       struct platform_device *pdev;
+       struct gpio_keys_platform_data pdata;
+       struct gpio_keys_button *p;
+       int err;
+
+       p = kmalloc(nbuttons * sizeof(*p), GFP_KERNEL);
+       if (!p)
+               return;
+
+       memcpy(p, buttons, nbuttons * sizeof(*p));
+
+       pdev = platform_device_alloc("gpio-keys-polled", id);
+       if (!pdev)
+               goto err_free_buttons;
+
+       memset(&pdata, 0, sizeof(pdata));
+       pdata.poll_interval = poll_interval;
+       pdata.nbuttons = nbuttons;
+       pdata.buttons = p;
+
+       err = platform_device_add_data(pdev, &pdata, sizeof(pdata));
+       if (err)
+               goto err_put_pdev;
+
+       err = platform_device_add(pdev);
+       if (err)
+               goto err_put_pdev;
+
+       return;
+
+err_put_pdev:
+       platform_device_put(pdev);
+
+err_free_buttons:
+       kfree(p);
+}
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/dev-gpio-leds.c b/target/linux/lantiq/files/arch/mips/lantiq/dev-gpio-leds.c
new file mode 100644 (file)
index 0000000..89dc79d
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ *  Lantiq GPIO LED device support
+ *
+ *  Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
+ *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
+ *
+ *  Parts of this file are based on Atheros' 2.6.15 BSP
+ *
+ *  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
+ *  by the Free Software Foundation.
+ */
+
+#include <linux/init.h>
+#include <linux/slab.h>
+#include <linux/platform_device.h>
+
+#include <dev-gpio-leds.h>
+
+void __init ltq_add_device_gpio_leds(int id, unsigned num_leds,
+                                       struct gpio_led *leds)
+{
+       struct platform_device *pdev;
+       struct gpio_led_platform_data pdata;
+       struct gpio_led *p;
+       int err;
+
+       p = kmalloc(num_leds * sizeof(*p), GFP_KERNEL);
+       if (!p)
+               return;
+
+       memcpy(p, leds, num_leds * sizeof(*p));
+
+       pdev = platform_device_alloc("leds-gpio", id);
+       if (!pdev)
+               goto err_free_leds;
+
+       memset(&pdata, 0, sizeof(pdata));
+       pdata.num_leds = num_leds;
+       pdata.leds = p;
+
+       err = platform_device_add_data(pdev, &pdata, sizeof(pdata));
+       if (err)
+               goto err_put_pdev;
+
+       err = platform_device_add(pdev);
+       if (err)
+               goto err_put_pdev;
+
+       return;
+
+err_put_pdev:
+       platform_device_put(pdev);
+
+err_free_leds:
+       kfree(p);
+}
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/falcon/addon-easy98000.c b/target/linux/lantiq/files/arch/mips/lantiq/falcon/addon-easy98000.c
new file mode 100644 (file)
index 0000000..317ee40
--- /dev/null
@@ -0,0 +1,213 @@
+/*
+ *  EASY98000 CPLD Addon driver
+ *
+ *  Copyright (C) 2011 Thomas Langer <thomas.langer@lantiq.com>
+ *
+ *  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
+ *  by the Free Software Foundation.
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/version.h>
+#include <linux/types.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/errno.h>
+#include <linux/slab.h>
+#include <linux/proc_fs.h>
+#include <linux/seq_file.h>
+
+struct easy98000_reg_cpld {
+       u16 cmdreg1;            /* 0x1 */
+       u16 cmdreg0;            /* 0x0 */
+       u16 idreg0;             /* 0x3 */
+       u16 resreg;             /* 0x2 */
+       u16 intreg;             /* 0x5 */
+       u16 idreg1;             /* 0x4 */
+       u16 ledreg;             /* 0x7 */
+       u16 pcmconconfig;       /* 0x6 */
+       u16 res0;               /* 0x9 */
+       u16 ethledreg;          /* 0x8 */
+       u16 res1[4];            /* 0xa-0xd */
+       u16 cpld1v;             /* 0xf */
+       u16 cpld2v;             /* 0xe */
+};
+static struct easy98000_reg_cpld * const cpld =
+       (struct easy98000_reg_cpld *)(KSEG1 | 0x17c00000);
+#define cpld_r8(reg) (__raw_readw(&cpld->reg) & 0xFF)
+#define cpld_w8(val, reg) __raw_writew((val) & 0xFF, &cpld->reg)
+
+int easy98000_addon_has_dm9000(void)
+{
+       if ((cpld_r8(idreg0) & 0xF) == 1)
+               return 1;
+       return 0;
+}
+
+#if defined(CONFIG_PROC_FS)
+typedef void (*cpld_dump) (struct seq_file *s);
+struct proc_entry {
+       char *name;
+       void *callback;
+};
+
+static int cpld_proc_show ( struct seq_file *s, void *p )
+{
+       cpld_dump dump = s->private;
+
+       if ( dump != NULL )
+               dump(s);
+
+       return 0;
+}
+
+static int cpld_proc_open ( struct inode *inode, struct file *file )
+{
+       return single_open ( file, cpld_proc_show, PDE(inode)->data );
+}
+
+static void cpld_versions_get ( struct seq_file *s )
+{
+       seq_printf(s, "CPLD1: V%d\n", cpld_r8(cpld1v));
+       seq_printf(s, "CPLD2: V%d\n", cpld_r8(cpld2v));
+}
+
+static void cpld_ebu_module_get ( struct seq_file *s )
+{
+       u8 addon_id;
+
+       addon_id = cpld_r8(idreg0) & 0xF;
+       switch (addon_id) {
+       case 0xF: /* nothing connected */
+               break;
+       case 1:
+               seq_printf(s, "Ethernet Controller module (dm9000)\n");
+               break;
+       default:
+               seq_printf(s, "Unknown EBU module (EBU_ID=0x%02X)\n", addon_id);
+               break;
+       }
+}
+
+static void cpld_xmii_module_get ( struct seq_file *s )
+{
+       u8 addon_id;
+       char *mod = NULL;
+
+       addon_id = cpld_r8(idreg1) & 0xF;
+       switch (addon_id) {
+       case 0xF:
+               mod = "no module";
+               break;
+       case 0x1:
+               mod = "RGMII module";
+               break;
+       case 0x4:
+               mod = "GMII MAC Mode (XWAY TANTOS-3G)";
+               break;
+       case 0x6:
+               mod = "TMII MAC Mode (XWAY TANTOS-3G)";
+               break;
+       case 0x8:
+               mod = "GMII PHY module";
+               break;
+       case 0x9:
+               mod = "MII PHY module";
+               break;
+       case 0xA:
+               mod = "RMII PHY module";
+               break;
+       default:
+               break;
+       }
+       if (mod)
+               seq_printf(s, "%s\n", mod);
+       else
+               seq_printf(s, "unknown xMII module (xMII_ID=0x%02X)\n", addon_id);
+}
+
+static struct proc_entry proc_entries[] = {
+       {"versions",    cpld_versions_get},
+       {"ebu",         cpld_ebu_module_get},
+       {"xmii",        cpld_xmii_module_get},
+};
+
+static struct file_operations ops = {
+       .owner   = THIS_MODULE,
+       .open    = cpld_proc_open,
+       .read    = seq_read,
+       .llseek  = seq_lseek,
+       .release = single_release,
+};
+
+static void cpld_proc_entry_create(struct proc_dir_entry *parent_node,
+                                  struct proc_entry *proc_entry)
+{
+       proc_create_data ( proc_entry->name, (S_IFREG | S_IRUGO), parent_node,
+                          &ops, proc_entry->callback);
+}
+
+static int cpld_proc_install(void)
+{
+       struct proc_dir_entry *driver_proc_node;
+
+       driver_proc_node = proc_mkdir("cpld", NULL);
+       if (driver_proc_node != NULL) {
+               int i;
+               for (i = 0; i < ARRAY_SIZE(proc_entries); i++)
+                       cpld_proc_entry_create(driver_proc_node,
+                                             &proc_entries[i]);
+       } else {
+               printk("cannot create proc entry");
+               return -1;
+       }
+       return 0;
+}
+#else
+static inline int cpld_proc_install(void) {}
+#endif
+
+static int easy98000_addon_probe(struct platform_device *pdev)
+{
+       return cpld_proc_install();
+}
+
+static int easy98000_addon_remove(struct platform_device *pdev)
+{
+#if defined(CONFIG_PROC_FS)
+       char buf[64];
+       int i;
+
+       for (i = 0; i < sizeof(proc_entries) / sizeof(proc_entries[0]); i++) {
+               sprintf(buf, "cpld/%s", proc_entries[i].name);
+               remove_proc_entry(buf, 0);
+       }
+       remove_proc_entry("cpld", 0);
+#endif
+       return 0;
+}
+
+static struct platform_driver easy98000_addon_driver = {
+       .probe = easy98000_addon_probe,
+       .remove = __devexit_p(easy98000_addon_remove),
+       .driver = {
+               .name = "easy98000_addon",
+               .owner = THIS_MODULE,
+       },
+};
+
+int __init easy98000_addon_init(void)
+{
+       return platform_driver_register(&easy98000_addon_driver);
+}
+
+void __exit easy98000_addon_exit(void)
+{
+       platform_driver_unregister(&easy98000_addon_driver);
+}
+
+module_init(easy98000_addon_init);
+module_exit(easy98000_addon_exit);
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/falcon/dev-leds-easy98000-cpld.c b/target/linux/lantiq/files/arch/mips/lantiq/falcon/dev-leds-easy98000-cpld.c
new file mode 100644 (file)
index 0000000..94622cf
--- /dev/null
@@ -0,0 +1,161 @@
+/*
+ *  EASY98000 CPLD LED driver
+ *
+ *  Copyright (C) 2010 Ralph Hempel <ralph.hempel@lantiq.com>
+ *
+ *  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
+ *  by the Free Software Foundation.
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/version.h>
+#include <linux/types.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/module.h>
+#include <linux/errno.h>
+#include <linux/leds.h>
+#include <linux/slab.h>
+
+#include "dev-leds-easy98000-cpld.h"
+
+const char *led_name[8] = {
+       "ge0_act",
+       "ge0_link",
+       "ge1_act",
+       "ge1_link",
+       "fe2_act",
+       "fe2_link",
+       "fe3_act",
+       "fe3_link"
+};
+
+#define cpld_base7                     ((u16 *)(KSEG1 | 0x17c0000c))
+#define cpld_base8                     ((u16 *)(KSEG1 | 0x17c00012))
+
+#define ltq_r16(reg)                   __raw_readw(reg)
+#define ltq_w16(val, reg)              __raw_writew(val, reg)
+
+struct cpld_led_dev {
+       struct led_classdev     cdev;
+       u8                      mask;
+       u16                     *base;
+};
+
+struct cpld_led_drvdata {
+       struct cpld_led_dev     *led_devs;
+       int                     num_leds;
+};
+
+void led_set(u8 mask, u16 *base)
+{
+       ltq_w16(ltq_r16(base) | mask, base);
+}
+
+void led_clear(u8 mask, u16 *base)
+{
+       ltq_w16(ltq_r16(base) & (~mask), base);
+}
+
+void led_blink_clear(u8 mask, u16 *base)
+{
+       led_clear(mask, base);
+}
+
+static void led_brightness(struct led_classdev *led_cdev,
+                              enum led_brightness value)
+{
+       struct cpld_led_dev *led_dev =
+           container_of(led_cdev, struct cpld_led_dev, cdev);
+
+       if (value)
+               led_set(led_dev->mask, led_dev->base);
+       else
+               led_clear(led_dev->mask, led_dev->base);
+}
+
+static int led_probe(struct platform_device *pdev)
+{
+       int i;
+       char name[32];
+       struct cpld_led_drvdata *drvdata;
+       int ret = 0;
+
+       drvdata = kzalloc(sizeof(struct cpld_led_drvdata) +
+                         sizeof(struct cpld_led_dev) * MAX_LED,
+                         GFP_KERNEL);
+       if (!drvdata)
+               return -ENOMEM;
+
+       drvdata->led_devs = (struct cpld_led_dev *) &drvdata[1];
+
+       for (i = 0; i < MAX_LED; i++) {
+               struct cpld_led_dev *led_dev = &drvdata->led_devs[i];
+               led_dev->cdev.brightness_set = led_brightness;
+               led_dev->cdev.default_trigger = NULL;
+               led_dev->mask = 1 << (i % 8);
+               if(i < 8) {
+                       sprintf(name, "easy98000-cpld:%s", led_name[i]);
+                       led_dev->base = cpld_base8;
+               } else {
+                       sprintf(name, "easy98000-cpld:red:%d", i-8);
+                       led_dev->base = cpld_base7;
+               }
+               led_dev->cdev.name = name;
+               ret = led_classdev_register(&pdev->dev, &led_dev->cdev);
+               if (ret)
+                       goto err;
+       }
+       platform_set_drvdata(pdev, drvdata);
+       return 0;
+
+err:
+       printk("led_probe: 3\n");
+       for (i = i - 1; i >= 0; i--)
+               led_classdev_unregister(&drvdata->led_devs[i].cdev);
+
+       kfree(drvdata);
+       return ret;
+}
+
+static int led_remove(struct platform_device *pdev)
+{
+       int i;
+       struct cpld_led_drvdata *drvdata = platform_get_drvdata(pdev);
+       for (i = 0; i < MAX_LED; i++)
+               led_classdev_unregister(&drvdata->led_devs[i].cdev);
+       kfree(drvdata);
+       return 0;
+}
+
+static struct platform_driver led_driver = {
+       .probe = led_probe,
+       .remove = __devexit_p(led_remove),
+       .driver = {
+                  .name = LED_NAME,
+                  .owner = THIS_MODULE,
+                  },
+};
+
+int __init easy98000_cpld_led_init(void)
+{
+       pr_info(LED_DESC ", Version " LED_VERSION
+               " (c) Copyright 2011, Lantiq Deutschland GmbH\n");
+       return platform_driver_register(&led_driver);
+}
+
+void __exit easy98000_cpld_led_exit(void)
+{
+       platform_driver_unregister(&led_driver);
+}
+
+module_init(easy98000_cpld_led_init);
+module_exit(easy98000_cpld_led_exit);
+
+MODULE_DESCRIPTION(LED_NAME);
+MODULE_DESCRIPTION(LED_DESC);
+MODULE_AUTHOR("Ralph Hempel <ralph.hempel@lantiq.com>");
+MODULE_LICENSE("GPL v2");
+
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/falcon/dev-leds-easy98000-cpld.h b/target/linux/lantiq/files/arch/mips/lantiq/falcon/dev-leds-easy98000-cpld.h
new file mode 100644 (file)
index 0000000..3160189
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ *  EASY98000 CPLD LED driver
+ *
+ *  Copyright (C) 2010 Ralph Hempel <ralph.hempel@lantiq.com>
+ *
+ *  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
+ *  by the Free Software Foundation.
+ *
+ */
+#ifndef _INCLUDE_EASY98000_CPLD_LED_H_
+#define _INCLUDE_EASY98000_CPLD_LED_H_
+
+#define LED_NAME       "easy98000_cpld_led"
+#define LED_DESC       "EASY98000 LED driver"
+#define LED_VERSION    "1.0.0"
+
+#define MAX_LED                16
+
+#endif /* _INCLUDE_EASY98000_CPLD_LED_H_ */
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/falcon/mach-95C3AM1.c b/target/linux/lantiq/files/arch/mips/lantiq/falcon/mach-95C3AM1.c
new file mode 100644 (file)
index 0000000..42a3344
--- /dev/null
@@ -0,0 +1,94 @@
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/i2c-gpio.h>
+
+#include <dev-gpio-leds.h>
+
+#include "../machtypes.h"
+#include "devices.h"
+
+#define BOARD_95C3AM1_GPIO_LED_0 10
+#define BOARD_95C3AM1_GPIO_LED_1 11
+#define BOARD_95C3AM1_GPIO_LED_2 12
+#define BOARD_95C3AM1_GPIO_LED_3 13
+
+static struct mtd_partition board_95C3AM1_partitions[] =
+{
+       {
+               .name   = "uboot",
+               .offset = 0x0,
+               .size   = 0x40000,
+       },
+       {
+               .name   = "uboot_env",
+               .offset = 0x40000,
+               .size   = 0x40000,      /* 2 sectors for redundant env. */
+       },
+       {
+               .name   = "linux",
+               .offset = 0x80000,
+               .size   = 0xF80000,     /* map only 16 MiB */
+       },
+};
+
+static struct flash_platform_data board_95C3AM1_flash_platform_data = {
+       .name = "sflash",
+       .parts = board_95C3AM1_partitions,
+       .nr_parts = ARRAY_SIZE(board_95C3AM1_partitions)
+};
+
+static struct spi_board_info board_95C3AM1_flash_data __initdata = {
+       .modalias               = "m25p80",
+       .bus_num                = 0,
+       .chip_select            = 0,
+       .max_speed_hz           = 10 * 1000 * 1000,
+       .mode                   = SPI_MODE_3,
+       .platform_data          = &board_95C3AM1_flash_platform_data
+};
+
+static struct gpio_led board_95C3AM1_gpio_leds[] __initdata = {
+       {
+               .name           = "power",
+               .gpio           = BOARD_95C3AM1_GPIO_LED_0,
+               .active_low     = 0,
+       }, {
+               .name           = "optical",
+               .gpio           = BOARD_95C3AM1_GPIO_LED_1,
+               .active_low     = 0,
+       }, {
+               .name           = "lan",
+               .gpio           = BOARD_95C3AM1_GPIO_LED_2,
+               .active_low     = 0,
+       }, {
+               .name           = "update",
+               .gpio           = BOARD_95C3AM1_GPIO_LED_3,
+               .active_low     = 0,
+       }
+};
+
+static struct i2c_gpio_platform_data board_95C3AM1_i2c_gpio_data = {
+       .sda_pin        = 107,
+       .scl_pin        = 108,
+};
+
+static struct platform_device board_95C3AM1_i2c_gpio_device = {
+       .name           = "i2c-gpio",
+       .id             = 0,
+       .dev = {
+               .platform_data  = &board_95C3AM1_i2c_gpio_data,
+       }
+};
+
+static void __init board_95C3AM1_init(void)
+{
+       falcon_register_i2c();
+       falcon_register_spi_flash(&board_95C3AM1_flash_data);
+       platform_device_register(&board_95C3AM1_i2c_gpio_device);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(board_95C3AM1_gpio_leds),
+                                               board_95C3AM1_gpio_leds);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_95C3AM1,
+                       "95C3AM1",
+                       "95C3AM1 Board",
+                       board_95C3AM1_init);
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/falcon/mach-easy98020.c b/target/linux/lantiq/files/arch/mips/lantiq/falcon/mach-easy98020.c
new file mode 100644 (file)
index 0000000..4cdfc19
--- /dev/null
@@ -0,0 +1,118 @@
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/leds.h>
+#include <linux/gpio.h>
+#include <linux/gpio_buttons.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/input.h>
+#include <linux/interrupt.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/flash.h>
+
+#include <dev-gpio-leds.h>
+
+#include "../machtypes.h"
+#include "devices.h"
+
+#define EASY98020_GPIO_LED_0 9
+#define EASY98020_GPIO_LED_1 10
+#define EASY98020_GPIO_LED_2 11
+#define EASY98020_GPIO_LED_3 12
+#define EASY98020_GPIO_LED_GE0_ACT 110
+#define EASY98020_GPIO_LED_GE0_LINK 109
+#define EASY98020_GPIO_LED_GE1_ACT 106
+#define EASY98020_GPIO_LED_GE1_LINK 105
+
+static struct mtd_partition easy98020_spi_partitions[] =
+{
+       {
+               .name   = "uboot",
+               .offset = 0x0,
+               .size   = 0x40000,
+       },
+       {
+               .name   = "uboot_env",
+               .offset = 0x40000,
+               .size   = 0x40000,      /* 2 sectors for redundant env. */
+       },
+       {
+               .name   = "linux",
+               .offset = 0x80000,
+               .size   = 0xF80000,     /* map only 16 MiB */
+       },
+};
+
+static struct flash_platform_data easy98020_spi_flash_platform_data = {
+       .name = "sflash",
+       .parts = easy98020_spi_partitions,
+       .nr_parts = ARRAY_SIZE(easy98020_spi_partitions)
+};
+
+static struct spi_board_info easy98020_spi_flash_data __initdata = {
+       .modalias               = "m25p80",
+       .bus_num                = 0,
+       .chip_select            = 0,
+       .max_speed_hz           = 10 * 1000 * 1000,
+       .mode                   = SPI_MODE_3,
+       .platform_data          = &easy98020_spi_flash_platform_data
+};
+
+static struct gpio_led easy98020_gpio_leds[] __initdata = {
+       {
+               .name           = "easy98020:green:0",
+               .gpio           = EASY98020_GPIO_LED_0,
+               .active_low     = 0,
+       }, {
+               .name           = "easy98020:green:1",
+               .gpio           = EASY98020_GPIO_LED_1,
+               .active_low     = 0,
+       }, {
+               .name           = "easy98020:green:2",
+               .gpio           = EASY98020_GPIO_LED_2,
+               .active_low     = 0,
+       }, {
+               .name           = "easy98020:green:3",
+               .gpio           = EASY98020_GPIO_LED_3,
+               .active_low     = 0,
+       }, {
+               .name           = "easy98020:ge0_act",
+               .gpio           = EASY98020_GPIO_LED_GE0_ACT,
+               .active_low     = 0,
+       }, {
+               .name           = "easy98020:ge0_link",
+               .gpio           = EASY98020_GPIO_LED_GE0_LINK,
+               .active_low     = 0,
+       }, {
+               .name           = "easy98020:ge1_act",
+               .gpio           = EASY98020_GPIO_LED_GE1_ACT,
+               .active_low     = 0,
+       }, {
+               .name           = "easy98020:ge1_link",
+               .gpio           = EASY98020_GPIO_LED_GE1_LINK,
+               .active_low     = 0,
+       }
+};
+
+static void __init easy98020_init(void)
+{
+       falcon_register_i2c();
+       falcon_register_spi_flash(&easy98020_spi_flash_data);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(easy98020_gpio_leds),
+                                       easy98020_gpio_leds);
+}
+
+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);
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/dev-dwc_otg.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/dev-dwc_otg.c
new file mode 100644 (file)
index 0000000..56086fa
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Copyright (C) 2010 John Crispin <blogic@openwrt.org>
+ */
+
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/types.h>
+#include <linux/string.h>
+#include <linux/mtd/physmap.h>
+#include <linux/kernel.h>
+#include <linux/reboot.h>
+#include <linux/platform_device.h>
+#include <linux/leds.h>
+#include <linux/etherdevice.h>
+#include <linux/reboot.h>
+#include <linux/time.h>
+#include <linux/io.h>
+#include <linux/gpio.h>
+#include <linux/leds.h>
+
+#include <asm/bootinfo.h>
+#include <asm/irq.h>
+
+#include <lantiq_soc.h>
+#include <lantiq_irq.h>
+#include <lantiq_platform.h>
+
+#define LTQ_USB_IOMEM_BASE 0x1e101000
+#define LTQ_USB_IOMEM_SIZE 0x00001000
+
+static struct resource resources[] =
+{
+       [0] = {
+               .name   = "dwc_otg_membase",
+               .start  = LTQ_USB_IOMEM_BASE,
+               .end    = LTQ_USB_IOMEM_BASE + LTQ_USB_IOMEM_SIZE - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .name   = "dwc_otg_irq",
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static u64 dwc_dmamask = (u32)0x1fffffff;
+
+static struct platform_device platform_dev = {
+       .name = "dwc_otg",
+       .dev = {
+               .dma_mask       = &dwc_dmamask,
+       },
+       .resource               = resources,
+       .num_resources          = ARRAY_SIZE(resources),
+};
+
+int __init
+xway_register_dwc(int pin)
+{
+       struct irq_data d;
+       d.irq = resources[1].start;
+       ltq_enable_irq(&d);
+       resources[1].start = ltq_is_ase() ? LTQ_USB_ASE_INT : LTQ_USB_INT;
+       platform_dev.dev.platform_data = (void*) pin;
+       return platform_device_register(&platform_dev);
+}
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/dev-dwc_otg.h b/target/linux/lantiq/files/arch/mips/lantiq/xway/dev-dwc_otg.h
new file mode 100644 (file)
index 0000000..521fad0
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Copyright (C) 2010 John Crispin <blogic@openwrt.org>
+ */
+
+#ifndef _LTQ_DEV_DWC_H__
+#define _LTQ_DEV_DWC_H__
+
+#include <lantiq_platform.h>
+
+extern void __init xway_register_dwc(int pin);
+
+#endif
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/dev-wifi-athxk.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/dev-wifi-athxk.c
new file mode 100644 (file)
index 0000000..a75abe3
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ *  Copyright (C) 2011 John Crispin <blogic@openwrt.org>
+ *  Copyright (C) 2011 Andrej Vlašić <andrej.vlasic0@gmail.com>
+ *
+ *  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
+ *  by the Free Software Foundation.
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/ath5k_platform.h>
+#include <linux/ath9k_platform.h>
+#include <linux/pci.h>
+
+#include "dev-wifi-athxk.h"
+
+extern int (*ltqpci_plat_dev_init)(struct pci_dev *dev);
+struct ath5k_platform_data ath5k_pdata;
+struct ath9k_platform_data ath9k_pdata = {
+       .led_pin = -1,
+       .endian_check = true,
+};
+
+static int
+ath5k_pci_plat_dev_init(struct pci_dev *dev)
+{
+       dev->dev.platform_data = &ath5k_pdata;
+       return 0;
+}
+
+static int
+ath9k_pci_plat_dev_init(struct pci_dev *dev)
+{
+       dev->dev.platform_data = &ath9k_pdata;
+       return 0;
+}
+
+void __init
+ltq_register_ath5k(u16 *eeprom_data, u8 *macaddr)
+{
+       ath5k_pdata.eeprom_data = eeprom_data;
+       ath5k_pdata.macaddr = macaddr;
+       ltqpci_plat_dev_init = ath5k_pci_plat_dev_init;
+}
+
+void __init
+ltq_register_ath9k(u16 *eeprom_data, u8 *macaddr)
+{
+       memcpy(ath9k_pdata.eeprom_data, eeprom_data, sizeof(ath9k_pdata.eeprom_data));
+       ath9k_pdata.macaddr = macaddr;
+       ltqpci_plat_dev_init = ath9k_pci_plat_dev_init;
+}
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/dev-wifi-athxk.h b/target/linux/lantiq/files/arch/mips/lantiq/xway/dev-wifi-athxk.h
new file mode 100644 (file)
index 0000000..5fdb46b
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ *  Copyright (C) 2011 John Crispin <blogic@openwrt.org>
+ *  Copyright (C) 2011 Andrej Vlašić <andrej.vlasic0@gmail.com>
+ *
+ *  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
+ *  by the Free Software Foundation.
+ */
+
+#ifndef _DEV_WIFI_ATHXK_H__
+#define _DEV_WIFI_ATHXK_H__
+
+extern void ltq_register_ath5k(u16 *eeprom_data, u8 *macaddr);
+extern void ltq_register_ath9k(u16 *eeprom_data, u8 *macaddr);
+
+#endif
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/dev-wifi-rt2x00.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/dev-wifi-rt2x00.c
new file mode 100644 (file)
index 0000000..8e271f0
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ *  Copyright (C) 2011 John Crispin <blogic@openwrt.org>
+ *
+ *  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
+ *  by the Free Software Foundation.
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/rt2x00_platform.h>
+#include <linux/pci.h>
+
+#include "dev-wifi-rt2x00.h"
+
+extern int (*ltqpci_plat_dev_init)(struct pci_dev *dev);
+struct rt2x00_platform_data rt2x00_pdata;
+
+static int
+rt2x00_pci_plat_dev_init(struct pci_dev *dev)
+{
+       dev->dev.platform_data = &rt2x00_pdata;
+       return 0;
+}
+
+void __init
+ltq_register_rt2x00(const char *firmware, const u8 *mac)
+{
+       rt2x00_pdata.eeprom_file_name = kstrdup(firmware, GFP_KERNEL);
+       rt2x00_pdata.mac_address = mac;
+       ltqpci_plat_dev_init = rt2x00_pci_plat_dev_init;
+}
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/dev-wifi-rt2x00.h b/target/linux/lantiq/files/arch/mips/lantiq/xway/dev-wifi-rt2x00.h
new file mode 100644 (file)
index 0000000..941c265
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ *  Copyright (C) 2011 John Crispin <blogic@openwrt.org>
+ *
+ *  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
+ *  by the Free Software Foundation.
+ */
+
+#ifndef _DEV_WIFI_RT2X00_H__
+#define _DEV_WIFI_RT2X00_H__
+
+extern void ltq_register_rt2x00(const char *firmware, const u8 *mac);
+
+#endif
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-arv.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-arv.c
new file mode 100644 (file)
index 0000000..4abb2d5
--- /dev/null
@@ -0,0 +1,788 @@
+/*
+ *  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
+ *  by the Free Software Foundation.
+ *
+ *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/leds.h>
+#include <linux/gpio.h>
+#include <linux/gpio_buttons.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/physmap.h>
+#include <linux/input.h>
+#include <linux/etherdevice.h>
+#include <linux/ath5k_platform.h>
+#include <linux/ath9k_platform.h>
+#include <linux/pci.h>
+
+#include <lantiq_soc.h>
+#include <lantiq_platform.h>
+#include <dev-gpio-leds.h>
+#include <dev-gpio-buttons.h>
+
+#include "../machtypes.h"
+#include "dev-wifi-rt2x00.h"
+#include "dev-wifi-athxk.h"
+#include "devices.h"
+#include "dev-dwc_otg.h"
+#include "pci-ath-fixup.h"
+
+static struct mtd_partition arv45xx_brnboot_partitions[] =
+{
+       {
+               .name   = "brn-boot",
+               .offset = 0x0,
+               .size   = 0x20000,
+       },
+       {
+               .name   = "config",
+               .offset = 0x20000,
+               .size   = 0x30000,
+       },
+       {
+               .name   = "linux",
+               .offset = 0x50000,
+               .size   = 0x390000,
+       },
+       {
+               .name   = "reserved", /* 12-byte signature at 0x3efff4 :/ */
+               .offset = 0x3e0000,
+               .size   = 0x010000,
+       },
+       {
+               .name   = "eeprom",
+               .offset = 0x3f0000,
+               .size   = 0x10000,
+       },
+};
+
+static struct mtd_partition arv75xx_brnboot_partitions[] =
+{
+       {
+               .name   = "brn-boot",
+               .offset = 0x0,
+               .size   = 0x20000,
+       },
+       {
+               .name   = "config",
+               .offset = 0x20000,
+               .size   = 0x40000,
+       },
+       {
+               .name   = "linux",
+               .offset = 0x440000,
+               .size   = 0x3a0000,
+       },
+       {
+               .name   = "reserved", /* 12-byte signature at 0x7efff4 :/ */
+               .offset = 0x7e0000,
+               .size   = 0x010000,
+       },
+       {
+               .name   = "board_config",
+               .offset = 0x7f0000,
+               .size   = 0x10000,
+       },
+};
+
+/*
+ * this is generic configuration for all arv based boards, note that it can be
+ * rewriten in arv_load_nor()
+ */
+static struct mtd_partition arv_partitions[] =
+{
+       {
+               .name   = "uboot",
+               .offset = 0x0,
+               .size   = 0x20000,
+       },
+       {
+               .name   = "uboot_env",
+               .offset = 0x20000,
+               .size   = 0x10000,
+       },
+       {
+               .name   = "linux",
+               .offset = 0x30000,
+               .size   = 0x3c0000,
+       },
+       {
+               .name   = "board_config",
+               .offset = 0x3f0000,
+               .size   = 0x10000,
+       },
+};
+
+static struct physmap_flash_data arv45xx_brnboot_flash_data = {
+       .nr_parts       = ARRAY_SIZE(arv45xx_brnboot_partitions),
+       .parts          = arv45xx_brnboot_partitions,
+};
+
+static struct physmap_flash_data arv75xx_brnboot_flash_data = {
+       .nr_parts       = ARRAY_SIZE(arv75xx_brnboot_partitions),
+       .parts          = arv75xx_brnboot_partitions,
+};
+
+static struct physmap_flash_data arv_flash_data = {
+       .nr_parts       = ARRAY_SIZE(arv_partitions),
+       .parts          = arv_partitions,
+};
+
+static struct ltq_pci_data ltq_pci_data = {
+       .clock  = PCI_CLOCK_EXT,
+       .gpio   = PCI_GNT1 | PCI_REQ1,
+       .irq    = {
+               [14] = INT_NUM_IM0_IRL0 + 22,
+       },
+};
+
+static struct ltq_eth_data ltq_eth_data = {
+       .mii_mode       = PHY_INTERFACE_MODE_RMII,
+};
+
+static struct gpio_led
+arv4510pw_gpio_leds[] __initdata = {
+       { .name = "soc:green:foo", .gpio = 4, .active_low = 1, },
+};
+
+static struct gpio_led
+arv4518pw_gpio_leds[] __initdata = {
+       { .name = "soc:green:power", .gpio = 3, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:adsl", .gpio = 4, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:internet", .gpio = 5, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:wifi", .gpio = 6, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:yellow:wps", .gpio = 7, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:red:fail", .gpio = 8, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:usb", .gpio = 19, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:voip", .gpio = 100, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:fxs1", .gpio = 101, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:fxs2", .gpio = 102, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:fxo", .gpio = 103, .active_low = 1, .default_trigger = "default-on" },
+};
+
+static struct gpio_keys_button
+arv4518pw_gpio_keys[] __initdata = {
+       {
+               .desc           = "wifi",
+               .type           = EV_KEY,
+               .code           = BTN_0,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 28,
+               .active_low     = 1,
+       },
+       {
+               .desc           = "reset",
+               .type           = EV_KEY,
+               .code           = BTN_1,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 30,
+               .active_low     = 1,
+       },
+       {
+               .desc           = "wps",
+               .type           = EV_KEY,
+               .code           = BTN_2,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 29,
+               .active_low     = 1,
+       },
+};
+
+static struct gpio_led
+arv4519pw_gpio_leds[] __initdata = {
+       { .name = "soc:red:power", .gpio = 7, .active_low = 1, },
+       { .name = "soc:green:power", .gpio = 2, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:wifi", .gpio = 6, .active_low = 1, },
+       { .name = "soc:green:adsl", .gpio = 4, .active_low = 1, },
+       { .name = "soc:green:internet", .gpio = 5, .active_low = 1, },
+       { .name = "soc:red:internet", .gpio = 8, .active_low = 1, },
+       { .name = "soc:green:voip", .gpio = 100, .active_low = 1, },
+       { .name = "soc:green:phone1", .gpio = 101, .active_low = 1, },
+       { .name = "soc:green:phone2", .gpio = 102, .active_low = 1, },
+       { .name = "soc:green:fxo", .gpio = 103, .active_low = 1, },
+       { .name = "soc:green:usb", .gpio = 19, .active_low = 1, },
+       { .name = "soc:orange:wps", .gpio = 104, .active_low = 1, },
+       { .name = "soc:green:wps", .gpio = 105, .active_low = 1, },
+       { .name = "soc:red:wps", .gpio = 106, .active_low = 1, },
+
+};
+
+static struct gpio_keys_button
+arv4519pw_gpio_keys[] __initdata = {
+       {
+               .desc           = "reset",
+               .type           = EV_KEY,
+               .code           = BTN_1,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 30,
+               .active_low     = 1,
+       },
+       {
+               .desc           = "wlan",
+               .type           = EV_KEY,
+               .code           = BTN_2,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 28,
+               .active_low     = 1,
+       },
+};
+
+static struct gpio_led
+arv4520pw_gpio_leds[] __initdata = {
+       { .name = "soc:blue:power", .gpio = 3, .active_low = 1, },
+       { .name = "soc:blue:adsl", .gpio = 4, .active_low = 1, },
+       { .name = "soc:blue:internet", .gpio = 5, .active_low = 1, },
+       { .name = "soc:red:power", .gpio = 6, .active_low = 1, },
+       { .name = "soc:yellow:wps", .gpio = 7, .active_low = 1, },
+       { .name = "soc:red:wps", .gpio = 9, .active_low = 1, },
+       { .name = "soc:blue:voip", .gpio = 100, .active_low = 1, },
+       { .name = "soc:blue:fxs1", .gpio = 101, .active_low = 1, },
+       { .name = "soc:blue:fxs2", .gpio = 102, .active_low = 1, },
+       { .name = "soc:blue:fxo", .gpio = 103, .active_low = 1, },
+       { .name = "soc:blue:voice", .gpio = 104, .active_low = 1, },
+       { .name = "soc:blue:usb", .gpio = 105, .active_low = 1, },
+       { .name = "soc:blue:wifi", .gpio = 106, .active_low = 1, },
+};
+
+static struct gpio_led
+arv452cpw_gpio_leds[] __initdata = {
+       { .name = "soc:blue:power", .gpio = 3, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:blue:adsl", .gpio = 4, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:blue:isdn", .gpio = 5, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:red:power", .gpio = 6, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:yellow:wps", .gpio = 7, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:red:wps", .gpio = 9, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:blue:fxs1", .gpio = 100, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:blue:fxs2", .gpio = 101, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:blue:wps", .gpio = 102, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:blue:fxo", .gpio = 103, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:blue:voice", .gpio = 104, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:blue:usb", .gpio = 105, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:blue:wifi", .gpio = 106, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:blue:internet", .gpio = 108, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:red:internet", .gpio = 109, .active_low = 1, .default_trigger = "default-on" },
+};
+
+static struct gpio_led
+arv4525pw_gpio_leds[] __initdata = {
+       { .name = "soc:green:dsl", .gpio = 6, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:wifi", .gpio = 8, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:online", .gpio = 9, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:fxs-internet", .gpio = 5, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:fxs-festnetz", .gpio = 4, .active_low = 1, .default_trigger = "default-on" },
+};
+
+#define ARV4525PW_PHYRESET     13
+#define ARV4525PW_RELAY                31
+
+static struct gpio
+arv4525pw_gpios[] __initdata = {
+       { ARV4525PW_PHYRESET,   GPIOF_OUT_INIT_HIGH, "phyreset" },
+       { ARV4525PW_RELAY,      GPIOF_OUT_INIT_HIGH, "relay"    },
+};
+
+
+static struct gpio_led
+arv752dpw22_gpio_leds[] __initdata = {
+       { .name = "soc:blue:power", .gpio = 3, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:red:internet", .gpio = 5, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:red:power", .gpio = 6, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:red:wps", .gpio = 8, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:red:fxo", .gpio = 103, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:red:voice", .gpio = 104, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:usb", .gpio = 105, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:wifi", .gpio = 106, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:wifi1", .gpio = 107, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:blue:wifi", .gpio = 108, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:blue:wifi1", .gpio = 109, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:eth1", .gpio = 111, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:eth2", .gpio = 112, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:eth3", .gpio = 113, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:eth4", .gpio = 114, .active_low = 1, .default_trigger = "default-on", },
+};
+
+static struct gpio_keys_button
+arv752dpw22_gpio_keys[] __initdata = {
+       {
+               .desc           = "btn0",
+               .type           = EV_KEY,
+               .code           = BTN_0,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 12,
+               .active_low     = 1,
+       },
+       {
+               .desc           = "btn1",
+               .type           = EV_KEY,
+               .code           = BTN_1,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 13,
+               .active_low     = 1,
+       },
+       {
+               .desc           = "btn2",
+               .type           = EV_KEY,
+               .code           = BTN_2,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 28,
+               .active_low     = 1,
+       },
+};
+
+static struct gpio_led
+arv7518pw_gpio_leds[] __initdata = {
+       { .name = "soc:red:power", .gpio = 7, .active_low = 1, },
+       { .name = "soc:green:power", .gpio = 2, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:wifi", .gpio = 6, .active_low = 1, },
+       { .name = "soc:green:adsl", .gpio = 4, .active_low = 1, },
+       { .name = "soc:green:internet", .gpio = 5, .active_low = 1, },
+       { .name = "soc:red:internet", .gpio = 8, .active_low = 1, },
+       { .name = "soc:green:voip", .gpio = 100, .active_low = 1, },
+       { .name = "soc:green:phone1", .gpio = 101, .active_low = 1, },
+       { .name = "soc:green:phone2", .gpio = 102, .active_low = 1, },
+       { .name = "soc:orange:fail", .gpio = 103, .active_low = 1, },
+       { .name = "soc:green:usb", .gpio = 19, .active_low = 1, },
+       { .name = "soc:orange:wps", .gpio = 104, .active_low = 1, },
+       { .name = "soc:green:wps", .gpio = 105, .active_low = 1, },
+       { .name = "soc:red:wps", .gpio = 106, .active_low = 1, },
+
+};
+
+static struct gpio_keys_button
+arv7518pw_gpio_keys[] __initdata = {
+       /*{
+               .desc           = "reset",
+               .type           = EV_KEY,
+               .code           = BTN_1,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 23,
+               .active_low     = 1,
+       },*/
+       {
+               .desc           = "wifi",
+               .type           = EV_KEY,
+               .code           = BTN_2,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 25,
+               .active_low     = 1,
+       },
+};
+
+static struct gpio_keys_button
+arv7525pw_gpio_keys[] __initdata = {
+       {
+               .desc           = "restart",
+               .type           = EV_KEY,
+               .code           = BTN_0,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 29,
+               .active_low     = 1,
+       },
+};
+
+static void __init
+arv_load_nor(unsigned int max)
+{
+#define UBOOT_MAGIC    0x27051956
+
+       int i;
+       int sector = -1;
+
+       if (ltq_brn_boot) {
+               if (max == 0x800000)
+                       ltq_register_nor(&arv75xx_brnboot_flash_data);
+               else
+                       ltq_register_nor(&arv45xx_brnboot_flash_data);
+               return;
+       }
+
+       for (i = 1; i < 4 && sector < 0; i++) {
+               unsigned int uboot_magic;
+               memcpy_fromio(&uboot_magic, (void *)KSEG1ADDR(LTQ_FLASH_START) + (i * 0x10000), 4);
+               if (uboot_magic == UBOOT_MAGIC)
+                       sector = i;
+       }
+
+       if (sector < 0)
+               return;
+
+       arv_partitions[0].size = arv_partitions[1].offset = (sector - 1) * 0x10000;
+       arv_partitions[2].offset = arv_partitions[0].size + 0x10000;
+       arv_partitions[2].size = max - arv_partitions[2].offset - 0x10000;
+       arv_partitions[3].offset = max - 0x10000;
+       ltq_register_nor(&arv_flash_data);
+}
+
+static void __init
+arv_register_ethernet(unsigned int mac_addr)
+{
+       memcpy_fromio(&ltq_eth_data.mac.sa_data,
+               (void *)KSEG1ADDR(LTQ_FLASH_START + mac_addr), 6);
+       ltq_register_etop(&ltq_eth_data);
+}
+
+static u16 arv_ath5k_eeprom_data[ATH5K_PLAT_EEP_MAX_WORDS];
+static u16 arv_ath9k_eeprom_data[ATH9K_PLAT_EEP_MAX_WORDS];
+static u8 arv_athxk_eeprom_mac[6];
+
+static void __init
+arv_register_ath5k(unsigned int ath_addr, unsigned int mac_addr)
+{
+       int i;
+
+       memcpy_fromio(arv_athxk_eeprom_mac,
+               (void *)KSEG1ADDR(LTQ_FLASH_START + mac_addr), 6);
+       arv_athxk_eeprom_mac[5]++;
+       memcpy_fromio(arv_ath5k_eeprom_data,
+               (void *)KSEG1ADDR(LTQ_FLASH_START + ath_addr), ATH5K_PLAT_EEP_MAX_WORDS);
+       // swap eeprom bytes
+       for (i = 0; i < ATH5K_PLAT_EEP_MAX_WORDS>>1; i++) {
+               arv_ath5k_eeprom_data[i] = swab16(arv_ath5k_eeprom_data[i]);
+               if (i == 0x17e>>1) {
+                       /*
+                        * regdomain is invalid. it's unknown how did original
+                        * fw convered value to 0x82d4 so for now force to 0x67
+                        */
+                       arv_ath5k_eeprom_data[i] &= 0x0000;
+                       arv_ath5k_eeprom_data[i] |= 0x67;
+               }
+       }
+}
+
+static void __init
+arv_register_ath9k(unsigned int ath_addr, unsigned int mac_addr)
+{
+       int i;
+       u16 *eepdata, sum, el;
+
+       memcpy_fromio(arv_athxk_eeprom_mac,
+               (void *)KSEG1ADDR(LTQ_FLASH_START + mac_addr), 6);
+       arv_athxk_eeprom_mac[5]++;
+       memcpy_fromio(arv_ath9k_eeprom_data,
+               (void *)KSEG1ADDR(LTQ_FLASH_START + ath_addr), ATH9K_PLAT_EEP_MAX_WORDS);
+
+       // force regdomain to 0x67
+       arv_ath9k_eeprom_data[0x208>>1] = 0x67;
+
+       // calculate new checksum
+       sum = arv_ath9k_eeprom_data[0x200>>1];
+       el = sum / sizeof(u16) - 2;  /* skip length and (old) checksum */
+       eepdata = (u16 *) (&arv_ath9k_eeprom_data[0x204>>1]); /* after checksum */
+       for (i = 0; i < el; i++)
+               sum ^= *eepdata++;
+       sum ^= 0xffff;
+       arv_ath9k_eeprom_data[0x202>>1] = sum;
+}
+
+static void __init
+arv3527p_init(void)
+{
+#define ARV3527P_MAC_ADDR              0x3f0016
+
+       ltq_register_gpio_stp();
+       // ltq_add_device_gpio_leds(arv3527p_gpio_leds, ARRAY_SIZE(arv3527p_gpio_leds));
+       arv_load_nor(0x400000);
+       arv_register_ethernet(ARV3527P_MAC_ADDR);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_ARV3527P,
+                       "ARV3527P",
+                       "ARV3527P - Arcor Easybox 401",
+                       arv3527p_init);
+
+static void __init
+arv4510pw_init(void)
+{
+#define ARV4510PW_MAC_ADDR             0x3f0014
+
+       ltq_register_gpio_stp();
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4510pw_gpio_leds), arv4510pw_gpio_leds);
+       arv_load_nor(0x400000);
+       ltq_pci_data.irq[12] = (INT_NUM_IM2_IRL0 + 31);
+       ltq_pci_data.irq[15] = (INT_NUM_IM0_IRL0 + 26);
+       ltq_pci_data.gpio |= PCI_EXIN2 | PCI_REQ2;
+       ltq_register_pci(&ltq_pci_data);
+       arv_register_ethernet(ARV4510PW_MAC_ADDR);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_ARV4510PW,
+                       "ARV4510PW",
+                       "ARV4510PW - Wippies Homebox",
+                       arv4510pw_init);
+
+static void __init
+arv4518pw_init(void)
+{
+#define ARV4518PW_EBU                  0
+#define ARV4518PW_USB                  14
+#define ARV4518PW_SWITCH_RESET         13
+#define ARV4518PW_ATH_ADDR             0x3f0400
+#define ARV4518PW_MADWIFI_ADDR         0xb03f0400
+#define ARV4518PW_MAC_ADDR             0x3f0016
+
+       ltq_register_gpio_ebu(ARV4518PW_EBU);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4518pw_gpio_leds), arv4518pw_gpio_leds);
+       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
+                               ARRAY_SIZE(arv4518pw_gpio_keys), arv4518pw_gpio_keys);
+       arv_load_nor(0x400000);
+       ltq_pci_data.gpio = PCI_GNT2 | PCI_REQ2;
+       ltq_register_pci(&ltq_pci_data);
+       xway_register_dwc(ARV4518PW_USB);
+       arv_register_ethernet(ARV4518PW_MAC_ADDR);
+       arv_register_ath5k(ARV4518PW_ATH_ADDR, ARV4518PW_MAC_ADDR);
+       ltq_register_ath5k(arv_ath5k_eeprom_data, arv_athxk_eeprom_mac);
+
+       gpio_request(ARV4518PW_SWITCH_RESET, "switch");
+       gpio_direction_output(ARV4518PW_SWITCH_RESET, 1);
+       gpio_export(ARV4518PW_SWITCH_RESET, 0);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_ARV4518PW,
+                       "ARV4518PW",
+                       "ARV4518PW - SMC7908A-ISP, Airties WAV-221",
+                       arv4518pw_init);
+
+static void __init
+arv4519pw_init(void)
+{
+#define ARV4519PW_EBU                  0
+#define ARV4519PW_USB                  14
+#define ARV4519PW_RELAY                        31
+#define ARV4519PW_SWITCH_RESET         13
+#define ARV4519PW_ATH_ADDR             0x3f0400
+#define ARV4519PW_MAC_ADDR             0x3f0016
+
+       arv_load_nor(0x400000);
+       ltq_register_gpio_ebu(ARV4519PW_EBU);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4519pw_gpio_leds), arv4519pw_gpio_leds);
+       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
+                               ARRAY_SIZE(arv4519pw_gpio_keys), arv4519pw_gpio_keys);
+       ltq_pci_data.gpio = PCI_GNT2 | PCI_REQ1;
+       ltq_register_pci(&ltq_pci_data);
+       xway_register_dwc(ARV4519PW_USB);
+       arv_register_ethernet(ARV4519PW_MAC_ADDR);
+       arv_register_ath5k(ARV4519PW_ATH_ADDR, ARV4519PW_MAC_ADDR);
+       ltq_register_ath5k(arv_ath5k_eeprom_data, arv_athxk_eeprom_mac);
+
+       gpio_request(ARV4519PW_RELAY, "relay");
+       gpio_direction_output(ARV4519PW_RELAY, 1);
+       gpio_export(ARV4519PW_RELAY, 0);
+
+       gpio_request(ARV4519PW_SWITCH_RESET, "switch");
+       gpio_set_value(ARV4519PW_SWITCH_RESET, 1);
+       gpio_export(ARV4519PW_SWITCH_RESET, 0);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_ARV4519PW,
+                       "ARV4519PW",
+                       "ARV4519PW - Vodafone, Pirelli",
+                       arv4519pw_init);
+
+static void __init
+arv4520pw_init(void)
+{
+#define ARV4520PW_EBU                  0x400
+#define ARV4520PW_USB                  28
+#define ARV4520PW_SWITCH_RESET         110
+#define ARV4520PW_MAC_ADDR             0x3f0016
+
+       ltq_register_gpio_ebu(ARV4520PW_EBU);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4520pw_gpio_leds), arv4520pw_gpio_leds);
+       arv_load_nor(0x400000);
+       ltq_register_pci(&ltq_pci_data);
+       ltq_register_tapi();
+       arv_register_ethernet(ARV4520PW_MAC_ADDR);
+       ltq_register_rt2x00(NULL, (const u8 *) ltq_eth_data.mac.sa_data);
+       xway_register_dwc(ARV4520PW_USB);
+
+       gpio_request(ARV4520PW_SWITCH_RESET, "switch");
+       gpio_set_value(ARV4520PW_SWITCH_RESET, 1);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_ARV4520PW,
+                       "ARV4520PW",
+                       "ARV4520PW - Airties WAV-281, Arcor A800",
+                       arv4520pw_init);
+
+static void __init
+arv452Cpw_init(void)
+{
+#define ARV452CPW_EBU                  0x77f
+#define ARV452CPW_USB                  28
+#define ARV452CPW_RELAY1               31
+#define ARV452CPW_RELAY2               107
+#define ARV452CPW_SWITCH_RESET         110
+#define ARV452CPW_ATH_ADDR             0x3f0400
+#define ARV452CPW_MADWIFI_ADDR         0xb03f0400
+#define ARV452CPW_MAC_ADDR             0x3f0016
+
+       ltq_register_gpio_ebu(ARV452CPW_EBU);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv452cpw_gpio_leds), arv452cpw_gpio_leds);
+       arv_load_nor(0x400000);
+       ltq_register_pci(&ltq_pci_data);
+       xway_register_dwc(ARV452CPW_USB);
+       arv_register_ethernet(ARV452CPW_MAC_ADDR);
+       arv_register_ath5k(ARV452CPW_ATH_ADDR, ARV452CPW_MAC_ADDR);
+       ltq_register_ath5k(arv_ath5k_eeprom_data, arv_athxk_eeprom_mac);
+
+       gpio_request(ARV452CPW_SWITCH_RESET, "switch");
+       gpio_set_value(ARV452CPW_SWITCH_RESET, 1);
+       gpio_export(ARV452CPW_SWITCH_RESET, 0);
+
+       gpio_request(ARV452CPW_RELAY1, "relay1");
+       gpio_direction_output(ARV452CPW_RELAY1, 1);
+       gpio_export(ARV452CPW_RELAY1, 0);
+
+       gpio_request(ARV452CPW_RELAY2, "relay2");
+       gpio_set_value(ARV452CPW_RELAY2, 1);
+       gpio_export(ARV452CPW_RELAY2, 0);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_ARV452CPW,
+                       "ARV452CPW",
+                       "ARV452CPW - Arcor A801",
+                       arv452Cpw_init);
+
+static void __init
+arv4525pw_init(void)
+{
+#define ARV4525PW_ATH_ADDR             0x3f0400
+#define ARV4525PW_MADWIFI_ADDR         0xb03f0400
+#define ARV4525PW_MAC_ADDR             0x3f0016
+
+       arv_load_nor(0x400000);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4525pw_gpio_leds), arv4525pw_gpio_leds);
+       gpio_request_array(arv4525pw_gpios, ARRAY_SIZE(arv4525pw_gpios));
+       gpio_export(ARV4525PW_RELAY, false);
+       gpio_export(ARV4525PW_PHYRESET, false);
+       ltq_pci_data.clock = PCI_CLOCK_INT;
+       ltq_register_pci(&ltq_pci_data);
+       arv_register_ath5k(ARV4525PW_ATH_ADDR, ARV4525PW_MADWIFI_ADDR);
+       ltq_register_ath5k(arv_ath5k_eeprom_data, arv_athxk_eeprom_mac);
+       ltq_eth_data.mii_mode = PHY_INTERFACE_MODE_MII;
+       arv_register_ethernet(ARV4525PW_MAC_ADDR);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_ARV4525PW,
+                       "ARV4525PW",
+                       "ARV4525PW - Speedport W502V",
+                       arv4525pw_init);
+
+static void __init
+arv7525pw_init(void)
+{
+#define ARV7525P_MAC_ADDR      0x3f0016
+
+       arv_load_nor(0x400000);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4525pw_gpio_leds), arv4525pw_gpio_leds);
+       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
+                               ARRAY_SIZE(arv7525pw_gpio_keys), arv7525pw_gpio_keys);
+       ltq_pci_data.clock = PCI_CLOCK_INT;
+       ltq_pci_data.gpio = PCI_GNT1 | PCI_EXIN1;
+       ltq_pci_data.irq[14] = (INT_NUM_IM3_IRL0 + 31);
+       ltq_register_pci(&ltq_pci_data);
+       ltq_eth_data.mii_mode = PHY_INTERFACE_MODE_MII;
+       ltq_register_rt2x00("RT2860.eeprom", NULL);
+       ltq_register_tapi();
+       arv_register_ethernet(ARV7525P_MAC_ADDR);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_ARV7525PW,
+                       "ARV7525PW",
+                       "ARV7525PW - Speedport W303V",
+                       arv7525pw_init);
+
+static void __init
+arv7518pw_init(void)
+{
+#define ARV7518PW_EBU                  0x2
+#define ARV7518PW_USB                  14
+#define ARV7518PW_SWITCH_RESET         13
+#define ARV7518PW_ATH_ADDR             0x7f0400
+#define ARV7518PW_MAC_ADDR             0x7f0016
+
+       arv_load_nor(0x800000);
+       ltq_register_gpio_ebu(ARV7518PW_EBU);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv7518pw_gpio_leds), arv7518pw_gpio_leds);
+       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
+                               ARRAY_SIZE(arv7518pw_gpio_keys), arv7518pw_gpio_keys);
+       ltq_register_pci(&ltq_pci_data);
+       ltq_register_tapi();
+       xway_register_dwc(ARV7518PW_USB);
+       arv_register_ethernet(ARV7518PW_MAC_ADDR);
+       arv_register_ath9k(ARV7518PW_ATH_ADDR, ARV7518PW_MAC_ADDR);
+       ltq_register_ath9k(arv_ath9k_eeprom_data, arv_athxk_eeprom_mac);
+       ltq_pci_ath_fixup(14, arv_ath9k_eeprom_data);
+
+       gpio_request(ARV7518PW_SWITCH_RESET, "switch");
+       gpio_direction_output(ARV7518PW_SWITCH_RESET, 1);
+       gpio_export(ARV7518PW_SWITCH_RESET, 0);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_ARV7518PW,
+                       "ARV7518PW",
+                       "ARV7518PW - ASTORIA",
+                       arv7518pw_init);
+
+static void __init
+arv752dpw22_init(void)
+{
+#define ARV752DPW22_EBU                        0x2
+#define ARV752DPW22_USB                        100
+#define ARV752DPW22_RELAY              101
+#define ARV752DPW22_MAC_ADDR           0x7f0016
+
+       arv_load_nor(0x800000);
+       ltq_register_gpio_ebu(ARV752DPW22_EBU);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv752dpw22_gpio_leds), arv752dpw22_gpio_leds);
+       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
+                               ARRAY_SIZE(arv752dpw22_gpio_keys), arv752dpw22_gpio_keys);
+       ltq_pci_data.irq[15] = (INT_NUM_IM3_IRL0 + 31);
+       ltq_pci_data.gpio |= PCI_EXIN1 | PCI_REQ2;
+       ltq_register_pci(&ltq_pci_data);
+       xway_register_dwc(ARV752DPW22_USB);
+       arv_register_ethernet(ARV752DPW22_MAC_ADDR);
+
+       gpio_request(ARV752DPW22_RELAY, "relay");
+       gpio_set_value(ARV752DPW22_RELAY, 1);
+       gpio_export(ARV752DPW22_RELAY, 0);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_ARV752DPW22,
+                       "ARV752DPW22",
+                       "ARV752DPW22 - Arcor A803",
+                       arv752dpw22_init);
+
+static void __init
+arv752dpw_init(void)
+{
+#define ARV752DPW22_EBU                        0x2
+#define ARV752DPW22_USB                        100
+#define ARV752DPW22_RELAY              101
+#define ARV752DPW22_MAC_ADDR           0x7f0016
+
+       arv_load_nor(0x800000);
+       ltq_register_gpio_ebu(ARV752DPW22_EBU);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv752dpw22_gpio_leds), arv752dpw22_gpio_leds);
+       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(arv752dpw22_gpio_keys), arv752dpw22_gpio_keys);
+       ltq_pci_data.irq[14] = (INT_NUM_IM3_IRL0 + 31);
+       ltq_pci_data.gpio |= PCI_EXIN1 | PCI_REQ2;
+       ltq_register_pci(&ltq_pci_data);
+       xway_register_dwc(ARV752DPW22_USB);
+       ltq_register_rt2x00("RT2860.eeprom", NULL);
+       arv_register_ethernet(ARV752DPW22_MAC_ADDR);
+       gpio_request(ARV752DPW22_RELAY, "relay");
+       gpio_set_value(ARV752DPW22_RELAY, 1);
+       gpio_export(ARV752DPW22_RELAY, 0);
+
+}
+
+MIPS_MACHINE(LANTIQ_MACH_ARV752DPW,
+                       "ARV752DPW",
+                       "ARV752DPW - Arcor A802",
+                       arv752dpw_init);
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-bthomehubv2b.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-bthomehubv2b.c
new file mode 100644 (file)
index 0000000..44fe2f4
--- /dev/null
@@ -0,0 +1,542 @@
+/*
+ *  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
+ *  by the Free Software Foundation.
+ *
+ *  Copyright (C) 2011 Andrej Vlašić
+ *  Copyright (C) 2011 Luka Perkov
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/leds.h>
+#include <linux/gpio.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/physmap.h>
+#include <linux/input.h>
+#include <linux/ath5k_platform.h>
+#include <linux/ath9k_platform.h>
+#include <linux/pci.h>
+#include <linux/phy.h>
+#include <linux/io.h>
+#include <linux/string.h>
+#include <linux/delay.h>
+#include <linux/module.h>
+
+#include <irq.h>
+#include <lantiq_soc.h>
+#include <lantiq_platform.h>
+#include <dev-gpio-leds.h>
+#include <dev-gpio-buttons.h>
+
+#include "../machtypes.h"
+//#include "dev-wifi-ath9k.h"
+#include "devices.h"
+#include "dev-dwc_otg.h"
+
+#undef USE_BTHH_GPIO_INIT
+
+// this reads certain data from u-boot if it's there
+#define USE_UBOOT_ENV_DATA
+
+#define UBOOT_ENV_OFFSET       0x040000
+#define UBOOT_ENV_SIZE         0x010000
+
+#ifdef NAND_ORGLAYOUT
+// this is only here for reference
+// definition of NAND flash area
+static struct mtd_partition bthomehubv2b_nand_partitions[] =
+{
+       {
+               .name   = "ART",
+               .offset = 0x0000000,
+               .size   = 0x0004000,
+       },
+       {
+               .name   = "image1",
+               .offset = 0x0004000,
+               .size   = 0x0E00000,
+       },
+       {
+               .name   = "unknown1",
+               .offset = 0x0E04000,
+               .size   = 0x00FC000,
+       },
+       {
+               .name   = "image2",
+               .offset = 0x0F00000,
+               .size   = 0x0E00000,
+       },
+       {
+               .name   = "unknown2",
+               .offset = 0x1D00000,
+               .size   = 0x0300000,
+       },
+
+};
+#endif
+
+#ifdef NAND_KEEPOPENRG
+// this allows both firmwares to co-exist
+
+static struct mtd_partition bthomehubv2b_nand_partitions[] =
+{
+       {
+               .name   = "art",
+               .offset = 0x0000000,
+               .size   = 0x0004000,
+       },
+       {
+               .name   = "Image1",
+               .offset = 0x0004000,
+               .size   = 0x0E00000,
+       },
+       {
+               .name   = "linux",
+               .offset = 0x0E04000,
+               .size   = 0x11fC000,
+       },
+       {
+               .name   = "wholeflash",
+               .offset = 0x0000000,
+               .size   = 0x2000000,
+       },
+
+};
+#endif
+
+// this gives more jffs2 by overwriting openrg
+
+static struct mtd_partition bthomehubv2b_nand_partitions[] =
+{
+       {
+               .name   = "art",
+               .offset = 0x0000000,
+               .size   = 0x0004000,
+       },
+       {
+               .name   = "linux",
+               .offset = 0x0004000,
+               .size   = 0x1ffC000,
+       },
+       {
+               .name   = "wholeflash",
+               .offset = 0x0000000,
+               .size   = 0x2000000,
+       },
+
+};
+
+extern void __init xway_register_nand(struct mtd_partition *parts, int count);
+
+// end BTHH_USE_NAND
+
+static struct gpio_led
+bthomehubv2b_gpio_leds[] __initdata = {
+
+       { .name = "soc:orange:upgrading",       .gpio = 213, },
+       { .name = "soc:orange:phone",           .gpio = 214, },
+       { .name = "soc:blue:phone",             .gpio = 215, },
+       { .name = "soc:orange:wireless",        .gpio = 216, },
+       { .name = "soc:blue:wireless",          .gpio = 217, },
+       { .name = "soc:red:broadband",          .gpio = 218, },
+       { .name = "soc:orange:broadband",       .gpio = 219, },
+       { .name = "soc:blue:broadband",         .gpio = 220, },
+       { .name = "soc:red:power",              .gpio = 221, },
+       { .name = "soc:orange:power",           .gpio = 222, },
+       { .name = "soc:blue:power",             .gpio = 223, },
+};
+
+static struct gpio_keys_button
+bthomehubv2b_gpio_keys[] __initdata = {
+       {
+               .desc           = "restart",
+               .type           = EV_KEY,
+               .code           = BTN_0,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 2,
+               .active_low     = 1,
+       },
+       {
+               .desc           = "findhandset",
+               .type           = EV_KEY,
+               .code           = BTN_1,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 15,
+               .active_low     = 1,
+       },
+       {
+               .desc           = "wps",
+               .type           = EV_KEY,
+               .code           = BTN_2,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 22,
+               .active_low     = 1,
+       },
+};
+
+// definition of NOR flash area - as per original.
+static struct mtd_partition bthomehubv2b_partitions[] =
+{
+       {
+               .name   = "uboot",
+               .offset = 0x000000,
+               .size   = 0x040000,
+       },
+       {
+               .name   = "uboot_env",
+               .offset = UBOOT_ENV_OFFSET,
+               .size   = UBOOT_ENV_SIZE,
+       },
+       {
+               .name   = "rg_conf_1",
+               .offset = 0x050000,
+               .size   = 0x010000,
+       },
+       {
+               .name   = "rg_conf_2",
+               .offset = 0x060000,
+               .size   = 0x010000,
+       },
+       {
+               .name   = "rg_conf_factory",
+               .offset = 0x070000,
+               .size   = 0x010000,
+       },
+};
+
+
+/* nor flash */
+/* bt homehubv2b has a very small nor flash */
+/* so make it look for a small one, else we get a lot of alias chips identified - */
+/* not a bug problem, but fills the logs. */
+static struct resource bthhv2b_nor_resource =
+       MEM_RES("nor", LTQ_FLASH_START, 0x80000);
+
+static struct platform_device ltq_nor = {
+       .name           = "ltq_nor",
+       .resource       = &bthhv2b_nor_resource,
+       .num_resources  = 1,
+};
+
+static void __init bthhv2b_register_nor(struct physmap_flash_data *data)
+{
+       ltq_nor.dev.platform_data = data;
+       platform_device_register(&ltq_nor);
+}
+
+static struct physmap_flash_data bthomehubv2b_flash_data = {
+       .nr_parts       = ARRAY_SIZE(bthomehubv2b_partitions),
+       .parts          = bthomehubv2b_partitions,
+};
+
+
+
+
+static struct ltq_pci_data ltq_pci_data = {
+       .clock  = PCI_CLOCK_INT,
+       .gpio   = PCI_GNT1 | PCI_REQ1,
+       .irq    = { [14] = INT_NUM_IM0_IRL0 + 22, },
+};
+
+
+
+
+static struct ltq_eth_data ltq_eth_data = {
+       .mii_mode       = PHY_INTERFACE_MODE_MII,
+};
+
+
+
+
+static char __init *get_uboot_env_var(char *haystack, int haystack_len, char *needle, int needle_len) {
+       int i;
+       for (i = 0; i <= haystack_len - needle_len; i++) {
+               if (memcmp(haystack + i, needle, needle_len) == 0) {
+                       return haystack + i + needle_len;
+               }
+       }
+       return NULL;
+}
+
+/*
+ * bthomehubv2b_parse_hex_* are not uniq. in arm/orion there are also duplicates:
+ * dns323_parse_hex_*
+ * TODO: one day write a patch for this :)
+ */
+static int __init bthomehubv2b_parse_hex_nibble(char n) {
+       if (n >= '0' && n <= '9')
+               return n - '0';
+
+       if (n >= 'A' && n <= 'F')
+               return n - 'A' + 10;
+
+       if (n >= 'a' && n <= 'f')
+               return n - 'a' + 10;
+
+       return -1;
+}
+
+static int __init bthomehubv2b_parse_hex_byte(const char *b) {
+       int hi;
+       int lo;
+
+       hi = bthomehubv2b_parse_hex_nibble(b[0]);
+       lo = bthomehubv2b_parse_hex_nibble(b[1]);
+
+       if (hi < 0 || lo < 0)
+               return -1;
+
+       return (hi << 4) | lo;
+}
+
+static int __init bthomehubv2b_register_ethernet(void) {
+       u_int8_t addr[6];
+       int i;
+       char *mac = "01:02:03:04:05:06";
+       int gotmac = 0;
+       char *boardid = "BTHHV2B";
+       int gotboardid = 0;
+
+       char *uboot_env_page;
+       uboot_env_page = ioremap(LTQ_FLASH_START + UBOOT_ENV_OFFSET, UBOOT_ENV_SIZE);
+       if (uboot_env_page)
+       {
+               char *Data = NULL;
+               Data = get_uboot_env_var(uboot_env_page, UBOOT_ENV_SIZE, "\0ethaddr=", 9);
+               if (Data)
+               {
+                       mac = Data;
+               }
+
+               Data = get_uboot_env_var(uboot_env_page, UBOOT_ENV_SIZE, "\0boardid=", 9);
+
+               if (Data)
+                       boardid = Data;
+       }
+       else
+       {
+               printk("bthomehubv2b: Failed to get uboot_env_page");
+       }
+
+       if (!mac) {
+       goto error_fail;
+       }
+
+       if (!boardid) {
+       goto error_fail;
+       }
+
+       /* Sanity check the string we're looking at */
+       for (i = 0; i < 5; i++) {
+       if (*(mac + (i * 3) + 2) != ':') {
+               goto error_fail;
+               }
+       }
+
+       for (i = 0; i < 6; i++) {
+               int byte;
+               byte = bthomehubv2b_parse_hex_byte(mac + (i * 3));
+               if (byte < 0) {
+                       goto error_fail;
+               }
+               addr[i] = byte;
+       }
+
+       if (gotmac)
+               printk("bthomehubv2b: Found ethernet MAC address: ");
+       else
+               printk("bthomehubv2b: using default MAC (pls set ethaddr in u-boot): ");
+
+       for (i = 0; i < 6; i++)
+               printk("%.2x%s", addr[i], (i < 5) ? ":" : ".\n");
+
+       memcpy(&ltq_eth_data.mac.sa_data, addr, 6);
+       ltq_register_etop(&ltq_eth_data);
+
+       //memcpy(&bthomehubv2b_ath5k_eeprom_mac, addr, 6);
+       //bthomehubv2b_ath5k_eeprom_mac[5]++;
+
+       if (gotboardid)
+               printk("bthomehubv2b: Board id is %s.", boardid);
+       else
+               printk("bthomehubv2b: Default Board id is %s.", boardid);
+
+       if (strncmp(boardid, "BTHHV2B", 7) == 0) {
+               // read in dev-wifi-ath9k
+               //memcpy(&bthomehubv2b_ath5k_eeprom_data, sx763_eeprom_data, ATH5K_PLAT_EEP_MAX_WORDS);
+       }
+       else {
+               printk("bthomehubv2b: Board id is unknown, fix uboot_env data.");
+       }
+
+
+       // should not unmap while we are using the ram?
+       if (uboot_env_page)
+               iounmap(uboot_env_page);
+
+       return 0;
+
+error_fail:
+       if (uboot_env_page)
+               iounmap(uboot_env_page);
+       return -EINVAL;
+}
+
+
+#define PORTA2_HW_PASS1 0
+#define PORTA2_HW_PASS1_SC14480 1
+#define PORTA2_HW_PASS2 2
+
+int porta2_hw_revision = -1;
+EXPORT_SYMBOL(porta2_hw_revision);
+
+#define LTQ_GPIO_OUT           0x00
+#define LTQ_GPIO_IN            0x04
+#define LTQ_GPIO_DIR           0x08
+#define LTQ_GPIO_ALTSEL0       0x0C
+#define LTQ_GPIO_ALTSEL1       0x10
+#define LTQ_GPIO_OD            0x14
+#define LTQ_GPIO_PUDSEL                0x1C
+#define LTQ_GPIO_PUDEN         0x20
+
+#ifdef USE_BTHH_GPIO_INIT
+static void bthomehubv2b_board_prom_init(void)
+{
+       int revision = 0;
+       unsigned int gpio = 0;
+       void __iomem *mem = ioremap(LTQ_GPIO0_BASE_ADDR, LTQ_GPIO_SIZE*2);
+
+#define DANUBE_GPIO_P0_OUT (unsigned short *)(mem + LTQ_GPIO_OUT)
+#define DANUBE_GPIO_P0_IN (unsigned short *)(mem + LTQ_GPIO_IN)
+#define DANUBE_GPIO_P0_DIR (unsigned short *)(mem + LTQ_GPIO_DIR)
+#define DANUBE_GPIO_P0_ALTSEL0 (unsigned short *)(mem + LTQ_GPIO_ALTSEL0)
+#define DANUBE_GPIO_P0_ALTSEL1 (unsigned short *)(mem + LTQ_GPIO_ALTSEL1)
+
+#define DANUBE_GPIO_P1_OUT (unsigned short *)(mem + LTQ_GPIO_SIZE + LTQ_GPIO_OUT)
+#define DANUBE_GPIO_P1_IN (unsigned short *)(mem + LTQ_GPIO_SIZE + LTQ_GPIO_IN)
+#define DANUBE_GPIO_P1_DIR (unsigned short *)(mem + LTQ_GPIO_SIZE + LTQ_GPIO_DIR)
+#define DANUBE_GPIO_P1_ALTSEL0 (unsigned short *)(mem + LTQ_GPIO_SIZE + LTQ_GPIO_ALTSEL0)
+#define DANUBE_GPIO_P1_ALTSEL1 (unsigned short *)(mem + LTQ_GPIO_SIZE + LTQ_GPIO_ALTSEL1)
+#define DANUBE_GPIO_P1_OD (unsigned short *)(mem + LTQ_GPIO_SIZE + LTQ_GPIO_OD)
+
+       printk("About to sense board using GPIOs at %8.8X\n", (unsigned int)mem);
+
+
+       /* First detect HW revision of the board. For that we need to set the GPIO
+        * lines according to table 7.2.1/7.2.2 in HSI */
+       *DANUBE_GPIO_P0_OUT = 0x0200;
+       *DANUBE_GPIO_P0_DIR = 0x2610;
+       *DANUBE_GPIO_P0_ALTSEL0 = 0x7812;
+       *DANUBE_GPIO_P0_ALTSEL1 = 0x0000;
+
+       *DANUBE_GPIO_P1_OUT = 0x7008;
+       *DANUBE_GPIO_P1_DIR = 0xF3AE;
+       *DANUBE_GPIO_P1_ALTSEL0 = 0x83A7;
+       *DANUBE_GPIO_P1_ALTSEL1 = 0x0400;
+
+       gpio = (*DANUBE_GPIO_P0_IN & 0xFFFF) | 
+               ((*DANUBE_GPIO_P1_IN & 0xFFFF) << 16);
+
+       revision |= (gpio & (1 << 27)) ? (1 << 0) : 0;
+       revision |= (gpio & (1 << 20)) ? (1 << 1) : 0;
+       revision |= (gpio & (1 << 8)) ? (1 << 2) : 0;
+       revision |= (gpio & (1 << 6)) ? (1 << 3) : 0;
+       revision |= (gpio & (1 << 5)) ? (1 << 4) : 0;
+       revision |= (gpio & (1 << 0)) ? (1 << 5) : 0;
+
+       porta2_hw_revision = revision;
+       printk("PORTA2: detected HW revision %d\n", revision);
+
+       /* Set GPIO lines according to HW revision. */
+       /* !!! Note that we are setting SPI_CS5 (GPIO 9) to be GPIO out with value
+        * of HIGH since the FXO does not use the SPI CS mechanism, it does it
+        * manually by controlling the GPIO line. We need the CS line to be disabled
+        * (HIGH) until needed since it will intefere with other devices on the SPI
+        * bus. */
+       *DANUBE_GPIO_P0_OUT = 0x0200;
+       /*
+        * During the manufacturing process a different machine takes over uart0
+        * so set it as input (so it wouldn't drive the line)
+        */
+#define cCONFIG_SHC_BT_MFG_TEST 0
+       *DANUBE_GPIO_P0_DIR = 0x2671 | (cCONFIG_SHC_BT_MFG_TEST ? 0 : (1 << 12));
+
+       if (revision == PORTA2_HW_PASS1_SC14480 || revision == PORTA2_HW_PASS2)
+               *DANUBE_GPIO_P0_ALTSEL0 = 0x7873;
+       else
+               *DANUBE_GPIO_P0_ALTSEL0 = 0x3873;
+
+       *DANUBE_GPIO_P0_ALTSEL1 = 0x0001;
+
+
+       //###################################################################################    
+       // Register values before patch
+       // P1_ALTSEL0 = 0x83A7
+       // P1_ALTSEL1 = 0x0400
+       // P1_OU        T     = 0x7008
+       // P1_DIR     = 0xF3AE
+       // P1_OD      = 0xE3Fc
+       printk("\nApplying Patch for CPU1 IRQ Issue\n");
+       *DANUBE_GPIO_P1_ALTSEL0 &= ~(1<<12);  // switch P1.12 (GPIO28) to GPIO functionality
+       *DANUBE_GPIO_P1_ALTSEL1 &= ~(1<<12);  // switch P1.12 (GPIO28) to GPIO functionality
+       *DANUBE_GPIO_P1_OUT     &= ~(1<<12);  // set P1.12 (GPIO28) to 0
+       *DANUBE_GPIO_P1_DIR     |= (1<<12);   // configure P1.12 (GPIO28) as output 
+       *DANUBE_GPIO_P1_OD      |= (1<<12);   // activate Push/Pull mode 
+       udelay(100);                          // wait a little bit (100us)
+       *DANUBE_GPIO_P1_OD      &= ~(1<<12);  // switch back from Push/Pull to Open Drain
+       // important: before! setting output to 1 (3,3V) the mode must be switched 
+       // back to Open Drain because the reset pin of the SC14488 is internally 
+       // pulled to 1,8V
+       *DANUBE_GPIO_P1_OUT     |= (1<<12);   // set output P1.12 (GPIO28) to 1
+       // Register values after patch, should be the same as before
+       // P1_ALTSEL0 = 0x83A7
+       // P1_ALTSEL1 = 0x0400
+       // P1_OUT     = 0x7008
+       // P1_DIR     = 0xF3AE
+       // P1_OD      = 0xE3Fc
+       //###################################################################################
+
+
+       *DANUBE_GPIO_P1_OUT = 0x7008;
+       *DANUBE_GPIO_P1_DIR = 0xEBAE | (revision == PORTA2_HW_PASS2 ? 0x1000 : 0);
+       *DANUBE_GPIO_P1_ALTSEL0 = 0x8BA7;
+       *DANUBE_GPIO_P1_ALTSEL1 = 0x0400;
+
+       iounmap(mem);
+}
+#endif
+static void __init bthomehubv2b_init(void) {
+#define bthomehubv2b_USB               13
+
+       // read the board version
+#ifdef USE_BTHH_GPIO_INIT
+       bthomehubv2b_board_prom_init();
+#endif
+
+       // register extra GPPOs used by LEDs as GPO 0x200+
+       ltq_register_gpio_stp();
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(bthomehubv2b_gpio_leds), bthomehubv2b_gpio_leds);
+       bthhv2b_register_nor(&bthomehubv2b_flash_data);
+       xway_register_nand(bthomehubv2b_nand_partitions, ARRAY_SIZE(bthomehubv2b_nand_partitions));
+       ltq_register_pci(&ltq_pci_data);
+       ltq_register_tapi();
+       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(bthomehubv2b_gpio_keys), bthomehubv2b_gpio_keys);
+//     ltq_register_ath9k();
+       xway_register_dwc(bthomehubv2b_USB);
+       bthomehubv2b_register_ethernet();
+
+}
+
+MIPS_MACHINE(LANTIQ_MACH_BTHOMEHUBV2BOPENRG,
+       "BTHOMEHUBV2BOPENRG",
+       "BTHOMEHUBV2B - BT Homehub V2.0 Type B with OpenRG image retained",
+       bthomehubv2b_init);
+
+MIPS_MACHINE(LANTIQ_MACH_BTHOMEHUBV2B,
+       "BTHOMEHUBV2B",
+       "BTHOMEHUBV2B - BT Homehub V2.0 Type B",
+       bthomehubv2b_init);
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-easy50601.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-easy50601.c
new file mode 100644 (file)
index 0000000..e76c29a
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ *  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
+ *  by the Free Software Foundation.
+ *
+ *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/physmap.h>
+#include <linux/input.h>
+
+#include <lantiq.h>
+
+#include "../machtypes.h"
+#include "devices.h"
+
+static struct mtd_partition easy50601_partitions[] = {
+       {
+               .name   = "uboot",
+               .offset = 0x0,
+               .size   = 0x10000,
+       },
+       {
+               .name   = "uboot_env",
+               .offset = 0x10000,
+               .size   = 0x10000,
+       },
+       {
+               .name   = "linux",
+               .offset = 0x20000,
+               .size   = 0x3d0000,
+       },
+};
+
+static struct physmap_flash_data easy50601_flash_data = {
+       .nr_parts       = ARRAY_SIZE(easy50601_partitions),
+       .parts          = easy50601_partitions,
+};
+
+static struct ltq_eth_data ltq_eth_data = {
+       .mii_mode = -1, /* use EPHY */
+};
+
+static void __init
+easy50601_init(void)
+{
+       ltq_register_nor(&easy50601_flash_data);
+       ltq_register_etop(&ltq_eth_data);
+}
+
+MIPS_MACHINE(LTQ_MACH_EASY50601,
+                       "EASY50601",
+                       "EASY50601 Eval Board",
+                       easy50601_init);
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-easy50712.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-easy50712.c
new file mode 100644 (file)
index 0000000..581aa76
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ *  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
+ *  by the Free Software Foundation.
+ *
+ *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/physmap.h>
+#include <linux/input.h>
+#include <linux/phy.h>
+
+#include <lantiq_soc.h>
+#include <irq.h>
+
+#include "../machtypes.h"
+#include "devices.h"
+
+static struct mtd_partition easy50712_partitions[] = {
+       {
+               .name   = "uboot",
+               .offset = 0x0,
+               .size   = 0x10000,
+       },
+       {
+               .name   = "uboot_env",
+               .offset = 0x10000,
+               .size   = 0x10000,
+       },
+       {
+               .name   = "linux",
+               .offset = 0x20000,
+               .size   = 0x3d0000,
+       },
+};
+
+static struct physmap_flash_data easy50712_flash_data = {
+       .nr_parts       = ARRAY_SIZE(easy50712_partitions),
+       .parts          = easy50712_partitions,
+};
+
+static struct ltq_pci_data ltq_pci_data = {
+       .clock  = PCI_CLOCK_INT,
+       .gpio   = PCI_GNT1 | PCI_REQ1,
+       .irq    = {
+               [14] = INT_NUM_IM0_IRL0 + 22,
+       },
+};
+
+static struct ltq_eth_data ltq_eth_data = {
+       .mii_mode = PHY_INTERFACE_MODE_MII,
+};
+
+static void __init
+easy50712_init(void)
+{
+       ltq_register_gpio_stp();
+       ltq_register_nor(&easy50712_flash_data);
+       ltq_register_pci(&ltq_pci_data);
+       ltq_register_etop(&ltq_eth_data);
+       ltq_register_tapi();
+}
+
+MIPS_MACHINE(LTQ_MACH_EASY50712,
+                       "EASY50712",
+                       "EASY50712 Eval Board",
+                       easy50712_init);
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-fritz_ar9.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-fritz_ar9.c
new file mode 100644 (file)
index 0000000..5bd6341
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+ *  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
+ *  by the Free Software Foundation.
+ *
+ *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/physmap.h>
+#include <linux/input.h>
+#include <linux/phy.h>
+#include <linux/spi/spi_gpio.h>
+#include <linux/spi/flash.h>
+
+#include <lantiq_soc.h>
+#include <irq.h>
+
+#include "../machtypes.h"
+#include "devices.h"
+#include "dev-ifxhcd.h"
+#include "dev-gpio-leds.h"
+#include "dev-gpio-buttons.h"
+
+static struct mtd_partition fritz7320_partitions[] = {
+       {
+               .name   = "urlader",
+               .offset = 0x0,
+               .size   = 0x20000,
+       },
+       {
+               .name   = "linux",
+               .offset = 0x20000,
+               .size   = 0xf60000,
+       },
+       {
+               .name   = "tffs (1)",
+               .offset = 0xf80000,
+               .size   = 0x40000,
+       },
+       {
+               .name   = "tffs (2)",
+               .offset = 0xfc0000,
+               .size   = 0x40000,
+       },
+};
+
+static struct physmap_flash_data fritz7320_flash_data = {
+       .nr_parts       = ARRAY_SIZE(fritz7320_partitions),
+       .parts          = fritz7320_partitions,
+};
+
+static struct gpio_led
+fritz7320_gpio_leds[] __initdata = {
+       { .name = "soc:green:power", .gpio = 44, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:internet", .gpio = 47, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:dect", .gpio = 38, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:wlan", .gpio = 37, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:dual1", .gpio = 35, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:red:dual2", .gpio = 45, .active_low = 1, .default_trigger = "default-on" },
+};
+
+static struct gpio_keys_button
+fritz7320_gpio_keys[] __initdata = {
+       {
+               .desc = "wifi",
+               .type = EV_KEY,
+               .code = BTN_0,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio = 1,
+               .active_low = 1,
+       },
+       {
+               .desc = "dect",
+               .type = EV_KEY,
+               .code = BTN_1,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio = 2,
+               .active_low = 1,
+       },
+};
+
+static struct ltq_pci_data ltq_pci_data = {
+       .clock  = PCI_CLOCK_INT,
+       .gpio   = PCI_GNT1 | PCI_REQ1,
+       .irq    = {
+               [14] = INT_NUM_IM0_IRL0 + 22,
+       },
+};
+
+static struct ltq_eth_data ltq_eth_data = {
+       .mii_mode       = PHY_INTERFACE_MODE_RMII,
+};
+
+static int usb_pins[2] = { 50, 51 };
+
+static void __init
+fritz7320_init(void)
+{
+       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
+               ARRAY_SIZE(fritz7320_gpio_keys), fritz7320_gpio_keys);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(fritz7320_gpio_leds), fritz7320_gpio_leds);
+       ltq_register_pci(&ltq_pci_data);
+       ltq_register_etop(&ltq_eth_data);
+       ltq_register_nor(&fritz7320_flash_data);
+       xway_register_hcd(usb_pins);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_FRITZ7320,
+                       "FRITZ7320",
+                       "FRITZ!BOX 7320",
+                       fritz7320_init);
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-fritz_vr9.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-fritz_vr9.c
new file mode 100644 (file)
index 0000000..293c7b7
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ *  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
+ *  by the Free Software Foundation.
+ *
+ *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/physmap.h>
+#include <linux/input.h>
+#include <linux/phy.h>
+#include <linux/spi/spi_gpio.h>
+#include <linux/spi/flash.h>
+
+#include <lantiq_soc.h>
+#include <irq.h>
+
+#include "../machtypes.h"
+#include "devices.h"
+#include "dev-ifxhcd.h"
+#include "dev-gpio-leds.h"
+#include "dev-gpio-buttons.h"
+
+static struct mtd_partition fritz3370_partitions[] = {
+       {
+               .name   = "linux",
+               .offset = 0x0,
+               .size   = 0x400000,
+       },
+       {
+               .name   = "filesystem",
+               .offset = 0x400000,
+               .size   = 0x3000000,
+       },
+       {
+               .name   = "reserved-kernel",
+               .offset = 0x3400000,
+               .size   = 0x400000,
+       },
+       {
+               .name   = "reserved",
+               .offset = 0x3800000,
+               .size   = 0x3000000,
+       },
+       {
+               .name   = "config",
+               .offset = 0x6800000,
+               .size   = 0x200000,
+       },
+       {
+               .name   = "nand-filesystem",
+               .offset = 0x6a00000,
+               .size   = 0x1600000,
+       },
+};
+
+static struct mtd_partition spi_flash_partitions[] = {
+       {
+               .name   = "urlader",
+               .offset = 0x0,
+               .size   = 0x20000,
+       },
+       {
+               .name   = "tffs",
+               .offset = 0x20000,
+               .size   = 0x10000,
+       },
+       {
+               .name   = "tffs",
+               .offset = 0x30000,
+               .size   = 0x10000,
+       },
+};
+
+static struct gpio_led
+fritz3370_gpio_leds[] __initdata = {
+       { .name = "soc:green:1", .gpio = 32, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:red:2", .gpio = 33, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:red:3", .gpio = 34, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:4", .gpio = 35, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:5", .gpio = 36, .active_low = 1, .default_trigger = "default-on" },
+       { .name = "soc:green:6", .gpio = 47, .active_low = 1, .default_trigger = "default-on" },
+};
+
+static struct gpio_keys_button
+fritz3370_gpio_keys[] __initdata = {
+       {
+               .desc = "wifi",
+               .type = EV_KEY,
+               .code = BTN_0,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio = 29,
+               .active_low = 1,
+       },
+};
+
+static struct ltq_eth_data ltq_eth_data = {
+       .mii_mode       = PHY_INTERFACE_MODE_RMII,
+};
+
+static int usb_pins[2] = { 5, 14 };
+
+#define SPI_GPIO_MRST  16
+#define SPI_GPIO_MTSR  17
+#define SPI_GPIO_CLK   18
+#define SPI_GPIO_CS0   10
+
+static struct spi_gpio_platform_data spi_gpio_data = {
+       .sck            = SPI_GPIO_CLK,
+       .mosi           = SPI_GPIO_MTSR,
+       .miso           = SPI_GPIO_MRST,
+       .num_chipselect = 2,
+};
+
+static struct platform_device spi_gpio_device = {
+       .name                   = "spi_gpio",
+       .dev.platform_data      = &spi_gpio_data,
+};
+
+static struct flash_platform_data spi_flash_data = {
+       .name           = "SPL",
+       .parts          = spi_flash_partitions,
+       .nr_parts       = ARRAY_SIZE(spi_flash_partitions),
+};
+
+static struct spi_board_info spi_flash __initdata = {
+       .modalias               = "m25p80",
+       .bus_num                = 0,
+       .chip_select            = 0,
+       .max_speed_hz           = 10 * 1000 * 1000,
+       .mode                   = SPI_MODE_3,
+       .chip_select            = 0,
+       .controller_data        = (void *) SPI_GPIO_CS0,
+       .platform_data          = &spi_flash_data
+};
+
+static void __init
+spi_gpio_init(void)
+{
+       spi_register_board_info(&spi_flash, 1);
+       platform_device_register(&spi_gpio_device);
+}
+
+static void __init
+fritz3370_init(void)
+{
+       spi_gpio_init();
+       platform_device_register_simple("pcie-xway", 0, NULL, 0);
+       xway_register_nand(fritz3370_partitions, ARRAY_SIZE(fritz3370_partitions));
+       xway_register_hcd(usb_pins);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(fritz3370_gpio_leds), fritz3370_gpio_leds);
+       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
+               ARRAY_SIZE(fritz3370_gpio_keys), fritz3370_gpio_keys);
+       ltq_register_vrx200(&ltq_eth_data);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_FRITZ3370,
+                       "FRITZ3370",
+                       "FRITZ!BOX 3370",
+                       fritz3370_init);
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-gigasx76x.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-gigasx76x.c
new file mode 100644 (file)
index 0000000..af27825
--- /dev/null
@@ -0,0 +1,168 @@
+/*
+ *  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
+ *  by the Free Software Foundation.
+ *
+ *  Copyright (C) 2011 Andrej Vlašić
+ *  Copyright (C) 2011 Luka Perkov
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/leds.h>
+#include <linux/gpio.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/physmap.h>
+#include <linux/input.h>
+#include <linux/pci.h>
+#include <linux/phy.h>
+#include <linux/io.h>
+#include <linux/if_ether.h>
+#include <linux/etherdevice.h>
+#include <linux/string.h>
+
+#include <irq.h>
+#include <lantiq_soc.h>
+#include <lantiq_platform.h>
+#include <dev-gpio-leds.h>
+#include <dev-gpio-buttons.h>
+
+#include "../machtypes.h"
+#include "dev-wifi-athxk.h"
+#include "devices.h"
+#include "dev-dwc_otg.h"
+
+#include "mach-gigasx76x.h"
+
+static u8 ltq_ethaddr[6] = { 0 };
+
+static int __init
+setup_ethaddr(char *str)
+{
+       if (!mac_pton(str, ltq_ethaddr))
+               memset(ltq_ethaddr, 0, 6);
+       return 0;
+}
+__setup("ethaddr=", setup_ethaddr);
+
+
+enum {
+       UNKNOWN = 0,
+       SX761,
+       SX762,
+       SX763,
+};
+static u8 board __initdata = SX763;
+
+static int __init
+setup_board(char *str)
+{
+       if (!strcmp(str, "sx761"))
+               board = SX761;
+       else if (!strcmp(str, "sx762"))
+               board = SX762;
+       else if (!strcmp(str, "sx763"))
+               board = SX763;
+       else
+               board = UNKNOWN;
+       return 0;
+}
+__setup("board=", setup_board);
+
+static struct mtd_partition gigasx76x_partitions[] =
+{
+       {
+               .name   = "uboot",
+               .offset = 0x0,
+               .size   = 0x10000,
+       },
+       {
+               .name   = "uboot_env",
+               .offset = 0x10000,
+               .size   = 0x10000,
+       },
+       {
+               .name   = "linux",
+               .offset = 0x20000,
+               .size   = 0x7e0000,
+       },
+};
+
+static struct gpio_led
+gigasx76x_gpio_leds[] __initdata = {
+       { .name = "soc:green:voip", .gpio = 216, },
+       { .name = "soc:green:adsl", .gpio = 217, },
+       { .name = "soc:green:usb", .gpio = 218, },
+       { .name = "soc:green:wifi", .gpio = 219, },
+       { .name = "soc:green:phone2", .gpio = 220, },
+       { .name = "soc:green:phone1", .gpio = 221, },
+       { .name = "soc:green:line", .gpio = 222, },
+       { .name = "soc:green:online", .gpio = 223, },
+};
+
+static struct gpio_keys_button
+gigasx76x_gpio_keys[] __initdata = {
+       {
+               .desc           = "wps",
+               .type           = EV_KEY,
+               .code           = KEY_WPS_BUTTON,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 22,
+               .active_low     = 1,
+       },
+       {
+               .desc           = "reset",
+               .type           = EV_KEY,
+               .code           = BTN_0,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 14,
+               .active_low     = 0,
+       },
+};
+
+static struct physmap_flash_data gigasx76x_flash_data = {
+       .nr_parts       = ARRAY_SIZE(gigasx76x_partitions),
+       .parts          = gigasx76x_partitions,
+};
+
+static struct ltq_pci_data ltq_pci_data = {
+       .clock  = PCI_CLOCK_INT,
+       .gpio   = PCI_GNT1 | PCI_REQ1,
+       .irq    = { [14] = INT_NUM_IM0_IRL0 + 22, },
+};
+
+static struct ltq_eth_data ltq_eth_data = {
+       .mii_mode       = PHY_INTERFACE_MODE_MII,
+};
+
+static void __init
+gigasx76x_init(void)
+{
+#define GIGASX76X_USB          29
+
+       ltq_register_gpio_stp();
+       ltq_register_nor(&gigasx76x_flash_data);
+       ltq_register_pci(&ltq_pci_data);
+       ltq_register_tapi();
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(gigasx76x_gpio_leds), gigasx76x_gpio_leds);
+       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(gigasx76x_gpio_keys), gigasx76x_gpio_keys);
+       xway_register_dwc(GIGASX76X_USB);
+
+       if (!is_valid_ether_addr(ltq_ethaddr))
+               random_ether_addr(ltq_ethaddr);
+
+       memcpy(&ltq_eth_data.mac.sa_data, ltq_ethaddr, 6);
+       ltq_register_etop(&ltq_eth_data);
+       if (board == SX762) 
+               ltq_register_ath5k(sx762_eeprom_data, ltq_ethaddr);
+       else
+               ltq_register_ath5k(sx763_eeprom_data, ltq_ethaddr);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_GIGASX76X,
+                       "GIGASX76X",
+                       "GIGASX76X - Gigaset SX761,SX762,SX763",
+                       gigasx76x_init);
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-gigasx76x.h b/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-gigasx76x.h
new file mode 100644 (file)
index 0000000..74e5ba2
--- /dev/null
@@ -0,0 +1,210 @@
+/*
+ *  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
+ *  by the Free Software Foundation.
+ *
+ *  Copyright (C) 2011 Andrej Vlašić
+ *  Copyright (C) 2011 Luka Perkov
+ *
+ */
+
+#ifndef _MACH_GIGASX76X_H__
+#define _MACH_GIGASX76X_H__
+
+#include <linux/ath5k_platform.h>
+
+static u16 sx763_eeprom_data[ATH5K_PLAT_EEP_MAX_WORDS] =
+{
+0x0013,0x168c,0x0200,0x0001,0x0000,0x5001,0x0000,0x2051,0x2051,0x1c0a,0x0100,
+0x0000,0x01c2,0x0002,0xc606,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xf165,0x7fbe,0x0003,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aa5,0x0000,0x0000,0x0313,0x4943,
+0x2053,0x7104,0x1202,0x0400,0x0306,0x0001,0x0000,0x0500,0x410e,0x39b1,0x1eb5,
+0x4e2d,0x3056,0xffff,0xe902,0x0700,0x0106,0x0000,0x0100,0x1500,0x0752,0x4101,
+0x6874,0x7265,0x736f,0x4320,0x6d6f,0x756d,0x696e,0x6163,0x6974,0x6e6f,0x2c73,
+0x4920,0x636e,0x002e,0x5241,0x3035,0x3130,0x302d,0x3030,0x2d30,0x3030,0x3030,
+0x5700,0x7269,0x6c65,0x7365,0x2073,0x414c,0x204e,0x6552,0x6566,0x6572,0x636e,
+0x2065,0x6143,0x6472,0x3000,0x0030,0x00ff,0x2100,0x0602,0x2201,0x0205,0x8d80,
+0x005b,0x0522,0x4002,0x8954,0x2200,0x0205,0x1b00,0x00b7,0x0522,0x8002,0x12a8,
+0x2201,0x0205,0x3600,0x016e,0x0522,0x0002,0x2551,0x2202,0x0205,0x6c00,0x02dc,
+0x0522,0x8002,0x37f9,0x2203,0x0205,0xa200,0x044a,0x0222,0x0803,0x0822,0x0604,
+0x0300,0xbe7f,0x65f1,0x0222,0x0105,0x00ff,0x0000,0x0000,0x0000,0x0000,0x0000,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0x0037,0x971f,0x5003,0x9a66,0x0001,0x81c4,0x016a,
+0x02ff,0x84ff,0x15a3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x2d2c,0x0000,0x0000,0x0000,0x0000,0xe028,0xa492,0x1c00,
+0x000e,0xb8ca,0x0013,0x0000,0x0000,0x6b4b,0xc059,0x1571,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x2370,0x00a5,0x9618,0x419a,0x68a2,0xda35,0x001c,0x0007,0xb0ff,0x01b5,0x0000,
+0x0000,0xff70,0x19ff,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x3170,0x00a5,0x9618,0x419a,0x68a2,0xda35,
+0x001c,0x000e,0xb0ff,0x21b5,0x0000,0x2fd8,0xff70,0x1226,0x19ff,0x07be,0x6201,
+0x032e,0x0587,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1112,
+0x1441,0x4231,0x3234,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x8000,0x0000,0x0000,0x0000,0x0000,0x8000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4d31,0x7f54,0x3c93,0x1205,0x1931,
+0x492d,0x7f50,0x3c93,0x0e01,0x192d,0x0070,0x0000,0x8140,0x724b,0x2ba9,0x3a09,
+0x99d9,0x1949,0x0070,0x0000,0x80e0,0x624a,0x2af8,0x35c7,0x9d47,0x1938,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x7082,0x0820,0xb882,0x0820,0x7092,0x28a0,0x8992,
+0x28a0,0xa292,0x28a0,0x70a2,0xa7ac,0x0000,0x0000,0x2464,0x6424,0x0000,0x0000,
+0x70a2,0xa7ac,0x0000,0x0000,0x2464,0x6424,0x0000,0x0000,0x8989,0x0000,0x0000,
+0x0000,0x2424,0x0000,0x0000,0x0000,0x7075,0xa2ac,0xb800,0x0000,0x2464,0x2424,
+0x2400,0x0000,0x7075,0xa2ac,0x0000,0x0000,0x2464,0x2424,0x0000,0x0000,0x7075,
+0xa7ac,0x0000,0x0000,0x2464,0x6424,0x0000,0x0000,0x7075,0xa7ac,0x0000,0x0000,
+0x2464,0x6424,0x0000,0x0000,0x8989,0x0000,0x0000,0x0000,0x2424,0x0000,0x0000,
+0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff};
+
+static u16 sx762_eeprom_data[ATH5K_PLAT_EEP_MAX_WORDS] =
+{
+0x001a,0x168c,0x0200,0x0001,0x0000,0x5001,0x0000,0x2051,0x2051,0x1c0a,0x0100,
+0x0000,0x01c2,0x0002,0xc606,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xf165,0x7fbe,0x0003,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aa5,0x0000,0x0000,0x0313,0x4943,
+0x2053,0x7104,0x1202,0x0400,0x0306,0x0001,0x0000,0x0500,0x410e,0x39b1,0x1eb5,
+0x4e2d,0x3056,0xffff,0xe902,0x0700,0x0106,0x0000,0x0100,0x1500,0x0752,0x4101,
+0x6874,0x7265,0x736f,0x4320,0x6d6f,0x756d,0x696e,0x6163,0x6974,0x6e6f,0x2c73,
+0x4920,0x636e,0x002e,0x5241,0x3035,0x3130,0x302d,0x3030,0x2d30,0x3030,0x3030,
+0x5700,0x7269,0x6c65,0x7365,0x2073,0x414c,0x204e,0x6552,0x6566,0x6572,0x636e,
+0x2065,0x6143,0x6472,0x3000,0x0030,0x00ff,0x2100,0x0602,0x2201,0x0205,0x8d80,
+0x005b,0x0522,0x4002,0x8954,0x2200,0x0205,0x1b00,0x00b7,0x0522,0x8002,0x12a8,
+0x2201,0x0205,0x3600,0x016e,0x0522,0x0002,0x2551,0x2202,0x0205,0x6c00,0x02dc,
+0x0522,0x8002,0x37f9,0x2203,0x0205,0xa200,0x044a,0x0222,0x0803,0x0822,0x0604,
+0x0300,0xbe7f,0x65f1,0x0222,0x0105,0x00ff,0x0000,0x0000,0x0000,0x0000,0x0000,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0x0037,0x6aaa,0x5003,0x9a66,0x0001,0x81c4,0x016a,
+0x02ff,0x84ff,0x15a3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x2d2c,0x0000,0x0000,0x0000,0x0000,0xe028,0xa492,0x1c00,
+0x000e,0xb8ca,0x0013,0x0000,0x0000,0x6b4b,0xc059,0x1571,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x2370,0x00a5,0x9618,0x419a,0x68a2,0xda35,0x001c,0x0007,0xb0ff,0x01b5,0x0000,
+0x0000,0xff70,0x19ff,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x3170,0x00a5,0x9618,0x419a,0x68a2,0xda35,
+0x001c,0x000e,0xb0ff,0x21b5,0x0000,0x2fd8,0xff70,0x1226,0x19ff,0x07fa,0x6201,
+0x032e,0x0587,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1112,
+0x1441,0x4231,0x3234,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x8000,0x0000,0x0000,0x0000,0x0000,0x8000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4d31,0x7f54,0x3c93,0x1205,0x1931,
+0x492d,0x7f50,0x3c93,0x0e01,0x192d,0x0070,0x0000,0x8180,0x724d,0xab59,0x3a08,
+0xdd79,0x2559,0x0070,0x0000,0x81a0,0x6e4d,0x2b99,0x3a09,0x9989,0x2157,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+0x0000,0x0000,0x0000,0x0000,0x7092,0x4924,0xb892,0x4924,0x7092,0x289e,0x8992,
+0x289e,0xa292,0x289e,0x70a2,0xa7ac,0x0000,0x0000,0x2462,0x5e13,0x0000,0x0000,
+0x70a2,0xa7ac,0x0000,0x0000,0x1e5c,0x5713,0x0000,0x0000,0x8989,0x0000,0x0000,
+0x0000,0x2424,0x0000,0x0000,0x0000,0x7075,0xa2ac,0xb800,0x0000,0x2868,0x2828,
+0x2800,0x0000,0x7075,0xa2ac,0x0000,0x0000,0x2868,0x2828,0x0000,0x0000,0x7075,
+0xac00,0x0000,0x0000,0x2161,0x2100,0x0000,0x0000,0x7075,0xac00,0x0000,0x0000,
+0x1b5b,0x1b00,0x0000,0x0000,0x8989,0x0000,0x0000,0x0000,0x2121,0x0000,0x0000,
+0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
+0xffff,0xffff};
+
+#endif
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-h201l.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-h201l.c
new file mode 100644 (file)
index 0000000..86101f5
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ *  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
+ *  by the Free Software Foundation.
+ *
+ *  Copyright (C) 2012 Luka Perkov <openwrt@lukaperkov.net>
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/leds.h>
+#include <linux/gpio.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/physmap.h>
+#include <linux/input.h>
+#include <linux/kernel.h>
+#include <linux/delay.h>
+#include <linux/io.h>
+#include <linux/if_ether.h>
+#include <linux/etherdevice.h>
+#include <linux/string.h>
+
+#include <lantiq_soc.h>
+#include <lantiq_platform.h>
+#include <dev-gpio-leds.h>
+#include <dev-gpio-buttons.h>
+
+#include "../machtypes.h"
+#include "devices.h"
+#include "dev-dwc_otg.h"
+
+static u8 ltq_ethaddr[6] = { 0 };
+
+static int __init
+setup_ethaddr(char *str)
+{
+       if (!mac_pton(str, ltq_ethaddr))
+               memset(ltq_ethaddr, 0, 6);
+       return 0;
+}
+__setup("ethaddr=", setup_ethaddr);
+
+static struct mtd_partition h201l_partitions[] __initdata =
+{
+       {
+               .name   = "uboot",
+               .offset = 0x0,
+               .size   = 0x20000,
+       },
+       {
+               .name   = "uboot_env",
+               .offset = 0x20000,
+               .size   = 0x10000,
+       },
+       {
+               .name   = "linux",
+               .offset = 0x30000,
+               .size   = 0x7d0000,
+       },
+};
+
+static struct physmap_flash_data h201l_flash_data __initdata = {
+       .nr_parts       = ARRAY_SIZE(h201l_partitions),
+       .parts          = h201l_partitions,
+};
+
+static struct gpio_led
+h201l_leds_gpio[] __initdata = {
+};
+
+static struct gpio_keys_button
+h201l_gpio_keys[] __initdata = {
+};
+
+static struct ltq_eth_data ltq_eth_data = {
+       .mii_mode       = PHY_INTERFACE_MODE_RMII,
+};
+
+static void __init
+h201l_init(void)
+{
+       ltq_register_gpio_stp();
+       ltq_register_nor(&h201l_flash_data);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(h201l_leds_gpio), h201l_leds_gpio);
+       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(h201l_gpio_keys), h201l_gpio_keys);
+
+       if (!is_valid_ether_addr(ltq_ethaddr))
+               random_ether_addr(ltq_ethaddr);
+
+       memcpy(&ltq_eth_data.mac.sa_data, ltq_ethaddr, 6);
+       ltq_register_etop(&ltq_eth_data);
+
+       xway_register_dwc(-1);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_H201L,
+                       "H201L",
+                       "ZTE ZXV10 H201L",
+                       h201l_init);
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-netgear.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-netgear.c
new file mode 100644 (file)
index 0000000..29b0728
--- /dev/null
@@ -0,0 +1,239 @@
+/*
+ *  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
+ *  by the Free Software Foundation.
+ *
+ *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
+ *  Copyright (C) 2012 Pieter Voorthuijsen <p.voorthuijsen@gmail.com>
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/physmap.h>
+#include <linux/input.h>
+#include <linux/phy.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/flash.h>
+#include <linux/spi/spi_gpio.h>
+#include <linux/ath9k_platform.h>
+#include <linux/if_ether.h>
+#include <linux/etherdevice.h>
+#include <linux/kobject.h>
+#include <linux/sysfs.h>
+
+#include <lantiq_soc.h>
+#include <irq.h>
+#include <dev-gpio-leds.h>
+#include <dev-gpio-buttons.h>
+#include "dev-wifi-athxk.h"
+
+#include "../machtypes.h"
+#include "devices.h"
+#include "dev-dwc_otg.h"
+#include "pci-ath-fixup.h"
+#include <mtd/mtd-abi.h>
+#include <asm-generic/sizes.h>
+
+static struct mtd_partition dgn3500_partitions[] = {
+       {
+               .name = "u-boot",
+               .offset = 0,
+               .size = 0x10000,
+               .mask_flags = MTD_WRITEABLE,
+       },
+       {
+               .name = "environment",
+               .offset = 0x10000,
+               .size = 0x10000,
+               .mask_flags = MTD_WRITEABLE,
+       },
+       {
+               .name = "calibration",
+               .offset = 0x20000,
+               .size = 0x10000,
+               .mask_flags = MTD_WRITEABLE,
+       },
+       {
+               .name = "linux",
+               .offset = 0x50000,
+               .size = 0xfa0000,
+       },
+};
+
+static struct ltq_pci_data ltq_pci_data = {
+       .clock  = PCI_CLOCK_INT,
+       .gpio   = PCI_GNT1 | PCI_REQ1,
+       .irq    = {
+               [14] = INT_NUM_IM0_IRL0 + 22,
+       },
+};
+
+static struct ltq_eth_data ltq_eth_data = {
+       .mii_mode = PHY_INTERFACE_MODE_MII,
+};
+
+static struct gpio_led
+dgn3500_gpio_leds[] __initdata = {
+       { .name = "soc:green:power", .gpio = 34, .active_low = 1, },
+       { .name = "soc:red:power", .gpio = 39, .active_low = 1, },
+       { .name = "soc:orange:wlan", .gpio = 51, .active_low = 1, },
+       { .name = "soc:green:wps", .gpio = 52, .active_low = 1, },
+       { .name = "soc:green:usb", .gpio = 22, .active_low = 1, },
+       { .name = "soc:green:dsl", .gpio = 4, .active_low = 1, },
+       { .name = "soc:green:internet", .gpio = 2, .active_low = 1, },
+};
+
+static struct gpio_keys_button
+dgn3500_gpio_keys[] __initdata = {
+       {
+               .desc = "wps",
+               .type = EV_KEY,
+               .code = BTN_0,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio = 54,
+               .active_low = 1,
+       },
+       {
+               .desc = "reset",
+               .type = EV_KEY,
+               .code = BTN_1,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio = 36,
+               .active_low = 1,
+       },
+};
+
+#define SPI_GPIO_MRST   16
+#define SPI_GPIO_MTSR   17
+#define SPI_GPIO_CLK    18
+#define SPI_GPIO_CS0    10
+
+static struct spi_gpio_platform_data spi_gpio_data = {
+       .sck            = SPI_GPIO_CLK,
+       .mosi           = SPI_GPIO_MTSR,
+       .miso           = SPI_GPIO_MRST,
+       .num_chipselect = 2,
+};
+
+static struct platform_device spi_gpio_device = {
+       .name                   = "spi_gpio",
+       .dev.platform_data      = &spi_gpio_data,
+};
+
+static struct flash_platform_data spi_flash_data = {
+       .name           = "sflash",
+       .parts          = dgn3500_partitions,
+       .nr_parts       = ARRAY_SIZE(dgn3500_partitions),
+};
+
+static struct spi_board_info spi_flash __initdata = {
+       .modalias               = "m25p80",
+       .bus_num                = 0,
+       .chip_select            = 0,
+       .max_speed_hz           = 10 * 1000 * 1000,
+       .mode                   = SPI_MODE_3,
+       .chip_select            = 0,
+       .controller_data        = (void *) SPI_GPIO_CS0,
+       .platform_data          = &spi_flash_data
+};
+
+static u8 ltq_ethaddr[6] = { 0 };
+
+static int __init setup_ethaddr(char *str)
+{
+       if (!mac_pton(str, ltq_ethaddr))
+               memset(ltq_ethaddr, 0, 6);
+       return 0;
+}
+__setup("ethaddr=", setup_ethaddr);
+
+static u16 dgn3500_eeprom_data[ATH9K_PLAT_EEP_MAX_WORDS] = {0};
+
+static ssize_t ath_eeprom_read(struct file *filp, struct kobject *kobj,
+               struct bin_attribute *attr, char *buf,
+               loff_t offset, size_t count)
+{
+       if (unlikely(offset >= sizeof(dgn3500_eeprom_data)))
+               return 0;
+       if ((offset + count) > sizeof(dgn3500_eeprom_data))
+               count = sizeof(dgn3500_eeprom_data) - offset;
+       if (unlikely(!count))
+               return count;
+
+       memcpy(buf, (char *)(dgn3500_eeprom_data) + offset, count);
+
+       return count;
+}
+
+extern struct ath9k_platform_data ath9k_pdata;
+
+static ssize_t ath_eeprom_write(struct file *filp, struct kobject *kobj,
+               struct bin_attribute *attr, char *buf,
+               loff_t offset, size_t count)
+{
+       int i;
+       char *eeprom_bytes = (char *)dgn3500_eeprom_data;
+
+       if (unlikely(offset >= sizeof(dgn3500_eeprom_data)))
+               return -EFBIG;
+       if ((offset + count) > sizeof(dgn3500_eeprom_data))
+               count = sizeof(dgn3500_eeprom_data) - offset;
+       if (unlikely(!count))
+               return count;
+       if (count % 2)
+               return 0;
+
+       /* The PCI fixup routine requires an endian swap of the calibartion data
+        * stored in flash */
+       for (i = 0; i < count; i += 2) {
+               eeprom_bytes[offset + i + 1] = buf[i];
+               eeprom_bytes[offset + i] = buf[i+1];
+       }
+
+       /* The original data does not contain a checksum. Set the country and
+        * calculate new checksum when all data is received */
+       if ((count + offset) == sizeof(dgn3500_eeprom_data))
+               memcpy(ath9k_pdata.eeprom_data, dgn3500_eeprom_data,
+                               sizeof(ath9k_pdata.eeprom_data));
+
+       return count;
+}
+
+static struct bin_attribute dev_attr_ath_eeprom = {
+       .attr = {
+               .name = "ath_eeprom",
+               .mode = S_IRUGO|S_IWUSR,
+       },
+       .read = ath_eeprom_read,
+       .write = ath_eeprom_write,
+};
+
+static void __init dgn3500_init(void)
+{
+       if (sysfs_create_bin_file(firmware_kobj, &dev_attr_ath_eeprom))
+               printk(KERN_INFO "Failed to create ath eeprom sysfs entry\n");
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(dgn3500_gpio_leds),
+                       dgn3500_gpio_leds);
+       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL,
+                       ARRAY_SIZE(dgn3500_gpio_keys), dgn3500_gpio_keys);
+       platform_device_register(&spi_gpio_device);
+       ltq_register_pci(&ltq_pci_data);
+       spi_register_board_info(&spi_flash, 1);
+       if (!is_valid_ether_addr(ltq_ethaddr)) {
+               printk(KERN_INFO "MAC invalid using random\n");
+               random_ether_addr(ltq_ethaddr);
+       }
+       memcpy(&ltq_eth_data.mac.sa_data, ltq_ethaddr, 6);
+       ltq_register_etop(&ltq_eth_data);
+       ltq_register_ath9k(dgn3500_eeprom_data, ltq_ethaddr);
+       ltq_pci_ath_fixup(14, dgn3500_eeprom_data);
+       /* The usb power is always enabled, protected by a fuse */
+       xway_register_dwc(-1);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_DGN3500B,
+            "DGN3500B",
+            "Netgear DGN3500B",
+             dgn3500_init);
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-p2601hnfx.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-p2601hnfx.c
new file mode 100644 (file)
index 0000000..247dfb5
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ *  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
+ *  by the Free Software Foundation.
+ *
+ *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/leds.h>
+#include <linux/gpio.h>
+#include <linux/gpio_buttons.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/physmap.h>
+#include <linux/input.h>
+#include <linux/etherdevice.h>
+#include <linux/mdio-gpio.h>
+#include <linux/kernel.h>
+#include <linux/delay.h>
+
+#include <lantiq_soc.h>
+#include <lantiq_platform.h>
+#include <dev-gpio-leds.h>
+#include <dev-gpio-buttons.h>
+
+#include "../machtypes.h"
+#include "devices.h"
+#include "dev-dwc_otg.h"
+
+static struct mtd_partition p2601hnfx_partitions[] __initdata =
+{
+       {
+               .name   = "uboot",
+               .offset = 0x0,
+               .size   = 0x20000,
+       },
+       {
+               .name   = "uboot_env",
+               .offset = 0x20000,
+               .size   = 0x20000,
+       },
+       {
+               .name   = "linux",
+               .offset = 0x40000,
+               .size   = 0xfc0000,
+       },
+};
+
+static struct physmap_flash_data p2601hnfx_flash_data __initdata = {
+       .nr_parts       = ARRAY_SIZE(p2601hnfx_partitions),
+       .parts          = p2601hnfx_partitions,
+};
+
+static struct gpio_led
+p2601hnfx_leds_gpio[] __initdata = {
+       { .name = "soc:yellow:phone", .gpio = 216, .active_low = 1 },
+       { .name = "soc:green:phone", .gpio = 217, .active_low = 1 },
+       { .name = "soc:yellow:wifi", .gpio = 218, .active_low = 1 },
+       { .name = "soc:green:power", .gpio = 219, .active_low = 1 },
+       { .name = "soc:red:internet", .gpio = 220, .active_low = 1 },
+       { .name = "soc:green:internet", .gpio = 221, .active_low = 1 },
+       { .name = "soc:green:dsl", .gpio = 222, .active_low = 1 },
+       { .name = "soc:green:wifi", .gpio = 223, .active_low = 1 },
+};
+
+static struct gpio_keys_button
+p2601hnfx_gpio_keys[] __initdata = {
+       {
+               .desc           = "reset",
+               .type           = EV_KEY,
+               .code           = BTN_0,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 53,
+               .active_low     = 1,
+       },
+       {
+               .desc           = "wifi",
+               .type           = EV_KEY,
+               .code           = BTN_1,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = 54,
+               .active_low     = 1,
+       },
+};
+
+static struct ltq_eth_data ltq_eth_data = {
+       .mii_mode       = PHY_INTERFACE_MODE_RMII,
+};
+
+static void __init
+p2601hnfx_init(void)
+{
+#define P2601HNFX_USB                  9
+
+       ltq_register_gpio_stp();
+       ltq_register_nor(&p2601hnfx_flash_data);
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(p2601hnfx_leds_gpio), p2601hnfx_leds_gpio);
+       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(p2601hnfx_gpio_keys), p2601hnfx_gpio_keys);
+       ltq_register_etop(&ltq_eth_data);
+       xway_register_dwc(P2601HNFX_USB);
+
+       // enable the ethernet ports on the SoC
+//     ltq_w32((ltq_r32(LTQ_GPORT_P0_CTL) & ~(1 << 17)) | (1 << 18), LTQ_GPORT_P0_CTL);
+//     ltq_w32((ltq_r32(LTQ_GPORT_P1_CTL) & ~(1 << 17)) | (1 << 18), LTQ_GPORT_P1_CTL);
+//     ltq_w32((ltq_r32(LTQ_GPORT_P2_CTL) & ~(1 << 17)) | (1 << 18), LTQ_GPORT_P2_CTL);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_P2601HNFX,
+                       "P2601HNFX",
+                       "ZyXEL P-2601HN-Fx",
+                       p2601hnfx_init);
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-wbmr.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/mach-wbmr.c
new file mode 100644 (file)
index 0000000..a57e092
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ *  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
+ *  by the Free Software Foundation.
+ *
+ *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
+ */
+
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/leds.h>
+#include <linux/gpio.h>
+#include <linux/gpio_buttons.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/physmap.h>
+#include <linux/input.h>
+
+#include <lantiq_soc.h>
+#include <irq.h>
+#include <dev-gpio-leds.h>
+#include <dev-gpio-buttons.h>
+
+#include "../machtypes.h"
+#include "devices.h"
+#include "dev-dwc_otg.h"
+
+static struct mtd_partition wbmr_partitions[] =
+{
+       {
+               .name   = "uboot",
+               .offset = 0x0,
+               .size   = 0x40000,
+       },
+       {
+               .name   = "uboot-env",
+               .offset = 0x40000,
+               .size   = 0x20000,
+       },
+       {
+               .name   = "linux",
+               .offset = 0x60000,
+               .size   = 0x1f20000,
+       },
+       {
+               .name   = "calibration",
+               .offset = 0x1fe0000,
+               .size   = 0x20000,
+       },
+};
+
+static struct physmap_flash_data wbmr_flash_data = {
+       .nr_parts       = ARRAY_SIZE(wbmr_partitions),
+       .parts          = wbmr_partitions,
+};
+
+static struct gpio_led
+wbmr_gpio_leds[] __initdata = {
+       { .name = "soc:blue:movie", .gpio = 20, .active_low = 1, },
+       { .name = "soc:red:internet", .gpio = 18, .active_low = 1, },
+       { .name = "soc:green:internet", .gpio = 17, .active_low = 1, },
+       { .name = "soc:green:adsl", .gpio = 16, .active_low = 1, },
+       { .name = "soc:green:wlan", .gpio = 15, .active_low = 1, },
+       { .name = "soc:red:security", .gpio = 14, .active_low = 1, },
+       { .name = "soc:green:power", .gpio = 1, .active_low = 1, },
+       { .name = "soc:red:power", .gpio = 5, .active_low = 1, },
+       { .name = "soc:green:usb", .gpio = 28, .active_low = 1, },
+};
+
+static struct gpio_keys_button
+wbmr_gpio_keys[] __initdata = {
+       {
+               .desc = "aoss",
+               .type = EV_KEY,
+               .code = BTN_0,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio = 0,
+               .active_low = 1,
+       },
+       {
+               .desc = "reset",
+               .type = EV_KEY,
+               .code = BTN_1,
+               .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL,
+               .gpio = 37,
+               .active_low = 1,
+       },
+};
+
+static struct ltq_pci_data ltq_pci_data = {
+       .clock  = PCI_CLOCK_INT,
+       .gpio   = PCI_GNT1 | PCI_REQ1,
+       .irq    = {
+               [14] = INT_NUM_IM0_IRL0 + 22,
+       },
+};
+
+static struct ltq_eth_data ltq_eth_data = {
+       .mii_mode = PHY_INTERFACE_MODE_RGMII,
+};
+
+static void __init
+wbmr_init(void)
+{
+#define WMBR_BRN_MAC                   0x1fd0024
+
+       ltq_add_device_gpio_leds(-1, ARRAY_SIZE(wbmr_gpio_leds), wbmr_gpio_leds);
+       ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(wbmr_gpio_keys), wbmr_gpio_keys);
+       ltq_register_nor(&wbmr_flash_data);
+       ltq_register_pci(&ltq_pci_data);
+       memcpy_fromio(&ltq_eth_data.mac.sa_data,
+               (void *)KSEG1ADDR(LTQ_FLASH_START + WMBR_BRN_MAC), 6);
+       ltq_register_etop(&ltq_eth_data);
+       xway_register_dwc(36);
+}
+
+MIPS_MACHINE(LANTIQ_MACH_WBMR,
+                       "WBMR",
+                       "WBMR",
+                       wbmr_init);
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/pci-ath-fixup.c b/target/linux/lantiq/files/arch/mips/lantiq/xway/pci-ath-fixup.c
new file mode 100644 (file)
index 0000000..c87ffb2
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ *  Atheros AP94 reference board PCI initialization
+ *
+ *  Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org>
+ *
+ *  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
+ *  by the Free Software Foundation.
+ */
+
+#include <linux/pci.h>
+#include <linux/init.h>
+#include <linux/delay.h>
+#include <lantiq_soc.h>
+
+#define LTQ_PCI_MEM_BASE               0x18000000
+
+struct ath_fixup {
+       u16             *cal_data;
+       unsigned        slot;
+};
+
+static int ath_num_fixups;
+static struct ath_fixup ath_fixups[2];
+
+static void ath_pci_fixup(struct pci_dev *dev)
+{
+       void __iomem *mem;
+       u16 *cal_data = NULL;
+       u16 cmd;
+       u32 bar0;
+       u32 val;
+       unsigned i;
+
+       for (i = 0; i < ath_num_fixups; i++) {
+               if (ath_fixups[i].cal_data == NULL)
+                       continue;
+
+               if (ath_fixups[i].slot != PCI_SLOT(dev->devfn))
+                       continue;
+
+               cal_data = ath_fixups[i].cal_data;
+               break;
+       }
+
+       if (cal_data == NULL)
+               return;
+
+       if (*cal_data != 0xa55a) {
+               pr_err("pci %s: invalid calibration data\n", pci_name(dev));
+               return;
+       }
+
+       pr_info("pci %s: fixup device configuration\n", pci_name(dev));
+
+       mem = ioremap(LTQ_PCI_MEM_BASE, 0x10000);
+       if (!mem) {
+               pr_err("pci %s: ioremap error\n", pci_name(dev));
+               return;
+       }
+
+       pci_read_config_dword(dev, PCI_BASE_ADDRESS_0, &bar0);
+       pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, LTQ_PCI_MEM_BASE);
+       pci_read_config_word(dev, PCI_COMMAND, &cmd);
+       cmd |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
+       pci_write_config_word(dev, PCI_COMMAND, cmd);
+
+       /* set pointer to first reg address */
+       cal_data += 3;
+       while (*cal_data != 0xffff) {
+               u32 reg;
+               reg = *cal_data++;
+               val = *cal_data++;
+               val |= (*cal_data++) << 16;
+
+               ltq_w32(swab32(val), mem + reg);
+               udelay(100);
+       }
+
+       pci_read_config_dword(dev, PCI_VENDOR_ID, &val);
+       dev->vendor = val & 0xffff;
+       dev->device = (val >> 16) & 0xffff;
+
+       pci_read_config_dword(dev, PCI_CLASS_REVISION, &val);
+       dev->revision = val & 0xff;
+       dev->class = val >> 8; /* upper 3 bytes */
+
+       pr_info("pci %s: fixup info: [%04x:%04x] revision %02x class %#08x\n", 
+               pci_name(dev), dev->vendor, dev->device, dev->revision, dev->class);
+
+       pci_read_config_word(dev, PCI_COMMAND, &cmd);
+       cmd &= ~(PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY);
+       pci_write_config_word(dev, PCI_COMMAND, cmd);
+
+       pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, bar0);
+
+       iounmap(mem);
+}
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATHEROS, PCI_ANY_ID, ath_pci_fixup);
+
+void __init ltq_pci_ath_fixup(unsigned slot, u16 *cal_data)
+{
+       if (ath_num_fixups >= ARRAY_SIZE(ath_fixups))
+               return;
+
+       ath_fixups[ath_num_fixups].slot = slot;
+       ath_fixups[ath_num_fixups].cal_data = cal_data;
+       ath_num_fixups++;
+}
diff --git a/target/linux/lantiq/files/arch/mips/lantiq/xway/pci-ath-fixup.h b/target/linux/lantiq/files/arch/mips/lantiq/xway/pci-ath-fixup.h
new file mode 100644 (file)
index 0000000..095d261
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _PCI_ATH_FIXUP
+#define _PCI_ATH_FIXUP
+
+void ltq_pci_ath_fixup(unsigned slot, u16 *cal_data) __init;
+
+#endif /* _PCI_ATH_FIXUP */