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

Linux 6.18.37 · Devicetree Bindings

TI DaVinci PSC

LPSC index로 clock, power domain과 optional reset을 제공하는 PSC 바인딩입니다.

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

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

1. 요약·해설

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

요약과 해설

psc.txt:1-71

PSC0/PSC1 parent와 consumer의 공통 LPSC index 사용법을 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Binding for TI DaVinci Power Sleep Controller (PSC)
2
3 The PSC provides power management, clock gating and reset functionality. It is
4 primarily used for clocking.
5
6 Required properties:
7 - compatible: shall be one of:
8 - "ti,da850-psc0" for PSC0 on DA850/OMAP-L138/AM18XX
9 - "ti,da850-psc1" for PSC1 on DA850/OMAP-L138/AM18XX
10 - reg: physical base address and size of the controller's register area
11 - #clock-cells: from common clock binding; shall be set to 1
12 - #power-domain-cells: from generic power domain binding; shall be set to 1.
13 - clocks: phandles to clocks corresponding to the clock-names property
14 - clock-names: list of parent clock names - depends on compatible value
15 - for "ti,da850-psc0", shall be "pll0_sysclk1", "pll0_sysclk2",
16 "pll0_sysclk4", "pll0_sysclk6", "async1"
17 - for "ti,da850-psc1", shall be "pll0_sysclk2", "pll0_sysclk4", "async3"
18
19 Optional properties:
20 - #reset-cells: from reset binding; shall be set to 1 - only applicable when
21 at least one local domain provides a local reset.
22
23 Consumers:
24
25 Clock, power domain and reset consumers shall use the local power domain
26 module ID (LPSC) as the index corresponding to the clock cell. Refer to
27 the device-specific datasheet to find these numbers. NB: Most local
28 domains only provide a clock/power domain and not a reset.
29
30 Examples:
31
32 psc0: clock-controller@10000 {
33 compatible = "ti,da850-psc0";
34 reg = <0x10000 0x1000>;
35 #clock-cells = <1>;
36 #power-domain-cells = <1>;
37 #reset-cells = <1>;
38 clocks = <&pll0_sysclk 1>, <&pll0_sysclk 2>,
39 <&pll0_sysclk 4>, <&pll0_sysclk 6>, <&async1_clk>;
40 clock_names = "pll0_sysclk1", "pll0_sysclk2",
41 "pll0_sysclk4", "pll0_sysclk6", "async1";
42 };
43 psc1: clock-controller@227000 {
44 compatible = "ti,da850-psc1";
45 reg = <0x227000 0x1000>;
46 #clock-cells = <1>;
47 #power-domain-cells = <1>;
48 clocks = <&pll0_sysclk 2>, <&pll0_sysclk 4>, <&async3_clk>;
49 clock_names = "pll0_sysclk2", "pll0_sysclk4", "async3";
50 };
51
52 /* consumer */
53 dsp: dsp@11800000 {
54 compatible = "ti,da850-dsp";
55 reg = <0x11800000 0x40000>,
56 <0x11e00000 0x8000>,
57 <0x11f00000 0x8000>,
58 <0x01c14044 0x4>,
59 <0x01c14174 0x8>;
60 reg-names = "l2sram", "l1pram", "l1dram", "host1cfg", "chipsig";
61 interrupt-parent = <&intc>;
62 interrupts = <28>;
63 clocks = <&psc0 15>;
64 power-domains = <&psc0 15>;
65 resets = <&psc0 15>;
66 };
67
68 Also see:
69 - Documentation/devicetree/bindings/clock/clock-bindings.txt
70 - Documentation/devicetree/bindings/power/power-domain.yaml
71 - Documentation/devicetree/bindings/reset/reset.txt
72

3. 한국어 전문 번역

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

DaVinci PSC provider

1-22

TI DaVinci Power Sleep Controller(PSC) 바인딩입니다. PSC는 power management, clock gating 및 reset 기능을 제공하며 주로 clock 공급에 사용됩니다.

`compatible`은 DA850/OMAP-L138/AM18XX의 PSC0에 `ti,da850-psc0`, PSC1에 `ti,da850-psc1`을 사용합니다. `reg`는 controller register 영역이며 `#clock-cells`와 `#power-domain-cells`는 각각 1입니다.

PSC0의 parent 이름은 `pll0_sysclk1`, `pll0_sysclk2`, `pll0_sysclk4`, `pll0_sysclk6`, `async1`입니다. PSC1은 `pll0_sysclk2`, `pll0_sysclk4`, `async3`을 사용합니다.

Local domain 중 하나라도 local reset을 제공할 때 선택 속성 `#reset-cells = <1>`을 지정합니다.

DaVinci PSC parent clocks
ProviderParent clock namesReset
PSC0SYSCLK1, 2, 4, 6 + ASYNC1필요한 local reset이 있으면 1-cell
PSC1SYSCLK2, 4 + ASYNC3필요한 local reset이 있으면 1-cell

PSC instance별 parent clock 목록과 reset provider 조건입니다.

LPSC consumer index

23-29

Clock, power-domain 및 reset consumer는 local power-domain module ID인 LPSC 번호를 clock cell의 index로 사용합니다. 정확한 번호는 device별 datasheet에서 찾습니다.

대부분의 local domain은 clock과 power domain만 제공하며 reset은 제공하지 않습니다. 따라서 모든 LPSC index가 reset consumer에 유효하다고 가정하면 안 됩니다.

PSC local-domain lookup
Device-specific LPSC IDDatasheet의 local module number
PSC providerClock + power domain + optional reset
Consumer specifiersclocks / power-domains / resets

같은 LPSC module ID가 가능한 provider 기능의 index를 연결합니다.

PSC0, PSC1과 DSP consumer 예제

30-71

PSC0 예제는 clock, power-domain, reset의 세 1-cell provider를 모두 선언하고 다섯 parent를 연결합니다. PSC1은 clock과 power-domain provider를 선언하고 세 parent를 연결합니다.

원문 예제의 property는 binding 설명의 `clock-names`와 달리 `clock_names`로 표기되어 있으며 이를 수정하지 않고 그대로 보존합니다.

DSP consumer는 LPSC index 15를 `<&psc0 15>`로 clock, power domain, reset에 동일하게 사용합니다. 뒤의 참조는 공통 clock 바인딩 `Documentation/devicetree/bindings/clock/clock-bindings.txt`, generic power-domain 바인딩 `Documentation/devicetree/bindings/power/power-domain.yaml`, reset 바인딩 `Documentation/devicetree/bindings/reset/reset.txt`입니다.

psc0: clock-controller@10000 {
        compatible = "ti,da850-psc0";
        reg = <0x10000 0x1000>;
        #clock-cells = <1>;
        #power-domain-cells = <1>;
        #reset-cells = <1>;
        clocks = <&pll0_sysclk 1>, <&pll0_sysclk 2>,
                 <&pll0_sysclk 4>, <&pll0_sysclk 6>, <&async1_clk>;
        clock_names = "pll0_sysclk1", "pll0_sysclk2",
                      "pll0_sysclk4", "pll0_sysclk6", "async1";
};
psc1: clock-controller@227000 {
        compatible = "ti,da850-psc1";
        reg = <0x227000 0x1000>;
        #clock-cells = <1>;
        #power-domain-cells = <1>;
        clocks = <&pll0_sysclk 2>, <&pll0_sysclk 4>, <&async3_clk>;
        clock_names = "pll0_sysclk2", "pll0_sysclk4", "async3";
};

/* consumer */
dsp: dsp@11800000 {
        compatible = "ti,da850-dsp";
        reg = <0x11800000 0x40000>,
              <0x11e00000 0x8000>,
              <0x11f00000 0x8000>,
              <0x01c14044 0x4>,
              <0x01c14174 0x8>;
        reg-names = "l2sram", "l1pram", "l1dram", "host1cfg", "chipsig";
        interrupt-parent = <&intc>;
        interrupts = <28>;
        clocks = <&psc0 15>;
        power-domains = <&psc0 15>;
        resets = <&psc0 15>;
};