← Documents Documentation/devicetree/bindings/clock/ti/davinci/pll.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

TI DaVinci PLL controllers

DA850 PLL0/PLL1과 pllout, sysclk, auxclk, obsclk child 바인딩입니다.

Source pathDocumentation/devicetree/bindings/clock/ti/davinci/pll.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

pll.txt:1-96

PLL controller source와 네 종류의 child output provider를 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Binding for TI DaVinci PLL Controllers
2
3 The PLL provides clocks to most of the components on the SoC. In addition
4 to the PLL itself, this controller also contains bypasses, gates, dividers,
5 an multiplexers for various clock signals.
6
7 Required properties:
8 - compatible: shall be one of:
9 - "ti,da850-pll0" for PLL0 on DA850/OMAP-L138/AM18XX
10 - "ti,da850-pll1" for PLL1 on DA850/OMAP-L138/AM18XX
11 - reg: physical base address and size of the controller's register area.
12 - clocks: phandles corresponding to the clock names
13 - clock-names: names of the clock sources - depends on compatible string
14 - for "ti,da850-pll0", shall be "clksrc", "extclksrc"
15 - for "ti,da850-pll1", shall be "clksrc"
16
17 Optional properties:
18 - ti,clkmode-square-wave: Indicates that the board is supplying a square
19 wave input on the OSCIN pin instead of using a crystal oscillator.
20 This property is only valid when compatible = "ti,da850-pll0".
21
22
23 Optional child nodes:
24
25 pllout
26 Describes the main PLL clock output (before POSTDIV). The node name must
27 be "pllout".
28
29 Required properties:
30 - #clock-cells: shall be 0
31
32 sysclk
33 Describes the PLLDIVn divider clocks that provide the SYSCLKn clock
34 domains. The node name must be "sysclk". Consumers of this node should
35 use "n" in "SYSCLKn" as the index parameter for the clock cell.
36
37 Required properties:
38 - #clock-cells: shall be 1
39
40 auxclk
41 Describes the AUXCLK output of the PLL. The node name must be "auxclk".
42 This child node is only valid when compatible = "ti,da850-pll0".
43
44 Required properties:
45 - #clock-cells: shall be 0
46
47 obsclk
48 Describes the OBSCLK output of the PLL. The node name must be "obsclk".
49
50 Required properties:
51 - #clock-cells: shall be 0
52
53
54 Examples:
55
56 pll0: clock-controller@11000 {
57 compatible = "ti,da850-pll0";
58 reg = <0x11000 0x1000>;
59 clocks = <&ref_clk>, <&pll1_sysclk 3>;
60 clock-names = "clksrc", "extclksrc";
61 ti,clkmode-square-wave;
62
63 pll0_pllout: pllout {
64 #clock-cells = <0>;
65 };
66
67 pll0_sysclk: sysclk {
68 #clock-cells = <1>;
69 };
70
71 pll0_auxclk: auxclk {
72 #clock-cells = <0>;
73 };
74
75 pll0_obsclk: obsclk {
76 #clock-cells = <0>;
77 };
78 };
79
80 pll1: clock-controller@21a000 {
81 compatible = "ti,da850-pll1";
82 reg = <0x21a000 0x1000>;
83 clocks = <&ref_clk>;
84 clock-names = "clksrc";
85
86 pll0_sysclk: sysclk {
87 #clock-cells = <1>;
88 };
89
90 pll0_obsclk: obsclk {
91 #clock-cells = <0>;
92 };
93 };
94
95 Also see:
96 - Documentation/devicetree/bindings/clock/clock-bindings.txt
97

3. 한국어 전문 번역

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

DaVinci PLL controller

1-22

TI DaVinci PLL controller 바인딩입니다. PLL 자체뿐 아니라 여러 clock signal을 위한 bypass, gate, divider와 multiplexer를 포함하며 SoC 구성요소 대부분에 clock을 공급합니다.

`compatible`은 DA850/OMAP-L138/AM18XX의 PLL0에 `ti,da850-pll0`, PLL1에 `ti,da850-pll1`을 사용합니다. `reg`는 controller register 영역이고, `clocks`는 `clock-names`와 순서대로 대응합니다.

PLL0의 parent 이름은 `clksrc`, `extclksrc`이고 PLL1은 `clksrc`만 사용합니다. 선택 속성 `ti,clkmode-square-wave`는 board가 crystal oscillator 대신 OSCIN pin에 square-wave input을 공급함을 나타내며 PLL0에서만 유효합니다.

DaVinci PLL controller outputs
clksrc / optional extclksrcPLL0 또는 PLL1 input
PLL + bypass + muxFrequency 생성 및 source 선택
plloutPOSTDIV 이전 main output
sysclk / auxclk / obsclkDivider domain 및 auxiliary outputs

Source와 bypass 선택부터 controller의 여러 child output까지의 구조입니다.

PLL child output nodes

23-53

`pllout` child는 POSTDIV 이전의 main PLL output을 나타내며 node 이름은 `pllout`, `#clock-cells`는 0입니다.

`sysclk` child는 SYSCLKn domain을 공급하는 PLLDIVn divider clock을 나타냅니다. Node 이름은 `sysclk`, `#clock-cells`는 1이며 consumer는 SYSCLKn의 n을 clock cell index로 사용합니다.

`auxclk` child는 PLL의 AUXCLK output이며 node 이름은 `auxclk`, `#clock-cells`는 0입니다. 이 child는 `ti,da850-pll0`에서만 유효합니다. `obsclk` child는 OBSCLK output이고 node 이름은 `obsclk`, `#clock-cells`는 0입니다.

DaVinci PLL child providers
NodeOutput#clock-cells
plloutMain PLL output before POSTDIV0
sysclkPLLDIVn / SYSCLKn1
auxclkAUXCLK, PLL0 only0
obsclkOBSCLK0

Child node별 output 위치와 clock cell 수입니다.

PLL0과 PLL1 예제

54-96

PLL0 예제는 reference clock과 PLL1 SYSCLK3을 source로 받고 square-wave mode를 표시하며 네 child를 모두 제공합니다. PLL1 예제는 reference clock 하나와 `sysclk`, `obsclk` child를 제공합니다.

pll0: clock-controller@11000 {
        compatible = "ti,da850-pll0";
        reg = <0x11000 0x1000>;
        clocks = <&ref_clk>, <&pll1_sysclk 3>;
        clock-names = "clksrc", "extclksrc";
        ti,clkmode-square-wave;

        pll0_pllout: pllout {
                #clock-cells = <0>;
        };

        pll0_sysclk: sysclk {
                #clock-cells = <1>;
        };

        pll0_auxclk: auxclk {
                #clock-cells = <0>;
        };

        pll0_obsclk: obsclk {
                #clock-cells = <0>;
        };
};

pll1: clock-controller@21a000 {
        compatible = "ti,da850-pll1";
        reg = <0x21a000 0x1000>;
        clocks = <&ref_clk>;
        clock-names = "clksrc";

        pll0_sysclk: sysclk {
                #clock-cells = <1>;
        };

        pll0_obsclk: obsclk {
                #clock-cells = <0>;
        };
};

예제의 PLL1 child label은 원문 그대로 `pll0_sysclk`와 `pll0_obsclk`로 보존합니다. 공통 속성은 `Documentation/devicetree/bindings/clock/clock-bindings.txt`를 참조합니다.