于 2018年6月27日 GMT+08:00 下午10:04:53, Andre Przywara <andre.przyw...@arm.com> 写到: >Hi, > >On 25/06/18 11:37, Icenowy Zheng wrote: >> Allwinner H6 is a new SoC from Allwinner features USB3 and PCIe >> interfaces. >> >> This patch adds support for it. > >Can you please mention in the commit message or subject line that this >includes the SoC .dtsi? Or maybe even split this out into a separate >patch? > >And is there any reason you didn't copy the official Linux DT version? >Or is that one here just an older copy of that? >Anyway, please use the most recent version of the .dtsi, so we can use >that directly to pass on to the kernel.
Okay. P.S. it's "oldest", not "older". > >Thanks! >Andre. > >> As this is a new SoC supported by mainline U-Boot, the MMC env >support >> is dropped and only FAT env is available. >> >> Signed-off-by: Icenowy Zheng <icen...@aosc.io> >> --- >> arch/arm/dts/sun50i-h6.dtsi | 140 >+++++++++++++++++++++++++++++++++ >> arch/arm/mach-sunxi/Kconfig | 17 +++- >> arch/arm/mach-sunxi/cpu_info.c | 2 + >> common/spl/Kconfig | 2 +- >> 4 files changed, 159 insertions(+), 2 deletions(-) >> create mode 100644 arch/arm/dts/sun50i-h6.dtsi >> >> diff --git a/arch/arm/dts/sun50i-h6.dtsi >b/arch/arm/dts/sun50i-h6.dtsi >> new file mode 100644 >> index 0000000000..50f9146318 >> --- /dev/null >> +++ b/arch/arm/dts/sun50i-h6.dtsi >> @@ -0,0 +1,140 @@ >> +/* >> + * Copyright (C) 2017 Icenowy Zheng <icen...@aosc.io> >> + * >> + * This file is dual-licensed: you can use it either under the terms >> + * of the GPL or the X11 license, at your option. Note that this >dual >> + * licensing only applies to this file, and not this project as a >> + * whole. >> + * >> + * a) This file 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. >> + * >> + * This file 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. >> + * >> + * Or, alternatively, >> + * >> + * b) Permission is hereby granted, free of charge, to any person >> + * obtaining a copy of this software and associated >documentation >> + * files (the "Software"), to deal in the Software without >> + * restriction, including without limitation the rights to use, >> + * copy, modify, merge, publish, distribute, sublicense, and/or >> + * sell copies of the Software, and to permit persons to whom >the >> + * Software is furnished to do so, subject to the following >> + * conditions: >> + * >> + * The above copyright notice and this permission notice shall >be >> + * included in all copies or substantial portions of the >Software. >> + * >> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY >KIND, >> + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE >WARRANTIES >> + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND >> + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT >> + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, >> + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING >> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR >> + * OTHER DEALINGS IN THE SOFTWARE. >> + */ >> + >> +#include <dt-bindings/interrupt-controller/arm-gic.h> >> + >> +/ { >> + interrupt-parent = <&gic>; >> + #address-cells = <1>; >> + #size-cells = <1>; >> + >> + cpus { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + cpu0: cpu@0 { >> + compatible = "arm,cortex-a53", "arm,armv8"; >> + device_type = "cpu"; >> + reg = <0>; >> + }; >> + >> + cpu1: cpu@1 { >> + compatible = "arm,cortex-a53", "arm,armv8"; >> + device_type = "cpu"; >> + reg = <1>; >> + }; >> + >> + cpu2: cpu@2 { >> + compatible = "arm,cortex-a53", "arm,armv8"; >> + device_type = "cpu"; >> + reg = <2>; >> + }; >> + >> + cpu3: cpu@3 { >> + compatible = "arm,cortex-a53", "arm,armv8"; >> + device_type = "cpu"; >> + reg = <3>; >> + }; >> + }; >> + >> + osc24M: osc24M_clk { >> + #clock-cells = <0>; >> + compatible = "fixed-clock"; >> + clock-frequency = <24000000>; >> + clock-output-names = "osc24M"; >> + }; >> + >> + osc32k: osc32k_clk { >> + #clock-cells = <0>; >> + compatible = "fixed-clock"; >> + clock-frequency = <32768>; >> + clock-output-names = "osc32k"; >> + }; >> + >> + iosc: internal-osc-clk { >> + #clock-cells = <0>; >> + compatible = "fixed-clock"; >> + clock-frequency = <16000000>; >> + clock-accuracy = <300000000>; >> + clock-output-names = "iosc"; >> + }; >> + >> + timer { >> + compatible = "arm,armv8-timer"; >> + interrupts = <GIC_PPI 13 >> + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, >> + <GIC_PPI 14 >> + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, >> + <GIC_PPI 11 >> + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, >> + <GIC_PPI 10 >> + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; >> + }; >> + >> + soc { >> + compatible = "simple-bus"; >> + #address-cells = <1>; >> + #size-cells = <1>; >> + ranges; >> + >> + gic: interrupt-controller@3021000 { >> + compatible = "arm,gic-400"; >> + reg = <0x03021000 0x1000>, >> + <0x03022000 0x2000>, >> + <0x03024000 0x2000>, >> + <0x03026000 0x2000>; >> + interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | >IRQ_TYPE_LEVEL_HIGH)>; >> + interrupt-controller; >> + #interrupt-cells = <3>; >> + }; >> + >> + uart0: serial@5000000 { >> + compatible = "snps,dw-apb-uart"; >> + reg = <0x05000000 0x400>; >> + interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; >> + reg-shift = <2>; >> + reg-io-width = <4>; >> + clocks = <&osc24M>; /* placeholder */ >> + status = "disabled"; >> + }; >> + }; >> +}; >> diff --git a/arch/arm/mach-sunxi/Kconfig >b/arch/arm/mach-sunxi/Kconfig >> index c2fa0533e7..cb4a9af6bf 100644 >> --- a/arch/arm/mach-sunxi/Kconfig >> +++ b/arch/arm/mach-sunxi/Kconfig >> @@ -82,6 +82,7 @@ config SUN8I_RSB >> config SUNXI_SRAM_ADDRESS >> hex >> default 0x10000 if MACH_SUN9I || MACH_SUN50I || MACH_SUN50I_H5 >> + default 0x20000 if MACH_SUN50I_H6 >> default 0x0 >> ---help--- >> Older Allwinner SoCs have their mask boot ROM mapped just below >4GB, >> @@ -281,6 +282,14 @@ config MACH_SUN50I_H5 >> select FIT >> select SPL_LOAD_FIT >> >> +config MACH_SUN50I_H6 >> + bool "sun50i (Allwinner H6)" >> + select ARM64 >> + select SUPPORT_SPL >> + select FIT >> + select SPL_LOAD_FIT >> + select DRAM_SUN50I_H6 >> + >> endchoice >> >> # The sun8i SoCs share a lot, this helps to avoid a lot of "if A23 >|| A33" >> @@ -374,6 +383,7 @@ config DRAM_CLK >> default 360 if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || \ >> MACH_SUN8I_V3S >> default 672 if MACH_SUN50I >> + default 744 if MACH_SUN50I_H6 >> ---help--- >> Set the dram clock speed, valid range 240 - 480 (prior to sun9i), >> must be a multiple of 24. For the sun9i (A80), the tested values >> @@ -393,7 +403,7 @@ config DRAM_ZQ >> default 123 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || MACH_SUN8I >> default 127 if MACH_SUN7I >> default 14779 if MACH_SUN8I_V3S >> - default 3881979 if MACH_SUN8I_R40 >> + default 3881979 if MACH_SUN8I_R40 || MACH_SUN50I_H6 >> default 4145117 if MACH_SUN9I >> default 3881915 if MACH_SUN50I >> ---help--- >> @@ -405,6 +415,7 @@ config DRAM_ODT_EN >> default y if MACH_SUN8I_A23 >> default y if MACH_SUN8I_R40 >> default y if MACH_SUN50I >> + default y if MACH_SUN50I_H6 >> ---help--- >> Select this to enable dram odt (on die termination). >> >> @@ -495,6 +506,7 @@ config SYS_CLK_FREQ >> default 816000000 if MACH_SUN50I || MACH_SUN50I_H5 >> default 1008000000 if MACH_SUN8I >> default 1008000000 if MACH_SUN9I >> + default 888000000 if MACH_SUN50I_H6 >> >> config SYS_CONFIG_NAME >> default "sun4i" if MACH_SUN4I >> @@ -504,6 +516,7 @@ config SYS_CONFIG_NAME >> default "sun8i" if MACH_SUN8I >> default "sun9i" if MACH_SUN9I >> default "sun50i" if MACH_SUN50I >> + default "sun50i" if MACH_SUN50I_H6 >> >> config SYS_BOARD >> default "sunxi" >> @@ -709,6 +722,7 @@ config VIDEO_SUNXI >> depends on !MACH_SUN8I_V3S >> depends on !MACH_SUN9I >> depends on !MACH_SUN50I >> + depends on !MACH_SUN50I_H6 >> select VIDEO >> imply VIDEO_DT_SIMPLEFB >> default y >> @@ -941,6 +955,7 @@ config SPL_STACK_R_ADDR >> default 0x4fe00000 if MACH_SUN8I >> default 0x2fe00000 if MACH_SUN9I >> default 0x4fe00000 if MACH_SUN50I >> + default 0x4fe00000 if MACH_SUN50I_H6 >> >> config SPL_SPI_SUNXI >> bool "Support for SPI Flash on Allwinner SoCs in SPL" >> diff --git a/arch/arm/mach-sunxi/cpu_info.c >b/arch/arm/mach-sunxi/cpu_info.c >> index 25a5ec26a0..90aff395dc 100644 >> --- a/arch/arm/mach-sunxi/cpu_info.c >> +++ b/arch/arm/mach-sunxi/cpu_info.c >> @@ -97,6 +97,8 @@ int print_cpuinfo(void) >> puts("CPU: Allwinner A64 (SUN50I)\n"); >> #elif defined CONFIG_MACH_SUN50I_H5 >> puts("CPU: Allwinner H5 (SUN50I)\n"); >> +#elif defined CONFIG_MACH_SUN50I_H6 >> + puts("CPU: Allwinner H6 (SUN50I)\n"); >> #else >> #warning Please update cpu_info.c with correct CPU information >> puts("CPU: SUNXI Family\n"); >> diff --git a/common/spl/Kconfig b/common/spl/Kconfig >> index 4d27565566..e761bda6f1 100644 >> --- a/common/spl/Kconfig >> +++ b/common/spl/Kconfig >> @@ -246,7 +246,7 @@ config SPL_SHA256_SUPPORT >> config SPL_FIT_IMAGE_TINY >> bool "Remove functionality from SPL FIT loading to reduce size" >> depends on SPL_FIT >> - default y if MACH_SUN50I || MACH_SUN50I_H5 >> + default y if MACH_SUN50I || MACH_SUN50I_H5 || MACH_SUN50I_H6 >> help >> Enable this to reduce the size of the FIT image loading code >> in SPL, if space for the SPL binary is very tight. >> _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot