Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp957440imm; Tue, 5 Jun 2018 07:06:59 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIFyeoHPC6U7Rrxi8ctEERKFdqYZ5Lgv3bc1grmwUBorCnq2cZmadPPORcs+35onPJuuWV/ X-Received: by 2002:a65:41c6:: with SMTP id b6-v6mr21099811pgq.372.1528207619259; Tue, 05 Jun 2018 07:06:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528207619; cv=none; d=google.com; s=arc-20160816; b=k+Be8ZL1lwnZE+4eXT8BlVuhQPS4NhIooOa+Q7CLVEGHr/dAy8TYzO0lZjGMFfYLs/ dP4E24FzJno1sbKOALswQcnhJQwXpKVARk+rjb86lHTFq/ZQ/PIi9IWfj9NLrkJ7jefi CLX+/9/AV1ZrY2QSqhtkDmGpFyDNMESYDs/UuoRlOJEnZlhol8agpZ+6IhJsci4sS/lA jWjgNFBYhMnZc2UcGvpXZb+X0MKXRuaOoO/JSKS+4NUASoQ2HUFzdyimSfCn2bjXuCnN MrSr0I+G5m+QuGlIttQk0OBimLFdUYB1LgMWqByJ+8PC7dlMp8CNjs5V5QmlD0f4B81g /1jA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=0vyUVvLl2qo29CTbwCWt2Ht1PR1C3OxCqoCOQmjmSc4=; b=CiEWOuwJxDsbOaIySq9c3STCM70vklb4NB3iRN5EJSAD1ZpmLhklI+Rr8LCeo3kAL0 I7rcW6hwWqbxqb82DkLig0Sq6dBtfQBMTMfEqT9nyHuma/fczIHKwdPu3KPdferCC5MV n5tYEJ7AeiPQZa4kU+GPo4Fbhwzn3/IIsIAmoJ0gSn1YECtzI3XQdzg99xP1AkeQG6sN 9Rth9QVENtoTs+XJnghfkn2t1Venktcxr9P8j5qWvMlZAN0pf+M0PA4xVEg+9FN9sLYn YweR4ZmkeZRyuAQo20zOT9Wu+VJW822qAeReA3V4AaRPKhXfd3S1GiTAt2lrQeMjisTI M/dA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=0k8EfOAS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g11-v6si2412924pgf.534.2018.06.05.07.06.44; Tue, 05 Jun 2018 07:06:59 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=0k8EfOAS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752131AbeFEOFy (ORCPT + 99 others); Tue, 5 Jun 2018 10:05:54 -0400 Received: from mail.kernel.org ([198.145.29.99]:49980 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751912AbeFEOFv (ORCPT ); Tue, 5 Jun 2018 10:05:51 -0400 Received: from mail-io0-f171.google.com (mail-io0-f171.google.com [209.85.223.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 212F12083B; Tue, 5 Jun 2018 14:05:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1528207551; bh=UKfl5FTI9WLVssRNs2SjLrtCMLdgoQpdw1u9ZWI8SpY=; h=In-Reply-To:References:From:Date:Subject:To:Cc:From; b=0k8EfOASTWhXuiwu2n2rCtHqSzt38Nzvg3ynjqTDjCwkQdpnPUf1f79UVJCvfCodK mw3WGItsTXifRLexd1Cik22zBuJgbH37WOa14a2E2XeeIEebkcqu/kSyWFacsnQ2Jz /JyW0JQXuUtlWLRSdsr/AgY8jheHV1pIfUQ/nVLo= Received: by mail-io0-f171.google.com with SMTP id l25-v6so3451873ioh.12; Tue, 05 Jun 2018 07:05:51 -0700 (PDT) X-Gm-Message-State: APt69E3EdFxIeAaJ/Duzdw52DBcJpTJ1PGBkLuHHpBG51VNEXFzLqQr/ P2k+gToregEoCp1TxKrQjSVbamIRUV1ijZOG6g== X-Received: by 2002:a6b:452:: with SMTP id 79-v6mr12924265ioe.50.1528207550446; Tue, 05 Jun 2018 07:05:50 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a4f:5505:0:0:0:0:0 with HTTP; Tue, 5 Jun 2018 07:05:29 -0700 (PDT) In-Reply-To: <20180605060510.32473-1-nm@ti.com> References: <20180605060510.32473-1-nm@ti.com> From: Rob Herring Date: Tue, 5 Jun 2018 09:05:29 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [RFC PATCH 5/6] arm64: dts: ti: Add Support for AM654 SoC To: Nishanth Menon Cc: Santosh Shilimkar , Will Deacon , Catalin Marinas , Greg Kroah-Hartman , Mark Rutland , "open list:SERIAL DRIVERS" , "linux-kernel@vger.kernel.org" , devicetree@vger.kernel.org, "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" , Tony Lindgren , Vignesh R , Tero Kristo , Russell King , Sudeep Holla Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 5, 2018 at 1:05 AM, Nishanth Menon wrote: > The AM654 SoC is a lead device of the K3 Multicore SoC architecture > platform, targeted for broad market and industrial control with aim to > meet the complex processing needs of modern embedded products. > > Some highlights of this SoC are: > * Quad ARMv8 A53 cores split over two clusters > * GICv3 compliant GIC500 > * Configurable L3 Cache and IO-coherent architecture > * Dual lock-step capable R5F uC for safety-critical applications > * High data throughput capable distributed DMA architecture under NAVSS > * Three Gigabit Industrial Communication Subsystems (ICSSG), each with dual > PRUs and dual RTUs > * Hardware accelerator block containing AES/DES/SHA/MD5 called SA2UL > * Centralized System Controller for Security, Power, and Resource > management. > * Dual ADCSS, eQEP/eCAP, eHRPWM, dual CAN-FD > * Flash subystem with OSPI and Hyperbus interfaces > * Multimedia capability with CAL, DSS7-UL, SGX544, McASP > * Peripheral connectivity including USB3, PCIE, MMC/SD, GPMC, I2C, SPI, > GPIO > > See AM65x Technical Reference Manual (SPRUID7, April 2018) > for further details: http://www.ti.com/lit/pdf/spruid7 > > We introduce the Kconfig symbol for the SoC along with this patch since > it is logically relevant point, however the usage is in subsequent > patches. > > NOTE: AM654 is the first of the device variants, hence we introduce a > generic am6.dtsi. > > Signed-off-by: Benjamin Fair > Signed-off-by: Nishanth Menon > --- > MAINTAINERS | 1 + > arch/arm64/boot/dts/ti/k3-am6.dtsi | 144 +++++++++++++++++++++++++++++++++++ > arch/arm64/boot/dts/ti/k3-am654.dtsi | 117 ++++++++++++++++++++++++++++ > drivers/soc/ti/Kconfig | 14 ++++ > 4 files changed, 276 insertions(+) > create mode 100644 arch/arm64/boot/dts/ti/k3-am6.dtsi > create mode 100644 arch/arm64/boot/dts/ti/k3-am654.dtsi > > diff --git a/MAINTAINERS b/MAINTAINERS > index cfb35b252ac7..5f5c4eddec7a 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -2092,6 +2092,7 @@ M: Nishanth Menon > L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) > S: Supported > F: Documentation/devicetree/bindings/arm/ti/k3.txt > +F: arch/arm64/boot/dts/ti/k3-* > > ARM/TEXAS INSTRUMENT KEYSTONE ARCHITECTURE > M: Santosh Shilimkar > diff --git a/arch/arm64/boot/dts/ti/k3-am6.dtsi b/arch/arm64/boot/dts/ti/k3-am6.dtsi > new file mode 100644 > index 000000000000..cdfa12173aac > --- /dev/null > +++ b/arch/arm64/boot/dts/ti/k3-am6.dtsi > @@ -0,0 +1,144 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Device Tree Source for AM6 SoC Family > + * > + * Copyright (C) 2016-2018 Texas Instruments Incorporated - http://www.ti.com/ > + */ > + > +#include > +#include > +#include > + > +/ { > + model = "Texas Instruments K3 AM654 SoC"; > + compatible = "ti,am654"; > + interrupt-parent = <&gic>; > + #address-cells = <2>; > + #size-cells = <2>; > + > + aliases { > + serial0 = &wkup_uart0; > + serial1 = &mcu_uart0; > + serial2 = &main_uart0; > + serial3 = &main_uart1; > + serial4 = &main_uart2; > + }; > + > + chosen { }; > + > + firmware { > + optee { > + compatible = "linaro,optee-tz"; > + method = "smc"; > + }; > + > + psci: psci { > + compatible = "arm,psci-1.0"; > + method = "smc"; > + }; > + }; > + > + soc0: soc0 { > + compatible = "simple-bus"; > + #address-cells = <2>; > + #size-cells = <2>; > + ranges; Really need 64-bit addresses and sizes? Use ranges to limit the address space if possible. > + > + a53_timer0: timer-cl0-cpu0 { > + compatible = "arm,armv8-timer"; > + interrupts = , /* cntpsirq */ > + , /* cntpnsirq */ > + , /* cntvirq */ > + ; /* cnthpirq */ > + }; > + > + pmu: pmu { > + compatible = "arm,armv8-pmuv3"; > + /* Recommendation from GIC500 TRM Table A.3 */ > + interrupts = ; > + }; These 2 nodes aren't on the bus, so move them up a level. > + > + gic: interrupt-controller@1800000 { > + compatible = "arm,gic-v3"; gic-500? > + #address-cells = <2>; > + #size-cells = <2>; > + ranges; > + #interrupt-cells = <3>; > + interrupt-controller; > + /* > + * NOTE: we are NOT gicv2 backward compat, so no GICC, > + * GICH or GICV The compatible should imply this. > + */ > + reg = <0x0 0x01800000 0x0 0x10000>, /* GICD */ > + <0x0 0x01880000 0x0 0x90000>; /* GICR */ > + > + /* > + * vcpumntirq: > + * virtual CPU interface maintenance interrupt > + */ > + interrupts = ; > + > + gic_its: gic-its@1000000 { > + compatible = "arm,gic-v3-its"; > + reg = <0x0 0x1820000 0x0 0x10000>; > + msi-controller; > + #msi-cells = <1>; > + }; > + }; > + > + wkup_uart0: serial@42300000 { > + compatible = "ti,am654-uart", "ti,omap4-uart", "ns16550a"; > + reg = <0x0 0x42300000 0x0 0x100>; > + reg-shift = <2>; > + reg-io-width = <4>; > + interrupts = ; > + clock-frequency = <48000000>; > + current-speed = <115200>; > + status = "disabled"; > + }; > + > + mcu_uart0: serial@40a00000 { > + compatible = "ti,am654-uart", "ti,omap4-uart", "ns16550a"; > + reg = <0x0 0x40a00000 0x0 0x100>; > + reg-shift = <2>; > + reg-io-width = <4>; > + interrupts = ; > + clock-frequency = <96000000>; > + current-speed = <115200>; > + status = "disabled"; > + }; > + > + main_uart0: serial@2800000 { > + compatible = "ti,am654-uart", "ti,omap4-uart", "ns16550a"; > + reg = <0x0 0x02800000 0x0 0x100>; > + reg-shift = <2>; > + reg-io-width = <4>; > + interrupts = ; > + clock-frequency = <48000000>; > + current-speed = <115200>; > + status = "disabled"; > + }; > + > + main_uart1: serial@2810000 { > + compatible = "ti,am654-uart", "ti,omap4-uart", "ns16550a"; > + reg = <0x0 0x02810000 0x0 0x100>; > + reg-shift = <2>; > + reg-io-width = <4>; > + interrupts = ; > + clock-frequency = <48000000>; > + current-speed = <115200>; > + status = "disabled"; > + }; > + > + main_uart2: serial@2820000 { > + compatible = "ti,am654-uart", "ti,omap4-uart", "ns16550a"; > + reg = <0x0 0x02820000 0x0 0x100>; > + reg-shift = <2>; > + reg-io-width = <4>; > + interrupts = ; > + clock-frequency = <48000000>; > + current-speed = <115200>; > + status = "disabled"; > + }; > + }; > +}; > diff --git a/arch/arm64/boot/dts/ti/k3-am654.dtsi b/arch/arm64/boot/dts/ti/k3-am654.dtsi > new file mode 100644 > index 000000000000..d9b70081daba > --- /dev/null > +++ b/arch/arm64/boot/dts/ti/k3-am654.dtsi > @@ -0,0 +1,117 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Device Tree Source for AM6 SoC family in Quad core configuration > + * > + * Copyright (C) 2016-2018 Texas Instruments Incorporated - http://www.ti.com/ > + */ > + > +#include "k3-am6.dtsi" > + > +/ { > + cpus: cpus { Really need a label? > + #address-cells = <1>; > + #size-cells = <0>; > + cpu-map { IIRC, this goes at the top level. > + cluster0: cluster0 { > + core0 { > + cpu = <&cpu0>; > + }; > + > + core1 { > + cpu = <&cpu1>; > + }; > + }; > + > + cluster1: cluster1 { > + core0 { > + cpu = <&cpu2>; > + }; > + > + core1 { > + cpu = <&cpu3>; > + }; > + }; > + }; > + > + cpu0: cpu@0 { > + compatible = "arm,cortex-a53","arm,armv8"; space between compatibles. > + reg = <0x000>; > + device_type = "cpu"; > + enable-method = "psci"; > + i-cache-size = <0x8000>; > + i-cache-line-size = <64>; > + i-cache-sets = <256>; > + d-cache-size = <0x8000>; > + d-cache-line-size = <64>; > + d-cache-sets = <128>; All this should be discoverable. > + next-level-cache = <&L2_0>; > + }; > + > + cpu1: cpu@1 { > + compatible = "arm,cortex-a53","arm,armv8"; > + reg = <0x001>; > + device_type = "cpu"; > + enable-method = "psci"; > + i-cache-size = <0x8000>; > + i-cache-line-size = <64>; > + i-cache-sets = <256>; > + d-cache-size = <0x8000>; > + d-cache-line-size = <64>; > + d-cache-sets = <128>; > + next-level-cache = <&L2_0>; > + }; > + > + cpu2: cpu@100 { > + compatible = "arm,cortex-a53","arm,armv8"; > + reg = <0x100>; > + device_type = "cpu"; > + enable-method = "psci"; > + i-cache-size = <0x8000>; > + i-cache-line-size = <64>; > + i-cache-sets = <256>; > + d-cache-size = <0x8000>; > + d-cache-line-size = <64>; > + d-cache-sets = <128>; > + next-level-cache = <&L2_1>; > + }; > + > + cpu3: cpu@101 { > + compatible = "arm,cortex-a53","arm,armv8"; > + reg = <0x101>; > + device_type = "cpu"; > + enable-method = "psci"; > + i-cache-size = <0x8000>; > + i-cache-line-size = <64>; > + i-cache-sets = <256>; > + d-cache-size = <0x8000>; > + d-cache-line-size = <64>; > + d-cache-sets = <128>; > + next-level-cache = <&L2_1>; > + }; > + }; > +}; > + > +&soc0 { > + L2_0: l2-cache0 { > + compatible = "cache"; Is this documented? > + cache-level = <2>; > + cache-size = <0x80000>; > + cache-line-size = <64>; > + cache-sets = <512>; Discoverable? > + next-level-cache = <&msmc_l3>; > + }; > + > + L2_1: l2-cache1 { > + compatible = "cache"; > + cache-level = <2>; > + cache-size = <0x80000>; > + cache-line-size = <64>; > + cache-sets = <512>; > + next-level-cache = <&msmc_l3>; > + }; > + > + msmc_l3: l3-cache0 { > + compatible = "cache"; Is this something TI specific or follows the (ARM) architecture? > + cache-level = <3>; > + }; > +}; > diff --git a/drivers/soc/ti/Kconfig b/drivers/soc/ti/Kconfig > index 92770d84a288..be4570baad96 100644 > --- a/drivers/soc/ti/Kconfig > +++ b/drivers/soc/ti/Kconfig > @@ -1,3 +1,17 @@ > +# 64-bit ARM SoCs from TI > +if ARM64 > + > +if ARCH_K3 > + > +config ARCH_K3_AM6_SOC This should be in another patch (or dropped?). > + bool "K3 AM6 SoC" > + help > + Enable support for TI's AM6 SoC Family support > + > +endif > + > +endif > + > # > # TI SOC drivers > # > -- > 2.15.1 >