Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'am654-for-v4.19-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/dt

TI AM654 support for v4.19 merge window

This branch adds initial support for new Texas Instruments AM654
quad core A53 ARMv8 SoC. It's the first device for TI K3 multicore SoC
architecture.

Initially only basic devices are configured, support for more devices
will follow later on. And many of the internal devices familiar from
earlier TI SoCs should work with existing kernel device drivers.

* tag 'am654-for-v4.19-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
arm64: dts: ti: Add support for AM654 EVM base board
soc: ti: Add Support for AM654 SoC config option
arm64: dts: ti: Add Support for AM654 SoC
arm64: Add support for TI's K3 Multicore SoC architecture
dt-bindings: arm: ti: Add bindings for AM654 SoC

Signed-off-by: Olof Johansson <olof@lixom.net>

+332
+23
Documentation/devicetree/bindings/arm/ti/k3.txt
··· 1 + Texas Instruments K3 Multicore SoC architecture device tree bindings 2 + -------------------------------------------------------------------- 3 + 4 + Platforms based on Texas Instruments K3 Multicore SoC architecture 5 + shall follow the following scheme: 6 + 7 + SoCs 8 + ---- 9 + 10 + Each device tree root node must specify which exact SoC in K3 Multicore SoC 11 + architecture it uses, using one of the following compatible values: 12 + 13 + - AM654 14 + compatible = "ti,am654"; 15 + 16 + Boards 17 + ------ 18 + 19 + In addition, each device tree root node must specify which one or more 20 + of the following board-specific compatible values: 21 + 22 + - AM654 EVM 23 + compatible = "ti,am654-evm", "ti,am654";
+9
MAINTAINERS
··· 2087 2087 S: Maintained 2088 2088 F: drivers/memory/*emif* 2089 2089 2090 + ARM/TEXAS INSTRUMENTS K3 ARCHITECTURE 2091 + M: Tero Kristo <t-kristo@ti.com> 2092 + M: Nishanth Menon <nm@ti.com> 2093 + L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 2094 + S: Supported 2095 + F: Documentation/devicetree/bindings/arm/ti/k3.txt 2096 + F: arch/arm64/boot/dts/ti/Makefile 2097 + F: arch/arm64/boot/dts/ti/k3-* 2098 + 2090 2099 ARM/TEXAS INSTRUMENT KEYSTONE ARCHITECTURE 2091 2100 M: Santosh Shilimkar <ssantosh@kernel.org> 2092 2101 L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+7
arch/arm64/Kconfig.platforms
··· 71 71 help 72 72 This enables support for ARMv8 based Samsung Exynos SoC family. 73 73 74 + config ARCH_K3 75 + bool "Texas Instruments Inc. K3 multicore SoC architecture" 76 + select PM_GENERIC_DOMAINS if PM 77 + help 78 + This enables support for Texas Instruments' K3 multicore SoC 79 + architecture. 80 + 74 81 config ARCH_LAYERSCAPE 75 82 bool "ARMv8 based Freescale Layerscape SoC family" 76 83 select EDAC_SUPPORT
+1
arch/arm64/boot/dts/Makefile
··· 23 23 subdir-y += socionext 24 24 subdir-y += sprd 25 25 subdir-y += synaptics 26 + subdir-y += ti 26 27 subdir-y += xilinx 27 28 subdir-y += zte
+9
arch/arm64/boot/dts/ti/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + # 3 + # Make file to build device tree binaries for boards based on 4 + # Texas Instruments Inc processors 5 + # 6 + # Copyright (C) 2016-2018 Texas Instruments Incorporated - http://www.ti.com/ 7 + # 8 + 9 + dtb-$(CONFIG_ARCH_K3_AM6_SOC) += k3-am654-base-board.dtb
+31
arch/arm64/boot/dts/ti/k3-am65-main.dtsi
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * Device Tree Source for AM6 SoC Family Main Domain peripherals 4 + * 5 + * Copyright (C) 2016-2018 Texas Instruments Incorporated - http://www.ti.com/ 6 + */ 7 + 8 + &cbass_main { 9 + gic500: interrupt-controller@1800000 { 10 + compatible = "arm,gic-v3"; 11 + #address-cells = <1>; 12 + #size-cells = <1>; 13 + ranges; 14 + #interrupt-cells = <3>; 15 + interrupt-controller; 16 + reg = <0x01800000 0x10000>, /* GICD */ 17 + <0x01880000 0x90000>; /* GICR */ 18 + /* 19 + * vcpumntirq: 20 + * virtual CPU interface maintenance interrupt 21 + */ 22 + interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; 23 + 24 + gic_its: gic-its@18200000 { 25 + compatible = "arm,gic-v3-its"; 26 + reg = <0x01820000 0x10000>; 27 + msi-controller; 28 + #msi-cells = <1>; 29 + }; 30 + }; 31 + };
+87
arch/arm64/boot/dts/ti/k3-am65.dtsi
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * Device Tree Source for AM6 SoC Family 4 + * 5 + * Copyright (C) 2016-2018 Texas Instruments Incorporated - http://www.ti.com/ 6 + */ 7 + 8 + #include <dt-bindings/gpio/gpio.h> 9 + #include <dt-bindings/interrupt-controller/irq.h> 10 + #include <dt-bindings/interrupt-controller/arm-gic.h> 11 + 12 + / { 13 + model = "Texas Instruments K3 AM654 SoC"; 14 + compatible = "ti,am654"; 15 + interrupt-parent = <&gic500>; 16 + #address-cells = <2>; 17 + #size-cells = <2>; 18 + 19 + chosen { }; 20 + 21 + firmware { 22 + optee { 23 + compatible = "linaro,optee-tz"; 24 + method = "smc"; 25 + }; 26 + 27 + psci: psci { 28 + compatible = "arm,psci-1.0"; 29 + method = "smc"; 30 + }; 31 + }; 32 + 33 + a53_timer0: timer-cl0-cpu0 { 34 + compatible = "arm,armv8-timer"; 35 + interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, /* cntpsirq */ 36 + <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, /* cntpnsirq */ 37 + <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, /* cntvirq */ 38 + <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; /* cnthpirq */ 39 + }; 40 + 41 + pmu: pmu { 42 + compatible = "arm,armv8-pmuv3"; 43 + /* Recommendation from GIC500 TRM Table A.3 */ 44 + interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>; 45 + }; 46 + 47 + cbass_main: interconnect@100000 { 48 + compatible = "simple-bus"; 49 + #address-cells = <1>; 50 + #size-cells = <1>; 51 + ranges = <0x00100000 0x00 0x00100000 0x00020000>, /* ctrl mmr */ 52 + <0x00600000 0x00 0x00600000 0x00001100>, /* GPIO */ 53 + <0x00900000 0x00 0x00900000 0x00012000>, /* serdes */ 54 + <0x01000000 0x00 0x01000000 0x0af02400>, /* Most peripherals */ 55 + <0x30800000 0x00 0x30800000 0x0bc00000>, /* MAIN NAVSS */ 56 + /* MCUSS Range */ 57 + <0x28380000 0x00 0x28380000 0x03880000>, 58 + <0x40200000 0x00 0x40200000 0x00900100>, 59 + <0x42040000 0x00 0x42040000 0x03ac2400>, 60 + <0x45100000 0x00 0x45100000 0x00c24000>, 61 + <0x46000000 0x00 0x46000000 0x00200000>, 62 + <0x47000000 0x00 0x47000000 0x00068400>; 63 + 64 + cbass_mcu: interconnect@28380000 { 65 + compatible = "simple-bus"; 66 + #address-cells = <1>; 67 + #size-cells = <1>; 68 + ranges = <0x28380000 0x28380000 0x03880000>, /* MCU NAVSS*/ 69 + <0x40200000 0x40200000 0x00900100>, /* First peripheral window */ 70 + <0x42040000 0x42040000 0x03ac2400>, /* WKUP */ 71 + <0x45100000 0x45100000 0x00c24000>, /* MMRs, remaining NAVSS */ 72 + <0x46000000 0x46000000 0x00200000>, /* CPSW */ 73 + <0x47000000 0x47000000 0x00068400>; /* OSPI space 1 */ 74 + 75 + cbass_wakeup: interconnect@42040000 { 76 + compatible = "simple-bus"; 77 + #address-cells = <1>; 78 + #size-cells = <1>; 79 + /* WKUP Basic peripherals */ 80 + ranges = <0x42040000 0x42040000 0x03ac2400>; 81 + }; 82 + }; 83 + }; 84 + }; 85 + 86 + /* Now include the peripherals for each bus segments */ 87 + #include "k3-am65-main.dtsi"
+36
arch/arm64/boot/dts/ti/k3-am654-base-board.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * Copyright (C) 2016-2018 Texas Instruments Incorporated - http://www.ti.com/ 4 + */ 5 + 6 + /dts-v1/; 7 + 8 + #include "k3-am654.dtsi" 9 + 10 + / { 11 + compatible = "ti,am654-evm", "ti,am654"; 12 + model = "Texas Instruments AM654 Base Board"; 13 + 14 + chosen { 15 + stdout-path = "serial2:115200n8"; 16 + bootargs = "earlycon=ns16550a,mmio32,0x02800000"; 17 + }; 18 + 19 + memory@80000000 { 20 + device_type = "memory"; 21 + /* 4G RAM */ 22 + reg = <0x00000000 0x80000000 0x00000000 0x80000000>, 23 + <0x00000008 0x80000000 0x00000000 0x80000000>; 24 + }; 25 + 26 + reserved-memory { 27 + #address-cells = <2>; 28 + #size-cells = <2>; 29 + ranges; 30 + secure_ddr: secure_ddr@9e800000 { 31 + reg = <0 0x9e800000 0 0x01800000>; /* for OP-TEE */ 32 + alignment = <0x1000>; 33 + no-map; 34 + }; 35 + }; 36 + };
+115
arch/arm64/boot/dts/ti/k3-am654.dtsi
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * Device Tree Source for AM6 SoC family in Quad core configuration 4 + * 5 + * Copyright (C) 2016-2018 Texas Instruments Incorporated - http://www.ti.com/ 6 + */ 7 + 8 + #include "k3-am65.dtsi" 9 + 10 + / { 11 + cpus { 12 + #address-cells = <1>; 13 + #size-cells = <0>; 14 + cpu-map { 15 + cluster0: cluster0 { 16 + core0 { 17 + cpu = <&cpu0>; 18 + }; 19 + 20 + core1 { 21 + cpu = <&cpu1>; 22 + }; 23 + }; 24 + 25 + cluster1: cluster1 { 26 + core0 { 27 + cpu = <&cpu2>; 28 + }; 29 + 30 + core1 { 31 + cpu = <&cpu3>; 32 + }; 33 + }; 34 + }; 35 + 36 + cpu0: cpu@0 { 37 + compatible = "arm,cortex-a53", "arm,armv8"; 38 + reg = <0x000>; 39 + device_type = "cpu"; 40 + enable-method = "psci"; 41 + i-cache-size = <0x8000>; 42 + i-cache-line-size = <64>; 43 + i-cache-sets = <256>; 44 + d-cache-size = <0x8000>; 45 + d-cache-line-size = <64>; 46 + d-cache-sets = <128>; 47 + next-level-cache = <&L2_0>; 48 + }; 49 + 50 + cpu1: cpu@1 { 51 + compatible = "arm,cortex-a53", "arm,armv8"; 52 + reg = <0x001>; 53 + device_type = "cpu"; 54 + enable-method = "psci"; 55 + i-cache-size = <0x8000>; 56 + i-cache-line-size = <64>; 57 + i-cache-sets = <256>; 58 + d-cache-size = <0x8000>; 59 + d-cache-line-size = <64>; 60 + d-cache-sets = <128>; 61 + next-level-cache = <&L2_0>; 62 + }; 63 + 64 + cpu2: cpu@100 { 65 + compatible = "arm,cortex-a53", "arm,armv8"; 66 + reg = <0x100>; 67 + device_type = "cpu"; 68 + enable-method = "psci"; 69 + i-cache-size = <0x8000>; 70 + i-cache-line-size = <64>; 71 + i-cache-sets = <256>; 72 + d-cache-size = <0x8000>; 73 + d-cache-line-size = <64>; 74 + d-cache-sets = <128>; 75 + next-level-cache = <&L2_1>; 76 + }; 77 + 78 + cpu3: cpu@101 { 79 + compatible = "arm,cortex-a53", "arm,armv8"; 80 + reg = <0x101>; 81 + device_type = "cpu"; 82 + enable-method = "psci"; 83 + i-cache-size = <0x8000>; 84 + i-cache-line-size = <64>; 85 + i-cache-sets = <256>; 86 + d-cache-size = <0x8000>; 87 + d-cache-line-size = <64>; 88 + d-cache-sets = <128>; 89 + next-level-cache = <&L2_1>; 90 + }; 91 + }; 92 + 93 + L2_0: l2-cache0 { 94 + compatible = "cache"; 95 + cache-level = <2>; 96 + cache-size = <0x80000>; 97 + cache-line-size = <64>; 98 + cache-sets = <512>; 99 + next-level-cache = <&msmc_l3>; 100 + }; 101 + 102 + L2_1: l2-cache1 { 103 + compatible = "cache"; 104 + cache-level = <2>; 105 + cache-size = <0x80000>; 106 + cache-line-size = <64>; 107 + cache-sets = <512>; 108 + next-level-cache = <&msmc_l3>; 109 + }; 110 + 111 + msmc_l3: l3-cache0 { 112 + compatible = "cache"; 113 + cache-level = <3>; 114 + }; 115 + };
+14
drivers/soc/ti/Kconfig
··· 1 + # 64-bit ARM SoCs from TI 2 + if ARM64 3 + 4 + if ARCH_K3 5 + 6 + config ARCH_K3_AM6_SOC 7 + bool "K3 AM6 SoC" 8 + help 9 + Enable support for TI's AM6 SoC Family support 10 + 11 + endif 12 + 13 + endif 14 + 1 15 # 2 16 # TI SOC drivers 3 17 #