From: Ulf Hansson <ulf.hansson@linaro.org>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>,
linux-clk <linux-clk@vger.kernel.org>,
DTML <devicetree@vger.kernel.org>,
Philipp Zabel <p.zabel@pengutronix.de>
Subject: Re: [PATCH 1/2 v2] dt-bindings: clock: u8500: Rewrite in YAML and extend
Date: Mon, 2 Aug 2021 17:54:04 +0200 [thread overview]
Message-ID: <CAPDyKFqSZiHubLDJaQmLtPjLxvU2N9iGY--Yc2ghhyBhcLaqJQ@mail.gmail.com> (raw)
In-Reply-To: <20210720231837.1576130-1-linus.walleij@linaro.org>
On Wed, 21 Jul 2021 at 01:20, Linus Walleij <linus.walleij@linaro.org> wrote:
>
> This rewrites the ux500/u8500 clock bindings in YAML schema and extends them
> with the PRCC reset controller.
>
> The bindings are a bit idiomatic but it just reflects their age, the ux500
> platform was used as guinea pig for early device tree conversion of platforms
> in 2015. The new subnode for the reset controller follows the pattern of the
> old bindings and adds a node with reset-cells for this.
>
> Cc: devicetree@vger.kernel.org
> Cc: Philipp Zabel <p.zabel@pengutronix.de>
> Cc: Ulf Hansson <ulf.hansson@linaro.org>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Apologies for the delay! At some point we should also extend these
bindings by adding a power-domain consumer binding, as each PRCC block
belongs to the core power domain.
FWIW:
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Kind regards
Uffe
> ---
> ChangeLog v1->v2:
> - Use an enum for compatible.
> - Mark the reset controller as object (node)
> - Mandate 2 #reset-cells on the reset controller.
> - Small blurb that PRCC 4 does not exist.
> - Rebase on v5.14-rc1
> - Cc Philipp Zabel
> ---
> .../bindings/clock/stericsson,u8500-clks.yaml | 121 ++++++++++++++++++
> .../devicetree/bindings/clock/ux500.txt | 64 ---------
> .../reset/stericsson,db8500-prcc-reset.h | 51 ++++++++
> 3 files changed, 172 insertions(+), 64 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/clock/stericsson,u8500-clks.yaml
> delete mode 100644 Documentation/devicetree/bindings/clock/ux500.txt
> create mode 100644 include/dt-bindings/reset/stericsson,db8500-prcc-reset.h
>
> diff --git a/Documentation/devicetree/bindings/clock/stericsson,u8500-clks.yaml b/Documentation/devicetree/bindings/clock/stericsson,u8500-clks.yaml
> new file mode 100644
> index 000000000000..9bc95a308477
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/stericsson,u8500-clks.yaml
> @@ -0,0 +1,121 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/clock/stericsson,u8500-clks.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: ST-Ericsson DB8500 (U8500) clocks
> +
> +maintainers:
> + - Ulf Hansson <ulf.hansson@linaro.org>
> + - Linus Walleij <linus.walleij@linaro.org>
> +
> +description: While named "U8500 clocks" these clocks are inside the
> + DB8500 digital baseband system-on-chip and its siblings such as
> + DB8520. These bindings consider the clocks present in the SoC
> + itself, not off-chip clocks. There are four different on-chip
> + clocks - RTC (32 kHz), CPU clock (SMP TWD), PRCMU (power reset and
> + control management unit) clocks and PRCC (peripheral reset and
> + clock controller) clocks. For some reason PRCC 4 does not exist so
> + the itemization can be a bit unintuitive.
> +
> +properties:
> + compatible:
> + enum:
> + - stericsson,u8500-clks
> + - stericsson,u8540-clks
> + - stericsson,u9540-clks
> +
> + reg:
> + items:
> + - description: PRCC 1 register area
> + - description: PRCC 2 register area
> + - description: PRCC 3 register area
> + - description: PRCC 5 register area
> + - description: PRCC 6 register area
> +
> + prcmu-clock:
> + description: A subnode with one clock cell for PRCMU (power, reset, control
> + management unit) clocks. The cell indicates which PRCMU clock in the
> + prcmu-clock node the consumer wants to use.
> + type: object
> +
> + properties:
> + '#clock-cells':
> + const: 1
> +
> + additionalProperties: false
> +
> + prcc-periph-clock:
> + description: A subnode with two clock cells for PRCC (peripheral
> + reset and clock controller) peripheral clocks. The first cell indicates
> + which PRCC block the consumer wants to use, possible values are 1, 2, 3,
> + 5, 6. The second cell indicates which clock inside the PRCC block it
> + wants, possible values are 0 thru 31.
> + type: object
> +
> + properties:
> + '#clock-cells':
> + const: 2
> +
> + additionalProperties: false
> +
> + prcc-kernel-clock:
> + description: A subnode with two clock cells for PRCC (peripheral reset
> + and clock controller) kernel clocks. The first cell indicates which PRCC
> + block the consumer wants to use, possible values are 1, 2, 3, 5, 6. The
> + second cell indicates which clock inside the PRCC block it wants, possible
> + values are 0 thru 31.
> + type: object
> +
> + properties:
> + '#clock-cells':
> + const: 2
> +
> + additionalProperties: false
> +
> + prcc-reset-controller:
> + description: A subnode with two reset cells for the reset portions of the
> + PRCC (peripheral reset and clock controller). The first cell indicates
> + which PRCC block the consumer wants to use, possible values are 1, 2, 3
> + 5 and 6. The second cell indicates which reset line inside the PRCC block
> + it wants to control, possible values are 0 thru 31.
> + type: object
> +
> + properties:
> + '#reset-cells':
> + const: 2
> +
> + additionalProperties: false
> +
> + rtc32k-clock:
> + description: A subnode with zero clock cells for the 32kHz RTC clock.
> + type: object
> +
> + properties:
> + '#clock-cells':
> + const: 0
> +
> + additionalProperties: false
> +
> + smp-twd-clock:
> + description: A subnode for the ARM SMP Timer Watchdog cluster with zero
> + clock cells.
> + type: object
> +
> + properties:
> + '#clock-cells':
> + const: 0
> +
> + additionalProperties: false
> +
> +required:
> + - compatible
> + - reg
> + - prcmu-clock
> + - prcc-periph-clock
> + - prcc-kernel-clock
> + - rtc32k-clock
> + - smp-twd-clock
> +
> +additionalProperties: false
> diff --git a/Documentation/devicetree/bindings/clock/ux500.txt b/Documentation/devicetree/bindings/clock/ux500.txt
> deleted file mode 100644
> index e52bd4b72348..000000000000
> --- a/Documentation/devicetree/bindings/clock/ux500.txt
> +++ /dev/null
> @@ -1,64 +0,0 @@
> -Clock bindings for ST-Ericsson Ux500 clocks
> -
> -Required properties :
> -- compatible : shall contain only one of the following:
> - "stericsson,u8500-clks"
> - "stericsson,u8540-clks"
> - "stericsson,u9540-clks"
> -- reg : shall contain base register location and length for
> - CLKRST1, 2, 3, 5, and 6 in an array. Note the absence of
> - CLKRST4, which does not exist.
> -
> -Required subnodes:
> -- prcmu-clock: a subnode with one clock cell for PRCMU (power,
> - reset, control unit) clocks. The cell indicates which PRCMU
> - clock in the prcmu-clock node the consumer wants to use.
> -- prcc-periph-clock: a subnode with two clock cells for
> - PRCC (programmable reset- and clock controller) peripheral clocks.
> - The first cell indicates which PRCC block the consumer
> - wants to use, possible values are 1, 2, 3, 5, 6. The second
> - cell indicates which clock inside the PRCC block it wants,
> - possible values are 0 thru 31.
> -- prcc-kernel-clock: a subnode with two clock cells for
> - PRCC (programmable reset- and clock controller) kernel clocks
> - The first cell indicates which PRCC block the consumer
> - wants to use, possible values are 1, 2, 3, 5, 6. The second
> - cell indicates which clock inside the PRCC block it wants,
> - possible values are 0 thru 31.
> -- rtc32k-clock: a subnode with zero clock cells for the 32kHz
> - RTC clock.
> -- smp-twd-clock: a subnode for the ARM SMP Timer Watchdog cluster
> - with zero clock cells.
> -
> -Example:
> -
> -clocks {
> - compatible = "stericsson,u8500-clks";
> - /*
> - * Registers for the CLKRST block on peripheral
> - * groups 1, 2, 3, 5, 6,
> - */
> - reg = <0x8012f000 0x1000>, <0x8011f000 0x1000>,
> - <0x8000f000 0x1000>, <0xa03ff000 0x1000>,
> - <0xa03cf000 0x1000>;
> -
> - prcmu_clk: prcmu-clock {
> - #clock-cells = <1>;
> - };
> -
> - prcc_pclk: prcc-periph-clock {
> - #clock-cells = <2>;
> - };
> -
> - prcc_kclk: prcc-kernel-clock {
> - #clock-cells = <2>;
> - };
> -
> - rtc_clk: rtc32k-clock {
> - #clock-cells = <0>;
> - };
> -
> - smp_twd_clk: smp-twd-clock {
> - #clock-cells = <0>;
> - };
> -};
> diff --git a/include/dt-bindings/reset/stericsson,db8500-prcc-reset.h b/include/dt-bindings/reset/stericsson,db8500-prcc-reset.h
> new file mode 100644
> index 000000000000..ea906896c70f
> --- /dev/null
> +++ b/include/dt-bindings/reset/stericsson,db8500-prcc-reset.h
> @@ -0,0 +1,51 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +
> +#ifndef _DT_BINDINGS_STE_PRCC_RESET
> +#define _DT_BINDINGS_STE_PRCC_RESET
> +
> +#define DB8500_PRCC_1 1
> +#define DB8500_PRCC_2 2
> +#define DB8500_PRCC_3 3
> +#define DB8500_PRCC_6 6
> +
> +/* Reset lines on PRCC 1 */
> +#define DB8500_PRCC_1_RESET_UART0 0
> +#define DB8500_PRCC_1_RESET_UART1 1
> +#define DB8500_PRCC_1_RESET_I2C1 2
> +#define DB8500_PRCC_1_RESET_MSP0 3
> +#define DB8500_PRCC_1_RESET_MSP1 4
> +#define DB8500_PRCC_1_RESET_SDI0 5
> +#define DB8500_PRCC_1_RESET_I2C2 6
> +#define DB8500_PRCC_1_RESET_SPI3 7
> +#define DB8500_PRCC_1_RESET_SLIMBUS0 8
> +#define DB8500_PRCC_1_RESET_I2C4 9
> +#define DB8500_PRCC_1_RESET_MSP3 10
> +#define DB8500_PRCC_1_RESET_PER_MSP3 11
> +#define DB8500_PRCC_1_RESET_PER_MSP1 12
> +#define DB8500_PRCC_1_RESET_PER_MSP0 13
> +#define DB8500_PRCC_1_RESET_PER_SLIMBUS 14
> +
> +/* Reset lines on PRCC 2 */
> +#define DB8500_PRCC_2_RESET_I2C3 0
> +#define DB8500_PRCC_2_RESET_PWL 1
> +#define DB8500_PRCC_2_RESET_SDI4 2
> +#define DB8500_PRCC_2_RESET_MSP2 3
> +#define DB8500_PRCC_2_RESET_SDI1 4
> +#define DB8500_PRCC_2_RESET_SDI3 5
> +#define DB8500_PRCC_2_RESET_HSIRX 6
> +#define DB8500_PRCC_2_RESET_HSITX 7
> +#define DB8500_PRCC_1_RESET_PER_MSP2 8
> +
> +/* Reset lines on PRCC 3 */
> +#define DB8500_PRCC_3_RESET_SSP0 1
> +#define DB8500_PRCC_3_RESET_SSP1 2
> +#define DB8500_PRCC_3_RESET_I2C0 3
> +#define DB8500_PRCC_3_RESET_SDI2 4
> +#define DB8500_PRCC_3_RESET_SKE 5
> +#define DB8500_PRCC_3_RESET_UART2 6
> +#define DB8500_PRCC_3_RESET_SDI5 7
> +
> +/* Reset lines on PRCC 6 */
> +#define DB8500_PRCC_3_RESET_RNG 0
> +
> +#endif
> --
> 2.31.1
>
prev parent reply other threads:[~2021-08-02 15:54 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-20 23:18 [PATCH 1/2 v2] dt-bindings: clock: u8500: Rewrite in YAML and extend Linus Walleij
2021-07-20 23:18 ` [PATCH 2/2 v2] clk: ux500: Add driver for the reset portions of PRCC Linus Walleij
2021-07-21 9:50 ` Philipp Zabel
2021-07-29 19:54 ` [PATCH 1/2 v2] dt-bindings: clock: u8500: Rewrite in YAML and extend Rob Herring
2021-08-02 15:54 ` Ulf Hansson [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAPDyKFqSZiHubLDJaQmLtPjLxvU2N9iGY--Yc2ghhyBhcLaqJQ@mail.gmail.com \
--to=ulf.hansson@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-clk@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=p.zabel@pengutronix.de \
--cc=sboyd@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).