On Tue, 2012-03-20 at 09:00 +0000, Ian Campbell wrote: > It looks like the exact patches which are going upstream have evolved a > bit since then (and there are now others which cover more functionality) > so I will retry with those. So... I backported thepatches which went into v3.4-rc1 to v3.2 and applied them to the Debian kernel package (full diff of that vs 3.2.14-1 is attached). I've also pushed the backported branch to: git://gitorious.org/ijc/linux.git debian/squeeze/dreamplug (branch is actually based on 3.2.9) The upstream commits are: e871b87a1e97 ARM: kirkwood: use devicetree for rtc-mv ea983ede1195 ARM: kirkwood: rtc-mv devicetree bindings 163f2cea673a ARM: kirkwood: fdt: define uart[01] as disabled, enable uart0 6fa6b8781fbd ARM: kirkwood: fdt: facilitate new boards during fdt migration 2b45e05f51a7 ARM: kirkwood: fdt: absorb kirkwood_init() b77816dea3e4 ARM: kirkwood: fdt: use mrvl ticker symbol a855a7ced4f5 ARM: orion: wdt: use resource vice direct access 7399532065a6 ARM: Kirkwood: Remove tclk from kirkwood_asoc_platform_data. d34b7d452397 ARM: orion: spi: remove enable_clock_fix which is not used 759a45185ac0 ARM: kirkwood: convert uart0 to devicetree. 3d468b6d6052 ARM: kirkwood: add dreamplug (fdt) support. There is one additional build fix which I have sent upstream: http://lists.arm.linux.org.uk/lurker/message/20120406.131038.d940552d.en.html The total impact is: $ git diff --stat v3.2.9 HEAD arch/arm/boot/dts/kirkwood-dreamplug.dts | 24 +++++ arch/arm/boot/dts/kirkwood.dtsi | 36 +++++++ arch/arm/mach-kirkwood/Kconfig | 14 +++ arch/arm/mach-kirkwood/Makefile | 2 + arch/arm/mach-kirkwood/Makefile.boot | 2 + arch/arm/mach-kirkwood/board-dreamplug.c | 152 ++++++++++++++++++++++++++++++ arch/arm/mach-kirkwood/board-dt.c | 75 +++++++++++++++ arch/arm/mach-kirkwood/common.c | 11 +- arch/arm/mach-kirkwood/common.h | 15 +++ arch/arm/plat-orion/common.c | 7 +- drivers/rtc/rtc-mv.c | 9 ++ drivers/spi/spi-orion.c | 5 - drivers/watchdog/orion_wdt.c | 24 +++-- include/linux/spi/orion_spi.h | 1 - Of this the non-kirkwood changes are from: ea983ede1195 ARM: kirkwood: rtc-mv devicetree bindings a855a7ced4f5 ARM: orion: wdt: use resource vice direct access 7399532065a6 ARM: Kirkwood: Remove tclk from kirkwood_asoc_platform_data. d34b7d452397 ARM: orion: spi: remove enable_clock_fix which is not used By my inspection these changes (which include the plat-orion change and the rtc, spi and watchdog driver changes) are fine WRT other platforms using these drivers and obviously if they weren't then that would be a bug which can & should be fixed with upstream. The changes to mach-kirkwood/common.[ch] are purely about exporting some functions (i.e. removing the static and adding a prototype to a header), this is part of the upstream strategy for minimising the impact on non-DT kirkwood platforms. Apart from the build fix all these changes are in the mainline kernel. Enabling DT on a flavour appears to mangle the ABI in ways which I expect is not going to be easy to avoid so this change will probably have to wait until an ABI bump. These Dreamplug patches add DT support for kirkwood in a way which is designed not to interfere with existing non-DT platforms and more generally upstream has done things in a way that FDT and ATAG platforms can safely be supported using the same kernel image. Ian. -- Ian Campbell BOFH excuse #165: Backbone Scoliosis
From 1ca1c4d66bc27558e2e003898dfa1b88354a4361 Mon Sep 17 00:00:00 2001 From: Ian Campbell <ijc@hellion.org.uk> Date: Fri, 6 Apr 2012 13:38:55 +0100 Subject: [PATCH] [armel] add support for dreamplug --- linux-2.6/debian/changelog | 6 + linux-2.6/debian/config/armel/config.kirkwood | 4 + ...d-Remove-tclk-from-kirkwood_asoc_platform.patch | 34 ++ .../ARM-kirkwood-add-dreamplug-fdt-support.patch | 306 ++++++++++++++++ .../ARM-kirkwood-add-missing-kexec.h-include.patch | 32 ++ .../arm/ARM-kirkwood-backport-to-3.2.patch | 24 ++ .../ARM-kirkwood-convert-uart0-to-devicetree.patch | 50 +++ .../ARM-kirkwood-fdt-absorb-kirkwood_init.patch | 149 ++++++++ ...d-fdt-define-uart-01-as-disabled-enable-u.patch | 79 ++++ ...d-fdt-facilitate-new-boards-during-fdt-mi.patch | 372 ++++++++++++++++++++ .../ARM-kirkwood-fdt-use-mrvl-ticker-symbol.patch | 51 +++ .../ARM-kirkwood-use-devicetree-for-rtc-mv.patch | 71 ++++ ...orion-wdt-use-resource-vice-direct-access.patch | 143 ++++++++ linux-2.6/debian/patches/series/base | 13 + 14 files changed, 1334 insertions(+), 0 deletions(-) create mode 100644 linux-2.6/debian/patches/features/arm/ARM-Kirkwood-Remove-tclk-from-kirkwood_asoc_platform.patch create mode 100644 linux-2.6/debian/patches/features/arm/ARM-kirkwood-add-dreamplug-fdt-support.patch create mode 100644 linux-2.6/debian/patches/features/arm/ARM-kirkwood-add-missing-kexec.h-include.patch create mode 100644 linux-2.6/debian/patches/features/arm/ARM-kirkwood-backport-to-3.2.patch create mode 100644 linux-2.6/debian/patches/features/arm/ARM-kirkwood-convert-uart0-to-devicetree.patch create mode 100644 linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-absorb-kirkwood_init.patch create mode 100644 linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-define-uart-01-as-disabled-enable-u.patch create mode 100644 linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-facilitate-new-boards-during-fdt-mi.patch create mode 100644 linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-use-mrvl-ticker-symbol.patch create mode 100644 linux-2.6/debian/patches/features/arm/ARM-kirkwood-use-devicetree-for-rtc-mv.patch create mode 100644 linux-2.6/debian/patches/features/arm/ARM-orion-wdt-use-resource-vice-direct-access.patch diff --git a/linux-2.6/debian/changelog b/linux-2.6/debian/changelog index ed59a0d..f06809b 100644 --- a/linux-2.6/debian/changelog +++ b/linux-2.6/debian/changelog @@ -1,3 +1,9 @@ +linux-2.6 (3.2.14-2) UNRELEASED; urgency=low + + * [armel] add support for Dreamplug. + + -- Ian Campbell <ijc@hellion.org.uk> Fri, 06 Apr 2012 13:38:21 +0100 + linux-2.6 (3.2.14-1) unstable; urgency=low * New upstream stable update: diff --git a/linux-2.6/debian/config/armel/config.kirkwood b/linux-2.6/debian/config/armel/config.kirkwood index 992f634..358aeab 100644 --- a/linux-2.6/debian/config/armel/config.kirkwood +++ b/linux-2.6/debian/config/armel/config.kirkwood @@ -37,6 +37,7 @@ CONFIG_LEDS_CPU=y CONFIG_UACCESS_WITH_MEMCPY=y CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 +# CONFIG_ARM_APPENDED_DTB is not set CONFIG_CMDLINE="" # CONFIG_XIP_KERNEL is not set CONFIG_KEXEC=y @@ -57,6 +58,8 @@ CONFIG_MACH_MV88F6281GTW_GE=y CONFIG_MACH_SHEEVAPLUG=y CONFIG_MACH_ESATA_SHEEVAPLUG=y CONFIG_MACH_GURUPLUG=y +CONFIG_ARCH_KIRKWOOD_DT=y +CONFIG_MACH_DREAMPLUG_DT=y CONFIG_MACH_TS219=y CONFIG_MACH_TS41X=y CONFIG_MACH_DOCKSTAR=y @@ -558,6 +561,7 @@ CONFIG_SERIAL_8250_PCI=y CONFIG_SERIAL_8250_NR_UARTS=4 CONFIG_SERIAL_8250_RUNTIME_UARTS=2 # CONFIG_SERIAL_8250_EXTENDED is not set +CONFIG_SERIAL_OF_PLATFORM=y ## ## file: drivers/usb/Kconfig diff --git a/linux-2.6/debian/patches/features/arm/ARM-Kirkwood-Remove-tclk-from-kirkwood_asoc_platform.patch b/linux-2.6/debian/patches/features/arm/ARM-Kirkwood-Remove-tclk-from-kirkwood_asoc_platform.patch new file mode 100644 index 0000000..a965b53 --- /dev/null +++ b/linux-2.6/debian/patches/features/arm/ARM-Kirkwood-Remove-tclk-from-kirkwood_asoc_platform.patch @@ -0,0 +1,34 @@ +From abf3eebc30953249737a6f557e68acd24a157be3 Mon Sep 17 00:00:00 2001 +From: Andrew Lunn <andrew@lunn.ch> +Date: Tue, 6 Mar 2012 07:31:04 +0100 +Subject: [PATCH 04/12] ARM: Kirkwood: Remove tclk from + kirkwood_asoc_platform_data. + +It is not used anywhere in the sound driver. + +Signed-off-by: Andrew Lunn <andrew@lunn.ch> +Signed-off-by: Jason Cooper <jason@lakedaemon.net> +(cherry picked from commit 7399532065a68cce8b0ea18aace7ded45bfb205f) + +Conflicts: + + arch/arm/plat-orion/include/plat/audio.h +--- + arch/arm/mach-kirkwood/common.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c +index f3248cf..31a0a0f 100644 +--- a/arch/arm/mach-kirkwood/common.c ++++ b/arch/arm/mach-kirkwood/common.c +@@ -452,7 +452,6 @@ void __init kirkwood_init(void) + { + printk(KERN_INFO "Kirkwood: %s, TCLK=%d.\n", + kirkwood_id(), kirkwood_tclk); +- kirkwood_i2s_data.tclk = kirkwood_tclk; + + /* + * Disable propagation of mbus errors to the CPU local bus, +-- +1.7.8.3 + diff --git a/linux-2.6/debian/patches/features/arm/ARM-kirkwood-add-dreamplug-fdt-support.patch b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-add-dreamplug-fdt-support.patch new file mode 100644 index 0000000..bcbb095 --- /dev/null +++ b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-add-dreamplug-fdt-support.patch @@ -0,0 +1,306 @@ +From 8b97d8ac8fa4f7e53f5e565a9ed6feb2d6063d5e Mon Sep 17 00:00:00 2001 +From: Jason Cooper <jason@lakedaemon.net> +Date: Mon, 27 Feb 2012 16:07:13 +0000 +Subject: [PATCH 01/12] ARM: kirkwood: add dreamplug (fdt) support. + +Initially, copied guruplug-setup.c and did s/guruplug/dreamplug/g. +Then, switched to SPI based NOR flash. + +After talking to Arnd Bergman, chose an incremental approach to adding +devicetree support. First, we use the dtb to tell us we are on the +dreamplug, then we gradually port over drivers. + +Driver porting will start with the uart (see next patch), and progress +from there. Possibly, spi/flash/partitions will be next. + +When done, board-dt.c will no longer be dreamplug specific, and dt's can +be made for the other kirkwood boards. + +Signed-off-by: Jason Cooper <jason@lakedaemon.net> +Reviewed-by: Arnd Bergmann <arnd@arndb.de> +Acked-by: Nicolas Pitre <nico@linaro.org> +Signed-off-by: Arnd Bergmann <arnd@arndb.de> +(cherry picked from commit 3d468b6d6052293ad3b8538b8277077981c28286) +[ijc -- backport by removing kirkwood_restart] +--- + arch/arm/boot/dts/kirkwood-dreamplug.dts | 18 +++ + arch/arm/boot/dts/kirkwood.dtsi | 6 + + arch/arm/mach-kirkwood/Kconfig | 14 +++ + arch/arm/mach-kirkwood/Makefile | 1 + + arch/arm/mach-kirkwood/Makefile.boot | 2 + + arch/arm/mach-kirkwood/board-dt.c | 181 ++++++++++++++++++++++++++++++ + 6 files changed, 222 insertions(+), 0 deletions(-) + create mode 100644 arch/arm/boot/dts/kirkwood-dreamplug.dts + create mode 100644 arch/arm/boot/dts/kirkwood.dtsi + create mode 100644 arch/arm/mach-kirkwood/board-dt.c + +diff --git a/arch/arm/boot/dts/kirkwood-dreamplug.dts b/arch/arm/boot/dts/kirkwood-dreamplug.dts +new file mode 100644 +index 0000000..0424d99 +--- /dev/null ++++ b/arch/arm/boot/dts/kirkwood-dreamplug.dts +@@ -0,0 +1,18 @@ ++/dts-v1/; ++ ++/include/ "kirkwood.dtsi" ++ ++/ { ++ model = "Globalscale Technologies Dreamplug"; ++ compatible = "globalscale,dreamplug-003-ds2001", "globalscale,dreamplug", "marvell,kirkwood-88f6281", "marvell,kirkwood"; ++ ++ memory { ++ device_type = "memory"; ++ reg = <0x00000000 0x20000000>; ++ }; ++ ++ chosen { ++ bootargs = "console=ttyS0,115200n8 earlyprintk"; ++ }; ++ ++}; +diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi +new file mode 100644 +index 0000000..771c6bb +--- /dev/null ++++ b/arch/arm/boot/dts/kirkwood.dtsi +@@ -0,0 +1,6 @@ ++/include/ "skeleton.dtsi" ++ ++/ { ++ compatible = "marvell,kirkwood"; ++}; ++ +diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig +index 7fc603b..90ceab7 100644 +--- a/arch/arm/mach-kirkwood/Kconfig ++++ b/arch/arm/mach-kirkwood/Kconfig +@@ -44,6 +44,20 @@ config MACH_GURUPLUG + Say 'Y' here if you want your kernel to support the + Marvell GuruPlug Reference Board. + ++config ARCH_KIRKWOOD_DT ++ bool "Marvell Kirkwood Flattened Device Tree" ++ select USE_OF ++ help ++ Say 'Y' here if you want your kernel to support the ++ Marvell Kirkwood using flattened device tree. ++ ++config MACH_DREAMPLUG_DT ++ bool "Marvell DreamPlug (Flattened Device Tree)" ++ select ARCH_KIRKWOOD_DT ++ help ++ Say 'Y' here if you want your kernel to support the ++ Marvell DreamPlug (Flattened Device Tree). ++ + config MACH_TS219 + bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS" + help +diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile +index 5dcaa81..acbc5e1 100644 +--- a/arch/arm/mach-kirkwood/Makefile ++++ b/arch/arm/mach-kirkwood/Makefile +@@ -20,3 +20,4 @@ obj-$(CONFIG_MACH_NET5BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o + obj-$(CONFIG_MACH_T5325) += t5325-setup.o + + obj-$(CONFIG_CPU_IDLE) += cpuidle.o ++obj-$(CONFIG_ARCH_KIRKWOOD_DT) += board-dt.o +diff --git a/arch/arm/mach-kirkwood/Makefile.boot b/arch/arm/mach-kirkwood/Makefile.boot +index 760a0ef..16f9385 100644 +--- a/arch/arm/mach-kirkwood/Makefile.boot ++++ b/arch/arm/mach-kirkwood/Makefile.boot +@@ -1,3 +1,5 @@ + zreladdr-y += 0x00008000 + params_phys-y := 0x00000100 + initrd_phys-y := 0x00800000 ++ ++dtb-$(CONFIG_MACH_DREAMPLUG_DT) += kirkwood-dreamplug.dtb +diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c +new file mode 100644 +index 0000000..0802624 +--- /dev/null ++++ b/arch/arm/mach-kirkwood/board-dt.c +@@ -0,0 +1,181 @@ ++/* ++ * Copyright 2012 (C), Jason Cooper <jason@lakedaemon.net> ++ * ++ * arch/arm/mach-kirkwood/board-dt.c ++ * ++ * Marvell DreamPlug Reference 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 <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/platform_device.h> ++#include <linux/mtd/partitions.h> ++#include <linux/ata_platform.h> ++#include <linux/mv643xx_eth.h> ++#include <linux/of.h> ++#include <linux/of_address.h> ++#include <linux/of_fdt.h> ++#include <linux/of_irq.h> ++#include <linux/of_platform.h> ++#include <linux/gpio.h> ++#include <linux/leds.h> ++#include <linux/mtd/physmap.h> ++#include <linux/spi/flash.h> ++#include <linux/spi/spi.h> ++#include <linux/spi/orion_spi.h> ++#include <asm/mach-types.h> ++#include <asm/mach/arch.h> ++#include <mach/kirkwood.h> ++#include <plat/mvsdio.h> ++#include "common.h" ++#include "mpp.h" ++ ++static struct of_device_id kirkwood_dt_match_table[] __initdata = { ++ { .compatible = "simple-bus", }, ++ { } ++}; ++ ++struct mtd_partition dreamplug_partitions[] = { ++ { ++ .name = "u-boot", ++ .size = SZ_512K, ++ .offset = 0, ++ }, ++ { ++ .name = "u-boot env", ++ .size = SZ_64K, ++ .offset = SZ_512K + SZ_512K, ++ }, ++ { ++ .name = "dtb", ++ .size = SZ_64K, ++ .offset = SZ_512K + SZ_512K + SZ_512K, ++ }, ++}; ++ ++static const struct flash_platform_data dreamplug_spi_slave_data = { ++ .type = "mx25l1606e", ++ .name = "spi_flash", ++ .parts = dreamplug_partitions, ++ .nr_parts = ARRAY_SIZE(dreamplug_partitions), ++}; ++ ++static struct spi_board_info __initdata dreamplug_spi_slave_info[] = { ++ { ++ .modalias = "m25p80", ++ .platform_data = &dreamplug_spi_slave_data, ++ .irq = -1, ++ .max_speed_hz = 50000000, ++ .bus_num = 0, ++ .chip_select = 0, ++ }, ++}; ++ ++static struct mv643xx_eth_platform_data dreamplug_ge00_data = { ++ .phy_addr = MV643XX_ETH_PHY_ADDR(0), ++}; ++ ++static struct mv643xx_eth_platform_data dreamplug_ge01_data = { ++ .phy_addr = MV643XX_ETH_PHY_ADDR(1), ++}; ++ ++static struct mv_sata_platform_data dreamplug_sata_data = { ++ .n_ports = 1, ++}; ++ ++static struct mvsdio_platform_data dreamplug_mvsdio_data = { ++ /* unfortunately the CD signal has not been connected */ ++}; ++ ++static struct gpio_led dreamplug_led_pins[] = { ++ { ++ .name = "dreamplug:blue:bluetooth", ++ .gpio = 47, ++ .active_low = 1, ++ }, ++ { ++ .name = "dreamplug:green:wifi", ++ .gpio = 48, ++ .active_low = 1, ++ }, ++ { ++ .name = "dreamplug:green:wifi_ap", ++ .gpio = 49, ++ .active_low = 1, ++ }, ++}; ++ ++static struct gpio_led_platform_data dreamplug_led_data = { ++ .leds = dreamplug_led_pins, ++ .num_leds = ARRAY_SIZE(dreamplug_led_pins), ++}; ++ ++static struct platform_device dreamplug_leds = { ++ .name = "leds-gpio", ++ .id = -1, ++ .dev = { ++ .platform_data = &dreamplug_led_data, ++ } ++}; ++ ++static unsigned int dreamplug_mpp_config[] __initdata = { ++ MPP0_SPI_SCn, ++ MPP1_SPI_MOSI, ++ MPP2_SPI_SCK, ++ MPP3_SPI_MISO, ++ MPP47_GPIO, /* Bluetooth LED */ ++ MPP48_GPIO, /* Wifi LED */ ++ MPP49_GPIO, /* Wifi AP LED */ ++ 0 ++}; ++ ++static void __init dreamplug_init(void) ++{ ++ /* ++ * Basic setup. Needs to be called early. ++ */ ++ kirkwood_mpp_conf(dreamplug_mpp_config); ++ ++ kirkwood_uart0_init(); ++ ++ spi_register_board_info(dreamplug_spi_slave_info, ++ ARRAY_SIZE(dreamplug_spi_slave_info)); ++ kirkwood_spi_init(); ++ ++ kirkwood_ehci_init(); ++ kirkwood_ge00_init(&dreamplug_ge00_data); ++ kirkwood_ge01_init(&dreamplug_ge01_data); ++ kirkwood_sata_init(&dreamplug_sata_data); ++ kirkwood_sdio_init(&dreamplug_mvsdio_data); ++ ++ platform_device_register(&dreamplug_leds); ++} ++ ++static void __init kirkwood_dt_init(void) ++{ ++ kirkwood_init(); ++ ++ if (of_machine_is_compatible("globalscale,dreamplug")) ++ dreamplug_init(); ++ ++ of_platform_populate(NULL, kirkwood_dt_match_table, NULL, NULL); ++} ++ ++static const char *kirkwood_dt_board_compat[] = { ++ "globalscale,dreamplug", ++ NULL ++}; ++ ++DT_MACHINE_START(KIRKWOOD_DT, "Marvell Kirkwood (Flattened Device Tree)") ++ /* Maintainer: Jason Cooper <jason@lakedaemon.net> */ ++ .map_io = kirkwood_map_io, ++ .init_early = kirkwood_init_early, ++ .init_irq = kirkwood_init_irq, ++ .timer = &kirkwood_timer, ++ .init_machine = kirkwood_dt_init, ++ .dt_compat = kirkwood_dt_board_compat, ++MACHINE_END +-- +1.7.8.3 + diff --git a/linux-2.6/debian/patches/features/arm/ARM-kirkwood-add-missing-kexec.h-include.patch b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-add-missing-kexec.h-include.patch new file mode 100644 index 0000000..7a447c8 --- /dev/null +++ b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-add-missing-kexec.h-include.patch @@ -0,0 +1,32 @@ +From eab7d096368d325d2a25fc71d408bbfdd94341e4 Mon Sep 17 00:00:00 2001 +From: Ian Campbell <ijc@hellion.org.uk> +Date: Fri, 6 Apr 2012 13:27:23 +0100 +Subject: [PATCH 12/12] ARM: kirkwood: add missing kexec.h include + +Fixes build the following build error when CONFIG_KEXEC is enabled: + CC arch/arm/mach-kirkwood/board-dt.o +arch/arm/mach-kirkwood/board-dt.c: In function 'kirkwood_dt_init': +arch/arm/mach-kirkwood/board-dt.c:52:2: error: 'kexec_reinit' undeclared (first use in this function) +arch/arm/mach-kirkwood/board-dt.c:52:2: note: each undeclared identifier is reported only once for each function it appears in + +Signed-off-by: Ian Campbell <ijc@hellion.org.uk> +[v2, using linux/kexec.h not asm/kexec.h] +--- + arch/arm/mach-kirkwood/board-dt.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c +index d3cf5e6..23da042 100644 +--- a/arch/arm/mach-kirkwood/board-dt.c ++++ b/arch/arm/mach-kirkwood/board-dt.c +@@ -14,6 +14,7 @@ + #include <linux/init.h> + #include <linux/of.h> + #include <linux/of_platform.h> ++#include <linux/kexec.h> + #include <asm/mach/arch.h> + #include <asm/mach/map.h> + #include <mach/bridge-regs.h> +-- +1.7.8.3 + diff --git a/linux-2.6/debian/patches/features/arm/ARM-kirkwood-backport-to-3.2.patch b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-backport-to-3.2.patch new file mode 100644 index 0000000..7856f90 --- /dev/null +++ b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-backport-to-3.2.patch @@ -0,0 +1,24 @@ +From 89c1168d065245c697c21045621532a618409240 Mon Sep 17 00:00:00 2001 +From: Ian Campbell <ijc@hellion.org.uk> +Date: Sun, 11 Mar 2012 13:03:25 +0000 +Subject: [PATCH 03/13] ARM: kirkwood: backport to 3.2 + +Signed-off-by: Ian Campbell <ijc@hellion.org.uk> +--- + arch/arm/mach-kirkwood/board-dt.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c +index fbe6405..d93d6e0 100644 +--- a/arch/arm/mach-kirkwood/board-dt.c ++++ b/arch/arm/mach-kirkwood/board-dt.c +@@ -175,6 +175,5 @@ DT_MACHINE_START(KIRKWOOD_DT, "Marvell Kirkwood (Flattened Device Tree)") + .init_irq = kirkwood_init_irq, + .timer = &kirkwood_timer, + .init_machine = kirkwood_dt_init, +- .restart = kirkwood_restart, + .dt_compat = kirkwood_dt_board_compat, + MACHINE_END +-- +1.7.8.3 + diff --git a/linux-2.6/debian/patches/features/arm/ARM-kirkwood-convert-uart0-to-devicetree.patch b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-convert-uart0-to-devicetree.patch new file mode 100644 index 0000000..42815c9 --- /dev/null +++ b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-convert-uart0-to-devicetree.patch @@ -0,0 +1,50 @@ +From 6078cc253b47bc90fd06394f6667a2b43e367794 Mon Sep 17 00:00:00 2001 +From: Jason Cooper <jason@lakedaemon.net> +Date: Mon, 27 Feb 2012 16:07:14 +0000 +Subject: [PATCH 02/12] ARM: kirkwood: convert uart0 to devicetree. + +This uart is the primary console for the dreamplug. Removed +kirkwood_uart0_init() call from board-dt.c. + +Signed-off-by: Jason Cooper <jason@lakedaemon.net> +Reviewed-by: Arnd Bergmann <arnd@arndb.de> +Acked-by: Nicolas Pitre <nico@linaro.org> +Signed-off-by: Arnd Bergmann <arnd@arndb.de> +(cherry picked from commit 759a45185ac0e4dfaf8bbfcb390ec73aca4b7a34) +--- + arch/arm/boot/dts/kirkwood-dreamplug.dts | 7 +++++++ + arch/arm/mach-kirkwood/board-dt.c | 2 -- + 2 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/boot/dts/kirkwood-dreamplug.dts b/arch/arm/boot/dts/kirkwood-dreamplug.dts +index 0424d99..8a5dff8 100644 +--- a/arch/arm/boot/dts/kirkwood-dreamplug.dts ++++ b/arch/arm/boot/dts/kirkwood-dreamplug.dts +@@ -15,4 +15,11 @@ + bootargs = "console=ttyS0,115200n8 earlyprintk"; + }; + ++ serial@f1012000 { ++ compatible = "ns16550a"; ++ reg = <0xf1012000 0xff>; ++ reg-shift = <2>; ++ interrupts = <33>; ++ clock-frequency = <200000000>; ++ }; + }; +diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c +index 0802624..d93d6e0 100644 +--- a/arch/arm/mach-kirkwood/board-dt.c ++++ b/arch/arm/mach-kirkwood/board-dt.c +@@ -140,8 +140,6 @@ static void __init dreamplug_init(void) + */ + kirkwood_mpp_conf(dreamplug_mpp_config); + +- kirkwood_uart0_init(); +- + spi_register_board_info(dreamplug_spi_slave_info, + ARRAY_SIZE(dreamplug_spi_slave_info)); + kirkwood_spi_init(); +-- +1.7.8.3 + diff --git a/linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-absorb-kirkwood_init.patch b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-absorb-kirkwood_init.patch new file mode 100644 index 0000000..8e07a4b --- /dev/null +++ b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-absorb-kirkwood_init.patch @@ -0,0 +1,149 @@ +From 423a4ea18bee4882532984434d587a810ccec9f2 Mon Sep 17 00:00:00 2001 +From: Jason Cooper <jason@lakedaemon.net> +Date: Wed, 29 Feb 2012 17:39:08 +0000 +Subject: [PATCH 07/12] ARM: kirkwood: fdt: absorb kirkwood_init() + +We need to absorb kirkwood_init() into kirkwood_dt_init() so that as we +convert drivers, we can remove the platform call, eg +kirkwood_rtc_init(). This maintains compatibility with non-fdt +configurations because they still call kirkwood_init() in common.c. + +As drivers are converted, we will reinstate the 'static' qualifier in +common.c. + +Signed-off-by: Jason Cooper <jason@lakedaemon.net> +(cherry picked from commit 2b45e05f51a79c2818523c923dfe008b8b2f4227) +--- + arch/arm/mach-kirkwood/board-dt.c | 29 ++++++++++++++++++++++++++++- + arch/arm/mach-kirkwood/common.c | 12 ++++++------ + arch/arm/mach-kirkwood/common.h | 8 ++++++++ + 3 files changed, 42 insertions(+), 7 deletions(-) + +diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c +index d93d6e0..d926ee8 100644 +--- a/arch/arm/mach-kirkwood/board-dt.c ++++ b/arch/arm/mach-kirkwood/board-dt.c +@@ -29,7 +29,9 @@ + #include <linux/spi/orion_spi.h> + #include <asm/mach-types.h> + #include <asm/mach/arch.h> ++#include <asm/mach/map.h> + #include <mach/kirkwood.h> ++#include <mach/bridge-regs.h> + #include <plat/mvsdio.h> + #include "common.h" + #include "mpp.h" +@@ -155,7 +157,32 @@ static void __init dreamplug_init(void) + + static void __init kirkwood_dt_init(void) + { +- kirkwood_init(); ++ pr_info("Kirkwood: %s, TCLK=%d.\n", kirkwood_id(), kirkwood_tclk); ++ ++ /* ++ * Disable propagation of mbus errors to the CPU local bus, ++ * as this causes mbus errors (which can occur for example ++ * for PCI aborts) to throw CPU aborts, which we're not set ++ * up to deal with. ++ */ ++ writel(readl(CPU_CONFIG) & ~CPU_CONFIG_ERROR_PROP, CPU_CONFIG); ++ ++ kirkwood_setup_cpu_mbus(); ++ ++#ifdef CONFIG_CACHE_FEROCEON_L2 ++ kirkwood_l2_init(); ++#endif ++ ++ /* internal devices that every board has */ ++ kirkwood_rtc_init(); ++ kirkwood_wdt_init(); ++ kirkwood_xor0_init(); ++ kirkwood_xor1_init(); ++ kirkwood_crypto_init(); ++ ++#ifdef CONFIG_KEXEC ++ kexec_reinit = kirkwood_enable_pcie; ++#endif + + if (of_machine_is_compatible("globalscale,dreamplug")) + dreamplug_init(); +diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c +index 31a0a0f..d10d914 100644 +--- a/arch/arm/mach-kirkwood/common.c ++++ b/arch/arm/mach-kirkwood/common.c +@@ -163,7 +163,7 @@ void __init kirkwood_nand_init_rnb(struct mtd_partition *parts, int nr_parts, + /***************************************************************************** + * SoC RTC + ****************************************************************************/ +-static void __init kirkwood_rtc_init(void) ++void __init kirkwood_rtc_init(void) + { + orion_rtc_init(RTC_PHYS_BASE, IRQ_KIRKWOOD_RTC); + } +@@ -281,7 +281,7 @@ void __init kirkwood_crypto_init(void) + /***************************************************************************** + * XOR0 + ****************************************************************************/ +-static void __init kirkwood_xor0_init(void) ++void __init kirkwood_xor0_init(void) + { + kirkwood_clk_ctrl |= CGC_XOR0; + +@@ -294,7 +294,7 @@ static void __init kirkwood_xor0_init(void) + /***************************************************************************** + * XOR1 + ****************************************************************************/ +-static void __init kirkwood_xor1_init(void) ++void __init kirkwood_xor1_init(void) + { + kirkwood_clk_ctrl |= CGC_XOR1; + +@@ -306,7 +306,7 @@ static void __init kirkwood_xor1_init(void) + /***************************************************************************** + * Watchdog + ****************************************************************************/ +-static void __init kirkwood_wdt_init(void) ++void __init kirkwood_wdt_init(void) + { + orion_wdt_init(kirkwood_tclk); + } +@@ -396,7 +396,7 @@ void __init kirkwood_audio_init(void) + /* + * Identify device ID and revision. + */ +-static char * __init kirkwood_id(void) ++char * __init kirkwood_id(void) + { + u32 dev, rev; + +@@ -437,7 +437,7 @@ static char * __init kirkwood_id(void) + } + } + +-static void __init kirkwood_l2_init(void) ++void __init kirkwood_l2_init(void) + { + #ifdef CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH + writel(readl(L2_CONFIG_REG) | L2_WRITETHROUGH, L2_CONFIG_REG); +diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h +index b9b0f09..58faf4e 100644 +--- a/arch/arm/mach-kirkwood/common.h ++++ b/arch/arm/mach-kirkwood/common.h +@@ -51,6 +51,14 @@ void kirkwood_nand_init(struct mtd_partition *parts, int nr_parts, int delay); + void kirkwood_nand_init_rnb(struct mtd_partition *parts, int nr_parts, int (*dev_ready)(struct mtd_info *)); + void kirkwood_audio_init(void); + ++char *kirkwood_id(void); ++void kirkwood_l2_init(void); ++void kirkwood_rtc_init(void); ++void kirkwood_wdt_init(void); ++void kirkwood_xor0_init(void); ++void kirkwood_xor1_init(void); ++void kirkwood_crypto_init(void); ++ + extern int kirkwood_tclk; + extern struct sys_timer kirkwood_timer; + +-- +1.7.8.3 + diff --git a/linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-define-uart-01-as-disabled-enable-u.patch b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-define-uart-01-as-disabled-enable-u.patch new file mode 100644 index 0000000..88cb79a --- /dev/null +++ b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-define-uart-01-as-disabled-enable-u.patch @@ -0,0 +1,79 @@ +From 6f18ae75ca025cf6721f286592fe384106cf5790 Mon Sep 17 00:00:00 2001 +From: Jason Cooper <jason@lakedaemon.net> +Date: Thu, 15 Mar 2012 01:00:27 +0000 +Subject: [PATCH 09/12] ARM: kirkwood: fdt: define uart[01] as disabled, + enable uart0 + +Define both uarts in kirkwood.dtsi as they are common to all kirkwood +SoCs. Each board may enable all or none of them, so they are disabled +by default. uart0 is enabled for the dreamplug. + +tclk can vary for each board, so we leave it undefined in the kirkwood +dtsi. Each board can then set it as appropriate when enabling the uart. + +Signed-off-by: Jason Cooper <jason@lakedaemon.net> +(cherry picked from commit 163f2cea673a4ae831ad2cd26d8f01977c3add93) +--- + arch/arm/boot/dts/kirkwood-dreamplug.dts | 11 +++++------ + arch/arm/boot/dts/kirkwood.dtsi | 26 +++++++++++++++++++++++++- + 2 files changed, 30 insertions(+), 7 deletions(-) + +diff --git a/arch/arm/boot/dts/kirkwood-dreamplug.dts b/arch/arm/boot/dts/kirkwood-dreamplug.dts +index 333f11b..a5376b8 100644 +--- a/arch/arm/boot/dts/kirkwood-dreamplug.dts ++++ b/arch/arm/boot/dts/kirkwood-dreamplug.dts +@@ -15,11 +15,10 @@ + bootargs = "console=ttyS0,115200n8 earlyprintk"; + }; + +- serial@f1012000 { +- compatible = "ns16550a"; +- reg = <0xf1012000 0x100>; +- reg-shift = <2>; +- interrupts = <33>; +- clock-frequency = <200000000>; ++ ocp@f1000000 { ++ serial@12000 { ++ clock-frequency = <200000000>; ++ status = "ok"; ++ }; + }; + }; +diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi +index 702b955..825310b 100644 +--- a/arch/arm/boot/dts/kirkwood.dtsi ++++ b/arch/arm/boot/dts/kirkwood.dtsi +@@ -2,5 +2,29 @@ + + / { + compatible = "mrvl,kirkwood"; +-}; + ++ ocp@f1000000 { ++ compatible = "simple-bus"; ++ ranges = <0 0xf1000000 0x1000000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ serial@12000 { ++ compatible = "ns16550a"; ++ reg = <0x12000 0x100>; ++ reg-shift = <2>; ++ interrupts = <33>; ++ /* set clock-frequency in board dts */ ++ status = "disabled"; ++ }; ++ ++ serial@12100 { ++ compatible = "ns16550a"; ++ reg = <0x12100 0x100>; ++ reg-shift = <2>; ++ interrupts = <34>; ++ /* set clock-frequency in board dts */ ++ status = "disabled"; ++ }; ++ }; ++}; +-- +1.7.8.3 + diff --git a/linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-facilitate-new-boards-during-fdt-mi.patch b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-facilitate-new-boards-during-fdt-mi.patch new file mode 100644 index 0000000..637c84e --- /dev/null +++ b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-facilitate-new-boards-during-fdt-mi.patch @@ -0,0 +1,372 @@ +From ad46d963e60406454020bcb25989bffececa89d0 Mon Sep 17 00:00:00 2001 +From: Jason Cooper <jason@lakedaemon.net> +Date: Thu, 15 Mar 2012 00:52:31 +0000 +Subject: [PATCH 08/12] ARM: kirkwood: fdt: facilitate new boards during fdt + migration + +Move all dreamplug-specific code out of board-dt.c and into +board-dreamplug.c. This way new boards that are added during the +conversion to fdt don't clutter up board-dt.c. + +Signed-off-by: Jason Cooper <jason@lakedaemon.net> +(cherry picked from commit 6fa6b8781fbd5e6cd5e313c5e3bdd73b426d8f30) +--- + arch/arm/mach-kirkwood/Makefile | 1 + + arch/arm/mach-kirkwood/board-dreamplug.c | 152 ++++++++++++++++++++++++++++++ + arch/arm/mach-kirkwood/board-dt.c | 133 +-------------------------- + arch/arm/mach-kirkwood/common.h | 8 ++ + 4 files changed, 162 insertions(+), 132 deletions(-) + create mode 100644 arch/arm/mach-kirkwood/board-dreamplug.c + +diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile +index acbc5e1..e299a95 100644 +--- a/arch/arm/mach-kirkwood/Makefile ++++ b/arch/arm/mach-kirkwood/Makefile +@@ -21,3 +21,4 @@ obj-$(CONFIG_MACH_T5325) += t5325-setup.o + + obj-$(CONFIG_CPU_IDLE) += cpuidle.o + obj-$(CONFIG_ARCH_KIRKWOOD_DT) += board-dt.o ++obj-$(CONFIG_MACH_DREAMPLUG_DT) += board-dreamplug.o +diff --git a/arch/arm/mach-kirkwood/board-dreamplug.c b/arch/arm/mach-kirkwood/board-dreamplug.c +new file mode 100644 +index 0000000..9854539 +--- /dev/null ++++ b/arch/arm/mach-kirkwood/board-dreamplug.c +@@ -0,0 +1,152 @@ ++/* ++ * Copyright 2012 (C), Jason Cooper <jason@lakedaemon.net> ++ * ++ * arch/arm/mach-kirkwood/board-dreamplug.c ++ * ++ * Marvell DreamPlug Reference Board Init for drivers not converted to ++ * flattened device tree yet. ++ * ++ * 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 <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/platform_device.h> ++#include <linux/mtd/partitions.h> ++#include <linux/ata_platform.h> ++#include <linux/mv643xx_eth.h> ++#include <linux/of.h> ++#include <linux/of_address.h> ++#include <linux/of_fdt.h> ++#include <linux/of_irq.h> ++#include <linux/of_platform.h> ++#include <linux/gpio.h> ++#include <linux/leds.h> ++#include <linux/mtd/physmap.h> ++#include <linux/spi/flash.h> ++#include <linux/spi/spi.h> ++#include <linux/spi/orion_spi.h> ++#include <asm/mach-types.h> ++#include <asm/mach/arch.h> ++#include <asm/mach/map.h> ++#include <mach/kirkwood.h> ++#include <mach/bridge-regs.h> ++#include <plat/mvsdio.h> ++#include "common.h" ++#include "mpp.h" ++ ++struct mtd_partition dreamplug_partitions[] = { ++ { ++ .name = "u-boot", ++ .size = SZ_512K, ++ .offset = 0, ++ }, ++ { ++ .name = "u-boot env", ++ .size = SZ_64K, ++ .offset = SZ_512K + SZ_512K, ++ }, ++ { ++ .name = "dtb", ++ .size = SZ_64K, ++ .offset = SZ_512K + SZ_512K + SZ_512K, ++ }, ++}; ++ ++static const struct flash_platform_data dreamplug_spi_slave_data = { ++ .type = "mx25l1606e", ++ .name = "spi_flash", ++ .parts = dreamplug_partitions, ++ .nr_parts = ARRAY_SIZE(dreamplug_partitions), ++}; ++ ++static struct spi_board_info __initdata dreamplug_spi_slave_info[] = { ++ { ++ .modalias = "m25p80", ++ .platform_data = &dreamplug_spi_slave_data, ++ .irq = -1, ++ .max_speed_hz = 50000000, ++ .bus_num = 0, ++ .chip_select = 0, ++ }, ++}; ++ ++static struct mv643xx_eth_platform_data dreamplug_ge00_data = { ++ .phy_addr = MV643XX_ETH_PHY_ADDR(0), ++}; ++ ++static struct mv643xx_eth_platform_data dreamplug_ge01_data = { ++ .phy_addr = MV643XX_ETH_PHY_ADDR(1), ++}; ++ ++static struct mv_sata_platform_data dreamplug_sata_data = { ++ .n_ports = 1, ++}; ++ ++static struct mvsdio_platform_data dreamplug_mvsdio_data = { ++ /* unfortunately the CD signal has not been connected */ ++}; ++ ++static struct gpio_led dreamplug_led_pins[] = { ++ { ++ .name = "dreamplug:blue:bluetooth", ++ .gpio = 47, ++ .active_low = 1, ++ }, ++ { ++ .name = "dreamplug:green:wifi", ++ .gpio = 48, ++ .active_low = 1, ++ }, ++ { ++ .name = "dreamplug:green:wifi_ap", ++ .gpio = 49, ++ .active_low = 1, ++ }, ++}; ++ ++static struct gpio_led_platform_data dreamplug_led_data = { ++ .leds = dreamplug_led_pins, ++ .num_leds = ARRAY_SIZE(dreamplug_led_pins), ++}; ++ ++static struct platform_device dreamplug_leds = { ++ .name = "leds-gpio", ++ .id = -1, ++ .dev = { ++ .platform_data = &dreamplug_led_data, ++ } ++}; ++ ++static unsigned int dreamplug_mpp_config[] __initdata = { ++ MPP0_SPI_SCn, ++ MPP1_SPI_MOSI, ++ MPP2_SPI_SCK, ++ MPP3_SPI_MISO, ++ MPP47_GPIO, /* Bluetooth LED */ ++ MPP48_GPIO, /* Wifi LED */ ++ MPP49_GPIO, /* Wifi AP LED */ ++ 0 ++}; ++ ++void __init dreamplug_init(void) ++{ ++ /* ++ * Basic setup. Needs to be called early. ++ */ ++ kirkwood_mpp_conf(dreamplug_mpp_config); ++ ++ spi_register_board_info(dreamplug_spi_slave_info, ++ ARRAY_SIZE(dreamplug_spi_slave_info)); ++ kirkwood_spi_init(); ++ ++ kirkwood_ehci_init(); ++ kirkwood_ge00_init(&dreamplug_ge00_data); ++ kirkwood_ge01_init(&dreamplug_ge01_data); ++ kirkwood_sata_init(&dreamplug_sata_data); ++ kirkwood_sdio_init(&dreamplug_mvsdio_data); ++ ++ platform_device_register(&dreamplug_leds); ++} +diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c +index d926ee8..bc37ca2 100644 +--- a/arch/arm/mach-kirkwood/board-dt.c ++++ b/arch/arm/mach-kirkwood/board-dt.c +@@ -3,7 +3,7 @@ + * + * arch/arm/mach-kirkwood/board-dt.c + * +- * Marvell DreamPlug Reference Board Setup ++ * Flattened Device Tree board initialization + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed "as is" without any +@@ -12,149 +12,18 @@ + + #include <linux/kernel.h> + #include <linux/init.h> +-#include <linux/platform_device.h> +-#include <linux/mtd/partitions.h> +-#include <linux/ata_platform.h> +-#include <linux/mv643xx_eth.h> + #include <linux/of.h> +-#include <linux/of_address.h> +-#include <linux/of_fdt.h> +-#include <linux/of_irq.h> + #include <linux/of_platform.h> +-#include <linux/gpio.h> +-#include <linux/leds.h> +-#include <linux/mtd/physmap.h> +-#include <linux/spi/flash.h> +-#include <linux/spi/spi.h> +-#include <linux/spi/orion_spi.h> +-#include <asm/mach-types.h> + #include <asm/mach/arch.h> + #include <asm/mach/map.h> +-#include <mach/kirkwood.h> + #include <mach/bridge-regs.h> +-#include <plat/mvsdio.h> + #include "common.h" +-#include "mpp.h" + + static struct of_device_id kirkwood_dt_match_table[] __initdata = { + { .compatible = "simple-bus", }, + { } + }; + +-struct mtd_partition dreamplug_partitions[] = { +- { +- .name = "u-boot", +- .size = SZ_512K, +- .offset = 0, +- }, +- { +- .name = "u-boot env", +- .size = SZ_64K, +- .offset = SZ_512K + SZ_512K, +- }, +- { +- .name = "dtb", +- .size = SZ_64K, +- .offset = SZ_512K + SZ_512K + SZ_512K, +- }, +-}; +- +-static const struct flash_platform_data dreamplug_spi_slave_data = { +- .type = "mx25l1606e", +- .name = "spi_flash", +- .parts = dreamplug_partitions, +- .nr_parts = ARRAY_SIZE(dreamplug_partitions), +-}; +- +-static struct spi_board_info __initdata dreamplug_spi_slave_info[] = { +- { +- .modalias = "m25p80", +- .platform_data = &dreamplug_spi_slave_data, +- .irq = -1, +- .max_speed_hz = 50000000, +- .bus_num = 0, +- .chip_select = 0, +- }, +-}; +- +-static struct mv643xx_eth_platform_data dreamplug_ge00_data = { +- .phy_addr = MV643XX_ETH_PHY_ADDR(0), +-}; +- +-static struct mv643xx_eth_platform_data dreamplug_ge01_data = { +- .phy_addr = MV643XX_ETH_PHY_ADDR(1), +-}; +- +-static struct mv_sata_platform_data dreamplug_sata_data = { +- .n_ports = 1, +-}; +- +-static struct mvsdio_platform_data dreamplug_mvsdio_data = { +- /* unfortunately the CD signal has not been connected */ +-}; +- +-static struct gpio_led dreamplug_led_pins[] = { +- { +- .name = "dreamplug:blue:bluetooth", +- .gpio = 47, +- .active_low = 1, +- }, +- { +- .name = "dreamplug:green:wifi", +- .gpio = 48, +- .active_low = 1, +- }, +- { +- .name = "dreamplug:green:wifi_ap", +- .gpio = 49, +- .active_low = 1, +- }, +-}; +- +-static struct gpio_led_platform_data dreamplug_led_data = { +- .leds = dreamplug_led_pins, +- .num_leds = ARRAY_SIZE(dreamplug_led_pins), +-}; +- +-static struct platform_device dreamplug_leds = { +- .name = "leds-gpio", +- .id = -1, +- .dev = { +- .platform_data = &dreamplug_led_data, +- } +-}; +- +-static unsigned int dreamplug_mpp_config[] __initdata = { +- MPP0_SPI_SCn, +- MPP1_SPI_MOSI, +- MPP2_SPI_SCK, +- MPP3_SPI_MISO, +- MPP47_GPIO, /* Bluetooth LED */ +- MPP48_GPIO, /* Wifi LED */ +- MPP49_GPIO, /* Wifi AP LED */ +- 0 +-}; +- +-static void __init dreamplug_init(void) +-{ +- /* +- * Basic setup. Needs to be called early. +- */ +- kirkwood_mpp_conf(dreamplug_mpp_config); +- +- spi_register_board_info(dreamplug_spi_slave_info, +- ARRAY_SIZE(dreamplug_spi_slave_info)); +- kirkwood_spi_init(); +- +- kirkwood_ehci_init(); +- kirkwood_ge00_init(&dreamplug_ge00_data); +- kirkwood_ge01_init(&dreamplug_ge01_data); +- kirkwood_sata_init(&dreamplug_sata_data); +- kirkwood_sdio_init(&dreamplug_mvsdio_data); +- +- platform_device_register(&dreamplug_leds); +-} +- + static void __init kirkwood_dt_init(void) + { + pr_info("Kirkwood: %s, TCLK=%d.\n", kirkwood_id(), kirkwood_tclk); +diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h +index 58faf4e..c71b528 100644 +--- a/arch/arm/mach-kirkwood/common.h ++++ b/arch/arm/mach-kirkwood/common.h +@@ -51,6 +51,14 @@ void kirkwood_nand_init(struct mtd_partition *parts, int nr_parts, int delay); + void kirkwood_nand_init_rnb(struct mtd_partition *parts, int nr_parts, int (*dev_ready)(struct mtd_info *)); + void kirkwood_audio_init(void); + ++/* board init functions for boards not fully converted to fdt */ ++#ifdef CONFIG_MACH_DREAMPLUG_DT ++void dreamplug_init(void); ++#else ++static inline void dreamplug_init(void) {}; ++#endif ++ ++/* early init functions not converted to fdt yet */ + char *kirkwood_id(void); + void kirkwood_l2_init(void); + void kirkwood_rtc_init(void); +-- +1.7.8.3 + diff --git a/linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-use-mrvl-ticker-symbol.patch b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-use-mrvl-ticker-symbol.patch new file mode 100644 index 0000000..475f614 --- /dev/null +++ b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-fdt-use-mrvl-ticker-symbol.patch @@ -0,0 +1,51 @@ +From a299a46ed347960a172e7c36733eaf3b8859e9ca Mon Sep 17 00:00:00 2001 +From: Jason Cooper <jason@lakedaemon.net> +Date: Wed, 7 Mar 2012 15:03:57 +0000 +Subject: [PATCH 06/12] ARM: kirkwood: fdt: use mrvl ticker symbol + +Also, use inclusive register size for uart0. + +Signed-off-by: Jason Cooper <jason@lakedaemon.net> +(cherry picked from commit b77816dea3e4c0f815510dea2a0ca9bcda6644dc) +--- + arch/arm/boot/dts/kirkwood-dreamplug.dts | 4 ++-- + arch/arm/boot/dts/kirkwood.dtsi | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/boot/dts/kirkwood-dreamplug.dts b/arch/arm/boot/dts/kirkwood-dreamplug.dts +index 8a5dff8..333f11b 100644 +--- a/arch/arm/boot/dts/kirkwood-dreamplug.dts ++++ b/arch/arm/boot/dts/kirkwood-dreamplug.dts +@@ -4,7 +4,7 @@ + + / { + model = "Globalscale Technologies Dreamplug"; +- compatible = "globalscale,dreamplug-003-ds2001", "globalscale,dreamplug", "marvell,kirkwood-88f6281", "marvell,kirkwood"; ++ compatible = "globalscale,dreamplug-003-ds2001", "globalscale,dreamplug", "mrvl,kirkwood-88f6281", "mrvl,kirkwood"; + + memory { + device_type = "memory"; +@@ -17,7 +17,7 @@ + + serial@f1012000 { + compatible = "ns16550a"; +- reg = <0xf1012000 0xff>; ++ reg = <0xf1012000 0x100>; + reg-shift = <2>; + interrupts = <33>; + clock-frequency = <200000000>; +diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi +index 771c6bb..702b955 100644 +--- a/arch/arm/boot/dts/kirkwood.dtsi ++++ b/arch/arm/boot/dts/kirkwood.dtsi +@@ -1,6 +1,6 @@ + /include/ "skeleton.dtsi" + + / { +- compatible = "marvell,kirkwood"; ++ compatible = "mrvl,kirkwood"; + }; + +-- +1.7.8.3 + diff --git a/linux-2.6/debian/patches/features/arm/ARM-kirkwood-use-devicetree-for-rtc-mv.patch b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-use-devicetree-for-rtc-mv.patch new file mode 100644 index 0000000..13e8e14 --- /dev/null +++ b/linux-2.6/debian/patches/features/arm/ARM-kirkwood-use-devicetree-for-rtc-mv.patch @@ -0,0 +1,71 @@ +From 5edcefedbf5bf700c98412928fb3d88787cfad4e Mon Sep 17 00:00:00 2001 +From: Jason Cooper <jason@lakedaemon.net> +Date: Tue, 6 Mar 2012 23:55:04 +0000 +Subject: [PATCH 11/12] ARM: kirkwood: use devicetree for rtc-mv + +Signed-off-by: Jason Cooper <jason@lakedaemon.net> +Acked-by: Arnd Bergmann <arnd@arndb.de> +(cherry picked from commit e871b87a1e978e618c75acd4ceb6cd4699728691) +--- + arch/arm/boot/dts/kirkwood.dtsi | 6 ++++++ + arch/arm/mach-kirkwood/board-dt.c | 1 - + arch/arm/mach-kirkwood/common.c | 2 +- + arch/arm/mach-kirkwood/common.h | 1 - + 4 files changed, 7 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi +index 825310b..3474ef8 100644 +--- a/arch/arm/boot/dts/kirkwood.dtsi ++++ b/arch/arm/boot/dts/kirkwood.dtsi +@@ -26,5 +26,11 @@ + /* set clock-frequency in board dts */ + status = "disabled"; + }; ++ ++ rtc@10300 { ++ compatible = "mrvl,kirkwood-rtc", "mrvl,orion-rtc"; ++ reg = <0x10300 0x20>; ++ interrupts = <53>; ++ }; + }; + }; +diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c +index bc37ca2..d3cf5e6 100644 +--- a/arch/arm/mach-kirkwood/board-dt.c ++++ b/arch/arm/mach-kirkwood/board-dt.c +@@ -43,7 +43,6 @@ static void __init kirkwood_dt_init(void) + #endif + + /* internal devices that every board has */ +- kirkwood_rtc_init(); + kirkwood_wdt_init(); + kirkwood_xor0_init(); + kirkwood_xor1_init(); +diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c +index d10d914..f74998e 100644 +--- a/arch/arm/mach-kirkwood/common.c ++++ b/arch/arm/mach-kirkwood/common.c +@@ -163,7 +163,7 @@ void __init kirkwood_nand_init_rnb(struct mtd_partition *parts, int nr_parts, + /***************************************************************************** + * SoC RTC + ****************************************************************************/ +-void __init kirkwood_rtc_init(void) ++static void __init kirkwood_rtc_init(void) + { + orion_rtc_init(RTC_PHYS_BASE, IRQ_KIRKWOOD_RTC); + } +diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h +index c71b528..2ed2e50 100644 +--- a/arch/arm/mach-kirkwood/common.h ++++ b/arch/arm/mach-kirkwood/common.h +@@ -61,7 +61,6 @@ static inline void dreamplug_init(void) {}; + /* early init functions not converted to fdt yet */ + char *kirkwood_id(void); + void kirkwood_l2_init(void); +-void kirkwood_rtc_init(void); + void kirkwood_wdt_init(void); + void kirkwood_xor0_init(void); + void kirkwood_xor1_init(void); +-- +1.7.8.3 + diff --git a/linux-2.6/debian/patches/features/arm/ARM-orion-wdt-use-resource-vice-direct-access.patch b/linux-2.6/debian/patches/features/arm/ARM-orion-wdt-use-resource-vice-direct-access.patch new file mode 100644 index 0000000..7f3b76d --- /dev/null +++ b/linux-2.6/debian/patches/features/arm/ARM-orion-wdt-use-resource-vice-direct-access.patch @@ -0,0 +1,143 @@ +From cd3369e3135cc1786d58eb3bea2eee50eefbf858 Mon Sep 17 00:00:00 2001 +From: Jason Cooper <jason@lakedaemon.net> +Date: Thu, 15 Mar 2012 00:33:26 +0000 +Subject: [PATCH 05/12] ARM: orion: wdt: use resource vice direct access + +Signed-off-by: Andrew Lunn <andrew@lunn.ch> +Signed-off-by: Jason Cooper <jason@lakedaemon.net> +Acked-by: Grant Likely <grant.likely@secretlab.ca> +Acked-by: Arnd Bergmann <arnd@arndb.de> +(cherry picked from commit a855a7ced4f572dcd1038db06b532df3ba9f227c) +--- + arch/arm/plat-orion/common.c | 7 ++++++- + drivers/watchdog/orion_wdt.c | 24 +++++++++++++++--------- + 2 files changed, 21 insertions(+), 10 deletions(-) + +diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c +index 9e5451b..1674f1c 100644 +--- a/arch/arm/plat-orion/common.c ++++ b/arch/arm/plat-orion/common.c +@@ -22,6 +22,7 @@ + #include <plat/orion_wdt.h> + #include <plat/mv_xor.h> + #include <plat/ehci-orion.h> ++#include <mach/bridge-regs.h> + + /* Fill in the resources structure and link it into the platform + device structure. There is always a memory region, and nearly +@@ -574,13 +575,17 @@ void __init orion_spi_1_init(unsigned long mapbase, + ****************************************************************************/ + static struct orion_wdt_platform_data orion_wdt_data; + ++static struct resource orion_wdt_resource = ++ DEFINE_RES_MEM(TIMER_VIRT_BASE, 0x28); ++ + static struct platform_device orion_wdt_device = { + .name = "orion_wdt", + .id = -1, + .dev = { + .platform_data = &orion_wdt_data, + }, +- .num_resources = 0, ++ .resource = &orion_wdt_resource, ++ .num_resources = 1, + }; + + void __init orion_wdt_init(unsigned long tclk) +diff --git a/drivers/watchdog/orion_wdt.c b/drivers/watchdog/orion_wdt.c +index 2d9fb96..b95f556 100644 +--- a/drivers/watchdog/orion_wdt.c ++++ b/drivers/watchdog/orion_wdt.c +@@ -28,9 +28,9 @@ + /* + * Watchdog timer block registers. + */ +-#define TIMER_CTRL (TIMER_VIRT_BASE + 0x0000) ++#define TIMER_CTRL 0x0000 + #define WDT_EN 0x0010 +-#define WDT_VAL (TIMER_VIRT_BASE + 0x0024) ++#define WDT_VAL 0x0024 + + #define WDT_MAX_CYCLE_COUNT 0xffffffff + #define WDT_IN_USE 0 +@@ -40,6 +40,7 @@ static int nowayout = WATCHDOG_NOWAYOUT; + static int heartbeat = -1; /* module parameter (seconds) */ + static unsigned int wdt_max_duration; /* (seconds) */ + static unsigned int wdt_tclk; ++static void __iomem *wdt_reg; + static unsigned long wdt_status; + static spinlock_t wdt_lock; + +@@ -48,7 +49,7 @@ static void orion_wdt_ping(void) + spin_lock(&wdt_lock); + + /* Reload watchdog duration */ +- writel(wdt_tclk * heartbeat, WDT_VAL); ++ writel(wdt_tclk * heartbeat, wdt_reg + WDT_VAL); + + spin_unlock(&wdt_lock); + } +@@ -60,7 +61,7 @@ static void orion_wdt_enable(void) + spin_lock(&wdt_lock); + + /* Set watchdog duration */ +- writel(wdt_tclk * heartbeat, WDT_VAL); ++ writel(wdt_tclk * heartbeat, wdt_reg + WDT_VAL); + + /* Clear watchdog timer interrupt */ + reg = readl(BRIDGE_CAUSE); +@@ -68,9 +69,9 @@ static void orion_wdt_enable(void) + writel(reg, BRIDGE_CAUSE); + + /* Enable watchdog timer */ +- reg = readl(TIMER_CTRL); ++ reg = readl(wdt_reg + TIMER_CTRL); + reg |= WDT_EN; +- writel(reg, TIMER_CTRL); ++ writel(reg, wdt_reg + TIMER_CTRL); + + /* Enable reset on watchdog */ + reg = readl(RSTOUTn_MASK); +@@ -92,9 +93,9 @@ static void orion_wdt_disable(void) + writel(reg, RSTOUTn_MASK); + + /* Disable watchdog timer */ +- reg = readl(TIMER_CTRL); ++ reg = readl(wdt_reg + TIMER_CTRL); + reg &= ~WDT_EN; +- writel(reg, TIMER_CTRL); ++ writel(reg, wdt_reg + TIMER_CTRL); + + spin_unlock(&wdt_lock); + } +@@ -102,7 +103,7 @@ static void orion_wdt_disable(void) + static int orion_wdt_get_timeleft(int *time_left) + { + spin_lock(&wdt_lock); +- *time_left = readl(WDT_VAL) / wdt_tclk; ++ *time_left = readl(wdt_reg + WDT_VAL) / wdt_tclk; + spin_unlock(&wdt_lock); + return 0; + } +@@ -236,6 +237,7 @@ static struct miscdevice orion_wdt_miscdev = { + static int __devinit orion_wdt_probe(struct platform_device *pdev) + { + struct orion_wdt_platform_data *pdata = pdev->dev.platform_data; ++ struct resource *res; + int ret; + + if (pdata) { +@@ -245,6 +247,10 @@ static int __devinit orion_wdt_probe(struct platform_device *pdev) + return -ENODEV; + } + ++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); ++ ++ wdt_reg = ioremap(res->start, resource_size(res)); ++ + if (orion_wdt_miscdev.parent) + return -EBUSY; + orion_wdt_miscdev.parent = &pdev->dev; +-- +1.7.8.3 + diff --git a/linux-2.6/debian/patches/series/base b/linux-2.6/debian/patches/series/base index b1d599e..c2e6507 100644 --- a/linux-2.6/debian/patches/series/base +++ b/linux-2.6/debian/patches/series/base @@ -90,3 +90,16 @@ # Temporary, until the next ABI bump + debian/revert-rtc-Provide-flag-for-rtc-devices-that-don-t-s.patch + ++ features/arm/ARM-kirkwood-add-dreamplug-fdt-support.patch ++ features/arm/ARM-kirkwood-convert-uart0-to-devicetree.patch ++ features/arm/ARM-orion-spi-remove-enable_clock_fix-which-is-not-u.patch ++ features/arm/ARM-Kirkwood-Remove-tclk-from-kirkwood_asoc_platform.patch ++ features/arm/ARM-orion-wdt-use-resource-vice-direct-access.patch ++ features/arm/ARM-kirkwood-fdt-use-mrvl-ticker-symbol.patch ++ features/arm/ARM-kirkwood-fdt-absorb-kirkwood_init.patch ++ features/arm/ARM-kirkwood-fdt-facilitate-new-boards-during-fdt-mi.patch ++ features/arm/ARM-kirkwood-fdt-define-uart-01-as-disabled-enable-u.patch ++ features/arm/ARM-kirkwood-rtc-mv-devicetree-bindings.patch ++ features/arm/ARM-kirkwood-use-devicetree-for-rtc-mv.patch ++ features/arm/ARM-kirkwood-add-missing-kexec.h-include.patch -- 1.7.8.3
Attachment:
signature.asc
Description: This is a digitally signed message part