From 9ca8dbcc65cfc63d6f5ef3312a33184e1d726e00 Mon Sep 17 00:00:00 2001 From: Yunhong Jiang Date: Tue, 4 Aug 2015 12:17:53 -0700 Subject: Add the rt linux 4.1.3-rt3 as base Import the rt linux 4.1.3-rt3 as OPNFV kvm base. It's from git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git linux-4.1.y-rt and the base is: commit 0917f823c59692d751951bf5ea699a2d1e2f26a2 Author: Sebastian Andrzej Siewior Date: Sat Jul 25 12:13:34 2015 +0200 Prepare v4.1.3-rt3 Signed-off-by: Sebastian Andrzej Siewior We lose all the git history this way and it's not good. We should apply another opnfv project repo in future. Change-Id: I87543d81c9df70d99c5001fbdf646b202c19f423 Signed-off-by: Yunhong Jiang --- kernel/arch/arm/mach-picoxcell/Kconfig | 7 +++ kernel/arch/arm/mach-picoxcell/Makefile | 1 + kernel/arch/arm/mach-picoxcell/common.c | 86 +++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 kernel/arch/arm/mach-picoxcell/Kconfig create mode 100644 kernel/arch/arm/mach-picoxcell/Makefile create mode 100644 kernel/arch/arm/mach-picoxcell/common.c (limited to 'kernel/arch/arm/mach-picoxcell') diff --git a/kernel/arch/arm/mach-picoxcell/Kconfig b/kernel/arch/arm/mach-picoxcell/Kconfig new file mode 100644 index 000000000..62240f69b --- /dev/null +++ b/kernel/arch/arm/mach-picoxcell/Kconfig @@ -0,0 +1,7 @@ +config ARCH_PICOXCELL + bool "Picochip PicoXcell" if ARCH_MULTI_V6 + select ARCH_REQUIRE_GPIOLIB + select ARM_VIC + select DW_APB_TIMER_OF + select HAVE_TCM + select NO_IOPORT_MAP diff --git a/kernel/arch/arm/mach-picoxcell/Makefile b/kernel/arch/arm/mach-picoxcell/Makefile new file mode 100644 index 000000000..8e39f80fc --- /dev/null +++ b/kernel/arch/arm/mach-picoxcell/Makefile @@ -0,0 +1 @@ +obj-y := common.o diff --git a/kernel/arch/arm/mach-picoxcell/common.c b/kernel/arch/arm/mach-picoxcell/common.c new file mode 100644 index 000000000..ec79fea82 --- /dev/null +++ b/kernel/arch/arm/mach-picoxcell/common.c @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2011 Picochip Ltd., Jamie Iles + * + * 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. + * + * All enquiries to support@picochip.com + */ +#include +#include +#include +#include +#include + +#include +#include + +#define PHYS_TO_IO(x) (((x) & 0x00ffffff) | 0xfe000000) +#define PICOXCELL_PERIPH_BASE 0x80000000 +#define PICOXCELL_PERIPH_LENGTH SZ_4M + +#define WDT_CTRL_REG_EN_MASK (1 << 0) +#define WDT_CTRL_REG_OFFS (0x00) +#define WDT_TIMEOUT_REG_OFFS (0x04) +static void __iomem *wdt_regs; + +/* + * The machine restart method can be called from an atomic context so we won't + * be able to ioremap the regs then. + */ +static void picoxcell_setup_restart(void) +{ + struct device_node *np = of_find_compatible_node(NULL, NULL, + "snps,dw-apb-wdg"); + if (WARN(!np, "unable to setup watchdog restart")) + return; + + wdt_regs = of_iomap(np, 0); + WARN(!wdt_regs, "failed to remap watchdog regs"); +} + +static struct map_desc io_map __initdata = { + .virtual = PHYS_TO_IO(PICOXCELL_PERIPH_BASE), + .pfn = __phys_to_pfn(PICOXCELL_PERIPH_BASE), + .length = PICOXCELL_PERIPH_LENGTH, + .type = MT_DEVICE, +}; + +static void __init picoxcell_map_io(void) +{ + iotable_init(&io_map, 1); +} + +static void __init picoxcell_init_machine(void) +{ + of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); + picoxcell_setup_restart(); +} + +static const char *picoxcell_dt_match[] = { + "picochip,pc3x2", + "picochip,pc3x3", + NULL +}; + +static void picoxcell_wdt_restart(enum reboot_mode mode, const char *cmd) +{ + /* + * Configure the watchdog to reset with the shortest possible timeout + * and give it chance to do the reset. + */ + if (wdt_regs) { + writel_relaxed(WDT_CTRL_REG_EN_MASK, wdt_regs + WDT_CTRL_REG_OFFS); + writel_relaxed(0, wdt_regs + WDT_TIMEOUT_REG_OFFS); + /* No sleeping, possibly atomic. */ + mdelay(500); + } +} + +DT_MACHINE_START(PICOXCELL, "Picochip picoXcell") + .map_io = picoxcell_map_io, + .init_machine = picoxcell_init_machine, + .dt_compat = picoxcell_dt_match, + .restart = picoxcell_wdt_restart, +MACHINE_END -- cgit 1.2.3-korg