This adds initial and compulsory device tree support to the Gemini ARMv4 platform. We are selecting a bunch of "absolute minimals" for getting a working system up with just device tree: - We select USE_OF for natural reasons or nothing works. - We select CLKSRC_OF and GEMINI_TIMER so we get timekeeping from the clocksource. - We select GPIO_GEMINI because these are used as irqchips, and for a generic driver it is not reasonable for those to have to select every possible irqchip in the world to work, the platform should simply provide the available irqchips. - We select a UART that can be exprected to work with SERIAL_OF_PLATFORM which is the name for an 8250 OF-probed serial port. - We select the syscon-based reset controller: it's not fun when "reboot" doesn't work because of Kconfig, so we just select POWER_RESET and POWER_RESET_SYSCON. - We perhaps a bit controversiallt select ARM_APPENDED_DTB, because this platform is using the ancient RedBoot, and can *NOT* be expected to upgrade its bootloaders. Appended device tree is simply how these devices have to work with device tree. Cc: Janos Laube <janos.dev@gmail.com> Cc: Paulius Zaleckas <paulius.zaleckas@gmail.com> Cc: Hans Ulli Kroll <ulli.kroll@googlemail.com> Cc: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
39 lines
791 B
C
39 lines
791 B
C
/*
|
|
* Gemini Device Tree boot support
|
|
*/
|
|
#include <linux/kernel.h>
|
|
#include <linux/init.h>
|
|
#include <linux/io.h>
|
|
|
|
#include <asm/mach/arch.h>
|
|
#include <asm/mach/map.h>
|
|
|
|
#ifdef CONFIG_DEBUG_GEMINI
|
|
/* This is needed for LL-debug/earlyprintk/debug-macro.S */
|
|
static struct map_desc gemini_io_desc[] __initdata = {
|
|
{
|
|
.virtual = CONFIG_DEBUG_UART_VIRT,
|
|
.pfn = __phys_to_pfn(CONFIG_DEBUG_UART_PHYS),
|
|
.length = SZ_4K,
|
|
.type = MT_DEVICE,
|
|
},
|
|
};
|
|
|
|
static void __init gemini_map_io(void)
|
|
{
|
|
iotable_init(gemini_io_desc, ARRAY_SIZE(gemini_io_desc));
|
|
}
|
|
#else
|
|
#define gemini_map_io NULL
|
|
#endif
|
|
|
|
static const char *gemini_board_compat[] = {
|
|
"cortina,gemini",
|
|
NULL,
|
|
};
|
|
|
|
DT_MACHINE_START(GEMINI_DT, "Gemini (Device Tree)")
|
|
.map_io = gemini_map_io,
|
|
.dt_compat = gemini_board_compat,
|
|
MACHINE_END
|