Received: by 10.223.176.5 with SMTP id f5csp73893wra; Tue, 30 Jan 2018 08:16:01 -0800 (PST) X-Google-Smtp-Source: AH8x225uB9joALJTsQk3+Myqvz1diSjf7GHBxZUsxkb8cp9CTXX9CfAr6nfbY/7LcsctAs48Re6p X-Received: by 10.99.8.1 with SMTP id 1mr15317964pgi.321.1517328961774; Tue, 30 Jan 2018 08:16:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517328961; cv=none; d=google.com; s=arc-20160816; b=okBOSdnbM3INa7jgpx2KUNVrv2OheenPgpz2XqWK+7f3LOzn7QNWaJvqxI3Bc8e82O nW9ynX3DnJUB8g/zvn3mtZB7qFu7l/e60n2Sms9o2fVu8++M9tgtGZaN+CsmuyCmn+IZ RdMEVlMFRoZA+jyFM2eIISY73iU7owNMIPyq5iry9R1//IVbJcejfrI5ooX/aNeJ1QZ4 OhsHGxaZwGKW5bewymRSibmP/0U0YEX+0JYaF+9vgOU45DELxHWZkcvjFfw79jiy/vzr tI0dJaBfa7j+f/CpJckvYYsc3BwOprldJjELgncmKPMfqg56OJGYOSWyszZtI0Ob8tbr Q4/w== 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:dmarc-filter :arc-authentication-results; bh=y51zo9ezuND2ob6d6AggNVol3e7GdJlhvi+Lhz3iNJY=; b=QrVGJO9cAZbbmOoCsdhZkH1IHHMoGOFsgxT2ohNjIt7CXrInloDCLEnAlbPpxl9n/f 62it0u36k4crOCiTEHYtehpjU1sjJDl/ItY26ZZtZEYiIBbl1WY5q88ULMCMFo8pfGqB jK4Uz0Qp+x73R6WnaonOHErSawHaUHOeilcLuXYXZNTP+9E1VcEIYriR6ePM+TmEOEJB v0Waes3l/NJZxJKCYVDp641pw8NSodVFwRp9VSpVxtzYIoNDzICIuC1UJm+89+IuD/An rwI4JDQ7dnNUQPttwjABhYmBgMHqwLRLDU5m04wQPrRYvyUzdkb655kti38EVxe+Oa2A 8GSw== 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 r5-v6si3111232plo.443.2018.01.30.08.15.46; Tue, 30 Jan 2018 08:16:01 -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; 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 S1751966AbeA3Oum (ORCPT + 99 others); Tue, 30 Jan 2018 09:50:42 -0500 Received: from mail.kernel.org ([198.145.29.99]:41182 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751698AbeA3Ouj (ORCPT ); Tue, 30 Jan 2018 09:50:39 -0500 Received: from mail-qt0-f175.google.com (mail-qt0-f175.google.com [209.85.216.175]) (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 0D605217A0; Tue, 30 Jan 2018 14:50:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0D605217A0 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=robh@kernel.org Received: by mail-qt0-f175.google.com with SMTP id a27so17557303qtd.1; Tue, 30 Jan 2018 06:50:39 -0800 (PST) X-Gm-Message-State: AKwxytexq3SN3Tf9phP1pwqY0vSGb6CXcEANyKUCM+Z4sZWfMwfdIsPB yeHzyVICsGqlwjTixUgb9bHI1hFQAvN4b8JiHQ== X-Received: by 10.200.22.187 with SMTP id r56mr43058392qtj.190.1517323838099; Tue, 30 Jan 2018 06:50:38 -0800 (PST) MIME-Version: 1.0 Received: by 10.12.147.20 with HTTP; Tue, 30 Jan 2018 06:50:17 -0800 (PST) In-Reply-To: References: <1516468460-4908-1-git-send-email-david@lechnology.com> <1516468460-4908-2-git-send-email-david@lechnology.com> <20180129195315.bjanym7pmeh7bhaa@rob-hp-laptop> From: Rob Herring Date: Tue, 30 Jan 2018 08:50:17 -0600 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v6 01/41] dt-bindings: clock: Add new bindings for TI Davinci PLL clocks To: David Lechner Cc: linux-clk , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" , Michael Turquette , Stephen Boyd , Mark Rutland , Sekhar Nori , Kevin Hilman , Bartosz Golaszewski , Adam Ford , "linux-kernel@vger.kernel.org" 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 Mon, Jan 29, 2018 at 3:14 PM, David Lechner wrote: > On 01/29/2018 01:53 PM, Rob Herring wrote: >> >> On Sat, Jan 20, 2018 at 11:13:40AM -0600, David Lechner wrote: >>> >>> This adds a new binding for the PLL IP blocks in the mach-davinci >>> family of processors. Currently, only da850 has device tree support >>> but these bindings can also work for other SoCs in this family just >>> by adding new compatible strings. >>> >>> Note: Although these PLL controllers are very similar to the TI Keystone >>> SoCs, we are not re-using those bindings. The Keystone bindings use a >>> legacy one-node-per-clock binding. Furthermore, the mach-davinici SoCs >>> have a slightly different PLL register layout and a number of quirks >>> that can't be handled by the existing bindings, so the keystone bindings >>> could not be used as-is anyway. >>> >>> Signed-off-by: David Lechner >>> --- >>> >>> v6 changes: >>> - Added clock-names property >>> - Added ti,clkmode-square-wave property >>> - Added pllout child node >>> - Added obsclk child node >>> - Expanded examples >>> >>> .../devicetree/bindings/clock/ti/davinci/pll.txt | 96 >>> ++++++++++++++++++++++ >>> 1 file changed, 96 insertions(+) >>> create mode 100644 >>> Documentation/devicetree/bindings/clock/ti/davinci/pll.txt >>> >>> diff --git a/Documentation/devicetree/bindings/clock/ti/davinci/pll.txt >>> b/Documentation/devicetree/bindings/clock/ti/davinci/pll.txt >>> new file mode 100644 >>> index 0000000..36998e1 >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/clock/ti/davinci/pll.txt >>> @@ -0,0 +1,96 @@ >>> +Binding for TI DaVinci PLL Controllers >>> + >>> +The PLL provides clocks to most of the components on the SoC. In >>> addition >>> +to the PLL itself, this controller also contains bypasses, gates, >>> dividers, >>> +an multiplexers for various clock signals. >>> + >>> +Required properties: >>> +- compatible: shall be one of: >>> + - "ti,da850-pll0" for PLL0 on DA850/OMAP-L138/AM18XX >>> + - "ti,da850-pll1" for PLL1 on DA850/OMAP-L138/AM18XX >>> +- reg: physical base address and size of the controller's register area. >>> +- clocks: phandles corresponding to the clock names >>> +- clock-names: names of the clock sources - depends on compatible string >>> + - for "ti,da850-pll0", shall be "clksrc", "extclksrc" >>> + - for "ti,da850-pll1", shall be "clksrc" >>> + >>> +Optional properties: >>> +- ti,clkmode-square-wave: Indicates that the the board is supplying a >>> square >>> + wave input on the OSCIN pin instead of using a crystal >>> oscillator. >>> + This property is only valid when compatible = "ti,da850-pll0". >>> + >>> + >>> +Optional child nodes: >>> + >>> +pllout >>> + Describes the main PLL clock output (before POSTDIV). The node >>> name must >>> + be "pllout". >>> + >>> + Required properties: >>> + - #clock-cells: shall be 0 >>> + >>> +sysclk >>> + Describes the PLLDIVn divider clocks that provide the SYSCLKn >>> clock >>> + domains. The node name must be "sysclk". Consumers of this node >>> should >>> + use "n" in "SYSCLKn" as the index parameter for the clock cell. >>> + >>> + Required properties: >>> + - #clock-cells: shall be 1 >>> + >>> +auxclk >>> + Describes the AUXCLK output of the PLL. The node name must be >>> "auxclk". >>> + This child node is only valid when compatible = "ti,da850-pll0". >>> + >>> + Required properties: >>> + - #clock-cells: shall be 0 >>> + >>> +obsclk >>> + Describes the OBSCLK output of the PLL. The node name must be >>> "obsclk". >>> + >>> + Required properties: >>> + - #clock-cells: shall be 0 >> >> >> So why have all these child nodes vs. just defining a single number >> space of clock ids? >> >> Rob >> > > I think that it makes the bindings more self-documenting. Not all PLLs have > all of possible types of output clocks, so the presence or absence of a > child node indicates if a PLL actually has that output or not. Doesn't the compatible string do that? > It is also complicated by the fact that one of the child nodes (sysclk) > is already an array of clocks. > > To do what you are suggesting might look something like this... > > --- > > Required properties: > - compatible: shall be one of: > - "ti,da850-pll0" for PLL0 on DA850/OMAP-L138/AM18XX > - "ti,da850-pll1" for PLL1 on DA850/OMAP-L138/AM18XX > - reg: physical base address and size of the controller's register area. > - clocks: phandles corresponding to the clock names > - clock-names: names of the clock sources - depends on compatible string > - for "ti,da850-pll0", shall be "clksrc", "extclksrc" > - for "ti,da850-pll1", shall be "clksrc" > - #clock-cells: shall be set to <2>. > > Consumers: > > The clock cell values for consumers work as follows... > > The first index is one of the constants defined in ti-davinci-pll.h > > The second index is 0 unless the first index is TI_DAVINCI_SYSCLK. In the > case > of TI_DAVINCI_SYSCLK the second index the SYSCLK domain ID (n in SYSCLKn). > > For compatible = "ti,da850-pll0": > - <&pll0 TI_DAVINCI_PLLOUT 0> is the PLLOUT clock > - <&pll0 TI_DAVINCI_SYSCLK n> is one of the SYSCLKn clock domains > where n is 1 to 7 > - <&pll0 TI_DAVINCI_AUXCLK 0> is the AUXCLK clock domain > - <&pll0 TI_DAVINCI_OBSCLK 0> is the OBSCLK clock domain > - all other index combinations are invalid > > For compatible = "ti,da850-pll1": > - <&pll0 TI_DAVINCI_SYSCLK n> is one of the SYSCLKn clock domains > where n is 1 to 3 > - <&pll0 TI_DAVINCI_OBSCLK 0> is the OBSCLK clock domain > - all other index combinations are invalid You don't really need 2 cells here. I guess if you want to keep the child nodes, that is fine. Rob