← Documents Documentation/devicetree/bindings/clock/st/st,clkgen.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

ST Clockgen hardware block

PLL, QuadFS, mux와 Flexgen child가 register 공간을 공유하는 parent 바인딩입니다.

Source pathDocumentation/devicetree/bindings/clock/st/st,clkgen.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

st,clkgen.txt:1-68

Clockgen parent와 clock 생성 subnode의 계층 및 register 소유권을 설명합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 Binding for a Clockgen hardware block found on
2 certain STMicroelectronics consumer electronics SoC devices.
3
4 A Clockgen node can contain pll, diviser or multiplexer nodes.
5
6 We will find only the base address of the Clockgen, this base
7 address is common of all subnode.
8
9 clockgen_node {
10 reg = <>;
11
12 pll_node {
13 ...
14 };
15
16 quadfs_node {
17 ...
18 };
19
20 mux_node {
21 ...
22 };
23
24 flexgen_node {
25 ...
26 };
27 ...
28 };
29
30 This binding uses the common clock binding[1].
31 Each subnode should use the binding described in [2]..[7]
32
33 [1] Documentation/devicetree/bindings/clock/clock-bindings.txt
34 [3] Documentation/devicetree/bindings/clock/st/st,clkgen-mux.txt
35 [4] Documentation/devicetree/bindings/clock/st/st,clkgen-pll.txt
36 [7] Documentation/devicetree/bindings/clock/st/st,quadfs.txt
37 [8] Documentation/devicetree/bindings/clock/st/st,flexgen.txt
38
39
40 Required properties:
41 - reg : A Base address and length of the register set.
42
43 Example:
44
45 clockgen-a@90ff000 {
46 compatible = "st,clkgen-c32";
47 reg = <0x90ff000 0x1000>;
48
49 clk_s_a0_pll: clk-s-a0-pll {
50 #clock-cells = <1>;
51 compatible = "st,clkgen-pll0";
52
53 clocks = <&clk_sysin>;
54
55 clock-output-names = "clk-s-a0-pll-ofd-0";
56 };
57
58 clk_s_a0_flexgen: clk-s-a0-flexgen {
59 compatible = "st,flexgen";
60
61 #clock-cells = <1>;
62
63 clocks = <&clk_s_a0_pll 0>,
64 <&clk_sysin>;
65
66 clock-output-names = "clk-ic-lmi0";
67 };
68 };
69

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Clockgen parent와 subnode 구조

1-39

STMicroelectronics consumer-electronics SoC의 Clockgen hardware block 바인딩입니다. Clockgen node는 PLL, divider, multiplexer, QuadFS와 Flexgen subnode를 포함할 수 있습니다.

Clockgen의 base address는 parent node의 `reg` 한 곳에만 있으며 모든 subnode가 이 register 공간을 공유합니다. 원문은 `diviser`라고 표기하지만 의미는 divider입니다.

clockgen_node {
        reg = <>;

        pll_node {
                ...
        };

        quadfs_node {
                ...
        };

        mux_node {
                ...
        };

        flexgen_node {
                ...
        };
        ...
};

공통 clock 바인딩과 `st,clkgen-mux.txt`, `st,clkgen-pll.txt`, `st,quadfs.txt`, `st,flexgen.txt`의 개별 child 바인딩을 함께 적용합니다. 원문의 reference 번호 [2]..[7] 및 실제 목록의 [3], [4], [7], [8] 표기는 그대로 보존됩니다.

ST Clockgen hierarchy
Clockgen parent공유 reg base + length
PLL / QuadFS주파수 source 생성
Mux / FlexgenSource 선택과 분주
Clock outputsConsumer별 clock ID

하나의 parent register 영역 아래에 여러 clock 생성 block을 배치합니다.

Clockgen parent 예제

40-68

필수 속성 `reg`는 register set의 base address와 length입니다. 예제 `clockgen-a@90ff000` 아래에는 `st,clkgen-pll0` PLL과 `st,flexgen` Flexgen child가 있으며 둘 다 parent register 영역을 공유합니다.

PLL은 `clk_sysin`에서 `clk-s-a0-pll-ofd-0`을 만들고, Flexgen은 이 PLL output과 `clk_sysin`을 parent로 받아 `clk-ic-lmi0` output을 제공합니다.

clockgen-a@90ff000 {
        compatible = "st,clkgen-c32";
        reg = <0x90ff000 0x1000>;

        clk_s_a0_pll: clk-s-a0-pll {
                #clock-cells = <1>;
                compatible = "st,clkgen-pll0";

                clocks = <&clk_sysin>;

                clock-output-names = "clk-s-a0-pll-ofd-0";
        };

        clk_s_a0_flexgen: clk-s-a0-flexgen {
                compatible = "st,flexgen";

                #clock-cells = <1>;

                clocks = <&clk_s_a0_pll 0>,
                         <&clk_sysin>;

                clock-output-names = "clk-ic-lmi0";
        };
};