diff -Nur linux-2.6.23.1/arch/arm/mach-ixp4xx/ap1000-setup.c linux-2.6.23.1-owrt/arch/arm/mach-ixp4xx/ap1000-setup.c --- linux-2.6.23.1/arch/arm/mach-ixp4xx/ap1000-setup.c 1970-01-01 01:00:00.000000000 +0100 +++ linux-2.6.23.1-owrt/arch/arm/mach-ixp4xx/ap1000-setup.c 2007-11-14 13:58:58.000000000 +0100 @@ -0,0 +1,151 @@ +/* + * arch/arm/mach-ixp4xx/ap1000-setup.c + * + * Lanready AP-1000 + * + * Copyright (C) 2007 Imre Kaloz + * + * based on ixdp425-setup.c: + * Copyright (C) 2003-2005 MontaVista Software, Inc. + * + * Author: Imre Kaloz + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +static struct flash_platform_data ap1000_flash_data = { + .map_name = "cfi_probe", + .width = 2, +}; + +static struct resource ap1000_flash_resource = { + .flags = IORESOURCE_MEM, +}; + +static struct platform_device ap1000_flash = { + .name = "IXP4XX-Flash", + .id = 0, + .dev = { + .platform_data = &ap1000_flash_data, + }, + .num_resources = 1, + .resource = &ap1000_flash_resource, +}; + +static struct resource ap1000_uart_resources[] = { + { + .start = IXP4XX_UART1_BASE_PHYS, + .end = IXP4XX_UART1_BASE_PHYS + 0x0fff, + .flags = IORESOURCE_MEM + }, + { + .start = IXP4XX_UART2_BASE_PHYS, + .end = IXP4XX_UART2_BASE_PHYS + 0x0fff, + .flags = IORESOURCE_MEM + } +}; + +static struct plat_serial8250_port ap1000_uart_data[] = { + { + .mapbase = IXP4XX_UART1_BASE_PHYS, + .membase = (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET, + .irq = IRQ_IXP4XX_UART1, + .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, + .iotype = UPIO_MEM, + .regshift = 2, + .uartclk = IXP4XX_UART_XTAL, + }, + { + .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 ap1000_uart = { + .name = "serial8250", + .id = PLAT8250_DEV_PLATFORM, + .dev.platform_data = ap1000_uart_data, + .num_resources = 2, + .resource = ap1000_uart_resources +}; + +static struct platform_device *ap1000_devices[] __initdata = { + &ap1000_flash, + &ap1000_uart +}; + +static char ap1000_mem_fixup[] __initdata = "mem=64M "; + +static void __init ap1000_fixup(struct machine_desc *desc, + struct tag *tags, char **cmdline, struct meminfo *mi) + +{ + struct tag *t = tags; + char *p = *cmdline; + + /* Find the end of the tags table, taking note of any cmdline tag. */ + for (; t->hdr.size; t = tag_next(t)) { + if (t->hdr.tag == ATAG_CMDLINE) { + p = t->u.cmdline.cmdline; + } + } + + /* Overwrite the end of the table with a new cmdline tag. */ + t->hdr.tag = ATAG_CMDLINE; + t->hdr.size = (sizeof (struct tag_header) + + strlen(ap1000_mem_fixup) + strlen(p) + 1 + 4) >> 2; + strlcpy(t->u.cmdline.cmdline, ap1000_mem_fixup, COMMAND_LINE_SIZE); + strlcpy(t->u.cmdline.cmdline + strlen(ap1000_mem_fixup), p, + COMMAND_LINE_SIZE - strlen(ap1000_mem_fixup)); + + /* Terminate the table. */ + t = tag_next(t); + t->hdr.tag = ATAG_NONE; + t->hdr.size = 0; +} + +static void __init ap1000_init(void) +{ + ixp4xx_sys_init(); + + ap1000_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); + ap1000_flash_resource.end = + IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1; + + platform_add_devices(ap1000_devices, ARRAY_SIZE(ap1000_devices)); +} + +#ifdef CONFIG_MACH_AP1000 +MACHINE_START(AP1000, "Lanready AP-1000") + /* Maintainer: Imre Kaloz */ + .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, + .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, + .fixup = ap1000_fixup, + .map_io = ixp4xx_map_io, + .init_irq = ixp4xx_init_irq, + .timer = &ixp4xx_timer, + .boot_params = 0x0100, + .init_machine = ap1000_init, +MACHINE_END +#endif diff -Nur linux-2.6.23.1/arch/arm/mach-ixp4xx/ixdp425-pci.c linux-2.6.23.1-owrt/arch/arm/mach-ixp4xx/ixdp425-pci.c --- linux-2.6.23.1/arch/arm/mach-ixp4xx/ixdp425-pci.c 2007-11-14 13:15:50.000000000 +0100 +++ linux-2.6.23.1-owrt/arch/arm/mach-ixp4xx/ixdp425-pci.c 2007-11-14 13:27:16.000000000 +0100 @@ -66,7 +66,8 @@ int __init ixdp425_pci_init(void) { if (machine_is_ixdp425() || machine_is_ixcdp1100() || - machine_is_ixdp465() || machine_is_kixrp435() || machine_is_compex()) + machine_is_ixdp465() || machine_is_kixrp435() || + machine_is_compex() || machine_is_ap1000()) pci_common_init(&ixdp425_pci); return 0; } diff -Nur linux-2.6.23.1/arch/arm/mach-ixp4xx/Kconfig linux-2.6.23.1-owrt/arch/arm/mach-ixp4xx/Kconfig --- linux-2.6.23.1/arch/arm/mach-ixp4xx/Kconfig 2007-11-14 13:15:50.000000000 +0100 +++ linux-2.6.23.1-owrt/arch/arm/mach-ixp4xx/Kconfig 2007-11-14 13:25:07.000000000 +0100 @@ -89,6 +89,14 @@ WRT300N v2 router. For more information on this platform, see http://openwrt.org +config MACH_AP1000 + bool "Lanready AP-1000" + select PCI + help + Say 'Y' here if you want your kernel to support Lanready's + AP1000 board. For more information on this + platform, see http://openwrt.org + config ARCH_IXDP425 bool "IXDP425" help diff -Nur linux-2.6.23.1/arch/arm/mach-ixp4xx/Makefile linux-2.6.23.1-owrt/arch/arm/mach-ixp4xx/Makefile --- linux-2.6.23.1/arch/arm/mach-ixp4xx/Makefile 2007-11-14 13:15:50.000000000 +0100 +++ linux-2.6.23.1-owrt/arch/arm/mach-ixp4xx/Makefile 2007-11-14 13:31:29.000000000 +0100 @@ -20,6 +20,7 @@ obj-pci-$(CONFIG_MACH_COMPEX) += ixdp425-pci.o obj-pci-$(CONFIG_MACH_WRT300NV2) += wrt300nv2-pci.o obj-pci-$(CONFIG_MACH_SIDEWINDER) += sidewinder-pci.o +obj-pci-$(CONFIG_MACH_AP1000) += ixdp425-pci.o obj-y += common.o @@ -38,5 +39,6 @@ obj-$(CONFIG_MACH_COMPEX) += compex-setup.o obj-$(CONFIG_MACH_WRT300NV2) += wrt300nv2-setup.o obj-$(CONFIG_MACH_SIDEWINDER) += sidewinder-setup.o +obj-$(CONFIG_MACH_AP1000) += ap1000-setup.o obj-$(CONFIG_PCI) += $(obj-pci-$(CONFIG_PCI)) common-pci.o ' href='#n71'>71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
/dts-v1/;

#include "mt7620a.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

/ {
	compatible = "asus,rt-ac51u", "ralink,mt7620a-soc";
	model = "Asus RT-AC51U";

	aliases {
		led-boot = &led_power;
		led-failsafe = &led_power;
		led-running = &led_power;
		led-upgrade = &led_power;
	};

	leds {
		compatible = "gpio-leds";

		led_power: power {
			label = "rt-ac51u:blue:power";
			gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
		};

		usb {
			label = "rt-ac51u:blue:usb";
			gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
			trigger-sources = <&ohci_port1>, <&ehci_port1>;
			linux,default-trigger = "usbport";
		};

		wifi {
			label = "rt-ac51u:blue:wifi";
			gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
		};
	};

	keys {
		compatible = "gpio-keys";

		reset {
			label = "reset";
			gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_RESTART>;
		};

		wps {
			label = "wps";
			gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_WPS_BUTTON>;
		};
	};
};

&spi0 {
	status = "okay";

	m25p80@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <10000000>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				label = "u-boot";
				reg = <0x0 0x30000>;
				read-only;
			};

			partition@30000 {
				label = "u-boot-env";
				reg = <0x30000 0x10000>;
				read-only;
			};

			factory: partition@40000 {
				label = "factory";
				reg = <0x40000 0x10000>;
				read-only;
			};

			partition@50000 {
				compatible = "denx,uimage";
				label = "firmware";
				reg = <0x50000 0xfb0000>;
			};
		};
	};
};

&ehci {
	status = "okay";
};

&ohci {
	status = "okay";
};

&gpio0 {
	enable-leds {
		gpio-hog;
		line-name = "enable-leds";
		output-low;
		gpios = <10 GPIO_ACTIVE_HIGH>;
	};
};

&gpio3 {
	status = "okay";
};

&ethernet {
	status = "okay";
	mtd-mac-address = <&factory 0x4>;
	mediatek,portmap = "wllll";
};

&wmac {
	ralink,mtd-eeprom = <&factory 0x0>;
};

&state_default {
	gpio {
		groups = "i2c", "wled", "uartf";
		function = "gpio";
	};
};

&pcie {
	status = "okay";
};

&pcie0 {
	wifi@0,0 {
		reg = <0x0000 0 0 0 0>;
		mediatek,mtd-eeprom = <&factory 0x8000>;
	};
};