Received: by 10.223.164.221 with SMTP id h29csp4343201wrb; Thu, 19 Oct 2017 13:47:34 -0700 (PDT) X-Received: by 10.99.116.89 with SMTP id e25mr2366358pgn.218.1508446054051; Thu, 19 Oct 2017 13:47:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1508446054; cv=none; d=google.com; s=arc-20160816; b=AOM3erud/EhIaq8YTbUDkGHcVW5+2PHY3e5mw0h0Uj4/Le4mvwpcRuel5sgv9XxMgi 03e9mGv6Sm++B4JQ0t9zU9EhiBpHLMylpLI4VObjSXNyxhCaqgnsQ/sA7OfyrG1sRfyw P2uCq+HdIOcFOJRTPr5XOKp5vSSp2c55DRiGQAthd81cNMbPlhwWXA5LDtwUGyue2HIE gP5MOyEV5quho+CzN1RD4QcH/l0UA+Twpnmb/aeJm1e2iRcXztuYLmtU5GAsd23YZPr+ WYFenyVAl+z4WS84IpoYAWww3wmYAZs+NhSivWA2PfmnUsDq2bm9JIP0Ox4jo8/L3zhC YpVA== 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=9AoI0/pUzVfxoP2shWnSGarsBZowbnLa6qVnKYP2HOw=; b=ckiZ4XkmuFiNwaLd89vkycOXUYZbR7N1XdyYIAfiMy+j4vBf8jqhkgnBQvCOFZhdoc 11aYtix4SQRrrNWEpNlEclqYlpuV+SBPdsNddprasAXE8WLvH4uzsaf+UDt6Xcacbe5P rEVKgH2dTizTU9jq+cu0U9qBrP2u5+8SRYA3ZMAbJ2Zj38BmJDGV4KRYirQ1PmrxXadj EEYbgllz9vZ6+5D48AZJrN+bXLNxhUagyJP270ExqIwVQNl0Zsp4Ne0enKsWvITARmzF 9IGo1MN9foZH3SYIcf37zpokpQH7MIe3TJ5u/I/XsiaBmozToXU4u5ttcdYpYQ8HjEjH VliA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=csbZoaxz; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o10si9122076pgn.50.2017.10.19.13.47.20; Thu, 19 Oct 2017 13:47:34 -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=@google.com header.s=20161025 header.b=csbZoaxz; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753864AbdJSTEl (ORCPT + 99 others); Thu, 19 Oct 2017 15:04:41 -0400 Received: from mail-qt0-f196.google.com ([209.85.216.196]:44427 "EHLO mail-qt0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752630AbdJSTEi (ORCPT ); Thu, 19 Oct 2017 15:04:38 -0400 Received: by mail-qt0-f196.google.com with SMTP id 8so15767707qtv.1 for ; Thu, 19 Oct 2017 12:04:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=9AoI0/pUzVfxoP2shWnSGarsBZowbnLa6qVnKYP2HOw=; b=csbZoaxz9ZQG5R8FLYRWEWQ6gLnjc+0i4F9SFOLVDtQ2nZk6q47M/syu1QuWTtQT6Z J547yC0EtnRmxCNiY2Z1VbSFyW9DS/glR7xSM6E3yxXxTOp+7d2W+NMlnSlnQ0ZsO6U0 axxYloYWXsF7J8ANA32NMsJ6CZq20Lz2Aw5Z7AP2aQakZjqZjPyYTf40wPfI0XMQ9ip3 98rQqITxKF0fa2ByT8AULAXHOZlu15qHMxKv8JGex8xrYTuMkniQ+UZo7+j8dFcDPKhQ IGmp8MIW2MugbzDzwppuqATcMybXIwZwjJK9YFdcDSVs6pZ3zJX9MKD55ZM50Xl/RbHz ezEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=9AoI0/pUzVfxoP2shWnSGarsBZowbnLa6qVnKYP2HOw=; b=sQKyrEOg2zy2EM1up7vSHJmNBdjvHZlTdmb1EfmcAEGFzboXhok6m6uTy4ocr2M9BX /UiloMrxIZYJaob0+cFTtVIAHWXRC2r5KxUUvmQDSTNCwra0theoj7Qn69Cm5HeXQSHq W0x0VtpBGxIcd0hCymPP1Tt4W/YhV+vTMCPEfSn6BnGrEqL/8HN868up0sj0dk0KTV/1 6+QZfYyZMUVPViLp8ZOlHk/NhN32bjZxIDnwcEcuAw4jg4OgC5YOBy6464j54MLG2R8K VfPgB4T1hOooqYrOOEdBoKbZdPBPSvLqI2/w5+CairL36RgDTzOLyGhtG+I8z7Ibqokg RGnA== X-Gm-Message-State: AMCzsaVnubvkn1kIEs5Q+qgynEwKQqHtyfIeTb7vNRRCnQfitsN2+sby zj2b0th38V2ILxeDvWDGypRMdIWMoNL1JV8mirqjWw== X-Google-Smtp-Source: ABhQp+QtQLZwD5K6pIHjFBfbZI6tT3pbOBcNEwETRXb+tmzFnqwgeT8hB/rF0x1j3SvT3rJ11kyY1/RuuuRM3QJN3GY= X-Received: by 10.237.57.135 with SMTP id m7mr3475038qte.4.1508439877185; Thu, 19 Oct 2017 12:04:37 -0700 (PDT) MIME-Version: 1.0 Received: by 10.140.81.200 with HTTP; Thu, 19 Oct 2017 12:04:36 -0700 (PDT) In-Reply-To: <20170927214213.qjz7qalvvmhpxxmy@rob-hp-laptop> References: <20170919224001.22284-1-brendanhiggins@google.com> <20170919224001.22284-3-brendanhiggins@google.com> <20170927214213.qjz7qalvvmhpxxmy@rob-hp-laptop> From: Brendan Higgins Date: Thu, 19 Oct 2017 12:04:36 -0700 Message-ID: Subject: Re: [PATCH v6 2/3] arm: dts: add Nuvoton NPCM750 device tree To: Rob Herring Cc: Mark Rutland , Russell King , Avi Fishman , tmaimon77@gmail.com, Rick Altherr , Florian Fainelli , devicetree , Linux Kernel Mailing List , linux-arm-kernel@lists.infradead.org, OpenBMC Maillist 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 Sorry for the delay. A couple questions: On Wed, Sep 27, 2017 at 2:42 PM, Rob Herring wrote: > On Tue, Sep 19, 2017 at 03:40:00PM -0700, Brendan Higgins wrote: >> Add a common device tree for all Nuvoton NPCM750 BMCs and a board >> specific device tree for the NPCM750 (Poleg) evaluation board. >> >> Signed-off-by: Brendan Higgins >> Reviewed-by: Tomer Maimon >> Reviewed-by: Avi Fishman >> Reviewed-by: Joel Stanley >> Tested-by: Tomer Maimon >> Tested-by: Avi Fishman >> --- >> .../arm/cpu-enable-method/nuvoton,npcm7xx-smp | 42 ++++ >> .../devicetree/bindings/arm/npcm/npcm.txt | 6 + >> arch/arm/boot/dts/nuvoton-npcm750-evb.dts | 48 +++++ >> arch/arm/boot/dts/nuvoton-npcm750.dtsi | 211 +++++++++++++++++++++ >> include/dt-bindings/clock/nuvoton,npcm7xx-clks.h | 39 ++++ >> 5 files changed, 346 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/arm/cpu-enable-method/nuvoton,npcm7xx-smp >> create mode 100644 Documentation/devicetree/bindings/arm/npcm/npcm.txt >> create mode 100644 arch/arm/boot/dts/nuvoton-npcm750-evb.dts >> create mode 100644 arch/arm/boot/dts/nuvoton-npcm750.dtsi >> create mode 100644 include/dt-bindings/clock/nuvoton,npcm7xx-clks.h >> >> diff --git a/Documentation/devicetree/bindings/arm/cpu-enable-method/nuvoton,npcm7xx-smp b/Documentation/devicetree/bindings/arm/cpu-enable-method/nuvoton,npcm7xx-smp >> new file mode 100644 >> index 000000000000..e81f85b400cf >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/arm/cpu-enable-method/nuvoton,npcm7xx-smp >> @@ -0,0 +1,42 @@ >> +========================================================= >> +Secondary CPU enable-method "nuvoton,npcm7xx-smp" binding >> +========================================================= >> + >> +To apply to all CPUs, a single "nuvoton,npcm7xx-smp" enable method should be >> +defined in the "cpus" node. >> + >> +Enable method name: "nuvoton,npcm7xx-smp" >> +Compatible machines: "nuvoton,npcm750" >> +Compatible CPUs: "arm,cortex-a9" >> +Related properties: (none) >> + >> +Note: >> +This enable method needs valid nodes compatible with "arm,cortex-a9-scu" and >> +"nuvoton,npcm750-gcr". >> + >> +Example: >> + >> + cpus { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + enable-method = "nuvoton,npcm7xx-smp"; >> + >> + cpu@0 { >> + device_type = "cpu"; >> + compatible = "arm,cortex-a9"; >> + clocks = <&clk NPCM7XX_CLK_CPU>; >> + clock-names = "clk_cpu"; >> + reg = <0>; >> + next-level-cache = <&L2>; >> + }; >> + >> + cpu@1 { >> + device_type = "cpu"; >> + compatible = "arm,cortex-a9"; >> + clocks = <&clk NPCM7XX_CLK_CPU>; >> + clock-names = "clk_cpu"; >> + reg = <1>; >> + next-level-cache = <&L2>; >> + }; >> + }; >> + >> diff --git a/Documentation/devicetree/bindings/arm/npcm/npcm.txt b/Documentation/devicetree/bindings/arm/npcm/npcm.txt >> new file mode 100644 >> index 000000000000..2d87d9ecea85 >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/arm/npcm/npcm.txt >> @@ -0,0 +1,6 @@ >> +NPCM Platforms Device Tree Bindings >> +----------------------------------- >> +NPCM750 SoC >> +Required root node properties: >> + - compatible = "nuvoton,npcm750"; >> + >> diff --git a/arch/arm/boot/dts/nuvoton-npcm750-evb.dts b/arch/arm/boot/dts/nuvoton-npcm750-evb.dts >> new file mode 100644 >> index 000000000000..a0675e584125 >> --- /dev/null >> +++ b/arch/arm/boot/dts/nuvoton-npcm750-evb.dts >> @@ -0,0 +1,48 @@ >> +/* >> + * DTS file for all NPCM750 SoCs >> + * >> + * Copyright 2012 Tomer Maimon >> + * >> + * The code contained herein is licensed under the GNU General Public >> + * License. You may obtain a copy of the GNU General Public License >> + * Version 2 or later at the following locations: >> + * >> + * http://www.opensource.org/licenses/gpl-license.html >> + * http://www.gnu.org/copyleft/gpl.html >> + */ >> + >> +/dts-v1/; >> +#include "nuvoton-npcm750.dtsi" >> + >> +/ { >> + model = "Nuvoton npcm750 Development Board (Device Tree)"; >> + compatible = "nuvoton,npcm750"; >> + >> + chosen { >> + stdout-path = &serial3; >> + }; >> + >> + memory { >> + reg = <0 0x40000000>; >> + }; >> +}; >> + >> +&watchdog1 { >> + status = "okay"; >> +}; >> + >> +&serial0 { >> + status = "okay"; >> +}; >> + >> +&serial1 { >> + status = "okay"; >> +}; >> + >> +&serial2 { >> + status = "okay"; >> +}; >> + >> +&serial3 { >> + status = "okay"; >> +}; >> diff --git a/arch/arm/boot/dts/nuvoton-npcm750.dtsi b/arch/arm/boot/dts/nuvoton-npcm750.dtsi >> new file mode 100644 >> index 000000000000..5d8a48e44274 >> --- /dev/null >> +++ b/arch/arm/boot/dts/nuvoton-npcm750.dtsi >> @@ -0,0 +1,211 @@ >> +/* >> + * DTSi file for the NPCM750 SoC >> + * >> + * Copyright 2012 Tomer Maimon >> + * >> + * The code contained herein is licensed under the GNU General Public >> + * License. You may obtain a copy of the GNU General Public License >> + * Version 2 or later at the following locations: >> + * >> + * http://www.opensource.org/licenses/gpl-license.html >> + * http://www.gnu.org/copyleft/gpl.html >> + */ >> + >> +#include >> +#include >> + >> +/ { >> + #address-cells = <1>; >> + #size-cells = <1>; >> + interrupt-parent = <&gic>; >> + >> + cpus { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + enable-method = "nuvoton,npcm7xx-smp"; >> + >> + cpu@0 { >> + device_type = "cpu"; >> + compatible = "arm,cortex-a9"; >> + clocks = <&clk NPCM7XX_CLK_CPU>; >> + clock-names = "clk_cpu"; >> + reg = <0>; >> + next-level-cache = <&l2>; >> + }; >> + >> + cpu@1 { >> + device_type = "cpu"; >> + compatible = "arm,cortex-a9"; >> + clocks = <&clk NPCM7XX_CLK_CPU>; >> + clock-names = "clk_cpu"; >> + reg = <1>; >> + next-level-cache = <&l2>; >> + }; >> + }; >> + > >> + gcr: gcr@f0800000 { >> + compatible = "nuvoton,npcm750-gcr", "syscon", >> + "simple-mfd"; >> + reg = <0xf0800000 0x1000>; >> + }; >> + >> + scu: scu@f03fe000 { >> + compatible = "arm,cortex-a9-scu"; >> + reg = <0xf03fe000 0x1000>; >> + }; >> + >> + l2: cache-controller@f03fc000 { >> + compatible = "arm,pl310-cache"; >> + reg = <0xf03fc000 0x1000>; >> + interrupts = <0 21 4>; >> + cache-unified; >> + cache-level = <2>; >> + clocks = <&clk NPCM7XX_CLK_AXI>; >> + }; >> + >> + gic: interrupt-controller@f03ff000 { >> + compatible = "arm,cortex-a9-gic"; >> + interrupt-controller; >> + #interrupt-cells = <3>; >> + reg = <0xf03ff000 0x1000>, >> + <0xf03fe100 0x100>; >> + }; >> + >> + timer@f03fe600 { >> + compatible = "arm,cortex-a9-twd-timer"; >> + reg = <0xf03fe600 0x20>; >> + interrupts = <1 13 0x304>; >> + clocks = <&clk NPCM7XX_CLK_TIMER>; >> + }; > > All these nodes with a memory mapped address should go under a bus node. > >> + >> + ahb { >> + #address-cells = <1>; >> + #size-cells = <1>; >> + compatible = "simple-bus"; >> + interrupt-parent = <&gic>; >> + ranges = <0x80000000 0x80000000 0x40000000 >> + 0xc0000000 0xc0000000 0x00002000 >> + 0xc0008000 0xc0008000 0x00001000 >> + 0xe0800000 0xe0800000 0x00001000 >> + 0xe1000000 0xe1000000 0x00001000 >> + 0xe8000000 0xe8000000 0x08000000 > > These addresses don't appear to be used. These are coming later? They > could be collapsed down into 2 entries. Yep, the other addresses will be used in later patch sets. This is part of why I did not think that it made sense to do address translation here. I thought that mapping such a large range of addresses would not make it any easier to read, quite the opposite. At least addresses 'mapped' to the original address correspond to the datasheet. So I am guessing that is not what you are asking me to do. Most of the large mappings (on the orders of MB) correspond to memory locations mapped on either one of the SPI busses or PCIe busses, which when implemented would likely get their own busses under ahb. Are you asking that I remap just the addresses for controlling SoC devices (0xf0xxxxxx), leave the external busses as is, and then remap those within their busses when we get to that point? I will try to implement what I think you are asking me to do and get a patch out later today. Hopefully that will make this discussion easier. > > <0x80000000 0x80000000 0x40010000> > <0xe0800000 0xe0800000 0x0f800000> > >> + /* APB start */ >> + 0xf0000000 0xf0000000 0x00005000 >> + 0xf0007000 0xf0007000 0x00005000 >> + 0xf0010000 0xf0010000 0x00008000 >> + 0xf0080000 0xf0080000 0x00010000 >> + 0xf009f000 0xf009f000 0x00001000 >> + 0xf0100000 0xf0100000 0x00005000 >> + 0xf0180000 0xf0180000 0x0000b000 >> + 0xf0200000 0xf0200000 0x00002000 > > Not necessary to be so fine grained and shouldn't just be 1:1. So > for these just: > > <0 0xf0000000 0x00900000> > > >> + /* APB end */ >> + 0xf0800000 0xf0800000 0x000fc000 >> + 0xf8000000 0xf8000000 0x02000000 >> + 0xfb000000 0xfb000000 0x00002000>; > >> + >> + clk: clock-controller@f0801000 { >> + compatible = "nuvoton,npcm750-clk"; >> + #clock-cells = <1>; >> + reg = <0xf0801000 0x1000>; > > Then this becomes: 0x801000 0x1000 > >> + status = "okay"; >> + }; >> + >> + /* external clock signal rg1refck, supplied by the phy */ >> + clk-rg1refck { >> + compatible = "fixed-clock"; >> + #clock-cells = <0>; >> + clock-frequency = <125000000>; >> + }; >> + >> + /* external clock signal rg2refck, supplied by the phy */ >> + clk-rg2refck { >> + compatible = "fixed-clock"; >> + #clock-cells = <0>; >> + clock-frequency = <125000000>; >> + }; >> + >> + clk-xin { >> + compatible = "fixed-clock"; >> + #clock-cells = <0>; >> + clock-frequency = <50000000>; >> + }; > > These clocks are not on the bus, so move them out of the bus node to the > top level. > >> + >> + apb { >> + #address-cells = <1>; >> + #size-cells = <1>; >> + compatible = "simple-bus"; >> + interrupt-parent = <&gic>; >> + ranges = <0xf0000000 0xf0000000 0x00005000 >> + 0xf0007000 0xf0007000 0x00005000 >> + 0xf0010000 0xf0010000 0x00008000 >> + 0xf0080000 0xf0080000 0x00010000 >> + 0xf009f000 0xf009f000 0x00001000 >> + 0xf0100000 0xf0100000 0x00005000 >> + 0xf0180000 0xf0180000 0x0000b000 >> + 0xf0200000 0xf0200000 0x00002000>; > > With above changes this can be just: <0 0 0x300000> > >> + >> + timer0: timer@f0000000 { >> + compatible = "nuvoton,npcm750-timer"; >> + interrupts = <0 32 4>; >> + reg = <0xf0000000 0x1000>; >> + clocks = <&clk NPCM7XX_CLK_TIMER>; >> + }; >> + >> + watchdog0: watchdog@f0008000 { >> + compatible = "nuvoton,npcm750-wdt"; >> + interrupts = <0 47 4>; >> + reg = <0xf0008000 0x1000>; >> + status = "disabled"; >> + clocks = <&clk NPCM7XX_CLK_TIMER>; >> + }; >> + >> + watchdog1: watchdog@f0009000 { >> + compatible = "nuvoton,npcm750-wdt"; >> + interrupts = <0 48 4>; >> + reg = <0xf0009000 0x1000>; >> + status = "disabled"; >> + clocks = <&clk NPCM7XX_CLK_TIMER>; >> + }; >> + >> + watchdog2: watchdog@f000a000 { >> + compatible = "nuvoton,npcm750-wdt"; >> + interrupts = <0 49 4>; >> + reg = <0xf000a000 0x1000>; >> + status = "disabled"; >> + clocks = <&clk NPCM7XX_CLK_TIMER>; >> + }; >> + >> + serial0: serial0@f0001000 { > > Sorry I miss this earlier, but need to drop the 0 in the node names. > IOW, should be "serial@f0001000". > >> + compatible = "nuvoton,npcm750-uart"; >> + reg = <0xf0001000 0x1000>; >> + clocks = <&clk NPCM7XX_CLK_UART_CORE>; >> + interrupts = <0 2 4>; >> + status = "disabled"; >> + }; >> + >> + serial1: serial1@f0002000 { >> + compatible = "nuvoton,npcm750-uart"; >> + reg = <0xf0002000 0x1000>; >> + clocks = <&clk NPCM7XX_CLK_UART_CORE>; >> + interrupts = <0 3 4>; >> + status = "disabled"; >> + }; >> + >> + serial2: serial2@f0003000 { >> + compatible = "nuvoton,npcm750-uart"; >> + reg = <0xf0003000 0x1000>; >> + clocks = <&clk NPCM7XX_CLK_UART_CORE>; >> + interrupts = <0 4 4>; >> + status = "disabled"; >> + }; >> + >> + serial3: serial3@f0004000 { >> + compatible = "nuvoton,npcm750-uart"; >> + reg = <0xf0004000 0x1000>; >> + clocks = <&clk NPCM7XX_CLK_UART_CORE>; >> + interrupts = <0 5 4>; >> + status = "disabled"; >> + }; >> + }; >> + }; >> +}; Thanks! From 1579730790033999320@xxx Wed Sep 27 21:44:41 +0000 2017 X-GM-THRID: 1579010319724238086 X-Gmail-Labels: Inbox,Category Forums