diff options
Diffstat (limited to 'target/linux/adm5120/files/arch/mips/adm5120/boards')
8 files changed, 1028 insertions, 0 deletions
diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/Makefile b/target/linux/adm5120/files/arch/mips/adm5120/boards/Makefile new file mode 100644 index 0000000000..a05c891565 --- /dev/null +++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/Makefile @@ -0,0 +1,11 @@ +# +# Makefile for platforms based on ADM5120 SoC +# + +obj-y += generic.o +obj-y += cellvision.o +obj-y += compex.o +obj-y += edimax.o +obj-y += infineon.o +obj-y += mikrotik.o +obj-y += zyxel.o diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/cellvision.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/cellvision.c new file mode 100644 index 0000000000..f7d44e2574 --- /dev/null +++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/cellvision.c @@ -0,0 +1,192 @@ +/* + * $Id$ + * + * Cellvision/SparkLAN boards + * + * Copyright (C) 2007 OpenWrt.org + * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org> + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#include <linux/kernel.h> +#include <linux/init.h> + +#include <asm/bootinfo.h> +#include <asm/gpio.h> + +#include <asm/mach-adm5120/adm5120_board.h> +#include <asm/mach-adm5120/adm5120_platform.h> + +static void switch_bank_gpio5(unsigned bank) +{ + switch (bank) { + case 0: + gpio_set_value(ADM5120_GPIO_PIN5, 0); + break; + case 1: + gpio_set_value(ADM5120_GPIO_PIN5, 1); + break; + } +} + +static struct mtd_partition cas6xx_partitions[] = { + { + .name = "admboot", + .offset = 0, + .size = 32*1024, + .mask_flags = MTD_WRITEABLE, + } , { + .name = "config", + .offset = MTDPART_OFS_APPEND, + .size = 32*1024, + } , { + .name = "nvfs1", + .offset = MTDPART_OFS_APPEND, + .size = 64*1024, + } , { + .name = "nvfs2", + .offset = MTDPART_OFS_APPEND, + .size = 64*1024, + } , { + .name = "firmware", + .offset = MTDPART_OFS_APPEND, + .size = MTDPART_SIZ_FULL, + } +}; + +static struct mtd_partition cas7xx_partitions[] = { + { + .name = "admboot", + .offset = 0, + .size = 32*1024, + .mask_flags = MTD_WRITEABLE, + } , { + .name = "config", + .offset = MTDPART_OFS_APPEND, + .size = 32*1024, + } , { + .name = "nvfs", + .offset = MTDPART_OFS_APPEND, + .size = 128*1024, + } , { + .name = "firmware", + .offset = MTDPART_OFS_APPEND, + .size = MTDPART_SIZ_FULL, + } +}; + +static struct platform_device *cas6xx_devices[] __initdata = { + &adm5120_flash0_device, +}; + +static struct platform_device *cas7xx_devices[] __initdata = { + &adm5120_flash0_device, +}; + +static void __init cas6xx_setup(void) +{ + gpio_request(ADM5120_GPIO_PIN5, NULL); /* for flash A20 line */ + gpio_direction_output(ADM5120_GPIO_PIN5, 0); + + /* setup data for flash0 device */ + adm5120_flash0_data.switch_bank = switch_bank_gpio5; + adm5120_flash0_data.nr_parts = ARRAY_SIZE(cas6xx_partitions); + adm5120_flash0_data.parts = cas6xx_partitions; + + /* TODO: setup mac address */ +} + +static void __init cas7xx_setup(void) +{ + gpio_request(ADM5120_GPIO_PIN5, NULL); /* for flash A20 line */ + gpio_direction_output(ADM5120_GPIO_PIN5, 0); + + /* setup data for flash0 device */ + adm5120_flash0_data.switch_bank = switch_bank_gpio5; + adm5120_flash0_data.nr_parts = ARRAY_SIZE(cas7xx_partitions); + adm5120_flash0_data.parts = cas7xx_partitions; + + /* TODO: setup mac address */ +} + +static struct adm5120_board cas630_board __initdata = { + .mach_type = MACH_ADM5120_CAS630, + .name = "Cellvision CAS-630/630W", + .board_setup = cas6xx_setup, + .eth_num_ports = 1, + .num_devices = ARRAY_SIZE(cas6xx_devices), + .devices = cas6xx_devices, +}; + +static struct adm5120_board cas670_board __initdata = { + .mach_type = MACH_ADM5120_CAS670, + .name = "Cellvision CAS-670/670W", + .board_setup = cas6xx_setup, + .eth_num_ports = 1, + .num_devices = ARRAY_SIZE(cas6xx_devices), + .devices = cas6xx_devices, +}; + +static struct adm5120_board cas700_board __initdata = { + .mach_type = MACH_ADM5120_CAS700, + .name = "Cellvision CAS-700/700W", + .board_setup = cas7xx_setup, + .eth_num_ports = 1, + .num_devices = ARRAY_SIZE(cas7xx_devices), + .devices = cas7xx_devices, +}; + +static struct adm5120_board cas771_board __initdata = { + .mach_type = MACH_ADM5120_CAS771, + .name = "Cellvision CAS-771/771W", + .board_setup = cas7xx_setup, + .eth_num_ports = 1, + .num_devices = ARRAY_SIZE(cas7xx_devices), + .devices = cas7xx_devices, +}; + +static struct adm5120_board cas790_board __initdata = { + .mach_type = MACH_ADM5120_CAS790, + .name = "Cellvision CAS-790", + .board_setup = cas7xx_setup, + .eth_num_ports = 1, + .num_devices = ARRAY_SIZE(cas7xx_devices), + .devices = cas7xx_devices, +}; + +static struct adm5120_board cas861_board __initdata = { + .mach_type = MACH_ADM5120_CAS861, + .name = "Cellvision CAS-861/861W", + .board_setup = cas7xx_setup, + .eth_num_ports = 1, + .num_devices = ARRAY_SIZE(cas7xx_devices), + .devices = cas7xx_devices, +}; + +static int __init register_boards(void) +{ + adm5120_board_register(&cas630_board); + adm5120_board_register(&cas670_board); + adm5120_board_register(&cas700_board); + adm5120_board_register(&cas771_board); + adm5120_board_register(&cas790_board); + adm5120_board_register(&cas861_board); + return 0; +} + +pure_initcall(register_boards); diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/compex.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/compex.c new file mode 100644 index 0000000000..620179744e --- /dev/null +++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/compex.c @@ -0,0 +1,222 @@ +/* + * $Id$ + * + * Compex boards + * + * Copyright (C) 2007 OpenWrt.org + * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org> + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#include <linux/kernel.h> +#include <linux/init.h> + +#include <asm/bootinfo.h> +#include <asm/gpio.h> + +#include <asm/mach-adm5120/adm5120_board.h> +#include <asm/mach-adm5120/adm5120_platform.h> + +static void switch_bank_gpio5(unsigned bank) +{ + switch (bank) { + case 0: + gpio_set_value(ADM5120_GPIO_PIN5, 0); + break; + case 1: + gpio_set_value(ADM5120_GPIO_PIN5, 1); + break; + } +} + +static void wp54_reset(void) +{ + gpio_set_value(ADM5120_GPIO_PIN3, 0); +} + +static struct mtd_partition wp54g_wrt_partitions[] = { + { + .name = "cfe", + .offset = 0, + .size = 0x050000, + .mask_flags = MTD_WRITEABLE, + } , { + .name = "trx", + .offset = MTDPART_OFS_APPEND, + .size = 0x3A0000, + } , { + .name = "nvram", + .offset = MTDPART_OFS_APPEND, + .size = 0x010000, + } +}; + +static struct platform_device *np2xg_devices[] __initdata = { + &adm5120_flash0_device, + &adm5120_usbc_device, +}; + +static struct platform_device *wp54_devices[] __initdata = { + &adm5120_flash0_device, +}; + +static void __init np2xg_setup(void) +{ + gpio_request(ADM5120_GPIO_PIN5, NULL); /* for flash A20 line */ + gpio_direction_output(ADM5120_GPIO_PIN5, 0); + + /* setup data for flash0 device */ + adm5120_flash0_data.switch_bank = switch_bank_gpio5; + + /* TODO: setup mac address */ +} + +static void __init wp54_setup(void) +{ + gpio_request(ADM5120_GPIO_PIN5, NULL); /* for flash A20 line */ + gpio_direction_output(ADM5120_GPIO_PIN5, 0); + + gpio_request(ADM5120_GPIO_PIN3, NULL); /* for system reset */ + gpio_direction_output(ADM5120_GPIO_PIN3, 1); + + + /* setup data for flash0 device */ + adm5120_flash0_data.switch_bank = switch_bank_gpio5; + + /* TODO: setup mac address */ +} + +static void __init wp54_wrt_setup(void) +{ + gpio_request(ADM5120_GPIO_PIN5, NULL); /* for flash A20 line */ + gpio_direction_output(ADM5120_GPIO_PIN5, 0); + + gpio_request(ADM5120_GPIO_PIN3, NULL); /* for system reset */ + gpio_direction_output(ADM5120_GPIO_PIN3, 1); + + /* setup data for flash0 device */ + adm5120_flash0_data.switch_bank = switch_bank_gpio5; + adm5120_flash0_data.nr_parts = ARRAY_SIZE(wp54g_wrt_partitions); + adm5120_flash0_data.parts = wp54g_wrt_partitions; + + /* TODO: setup mac address */ +} + +unsigned char np27g_vlans[6] __initdata = { + /* FIXME: untested */ + 0x41, 0x42, 0x44, 0x48, 0x50, 0x00 +}; + +unsigned char np28g_vlans[6] __initdata = { + /* FIXME: untested */ + 0x41, 0x42, 0x44, 0x48, 0x00, 0x00 +}; + +unsigned char wp54_vlans[6] __initdata = { + /* FIXME: untested */ + 0x41, 0x42, 0x00, 0x00, 0x00, 0x00 +}; + +static struct adm5120_board np27g_board __initdata = { + .mach_type = MACH_ADM5120_NP27G, + .name = "Compex NetPassage 27G", + .board_setup = np2xg_setup, + .eth_num_ports = 5, + .eth_vlans = np27g_vlans, + .num_devices = ARRAY_SIZE(np2xg_devices), + .devices = np2xg_devices, +}; + +static struct adm5120_board np28g_board __initdata = { + .mach_type = MACH_ADM5120_NP28G, + .name = "Compex NetPassage 28G", + .board_setup = np2xg_setup, + .eth_num_ports = 4, + .eth_vlans = np28g_vlans, + .num_devices = ARRAY_SIZE(np2xg_devices), + .devices = np2xg_devices, +}; + +static struct adm5120_board wp54ag_board __initdata = { + .mach_type = MACH_ADM5120_WP54AG, + .name = "Compex WP54AG", + .board_setup = wp54_setup, + .board_reset = wp54_reset, + .eth_num_ports = 2, + .eth_vlans = wp54_vlans, + .num_devices = ARRAY_SIZE(wp54_devices), + .devices = wp54_devices, +}; + +static struct adm5120_board wp54g_board __initdata = { + .mach_type = MACH_ADM5120_WP54G, + .name = "Compex WP54G", + .board_setup = wp54_setup, + .board_reset = wp54_reset, + .eth_num_ports = 2, + .eth_vlans = wp54_vlans, + .num_devices = ARRAY_SIZE(wp54_devices), + .devices = wp54_devices, +}; + +static struct adm5120_board wp54g_wrt_board __initdata = { + .mach_type = MACH_ADM5120_WP54G, + .name = "Compex WP54G-WRT", + .board_setup = wp54_wrt_setup, + .board_reset = wp54_reset, + .eth_num_ports = 2, + .eth_vlans = wp54_vlans, + .num_devices = ARRAY_SIZE(wp54_devices), + .devices = wp54_devices, +}; + +static struct adm5120_board wpp54ag_board __initdata = { + .mach_type = MACH_ADM5120_WPP54AG, + .name = "Compex WPP54AG", + .board_setup = wp54_setup, + .board_reset = wp54_reset, + .eth_num_ports = 2, + .eth_vlans = wp54_vlans, + .num_devices = ARRAY_SIZE(wp54_devices), + .devices = wp54_devices, +}; + +static struct adm5120_board wpp54g_board __initdata = { + .mach_type = MACH_ADM5120_WPP54G, + .name = "Compex WPP54G", + .board_setup = wp54_setup, + .board_reset = wp54_reset, + .eth_num_ports = 2, + .eth_vlans = wp54_vlans, + .num_devices = ARRAY_SIZE(wp54_devices), + .devices = wp54_devices, +}; + +static int __init register_boards(void) +{ + adm5120_board_register(&np27g_board); + adm5120_board_register(&np28g_board); + adm5120_board_register(&wp54ag_board); + adm5120_board_register(&wp54g_board); + adm5120_board_register(&wp54g_wrt_board); + adm5120_board_register(&wpp54ag_board); + adm5120_board_register(&wpp54g_board); + return 0; +} + +pure_initcall(register_boards); diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/edimax.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/edimax.c new file mode 100644 index 0000000000..a184cbce44 --- /dev/null +++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/edimax.c @@ -0,0 +1,84 @@ +/* + * $Id$ + * + * Edimax boards + * + * Copyright (C) 2007 OpenWrt.org + * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org> + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#include <linux/kernel.h> +#include <linux/init.h> + +#include <asm/bootinfo.h> +#include <asm/gpio.h> + +#include <asm/mach-adm5120/adm5120_board.h> +#include <asm/mach-adm5120/adm5120_platform.h> + +static struct mtd_partition br6104k_partitions[] = { + { + .name = "admboot", + .offset = 0, + .size = 32*1024, + .mask_flags = MTD_WRITEABLE, + } , { + .name = "config", + .offset = MTDPART_OFS_APPEND, + .size = 32*1024, + } , { + .name = "firmware", + .offset = MTDPART_OFS_APPEND, + .size = MTDPART_SIZ_FULL, + } +}; + +static struct platform_device *br6104k_devices[] __initdata = { + &adm5120_flash0_device, +}; + +static void __init br6104k_setup(void) { + /* setup data for flash0 device */ + adm5120_flash0_data.nr_parts = ARRAY_SIZE(br6104k_partitions); + adm5120_flash0_data.parts = br6104k_partitions; + + /* TODO: setup mac addresses, if possible */ +} + +unsigned char br6104k_vlans[6] = { + 0x41, 0x42, 0x44, 0x48, 0x50, 0x00 +}; + +static struct adm5120_board br6104k_board __initdata = { + .mach_type = MACH_ADM5120_BR6104K, + .name = "Edimax BR-6104K", + .board_setup = br6104k_setup, + .eth_num_ports = 5, + .eth_vlans = br6104k_vlans, + .num_devices = ARRAY_SIZE(br6104k_devices), + .devices = br6104k_devices, +}; + +static int __init register_boards(void) +{ + adm5120_board_register(&br6104k_board); + return 0; +} + +pure_initcall(register_boards); diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/generic.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/generic.c new file mode 100644 index 0000000000..de78ca40ea --- /dev/null +++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/generic.c @@ -0,0 +1,53 @@ +/* + * $Id$ + * + * Generic ADM5120 based board + * + * Copyright (C) 2007 OpenWrt.org + * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org> + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#include <linux/kernel.h> +#include <linux/init.h> + +#include <asm/bootinfo.h> +#include <asm/gpio.h> + +#include <asm/mach-adm5120/adm5120_board.h> +#include <asm/mach-adm5120/adm5120_platform.h> + +static struct platform_device *generic_devices[] __initdata = { + &adm5120_flash0_device, +}; + +static struct adm5120_board generic_board __initdata = { + .mach_type = MACH_ADM5120_GENERIC, + .name = "Generic ADM5120 board", + .eth_num_ports = 6, + .num_devices = ARRAY_SIZE(generic_devices), + .devices = generic_devices, +}; + +static int __init register_boards(void) +{ + adm5120_board_register(&generic_board); + return 0; +} + +pure_initcall(register_boards); diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/infineon.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/infineon.c new file mode 100644 index 0000000000..ebeb5aa87b --- /dev/null +++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/infineon.c @@ -0,0 +1,167 @@ +/* + * $Id$ + * + * Infineon boards + * + * Copyright (C) 2007 OpenWrt.org + * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org> + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#include <linux/kernel.h> +#include <linux/init.h> + +#include <asm/bootinfo.h> +#include <asm/gpio.h> + +#include <asm/mach-adm5120/adm5120_board.h> +#include <asm/mach-adm5120/adm5120_platform.h> + +static void switch_bank_gpio3(unsigned bank) +{ + switch (bank) { + case 0: + gpio_set_value(ADM5120_GPIO_PIN3, 0); + break; + case 1: + gpio_set_value(ADM5120_GPIO_PIN3, 1); + break; + } +} + +static void switch_bank_gpio5(unsigned bank) +{ + switch (bank) { + case 0: + gpio_set_value(ADM5120_GPIO_PIN5, 0); + break; + case 1: + gpio_set_value(ADM5120_GPIO_PIN5, 1); + break; + } +} + +static struct mtd_partition easy_partitions[] = { + { + .name = "admboot", + .offset = 0, + .size = 64*1024, + .mask_flags = MTD_WRITEABLE, + } , { + .name = "boardcfg", + .offset = MTDPART_OFS_APPEND, + .size = 64*1024, + } , { + .name = "firmware", + .offset = MTDPART_OFS_APPEND, + .size = MTDPART_SIZ_FULL, + } +}; + +static struct platform_device *easy5120pata_devices[] __initdata = { + &adm5120_flash0_device, + /* TODO: add VINETIC2 device? */ +}; + +static struct platform_device *easy5120rt_devices[] __initdata = { + &adm5120_flash0_device, + &adm5120_usbc_device +}; + +static struct platform_device *easy5120wvoip_devices[] __initdata = { + &adm5120_flash0_device, + /* TODO: add VINETIC2 device? */ +}; + +static struct platform_device *easy83000_devices[] __initdata = { + &adm5120_flash0_device, + /* TODO: add VINAX device? */ +}; + +static void __init easy_setup_pqfp(void) +{ + gpio_request(ADM5120_GPIO_PIN3, NULL); /* for flash A20 line */ + gpio_direction_output(ADM5120_GPIO_PIN3, 0); + + /* setup data for flash0 device */ + adm5120_flash0_data.switch_bank = switch_bank_gpio3; + adm5120_flash0_data.nr_parts = ARRAY_SIZE(easy_partitions); + adm5120_flash0_data.parts = easy_partitions; + + /* TODO: setup mac addresses */ +} + +static void __init easy_setup_bga(void) +{ + gpio_request(ADM5120_GPIO_PIN5, NULL); /* for flash A20 line */ + gpio_direction_output(ADM5120_GPIO_PIN5, 0); + + /* setup data for flash0 device */ + adm5120_flash0_data.switch_bank = switch_bank_gpio5; + adm5120_flash0_data.nr_parts = ARRAY_SIZE(easy_partitions); + adm5120_flash0_data.parts = easy_partitions; + + /* TODO: setup mac addresses */ +} + +static struct adm5120_board easy5120pata_board __initdata = { + .mach_type = MACH_ADM5120_EASY5120PATA, + .name = "Infineon EASY 5120P-ATA Reference Board", + .board_setup = easy_setup_pqfp, + .eth_num_ports = 6, + .num_devices = ARRAY_SIZE(easy5120pata_devices), + .devices = easy5120pata_devices, +}; + +static struct adm5120_board easy5120rt_board __initdata = { + .mach_type = MACH_ADM5120_EASY5120RT, + .name = "Infineon EASY 5120-RT Reference Board", + .board_setup = easy_setup_bga, + .eth_num_ports = 5, + .num_devices = ARRAY_SIZE(easy5120rt_devices), + .devices = easy5120rt_devices, +}; + +static struct adm5120_board easy5120wvoip_board __initdata = { + .mach_type = MACH_ADM5120_EASY5120WVOIP, + .name = "Infineon EASY 5120-WVoIP Reference Board", + .board_setup = easy_setup_bga, + .eth_num_ports = 6, + .num_devices = ARRAY_SIZE(easy5120wvoip_devices), + .devices = easy5120wvoip_devices, +}; + +static struct adm5120_board easy83000_board __initdata = { + .mach_type = MACH_ADM5120_EASY83000, + .name = "Infineon EASY 83000 Reference Board", + .board_setup = easy_setup_pqfp, + .eth_num_ports = 6, + .num_devices = ARRAY_SIZE(easy83000_devices), + .devices = easy83000_devices, +}; + +static int __init register_boards(void) +{ + adm5120_board_register(&easy5120pata_board); + adm5120_board_register(&easy5120rt_board); + adm5120_board_register(&easy5120wvoip_board); + adm5120_board_register(&easy83000_board); + return 0; +} + +pure_initcall(register_boards); diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c new file mode 100644 index 0000000000..f233772d0d --- /dev/null +++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c @@ -0,0 +1,172 @@ +/* + * $Id$ + * + * Mikrotik RouterBOARDs 111/112/133/133C/150/153 + * + * Copyright (C) 2007 OpenWrt.org + * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org> + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#include <linux/kernel.h> +#include <linux/init.h> + +#include <asm/bootinfo.h> +#include <asm/gpio.h> + +#include <asm/mach-adm5120/adm5120_board.h> +#include <asm/mach-adm5120/adm5120_platform.h> + +static struct mtd_partition rb1xx_partitions[] = { + { + .name = "booter", + .offset = 0, + .size = 64*1024, + .mask_flags = MTD_WRITEABLE, + } , { + .name = "firmware", + .offset = MTDPART_OFS_APPEND, + .size = MTDPART_SIZ_FULL, + } +}; + +static struct platform_device *rb1xx_devices[] __initdata = { + &adm5120_flash0_device, + &adm5120_nand_device, +}; + +static struct platform_device *rb150_devices[] __initdata = { + &adm5120_flash0_device, + /* TODO: nand device is not yet supported */ +}; + +static void __init rb1xx_setup(void) +{ + /* setup data for flash0 device */ + adm5120_flash0_data.nr_parts = ARRAY_SIZE(rb1xx_partitions); + adm5120_flash0_data.parts = rb1xx_partitions; + + /* TODO: setup mac address */ +} + +#if 0 +/* + * RB1xx boards have bad network performance with the default VLAN matrixes. + * Disable it while the ethernet driver gets fixed. + */ +static unsigned char rb11x_vlans[6] __initdata = { + /* FIXME: untested */ + 0x41, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static unsigned char rb133_vlans[6] __initdata = { + /* FIXME: untested */ + 0x44, 0x42, 0x41, 0x00, 0x00, 0x00 +}; + +static unsigned char rb133c_vlans[6] __initdata = { + /* FIXME: untested */ + 0x44, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static unsigned char rb15x_vlans[6] __initdata = { + /* FIXME: untested */ + 0x41, 0x42, 0x44, 0x48, 0x50, 0x00 +}; +#else +static unsigned char rb_vlans[6] __initdata = { + 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +#define rb11x_vlans rb_vlans +#define rb133_vlans rb_vlans +#define rb133c_vlans rb_vlans +#define rb15x_vlans rb_vlans +#endif + +static struct adm5120_board rb111_board __initdata = { + .mach_type = MACH_ADM5120_RB_111, + .name = "Mikrotik RouterBOARD 111", + .board_setup = rb1xx_setup, + .eth_num_ports = 1, + .eth_vlans = rb11x_vlans, + .num_devices = ARRAY_SIZE(rb1xx_devices), + .devices = rb1xx_devices, +}; + +static struct adm5120_board rb112_board __initdata = { + .mach_type = MACH_ADM5120_RB_112, + .name = "Mikrotik RouterBOARD 112", + .board_setup = rb1xx_setup, + .eth_num_ports = 1, + .eth_vlans = rb11x_vlans, + .num_devices = ARRAY_SIZE(rb1xx_devices), + .devices = rb1xx_devices, +}; + +static struct adm5120_board rb133_board __initdata = { + .mach_type = MACH_ADM5120_RB_133, + .name = "Mikrotik RouterBOARD 133", + .board_setup = rb1xx_setup, + .eth_num_ports = 3, + .eth_vlans = rb133_vlans, + .num_devices = ARRAY_SIZE(rb1xx_devices), + .devices = rb1xx_devices, +}; + +static struct adm5120_board rb133c_board __initdata = { + .mach_type = MACH_ADM5120_RB_133C, + .name = "Mikrotik RouterBOARD 133C", + .board_setup = rb1xx_setup, + .eth_num_ports = 1, + .eth_vlans = rb133c_vlans, + .num_devices = ARRAY_SIZE(rb1xx_devices), + .devices = rb1xx_devices, +}; + +static struct adm5120_board rb150_board __initdata = { + .mach_type = MACH_ADM5120_RB_150, + .name = "Mikrotik RouterBOARD 150", + .board_setup = rb1xx_setup, + .eth_num_ports = 5, + .eth_vlans = rb15x_vlans, + .num_devices = ARRAY_SIZE(rb150_devices), + .devices = rb150_devices, +}; + +static struct adm5120_board rb153_board __initdata = { + .mach_type = MACH_ADM5120_RB_153, + .name = "Mikrotik RouterBOARD 153", + .board_setup = rb1xx_setup, + .eth_num_ports = 5, + .eth_vlans = rb15x_vlans, + .num_devices = ARRAY_SIZE(rb1xx_devices), + .devices = rb1xx_devices, +}; + +static int __init register_boards(void) +{ + adm5120_board_register(&rb111_board); + adm5120_board_register(&rb112_board); + adm5120_board_register(&rb133_board); + adm5120_board_register(&rb133c_board); + adm5120_board_register(&rb150_board); + adm5120_board_register(&rb153_board); + return 0; +} + +pure_initcall(register_boards); diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/zyxel.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/zyxel.c new file mode 100644 index 0000000000..0a60205ebf --- /dev/null +++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/zyxel.c @@ -0,0 +1,127 @@ +/* + * $Id$ + * + * ZyXEL Prestige P-334/P-335 boards + * + * Copyright (C) 2007 OpenWrt.org + * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org> + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#include <linux/kernel.h> +#include <linux/init.h> + +#include <asm/bootinfo.h> +#include <asm/gpio.h> + +#include <asm/mach-adm5120/adm5120_board.h> +#include <asm/mach-adm5120/adm5120_platform.h> + +static void switch_bank_gpio5(unsigned bank) +{ + switch (bank) { + case 0: + gpio_set_value(ADM5120_GPIO_PIN5, 0); + break; + case 1: + gpio_set_value(ADM5120_GPIO_PIN5, 1); + break; + } +} + +static struct mtd_partition p33x_partitions[] = { + { + .name = "bootbase", + .offset = 0, + .size = 16*1024, + .mask_flags = MTD_WRITEABLE, + } , { + .name = "rom", + .offset = MTDPART_OFS_APPEND, + .size = 16*1024, + } , { + .name = "bootext", + .offset = MTDPART_OFS_APPEND, + .size = 96*1024, + .mask_flags = MTD_WRITEABLE, + } , { + .name = "trx", + .offset = MTDPART_OFS_APPEND, + .size = MTDPART_SIZ_FULL, + } , { + .name = "firmware", + .offset = 32*1024, + .size = MTDPART_SIZ_FULL, + } +}; + +static struct platform_device *p334_devices[] __initdata = { + &adm5120_flash0_device, +}; + +static struct platform_device *p335_devices[] __initdata = { + &adm5120_flash0_device, + &adm5120_usbc_device, +}; + +static void __init p33x_setup(void) +{ + gpio_request(ADM5120_GPIO_PIN5, NULL); /* for flash A20 line */ + gpio_direction_output(ADM5120_GPIO_PIN5, 0); + + /* setup data for flash0 device */ + adm5120_flash0_data.switch_bank = switch_bank_gpio5; + adm5120_flash0_data.nr_parts = ARRAY_SIZE(p33x_partitions); + adm5120_flash0_data.parts = p33x_partitions; + + /* TODO: setup mac address */ +} + +unsigned char p33x_vlans[6] __initdata = { + /* FIXME: untested */ + 0x50, 0x48, 0x44, 0x42, 0x41, 0x00 +}; + +static struct adm5120_board p334wt_board __initdata = { + .mach_type = MACH_ADM5120_P334WT, + .name = "ZyXEL Prestige 334WT", + .board_setup = p33x_setup, + .eth_num_ports = 5, + .eth_vlans = p33x_vlans, + .num_devices = ARRAY_SIZE(p334_devices), + .devices = p334_devices, +}; + +static struct adm5120_board p335_board __initdata = { + .mach_type = MACH_ADM5120_P335, + .name = "ZyXEL Prestige 335/335WT", + .board_setup = p33x_setup, + .eth_num_ports = 5, + .eth_vlans = p33x_vlans, + .num_devices = ARRAY_SIZE(p335_devices), + .devices = p335_devices, +}; + +static int __init register_boards(void) +{ + adm5120_board_register(&p334wt_board); + adm5120_board_register(&p335_board); + return 0; +} + +pure_initcall(register_boards); |