Received: by 10.213.65.68 with SMTP id h4csp230191imn; Tue, 20 Mar 2018 01:53:38 -0700 (PDT) X-Google-Smtp-Source: AG47ELskvzSBGFfA8fBo7AxbLnuKOaqbwizWLFINvgLJNjZu7sW6l8HG2jx2zNdjZTFwiHuFYzn0 X-Received: by 2002:a17:902:4381:: with SMTP id j1-v6mr16007306pld.297.1521536018313; Tue, 20 Mar 2018 01:53:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521536018; cv=none; d=google.com; s=arc-20160816; b=HG6+MbbxVys73wQ5mLJZOcI5wbLBfdiQEuBi5THQlFbLPh8V4TQBr1ZKiodsRP9HhH +kMMkm2KxsTM2RqVwnfw2jCLpbGwOPN7/HggYPpN4g1ERkjBpP9HOy+L90brgr1lfOdk CEkXc8tFmNpsiUvz4Bep2e10Gdlrqa5kA9Z1gHoUQOptQ9urM75EKsHlN/x/ts0S2GTh ObsZtYkbQJIX2rCMlUqlZF4dziCqlrMKyj8blYcsCzMM1pFXEHJwIbZQIeXFKSnpgZNq lfuHzh6NV6eYAQ8fgkA6oPaFn9H4V391AbDmtxZmos2R2ugrfk5Q6lmsPDHIgXimaaIi ueLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:organization:from:references:cc:to:subject :arc-authentication-results; bh=DEVXBkfJYSXEx4HvOehVY7Aqt3hawz+ikqH7bvf1RIU=; b=rCRU2dWWKQBhifnAn4xi5IZlC/BhLBCLFcPgfIjTeuBmBeKEP8+bwcsYmCjCB267D4 Ck7+16/pSWnRZw2J/+sLO8QrzkT20d4Q/kfc6fir/GcTUFcZO+LpFr4VbIGFvpzmWGP9 FsFKj8sls2UO38ipuvdGclD5B8RpUA/tcGsx4x9uaEnaM/MPamUXtZ+Ze2BhhTV0Wimv B/Idv+7CPsKB22yM6LtWEbSqO/AQD0trxbQ+ayNwmLNGlND3A7jVfAkWHILWvQx8wasQ iiRHaYb1C1hSaviWtdlR33548V0FbhddUK6XDNal6QZm+X+o6Ea2Kmm/qn8xQcAT0iWY RK1Q== ARC-Authentication-Results: i=1; mx.google.com; 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 v11si921221pgf.383.2018.03.20.01.53.21; Tue, 20 Mar 2018 01:53:38 -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; 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 S1752385AbeCTIwQ (ORCPT + 99 others); Tue, 20 Mar 2018 04:52:16 -0400 Received: from foss.arm.com ([217.140.101.70]:37152 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752019AbeCTIwJ (ORCPT ); Tue, 20 Mar 2018 04:52:09 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C1F151596; Tue, 20 Mar 2018 01:52:08 -0700 (PDT) Received: from [10.1.206.75] (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 27F753F487; Tue, 20 Mar 2018 01:52:06 -0700 (PDT) Subject: Re: [PATCH v4 4/8] dt-bindings: Add doc for the Ingenic TCU drivers To: Paul Cercueil , Thomas Gleixner , Jason Cooper , Lee Jones , Daniel Lezcano , Ralf Baechle , Rob Herring , Jonathan Corbet , Mark Rutland Cc: James Hogan , Maarten ter Huurne , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@linux-mips.org, linux-doc@vger.kernel.org References: <20180110224838.16711-2-paul@crapouillou.net> <20180317232901.14129-1-paul@crapouillou.net> <20180317232901.14129-5-paul@crapouillou.net> From: Marc Zyngier Organization: ARM Ltd Message-ID: Date: Tue, 20 Mar 2018 08:52:04 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20180317232901.14129-5-paul@crapouillou.net> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 17/03/18 23:28, Paul Cercueil wrote: > Add documentation about how to properly use the Ingenic TCU > (Timer/Counter Unit) drivers from devicetree. > > Signed-off-by: Paul Cercueil > --- > .../bindings/clock/ingenic,tcu-clocks.txt | 42 ++++++++++++++++ > .../bindings/interrupt-controller/ingenic,tcu.txt | 39 +++++++++++++++ > .../devicetree/bindings/mfd/ingenic,tcu.txt | 56 ++++++++++++++++++++++ > .../devicetree/bindings/timer/ingenic,tcu.txt | 41 ++++++++++++++++ > 4 files changed, 178 insertions(+) > create mode 100644 Documentation/devicetree/bindings/clock/ingenic,tcu-clocks.txt > create mode 100644 Documentation/devicetree/bindings/interrupt-controller/ingenic,tcu.txt > create mode 100644 Documentation/devicetree/bindings/mfd/ingenic,tcu.txt > create mode 100644 Documentation/devicetree/bindings/timer/ingenic,tcu.txt > > v4: New patch in this series. Corresponds to V2 patches 3-4-5 with > added content. > > diff --git a/Documentation/devicetree/bindings/clock/ingenic,tcu-clocks.txt b/Documentation/devicetree/bindings/clock/ingenic,tcu-clocks.txt > new file mode 100644 > index 000000000000..471d27078599 > --- /dev/null > +++ b/Documentation/devicetree/bindings/clock/ingenic,tcu-clocks.txt > @@ -0,0 +1,42 @@ > +Ingenic SoC TCU binding > + > +The TCU is the Timer/Counter Unit present in all Ingenic SoCs. It features 8 > +channels, each one having its own clock, that can be started and stopped, > +reparented, and reclocked. > + > +Required properties: > +- compatible : One of: > + * ingenic,jz4740-tcu-clocks, > + * ingenic,jz4770-tcu-clocks, > + * ingenic,jz4780-tcu-clocks. > +- clocks : List of phandle & clock specifiers for clocks external to the TCU. > + The "pclk", "rtc" and "ext" clocks should be provided. > +- clock-names : List of name strings for the external clocks. > +- #clock-cells: Should be 1. > + Clock consumers specify this argument to identify a clock. The valid values > + may be found in . > + > +Example: > + > +/ { > + tcu: mfd@10002000 { > + compatible = "ingenic,tcu", "simple-mfd", "syscon"; > + reg = <0x10002000 0x1000>; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0x0 0x10002000 0x1000>; > + > + tcu_clk: clocks@10 { > + compatible = "ingenic,jz4740-tcu-clocks"; > + reg = <0x10 0xff0>; > + > + clocks = <&ext>, <&rtc>, <&pclk>; > + clock-names = "ext", "rtc", "pclk"; > + > + #clock-cells = <1>; > + }; > + }; > +}; > + > +For information about the top-level "ingenic,tcu" compatible node and other > +children nodes, see Documentation/devicetree/bindings/mfd/ingenic,tcu.txt. > diff --git a/Documentation/devicetree/bindings/interrupt-controller/ingenic,tcu.txt b/Documentation/devicetree/bindings/interrupt-controller/ingenic,tcu.txt > new file mode 100644 > index 000000000000..7f3af2da77cd > --- /dev/null > +++ b/Documentation/devicetree/bindings/interrupt-controller/ingenic,tcu.txt > @@ -0,0 +1,39 @@ > +Ingenic SoCs Timer/Counter Unit Interrupt Controller > + > +Required properties: > + > +- compatible : should be "ingenic,-tcu-intc". Valid strings are: > + * ingenic,jz4740-tcu-intc > + * ingenic,jz4770-tcu-intc > + * ingenic,jz4780-tcu-intc > +- interrupt-controller : Identifies the node as an interrupt controller > +- #interrupt-cells : Specifies the number of cells needed to encode an > + interrupt source. The value shall be 1. > +- interrupt-parent : phandle of the interrupt controller. > +- interrupts : Specifies the interrupt the controller is connected to. > + > +Example: > + > +/ { > + tcu: mfd@10002000 { > + compatible = "ingenic,tcu", "simple-mfd", "syscon"; > + reg = <0x10002000 0x1000>; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0x0 0x10002000 0x1000>; > + > + tcu_irq: interrupt-controller@20 { > + compatible = "ingenic,jz4740-tcu-intc"; > + reg = <0x20 0x20>; > + > + interrupt-controller; > + #interrupt-cells = <1>; > + > + interrupt-parent = <&intc>; > + interrupts = <15>; > + }; > + }; > +}; > + > +For information about the top-level "ingenic,tcu" compatible node and other > +children nodes, see Documentation/devicetree/bindings/mfd/ingenic,tcu.txt. > diff --git a/Documentation/devicetree/bindings/mfd/ingenic,tcu.txt b/Documentation/devicetree/bindings/mfd/ingenic,tcu.txt > new file mode 100644 > index 000000000000..5742c3f21550 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mfd/ingenic,tcu.txt > @@ -0,0 +1,56 @@ > +Ingenic JZ47xx SoCs Timer/Counter Unit devicetree bindings > +---------------------------------------------------------- > + > +For a description of the TCU hardware and drivers, have a look at > +Documentation/mips/ingenic-tcu.txt. > + > +The TCU is implemented as a parent node, whose role is to create the > +regmap, and child nodes for the various drivers listed in the aforementioned > +document. You're describing the Linux driver here. Please stick to a description of the HW. > + > +Required properties: > + > +- compatible: must be "ingenic,tcu", "simple-mfd", "syscon"; Without any provision for an SoC version? Seems bold... > +- reg: Should be the offset/length value corresponding to the TCU registers > +- #address-cells: Should be <1>; > +- #size-cells: Should be <1>; > +- ranges: Should be one range for the full TCU registers area > + > +Accepted children nodes: > +- Documentation/devicetree/bindings/interrupt-controller/ingenic,tcu.txt > +- Documentation/devicetree/bindings/clock/ingenic,tcu-clocks.txt > +- Documentation/devicetree/bindings/timer/ingenic,tcu.txt It is slightly confusing that you have 3 files named ingenic,tcu.txt. How about ingenic,tcu-intc.txt and ingenic,tcu-timer.txt (amending the binding for the timer)? > + > + > +Example: > + > +/ { > + tcu: mfd@10002000 { > + compatible = "ingenic,tcu", "simple-mfd", "syscon"; > + reg = <0x10002000 0x1000>; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0x0 0x10002000 0x1000>; > + > + tcu_irq: interrupt-controller@20 { > + compatible = "ingenic,jz4740-tcu-intc"; > + reg = <0x20 0x20>; > + ... > + }; > + > + tcu_clk: clocks@10 { > + compatible = "ingenic,jz4740-tcu-clocks"; > + reg = <0x10 0xff0>; > + ... > + }; > + > + tcu_timer: timer@10 { > + compatible = "ingenic,jz4740-tcu"; > + reg = <0x10 0xff0>; > + ... > + }; > + }; > +}; > + > +For more information about the children node, refer to the documents listed > +above in the "Accepted children nodes" section. > diff --git a/Documentation/devicetree/bindings/timer/ingenic,tcu.txt b/Documentation/devicetree/bindings/timer/ingenic,tcu.txt > new file mode 100644 > index 000000000000..f910b7e96783 > --- /dev/null > +++ b/Documentation/devicetree/bindings/timer/ingenic,tcu.txt > @@ -0,0 +1,41 @@ > +Ingenic JZ47xx SoCs Timer/Counter Unit driver > +--------------------------------------------- > + > +Required properties: > + > +- compatible : should be "ingenic,-tcu". Valid strings are: > + * ingenic,jz4740-tcu > + * ingenic,jz4770-tcu > + * ingenic,jz4780-tcu > +- interrupt-parent : phandle of the TCU interrupt controller. > +- interrupts : Specifies the interrupts the controller is connected to. > +- clocks : List of phandle & clock specifiers for the TCU clocks. > +- clock-names : List of name strings for the TCU clocks. > + > +Example: > + > +/ { > + tcu: mfd@10002000 { > + compatible = "ingenic,tcu", "simple-mfd", "syscon"; > + reg = <0x10002000 0x1000>; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0x0 0x10002000 0x1000>; > + > + tcu_timer: timer@10 { > + compatible = "ingenic,jz4740-tcu"; > + reg = <0x10 0xff0>; > + > + clocks = <&tcu_clk 0>, <&tcu_clk 1>, <&tcu_clk 2>, <&tcu_clk 3>, > + <&tcu_clk 4>, <&tcu_clk 5>, <&tcu_clk 6>, <&tcu_clk 7>; > + clock-names = "timer0", "timer1", "timer2", "timer3", > + "timer4", "timer5", "timer6", "timer7"; > + > + interrupt-parent = <&tcu_irq>; > + interrupts = <0 1 2 3 4 5 6 7>; > + }; > + }; > +}; > + > +For information about the top-level "ingenic,tcu" compatible node and other > +children nodes, see Documentation/devicetree/bindings/mfd/ingenic,tcu.txt. > Thanks, M. -- Jazz is not dead. It just smells funny...