Received: by 10.223.185.116 with SMTP id b49csp2416457wrg; Mon, 5 Mar 2018 02:27:21 -0800 (PST) X-Google-Smtp-Source: AG47ELs9ihgi1jhI/Wr2s5fdovsF3nj0wvZ72hXvVHFJCc30go/UL0UfSnP3uOKvMqfDkFzVgAzt X-Received: by 2002:a17:902:b117:: with SMTP id q23-v6mr12680126plr.58.1520245641805; Mon, 05 Mar 2018 02:27:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520245641; cv=none; d=google.com; s=arc-20160816; b=C3phY3VK+sF0qha69KxFppXkwPzt01EP22oIvgIwOs6cnj88GjksaO2OJfa90ef4cF Zmtx09GafzliYK7GodDrhMdQfz9UibIoP5slWY+Bc908l0KO/CnRplByrFZ5CUAgO641 TO7ohoQLmWUwxkUf3sJ86UfD7sNHvI6zU7gW/VoA8KVC1skVB9/KzQuh4Y1XUXQEvPFf 4rtXj+2zdWrt0LZs9Th8Vx3QwayRzi0FD86oGD+s8otjoUDG17f6mqyVPJV70h4/X+pt AX4+KMHMy7HQxO6FF0k09cMMeYetfgGmLvN48toInSNeVRohgCPqjZTWfau+8IVenB26 9MiQ== 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=jdt4UiLYOmF2hDoIHTejvv1IPOc+mNKfzlaIqvD2cLA=; b=AHmujjLOfoHhkpeZ+Wjr4Q/2oT8CasGa5ObisUGz5i2X+kY84epYB6i3e6fomI9PfM vTJtuzRm/hiIpdiwsASbRE/XU71XdM8EkCMYiDpcj5a9Ihu7KPciJRaBFvSgFXI4Oj07 7pYKaDi0KYEIxNpAmI/yZ6/xDb3rhlB4yFOMub7j+cN+rbNHQwbuQ+K/+rWm9AscVypW m2n9oVKYZ9FpsezswupUuUfgKMikcgCXYBPhuiwaBXIsE0qENyo+Tm1vkbaZV87pOlZ7 0aG9bPJXye2IjIgUHpKuvkUNs9T/1RuMKzP9cMLdZ0lCFztFD2iZy9HJThOW42ulsZFu NVPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=JMrtk/7S; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l5-v6si9336231plk.390.2018.03.05.02.27.07; Mon, 05 Mar 2018 02:27:21 -0800 (PST) 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=fail header.i=@gmail.com header.s=20161025 header.b=JMrtk/7S; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933805AbeCEJng (ORCPT + 99 others); Mon, 5 Mar 2018 04:43:36 -0500 Received: from mail-qk0-f196.google.com ([209.85.220.196]:40407 "EHLO mail-qk0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933485AbeCEJnc (ORCPT ); Mon, 5 Mar 2018 04:43:32 -0500 Received: by mail-qk0-f196.google.com with SMTP id o25so19815754qkl.7; Mon, 05 Mar 2018 01:43:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=jdt4UiLYOmF2hDoIHTejvv1IPOc+mNKfzlaIqvD2cLA=; b=JMrtk/7StC9/zfRrnZd+i8k9HrziFODlgYNLAh8xrwCgkbfbbvmtiNbE74OE6cIK2O Tmqu3Cv7YQo2uTPNZVF1GPM1UPeTWa+7D1F8iEvDOICeJR3mUyqBOKLewamNPdCIteJ6 poKRKFpVcXu3cHKE6tR34lN1I4xQSJ6gJpRGpCnYrkfEalpZzAe4O1AXWV/DEGDAf5V+ p4VsbAprNytmDyfo5b+jmCY5XKxZY6bSv5ozoTbXsT1kcBp6hFebDoYWIcM78IyqE4Hm FlNd421KkVCJWyLsqTan/AaJfYhimK3wzjsAyDCOUP9H1Pij0J4H9XhXJ2P7C1joUC9a sE7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=jdt4UiLYOmF2hDoIHTejvv1IPOc+mNKfzlaIqvD2cLA=; b=DYaNKU/CHfVlHMIMOp5iVJrNoE12itkYXklmaz/6wc1cJVc3Kviuvt/BzbJmAM89Vz oEDTC2yfQsq62stDoIcrZwSqt3q5rSVqEekibmWzApxiEUrl3O6CxBwho5qnYWVsUq2I Vv4KxASUHJjLjqeVuvpTt1s4EFnqBupfo5pooS2yi3ZIOP26Bknt0xc4BNbw5WBVQfwM DSAaUUblrkuxlR92Ow9+An+bfbRQ4bDm7B+sjVZSBilpCrdpiCDQJvwikHpUnL4pwm0o x4iycDU7ooLaSCJjb6eW7Zym0HHVzh0ZeKBuqudYkQEAzPcekw6pjDoWqzE9U38Tuyf/ LO/g== X-Gm-Message-State: AElRT7EbFrnYHAnm6C/2dwfSvb2/8bwZJ4UWS2MacmdzMdL1fmTyXPjr TcPTrJtzAAza+kxvgW2nbV8hvcH8D0jdMG8U5Fk= X-Received: by 10.55.60.2 with SMTP id j2mr21524057qka.89.1520243010284; Mon, 05 Mar 2018 01:43:30 -0800 (PST) MIME-Version: 1.0 Received: by 10.200.47.219 with HTTP; Mon, 5 Mar 2018 01:43:29 -0800 (PST) In-Reply-To: <1519647518-15579-2-git-send-email-michel.pollet@bp.renesas.com> References: <1519647518-15579-1-git-send-email-michel.pollet@bp.renesas.com> <1519647518-15579-2-git-send-email-michel.pollet@bp.renesas.com> From: Geert Uytterhoeven Date: Mon, 5 Mar 2018 10:43:29 +0100 X-Google-Sender-Auth: Fxp-27fuDuqgi3GAyOXtYfiNGKA Message-ID: Subject: Re: [PATCH 1/2] arm: add basic support for Renesas RZ/N1 boards To: Michel Pollet Cc: Linux-Renesas , Simon Horman , Phil Edworthy , Magnus Damm , Rob Herring , Mark Rutland , Russell King , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Linux Kernel Mailing List , Linux ARM 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 Hi Michel, On Mon, Feb 26, 2018 at 1:18 PM, Michel Pollet wrote: > This adds the Renesas RZ/N1 CPU and bare bone support. > > This currently only handles generic parts (gic, architected timer) > and a UART. > This also relies on the bootloader to set the pinctrl and clocks. > > Signed-off-by: Michel Pollet Thanks for your patch! This should be split in separate patches: > Documentation/devicetree/bindings/arm/shmobile.txt | 3 +- 1. DT bindings > arch/arm/boot/dts/rzn1.dtsi | 94 +++ 2. SoC DTS file > arch/arm/mach-shmobile/Kconfig | 5 + 3. Platform Kconfig symbol > arch/arm/mach-shmobile/Makefile | 1 + > arch/arm/mach-shmobile/setup-r9a06g032.c | 60 ++ Please no more board files for new platforms (see below). > .../dt-bindings/interrupt-controller/rzn1-irq.h | 137 ++++ DTS files are much easier to compare with the datasheet if the interrupt numbers are present in the DTS files theirselves. > include/dt-bindings/soc/renesas,rzn1-map.h | 173 +++++ Same for base addresses. > --- a/Documentation/devicetree/bindings/arm/shmobile.txt > +++ b/Documentation/devicetree/bindings/arm/shmobile.txt > @@ -47,7 +47,8 @@ SoCs: > compatible = "renesas,r8a77980" > - R-Car D3 (R8A77995) > compatible = "renesas,r8a77995" > - > + - RZ/N1D (R9A06G032) > + compatible = "renesas,r9a06g032" BTW, are R9A06G032NGBG and R9A06G032VGBA the same SoC, just in different packages? > --- /dev/null > +++ b/arch/arm/boot/dts/rzn1.dtsi So faw we always named the SoC-specific DTS files after the SoC part number => r9a06g032.dtsi. > @@ -0,0 +1,94 @@ > +/* > + * Base Device Tree Source for the Renesas RZ/N1 SoC > + * > + * Copyright (C) 2018 Renesas Electronics Europe Limited > + * > + * SPDX-License-Identifier: GPL-2.0 > + */ > + > +#include > +#include > +#include > +#include > + > +#include "skeleton.dtsi" > + > +/ { > + compatible = "renesas,r9a06g032"; > + interrupt-parent = <&gic>; > + #address-cells = <1>; > + #size-cells = <1>; > + > + cpus { > + #address-cells = <1>; > + #size-cells = <0>; > + > + cpu@0 { > + device_type = "cpu"; > + compatible = "arm,cortex-a7"; > + reg = <0>; > + }; > + cpu@1 { > + device_type = "cpu"; > + compatible = "arm,cortex-a7"; > + reg = <1>; > + }; > + }; > + aliases { > + serial0 = &uart0; > + }; > + arm_timer: timer { > + compatible = "arm,armv7-timer"; > + arm,cpu-registers-not-fw-configured; > + interrupts = > + + IRQ_TYPE_LEVEL_LOW)>, > + + IRQ_TYPE_LEVEL_LOW)>, > + + IRQ_TYPE_LEVEL_LOW)>, > + + IRQ_TYPE_LEVEL_LOW)>; > + }; > + gic: interrupt-controller@RZN1_GIC_BASE { On-SoC devices should be grouped under an "soc" node. You can move the "interrupt-parent = <&gic>;" there, too. > + compatible = "arm,cortex-a7-gic"; As the RZ/N1D's User's Manul refers to the GIC-400 manuals, I assume this is a GIC-400 => "arm,gic-400". You can check by reading the GIC_DIST_IIDR register. > + reg = <0x44101000 0x1000>, /* Distributer */ > + <0x44102000 0x1000>, /* CPU interface */ Shouldn't the size of the second region be 0x2000? > + bus { Oh, you do have an "soc" node. Please call it "soc". > --- /dev/null > +++ b/arch/arm/mach-shmobile/setup-r9a06g032.c > @@ -0,0 +1,60 @@ > +/* > + * RZ/N1 processor support file > + * > + * Copyright (C) 2018 Renesas Electronics Europe Limited > + * > + * Michel Pollet , > + * > + */ > + /* SPDX-License-Identifier: GPL-2.0 */ > + > +#include > +#include > +#include > +#include > +#include > +#include > + > +static void __iomem *sysctrl_base_addr; > + > +static void rzn1_sysctrl_init(void) > +{ > + if (sysctrl_base_addr) > + return; > + sysctrl_base_addr = ioremap(RZN1_SYSTEM_CTRL_BASE, > + RZN1_SYSTEM_CTRL_SIZE); These values should be obtained from DT. > + BUG_ON(!sysctrl_base_addr); > +} > + > +void __iomem *rzn1_sysctrl_base(void) > +{ > + if (!sysctrl_base_addr) > + rzn1_sysctrl_init(); > + return sysctrl_base_addr; > +} > +EXPORT_SYMBOL(rzn1_sysctrl_base); Looks like this is a "system controller", providing a bunch of registers to a collection of random functionality, to be used by various drivers. Please see: Documentation/devicetree/bindings/mfd/syscon.txt include/linux/mfd/syscon.h drivers/mfd/syscon.c > +static void rzn1_restart(enum reboot_mode mode, const char *cmd) > +{ > + rzn1_sysctrl_writel( > + rzn1_sysctrl_readl(RZN1_SYSCTRL_REG_RSTEN) | > + BIT(RZN1_SYSCTRL_REG_RSTEN_SWRST_EN) | > + BIT(RZN1_SYSCTRL_REG_RSTEN_MRESET_EN), > + RZN1_SYSCTRL_REG_RSTEN); > + rzn1_sysctrl_writel( > + rzn1_sysctrl_readl(RZN1_SYSCTRL_REG_RSTCTRL) | > + BIT(RZN1_SYSCTRL_REG_RSTCTRL_SWRST_REQ), > + RZN1_SYSCTRL_REG_RSTCTRL); > +} This should be a reset driver under drivers/power/reset/. Or perhaps you can even do without a driver, check Documentation/devicetree/bindings/power/reset/syscon-reboot.txt > --- /dev/null > +++ b/include/soc/rzn1/sysctrl.h > @@ -0,0 +1,736 @@ > +/* > + * Copyright (C) 2018 Renesas Electronics Europe Limited > + * All rights reserved. > + * > + * SPDX-License-Identifier: (GPL-2.0+ OR BSD) Not mentioned in Documentation/process/license-rules.rst Do you mean any of: SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause or something different? > +/* > + * Get the base address for the sysctrl block. > + * Ensure use does not conflict with anything else that acesses the SYSCTRL > + */ > +void __iomem *rzn1_sysctrl_base(void); > + > +static inline u32 rzn1_sysctrl_readl(u32 reg) > +{ > + BUG_ON(reg >= RZN1_SYSTEM_CTRL_SIZE); Please no BUG_ON(). > + return readl(rzn1_sysctrl_base() + reg); > +} > + > +static inline void rzn1_sysctrl_writel(u32 value, u32 reg) > +{ > + BUG_ON(reg >= RZN1_SYSTEM_CTRL_SIZE); > + writel(value, rzn1_sysctrl_base() + reg); > +} Probably all of this can be removed if you use the syscon abstraction. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds