Message ID | 20210914155607.14122-5-semen.protsenko@linaro.org |
---|---|
State | New |
Headers | show |
Series | clk: samsung: Introduce Exynos850 SoC clock driver | expand |
On 14/09/2021 17:56, Sam Protsenko wrote: > Clock controller driver is designed to have separate instances for each > particular CMU. So clock IDs in this bindings header also start from 1 > for each CMU. > > Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> > --- > include/dt-bindings/clock/exynos850.h | 72 +++++++++++++++++++++++++++ > 1 file changed, 72 insertions(+) > create mode 100644 include/dt-bindings/clock/exynos850.h > Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> Best regards, Krzysztof
Hi, You don't add clock ids for the all defined clocks in clk-exynos850.c. I recommend that add all clock ids for the defined clocks if possible. If you want to change the parent clock of mux or change the clock rate of div rate for some clocks, you have to touch the files as following: - include/dt-bindings/clock/exynos850.h - drivers/clk/samsung/clk-exynos850.c - exynos850 dt files If you define the clock ids for all clocks added to this patchset, you can change the parent or rate by just editing the dt files. But, I have no strongly objection about just keeping this patch. On 21. 9. 15. 오전 12:56, Sam Protsenko wrote: > Clock controller driver is designed to have separate instances for each > particular CMU. So clock IDs in this bindings header also start from 1 > for each CMU. > > Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> > --- > include/dt-bindings/clock/exynos850.h | 72 +++++++++++++++++++++++++++ > 1 file changed, 72 insertions(+) > create mode 100644 include/dt-bindings/clock/exynos850.h > > diff --git a/include/dt-bindings/clock/exynos850.h b/include/dt-bindings/clock/exynos850.h > new file mode 100644 > index 000000000000..2f0a7f619627 > --- /dev/null > +++ b/include/dt-bindings/clock/exynos850.h > @@ -0,0 +1,72 @@ > +/* SPDX-License-Identifier: GPL-2.0-only */ > +/* > + * Copyright (C) 2021 Linaro Ltd. > + * Author: Sam Protsenko <semen.protsenko@linaro.org> > + * > + * Device Tree binding constants for Exynos850 clock controller. > + */ > + > +#ifndef _DT_BINDINGS_CLOCK_EXYNOS_850_H > +#define _DT_BINDINGS_CLOCK_EXYNOS_850_H > + > +/* CMU_TOP */ > +#define DOUT_HSI_BUS 1 > +#define DOUT_HSI_MMC_CARD 2 > +#define DOUT_HSI_USB20DRD 3 > +#define DOUT_PERI_BUS 4 > +#define DOUT_PERI_UART 5 > +#define DOUT_PERI_IP 6 > +#define DOUT_CORE_BUS 7 > +#define DOUT_CORE_CCI 8 > +#define DOUT_CORE_MMC_EMBD 9 > +#define DOUT_CORE_SSS 10 > +#define TOP_NR_CLK 11 > + > +/* CMU_HSI */ > +#define GOUT_USB_RTC_CLK 1 > +#define GOUT_USB_REF_CLK 2 > +#define GOUT_USB_PHY_REF_CLK 3 > +#define GOUT_USB_PHY_ACLK 4 > +#define GOUT_USB_BUS_EARLY_CLK 5 > +#define GOUT_GPIO_HSI_PCLK 6 > +#define GOUT_MMC_CARD_ACLK 7 > +#define GOUT_MMC_CARD_SDCLKIN 8 > +#define GOUT_SYSREG_HSI_PCLK 9 > +#define HSI_NR_CLK 10 > + > +/* CMU_PERI */ > +#define GOUT_GPIO_PERI_PCLK 1 > +#define GOUT_HSI2C0_IPCLK 2 > +#define GOUT_HSI2C0_PCLK 3 > +#define GOUT_HSI2C1_IPCLK 4 > +#define GOUT_HSI2C1_PCLK 5 > +#define GOUT_HSI2C2_IPCLK 6 > +#define GOUT_HSI2C2_PCLK 7 > +#define GOUT_I2C0_PCLK 8 > +#define GOUT_I2C1_PCLK 9 > +#define GOUT_I2C2_PCLK 10 > +#define GOUT_I2C3_PCLK 11 > +#define GOUT_I2C4_PCLK 12 > +#define GOUT_I2C5_PCLK 13 > +#define GOUT_I2C6_PCLK 14 > +#define GOUT_MCT_PCLK 15 > +#define GOUT_PWM_MOTOR_PCLK 16 > +#define GOUT_SPI0_IPCLK 17 > +#define GOUT_SPI0_PCLK 18 > +#define GOUT_SYSREG_PERI_PCLK 19 > +#define GOUT_UART_IPCLK 20 > +#define GOUT_UART_PCLK 21 > +#define GOUT_WDT0_PCLK 22 > +#define GOUT_WDT1_PCLK 23 > +#define PERI_NR_CLK 24 > + > +/* CMU_CORE */ > +#define GOUT_CCI_ACLK 1 > +#define GOUT_GIC_CLK 2 > +#define GOUT_MMC_EMBD_ACLK 3 > +#define GOUT_MMC_EMBD_SDCLKIN 4 > +#define GOUT_SSS_ACLK 5 > +#define GOUT_SSS_PCLK 6 > +#define CORE_NR_CLK 7 > + > +#endif /* _DT_BINDINGS_CLOCK_EXYNOS_850_H */ >
On 05/10/2021 12:28, Sam Protsenko wrote: > On Wed, 15 Sept 2021 at 19:37, Chanwoo Choi <cwchoi00@gmail.com> wrote: >> >> Hi, >> >> You don't add clock ids for the all defined clocks in clk-exynos850.c. >> I recommend that add all clock ids for the defined clocks if possible. >> >> If you want to change the parent clock of mux or change the clock rate >> of div rate for some clocks, you have to touch the files as following: >> - include/dt-bindings/clock/exynos850.h >> - drivers/clk/samsung/clk-exynos850.c >> - exynos850 dt files >> >> If you define the clock ids for all clocks added to this patchset, >> you can change the parent or rate by just editing the dt files. >> > > Hi Chanwoo, > > I see your point. But I have intentionally omitted some clock ids, > which can't be / shouldn't be used by consumers in device tree. > Actually I took that idea from clk-exynos7.c. > > Krzysztof, Sylwester: can you please advice if all clock ids should be > defined, or only those that are going to be used in dts clk consumers? > I don't mind reworking the patch, just want to be sure which design > approach we want to follow. > I would advise to define all clock IDs, unless the clock really, really should not be used. Why do you think several clocks should not be used? Have in mind it is not only about consumers but also clock reparenting and assigning rates. Best regards, Krzysztof
On Wed, 6 Oct 2021 at 13:49, Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> wrote: > > On 05/10/2021 12:28, Sam Protsenko wrote: > > On Wed, 15 Sept 2021 at 19:37, Chanwoo Choi <cwchoi00@gmail.com> wrote: > >> > >> Hi, > >> > >> You don't add clock ids for the all defined clocks in clk-exynos850.c. > >> I recommend that add all clock ids for the defined clocks if possible. > >> > >> If you want to change the parent clock of mux or change the clock rate > >> of div rate for some clocks, you have to touch the files as following: > >> - include/dt-bindings/clock/exynos850.h > >> - drivers/clk/samsung/clk-exynos850.c > >> - exynos850 dt files > >> > >> If you define the clock ids for all clocks added to this patchset, > >> you can change the parent or rate by just editing the dt files. > >> > > > > Hi Chanwoo, > > > > I see your point. But I have intentionally omitted some clock ids, > > which can't be / shouldn't be used by consumers in device tree. > > Actually I took that idea from clk-exynos7.c. > > > > Krzysztof, Sylwester: can you please advice if all clock ids should be > > defined, or only those that are going to be used in dts clk consumers? > > I don't mind reworking the patch, just want to be sure which design > > approach we want to follow. > > > > I would advise to define all clock IDs, unless the clock really, really > should not be used. Why do you think several clocks should not be used? > Have in mind it is not only about consumers but also clock reparenting > and assigning rates. > Thanks! Will be done in v2. > > Best regards, > Krzysztof
diff --git a/include/dt-bindings/clock/exynos850.h b/include/dt-bindings/clock/exynos850.h new file mode 100644 index 000000000000..2f0a7f619627 --- /dev/null +++ b/include/dt-bindings/clock/exynos850.h @@ -0,0 +1,72 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (C) 2021 Linaro Ltd. + * Author: Sam Protsenko <semen.protsenko@linaro.org> + * + * Device Tree binding constants for Exynos850 clock controller. + */ + +#ifndef _DT_BINDINGS_CLOCK_EXYNOS_850_H +#define _DT_BINDINGS_CLOCK_EXYNOS_850_H + +/* CMU_TOP */ +#define DOUT_HSI_BUS 1 +#define DOUT_HSI_MMC_CARD 2 +#define DOUT_HSI_USB20DRD 3 +#define DOUT_PERI_BUS 4 +#define DOUT_PERI_UART 5 +#define DOUT_PERI_IP 6 +#define DOUT_CORE_BUS 7 +#define DOUT_CORE_CCI 8 +#define DOUT_CORE_MMC_EMBD 9 +#define DOUT_CORE_SSS 10 +#define TOP_NR_CLK 11 + +/* CMU_HSI */ +#define GOUT_USB_RTC_CLK 1 +#define GOUT_USB_REF_CLK 2 +#define GOUT_USB_PHY_REF_CLK 3 +#define GOUT_USB_PHY_ACLK 4 +#define GOUT_USB_BUS_EARLY_CLK 5 +#define GOUT_GPIO_HSI_PCLK 6 +#define GOUT_MMC_CARD_ACLK 7 +#define GOUT_MMC_CARD_SDCLKIN 8 +#define GOUT_SYSREG_HSI_PCLK 9 +#define HSI_NR_CLK 10 + +/* CMU_PERI */ +#define GOUT_GPIO_PERI_PCLK 1 +#define GOUT_HSI2C0_IPCLK 2 +#define GOUT_HSI2C0_PCLK 3 +#define GOUT_HSI2C1_IPCLK 4 +#define GOUT_HSI2C1_PCLK 5 +#define GOUT_HSI2C2_IPCLK 6 +#define GOUT_HSI2C2_PCLK 7 +#define GOUT_I2C0_PCLK 8 +#define GOUT_I2C1_PCLK 9 +#define GOUT_I2C2_PCLK 10 +#define GOUT_I2C3_PCLK 11 +#define GOUT_I2C4_PCLK 12 +#define GOUT_I2C5_PCLK 13 +#define GOUT_I2C6_PCLK 14 +#define GOUT_MCT_PCLK 15 +#define GOUT_PWM_MOTOR_PCLK 16 +#define GOUT_SPI0_IPCLK 17 +#define GOUT_SPI0_PCLK 18 +#define GOUT_SYSREG_PERI_PCLK 19 +#define GOUT_UART_IPCLK 20 +#define GOUT_UART_PCLK 21 +#define GOUT_WDT0_PCLK 22 +#define GOUT_WDT1_PCLK 23 +#define PERI_NR_CLK 24 + +/* CMU_CORE */ +#define GOUT_CCI_ACLK 1 +#define GOUT_GIC_CLK 2 +#define GOUT_MMC_EMBD_ACLK 3 +#define GOUT_MMC_EMBD_SDCLKIN 4 +#define GOUT_SSS_ACLK 5 +#define GOUT_SSS_PCLK 6 +#define CORE_NR_CLK 7 + +#endif /* _DT_BINDINGS_CLOCK_EXYNOS_850_H */
Clock controller driver is designed to have separate instances for each particular CMU. So clock IDs in this bindings header also start from 1 for each CMU. Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> --- include/dt-bindings/clock/exynos850.h | 72 +++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 include/dt-bindings/clock/exynos850.h -- 2.30.2