From d434d3275176887af9eb60386a661962420894ca Mon Sep 17 00:00:00 2001 From: Martin Michlmayr Date: Sun, 13 Jun 2010 11:13:18 +0000 Subject: [PATCH] Add support for OpenRD-Ultimate. svn path=/dists/sid/linux-2.6/; revision=15863 --- debian/changelog | 1 + debian/config/armel/config.kirkwood | 2 + .../patches/features/arm/openrd-combine.patch | 283 ++++++++++++++++++ .../features/arm/openrd-ultimate.patch | 102 +++++++ debian/patches/series/16 | 2 + 5 files changed, 390 insertions(+) create mode 100644 debian/patches/features/arm/openrd-combine.patch create mode 100644 debian/patches/features/arm/openrd-ultimate.patch diff --git a/debian/changelog b/debian/changelog index 6c2d50e43..9fdb53e64 100644 --- a/debian/changelog +++ b/debian/changelog @@ -30,6 +30,7 @@ linux-2.6 (2.6.32-16) UNRELEASED; urgency=low * OpenRD-Base: revert patch "allow SD/UART1 selection" since it never made it upstream. * ARM: update mach types. + * Add support for OpenRD-Ultimate. -- dann frazier Tue, 01 Jun 2010 09:23:57 -0600 diff --git a/debian/config/armel/config.kirkwood b/debian/config/armel/config.kirkwood index 7dd10ca35..4d3a86674 100644 --- a/debian/config/armel/config.kirkwood +++ b/debian/config/armel/config.kirkwood @@ -62,8 +62,10 @@ CONFIG_MACH_ESATA_SHEEVAPLUG=y CONFIG_MACH_GURUPLUG=y CONFIG_MACH_TS219=y CONFIG_MACH_TS41X=y +CONFIG_MACH_OPENRD=y CONFIG_MACH_OPENRD_BASE=y CONFIG_MACH_OPENRD_CLIENT=y +CONFIG_MACH_OPENRD_ULTIMATE=y ## ## file: arch/arm/mm/Kconfig diff --git a/debian/patches/features/arm/openrd-combine.patch b/debian/patches/features/arm/openrd-combine.patch new file mode 100644 index 000000000..fc2d23801 --- /dev/null +++ b/debian/patches/features/arm/openrd-combine.patch @@ -0,0 +1,283 @@ +From: Alexander Clouter +Date: Mon, 18 Jan 2010 23:38:19 +0000 (+0000) +Subject: [ARM] kirkwood: combine support for openrd base/client support +X-Git-Tag: v2.6.34-rc2~66^2~53^2~9 +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=b2fdb5660fccc060e47658baad8911a963397ced + +[ARM] kirkwood: combine support for openrd base/client support + +Inspired by the mach-ep93xx flattening work, there is really not +much difference between the OpenRD base and client board support +so they should be merged together. + +Signed-off-by: Alexander Clouter +Acked-by: Simon Kagstrom +Signed-off-by: Nicolas Pitre + +[tbm: adapted Kconfig and Makefile] + +--- + +diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig +index f6c6196..4ac6f46 100644 +--- a/arch/arm/mach-kirkwood/Kconfig ++++ b/arch/arm/mach-kirkwood/Kconfig +@@ -57,14 +57,19 @@ + QNAP TS-410, TS-410U, TS-419P and TS-419U Turbo NAS + devices. + ++config MACH_OPENRD ++ bool ++ + config MACH_OPENRD_BASE + bool "Marvell OpenRD Base Board" ++ select MACH_OPENRD + help + Say 'Y' here if you want your kernel to support the + Marvell OpenRD Base Board. + + config MACH_OPENRD_CLIENT + bool "Marvell OpenRD Client Board" ++ select MACH_OPENRD + help + Say 'Y' here if you want your kernel to support the + Marvell OpenRD Client Board. +diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile +index d4d7f53..df91d07 100644 +--- a/arch/arm/mach-kirkwood/Makefile ++++ b/arch/arm/mach-kirkwood/Makefile +@@ -9,7 +9,6 @@ + obj-$(CONFIG_MACH_GURUPLUG) += guruplug-setup.o + obj-$(CONFIG_MACH_TS219) += ts219-setup.o + obj-$(CONFIG_MACH_TS41X) += ts41x-setup.o +-obj-$(CONFIG_MACH_OPENRD_BASE) += openrd_base-setup.o +-obj-$(CONFIG_MACH_OPENRD_CLIENT) += openrd_client-setup.o ++obj-$(CONFIG_MACH_OPENRD) += openrd-setup.o + + obj-$(CONFIG_CPU_IDLE) += cpuidle.o +diff --git a/arch/arm/mach-kirkwood/openrd-setup.c b/arch/arm/mach-kirkwood/openrd-setup.c +new file mode 100644 +index 0000000..ad3f1ec +--- /dev/null ++++ b/arch/arm/mach-kirkwood/openrd-setup.c +@@ -0,0 +1,118 @@ ++/* ++ * arch/arm/mach-kirkwood/openrd-setup.c ++ * ++ * Marvell OpenRD (Base|Client) Board Setup ++ * ++ * This file is licensed under the terms of the GNU General Public ++ * License version 2. This program is licensed "as is" without any ++ * warranty of any kind, whether express or implied. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "common.h" ++#include "mpp.h" ++ ++static struct mtd_partition openrd_nand_parts[] = { ++ { ++ .name = "u-boot", ++ .offset = 0, ++ .size = SZ_1M, ++ .mask_flags = MTD_WRITEABLE ++ }, { ++ .name = "uImage", ++ .offset = MTDPART_OFS_NXTBLK, ++ .size = SZ_4M ++ }, { ++ .name = "root", ++ .offset = MTDPART_OFS_NXTBLK, ++ .size = MTDPART_SIZ_FULL ++ }, ++}; ++ ++static struct mv643xx_eth_platform_data openrd_ge00_data = { ++ .phy_addr = MV643XX_ETH_PHY_ADDR(8), ++}; ++ ++static struct mv643xx_eth_platform_data openrd_ge01_data = { ++ .phy_addr = MV643XX_ETH_PHY_ADDR(24), ++}; ++ ++static struct mv_sata_platform_data openrd_sata_data = { ++ .n_ports = 2, ++}; ++ ++static struct mvsdio_platform_data openrd_mvsdio_data = { ++ .gpio_card_detect = 29, /* MPP29 used as SD card detect */ ++}; ++ ++static unsigned int openrd_mpp_config[] __initdata = { ++ MPP29_GPIO, ++ 0 ++}; ++ ++static void __init openrd_init(void) ++{ ++ /* ++ * Basic setup. Needs to be called early. ++ */ ++ kirkwood_init(); ++ kirkwood_mpp_conf(openrd_mpp_config); ++ ++ kirkwood_uart0_init(); ++ kirkwood_nand_init(ARRAY_AND_SIZE(openrd_nand_parts), 25); ++ ++ kirkwood_ehci_init(); ++ ++ kirkwood_ge00_init(&openrd_ge00_data); ++ if (machine_is_openrd_client()) ++ kirkwood_ge01_init(&openrd_ge01_data); ++ kirkwood_sata_init(&openrd_sata_data); ++ kirkwood_sdio_init(&openrd_mvsdio_data); ++ ++ kirkwood_i2c_init(); ++} ++ ++static int __init openrd_pci_init(void) ++{ ++ if (machine_is_openrd_base() || machine_is_openrd_client()) ++ kirkwood_pcie_init(); ++ ++ return 0; ++} ++subsys_initcall(openrd_pci_init); ++ ++#ifdef CONFIG_MACH_OPENRD_BASE ++MACHINE_START(OPENRD_BASE, "Marvell OpenRD Base Board") ++ /* Maintainer: Dhaval Vasa */ ++ .phys_io = KIRKWOOD_REGS_PHYS_BASE, ++ .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc, ++ .boot_params = 0x00000100, ++ .init_machine = openrd_init, ++ .map_io = kirkwood_map_io, ++ .init_irq = kirkwood_init_irq, ++ .timer = &kirkwood_timer, ++MACHINE_END ++#endif ++ ++#ifdef CONFIG_MACH_OPENRD_CLIENT ++MACHINE_START(OPENRD_CLIENT, "Marvell OpenRD Client Board") ++ /* Maintainer: Dhaval Vasa */ ++ .phys_io = KIRKWOOD_REGS_PHYS_BASE, ++ .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc, ++ .boot_params = 0x00000100, ++ .init_machine = openrd_init, ++ .map_io = kirkwood_map_io, ++ .init_irq = kirkwood_init_irq, ++ .timer = &kirkwood_timer, ++MACHINE_END ++#endif +diff --git a/arch/arm/mach-kirkwood/openrd_base-setup.c b/arch/arm/mach-kirkwood/openrd_base-setup.c +deleted file mode 100644 +index 77617c7..0000000 +--- a/arch/arm/mach-kirkwood/openrd_base-setup.c ++++ /dev/null +@@ -1,96 +0,0 @@ +-/* +- * arch/arm/mach-kirkwood/openrd_base-setup.c +- * +- * Marvell OpenRD Base Board Setup +- * +- * This file is licensed under the terms of the GNU General Public +- * License version 2. This program is licensed "as is" without any +- * warranty of any kind, whether express or implied. +- */ +- +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include "common.h" +-#include "mpp.h" +- +-static struct mtd_partition openrd_base_nand_parts[] = { +- { +- .name = "u-boot", +- .offset = 0, +- .size = SZ_1M +- }, { +- .name = "uImage", +- .offset = MTDPART_OFS_NXTBLK, +- .size = SZ_4M +- }, { +- .name = "root", +- .offset = MTDPART_OFS_NXTBLK, +- .size = MTDPART_SIZ_FULL +- }, +-}; +- +-static struct mv643xx_eth_platform_data openrd_base_ge00_data = { +- .phy_addr = MV643XX_ETH_PHY_ADDR(8), +-}; +- +-static struct mv_sata_platform_data openrd_base_sata_data = { +- .n_ports = 2, +-}; +- +-static struct mvsdio_platform_data openrd_base_mvsdio_data = { +- .gpio_card_detect = 29, /* MPP29 used as SD card detect */ +-}; +- +-static unsigned int openrd_base_mpp_config[] __initdata = { +- MPP29_GPIO, +- 0 +-}; +- +-static void __init openrd_base_init(void) +-{ +- /* +- * Basic setup. Needs to be called early. +- */ +- kirkwood_init(); +- kirkwood_mpp_conf(openrd_base_mpp_config); +- +- kirkwood_uart0_init(); +- kirkwood_nand_init(ARRAY_AND_SIZE(openrd_base_nand_parts), 25); +- +- kirkwood_ehci_init(); +- +- kirkwood_ge00_init(&openrd_base_ge00_data); +- kirkwood_sata_init(&openrd_base_sata_data); +- kirkwood_sdio_init(&openrd_base_mvsdio_data); +- +- kirkwood_i2c_init(); +-} +- +-static int __init openrd_base_pci_init(void) +-{ +- if (machine_is_openrd_base()) +- kirkwood_pcie_init(); +- +- return 0; +- } +-subsys_initcall(openrd_base_pci_init); +- +- +-MACHINE_START(OPENRD_BASE, "Marvell OpenRD Base Board") +- /* Maintainer: Dhaval Vasa */ +- .phys_io = KIRKWOOD_REGS_PHYS_BASE, +- .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc, +- .boot_params = 0x00000100, +- .init_machine = openrd_base_init, +- .map_io = kirkwood_map_io, +- .init_irq = kirkwood_init_irq, +- .timer = &kirkwood_timer, +-MACHINE_END diff --git a/debian/patches/features/arm/openrd-ultimate.patch b/debian/patches/features/arm/openrd-ultimate.patch new file mode 100644 index 000000000..4beb542b7 --- /dev/null +++ b/debian/patches/features/arm/openrd-ultimate.patch @@ -0,0 +1,102 @@ +Hi! +This patch adds support for the OpenRD Ultimate machine(could be found at http://www.arm.linux.org.uk/developer/machines/list.php?id=2884) + +Besides adding machine description this patch adds correction for PHY address for Ultimate version. + +Differences from the previous attempt: + - Correctly filled instances of mv643xx_eth_platform_data in case of ultimate version. + - Do PCIE initialization for Ultimate version along with Base and Client + - Init ge01 if (!openrd-base) to make the code cleaner + +Regards, + +-- Dmytro Milinevskyy + +Signed-off-by: Dmytro Milinevskyy + +[tbm: adapted Kconfig] + +--- + + arch/arm/mach-kirkwood/Kconfig | 7 +++++++ + arch/arm/mach-kirkwood/openrd-setup.c | 27 ++++++++++++++++++++++++--- + 2 files changed, 31 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig +index 29b2163..110a3b8 100644 +--- a/arch/arm/mach-kirkwood/Kconfig ++++ b/arch/arm/mach-kirkwood/Kconfig +@@ -74,6 +74,13 @@ + Say 'Y' here if you want your kernel to support the + Marvell OpenRD Client Board. + ++config MACH_OPENRD_ULTIMATE ++ bool "Marvell OpenRD Ultimate Board" ++ select MACH_OPENRD ++ help ++ Say 'Y' here if you want your kernel to support the ++ Marvell OpenRD Ultimate Board. ++ + endmenu + + endif +diff --git a/arch/arm/mach-kirkwood/openrd-setup.c b/arch/arm/mach-kirkwood/openrd-setup.c +index ad3f1ec..284b00f 100644 +--- a/arch/arm/mach-kirkwood/openrd-setup.c ++++ b/arch/arm/mach-kirkwood/openrd-setup.c +@@ -1,7 +1,7 @@ + /* + * arch/arm/mach-kirkwood/openrd-setup.c + * +- * Marvell OpenRD (Base|Client) Board Setup ++ * Marvell OpenRD (Base|Client|Ultimate) Board Setup + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed "as is" without any +@@ -73,9 +73,15 @@ static void __init openrd_init(void) + + kirkwood_ehci_init(); + ++ if (machine_is_openrd_ultimate()) { ++ openrd_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); ++ openrd_ge01_data.phy_addr = MV643XX_ETH_PHY_ADDR(1); ++ } ++ + kirkwood_ge00_init(&openrd_ge00_data); +- if (machine_is_openrd_client()) ++ if (!machine_is_openrd_base()) + kirkwood_ge01_init(&openrd_ge01_data); ++ + kirkwood_sata_init(&openrd_sata_data); + kirkwood_sdio_init(&openrd_mvsdio_data); + +@@ -84,7 +90,9 @@ static void __init openrd_init(void) + + static int __init openrd_pci_init(void) + { +- if (machine_is_openrd_base() || machine_is_openrd_client()) ++ if (machine_is_openrd_base() || ++ machine_is_openrd_client() || ++ machine_is_openrd_ultimate()) + kirkwood_pcie_init(); + + return 0; +@@ -116,3 +124,16 @@ MACHINE_START(OPENRD_CLIENT, "Marvell OpenRD Client Board") + .timer = &kirkwood_timer, + MACHINE_END + #endif ++ ++#ifdef CONFIG_MACH_OPENRD_ULTIMATE ++MACHINE_START(OPENRD_ULTIMATE, "Marvell OpenRD Ultimate Board") ++ /* Maintainer: Dhaval Vasa */ ++ .phys_io = KIRKWOOD_REGS_PHYS_BASE, ++ .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc, ++ .boot_params = 0x00000100, ++ .init_machine = openrd_init, ++ .map_io = kirkwood_map_io, ++ .init_irq = kirkwood_init_irq, ++ .timer = &kirkwood_timer, ++MACHINE_END ++#endif +-- +1.7.1 diff --git a/debian/patches/series/16 b/debian/patches/series/16 index a89f33c67..b8b9dd855 100644 --- a/debian/patches/series/16 +++ b/debian/patches/series/16 @@ -130,3 +130,5 @@ + bugfix/x86/eeepc-laptop-check-wireless-hotplug-events.patch - features/arm/openrd-base-uart.patch + features/arm/mach-types-update-2010-06-13.patch ++ features/arm/openrd-combine.patch ++ features/arm/openrd-ultimate.patch