Message ID | 20220113115745.45826-4-liang.yang@amlogic.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | clk: meson: add a sub EMMC clock controller support | expand |
Quoting Liang Yang (2022-01-13 03:57:44) > Document the MMC sub clock controller driver, the potential consumer > of this driver is MMC or NAND. Also add four clock bindings IDs which > provided by this driver. > > Signed-off-by: Liang Yang <liang.yang@amlogic.com> > --- > .../bindings/clock/amlogic,mmc-clkc.yaml | 64 +++++++++++++++++++ > include/dt-bindings/clock/amlogic,mmc-clkc.h | 14 ++++ > 2 files changed, 78 insertions(+) > create mode 100644 Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml > create mode 100644 include/dt-bindings/clock/amlogic,mmc-clkc.h > > diff --git a/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml b/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml > new file mode 100644 > index 000000000000..a274c3d5fc2e > --- /dev/null > +++ b/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml > @@ -0,0 +1,64 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/clock/amlogic,mmc-clkc.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Amlogic MMC Sub Clock Controller Driver Device Tree Bindings > + > +maintainers: > + - jianxin.pan@amlogic.com > + - liang.yang@amlogic.com > + > +properties: > + compatible: > + enum: > + - "amlogic,axg-mmc-clkc", "syscon" Why is it a syscon?
Hi Stephen, Thanks for your quick response. On 2022/1/14 5:29, Stephen Boyd wrote: > [ EXTERNAL EMAIL ] > > Quoting Liang Yang (2022-01-13 03:57:44) >> Document the MMC sub clock controller driver, the potential consumer >> of this driver is MMC or NAND. Also add four clock bindings IDs which >> provided by this driver. >> >> Signed-off-by: Liang Yang <liang.yang@amlogic.com> >> --- >> .../bindings/clock/amlogic,mmc-clkc.yaml | 64 +++++++++++++++++++ >> include/dt-bindings/clock/amlogic,mmc-clkc.h | 14 ++++ >> 2 files changed, 78 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml >> create mode 100644 include/dt-bindings/clock/amlogic,mmc-clkc.h >> >> diff --git a/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml b/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml >> new file mode 100644 >> index 000000000000..a274c3d5fc2e >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml >> @@ -0,0 +1,64 @@ >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/clock/amlogic,mmc-clkc.yaml# >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: Amlogic MMC Sub Clock Controller Driver Device Tree Bindings >> + >> +maintainers: >> + - jianxin.pan@amlogic.com >> + - liang.yang@amlogic.com >> + >> +properties: >> + compatible: >> + enum: >> + - "amlogic,axg-mmc-clkc", "syscon" > > Why is it a syscon? The register documented by reg is shared with SD/eMMC controller port C, and it need to be ops on NFC driver. > > .
Quoting Liang Yang (2022-01-13 19:06:07) > Hi Stephen, > > Thanks for your quick response. > > On 2022/1/14 5:29, Stephen Boyd wrote: > > [ EXTERNAL EMAIL ] > > > > Quoting Liang Yang (2022-01-13 03:57:44) > >> Document the MMC sub clock controller driver, the potential consumer > >> of this driver is MMC or NAND. Also add four clock bindings IDs which > >> provided by this driver. > >> > >> Signed-off-by: Liang Yang <liang.yang@amlogic.com> > >> --- > >> .../bindings/clock/amlogic,mmc-clkc.yaml | 64 +++++++++++++++++++ > >> include/dt-bindings/clock/amlogic,mmc-clkc.h | 14 ++++ > >> 2 files changed, 78 insertions(+) > >> create mode 100644 Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml > >> create mode 100644 include/dt-bindings/clock/amlogic,mmc-clkc.h > >> > >> diff --git a/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml b/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml > >> new file mode 100644 > >> index 000000000000..a274c3d5fc2e > >> --- /dev/null > >> +++ b/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml > >> @@ -0,0 +1,64 @@ > >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > >> +%YAML 1.2 > >> +--- > >> +$id: http://devicetree.org/schemas/clock/amlogic,mmc-clkc.yaml# > >> +$schema: http://devicetree.org/meta-schemas/core.yaml# > >> + > >> +title: Amlogic MMC Sub Clock Controller Driver Device Tree Bindings > >> + > >> +maintainers: > >> + - jianxin.pan@amlogic.com > >> + - liang.yang@amlogic.com > >> + > >> +properties: > >> + compatible: > >> + enum: > >> + - "amlogic,axg-mmc-clkc", "syscon" > > > > Why is it a syscon? > > The register documented by reg is shared with SD/eMMC controller port C, > and it need to be ops on NFC driver. > Is this the case where the clk is inside the SD/eMMC controller? Can the mmc driver register the clk controller from there and pass it an iomem pointer to poke clks?
Hi Liang, On Fri, Jan 14, 2022 at 4:06 AM Liang Yang <liang.yang@amlogic.com> wrote: [...] > >> +properties: > >> + compatible: > >> + enum: > >> + - "amlogic,axg-mmc-clkc", "syscon" > > > > Why is it a syscon? > > The register documented by reg is shared with SD/eMMC controller port C, > and it need to be ops on NFC driver. Can you please share an example how the .dts would look like in the end for two example cases: 1) using the sd_emmc_c MMC interface 2) not using the MMC interface of sd_emmc_c but only using it's clocks for the NFC Initially I wanted to suggest the usage of a sub-node with compatible = "mmc-slot" (see Documentation/devicetree/bindings/mmc/amlogic,meson-mx-sdio.txt for an example) to decide whether the MMC controller is registered or whether just the clock controller is registered. However, the mmc-slot compatible string is not documented in Documentation/devicetree/bindings/mmc/mmc-controller.yaml currently. Maybe the MMC maintainers have any suggestions if other IPs have similar requirements (for IPs with shared parts). Best regards, Martin
On 2022/1/15 6:59, Stephen Boyd wrote: > [ EXTERNAL EMAIL ] > > Quoting Liang Yang (2022-01-13 19:06:07) >> Hi Stephen, >> >> Thanks for your quick response. >> >> On 2022/1/14 5:29, Stephen Boyd wrote: >>> [ EXTERNAL EMAIL ] >>> >>> Quoting Liang Yang (2022-01-13 03:57:44) >>>> Document the MMC sub clock controller driver, the potential consumer >>>> of this driver is MMC or NAND. Also add four clock bindings IDs which >>>> provided by this driver. >>>> >>>> Signed-off-by: Liang Yang <liang.yang@amlogic.com> >>>> --- >>>> .../bindings/clock/amlogic,mmc-clkc.yaml | 64 +++++++++++++++++++ >>>> include/dt-bindings/clock/amlogic,mmc-clkc.h | 14 ++++ >>>> 2 files changed, 78 insertions(+) >>>> create mode 100644 Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml >>>> create mode 100644 include/dt-bindings/clock/amlogic,mmc-clkc.h >>>> >>>> diff --git a/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml b/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml >>>> new file mode 100644 >>>> index 000000000000..a274c3d5fc2e >>>> --- /dev/null >>>> +++ b/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml >>>> @@ -0,0 +1,64 @@ >>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >>>> +%YAML 1.2 >>>> +--- >>>> +$id: http://devicetree.org/schemas/clock/amlogic,mmc-clkc.yaml# >>>> +$schema: http://devicetree.org/meta-schemas/core.yaml# >>>> + >>>> +title: Amlogic MMC Sub Clock Controller Driver Device Tree Bindings >>>> + >>>> +maintainers: >>>> + - jianxin.pan@amlogic.com >>>> + - liang.yang@amlogic.com >>>> + >>>> +properties: >>>> + compatible: >>>> + enum: >>>> + - "amlogic,axg-mmc-clkc", "syscon" >>> >>> Why is it a syscon? >> >> The register documented by reg is shared with SD/eMMC controller port C, >> and it need to be ops on NFC driver. >> > > Is this the case where the clk is inside the SD/eMMC controller? Can the yes. > mmc driver register the clk controller from there and pass it an iomem > pointer to poke clks? we can't do that since EMMC and NAND is mutually exclusivem. both of them share the same data pins. > > .
Hi Martin, On 2022/1/15 8:09, Martin Blumenstingl wrote: > [ EXTERNAL EMAIL ] > > Hi Liang, > > On Fri, Jan 14, 2022 at 4:06 AM Liang Yang <liang.yang@amlogic.com> wrote: > [...] >>>> +properties: >>>> + compatible: >>>> + enum: >>>> + - "amlogic,axg-mmc-clkc", "syscon" >>> >>> Why is it a syscon? >> >> The register documented by reg is shared with SD/eMMC controller port C, >> and it need to be ops on NFC driver. > Can you please share an example how the .dts would look like in the > end for two example cases: > 1) using the sd_emmc_c MMC interface > 2) not using the MMC interface of sd_emmc_c but only using it's clocks > for the NFC I think both EMMC(although it is not implemented by 'axg-mmc-clkc' yet) and NAND clock have the same way in dts: ...... clocks = <&clkc CLKID_SD_EMMC_C>, <&sd_emmc_c_clkc CLKID_MMC_DIV>, <&sd_emmc_c_clkc CLKID_MMC_PHASE_RX>, <&sd_emmc_c_clkc CLKID_MMC_PHASE_TX>; clock-names = "core", "device", "rx", "tx"; amlogic,mmc-syscon = <&sd_emmc_c_clkc>; ...... > > Initially I wanted to suggest the usage of a sub-node with compatible > = "mmc-slot" (see > Documentation/devicetree/bindings/mmc/amlogic,meson-mx-sdio.txt for an > example) to decide whether the MMC controller is registered or whether > just the clock controller is registered. > However, the mmc-slot compatible string is not documented in > Documentation/devicetree/bindings/mmc/mmc-controller.yaml currently. > Maybe the MMC maintainers have any suggestions if other IPs have > similar requirements (for IPs with shared parts). > > > Best regards, > Martin > > .
diff --git a/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml b/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml new file mode 100644 index 000000000000..a274c3d5fc2e --- /dev/null +++ b/Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml @@ -0,0 +1,64 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/amlogic,mmc-clkc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Amlogic MMC Sub Clock Controller Driver Device Tree Bindings + +maintainers: + - jianxin.pan@amlogic.com + - liang.yang@amlogic.com + +properties: + compatible: + enum: + - "amlogic,axg-mmc-clkc", "syscon" + - "amlogic,gx-mmc-clkc", "syscon" + + reg: + maxItems: 1 + + clocks: + maxItems: 2 + + clock-names: + items: + - const: "clkin0", "clkin1" + + "#clock-cells": + const: 1 + +required: + - compatible + - reg + - clocks + - clock-names + - "#clock-cells" + +additionalProperties: false + +examples: + - | + sd_mmc_c_clkc: clock-controller@7000 { + compatible = "amlogic,axg-mmc-clkc", "syscon"; + reg = <0x0 0x7000 0x0 0x4>; + #clock-cells = <1>; + + clock-names = "clkin0", "clkin1"; + clocks = <&clkc CLKID_SD_MMC_C_CLK0>, + <&clkc CLKID_FCLK_DIV2>; + }; + + - | + sd_emmc_b_clkc: clock-controller@5000 { + compatible = "amlogic,axg-mmc-clkc", "syscon"; + reg = <0x0 0x5000 0x0 0x4>; + + #clock-cells = <1>; + clock-names = "clkin0", "clkin1"; + clocks = <&clkc CLKID_SD_EMMC_B_CLK0>, + <&clkc CLKID_FCLK_DIV2>; + }; + +... \ No newline at end of file diff --git a/include/dt-bindings/clock/amlogic,mmc-clkc.h b/include/dt-bindings/clock/amlogic,mmc-clkc.h new file mode 100644 index 000000000000..71301517b183 --- /dev/null +++ b/include/dt-bindings/clock/amlogic,mmc-clkc.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ +/* + * Copyright (c) 2019 Amlogic, Inc. All rights reserved. + */ + +#ifndef __MMC_CLKC_H +#define __MMC_CLKC_H + +#define CLKID_MMC_DIV 0 +#define CLKID_MMC_PHASE_CORE 1 +#define CLKID_MMC_PHASE_TX 2 +#define CLKID_MMC_PHASE_RX 3 + +#endif
Document the MMC sub clock controller driver, the potential consumer of this driver is MMC or NAND. Also add four clock bindings IDs which provided by this driver. Signed-off-by: Liang Yang <liang.yang@amlogic.com> --- .../bindings/clock/amlogic,mmc-clkc.yaml | 64 +++++++++++++++++++ include/dt-bindings/clock/amlogic,mmc-clkc.h | 14 ++++ 2 files changed, 78 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml create mode 100644 include/dt-bindings/clock/amlogic,mmc-clkc.h