devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Geert Uytterhoeven <geert@linux-m68k.org>
To: Biju Das <biju.das.jz@bp.renesas.com>
Cc: Rob Herring <robh+dt@kernel.org>,
	"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" 
	<devicetree@vger.kernel.org>,
	Chris Paterson <Chris.Paterson2@renesas.com>,
	Biju Das <biju.das@bp.renesas.com>,
	Prabhakar Mahadev Lad <prabhakar.mahadev-lad.rj@bp.renesas.com>,
	Linux-Renesas <linux-renesas-soc@vger.kernel.org>
Subject: Re: [PATCH v3 3/7] dt-bindings: clock: Add R9A07G043 CPG Clock and Reset Definitions
Date: Wed, 30 Mar 2022 21:27:53 +0200	[thread overview]
Message-ID: <CAMuHMdVHWvkZyjPi4i5AG2iYgMp7euS=Nf-v_rYNVS10jiW6eQ@mail.gmail.com> (raw)
In-Reply-To: <20220315142644.17660-4-biju.das.jz@bp.renesas.com>

Hi Biju,

On Tue, Mar 15, 2022 at 3:26 PM Biju Das <biju.das.jz@bp.renesas.com> wrote:
> Define RZ/G2UL (R9A07G043U) Clock Pulse Generator Core Clock and module
> clock outputs, as listed in Table 7.1.4.2 ("Clock List r0.51") and also
> add Reset definitions referring to registers CPG_RST_* in Section 7.2.3
> ("Register configuration") of the RZ/G2UL Hardware User's Manual (Rev.
> 0.51, Nov. 2021).
>
> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
> Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
> v2->v3:
>  * Removed leading u/U from r9a07g043
>  * renamed the file r9a07g043u-cpg.h->r9a07g043-cpg.h
>  * Prepared Common Module Clock/Reset indices for RZ/G2UL and RZ/Five
>  * Prepared RZ/G2UL specific Module Clock/Reset indices.

Thanks for the update!

> --- /dev/null
> +++ b/include/dt-bindings/clock/r9a07g043-cpg.h
> @@ -0,0 +1,190 @@
> +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> + *
> + * Copyright (C) 2022 Renesas Electronics Corp.
> + */
> +#ifndef __DT_BINDINGS_CLOCK_R9A07G043_CPG_H__
> +#define __DT_BINDINGS_CLOCK_R9A07G043_CPG_H__
> +
> +#include <dt-bindings/clock/renesas-cpg-mssr.h>
> +
> +/* R9A07G043 CPG Core Clocks */
> +#define R9A07G043_CLK_I                        0
> +#define R9A07G043_CLK_I2               1
> +#define R9A07G043_CLK_S0               2
> +#define R9A07G043_CLK_SPI0             3
> +#define R9A07G043_CLK_SPI1             4
> +#define R9A07G043_CLK_SD0              5
> +#define R9A07G043_CLK_SD1              6
> +#define R9A07G043_CLK_M0               7
> +#define R9A07G043_CLK_M2               8
> +#define R9A07G043_CLK_M3               9
> +#define R9A07G043_CLK_HP               10
> +#define R9A07G043_CLK_TSU              11
> +#define R9A07G043_CLK_ZT               12
> +#define R9A07G043_CLK_P0               13
> +#define R9A07G043_CLK_P1               14
> +#define R9A07G043_CLK_P2               15
> +#define R9A07G043_CLK_AT               16
> +#define R9A07G043_OSCCLK               17
> +#define R9A07G043_CLK_P0_DIV2          18
> +
> +/* R9A07G043 Common Module Clocks */
> +#define R9A07G043_IA55_CLK             0
> +#define R9A07G043_IA55_PCLK            1

I think IA55 does not exist on RZ/Five?

> +#define R9A07G043_DMAC_ACLK            2
> +#define R9A07G043_DMAC_PCLK            3
> +#define R9A07G043_OSTM0_PCLK           4
> +#define R9A07G043_OSTM1_PCLK           5
> +#define R9A07G043_OSTM2_PCLK           6
> +#define R9A07G043_MTU_X_MCK_MTU3       7
> +#define R9A07G043_POE3_CLKM_POE                8
> +#define R9A07G043_WDT0_PCLK            9
> +#define R9A07G043_WDT0_CLK             10
> +#define R9A07G043_SPI_CLK2             11
> +#define R9A07G043_SPI_CLK              12
> +#define R9A07G043_SDHI0_IMCLK          13
> +#define R9A07G043_SDHI0_IMCLK2         14
> +#define R9A07G043_SDHI0_CLK_HS         15
> +#define R9A07G043_SDHI0_ACLK           16
> +#define R9A07G043_SDHI1_IMCLK          17
> +#define R9A07G043_SDHI1_IMCLK2         18
> +#define R9A07G043_SDHI1_CLK_HS         19
> +#define R9A07G043_SDHI1_ACLK           20
> +#define R9A07G043_SSI0_PCLK2           21
> +#define R9A07G043_SSI0_PCLK_SFR                22
> +#define R9A07G043_SSI1_PCLK2           23
> +#define R9A07G043_SSI1_PCLK_SFR                24
> +#define R9A07G043_SSI2_PCLK2           25
> +#define R9A07G043_SSI2_PCLK_SFR                26
> +#define R9A07G043_SSI3_PCLK2           27
> +#define R9A07G043_SSI3_PCLK_SFR                28
> +#define R9A07G043_SRC_CLKP             29
> +#define R9A07G043_USB_U2H0_HCLK                30
> +#define R9A07G043_USB_U2H1_HCLK                31
> +#define R9A07G043_USB_U2P_EXR_CPUCLK   32
> +#define R9A07G043_USB_PCLK             33
> +#define R9A07G043_ETH0_CLK_AXI         34
> +#define R9A07G043_ETH0_CLK_CHI         35
> +#define R9A07G043_ETH1_CLK_AXI         36
> +#define R9A07G043_ETH1_CLK_CHI         37
> +#define R9A07G043_I2C0_PCLK            38
> +#define R9A07G043_I2C1_PCLK            39
> +#define R9A07G043_I2C2_PCLK            40
> +#define R9A07G043_I2C3_PCLK            41
> +#define R9A07G043_SCIF0_CLK_PCK                42
> +#define R9A07G043_SCIF1_CLK_PCK                43
> +#define R9A07G043_SCIF2_CLK_PCK                44
> +#define R9A07G043_SCIF3_CLK_PCK                45
> +#define R9A07G043_SCIF4_CLK_PCK                46
> +#define R9A07G043_SCI0_CLKP            47
> +#define R9A07G043_SCI1_CLKP            48
> +#define R9A07G043_IRDA_CLKP            49
> +#define R9A07G043_RSPI0_CLKB           50
> +#define R9A07G043_RSPI1_CLKB           51
> +#define R9A07G043_RSPI2_CLKB           52
> +#define R9A07G043_CANFD_PCLK           53
> +#define R9A07G043_GPIO_HCLK            54
> +#define R9A07G043_ADC_ADCLK            55
> +#define R9A07G043_ADC_PCLK             56
> +#define R9A07G043_TSU_PCLK             57
> +#define R9A07G043_LAST_COMMON_CLK      (R9A07G043_TSU_PCLK)

Does R9A07G043_LAST_COMMON_CLK need to be part of the bindings?
Do you actually have a use case for this definition, besides the use
below?  If not, I would get rid of the definition, and just hardcode
the numeric values below.

Perhaps you planned to start enumerating RZ/Five-specific clocks from
R9A07G043_LAST_COMMON_CLK + 1, too?  I don't think that's a good idea,
as it would complicate validation of indices in the driver.

> +
> +/* RZ/G2UL Specific */
> +#define R9A07G043_CA55_SCLK            (R9A07G043_LAST_COMMON_CLK + 1)
> +#define R9A07G043_CA55_PCLK            (R9A07G043_LAST_COMMON_CLK + 2)
> +#define R9A07G043_CA55_ATCLK           (R9A07G043_LAST_COMMON_CLK + 3)
> +#define R9A07G043_CA55_GICCLK          (R9A07G043_LAST_COMMON_CLK + 4)
> +#define R9A07G043_CA55_PERICLK         (R9A07G043_LAST_COMMON_CLK + 5)
> +#define R9A07G043_CA55_ACLK            (R9A07G043_LAST_COMMON_CLK + 6)
> +#define R9A07G043_CA55_TSCLK           (R9A07G043_LAST_COMMON_CLK + 7)
> +#define R9A07G043_GIC600_GICCLK                (R9A07G043_LAST_COMMON_CLK + 8)
> +#define R9A07G043_MHU_PCLK             (R9A07G043_LAST_COMMON_CLK + 9)
> +#define R9A07G043_SYC_CNT_CLK          (R9A07G043_LAST_COMMON_CLK + 10)

I think SYC_CNT does exist on RZ/Five?

So I'm not 100% convinced it's a good idea to split the definitions in
common, RZ/G2UL-specific, and RZ/Five-specific definitions like this.
If we make a mistake, the end result won't look pretty.
And we can't do compile-time validation that way anyway.

So I'm in favor of listing all clocks (in the same order as on RZ/G2L),
and adding a comment if a clock is RZ/G2UL-only.

> +#define R9A07G043_WDT2_PCLK            (R9A07G043_LAST_COMMON_CLK + 11)
> +#define R9A07G043_WDT2_CLK             (R9A07G043_LAST_COMMON_CLK + 12)
> +#define R9A07G043_ISU_ACLK             (R9A07G043_LAST_COMMON_CLK + 13)
> +#define R9A07G043_ISU_PCLK             (R9A07G043_LAST_COMMON_CLK + 14)
> +#define R9A07G043_CRU_SYSCLK           (R9A07G043_LAST_COMMON_CLK + 15)
> +#define R9A07G043_CRU_VCLK             (R9A07G043_LAST_COMMON_CLK + 16)
> +#define R9A07G043_CRU_PCLK             (R9A07G043_LAST_COMMON_CLK + 17)
> +#define R9A07G043_CRU_ACLK             (R9A07G043_LAST_COMMON_CLK + 18)
> +#define R9A07G043_LCDC_CLK_A           (R9A07G043_LAST_COMMON_CLK + 19)
> +#define R9A07G043_LCDC_CLK_P           (R9A07G043_LAST_COMMON_CLK + 20)
> +#define R9A07G043_LCDC_CLK_D           (R9A07G043_LAST_COMMON_CLK + 21)
> +
> +/* R9A07G043 Common Resets */
> +#define R9A07G043_IA55_RESETN          0

All my comments above apply to resets, too.

> +#define R9A07G043_DMAC_ARESETN         1
> +#define R9A07G043_DMAC_RST_ASYNC       2
> +#define R9A07G043_OSTM0_PRESETZ                3
> +#define R9A07G043_OSTM1_PRESETZ                4
> +#define R9A07G043_OSTM2_PRESETZ                5
> +#define R9A07G043_MTU_X_PRESET_MTU3    6
> +#define R9A07G043_POE3_RST_M_REG       7
> +#define R9A07G043_WDT0_PRESETN         8
> +#define R9A07G043_SPI_RST              9
> +#define R9A07G043_SDHI0_IXRST          10
> +#define R9A07G043_SDHI1_IXRST          11

Move SSI resets here? (see below)

> +#define R9A07G043_SRC_RST              12
> +#define R9A07G043_USB_U2H0_HRESETN     13
> +#define R9A07G043_USB_U2H1_HRESETN     14
> +#define R9A07G043_USB_U2P_EXL_SYSRST   15
> +#define R9A07G043_USB_PRESETN          16

Move ETH resets here? (see below)

> +#define R9A07G043_I2C0_MRST            17
> +#define R9A07G043_I2C1_MRST            18
> +#define R9A07G043_I2C2_MRST            19
> +#define R9A07G043_I2C3_MRST            20

Move SCIF resets here? (see below)

> +#define R9A07G043_SCI0_RST             21
> +#define R9A07G043_SCI1_RST             22
> +#define R9A07G043_IRDA_RST             23
> +#define R9A07G043_RSPI0_RST            24
> +#define R9A07G043_RSPI1_RST            25
> +#define R9A07G043_RSPI2_RST            26
> +#define R9A07G043_CANFD_RSTP_N         27
> +#define R9A07G043_CANFD_RSTC_N         28
> +#define R9A07G043_GPIO_RSTN            29
> +#define R9A07G043_GPIO_PORT_RESETN     30
> +#define R9A07G043_GPIO_SPARE_RESETN    31
> +#define R9A07G043_TSU_PRESETN          32
> +#define R9A07G043_SSI0_RST_M2_REG      33
> +#define R9A07G043_SSI1_RST_M2_REG      34
> +#define R9A07G043_SSI2_RST_M2_REG      35
> +#define R9A07G043_SSI3_RST_M2_REG      36
> +#define R9A07G043_ETH0_RST_HW_N                37
> +#define R9A07G043_ETH1_RST_HW_N                38
> +#define R9A07G043_SCIF0_RST_SYSTEM_N   39
> +#define R9A07G043_SCIF1_RST_SYSTEM_N   40
> +#define R9A07G043_SCIF2_RST_SYSTEM_N   41
> +#define R9A07G043_SCIF3_RST_SYSTEM_N   42
> +#define R9A07G043_SCIF4_RST_SYSTEM_N   43

Is there any specific reason the SSI, ETH, and SCIF resets are
ordered differently than the corresponding clocks, and than the
resets on RZ/G2L?

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

  parent reply	other threads:[~2022-03-30 19:28 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-15 14:26 [PATCH v3 0/7] Add Renesas RZ/G2UL Type-1 {SoC,SMARC EVK} support Biju Das
2022-03-15 14:26 ` [PATCH v3 1/7] dt-bindings: power: renesas,rzg2l-sysc: Document RZ/G2UL SoC Biju Das
2022-03-30 13:09   ` Geert Uytterhoeven
2022-03-30 13:45     ` Biju Das
2022-03-15 14:26 ` [PATCH v3 3/7] dt-bindings: clock: Add R9A07G043 CPG Clock and Reset Definitions Biju Das
2022-03-23 18:41   ` Rob Herring
2022-03-30 19:27   ` Geert Uytterhoeven [this message]
2022-03-30 19:45     ` Geert Uytterhoeven
2022-04-01 15:12       ` Biju Das
2022-03-31  7:38     ` Biju Das
2022-03-31  7:46       ` Biju Das
2022-03-15 14:26 ` [PATCH v3 6/7] arm64: dts: renesas: Add initial DTSI for RZ/G2UL SoC Biju Das
2022-03-31  9:59   ` Geert Uytterhoeven
2022-03-15 14:26 ` [PATCH v3 7/7] arm64: dts: renesas: Add initial device tree for RZ/G2UL Type-1 SMARC EVK Biju Das
2022-03-31 10:08   ` Geert Uytterhoeven
2022-03-31 14:26   ` Geert Uytterhoeven
2022-03-31 14:33     ` Biju Das

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='CAMuHMdVHWvkZyjPi4i5AG2iYgMp7euS=Nf-v_rYNVS10jiW6eQ@mail.gmail.com' \
    --to=geert@linux-m68k.org \
    --cc=Chris.Paterson2@renesas.com \
    --cc=biju.das.jz@bp.renesas.com \
    --cc=biju.das@bp.renesas.com \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
    --cc=robh+dt@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).