ARM: gemini: convert to ARMv4 multiplatform
authorLinus Walleij <linus.walleij@linaro.org>
Sat, 21 Jan 2017 21:43:08 +0000 (22:43 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Sun, 12 Mar 2017 11:27:27 +0000 (12:27 +0100)
This converts the Gemini platform to ARMv4 multiplatform, deleting
the local <mach/*> include directory, moving an idiomatic local
idling function into the .machine_init() call and getting rid of
the Makefile.boot finally.

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>
arch/arm/Kconfig
arch/arm/mach-gemini/Kconfig [new file with mode: 0644]
arch/arm/mach-gemini/Makefile
arch/arm/mach-gemini/Makefile.boot [deleted file]
arch/arm/mach-gemini/board-dt.c
arch/arm/mach-gemini/idle.c [deleted file]
arch/arm/mach-gemini/include/mach/hardware.h [deleted file]
arch/arm/mach-gemini/include/mach/uncompress.h [deleted file]

index bfa68a6e4c0988773f97c720eb1b7ceee49b1294..f1e83a7ffdae595d7ba46f981b3cac43c1bac822 100644 (file)
@@ -359,25 +359,6 @@ config ARM_SINGLE_ARMV7M
        select SPARSE_IRQ
        select USE_OF
 
-config ARCH_GEMINI
-       bool "Cortina Systems Gemini"
-       select ARM_APPENDED_DTB # Old Redboot bootloaders deployed
-       select ARM_PATCH_PHYS_VIRT
-       select AUTO_ZRELADDR
-       select CPU_FA526
-       select FARADAY_FTINTC010
-       select FTTMR010_TIMER
-       select GPIO_GEMINI
-       select GPIOLIB
-       select MULTI_IRQ_HANDLER
-       select POWER_RESET
-       select POWER_RESET_SYSCON
-       select SERIAL_OF_PLATFORM
-       select SPARSE_IRQ
-       select USE_OF
-       help
-         Support for the Cortina Systems Gemini family SoCs
-
 config ARCH_EBSA110
        bool "EBSA-110"
        select ARCH_USES_GETTIMEOFFSET
@@ -758,6 +739,8 @@ source "arch/arm/mach-ep93xx/Kconfig"
 
 source "arch/arm/mach-footbridge/Kconfig"
 
+source "arch/arm/mach-gemini/Kconfig"
+
 source "arch/arm/mach-highbank/Kconfig"
 
 source "arch/arm/mach-hisi/Kconfig"
diff --git a/arch/arm/mach-gemini/Kconfig b/arch/arm/mach-gemini/Kconfig
new file mode 100644 (file)
index 0000000..a5ee5fb
--- /dev/null
@@ -0,0 +1,13 @@
+menuconfig ARCH_GEMINI
+       bool "Cortina Systems Gemini"
+       depends on ARCH_MULTI_V4
+       select ARM_APPENDED_DTB # Old Redboot bootloaders deployed
+       select FARADAY_FTINTC010
+       select FTTMR010_TIMER
+       select GPIO_GEMINI
+       select GPIOLIB
+       select POWER_RESET
+       select POWER_RESET_SYSCON
+       select SERIAL_OF_PLATFORM
+       help
+         Support for the Cortina Systems Gemini family SoCs
index 30c5acffe9488531ce4162bb5055c448c7556695..ca0db5477180f51fbf2b8a6e96cb9328954dc766 100644 (file)
@@ -1,2 +1,2 @@
 # Makefile for Cortina systems Gemini
-obj-y                  := idle.o board-dt.o
+obj-y                  := board-dt.o
diff --git a/arch/arm/mach-gemini/Makefile.boot b/arch/arm/mach-gemini/Makefile.boot
deleted file mode 100644 (file)
index 8e3d1c6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-# Empty on purpose
index 208ea99cdc47c1a16af8022b83ff944b2590e9fd..c0c0ebdd551e8d194ea80c1d30847c5a541d685a 100644 (file)
@@ -7,6 +7,8 @@
 
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
+#include <asm/system_misc.h>
+#include <asm/proc-fns.h>
 
 #ifdef CONFIG_DEBUG_GEMINI
 /* This is needed for LL-debug/earlyprintk/debug-macro.S */
@@ -27,6 +29,27 @@ static void __init gemini_map_io(void)
 #define gemini_map_io NULL
 #endif
 
+static void gemini_idle(void)
+{
+       /*
+        * Because of broken hardware we have to enable interrupts or the CPU
+        * will never wakeup... Acctualy it is not very good to enable
+        * interrupts first since scheduler can miss a tick, but there is
+        * no other way around this. Platforms that needs it for power saving
+        * should enable it in init code, since by default it is
+        * disabled.
+        */
+
+       /* FIXME: Enabling interrupts here is racy! */
+       local_irq_enable();
+       cpu_do_idle();
+}
+
+static void __init gemini_init_machine(void)
+{
+       arm_pm_idle = gemini_idle;
+}
+
 static const char *gemini_board_compat[] = {
        "cortina,gemini",
        NULL,
@@ -34,5 +57,6 @@ static const char *gemini_board_compat[] = {
 
 DT_MACHINE_START(GEMINI_DT, "Gemini (Device Tree)")
        .map_io         = gemini_map_io,
+       .init_machine   = gemini_init_machine,
        .dt_compat      = gemini_board_compat,
 MACHINE_END
diff --git a/arch/arm/mach-gemini/idle.c b/arch/arm/mach-gemini/idle.c
deleted file mode 100644 (file)
index ddf8ec9..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * arch/arm/mach-gemini/idle.c
- */
-
-#include <linux/init.h>
-#include <asm/system_misc.h>
-#include <asm/proc-fns.h>
-
-static void gemini_idle(void)
-{
-       /*
-        * Because of broken hardware we have to enable interrupts or the CPU
-        * will never wakeup... Acctualy it is not very good to enable
-        * interrupts first since scheduler can miss a tick, but there is
-        * no other way around this. Platforms that needs it for power saving
-        * should enable it in init code, since by default it is
-        * disabled.
-        */
-
-       /* FIXME: Enabling interrupts here is racy! */
-       local_irq_enable();
-       cpu_do_idle();
-}
-
-static int __init gemini_idle_init(void)
-{
-       arm_pm_idle = gemini_idle;
-       return 0;
-}
-
-arch_initcall(gemini_idle_init);
diff --git a/arch/arm/mach-gemini/include/mach/hardware.h b/arch/arm/mach-gemini/include/mach/hardware.h
deleted file mode 100644 (file)
index f0390f1..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- *  This file contains the hardware definitions for Gemini.
- *
- *  Copyright (C) 2001-2006 Storlink, Corp.
- *  Copyright (C) 2008-2009 Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-#ifndef __MACH_HARDWARE_H
-#define __MACH_HARDWARE_H
-
-/*
- * Memory Map definitions
- */
-#ifdef CONFIG_GEMINI_MEM_SWAP
-# define GEMINI_DRAM_BASE      0x00000000
-# define GEMINI_SRAM_BASE      0x70000000
-#else
-# define GEMINI_SRAM_BASE      0x00000000
-# define GEMINI_DRAM_BASE      0x10000000
-#endif
-#define GEMINI_FLASH_BASE      0x30000000
-#define GEMINI_GLOBAL_BASE     0x40000000
-#define GEMINI_WAQTCHDOG_BASE  0x41000000
-#define GEMINI_UART_BASE       0x42000000
-#define GEMINI_TIMER_BASE      0x43000000
-#define GEMINI_LCD_BASE                0x44000000
-#define GEMINI_RTC_BASE                0x45000000
-#define GEMINI_SATA_BASE       0x46000000
-#define GEMINI_LPC_HOST_BASE   0x47000000
-#define GEMINI_LPC_IO_BASE     0x47800000
-#define GEMINI_INTERRUPT_BASE  0x48000000
-/* TODO: Different interrupt controllers when SMP
- * #define GEMINI_INTERRUPT0_BASE      0x48000000
- * #define GEMINI_INTERRUPT1_BASE      0x49000000
- */
-#define GEMINI_SSP_CTRL_BASE   0x4A000000
-#define GEMINI_POWER_CTRL_BASE 0x4B000000
-#define GEMINI_CIR_BASE                0x4C000000
-#define GEMINI_GPIO_BASE(x)    (0x4D000000 + (x) * 0x1000000)
-#define GEMINI_PCI_IO_BASE     0x50000000
-#define GEMINI_PCI_MEM_BASE    0x58000000
-#define GEMINI_TOE_BASE                0x60000000
-#define GEMINI_GMAC0_BASE      0x6000A000
-#define GEMINI_GMAC1_BASE      0x6000E000
-#define GEMINI_SECURITY_BASE   0x62000000
-#define GEMINI_IDE0_BASE       0x63000000
-#define GEMINI_IDE1_BASE       0x63400000
-#define GEMINI_RAID_BASE       0x64000000
-#define GEMINI_FLASH_CTRL_BASE 0x65000000
-#define GEMINI_DRAM_CTRL_BASE  0x66000000
-#define GEMINI_GENERAL_DMA_BASE        0x67000000
-#define GEMINI_USB0_BASE       0x68000000
-#define GEMINI_USB1_BASE       0x69000000
-#define GEMINI_BIG_ENDIAN_BASE 0x80000000
-
-
-/*
- * UART Clock when System clk is 150MHz
- */
-#define UART_CLK       48000000
-
-/*
- * macro to get at IO space when running virtually
- */
-#define IO_ADDRESS(x)  IOMEM((((x) & 0xFFF00000) >> 4) | ((x) & 0x000FFFFF) | 0xF0000000)
-
-#endif
diff --git a/arch/arm/mach-gemini/include/mach/uncompress.h b/arch/arm/mach-gemini/include/mach/uncompress.h
deleted file mode 100644 (file)
index 02e2256..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2008-2009 Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
- *
- * Based on mach-pxa/include/mach/uncompress.h:
- * Copyright:  (C) 2001 MontaVista Software Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-
-#ifndef __MACH_UNCOMPRESS_H
-#define __MACH_UNCOMPRESS_H
-
-#include <linux/serial_reg.h>
-#include <mach/hardware.h>
-
-static volatile unsigned long * const UART = (unsigned long *)GEMINI_UART_BASE;
-
-/*
- * The following code assumes the serial port has already been
- * initialized by the bootloader.  If you didn't setup a port in
- * your bootloader then nothing will appear (which might be desired).
- */
-static inline void putc(char c)
-{
-       while (!(UART[UART_LSR] & UART_LSR_THRE))
-               barrier();
-       UART[UART_TX] = c;
-}
-
-static inline void flush(void)
-{
-}
-
-/*
- * nothing to do
- */
-#define arch_decomp_setup()
-
-#endif /* __MACH_UNCOMPRESS_H */