[PATCH V7 2/4] dt-bindings: clock: document Amlogic S4 SoC peripherals clock controller

Yu Tu yu.tu at amlogic.com
Thu May 4 01:47:57 PDT 2023



On 2023/4/27 19:36, Neil Armstrong wrote:
> [ EXTERNAL EMAIL ]
> 
> Hi,
> 
> On 27/04/2023 10:52, Dmitry Rokosov wrote:
>> On Thu, Apr 27, 2023 at 04:03:41PM +0800, Yu Tu wrote:
>>>
>>>
>>> On 2023/4/26 18:49, Dmitry Rokosov wrote:
>>>> [ EXTERNAL EMAIL ]
>>>>
>>>> Hello Yu,
>>>>
>>>> Thank you for the patch series! Please find my comments below.
>>>>
>>>
>>> Hi Dmitry,
>>>      Thank you for your review.
>>>
>>>> On Mon, Apr 17, 2023 at 02:50:03PM +0800, Yu Tu wrote:
>>>>> Add the S4 peripherals clock controller dt-bindings in the s4 SoC
>>>>> family.
>>>>>
>>>>> Signed-off-by: Yu Tu <yu.tu at amlogic.com>
>>>>> ---
>>>>>    .../clock/amlogic,s4-peripherals-clkc.yaml    |  97 +++++++++++++
>>>>>    .../clock/amlogic,s4-peripherals-clkc.h       | 131 
>>>>> ++++++++++++++++++
>>>>>    2 files changed, 228 insertions(+)
>>>>>    create mode 100644 
>>>>> Documentation/devicetree/bindings/clock/amlogic,s4-peripherals-clkc.yaml
>>>>>    create mode 100644 
>>>>> include/dt-bindings/clock/amlogic,s4-peripherals-clkc.h
>>>>>
>>>>> diff --git 
>>>>> a/Documentation/devicetree/bindings/clock/amlogic,s4-peripherals-clkc.yaml b/Documentation/devicetree/bindings/clock/amlogic,s4-peripherals-clkc.yaml
>>>>> new file mode 100644
>>>>> index 000000000000..46b969a16a7c
>>>>> --- /dev/null
>>>>> +++ 
>>>>> b/Documentation/devicetree/bindings/clock/amlogic,s4-peripherals-clkc.yaml
>>>>> @@ -0,0 +1,97 @@
>>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>>>> +%YAML 1.2
>>>>> +---
>>>>> +$id: 
>>>>> http://devicetree.org/schemas/clock/amlogic,s4-peripherals-clkc.yaml#
>>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>>> +
>>>>> +title: Amlogic Meson S serials Peripherals Clock Controller
>>>>
>>>> As per my understanding, Meson is no longer applicable.
>>>> As Neil and Martin suggested in other reviews, the term 'Amlogic' 
>>>> should
>>>> be used instead or 'Meson' should be removed altogether.
>>>>
>>>
>>> No. This was all agreed upon a long time ago. Corporate drivers and 
>>> dtsi are
>>> named after this.
>>>
>>
>> Okay, it seems like there may be a misunderstanding here.
>> Now might be a good time to ask Neil about the correct behavior.
>>
>> Neil, could you please provide the specific naming rules for the new
>> Amlogic drivers? Where should we use the 'meson' keyword, and where
>> should we not use it?
> 
> The current goal is to first get rid of meson in the compatiob, which is 
> ok here,
> then remove meson in the driver name & function names, and then wherever 
> it's a
> nice to have to remove meson in bindings & comments.
> 
> So if you where sending a v8, it would be good to remove the Meson in the
> bindings description.

Okay.

> 
> Neil
> 
>>
>>>>> +
>>>>> +maintainers:
>>>>> +  - Neil Armstrong <neil.armstrong at linaro.org>
>>>>> +  - Jerome Brunet <jbrunet at baylibre.com>
>>>>> +  - Yu Tu <yu.tu at amlogic.com>
>>>>> +
>>>>> +properties:
>>>>> +  compatible:
>>>>> +    const: amlogic,s4-peripherals-clkc
>>>>> +
>>>>> +  reg:
>>>>> +    maxItems: 1
>>>>> +
>>>>> +  clocks:
>>>>> +    items:
>>>>> +      - description: input fixed pll div2
>>>>> +      - description: input fixed pll div2p5
>>>>> +      - description: input fixed pll div3
>>>>> +      - description: input fixed pll div4
>>>>> +      - description: input fixed pll div5
>>>>> +      - description: input fixed pll div7
>>>>> +      - description: input hifi pll
>>>>> +      - description: input gp0 pll
>>>>> +      - description: input mpll0
>>>>> +      - description: input mpll1
>>>>> +      - description: input mpll2
>>>>> +      - description: input mpll3
>>>>> +      - description: input hdmi pll
>>>>> +      - description: input oscillator (usually at 24MHz)
>>>>> +      - description: input external 32kHz reference (optional)
>>>>> +
>>>>> +  clock-names:
>>>>> +    items:
>>>>> +      - const: fclk_div2
>>>>> +      - const: fclk_div2p5
>>>>> +      - const: fclk_div3
>>>>> +      - const: fclk_div4
>>>>> +      - const: fclk_div5
>>>>> +      - const: fclk_div7
>>>>> +      - const: hifi_pll
>>>>> +      - const: gp0_pll
>>>>> +      - const: mpll0
>>>>> +      - const: mpll1
>>>>> +      - const: mpll2
>>>>> +      - const: mpll3
>>>>> +      - const: hdmi_pll
>>>>> +      - const: xtal
>>>>> +      - const: ext_32k
>>>>> +
>>>>> +  "#clock-cells":
>>>>> +    const: 1
>>>>> +
>>>>> +required:
>>>>> +  - compatible
>>>>> +  - reg
>>>>> +  - clocks
>>>>> +  - clock-names
>>>>> +  - "#clock-cells"
>>>>> +
>>>>> +additionalProperties: false
>>>>> +
>>>>> +examples:
>>>>> +  - |
>>>>> +    #include <dt-bindings/clock/amlogic,s4-peripherals-clkc.h>
>>>>> +
>>>>> +    clkc_periphs: clock-controller at fe000000 {
>>>>> +      compatible = "amlogic,s4-peripherals-clkc";
>>>>> +      reg = <0xfe000000 0x49c>;
>>>>
>>>> I was under the impression that reg as MMIO address should have four
>>>> cells on ARM64 architecture. Are you sure it only needs two cells?
>>>
>>> Yes. Maybe you can check out the clock file for other yaml.The two 
>>> cells and
>>> four cells all are ok.
>>>
>>> It's not a problem even in real DTS. How many cells are needed to 
>>> look at
>>> the parent address-cells and size-cells definitions.
>>>
>>
>> AFAIR, it depends on which OF API you will call for retreive address
>> and size values (u32 or u64).
>>
>>>>
>>>>> +      clocks = <&clkc_pll 3>,
>>>>> +              <&clkc_pll 13>,
>>>>> +              <&clkc_pll 5>,
>>>>> +              <&clkc_pll 7>,
>>>>> +              <&clkc_pll 9>,
>>>>> +              <&clkc_pll 11>,
>>>>> +              <&clkc_pll 17>,
>>>>> +              <&clkc_pll 15>,
>>>>> +              <&clkc_pll 25>,
>>>>> +              <&clkc_pll 27>,
>>>>> +              <&clkc_pll 29>,
>>>>> +              <&clkc_pll 31>,
>>>>> +              <&clkc_pll 20>,
>>>>> +              <&xtal>,
>>>>> +              <&ext_32k>;
>>>>> +      clock-names = "fclk_div2", "fclk_div2p5", "fclk_div3", 
>>>>> "fclk_div4",
>>>>> +                    "fclk_div5", "fclk_div7", "hifi_pll", "gp0_pll",
>>>>> +                    "mpll0", "mpll1", "mpll2", "mpll3", 
>>>>> "hdmi_pll", "xtal",
>>>>> +                    "ext_32k";
>>>>> +      #clock-cells = <1>;
>>>>> +    };
>>>>> +...
>>>>> diff --git 
>>>>> a/include/dt-bindings/clock/amlogic,s4-peripherals-clkc.h 
>>>>> b/include/dt-bindings/clock/amlogic,s4-peripherals-clkc.h
>>>>> new file mode 100644
>>>>> index 000000000000..073396a76957
>>>>> --- /dev/null
>>>>> +++ b/include/dt-bindings/clock/amlogic,s4-peripherals-clkc.h
>>>>> @@ -0,0 +1,131 @@
>>>>> +/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
>>>>> +/*
>>>>> + * Copyright (c) 2021 Amlogic, Inc. All rights reserved.
>>>>> + * Author: Yu Tu <yu.tu at amlogic.com>
>>>>> + */
>>>>> +
>>>>> +#ifndef _DT_BINDINGS_CLOCK_AMLOGIC_S4_PERIPHERALS_CLKC_H
>>>>> +#define _DT_BINDINGS_CLOCK_AMLOGIC_S4_PERIPHERALS_CLKC_H
>>>>> +
>>>>> +/*
>>>>> + * CLKID index values
>>>>> + */
>>>>> +
>>>>> +#define CLKID_RTC_CLK                        4
>>>>
>>>> I believe that the CLK suffix is unnecessary since it is already clear
>>>> that the object in question is a clock. Additionally, it is redundant
>>>> to use the GATE suffix.
>>>
>>> No. These prefixes and suffixes are very friendly to the people who 
>>> write
>>> and read the code.
>>>
>>
>> Jerome has already pointed this out in another review for the
>> A1 clock driver, there are redundant suffixes:
>>
>> https://lore.kernel.org/linux-amlogic/1j359y82fn.fsf@starbuckisacylon.baylibre.com/
>>
>>>>
>>>>> +#define CLKID_SYS_CLK_B_GATE         7
>>>>> +#define CLKID_SYS_CLK_A_GATE         10
>>>>> +#define CLKID_SYS_CLK                        11
>>>>> +#define CLKID_CECA_32K_CLKOUT                16
>>>>> +#define CLKID_CECB_32K_CLKOUT                21
>>>>> +#define CLKID_SC_CLK_GATE            24
>>>>> +#define CLKID_12_24M_CLK_SEL         27
>>>>> +#define CLKID_VID_PLL                        30
>>>>> +#define CLKID_VCLK                   37
>>>>> +#define CLKID_VCLK2                  38
>>>>> +#define CLKID_VCLK_DIV1                      39
>>>>> +#define CLKID_VCLK2_DIV1             44
>>>>> +#define CLKID_VCLK_DIV2                      49
>>>>> +#define CLKID_VCLK_DIV4                      50
>>>>> +#define CLKID_VCLK_DIV6                      51
>>>>> +#define CLKID_VCLK_DIV12             52
>>>>> +#define CLKID_VCLK2_DIV2             53
>>>>> +#define CLKID_VCLK2_DIV4             54
>>>>> +#define CLKID_VCLK2_DIV6             55
>>>>> +#define CLKID_VCLK2_DIV12            56
>>>>> +#define CLKID_CTS_ENCI                       61
>>>>> +#define CLKID_CTS_ENCP                       62
>>>>> +#define CLKID_CTS_VDAC                       63
>>>>> +#define CLKID_HDMI                   67
>>>>> +#define CLKID_TS_CLK_GATE            69
>>>>> +#define CLKID_MALI_0                 72
>>>>> +#define CLKID_MALI_1                 75
>>>>> +#define CLKID_MALI                   76
>>>>> +#define CLKID_VDEC_P0                        79
>>>>> +#define CLKID_VDEC_P1                        82
>>>>> +#define CLKID_VDEC_SEL                       83
>>>>> +#define CLKID_HEVCF_P0                       86
>>>>> +#define CLKID_HEVCF_P1                       89
>>>>> +#define CLKID_HEVCF_SEL                      90
>>>>> +#define CLKID_VPU_0                  93
>>>>> +#define CLKID_VPU_1                  96
>>>>> +#define CLKID_VPU                    97
>>>>> +#define CLKID_VPU_CLKB_TMP           100
>>>>> +#define CLKID_VPU_CLKB                       102
>>>>> +#define CLKID_VPU_CLKC_P0            105
>>>>> +#define CLKID_VPU_CLKC_P1            108
>>>>> +#define CLKID_VPU_CLKC_SEL           109
>>>>> +#define CLKID_VAPB_0                 112
>>>>> +#define CLKID_VAPB_1                 115
>>>>> +#define CLKID_VAPB                   116
>>>>> +#define CLKID_GE2D                   117
>>>>> +#define CLKID_VDIN_MEAS_GATE         120
>>>>> +#define CLKID_SD_EMMC_C_CLK          123
>>>>> +#define CLKID_SD_EMMC_A_CLK          126
>>>>> +#define CLKID_SD_EMMC_B_CLK          129
>>>>> +#define CLKID_SPICC0_GATE            132
>>>>> +#define CLKID_PWM_A_GATE             135
>>>>> +#define CLKID_PWM_B_GATE             138
>>>>> +#define CLKID_PWM_C_GATE             141
>>>>> +#define CLKID_PWM_D_GATE             144
>>>>> +#define CLKID_PWM_E_GATE             147
>>>>> +#define CLKID_PWM_F_GATE             150
>>>>> +#define CLKID_PWM_G_GATE             153
>>>>> +#define CLKID_PWM_H_GATE             156
>>>>> +#define CLKID_PWM_I_GATE             159
>>>>> +#define CLKID_PWM_J_GATE             162
>>>>> +#define CLKID_SARADC_GATE            165
>>>>> +#define CLKID_GEN_GATE                       168
>>>>> +#define CLKID_DDR                    169
>>>>> +#define CLKID_DOS                    170
>>>>> +#define CLKID_ETHPHY                 171
>>>>> +#define CLKID_MALI_GATE                      172
>>>>> +#define CLKID_AOCPU                  173
>>>>> +#define CLKID_AUCPU                  174
>>>>> +#define CLKID_CEC                    175
>>>>> +#define CLKID_SD_EMMC_A                      176
>>>>> +#define CLKID_SD_EMMC_B                      177
>>>>> +#define CLKID_NAND                   178
>>>>> +#define CLKID_SMARTCARD                      179
>>>>> +#define CLKID_ACODEC                 180
>>>>> +#define CLKID_SPIFC                  181
>>>>> +#define CLKID_MSR_CLK                        182
>>>>> +#define CLKID_IR_CTRL                        183
>>>>> +#define CLKID_AUDIO                  184
>>>>> +#define CLKID_ETH                    185
>>>>> +#define CLKID_UART_A                 186
>>>>> +#define CLKID_UART_B                 187
>>>>> +#define CLKID_UART_C                 188
>>>>> +#define CLKID_UART_D                 189
>>>>> +#define CLKID_UART_E                 190
>>>>> +#define CLKID_AIFIFO                 191
>>>>> +#define CLKID_TS_DDR                 192
>>>>> +#define CLKID_TS_PLL                 193
>>>>> +#define CLKID_G2D                    194
>>>>> +#define CLKID_SPICC0                 195
>>>>> +#define CLKID_SPICC1                 196
>>>>> +#define CLKID_USB                    197
>>>>> +#define CLKID_I2C_M_A                        198
>>>>> +#define CLKID_I2C_M_B                        199
>>>>> +#define CLKID_I2C_M_C                        200
>>>>> +#define CLKID_I2C_M_D                        201
>>>>> +#define CLKID_I2C_M_E                        202
>>>>> +#define CLKID_HDMITX_APB             203
>>>>> +#define CLKID_I2C_S_A                        204
>>>>> +#define CLKID_USB1_TO_DDR            205
>>>>> +#define CLKID_HDCP22                 206
>>>>> +#define CLKID_MMC_APB                        207
>>>>> +#define CLKID_RSA                    208
>>>>> +#define CLKID_CPU_DEBUG                      209
>>>>> +#define CLKID_VPU_INTR                       210
>>>>> +#define CLKID_DEMOD                  211
>>>>> +#define CLKID_SAR_ADC                        212
>>>>> +#define CLKID_GIC                    213
>>>>> +#define CLKID_PWM_AB                 214
>>>>> +#define CLKID_PWM_CD                 215
>>>>> +#define CLKID_PWM_EF                 216
>>>>> +#define CLKID_PWM_GH                 217
>>>>> +#define CLKID_PWM_IJ                 218
>>>>> +#define CLKID_HDCP22_ESMCLK_GATE     221
>>>>> +#define CLKID_HDCP22_SKPCLK_GATE     224
>>>>> +
>>>>> +#endif /* _DT_BINDINGS_CLOCK_AMLOGIC_S4_PERIPHERALS_CLKC_H */
>>>>> -- 
>>>>> 2.33.1
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> linux-amlogic mailing list
>>>>> linux-amlogic at lists.infradead.org
>>>>> http://lists.infradead.org/mailman/listinfo/linux-amlogic
>>>>
>>>> -- 
>>>> Thank you,
>>>> Dmitry
>>
> 



More information about the linux-amlogic mailing list