Add support for hi3520
Subsystems (7)
v2 cover Add support for hi3520
This is a preparatory series for adding the ARMv5/v6 hi3520 SoCs. Assumptions were made when adding hi3620 that don't hold water in light of adding support for the hi3520 SoC. Fix the issue by renaming config options and other namespaces to avoid collisions with the new work.
---
Changes for v2:
- Included cover letter
- Unsplit some patches
- Added new dts/dts files to show why
Marty Plummer (5):
ARM: hisi: Make 3620 explicit, remove wildcards
clk: hi3620: Make 3620 explicit, remove wildcard
dmaengine: hi3620: Make hi3620 explicit
ARM: hisi: enable devicetree support for hi3520
ARM: hisi: add devicetree for hi3520
arch/arm/Kconfig.debug | 2 +- arch/arm/boot/dts/Makefile | 4 +- arch/arm/boot/dts/hi3520-1176-dm77a.dts | 62 +++++++++++ arch/arm/boot/dts/hi3520-1176.dtsi | 178 ++++++++++++++++++++++++++++++++ arch/arm/configs/hisi_defconfig | 2 +- arch/arm/configs/multi_v7_defconfig | 2 +- arch/arm/mach-hisi/Kconfig | 32 ++++-- arch/arm/mach-hisi/core.h | 10 +- arch/arm/mach-hisi/hisilicon.c | 34 +++++- arch/arm/mach-hisi/hotplug.c | 16 +-- arch/arm/mach-hisi/platsmp.c | 24 ++--- drivers/clk/hisilicon/Makefile | 2 +- drivers/dma/Kconfig | 2 +- 13 files changed, 325 insertions(+), 45 deletions(-) create mode 100644 arch/arm/boot/dts/hi3520-1176-dm77a.dts create mode 100644 arch/arm/boot/dts/hi3520-1176.dtsi
Signature · 1 line
2.9.3
RFC PATCH v2 1/5 ARM: hisi: Make 3620 explicit, remove wildcards
--- arch/arm/Kconfig.debug | 2 +- arch/arm/boot/dts/Makefile | 2 +- arch/arm/configs/hisi_defconfig | 2 +- arch/arm/configs/multi_v7_defconfig | 2 +- arch/arm/mach-hisi/Kconfig | 4 ++-- arch/arm/mach-hisi/core.h | 10 +++++----- arch/arm/mach-hisi/hisilicon.c | 6 +++--- arch/arm/mach-hisi/hotplug.c | 16 ++++++++-------- arch/arm/mach-hisi/platsmp.c | 24 ++++++++++++------------ 9 files changed, 34 insertions(+), 34 deletions(-)
arch/arm/Kconfig.debug +1 -1
@@ -280,7 +280,7 @@ choice config DEBUG_HI3620_UART bool "Hisilicon HI3620 Debug UART" - depends on ARCH_HI3xxx + depends on ARCH_HI3620 select DEBUG_UART_PL01X help Say Y here if you want kernel low-level debugging support
arch/arm/boot/dts/Makefile +1 -1
@@ -154,7 +154,7 @@ dtb-$(CONFIG_ARCH_EXYNOS5) += \ exynos5440-sd5v1.dtb \ exynos5440-ssdk5440.dtb \ exynos5800-peach-pi.dtb -dtb-$(CONFIG_ARCH_HI3xxx) += \ +dtb-$(CONFIG_ARCH_HI3620) += \ hi3620-hi4511.dtb dtb-$(CONFIG_ARCH_HIGHBANK) += \ highbank.dtb \
arch/arm/configs/hisi_defconfig +1 -1
@@ -4,7 +4,7 @@ CONFIG_HIGH_RES_TIMERS=y CONFIG_BLK_DEV_INITRD=y CONFIG_RD_LZMA=y CONFIG_ARCH_HISI=y -CONFIG_ARCH_HI3xxx=y +CONFIG_ARCH_HI3620=y CONFIG_PARTITION_ADVANCED=y CONFIG_CMDLINE_PARTITION=y CONFIG_ARCH_HIX5HD2=y
arch/arm/configs/multi_v7_defconfig +1 -1
@@ -45,7 +45,7 @@ CONFIG_MACH_BERLIN_BG2Q=y CONFIG_ARCH_DIGICOLOR=y CONFIG_ARCH_HIGHBANK=y CONFIG_ARCH_HISI=y -CONFIG_ARCH_HI3xxx=y +CONFIG_ARCH_HI3620=y CONFIG_ARCH_HIX5HD2=y CONFIG_ARCH_HIP01=y CONFIG_ARCH_HIP04=y
arch/arm/mach-hisi/Kconfig +2 -2
@@ -12,8 +12,8 @@ if ARCH_HISI menu "Hisilicon platform type" -config ARCH_HI3xxx - bool "Hisilicon Hi36xx family" +config ARCH_HI3620 + bool "Hisilicon Hi3620 family" depends on ARCH_MULTI_V7 select CACHE_L2X0 select HAVE_ARM_SCU if SMP
arch/arm/mach-hisi/core.h +5 -5
@@ -3,13 +3,13 @@#include <linux/reboot.h> -extern void hi3xxx_set_cpu_jump (int cpu,void *jump_addr); -extern int hi3xxx_get_cpu_jump (int cpu); +extern void hi3620_set_cpu_jump (int cpu,void *jump_addr); +extern int hi3620_get_cpu_jump (int cpu);extern void secondary_startup (void ); -extern void hi3xxx_cpu_die (unsigned int cpu); -extern int hi3xxx_cpu_kill (unsigned int cpu); -extern void hi3xxx_set_cpu (int cpu,bool enable); +extern void hi3620_cpu_die (unsigned int cpu); +extern int hi3620_cpu_kill (unsigned int cpu); +extern void hi3620_set_cpu (int cpu,bool enable);extern void hix5hd2_set_cpu (int cpu,bool enable);extern void hix5hd2_cpu_die (unsigned int cpu);
arch/arm/mach-hisi/hisilicon.c +3 -3
@@ -9,7 +9,7 @@* 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. -*/ +*/ #include <linux/clocksource.h> #include <linux/irqchip.h>
@@ -44,12 +44,12 @@ static void __init hi3620_map_io(void)iotable_init (hi3620_io_desc,ARRAY_SIZE (hi3620_io_desc)); } -static const char *const hi3xxx_compat[]__initconst = { +static const char *const hi3620_compat[]__initconst = {"hisilicon,hi3620-hi4511" ,NULL , };DT_MACHINE_START (HI3620 ,"Hisilicon Hi3620 (Flattened Device Tree)" ) .map_io = hi3620_map_io, - .dt_compat = hi3xxx_compat, + .dt_compat = hi3620_compat,MACHINE_END
arch/arm/mach-hisi/hotplug.c +8 -8
@@ -143,7 +143,7 @@ static void set_cpu_hi3620(int cpu, bool enable) } } -static int hi3xxx_hotplug_init (void ) +static int hi3620_hotplug_init (void ) {struct device_node *node;
@@ -157,10 +157,10 @@ static int hi3xxx_hotplug_init(void)return -ENOENT ; } -void hi3xxx_set_cpu (int cpu,bool enable) +void hi3620_set_cpu (int cpu,bool enable) {if (!ctrl_base) { -if (hi3xxx_hotplug_init () <0 ) +if (hi3620_hotplug_init () <0 )return ; }
@@ -262,24 +262,24 @@ static inline void cpu_enter_lowpower(void) }#ifdef CONFIG_HOTPLUG_CPU -void hi3xxx_cpu_die (unsigned int cpu) +void hi3620_cpu_die (unsigned int cpu) {cpu_enter_lowpower (); -hi3xxx_set_cpu_jump (cpu,phys_to_virt (0 )); +hi3620_set_cpu_jump (cpu,phys_to_virt (0 ));cpu_do_idle ();/* We should have never returned from idle */ panic ("cpu %d unexpectedly exit from shutdown\n" , cpu); } -int hi3xxx_cpu_kill (unsigned int cpu) +int hi3620_cpu_kill (unsigned int cpu) {unsigned long timeout = jiffies +msecs_to_jiffies (50 ); -while (hi3xxx_get_cpu_jump (cpu)) +while (hi3620_get_cpu_jump (cpu))if (time_after (jiffies, timeout))return 0 ; -hi3xxx_set_cpu (cpu, false); +hi3620_set_cpu (cpu, false);return 1 ; }
arch/arm/mach-hisi/platsmp.c +12 -12
@@ -23,7 +23,7 @@static void __iomem *ctrl_base; -void hi3xxx_set_cpu_jump (int cpu,void *jump_addr) +void hi3620_set_cpu_jump (int cpu,void *jump_addr) { cpu =cpu_logical_map (cpu);if (!cpu || !ctrl_base)
@@ -31,7 +31,7 @@ void hi3xxx_set_cpu_jump(int cpu, void *jump_addr)writel_relaxed (virt_to_phys (jump_addr), ctrl_base + ((cpu -1 ) <<2 )); } -int hi3xxx_get_cpu_jump (int cpu) +int hi3620_get_cpu_jump (int cpu) { cpu =cpu_logical_map (cpu);if (!cpu || !ctrl_base)
@@ -56,7 +56,7 @@ static void __init hisi_enable_scu_a9(void) } } -static void __init hi3xxx_smp_prepare_cpus (unsigned int max_cpus) +static void __init hi3620_smp_prepare_cpus (unsigned int max_cpus) {struct device_node *np =NULL ;u32 offset =0 ;
@@ -81,20 +81,20 @@ static void __init hi3xxx_smp_prepare_cpus(unsigned int max_cpus) } } -static int hi3xxx_boot_secondary (unsigned int cpu,struct task_struct *idle) +static int hi3620_boot_secondary (unsigned int cpu,struct task_struct *idle) { -hi3xxx_set_cpu (cpu, true); -hi3xxx_set_cpu_jump (cpu, secondary_startup); +hi3620_set_cpu (cpu, true); +hi3620_set_cpu_jump (cpu, secondary_startup);arch_send_wakeup_ipi_mask (cpumask_of (cpu));return 0 ; } -static const struct smp_operations hi3xxx_smp_ops__initconst = { - .smp_prepare_cpus = hi3xxx_smp_prepare_cpus, - .smp_boot_secondary = hi3xxx_boot_secondary, +static const struct smp_operations hi3620_smp_ops__initconst = { + .smp_prepare_cpus = hi3620_smp_prepare_cpus, + .smp_boot_secondary = hi3620_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU - .cpu_die = hi3xxx_cpu_die, - .cpu_kill = hi3xxx_cpu_kill, + .cpu_die = hi3620_cpu_die, + .cpu_kill = hi3620_cpu_kill, #endif };
@@ -181,6 +181,6 @@ static const struct smp_operations hip01_smp_ops __initconst = { .smp_boot_secondary = hip01_boot_secondary, }; -CPU_METHOD_OF_DECLARE (hi3xxx_smp,"hisilicon,hi3620-smp" , &hi3xxx_smp_ops); +CPU_METHOD_OF_DECLARE (hi3620_smp,"hisilicon,hi3620-smp" , &hi3620_smp_ops);CPU_METHOD_OF_DECLARE (hix5hd2_smp,"hisilicon,hix5hd2-smp" , &hix5hd2_smp_ops);CPU_METHOD_OF_DECLARE (hip01_smp,"hisilicon,hip01-smp" , &hip01_smp_ops);
Signature · 1 line
2.9.3
RFC PATCH v2 2/5 clk: hi3620: Make 3620 explicit, remove wildcard
In reply to Marty Plummer--- drivers/clk/hisilicon/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/clk/hisilicon/Makefile +1 -1
@@ -4,7 +4,7 @@ obj-y += clk.o clkgate-separated.o clkdivider-hi6220.o -obj-$(CONFIG_ARCH_HI3xxx) += clk-hi3620.o +obj-$(CONFIG_ARCH_HI3620) += clk-hi3620.o obj-$(CONFIG_ARCH_HIP04) += clk-hip04.o obj-$(CONFIG_ARCH_HIX5HD2) += clk-hix5hd2.o obj-$(CONFIG_COMMON_CLK_HI3519) += clk-hi3519.o
Signature · 1 line
2.9.3
RFC PATCH v2 3/5 dmaengine: hi3620: Make hi3620 explicit, remove wildcard
In reply to Marty Plummer--- drivers/dma/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/dma/Kconfig +1 -1
@@ -279,7 +279,7 @@ config INTEL_MIC_X100_DMA config K3_DMA tristate "Hisilicon K3 DMA support" - depends on ARCH_HI3xxx + depends on ARCH_HI3620 select DMA_ENGINE select DMA_VIRTUAL_CHANNELS help
Signature · 1 line
2.9.3
RFC PATCH v2 4/5 ARM: hisi: enable devicetree support for hi3520
In reply to Marty PlummerGIC removed from the ARCH_HISI namespace and placed in individual SoC as hi3520 uses a VIC instead and doesn't require a GIC
--- arch/arm/mach-hisi/Kconfig | 28 +++++++++++++++++++--------- arch/arm/mach-hisi/hisilicon.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 9 deletions(-)
arch/arm/mach-hisi/Kconfig +19 -9
@@ -1,8 +1,7 @@ config ARCH_HISI bool "Hisilicon SoC Support" - depends on ARCH_MULTI_V7 + depends on ARCH_MULTI_V6 || ARCH_MULTI_V7 select ARM_AMBA - select ARM_GIC select ARM_TIMER_SP804 select POWER_RESET select POWER_RESET_HISI
@@ -12,9 +11,17 @@ if ARCH_HISI menu "Hisilicon platform type" +config ARCH_HI3520_1176 + bool "Hisilicon Hi3520 family" + depends on ARCH_MULTI_V6 + select ARM_VIC + help + Support for Hisilicon Hi3520 SoC family + config ARCH_HI3620 bool "Hisilicon Hi3620 family" depends on ARCH_MULTI_V7 + select ARM_GIC select CACHE_L2X0 select HAVE_ARM_SCU if SMP select HAVE_ARM_TWD if SMP
@@ -24,17 +31,19 @@ config ARCH_HI3620 Support for Hisilicon Hi36xx SoC family config ARCH_HIP01 - bool "Hisilicon HIP01 family" - depends on ARCH_MULTI_V7 - select HAVE_ARM_SCU if SMP - select HAVE_ARM_TWD if SMP - select ARM_GLOBAL_TIMER - help - Support for Hisilicon HIP01 SoC family + bool "Hisilicon HIP01 family" + depends on ARCH_MULTI_V7 + select ARM_GIC + select HAVE_ARM_SCU if SMP + select HAVE_ARM_TWD if SMP + select ARM_GLOBAL_TIMER + help + Support for Hisilicon HIP01 SoC family config ARCH_HIP04 bool "Hisilicon HiP04 Cortex A15 family" depends on ARCH_MULTI_V7 + select ARM_GIC select ARM_ERRATA_798181 if SMP select HAVE_ARM_ARCH_TIMER select MCPM if SMP
@@ -45,6 +54,7 @@ config ARCH_HIP04 config ARCH_HIX5HD2 bool "Hisilicon X5HD2 family" depends on ARCH_MULTI_V7 + select ARM_GIC select CACHE_L2X0 select HAVE_ARM_SCU if SMP select HAVE_ARM_TWD if SMP
arch/arm/mach-hisi/hisilicon.c +28 -0
@@ -17,6 +17,8 @@#include <asm/mach/arch.h> #include <asm/mach/map.h> +#define HI3520_1176_SYSCTRL_PHYS_BASE 0x20050000 +#define HI3520_1176_SYSCTRL_VIRT_BASE 0xfe350000#define HI3620_SYSCTRL_PHYS_BASE 0xfc802000#define HI3620_SYSCTRL_VIRT_BASE 0xfe802000
@@ -28,6 +30,16 @@* spaces wasted since ioremap() may be called multi times for the same * IO space. */ +static struct map_desc hi3520_1176_io_desc[]__initdata = { + { +/* sysctrl */ + .virtual =HI3520_1176_SYSCTRL_VIRT_BASE , + .pfn =__phys_to_pfn (HI3520_1176_SYSCTRL_PHYS_BASE ), + .length =0x10000 , + .type =MT_DEVICE , + }, +}; +static struct map_desc hi3620_io_desc[]__initdata = { {/* sysctrl */
@@ -38,17 +50,33 @@ static struct map_desc hi3620_io_desc[] __initdata = { }, }; +static void __init hi3520_1176_map_io (void ) +{ +debug_ll_io_init (); +iotable_init (hi3520_1176_io_desc,ARRAY_SIZE (hi3520_1176_io_desc)); +} +static void __init hi3620_map_io (void ) {debug_ll_io_init ();iotable_init (hi3620_io_desc,ARRAY_SIZE (hi3620_io_desc)); } +static const char *const hi3520_1176_compat[]__initconst = { +"hisilicon,hi3520-1176" , +NULL , +}; +static const char *const hi3620_compat[]__initconst = {"hisilicon,hi3620-hi4511" ,NULL , }; +DT_MACHINE_START (HI3520_1176 ,"Hisilicon Hi3520-1176 (Flattened Device Tree)" ) + .map_io = hi3520_1176_map_io, + .dt_compat = hi3520_1176_compat, +MACHINE_END +DT_MACHINE_START (HI3620 ,"Hisilicon Hi3620 (Flattened Device Tree)" ) .map_io = hi3620_map_io, .dt_compat = hi3620_compat,
Signature · 1 line
2.9.3
RFC PATCH v2 5/5 ARM: hisi: add devicetree for hi3520
In reply to Marty PlummerProbably needs a lot more work, but as of right now this can get me into a basic busybox userspace
--- arch/arm/boot/dts/Makefile | 2 + arch/arm/boot/dts/hi3520-1176-dm77a.dts | 62 +++++++++++ arch/arm/boot/dts/hi3520-1176.dtsi | 178 ++++++++++++++++++++++++++++++++ 3 files changed, 242 insertions(+) create mode 100644 arch/arm/boot/dts/hi3520-1176-dm77a.dts create mode 100644 arch/arm/boot/dts/hi3520-1176.dtsi
arch/arm/boot/dts/Makefile +2 -0
@@ -154,6 +154,8 @@ dtb-$(CONFIG_ARCH_EXYNOS5) += \ exynos5440-sd5v1.dtb \ exynos5440-ssdk5440.dtb \ exynos5800-peach-pi.dtb +dtb-$(CONFIG_ARCH_HI3520_1176) += \ + hi3520-1176-dm77a.dtb dtb-$(CONFIG_ARCH_HI3620) += \ hi3620-hi4511.dtb dtb-$(CONFIG_ARCH_HIGHBANK) += \
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +62 -0
62 lines not on this page · raw message
arch/arm/boot/dts/hi3520-1176.dtsi new file +178 -0
178 lines not on this page · raw message
Signature · 1 line
2.9.3
Arnd Bergmann
maintainerRFC PATCH v2 1/5 ARM: hisi: Make 3620 explicit, remove wildcards
In reply to Marty PlummerQuoted 4 lines · CEST Marty Plummer
arch/arm/mach-hisi/Kconfig if ARCH_HISI · line 19
Quoted 10 lines
arch/arm/mach-hisi/Kconfig +2
-2@@ -12,8 +12,8 @@ if ARCH_HISI menu "Hisilicon platform type" -config ARCH_HI3xxx - bool "Hisilicon Hi36xx family" +config ARCH_HI3620 + bool "Hisilicon Hi3620 family" depends on ARCH_MULTI_V7 select CACHE_L2X0 select HAVE_ARM_SCU if SMP
This breaks bisection by removing the ARCH_HI3xxx symbol that the other drivers still rely on until the entire series is applied.
I'd suggest introducing a hidden ARCH_HI3xxx symbol like
config ARCH_HI3xxx
bool
config ARCH_HI3620
bool "Hisilicon Hi3620 family" select ARCH_HI3xxx ... Arnd
Arnd Bergmann
maintainerRFC PATCH v2 4/5 ARM: hisi: enable devicetree support for hi3520
In reply to Marty PlummerQuoted 10 lines · CEST Marty Plummer
arch/arm/mach-hisi/Kconfig +0
-6@@ -24,17 +31,19 @@ config ARCH_HI3620 Support for Hisilicon Hi36xx SoC family config ARCH_HIP01 - bool "Hisilicon HIP01 family" - depends on ARCH_MULTI_V7 - select HAVE_ARM_SCU if SMP - select HAVE_ARM_TWD if SMP - select ARM_GLOBAL_TIMER - help
arch/arm/mach-hisi/Kconfig config ARCH_HI3620 · line 42
Quoted 10 lines
arch/arm/mach-hisi/Kconfig +8
-1- Support for Hisilicon HIP01 SoC family + bool "Hisilicon HIP01 family" + depends on ARCH_MULTI_V7 + select ARM_GIC + select HAVE_ARM_SCU if SMP + select HAVE_ARM_TWD if SMP + select ARM_GLOBAL_TIMER + help + Support for Hisilicon HIP01 SoC family
This change doesn't belong in here.
Quoted 7 lines
arch/arm/mach-hisi/hisilicon.c +3
-0@@ -28,6 +30,16 @@* spaces wasted since ioremap() may be called multi times for the same * IO space. */ +static struct map_desc hi3520_1176_io_desc[]__initdata = { + { +/* sysctrl */
arch/arm/mach-hisi/hisilicon.c line 45
Quoted 10 lines
arch/arm/mach-hisi/hisilicon.c +7
-0+ .virtual = HI3520_1176_SYSCTRL_VIRT_BASE, + .pfn = __phys_to_pfn(HI3520_1176_SYSCTRL_PHYS_BASE), + .length = 0x10000, + .type = MT_DEVICE, + }, +}; +static struct map_desc hi3620_io_desc[]__initdata = { {/* sysctrl */
What do you need this for? I think it would be better to map the device manually from whichever code uses itby looking it up in the DT.
Arnd
Arnd Bergmann
maintainerRFC PATCH v2 5/5 ARM: hisi: add devicetree for hi3520
In reply to Marty PlummerQuoted 19 lines · CEST Marty Plummer
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +13
-0@@ -0,0 +1,62 @@ +/* + * Copyright (C) 2016 Marty Plummer <[email protected]> + * + * 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 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *
arch/arm/boot/dts/hi3520-1176-dm77a.dts line 23
Quoted 10 lines
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +10
-0+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/dts-v1/; +#include "hi3520-1176.dtsi" + +/ { + model = "Nightowl zeus-dvr"; + compatible = "hisilicon,hi3520-1176";
Please add a board specific compatible string in front of the string for the soc.
arch/arm/boot/dts/hi3520-1176-dm77a.dts line 30
Quoted 6 lines
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +6
-0+ aliases { + serial0 = &uart0; + serial1 = &uart1; + serial2 = &uart2; + serial3 = &uart3; + };
Do you actually have access to all four serial ports on this board? If not, just add aliases for the ones you see.
arch/arm/boot/dts/hi3520-1176-dm77a.dts line 35
Quoted 4 lines
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +4
-0+ /* chosen { */ + /* bootargs = "mem=72M console=ttyAMA0,115200 root=/dev/ram"; */ + /* stdout-path = "serial0:115200n8"; */ + /* }; */
I'd leave the stdout-path property in here, but not the bootargs.
arch/arm/boot/dts/hi3520-1176-dm77a.dts line 44
Quoted 11 lines
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +11
-0+ + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu at 0 { + device_type = "cpu"; + compatible = "arm,arm1176jzf-s"; + reg = <0>; + }; + };
I guess in the long run we will want to support both the ARM926 and the ARM1176, so maybe split the .dtsi file into two: one for whatever is common to both cores, and one for the ARM1176 CPU and anything exlusively used by that.
arch/arm/boot/dts/hi3520-1176-dm77a.dts line 52
Quoted 8 lines
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +8
-0+ + amba { + #address-cells = <1>; + #size-cells = <1>; + compatible = "simple-bus"; + ranges; + + uart0: uart at 20090000 {
The name should be serial at 20090000
arch/arm/boot/dts/hi3520-1176-dm77a.dts line 59
Quoted 7 lines
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +7
-0+ compatible = "arm,pl011", "arm,primecell"; + reg = <0x20090000 0x1000>; + clocks = <&uartclk &clk_3m>; + clock-names = "uartclk", "apb_pclk"; + interrupts-extended = <&vic0 12 4>; + status = "disable"; + };
status="disabled" (with 'd')
Quoted 14 lines
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +14
-0+ + uart1: uart at 200a0000 { + compatible = "arm,pl011", "arm,primecell"; + reg = <0x200a0000 0x1000>; + clocks = <&uartclk &clk_3m>; + clock-names = "uartclk", "apb_pclk"; + interrupts-extended = <&vic0 12 4>; + }; + + uart2: uart at 200b0000 { + compatible = "arm,pl011", "arm,primecell"; + reg = <0x200b0000 0x1000>; + clocks = <&uartclk &clk_3m>; + clock-names = "uartclk", "apb_pclk";
arch/arm/boot/dts/hi3520-1176-dm77a.dts
Quoted 10 lines
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +10
-0+ interrupts-extended = <&vic0 13 4>; + }; + + uart3: uart at 200c0000 { + compatible = "arm,pl011", "arm,primecell"; + reg = <0x200c0000 0x1000>; + clocks = <&uartclk &clk_3m>; + clock-names = "uartclk", "apb_pclk"; + interrupts-extended = <&vic0 13 4>; + };
Why are these not disabled?
arch/arm/boot/dts/hi3520-1176-dm77a.dts
Quoted 12 lines
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +12
-0+ gpio0: gpio at 20150000 { + compatible = "arm,pl061", "arm,primecell"; + reg = <0x20150000 0x1000>; + interrupts-extended = <&vic1 6 4>; + gpio-controller; + #gpio-cells = <2>; + clocks = <&uartclk &clk_3m>; + clock-names = "apb_pclk"; + interrupt-controller; + #interrupt-cells = <2>; + status = "disabled"; + };
This one should probably not be disabled in turn.
arch/arm/boot/dts/hi3520-1176-dm77a.dts
Quoted 1 line
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +1
-0+ dual_timer0: dual_timer at 20000000 {
timer at 20000000
arch/arm/boot/dts/hi3520-1176-dm77a.dts
Quoted 7 lines
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +7
-0+ spi_bus0: spi at 200e0000 { + compatible = "arm,pl022", "arm,primecell"; + reg = <0x200e0000 0x1000>; + interrupts-extended = <&vic0 11 4>; + num-cs = <1>; + }; + };
There should be a #address-cells, also you probably want to disable this if there are no child devices.
arch/arm/boot/dts/hi3520-1176-dm77a.dts
Quoted 4 lines
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +4
-0+ sysctrl: system-controller at 20050000 { + compatible = "hisilicon,hi3520-sysctrl", "syscon"; + reg = <0x20050000 0x1000>; + };
The new compatible string needs to be listed in the sysctrl binding document.
Quoted 7 lines
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +7
-0+ + reboot { + compatible = "syscon-reboot"; + regmap = <&sysctrl>; + offset = <0x4>; + mask = <0xdeadbeef>; + };
arch/arm/boot/dts/hi3520-1176-dm77a.dts
Quoted 10 lines
arch/arm/boot/dts/hi3520-1176-dm77a.dts new file +10
-0+ + /* gmac0: ethernet at 10090000 { */ + /* compatible = "hisilicon,hix5hd2-gmac"; */ + /* reg = <0x10090000 0x1000>,<0x20050000 0x1000>; */ + /* interrupts-extended = <&vic0 14 4>; */ + /* clocks = <&clk_3m>; */ + /* status = "disabled"; */ + /* }; */ + + usb0: ehci at 100b0000 {
usb at 100b0000 Arnd
Arnd Bergmann
maintainerRFC PATCH v2 3/5 dmaengine: hi3620: Make hi3620 explicit, remove wildcard
In reply to Marty PlummerQuoted 11 lines · CEST Marty Plummer
Signed-off-by Marty Plummer <[email protected]>--- drivers/dma/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/dma/Kconfig +0
-0
drivers/dma/Kconfig config INTEL_MIC_X100_DMA · line 285
Quoted 8 lines
drivers/dma/Kconfig +1
-1@@ -279,7 +279,7 @@ config INTEL_MIC_X100_DMA config K3_DMA tristate "Hisilicon K3 DMA support" - depends on ARCH_HI3xxx + depends on ARCH_HI3620 select DMA_ENGINE select DMA_VIRTUAL_CHANNELS help
This can not be applied until the first patch is merged. If we leave a ARCH_HI3xxx Kconfig symbol in place indefinitely, I think it's ok to just leave it the way it is right now and drop the patch: there are many other drivers for hardware you don't have and we just leave them disabled in the .config, so we can do the same here.
Arnd
Arnd Bergmann
maintainerRFC PATCH v2 2/5 clk: hi3620: Make 3620 explicit, remove wildcard
In reply to Marty Plummerdrivers/clk/hisilicon/Makefile line 10
Quoted 13 lines · CEST Marty Plummer
drivers/clk/hisilicon/Makefile +1
-1@@ -4,7 +4,7 @@ obj-y += clk.o clkgate-separated.o clkdivider-hi6220.o -obj-$(CONFIG_ARCH_HI3xxx) += clk-hi3620.o +obj-$(CONFIG_ARCH_HI3620) += clk-hi3620.o obj-$(CONFIG_ARCH_HIP04) += clk-hip04.o obj-$(CONFIG_ARCH_HIX5HD2) += clk-hix5hd2.o obj-$(CONFIG_COMMON_CLK_HI3519) += clk-hi3519.o
I'd suggest instead adding a new Kconfig symbol for the clock driver the same way we handle hi3519.
Arnd