preliminary board support for the Linksys WRT300N v2 (incomplete)
SVN-Revision: 7167
This commit is contained in:
		| @@ -22,7 +22,7 @@ | |||||||
| # NOTE: for now it's for only IXP4xx in big endian mode | # NOTE: for now it's for only IXP4xx in big endian mode | ||||||
|  |  | ||||||
| # list of supported boards, in "boardname machtypeid" format | # list of supported boards, in "boardname machtypeid" format | ||||||
| for board in "avila 526" "gateway7001 731" "nslu2 597" "nas100d 865" "wg302v2 890" "pronghornmetro 1040" "compex 1273" | for board in "avila 526" "gateway7001 731" "nslu2 597" "nas100d 865" "wg302v2 890" "pronghornmetro 1040" "compex 1273" "wrt300nv2 1077" | ||||||
| do | do | ||||||
|   set -- $board |   set -- $board | ||||||
|   hexid=$(printf %x\\n $2) |   hexid=$(printf %x\\n $2) | ||||||
|   | |||||||
| @@ -220,6 +220,7 @@ CONFIG_MACH_NAS100D=y | |||||||
| CONFIG_MACH_NSLU2=y | CONFIG_MACH_NSLU2=y | ||||||
| CONFIG_MACH_PRONGHORNMETRO=y | CONFIG_MACH_PRONGHORNMETRO=y | ||||||
| CONFIG_MACH_WG302V2=y | CONFIG_MACH_WG302V2=y | ||||||
|  | CONFIG_MACH_WRT300NV2=y | ||||||
| # CONFIG_MAC_PARTITION is not set | # CONFIG_MAC_PARTITION is not set | ||||||
| # CONFIG_MINIX_FS is not set | # CONFIG_MINIX_FS is not set | ||||||
| CONFIG_MINI_FO=y | CONFIG_MINI_FO=y | ||||||
| @@ -231,7 +232,7 @@ CONFIG_MTD_BLOCK=y | |||||||
| # CONFIG_MTD_BLOCK2MTD is not set | # CONFIG_MTD_BLOCK2MTD is not set | ||||||
| CONFIG_MTD_CFI=y | CONFIG_MTD_CFI=y | ||||||
| CONFIG_MTD_CFI_ADV_OPTIONS=y | CONFIG_MTD_CFI_ADV_OPTIONS=y | ||||||
| # CONFIG_MTD_CFI_AMDSTD is not set | CONFIG_MTD_CFI_AMDSTD=y | ||||||
| # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set | # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set | ||||||
| CONFIG_MTD_CFI_GEOMETRY=n | CONFIG_MTD_CFI_GEOMETRY=n | ||||||
| CONFIG_MTD_CFI_I1=y | CONFIG_MTD_CFI_I1=y | ||||||
|   | |||||||
							
								
								
									
										229
									
								
								target/linux/ixp4xx-2.6/patches/600-wrt300nv2.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										229
									
								
								target/linux/ixp4xx-2.6/patches/600-wrt300nv2.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,229 @@ | |||||||
|  | diff -Nur linux-2.6.19.2/arch/arm/mach-ixp4xx/Kconfig linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/Kconfig | ||||||
|  | --- linux-2.6.19.2/arch/arm/mach-ixp4xx/Kconfig	2007-05-03 23:17:47.000000000 +0200 | ||||||
|  | +++ linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/Kconfig	2007-04-24 14:25:02.000000000 +0200 | ||||||
|  | @@ -65,6 +65,14 @@ | ||||||
|  |  	  WP18 or NP18A boards. For more information on this | ||||||
|  |  	  platform, see http://openwrt.org | ||||||
|  |   | ||||||
|  | +config MACH_WRT300NV2 | ||||||
|  | +	bool "Linksys WRT300N v2" | ||||||
|  | +	select PCI | ||||||
|  | +	help | ||||||
|  | +	  Say 'Y' here if you want your kernel to support Linksys'  | ||||||
|  | +	  WRT300N v2 router. For more information on this | ||||||
|  | +	  platform, see http://openwrt.org | ||||||
|  | + | ||||||
|  |  config ARCH_IXDP425 | ||||||
|  |  	bool "IXDP425" | ||||||
|  |  	help | ||||||
|  | diff -Nur linux-2.6.19.2/arch/arm/mach-ixp4xx/Makefile linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/Makefile | ||||||
|  | --- linux-2.6.19.2/arch/arm/mach-ixp4xx/Makefile	2007-05-03 23:17:47.000000000 +0200 | ||||||
|  | +++ linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/Makefile	2007-04-24 14:25:02.000000000 +0200 | ||||||
|  | @@ -15,6 +15,7 @@ | ||||||
|  |  obj-pci-$(CONFIG_MACH_WG302V2)		+= wg302v2-pci.o | ||||||
|  |  obj-pci-$(CONFIG_MACH_PRONGHORNMETRO)	+= pronghornmetro-pci.o | ||||||
|  |  obj-pci-$(CONFIG_MACH_COMPEX)		+= ixdp425-pci.o | ||||||
|  | +obj-pci-$(CONFIG_MACH_WRT300NV2)		+= wrt300nv2-pci.o | ||||||
|  |   | ||||||
|  |  obj-y	+= common.o | ||||||
|  |   | ||||||
|  | @@ -28,5 +29,6 @@ | ||||||
|  |  obj-$(CONFIG_MACH_WG302V2)	+= wg302v2-setup.o | ||||||
|  |  obj-$(CONFIG_MACH_PRONGHORNMETRO)	+= pronghornmetro-setup.o | ||||||
|  |  obj-$(CONFIG_MACH_COMPEX)	+= compex-setup.o | ||||||
|  | +obj-$(CONFIG_MACH_WRT300NV2)	+= wrt300nv2-setup.o | ||||||
|  |   | ||||||
|  |  obj-$(CONFIG_PCI)		+= $(obj-pci-$(CONFIG_PCI)) common-pci.o | ||||||
|  | diff -Nur linux-2.6.19.2/arch/arm/mach-ixp4xx/wrt300nv2-pci.c linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/wrt300nv2-pci.c | ||||||
|  | --- linux-2.6.19.2/arch/arm/mach-ixp4xx/wrt300nv2-pci.c	1970-01-01 01:00:00.000000000 +0100 | ||||||
|  | +++ linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/wrt300nv2-pci.c	2007-05-10 10:40:54.000000000 +0200 | ||||||
|  | @@ -0,0 +1,65 @@ | ||||||
|  | +/* | ||||||
|  | + * arch/arch/mach-ixp4xx/wrt300nv2-pci.c | ||||||
|  | + * | ||||||
|  | + * PCI setup routines for Linksys WRT300N v2 | ||||||
|  | + * | ||||||
|  | + * Copyright (C) 2007 Imre Kaloz <kaloz@openwrt.org> | ||||||
|  | + * | ||||||
|  | + * based on coyote-pci.c: | ||||||
|  | + *	Copyright (C) 2002 Jungo Software Technologies. | ||||||
|  | + *	Copyright (C) 2003 MontaVista Softwrae, Inc. | ||||||
|  | + * | ||||||
|  | + * Maintainer: 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/kernel.h> | ||||||
|  | +#include <linux/pci.h> | ||||||
|  | +#include <linux/init.h> | ||||||
|  | +#include <linux/irq.h> | ||||||
|  | + | ||||||
|  | +#include <asm/mach-types.h> | ||||||
|  | +#include <asm/hardware.h> | ||||||
|  | +#include <asm/irq.h> | ||||||
|  | + | ||||||
|  | +#include <asm/mach/pci.h> | ||||||
|  | + | ||||||
|  | +extern void ixp4xx_pci_preinit(void); | ||||||
|  | +extern int ixp4xx_setup(int nr, struct pci_sys_data *sys); | ||||||
|  | +extern struct pci_bus *ixp4xx_scan_bus(int nr, struct pci_sys_data *sys); | ||||||
|  | + | ||||||
|  | +void __init wrt300nv2_pci_preinit(void) | ||||||
|  | +{ | ||||||
|  | +	set_irq_type(IRQ_IXP4XX_GPIO8, IRQT_LOW); | ||||||
|  | + | ||||||
|  | +	ixp4xx_pci_preinit(); | ||||||
|  | +} | ||||||
|  | + | ||||||
|  | +static int __init wrt300nv2_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | ||||||
|  | +{ | ||||||
|  | +	if (slot == 1) | ||||||
|  | +		return IRQ_IXP4XX_GPIO8; | ||||||
|  | +	else return -1; | ||||||
|  | +} | ||||||
|  | + | ||||||
|  | +struct hw_pci wrt300nv2_pci __initdata = { | ||||||
|  | +	.nr_controllers = 1, | ||||||
|  | +	.preinit =        wrt300nv2_pci_preinit, | ||||||
|  | +	.swizzle =        pci_std_swizzle, | ||||||
|  | +	.setup =          ixp4xx_setup, | ||||||
|  | +	.scan =           ixp4xx_scan_bus, | ||||||
|  | +	.map_irq =        wrt300nv2_map_irq, | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +int __init wrt300nv2_pci_init(void) | ||||||
|  | +{ | ||||||
|  | +	if (machine_is_wrt300nv2()) | ||||||
|  | +		pci_common_init(&wrt300nv2_pci); | ||||||
|  | +	return 0; | ||||||
|  | +} | ||||||
|  | + | ||||||
|  | +subsys_initcall(wrt300nv2_pci_init); | ||||||
|  | diff -Nur linux-2.6.19.2/arch/arm/mach-ixp4xx/wrt300nv2-setup.c linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/wrt300nv2-setup.c | ||||||
|  | --- linux-2.6.19.2/arch/arm/mach-ixp4xx/wrt300nv2-setup.c	1970-01-01 01:00:00.000000000 +0100 | ||||||
|  | +++ linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/wrt300nv2-setup.c	2007-05-03 23:16:53.000000000 +0200 | ||||||
|  | @@ -0,0 +1,108 @@ | ||||||
|  | +/* | ||||||
|  | + * arch/arm/mach-ixp4xx/wrt300nv2-setup.c | ||||||
|  | + * | ||||||
|  | + * Board setup for the Linksys WRT300N v2 | ||||||
|  | + * | ||||||
|  | + * Copyright (C) 2007 Imre Kaloz <Kaloz@openwrt.org> | ||||||
|  | + * | ||||||
|  | + * based on coyote-setup.c: | ||||||
|  | + *      Copyright (C) 2003-2005 MontaVista Software, Inc. | ||||||
|  | + * | ||||||
|  | + * Author: Imre Kaloz <Kaloz@openwrt.org> | ||||||
|  | + */ | ||||||
|  | + | ||||||
|  | +#include <linux/kernel.h> | ||||||
|  | +#include <linux/init.h> | ||||||
|  | +#include <linux/device.h> | ||||||
|  | +#include <linux/serial.h> | ||||||
|  | +#include <linux/tty.h> | ||||||
|  | +#include <linux/serial_8250.h> | ||||||
|  | +#include <linux/slab.h> | ||||||
|  | + | ||||||
|  | +#include <asm/types.h> | ||||||
|  | +#include <asm/setup.h> | ||||||
|  | +#include <asm/memory.h> | ||||||
|  | +#include <asm/hardware.h> | ||||||
|  | +#include <asm/irq.h> | ||||||
|  | +#include <asm/mach-types.h> | ||||||
|  | +#include <asm/mach/arch.h> | ||||||
|  | +#include <asm/mach/flash.h> | ||||||
|  | + | ||||||
|  | +static struct flash_platform_data wrt300nv2_flash_data = { | ||||||
|  | +	.map_name	= "cfi_probe", | ||||||
|  | +	.width		= 2, | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +static struct resource wrt300nv2_flash_resource = { | ||||||
|  | +	.flags		= IORESOURCE_MEM, | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +static struct platform_device wrt300nv2_flash = { | ||||||
|  | +	.name		= "IXP4XX-Flash", | ||||||
|  | +	.id		= 0, | ||||||
|  | +	.dev		= { | ||||||
|  | +		.platform_data = &wrt300nv2_flash_data, | ||||||
|  | +	}, | ||||||
|  | +	.num_resources	= 1, | ||||||
|  | +	.resource	= &wrt300nv2_flash_resource, | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +static struct resource wrt300nv2_uart_resource = { | ||||||
|  | +	.start	= IXP4XX_UART2_BASE_PHYS, | ||||||
|  | +	.end	= IXP4XX_UART2_BASE_PHYS + 0x0fff, | ||||||
|  | +	.flags	= IORESOURCE_MEM, | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +static struct plat_serial8250_port wrt300nv2_uart_data[] = { | ||||||
|  | +	{ | ||||||
|  | +		.mapbase	= IXP4XX_UART2_BASE_PHYS, | ||||||
|  | +		.membase	= (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET, | ||||||
|  | +		.irq		= IRQ_IXP4XX_UART2, | ||||||
|  | +		.flags		= UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, | ||||||
|  | +		.iotype		= UPIO_MEM, | ||||||
|  | +		.regshift	= 2, | ||||||
|  | +		.uartclk	= IXP4XX_UART_XTAL, | ||||||
|  | +	}, | ||||||
|  | +	{ }, | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +static struct platform_device wrt300nv2_uart = { | ||||||
|  | +	.name		= "serial8250", | ||||||
|  | +	.id		= PLAT8250_DEV_PLATFORM, | ||||||
|  | +	.dev			= { | ||||||
|  | +		.platform_data	= wrt300nv2_uart_data, | ||||||
|  | +	}, | ||||||
|  | +	.num_resources	= 1, | ||||||
|  | +	.resource	= &wrt300nv2_uart_resource, | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +static struct platform_device *wrt300nv2_devices[] __initdata = { | ||||||
|  | +	&wrt300nv2_flash, | ||||||
|  | +	&wrt300nv2_uart | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +static void __init wrt300nv2_init(void) | ||||||
|  | +{ | ||||||
|  | +	ixp4xx_sys_init(); | ||||||
|  | + | ||||||
|  | +	wrt300nv2_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); | ||||||
|  | +	wrt300nv2_flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + SZ_32M - 1; | ||||||
|  | + | ||||||
|  | +	*IXP4XX_EXP_CS0 |= IXP4XX_FLASH_WRITABLE; | ||||||
|  | +	*IXP4XX_EXP_CS1 = *IXP4XX_EXP_CS0; | ||||||
|  | + | ||||||
|  | +	platform_add_devices(wrt300nv2_devices, ARRAY_SIZE(wrt300nv2_devices)); | ||||||
|  | +} | ||||||
|  | + | ||||||
|  | +#ifdef CONFIG_MACH_WRT300NV2 | ||||||
|  | +MACHINE_START(WRT300NV2, "Linksys WRT300N v2") | ||||||
|  | +	/* Maintainer: Imre Kaloz <kaloz@openwrt.org> */ | ||||||
|  | +	.phys_io	= IXP4XX_PERIPHERAL_BASE_PHYS, | ||||||
|  | +	.io_pg_offst	= ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, | ||||||
|  | +	.map_io		= ixp4xx_map_io, | ||||||
|  | +	.init_irq	= ixp4xx_init_irq, | ||||||
|  | +	.timer		= &ixp4xx_timer, | ||||||
|  | +	.boot_params	= 0x0100, | ||||||
|  | +	.init_machine	= wrt300nv2_init, | ||||||
|  | +MACHINE_END | ||||||
|  | +#endif | ||||||
|  | diff -Nur linux-2.6.19.2/include/asm-arm/arch-ixp4xx/uncompress.h linux-2.6.19.2-owrt/include/asm-arm/arch-ixp4xx/uncompress.h | ||||||
|  | --- linux-2.6.19.2/include/asm-arm/arch-ixp4xx/uncompress.h	2007-05-03 23:17:48.000000000 +0200 | ||||||
|  | +++ linux-2.6.19.2-owrt/include/asm-arm/arch-ixp4xx/uncompress.h	2007-04-24 14:25:02.000000000 +0200 | ||||||
|  | @@ -40,7 +40,7 @@ | ||||||
|  |  	/* | ||||||
|  |  	 * Some boards are using UART2 as console | ||||||
|  |  	 */ | ||||||
|  | -	if (machine_is_adi_coyote() || machine_is_gtwx5715() || machine_is_gateway7001() || machine_is_wg302v2() || machine_is_pronghorn() || machine_is_pronghorn_metro()) | ||||||
|  | +	if (machine_is_adi_coyote() || machine_is_gtwx5715() || machine_is_gateway7001() || machine_is_wg302v2() || machine_is_pronghorn() || machine_is_pronghorn_metro() || machine_is_wrt300nv2()) | ||||||
|  |  		uart_base = (volatile u32*) IXP4XX_UART2_BASE_PHYS; | ||||||
|  |  	else | ||||||
|  |  		uart_base = (volatile u32*) IXP4XX_UART1_BASE_PHYS; | ||||||
| @@ -0,0 +1,62 @@ | |||||||
|  | diff -Nur linux-2.6.19.2/arch/arm/mach-ixp4xx/wrt300nv2-setup.c linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/wrt300nv2-setup.c | ||||||
|  | --- linux-2.6.19.2/arch/arm/mach-ixp4xx/wrt300nv2-setup.c	2007-04-24 14:25:02.000000000 +0200 | ||||||
|  | +++ linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/wrt300nv2-setup.c	2007-04-24 14:31:09.000000000 +0200 | ||||||
|  | @@ -76,9 +76,57 @@ | ||||||
|  |  	.resource	= &wrt300nv2_uart_resource, | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  | +static struct resource res_mac0 = { | ||||||
|  | +	.start		= IXP4XX_EthB_BASE_PHYS, | ||||||
|  | +	.end		= IXP4XX_EthB_BASE_PHYS + 0x1ff, | ||||||
|  | +	.flags		= IORESOURCE_MEM, | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +static struct resource res_mac1 = { | ||||||
|  | +	.start		= IXP4XX_EthC_BASE_PHYS, | ||||||
|  | +	.end		= IXP4XX_EthC_BASE_PHYS + 0x1ff, | ||||||
|  | +	.flags		= IORESOURCE_MEM, | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +static struct mac_plat_info plat_mac0 = { | ||||||
|  | +	.npe_id		= 1, | ||||||
|  | +	.phy_id		= -1, | ||||||
|  | +	.eth_id		= 0, | ||||||
|  | +	.rxq_id		= 27, | ||||||
|  | +	.txq_id		= 24, | ||||||
|  | +	.rxdoneq_id	= 4, | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +static struct mac_plat_info plat_mac1 = { | ||||||
|  | +	.npe_id		= 2, | ||||||
|  | +	.phy_id		= 1, | ||||||
|  | +	.eth_id		= 1, | ||||||
|  | +	.rxq_id		= 28, | ||||||
|  | +	.txq_id		= 25, | ||||||
|  | +	.rxdoneq_id	= 5, | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +static struct platform_device mac0 = { | ||||||
|  | +	.name		= "ixp4xx_mac", | ||||||
|  | +	.id		= 0, | ||||||
|  | +	.dev.platform_data = &plat_mac0, | ||||||
|  | +	.num_resources	= 1, | ||||||
|  | +	.resource	= &res_mac0, | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +static struct platform_device mac1 = { | ||||||
|  | +	.name		= "ixp4xx_mac", | ||||||
|  | +	.id		= 1, | ||||||
|  | +	.dev.platform_data = &plat_mac1, | ||||||
|  | +	.num_resources	= 1, | ||||||
|  | +	.resource	= &res_mac1, | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  |  static struct platform_device *wrt300nv2_devices[] __initdata = { | ||||||
|  |  	&wrt300nv2_flash, | ||||||
|  | -	&wrt300nv2_uart | ||||||
|  | +	&wrt300nv2_uart, | ||||||
|  | +	&mac0, | ||||||
|  | +	&mac1, | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  |  static void __init wrt300nv2_init(void) | ||||||
		Reference in New Issue
	
	Block a user
	 Imre Kaloz
					Imre Kaloz