diff mbox

[v4,01/13] clk: samsung: exynos5433: Add binding document for Exynos5433 clock domains

Message ID 1422882074-19758-2-git-send-email-cw00.choi@samsung.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Chanwoo Choi Feb. 2, 2015, 1:01 p.m. UTC
This patch adds devicetree binding document for Exynos5433 SoC system clock
controller.

Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
Cc: Tomasz Figa <tomasz.figa@gmail.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Inki Dae <inki.dae@samsung.com>
---
 .../devicetree/bindings/clock/exynos5433-clock.txt | 258 +++++++++++++++++++++
 1 file changed, 258 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/clock/exynos5433-clock.txt

Comments

Hi Chanwoo,

On 02/02/15 14:01, Chanwoo Choi wrote:
> This patch adds devicetree binding document for Exynos5433 SoC system clock
> controller.
> 
> Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
> Cc: Tomasz Figa <tomasz.figa@gmail.com>
> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
> Acked-by: Inki Dae <inki.dae@samsung.com>
> ---
>  .../devicetree/bindings/clock/exynos5433-clock.txt | 258 +++++++++++++++++++++
>  1 file changed, 258 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/clock/exynos5433-clock.txt
> 
> diff --git a/Documentation/devicetree/bindings/clock/exynos5433-clock.txt b/Documentation/devicetree/bindings/clock/exynos5433-clock.txt
> new file mode 100644
> index 0000000..2d7a723
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/exynos5433-clock.txt
> @@ -0,0 +1,258 @@
> +* Samsung Exynos5433 CMU (Clock Management Units)
> +
> +The Exynos5433 clock controller generates and supplies clock to various
> +controllers within the Exynos5433 SoC.
> +
> +Required Properties:
> +
> +- compatible: should be one of the following.
> +  - "samsung,exynos5433-cmu-top"   - clock controller compatible for CMU_TOP
> +    which generates clocks for IMEM/FSYS/G3D/GSCL/HEVC/MSCL/G2D/MFC/PERIC/PERIS
> +    domains and bus clocks.
> +  - "samsung,exynos5433-cmu-cpif"  - clock controller compatible for CMU_CPIF
> +    which generates clocks for LLI (Low Latency Interface) IP.
> +  - "samsung,exynos5433-cmu-mif"   - clock controller compatible for CMU_MIF
> +    which generates clocks for DRAM Memory Controller domain.
> +  - "samsung,exynos5433-cmu-peric" - clock controller compatible for CMU_PERIC
> +    which generates clocks for UART/I2C/SPI/I2S/PCM/SPDIF/PWM/SLIMBUS IPs.
> +  - "samsung,exynos5433-cmu-peris" - clock controller compatible for CMU_PERIS
> +    which generates clocks for PMU/TMU/MCT/WDT/RTC/SECKEY/TZPC IPs.
> +  - "samsung,exynos5433-cmu-fsys"  - clock controller compatible for CMU_FSYS
> +    which generates clocks for USB/UFS/SDMMC/TSI/PDMA IPs.
> +  - "samsung,exynos5433-cmu-g2d"   - clock controller compatible for CMU_G2D
> +    which generates clocks for G2D/MDMA IPs.
> +  - "samsung,exynos5433-cmu-disp"  - clock controller compatible for CMU_DISP
> +    which generates clocks for Display (DECON/HDMI/DSIM/MIXER) IPs.
> +  - "samsung,exynos5433-cmu-aud"   - clock controller compatible for CMU_AUD
> +    which generates clocks for Cortex-A5/BUS/AUDIO clocks.
> +  - "samsung,exynos5433-cmu-bus0", "samsung,exynos5433-cmu-bus1"
> +    and "samsung,exynos5433-cmu-bus2" - clock controller compatible for CMU_BUS
> +    which generates global data buses clock and global peripheral buses clock.
> +  - "samsung,exynos5433-cmu-g3d"  - clock controller compatible for CMU_G3D
> +    which generates clocks for 3D Graphics Engine IP.
> +  - "samsung,exynos5433-cmu-gscl"  - clock controller compatible for CMU_GSCL
> +    which generates clocks for GSCALER IPs.
> +
> +- reg: physical base address of the controller and length of memory mapped
> +  region.
> +
> +- #clock-cells: should be 1.

Thanks for addressing my comments! It looks almost good enough, can you
just please also add clocks, clock-names to the list of required properties ?
I guess it's sufficient to mention that these properties should contain
values as listed in the examples below per each CMU.
This also applies to you following series of 9 patches.

> +
> +Each clock is assigned an identifier and client nodes can use this identifier
> +to specify the clock which they consume.
> +
> +All available clocks are defined as preprocessor macros in
> +dt-bindings/clock/exynos5433.h header and can be used in device
> +tree sources.
> +
> +Example 1: Examples of 'oscclk' source clock node are listed below.
> +
> +	xxti: xxti {
> +		compatible = "fixed-clock";
> +		clock-output-names = "oscclk";
> +		#clock-cells = <0>;
> +	};
> +
> +Example 2: Examples of clock controller nodes are listed below.
> +
> +	cmu_top: clock-controller@0x10030000 {
> +		compatible = "samsung,exynos5433-cmu-top";
> +		reg = <0x10030000 0x0c04>;
> +		#clock-cells = <1>;
> +
> +		clock-names = "oscclk",
> +			"sclk_mphy_pll",
> +			"sclk_mfc_pll",
> +			"sclk_bus_pll";
> +		clocks = <&xxti>,
> +		       <&cmu_cpif CLK_SCLK_MPHY_PLL>,
> +		       <&cmu_mif CLK_SCLK_MFC_PLL>,
> +		       <&cmu_mif CLK_SCLK_BUS_PLL>;
> +	};

> +	cmu_gscl: clock-controller@0x13cf0000 {
> +		compatible = "samsung,exynos5433-cmu-gscl";
> +		reg = <0x13cf0000 0x0b10>;
> +		#clock-cells = <1>;
> +
> +		clock-names = "oscclk",
> +			"aclk_gscl_111",
> +			"aclk_gscl_333";
> +		clocks = <&xxti>,
> +			<&cmu_top CLK_ACLK_GSCL_111>,
> +			<&cmu_top CLK_ACLK_GSCL_333>;
> +	};
> +
> +Example 3: UART controller node that consumes the clock generated by the clock
> +	   controller.
> +
> +	serial_0: serial@14C10000 {
> +		compatible = "samsung,exynos5433-uart";
> +		reg = <0x14C10000 0x100>;
> +		interrupts = <0 421 0>;
> +		clocks = <&cmu_peric CLK_PCLK_UART0>,
> +			 <&cmu_peric CLK_SCLK_UART0>;
> +		clock-names = "uart", "clk_uart_baud0";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&uart0_bus>;
> +		status = "disabled";
> +	};
> +
> +Example 4: SPI controller node that consumes the clock generated by the clock
> +	   controller.

This fourth example doesn't look like it adds significant value, I'd say it
can be removed.

> +	spi_0: spi@14d20000 {
> +		compatible = "samsung,exynos7-spi";
> +		reg = <0x14d20000 0x100>;
> +		interrupts = <0 432 0>;
> +		dmas = <&pdma0 9>, <&pdma0 8>;
> +		dma-names = "tx", "rx";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		clocks = <&cmu_peric CLK_PCLK_SPI0>,
> +			 <&cmu_top CLK_SCLK_SPI0_PERIC>;
> +		clock-names = "spi", "spi_busclk0";
> +		samsung,spi-src-clk = <0>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&spi0_bus>;
> +		status = "disabled";
> +	};
> 

Also please don't forget to Cc devicetree@vger.kernel.org next time.

--
Thanks,
Sylwester
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Chanwoo Choi Feb. 2, 2015, 2:08 p.m. UTC | #2
Hi Sylwester,

On 02/02/2015 10:55 PM, Sylwester Nawrocki wrote:
> Hi Chanwoo,
> 
> On 02/02/15 14:01, Chanwoo Choi wrote:
>> This patch adds devicetree binding document for Exynos5433 SoC system clock
>> controller.
>>
>> Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
>> Cc: Tomasz Figa <tomasz.figa@gmail.com>
>> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
>> Acked-by: Inki Dae <inki.dae@samsung.com>
>> ---
>>  .../devicetree/bindings/clock/exynos5433-clock.txt | 258 +++++++++++++++++++++
>>  1 file changed, 258 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/clock/exynos5433-clock.txt
>>
>> diff --git a/Documentation/devicetree/bindings/clock/exynos5433-clock.txt b/Documentation/devicetree/bindings/clock/exynos5433-clock.txt
>> new file mode 100644
>> index 0000000..2d7a723
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/clock/exynos5433-clock.txt
>> @@ -0,0 +1,258 @@
>> +* Samsung Exynos5433 CMU (Clock Management Units)
>> +
>> +The Exynos5433 clock controller generates and supplies clock to various
>> +controllers within the Exynos5433 SoC.
>> +
>> +Required Properties:
>> +
>> +- compatible: should be one of the following.
>> +  - "samsung,exynos5433-cmu-top"   - clock controller compatible for CMU_TOP
>> +    which generates clocks for IMEM/FSYS/G3D/GSCL/HEVC/MSCL/G2D/MFC/PERIC/PERIS
>> +    domains and bus clocks.
>> +  - "samsung,exynos5433-cmu-cpif"  - clock controller compatible for CMU_CPIF
>> +    which generates clocks for LLI (Low Latency Interface) IP.
>> +  - "samsung,exynos5433-cmu-mif"   - clock controller compatible for CMU_MIF
>> +    which generates clocks for DRAM Memory Controller domain.
>> +  - "samsung,exynos5433-cmu-peric" - clock controller compatible for CMU_PERIC
>> +    which generates clocks for UART/I2C/SPI/I2S/PCM/SPDIF/PWM/SLIMBUS IPs.
>> +  - "samsung,exynos5433-cmu-peris" - clock controller compatible for CMU_PERIS
>> +    which generates clocks for PMU/TMU/MCT/WDT/RTC/SECKEY/TZPC IPs.
>> +  - "samsung,exynos5433-cmu-fsys"  - clock controller compatible for CMU_FSYS
>> +    which generates clocks for USB/UFS/SDMMC/TSI/PDMA IPs.
>> +  - "samsung,exynos5433-cmu-g2d"   - clock controller compatible for CMU_G2D
>> +    which generates clocks for G2D/MDMA IPs.
>> +  - "samsung,exynos5433-cmu-disp"  - clock controller compatible for CMU_DISP
>> +    which generates clocks for Display (DECON/HDMI/DSIM/MIXER) IPs.
>> +  - "samsung,exynos5433-cmu-aud"   - clock controller compatible for CMU_AUD
>> +    which generates clocks for Cortex-A5/BUS/AUDIO clocks.
>> +  - "samsung,exynos5433-cmu-bus0", "samsung,exynos5433-cmu-bus1"
>> +    and "samsung,exynos5433-cmu-bus2" - clock controller compatible for CMU_BUS
>> +    which generates global data buses clock and global peripheral buses clock.
>> +  - "samsung,exynos5433-cmu-g3d"  - clock controller compatible for CMU_G3D
>> +    which generates clocks for 3D Graphics Engine IP.
>> +  - "samsung,exynos5433-cmu-gscl"  - clock controller compatible for CMU_GSCL
>> +    which generates clocks for GSCALER IPs.
>> +
>> +- reg: physical base address of the controller and length of memory mapped
>> +  region.
>> +
>> +- #clock-cells: should be 1.
> 
> Thanks for addressing my comments! It looks almost good enough, can you
> just please also add clocks, clock-names to the list of required properties ?
> I guess it's sufficient to mention that these properties should contain
> values as listed in the examples below per each CMU.
> This also applies to you following series of 9 patches.

OK, I'll add more following information:
I'll send only patch1 with following information.

+ - clocks: list of clock identifiers which are fed as the input to
+       the given clock controller. Please refer the next section to
+       find the input clocks for a given controller.
+
+- clock-names: list of names of clocks which are fed as the input
+       to the given clock controller.
+
+       Input clocks for top clock controller:
+               - oscclk
+               - sclk_mphy_pll
+               - sclk_mfc_pll
+               - sclk_bus_pll
+
+       Input clocks for cpif clock controller:
+               - oscclk
+
+       Input clocks for mif clock controller:
+               - oscclk
+               - sclk_mphy_pll
+
+       Input clocks for fsys clock controller:
+               - oscclk
+               - sclk_ufs_mphy
+               - div_aclk_fsys_200
+               - sclk_pcie_100_fsys
+               - sclk_ufsunipro_fsys
+               - sclk_mmc2_fsys
+               - sclk_mmc1_fsys
+               - sclk_mmc0_fsys
+               - sclk_usbhost30_fsys
+               - sclk_usbdrd30_fsys
+
+       Input clocks for g2d clock controller:
+               - oscclk
+               - aclk_g2d_266
+               - aclk_g2d_400
+
+       Input clocks for disp clock controller:
+               - oscclk
+               - sclk_dsim1_disp
+               - sclk_dsim0_disp
+               - sclk_dsd_disp
+               - sclk_decon_tv_eclk_disp
+               - sclk_decon_vclk_disp
+               - sclk_decon_eclk_disp
+               - sclk_decon_tv_vclk_disp
+               - aclk_disp_333
+
+       Input clocks for bus0 clock controller:
+               - aclk_bus0_400
+
+       Input clocks for bus1 clock controller:
+               - aclk_bus1_400
+
+       Input clocks for bus2 clock controller:
+               - oscclk
+               - aclk_bus2_400
+
+       Input clocks for g3d clock controller:
+               - oscclk
+               - aclk_g3d_400
+
+       Input clocks for gscl clock controller:
+               - oscclk
+               - aclk_gscl_111
+               - aclk_gscl_333

> 
>> +
>> +Each clock is assigned an identifier and client nodes can use this identifier
>> +to specify the clock which they consume.
>> +
>> +All available clocks are defined as preprocessor macros in
>> +dt-bindings/clock/exynos5433.h header and can be used in device
>> +tree sources.
>> +
>> +Example 1: Examples of 'oscclk' source clock node are listed below.
>> +
>> +	xxti: xxti {
>> +		compatible = "fixed-clock";
>> +		clock-output-names = "oscclk";
>> +		#clock-cells = <0>;
>> +	};
>> +
>> +Example 2: Examples of clock controller nodes are listed below.
>> +
>> +	cmu_top: clock-controller@0x10030000 {
>> +		compatible = "samsung,exynos5433-cmu-top";
>> +		reg = <0x10030000 0x0c04>;
>> +		#clock-cells = <1>;
>> +
>> +		clock-names = "oscclk",
>> +			"sclk_mphy_pll",
>> +			"sclk_mfc_pll",
>> +			"sclk_bus_pll";
>> +		clocks = <&xxti>,
>> +		       <&cmu_cpif CLK_SCLK_MPHY_PLL>,
>> +		       <&cmu_mif CLK_SCLK_MFC_PLL>,
>> +		       <&cmu_mif CLK_SCLK_BUS_PLL>;
>> +	};
> 
>> +	cmu_gscl: clock-controller@0x13cf0000 {
>> +		compatible = "samsung,exynos5433-cmu-gscl";
>> +		reg = <0x13cf0000 0x0b10>;
>> +		#clock-cells = <1>;
>> +
>> +		clock-names = "oscclk",
>> +			"aclk_gscl_111",
>> +			"aclk_gscl_333";
>> +		clocks = <&xxti>,
>> +			<&cmu_top CLK_ACLK_GSCL_111>,
>> +			<&cmu_top CLK_ACLK_GSCL_333>;
>> +	};
>> +
>> +Example 3: UART controller node that consumes the clock generated by the clock
>> +	   controller.
>> +
>> +	serial_0: serial@14C10000 {
>> +		compatible = "samsung,exynos5433-uart";
>> +		reg = <0x14C10000 0x100>;
>> +		interrupts = <0 421 0>;
>> +		clocks = <&cmu_peric CLK_PCLK_UART0>,
>> +			 <&cmu_peric CLK_SCLK_UART0>;
>> +		clock-names = "uart", "clk_uart_baud0";
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&uart0_bus>;
>> +		status = "disabled";
>> +	};
>> +
>> +Example 4: SPI controller node that consumes the clock generated by the clock
>> +	   controller.
> 
> This fourth example doesn't look like it adds significant value, I'd say it
> can be removed.

OK, I'll merge it.

> 
>> +	spi_0: spi@14d20000 {
>> +		compatible = "samsung,exynos7-spi";
>> +		reg = <0x14d20000 0x100>;
>> +		interrupts = <0 432 0>;
>> +		dmas = <&pdma0 9>, <&pdma0 8>;
>> +		dma-names = "tx", "rx";
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +		clocks = <&cmu_peric CLK_PCLK_SPI0>,
>> +			 <&cmu_top CLK_SCLK_SPI0_PERIC>;
>> +		clock-names = "spi", "spi_busclk0";
>> +		samsung,spi-src-clk = <0>;
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&spi0_bus>;
>> +		status = "disabled";
>> +	};
>>
> 
> Also please don't forget to Cc devicetree@vger.kernel.org next time.

OK.

Thanks,
Chanwoo Choi

--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
On 02/02/15 15:08, Chanwoo Choi wrote:

> OK, I'll add more following information:
> I'll send only patch1 with following information.
> 
> + - clocks: list of clock identifiers which are fed as the input to
> +       the given clock controller. Please refer the next section to
> +       find the input clocks for a given controller.
> + - clock-names: list of names of clocks which are fed as the input
> +       to the given clock controller.
> +

Perhaps:

+ - clocks: list of the clock controller input clock identifiers,
	from common clock bindings. Please refer the next section
	to find the input clocks for a given controller.

+- clock-names: list of the clock controller input clock names,
	as described in clock-bindings.txt.

?
It's fine to resend just updated first patch from each series.
Chanwoo Choi Feb. 2, 2015, 3:51 p.m. UTC | #4
Hi Sylwester,

On Mon, Feb 2, 2015 at 11:40 PM, Sylwester Nawrocki
<s.nawrocki@samsung.com> wrote:
> On 02/02/15 15:08, Chanwoo Choi wrote:
>
>> OK, I'll add more following information:
>> I'll send only patch1 with following information.
>>
>> + - clocks: list of clock identifiers which are fed as the input to
>> +       the given clock controller. Please refer the next section to
>> +       find the input clocks for a given controller.
>> + - clock-names: list of names of clocks which are fed as the input
>> +       to the given clock controller.
>> +
>
> Perhaps:
>
> + - clocks: list of the clock controller input clock identifiers,
>         from common clock bindings. Please refer the next section
>         to find the input clocks for a given controller.
>
> +- clock-names: list of the clock controller input clock names,
>         as described in clock-bindings.txt.
>
> ?
> It's fine to resend just updated first patch from each series.

OK,
I'll modify the comment of 'clocks' and 'clock-names' and send only first patch.

I have a question. Do you prefer to add the list of input clocks for
each clock domain as following?
Or it is not necessary?

           +       Input clocks for top clock controller:
           +               - oscclk
           +               - sclk_mphy_pll
           +               - sclk_mfc_pll
           +               - sclk_bus_pll

Thanks,
Chanwoo Choi
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Hi Chanwoo,

On 02/02/15 16:51, Chanwoo Choi wrote:
> On Mon, Feb 2, 2015 at 11:40 PM, Sylwester Nawrocki
> <s.nawrocki@samsung.com> wrote:
>> > On 02/02/15 15:08, Chanwoo Choi wrote:
>> >
>>> >> OK, I'll add more following information:
>>> >> I'll send only patch1 with following information.
>>> >>
>>> >> + - clocks: list of clock identifiers which are fed as the input to
>>> >> +       the given clock controller. Please refer the next section to
>>> >> +       find the input clocks for a given controller.
>>> >> + - clock-names: list of names of clocks which are fed as the input
>>> >> +       to the given clock controller.
>>> >> +
>> >
>> > Perhaps:
>> >
>> > + - clocks: list of the clock controller input clock identifiers,
>> >         from common clock bindings. Please refer the next section
>> >         to find the input clocks for a given controller.
>> >
>> > +- clock-names: list of the clock controller input clock names,
>> >         as described in clock-bindings.txt.
>> >
>> > ?
>> > It's fine to resend just updated first patch from each series.
> OK,
> I'll modify the comment of 'clocks' and 'clock-names' and send only first patch.
> 
> I have a question. Do you prefer to add the list of input clocks for
> each clock domain as following?
> Or it is not necessary?
> 
>            +       Input clocks for top clock controller:
>            +               - oscclk
>            +               - sclk_mphy_pll
>            +               - sclk_mfc_pll
>            +               - sclk_bus_pll

We are supposed to document all required input clocks somehow, I would
keep the list in such form. The (example) cmu nodes are also a good
documentation IMHO, they also show clearly which cmu (block) given clock
is sourced from.

--
Thanks,
Sylwester
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Chanwoo Choi Feb. 2, 2015, 4:44 p.m. UTC | #6
Hi Sylwester,

On Tue, Feb 3, 2015 at 1:25 AM, Sylwester Nawrocki
<s.nawrocki@samsung.com> wrote:
> Hi Chanwoo,
>
> On 02/02/15 16:51, Chanwoo Choi wrote:
>> On Mon, Feb 2, 2015 at 11:40 PM, Sylwester Nawrocki
>> <s.nawrocki@samsung.com> wrote:
>>> > On 02/02/15 15:08, Chanwoo Choi wrote:
>>> >
>>>> >> OK, I'll add more following information:
>>>> >> I'll send only patch1 with following information.
>>>> >>
>>>> >> + - clocks: list of clock identifiers which are fed as the input to
>>>> >> +       the given clock controller. Please refer the next section to
>>>> >> +       find the input clocks for a given controller.
>>>> >> + - clock-names: list of names of clocks which are fed as the input
>>>> >> +       to the given clock controller.
>>>> >> +
>>> >
>>> > Perhaps:
>>> >
>>> > + - clocks: list of the clock controller input clock identifiers,
>>> >         from common clock bindings. Please refer the next section
>>> >         to find the input clocks for a given controller.
>>> >
>>> > +- clock-names: list of the clock controller input clock names,
>>> >         as described in clock-bindings.txt.
>>> >
>>> > ?
>>> > It's fine to resend just updated first patch from each series.
>> OK,
>> I'll modify the comment of 'clocks' and 'clock-names' and send only first patch.
>>
>> I have a question. Do you prefer to add the list of input clocks for
>> each clock domain as following?
>> Or it is not necessary?
>>
>>            +       Input clocks for top clock controller:
>>            +               - oscclk
>>            +               - sclk_mphy_pll
>>            +               - sclk_mfc_pll
>>            +               - sclk_bus_pll
>
> We are supposed to document all required input clocks somehow, I would
> keep the list in such form. The (example) cmu nodes are also a good
> documentation IMHO, they also show clearly which cmu (block) given clock
> is sourced from.

I agree that the binding document have to contain all required information.
The binding document of exynos5433-clock will contain all input clocks for
each clock domain. Also, I'll modify the description of 'clocks'/'clock-names'
according to your comment and then I'll re-send only updated first
patch for document.

Thanks,
Chanwoo Choi
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Chanwoo Choi Feb. 2, 2015, 11:54 p.m. UTC | #7
Hi Sylwester,

On 02/03/2015 01:44 AM, Chanwoo Choi wrote:
> Hi Sylwester,
> 
> On Tue, Feb 3, 2015 at 1:25 AM, Sylwester Nawrocki
> <s.nawrocki@samsung.com> wrote:
>> Hi Chanwoo,
>>
>> On 02/02/15 16:51, Chanwoo Choi wrote:
>>> On Mon, Feb 2, 2015 at 11:40 PM, Sylwester Nawrocki
>>> <s.nawrocki@samsung.com> wrote:
>>>>> On 02/02/15 15:08, Chanwoo Choi wrote:
>>>>>
>>>>>>> OK, I'll add more following information:
>>>>>>> I'll send only patch1 with following information.
>>>>>>>
>>>>>>> + - clocks: list of clock identifiers which are fed as the input to
>>>>>>> +       the given clock controller. Please refer the next section to
>>>>>>> +       find the input clocks for a given controller.
>>>>>>> + - clock-names: list of names of clocks which are fed as the input
>>>>>>> +       to the given clock controller.
>>>>>>> +
>>>>>
>>>>> Perhaps:
>>>>>
>>>>> + - clocks: list of the clock controller input clock identifiers,
>>>>>         from common clock bindings. Please refer the next section
>>>>>         to find the input clocks for a given controller.
>>>>>
>>>>> +- clock-names: list of the clock controller input clock names,
>>>>>         as described in clock-bindings.txt.
>>>>>
>>>>> ?
>>>>> It's fine to resend just updated first patch from each series.
>>> OK,
>>> I'll modify the comment of 'clocks' and 'clock-names' and send only first patch.
>>>
>>> I have a question. Do you prefer to add the list of input clocks for
>>> each clock domain as following?
>>> Or it is not necessary?
>>>
>>>            +       Input clocks for top clock controller:
>>>            +               - oscclk
>>>            +               - sclk_mphy_pll
>>>            +               - sclk_mfc_pll
>>>            +               - sclk_bus_pll
>>
>> We are supposed to document all required input clocks somehow, I would
>> keep the list in such form. The (example) cmu nodes are also a good
>> documentation IMHO, they also show clearly which cmu (block) given clock
>> is sourced from.
> 
> I agree that the binding document have to contain all required information.
> The binding document of exynos5433-clock will contain all input clocks for
> each clock domain. Also, I'll modify the description of 'clocks'/'clock-names'
> according to your comment and then I'll re-send only updated first
> patch for document.

I send only updated first patch[1] and will post new patch-set(v3) for remainings 9 patches with input clock information.
[1] https://lkml.org/lkml/2015/2/2/761
- [PATCH v6] clk: samsung: exynos5433: Add binding document for Exynos5433 clock domains

Thanks,
Chanwoo Choi

--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/clock/exynos5433-clock.txt b/Documentation/devicetree/bindings/clock/exynos5433-clock.txt
new file mode 100644
index 0000000..2d7a723
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/exynos5433-clock.txt
@@ -0,0 +1,258 @@ 
+* Samsung Exynos5433 CMU (Clock Management Units)
+
+The Exynos5433 clock controller generates and supplies clock to various
+controllers within the Exynos5433 SoC.
+
+Required Properties:
+
+- compatible: should be one of the following.
+  - "samsung,exynos5433-cmu-top"   - clock controller compatible for CMU_TOP
+    which generates clocks for IMEM/FSYS/G3D/GSCL/HEVC/MSCL/G2D/MFC/PERIC/PERIS
+    domains and bus clocks.
+  - "samsung,exynos5433-cmu-cpif"  - clock controller compatible for CMU_CPIF
+    which generates clocks for LLI (Low Latency Interface) IP.
+  - "samsung,exynos5433-cmu-mif"   - clock controller compatible for CMU_MIF
+    which generates clocks for DRAM Memory Controller domain.
+  - "samsung,exynos5433-cmu-peric" - clock controller compatible for CMU_PERIC
+    which generates clocks for UART/I2C/SPI/I2S/PCM/SPDIF/PWM/SLIMBUS IPs.
+  - "samsung,exynos5433-cmu-peris" - clock controller compatible for CMU_PERIS
+    which generates clocks for PMU/TMU/MCT/WDT/RTC/SECKEY/TZPC IPs.
+  - "samsung,exynos5433-cmu-fsys"  - clock controller compatible for CMU_FSYS
+    which generates clocks for USB/UFS/SDMMC/TSI/PDMA IPs.
+  - "samsung,exynos5433-cmu-g2d"   - clock controller compatible for CMU_G2D
+    which generates clocks for G2D/MDMA IPs.
+  - "samsung,exynos5433-cmu-disp"  - clock controller compatible for CMU_DISP
+    which generates clocks for Display (DECON/HDMI/DSIM/MIXER) IPs.
+  - "samsung,exynos5433-cmu-aud"   - clock controller compatible for CMU_AUD
+    which generates clocks for Cortex-A5/BUS/AUDIO clocks.
+  - "samsung,exynos5433-cmu-bus0", "samsung,exynos5433-cmu-bus1"
+    and "samsung,exynos5433-cmu-bus2" - clock controller compatible for CMU_BUS
+    which generates global data buses clock and global peripheral buses clock.
+  - "samsung,exynos5433-cmu-g3d"  - clock controller compatible for CMU_G3D
+    which generates clocks for 3D Graphics Engine IP.
+  - "samsung,exynos5433-cmu-gscl"  - clock controller compatible for CMU_GSCL
+    which generates clocks for GSCALER IPs.
+
+- reg: physical base address of the controller and length of memory mapped
+  region.
+
+- #clock-cells: should be 1.
+
+Each clock is assigned an identifier and client nodes can use this identifier
+to specify the clock which they consume.
+
+All available clocks are defined as preprocessor macros in
+dt-bindings/clock/exynos5433.h header and can be used in device
+tree sources.
+
+Example 1: Examples of 'oscclk' source clock node are listed below.
+
+	xxti: xxti {
+		compatible = "fixed-clock";
+		clock-output-names = "oscclk";
+		#clock-cells = <0>;
+	};
+
+Example 2: Examples of clock controller nodes are listed below.
+
+	cmu_top: clock-controller@0x10030000 {
+		compatible = "samsung,exynos5433-cmu-top";
+		reg = <0x10030000 0x0c04>;
+		#clock-cells = <1>;
+
+		clock-names = "oscclk",
+			"sclk_mphy_pll",
+			"sclk_mfc_pll",
+			"sclk_bus_pll";
+		clocks = <&xxti>,
+		       <&cmu_cpif CLK_SCLK_MPHY_PLL>,
+		       <&cmu_mif CLK_SCLK_MFC_PLL>,
+		       <&cmu_mif CLK_SCLK_BUS_PLL>;
+	};
+
+	cmu_cpif: clock-controller@0x10fc0000 {
+		compatible = "samsung,exynos5433-cmu-cpif";
+		reg = <0x10fc0000 0x0c04>;
+		#clock-cells = <1>;
+
+		clock-names = "oscclk";
+		clocks = <&xxti>;
+	};
+
+	cmu_mif: clock-controller@0x105b0000 {
+		compatible = "samsung,exynos5433-cmu-mif";
+		reg = <0x105b0000 0x100c>;
+		#clock-cells = <1>;
+
+		clock-names = "oscclk",
+			"sclk_mphy_pll";
+		clocks = <&xxti>,
+		       <&cmu_cpif CLK_SCLK_MPHY_PLL>;
+	};
+
+	cmu_peric: clock-controller@0x14c80000 {
+		compatible = "samsung,exynos5433-cmu-peric";
+		reg = <0x14c80000 0x0b08>;
+		#clock-cells = <1>;
+	};
+
+	cmu_peris: clock-controller@0x10040000 {
+		compatible = "samsung,exynos5433-cmu-peris";
+		reg = <0x10040000 0x0b20>;
+		#clock-cells = <1>;
+	};
+
+	cmu_fsys: clock-controller@0x156e0000 {
+		compatible = "samsung,exynos5433-cmu-fsys";
+		reg = <0x156e0000 0x0b04>;
+		#clock-cells = <1>;
+
+		clock-names = "oscclk",
+			"sclk_ufs_mphy",
+			"div_aclk_fsys_200",
+			"sclk_pcie_100_fsys",
+			"sclk_ufsunipro_fsys",
+			"sclk_mmc2_fsys",
+			"sclk_mmc1_fsys",
+			"sclk_mmc0_fsys",
+			"sclk_usbhost30_fsys",
+			"sclk_usbdrd30_fsys";
+		clocks = <&xxti>,
+		       <&cmu_cpif CLK_SCLK_UFS_MPHY>,
+		       <&cmu_top CLK_DIV_ACLK_FSYS_200>,
+		       <&cmu_top CLK_SCLK_PCIE_100_FSYS>,
+		       <&cmu_top CLK_SCLK_UFSUNIPRO_FSYS>,
+		       <&cmu_top CLK_SCLK_MMC2_FSYS>,
+		       <&cmu_top CLK_SCLK_MMC1_FSYS>,
+		       <&cmu_top CLK_SCLK_MMC0_FSYS>,
+		       <&cmu_top CLK_SCLK_USBHOST30_FSYS>,
+		       <&cmu_top CLK_SCLK_USBDRD30_FSYS>;
+	};
+
+	cmu_g2d: clock-controller@0x12460000 {
+		compatible = "samsung,exynos5433-cmu-g2d";
+		reg = <0x12460000 0x0b08>;
+		#clock-cells = <1>;
+
+		clock-names = "oscclk",
+			"aclk_g2d_266",
+			"aclk_g2d_400";
+		clocks = <&xxti>,
+		       <&cmu_top CLK_ACLK_G2D_266>,
+		       <&cmu_top CLK_ACLK_G2D_400>;
+	};
+
+	cmu_disp: clock-controller@0x13b90000 {
+		compatible = "samsung,exynos5433-cmu-disp";
+		reg = <0x13b90000 0x0c04>;
+		#clock-cells = <1>;
+
+		clock-names = "oscclk",
+			"sclk_dsim1_disp",
+			"sclk_dsim0_disp",
+			"sclk_dsd_disp",
+			"sclk_decon_tv_eclk_disp",
+			"sclk_decon_vclk_disp",
+			"sclk_decon_eclk_disp",
+			"sclk_decon_tv_vclk_disp",
+			"aclk_disp_333";
+		clocks = <&xxti>,
+		       <&cmu_mif CLK_SCLK_DSIM1_DISP>,
+		       <&cmu_mif CLK_SCLK_DSIM0_DISP>,
+		       <&cmu_mif CLK_SCLK_DSD_DISP>,
+		       <&cmu_mif CLK_SCLK_DECON_TV_ECLK_DISP>,
+		       <&cmu_mif CLK_SCLK_DECON_VCLK_DISP>,
+		       <&cmu_mif CLK_SCLK_DECON_ECLK_DISP>,
+		       <&cmu_mif CLK_SCLK_DECON_TV_VCLK_DISP>,
+		       <&cmu_mif CLK_ACLK_DISP_333>;
+	};
+
+	cmu_aud: clock-controller@0x114c0000 {
+		compatible = "samsung,exynos5433-cmu-aud";
+		reg = <0x114c0000 0x0b04>;
+		#clock-cells = <1>;
+	};
+
+	cmu_bus0: clock-controller@0x13600000 {
+		compatible = "samsung,exynos5433-cmu-bus0";
+		reg = <0x13600000 0x0b04>;
+		#clock-cells = <1>;
+
+		clock-names = "aclk_bus0_400";
+		clocks = <&cmu_top CLK_ACLK_BUS0_400>;
+	};
+
+	cmu_bus1: clock-controller@0x14800000 {
+		compatible = "samsung,exynos5433-cmu-bus1";
+		reg = <0x14800000 0x0b04>;
+		#clock-cells = <1>;
+
+		clock-names = "aclk_bus1_400";
+		clocks = <&cmu_top CLK_ACLK_BUS1_400>;
+	};
+
+	cmu_bus2: clock-controller@0x13400000 {
+		compatible = "samsung,exynos5433-cmu-bus2";
+		reg = <0x13400000 0x0b04>;
+		#clock-cells = <1>;
+
+		clock-names = "oscclk", "aclk_bus2_400";
+		clocks = <&xxti>, <&cmu_mif CLK_ACLK_BUS2_400>;
+	};
+
+	cmu_g3d: clock-controller@0x14aa0000 {
+		compatible = "samsung,exynos5433-cmu-g3d";
+		reg = <0x14aa0000 0x1000>;
+		#clock-cells = <1>;
+
+		clock-names = "oscclk", "aclk_g3d_400";
+		clocks = <&xxti>, <&cmu_top CLK_ACLK_G3D_400>;
+	};
+
+	cmu_gscl: clock-controller@0x13cf0000 {
+		compatible = "samsung,exynos5433-cmu-gscl";
+		reg = <0x13cf0000 0x0b10>;
+		#clock-cells = <1>;
+
+		clock-names = "oscclk",
+			"aclk_gscl_111",
+			"aclk_gscl_333";
+		clocks = <&xxti>,
+			<&cmu_top CLK_ACLK_GSCL_111>,
+			<&cmu_top CLK_ACLK_GSCL_333>;
+	};
+
+Example 3: UART controller node that consumes the clock generated by the clock
+	   controller.
+
+	serial_0: serial@14C10000 {
+		compatible = "samsung,exynos5433-uart";
+		reg = <0x14C10000 0x100>;
+		interrupts = <0 421 0>;
+		clocks = <&cmu_peric CLK_PCLK_UART0>,
+			 <&cmu_peric CLK_SCLK_UART0>;
+		clock-names = "uart", "clk_uart_baud0";
+		pinctrl-names = "default";
+		pinctrl-0 = <&uart0_bus>;
+		status = "disabled";
+	};
+
+Example 4: SPI controller node that consumes the clock generated by the clock
+	   controller.
+
+	spi_0: spi@14d20000 {
+		compatible = "samsung,exynos7-spi";
+		reg = <0x14d20000 0x100>;
+		interrupts = <0 432 0>;
+		dmas = <&pdma0 9>, <&pdma0 8>;
+		dma-names = "tx", "rx";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		clocks = <&cmu_peric CLK_PCLK_SPI0>,
+			 <&cmu_top CLK_SCLK_SPI0_PERIC>;
+		clock-names = "spi", "spi_busclk0";
+		samsung,spi-src-clk = <0>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&spi0_bus>;
+		status = "disabled";
+	};