summaryrefslogtreecommitdiff
path: root/target/linux/ifxmips/files-2.6.33/arch
diff options
context:
space:
mode:
authorralph <ralph@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-04-25 16:20:16 +0000
committerralph <ralph@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-04-25 16:20:16 +0000
commit3d253dd59ae1796aeadcdbcf0769c5634da0f5df (patch)
tree16d21507a76a2bb4b11813f04ec41f930e7332ca /target/linux/ifxmips/files-2.6.33/arch
parent2c84c0a08a1fd4b8662ca72247e3b70ca5ba0005 (diff)
[ifxmips] refresh 2.6.33 patches, add more mach support, add crypto support, tbd. mach/board detection
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21159 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ifxmips/files-2.6.33/arch')
-rw-r--r--target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/Kconfig66
-rw-r--r--target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/common/prom.c16
-rw-r--r--target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/Makefile2
-rw-r--r--target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/devices.c2
-rw-r--r--target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/mach-arv452.c2
-rw-r--r--target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/mach-easy4010.c79
-rw-r--r--target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/mach-easy50712.c80
-rw-r--r--target/linux/ifxmips/files-2.6.33/arch/mips/include/asm/mach-ifxmips/machine.h16
8 files changed, 256 insertions, 7 deletions
diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/Kconfig b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/Kconfig
index 1660f1486a..f8a198d479 100644
--- a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/Kconfig
+++ b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/Kconfig
@@ -10,6 +10,18 @@ choice
bool "Danube/Twinpass"
select SOC_DANUBE
+ config IFXMIPS_ASE
+ bool "Amazon-SE"
+ select SOC_ASE
+
+ config IFXMIPS_AR9
+ bool "AR9"
+ select SOC_AR9
+
+ config IFXMIPS_VR9
+ bool "VR9"
+ select SOC_VR9
+
endchoice
source "arch/mips/ifxmips/danube/Kconfig"
@@ -32,6 +44,60 @@ config SOC_DANUBE
select SWAP_IO_SPACE
select MIPS_MACHINE
+config SOC_ASE
+ bool
+ select DMA_NONCOHERENT
+ select IRQ_CPU
+ select CEVT_R4K
+ select CSRC_R4K
+ select SYS_HAS_CPU_MIPS32_R1
+ select SYS_HAS_CPU_MIPS32_R2
+ select HAVE_STD_PC_SERIAL_PORT
+ select SYS_SUPPORTS_BIG_ENDIAN
+ select SYS_SUPPORTS_32BIT_KERNEL
+ select SYS_SUPPORTS_MULTITHREADING
+ select SYS_HAS_EARLY_PRINTK
+ select HW_HAS_PCI
+ select ARCH_REQUIRE_GPIOLIB
+ select SWAP_IO_SPACE
+ select MIPS_MACHINE
+
+config SOC_AR9
+ bool
+ select DMA_NONCOHERENT
+ select IRQ_CPU
+ select CEVT_R4K
+ select CSRC_R4K
+ select SYS_HAS_CPU_MIPS32_R1
+ select SYS_HAS_CPU_MIPS32_R2
+ select HAVE_STD_PC_SERIAL_PORT
+ select SYS_SUPPORTS_BIG_ENDIAN
+ select SYS_SUPPORTS_32BIT_KERNEL
+ select SYS_SUPPORTS_MULTITHREADING
+ select SYS_HAS_EARLY_PRINTK
+ select HW_HAS_PCI
+ select ARCH_REQUIRE_GPIOLIB
+ select SWAP_IO_SPACE
+ select MIPS_MACHINE
+
+config SOC_VR9
+ bool
+ select DMA_NONCOHERENT
+ select IRQ_CPU
+ select CEVT_R4K
+ select CSRC_R4K
+ select SYS_HAS_CPU_MIPS32_R1
+ select SYS_HAS_CPU_MIPS32_R2
+ select HAVE_STD_PC_SERIAL_PORT
+ select SYS_SUPPORTS_BIG_ENDIAN
+ select SYS_SUPPORTS_32BIT_KERNEL
+ select SYS_SUPPORTS_MULTITHREADING
+ select SYS_HAS_EARLY_PRINTK
+ select HW_HAS_PCI
+ select ARCH_REQUIRE_GPIOLIB
+ select SWAP_IO_SPACE
+ select MIPS_MACHINE
+
if EARLY_PRINTK
menu "Infineon SoC settings"
diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/common/prom.c b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/common/prom.c
index 98de8fb5cc..8eb12c78bf 100644
--- a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/common/prom.c
+++ b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/common/prom.c
@@ -4,6 +4,7 @@
#include <linux/etherdevice.h>
#include <asm/bootinfo.h>
+#include <machine.h>
#include <ifxmips.h>
#include <ifxmips_prom.h>
@@ -65,8 +66,12 @@ out:
}
__setup("ethaddr", ifxmips_set_ethaddr);
-void __init
-prom_init(void)
+static void __init prom_detect_machtype(void)
+{
+ mips_machtype = IFXMIPS_MACH_EASY50712;
+}
+
+static void __init prom_init_cmdline(void)
{
int argc = fw_arg0;
char **argv = (char **) fw_arg1;
@@ -129,3 +134,10 @@ prom_init(void)
add_memory_region(0x00000000, memsize, BOOT_MEM_RAM);
}
+
+void __init
+prom_init(void)
+{
+ prom_detect_machtype();
+ prom_init_cmdline();
+}
diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/Makefile b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/Makefile
index 328f082af4..008aa2b52d 100644
--- a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/Makefile
+++ b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/Makefile
@@ -1,3 +1,5 @@
obj-y := dma-core.o irq.o ebu.o setup.o devices.o cgu.o
obj-$(CONFIG_IFXMIPS_ARCAYDIAN_BRNBOOT) += arcaydian.o
obj-$(CONFIG_DANUBE_MACH_ARV452) += mach-arv452.o
+obj-$(CONFIG_DANUBE_MACH_EASY50712) += mach-easy50712.o
+obj-$(CONFIG_DANUBE_MACH_EASY4010) += mach-easy4010.o
diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/devices.c b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/devices.c
index 0c6a3e004d..dbcac556df 100644
--- a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/devices.c
+++ b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/devices.c
@@ -75,7 +75,7 @@ static struct resource danube_ethernet_resources =
static struct platform_device danube_ethernet =
{
- .name = "danube_ethernet",
+ .name = "ifxmips_mii0",
.resource = &danube_ethernet_resources,
.num_resources = 1,
.dev = {
diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/mach-arv452.c b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/mach-arv452.c
index 1b76c73d7b..2e406c90ae 100644
--- a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/mach-arv452.c
+++ b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/mach-arv452.c
@@ -167,4 +167,4 @@ arv452_init(void)
MIPS_MACHINE(IFXMIPS_MACH_ARV452,
"ARV452",
"Airties WAV-281, Arcor A800",
- arv452_init);
+ arv452_init);
diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/mach-easy4010.c b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/mach-easy4010.c
new file mode 100644
index 0000000000..3fe8f1fade
--- /dev/null
+++ b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/mach-easy4010.c
@@ -0,0 +1,79 @@
+#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 <machine.h>
+#include <ifxmips_prom.h>
+
+#include "devices.h"
+
+extern unsigned char ifxmips_ethaddr[6];
+
+#ifdef CONFIG_MTD_PARTITIONS
+static struct mtd_partition easy4010_partitions[] =
+{
+ {
+ .name = "uboot",
+ .offset = 0x0,
+ .size = 0x40000,
+ },
+ {
+ .name = "uboot_env",
+ .offset = 0x40000,
+ .size = 0x10000,
+ },
+ {
+ .name = "kernel",
+ .offset = 0x0,
+ .size = 0x0,
+ },
+ {
+ .name = "rootfs",
+ .offset = 0x0,
+ .size = 0x0,
+ }
+};
+#endif
+
+static struct physmap_flash_data easy4010_flash_data = {
+#ifdef CONFIG_MTD_PARTITIONS
+ .nr_parts = ARRAY_SIZE(easy4010_partitions),
+ .parts = easy4010_partitions,
+#endif
+};
+
+static struct gpio_led easy4010_leds[] = {
+ { .name = "ifx:green:test0", .gpio = 0,},
+ { .name = "ifx:green:test1", .gpio = 1,},
+ { .name = "ifx:green:test2", .gpio = 2,},
+ { .name = "ifx:green:test3", .gpio = 3,},
+};
+
+static void __init
+easy4010_init(void)
+{
+ ifxmips_register_gpio();
+
+ ifxmips_register_gpio_dev();
+
+ ifxmips_register_mtd(&easy4010_flash_data);
+
+ ifxmips_register_leds(easy4010_leds, ARRAY_SIZE(easy4010_leds));
+
+ ifxmips_register_wdt();
+
+ danube_register_ethernet(ifxmips_ethaddr);
+
+ danube_register_usb();
+}
+
+MIPS_MACHINE(IFXMIPS_MACH_EASY4010,
+ "EASY4010",
+ "Lantiq Twinpass Eval Board",
+ easy4010_init);
diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/mach-easy50712.c b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/mach-easy50712.c
new file mode 100644
index 0000000000..9a38377a92
--- /dev/null
+++ b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/danube/mach-easy50712.c
@@ -0,0 +1,80 @@
+#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 <machine.h>
+#include <ifxmips_prom.h>
+
+#include "devices.h"
+
+extern unsigned char ifxmips_ethaddr[6];
+
+#ifdef CONFIG_MTD_PARTITIONS
+static struct mtd_partition easy50712_partitions[] =
+{
+ {
+ .name = "uboot",
+ .offset = 0x0,
+ .size = 0x40000,
+ },
+ {
+ .name = "uboot_env",
+ .offset = 0x40000,
+ .size = 0x10000,
+ },
+ {
+ .name = "kernel",
+ .offset = 0x0,
+ .size = 0x0,
+ },
+ {
+ .name = "rootfs",
+ .offset = 0x0,
+ .size = 0x0,
+ }
+};
+#endif
+
+static struct physmap_flash_data easy50712_flash_data = {
+#ifdef CONFIG_MTD_PARTITIONS
+ .nr_parts = ARRAY_SIZE(easy50712_partitions),
+ .parts = easy50712_partitions,
+#endif
+};
+
+static struct gpio_led easy50712_leds[] = {
+ { .name = "ifx:green:test0", .gpio = 0,},
+ { .name = "ifx:green:test1", .gpio = 1,},
+ { .name = "ifx:green:test2", .gpio = 2,},
+ { .name = "ifx:green:test3", .gpio = 3,},
+};
+
+static void __init
+easy50712_init(void)
+{
+ ifxmips_register_gpio();
+
+ //printk("ifxmips_register_gpio_dev\n");
+ //ifxmips_register_gpio_dev();
+
+ ifxmips_register_mtd(&easy50712_flash_data);
+
+ ifxmips_register_leds(easy50712_leds, ARRAY_SIZE(easy50712_leds));
+
+ ifxmips_register_wdt();
+
+ danube_register_ethernet(ifxmips_ethaddr);
+
+ danube_register_usb();
+}
+
+MIPS_MACHINE(IFXMIPS_MACH_EASY50712,
+ "EASY50712",
+ "Lantiq Eval Board",
+ easy50712_init);
diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/include/asm/mach-ifxmips/machine.h b/target/linux/ifxmips/files-2.6.33/arch/mips/include/asm/mach-ifxmips/machine.h
index 5b7786a8b5..f014de0181 100644
--- a/target/linux/ifxmips/files-2.6.33/arch/mips/include/asm/mach-ifxmips/machine.h
+++ b/target/linux/ifxmips/files-2.6.33/arch/mips/include/asm/mach-ifxmips/machine.h
@@ -1,11 +1,21 @@
#include <asm/mips_machine.h>
-enum ramips_mach_type {
+enum ifxmips_mach_type {
IFXMIPS_MACH_GENERIC,
- /* Danube based machines */
- IFXMIPS_MACH_EASY50712, /* danube evalkit */
+ /* Danube/Twinpass based machines */
+ IFXMIPS_MACH_EASY50712, /* Danube evalkit */
+ IFXMIPS_MACH_EASY4010, /* Twinpass evalkit */
IFXMIPS_MACH_ARV4519, /* Airties WAV-221 */
IFXMIPS_MACH_ARV452, /* Airties WAV-281, Arcor EasyboxA800 */
+
+ /* ASE based machines */
+ IFXMIPS_MACH_EASY50601, /* ASE wave board */
+
+ /* AR9 based machines */
+ IFXMIPS_MACH_EASY50822, /* AR9 eval board */
+
+ /* VR9 based machines */
+ IFXMIPS_MACH_EASY80920, /* VRX200 eval board */
};