← Documents Documentation/devicetree/bindings/regulator/lp872x.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

TI LP872x regulator

LP8720과 LP8725의 general configuration bitfield, DVS 제어와 regulator child를 설명합니다.

Source pathDocumentation/devicetree/bindings/regulator/lp872x.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

lp872x.txt:1-161

두 chip의 bitfield 차이와 전체 device-tree 예제를 함께 비교합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Binding for TI/National Semiconductor LP872x Driver
2
3 Required properties:
4 - compatible: "ti,lp8720" or "ti,lp8725"
5 - reg: I2C slave address. 0x7d = LP8720, 0x7a = LP8725
6
7 Optional properties:
8 - ti,general-config: the value of LP872X_GENERAL_CFG register (u8)
9 (LP8720)
10 bit[2]: BUCK output voltage control by external DVS pin or register
11 1 = external pin, 0 = bit7 of register 08h
12 bit[1]: sleep control by external DVS pin or register
13 1 = external pin, 0 = bit6 of register 08h
14 bit[0]: time step unit(usec). 1 = 25, 0 = 50
15
16 (LP8725)
17 bit[7:6]: time step unit(usec). 00 = 32, 01 = 64, 10 = 128, 11 = 256
18 bit[4]: BUCK2 enable control. 1 = enable, 0 = disable
19 bit[3]: BUCK2 output voltage register address. 1 = 0Ah, 0 = 0Bh
20 bit[2]: BUCK1 output voltage control by external DVS pin or register
21 1 = register 08h, 0 = DVS
22 bit[1]: LDO sleep control. 1 = sleep mode, 0 = normal
23 bit[0]: BUCK1 enable control, 1 = enable, 0 = disable
24
25 For more details, please see the datasheet.
26
27 - ti,update-config: define it when LP872X_GENERAL_CFG register should be set
28 - ti,dvs-gpio: GPIO specifier for external DVS pin control of LP872x devices.
29 - ti,dvs-vsel: DVS selector. 0 = SEL_V1, 1 = SEL_V2.
30 - ti,dvs-state: initial DVS pin state. 0 = DVS_LOW, 1 = DVS_HIGH.
31 - enable-gpios: GPIO specifier for EN pin control of LP872x devices.
32
33 Sub nodes for regulator_init_data
34 LP8720 has maximum 6 nodes. (child name: ldo1 ~ 5 and buck)
35 LP8725 has maximum 9 nodes. (child name: ldo1 ~ 5, lilo1,2 and buck1,2)
36 For more details, please see the following binding document.
37 (Documentation/devicetree/bindings/regulator/regulator.txt)
38
39 Datasheet
40 - LP8720: https://www.ti.com/lit/ds/symlink/lp8720.pdf
41 - LP8725: https://www.ti.com/lit/ds/symlink/lp8725.pdf
42
43 Example 1) LP8720
44
45 lp8720@7d {
46 compatible = "ti,lp8720";
47 reg = <0x7d>;
48
49 /* external DVS pin used, timestep is 25usec */
50 ti,general-config = /bits/ 8 <0x03>;
51 ti,update-config;
52
53 /*
54 * The dvs-gpio depends on the processor environment.
55 * For example, following GPIO specifier means GPIO134 in OMAP4.
56 */
57 ti,dvs-gpio = <&gpio5 6 0>;
58 ti,dvs-vsel = /bits/ 8 <1>; /* SEL_V2 */
59 ti,dvs-state = /bits/ 8 <1>; /* DVS_HIGH */
60
61 vaf: ldo1 {
62 regulator-min-microvolt = <1200000>;
63 regulator-max-microvolt = <3300000>;
64 };
65
66 vmmc: ldo2 {
67 regulator-min-microvolt = <1200000>;
68 regulator-max-microvolt = <3300000>;
69 };
70
71 vcam_io: ldo3 {
72 regulator-min-microvolt = <1200000>;
73 regulator-max-microvolt = <3300000>;
74 regulator-boot-on;
75 };
76
77 vcam_core: ldo4 {
78 regulator-min-microvolt = <800000>;
79 regulator-max-microvolt = <2850000>;
80 regulator-boot-on;
81 };
82
83 vcam: ldo5 {
84 regulator-min-microvolt = <1200000>;
85 regulator-max-microvolt = <3300000>;
86 };
87
88 vcc: buck {
89 regulator-name = "VBUCK";
90 regulator-min-microvolt = <800000>;
91 regulator-max-microvolt = <2300000>;
92 };
93 };
94
95 Example 2) LP8725
96
97 lp8725@7a {
98 compatible = "ti,lp8725";
99 reg = <0x7a>;
100
101 /* Enable BUCK1,2, no DVS, normal LDO mode, timestep is 256usec */
102 ti,general-config = /bits/ 8 <0xdd>;
103 ti,update-config;
104
105 vcam_io: ldo1 {
106 regulator-min-microvolt = <1200000>;
107 regulator-max-microvolt = <3300000>;
108 };
109
110 vcam_core: ldo2 {
111 regulator-min-microvolt = <1200000>;
112 regulator-max-microvolt = <3300000>;
113 };
114
115 vcam: ldo3 {
116 regulator-min-microvolt = <1200000>;
117 regulator-max-microvolt = <3300000>;
118 };
119
120 vcmmb_io: ldo4 {
121 regulator-min-microvolt = <1200000>;
122 regulator-max-microvolt = <3300000>;
123 regulator-boot-on;
124 };
125
126 vcmmb_core: ldo5 {
127 regulator-min-microvolt = <1200000>;
128 regulator-max-microvolt = <3300000>;
129 regulator-boot-on;
130 };
131
132 vaux1: lilo1 {
133 regulator-name = "VAUX1";
134 regulator-min-microvolt = <800000>;
135 regulator-max-microvolt = <3300000>;
136 };
137
138 vaux2: lilo2 {
139 regulator-name = "VAUX2";
140 regulator-min-microvolt = <800000>;
141 regulator-max-microvolt = <3300000>;
142 };
143
144 vcc1: buck1 {
145 regulator-name = "VBUCK1";
146 regulator-min-microvolt = <800000>;
147 regulator-max-microvolt = <3000000>;
148 regulator-min-microamp = <460000>;
149 regulator-max-microamp = <1370000>;
150 regulator-boot-on;
151 };
152
153 vcc2: buck2 {
154 regulator-name = "VBUCK2";
155 regulator-min-microvolt = <800000>;
156 regulator-max-microvolt = <3000000>;
157 regulator-min-microamp = <460000>;
158 regulator-max-microamp = <1370000>;
159 regulator-boot-on;
160 };
161 };
162

3. 한국어 전문 번역

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

LP872x 필수 property

1-6

TI/National Semiconductor LP872x driver binding입니다. `compatible`은 `ti,lp8720` 또는 `ti,lp8725`이고 `reg`는 I2C slave address입니다. LP8720은 0x7d, LP8725는 0x7a를 사용합니다.

LP8720 general configuration

7-15

선택 `ti,general-config`는 8-bit `LP872X_GENERAL_CFG` register 값을 지정합니다. LP8720에서 bit[2]는 BUCK output voltage 제어를 고르며 1은 external DVS pin, 0은 register 08h의 bit7입니다. bit[1]은 sleep 제어로 1은 external DVS pin, 0은 register 08h의 bit6입니다. bit[0]은 microsecond 단위 time step이며 1은 25, 0은 50입니다.

LP8725 general configuration

16-25

LP8725에서 bit[7:6]은 time step 단위이며 00=32, 01=64, 10=128, 11=256 microsecond입니다. bit[4]는 BUCK2 enable로 1은 enable, 0은 disable입니다. bit[3]은 BUCK2 output voltage register address로 1은 0Ah, 0은 0Bh입니다.

bit[2]는 BUCK1 output voltage 제어로 1은 register 08h, 0은 DVS입니다. bit[1]은 LDO sleep 제어로 1은 sleep mode, 0은 normal입니다. bit[0]은 BUCK1 enable이며 1은 enable, 0은 disable입니다. 자세한 동작은 datasheet를 참조합니다.

Update, DVS와 enable GPIO

26-32

`LP872X_GENERAL_CFG` register를 실제로 설정해야 할 때 `ti,update-config`를 선언합니다. `ti,dvs-gpio`는 external DVS pin의 GPIO specifier, `ti,dvs-vsel`은 DVS selector로 0=`SEL_V1`, 1=`SEL_V2`, `ti,dvs-state`는 초기 pin 상태로 0=`DVS_LOW`, 1=`DVS_HIGH`입니다. `enable-gpios`는 EN pin 제어용 GPIO specifier입니다.

Regulator child와 datasheet

33-42

LP8720은 최대 6개 child `ldo1`~`ldo5`, `buck`을 지원합니다. LP8725는 최대 9개 child `ldo1`~`ldo5`, `lilo1`, `lilo2`, `buck1`, `buck2`를 지원합니다. 초기화 데이터는 `Documentation/devicetree/bindings/regulator/regulator.txt`를 따릅니다.

Datasheet는 LP8720의 `https://www.ti.com/lit/ds/symlink/lp8720.pdf`와 LP8725의 `https://www.ti.com/lit/ds/symlink/lp8725.pdf`입니다.

예제 1: LP8720

43-94

LP8720 예제는 external DVS pin과 25 microsecond time step을 선택하는 `ti,general-config = 0x03`을 적용합니다. OMAP4 GPIO134에 해당하는 GPIO5_6을 DVS로 사용하고 `SEL_V2`, `DVS_HIGH`로 초기화합니다. LDO1~5와 BUCK의 전압 constraint도 함께 선언합니다.

lp8720@7d {
        compatible = "ti,lp8720";
        reg = <0x7d>;

        /* external DVS pin used, timestep is 25usec */
        ti,general-config = /bits/ 8 <0x03>;
        ti,update-config;

        /*
         * The dvs-gpio depends on the processor environment.
         * For example, following GPIO specifier means GPIO134 in OMAP4.
         */
        ti,dvs-gpio = <&gpio5 6 0>;
        ti,dvs-vsel = /bits/ 8 <1>;                /* SEL_V2 */
        ti,dvs-state = /bits/ 8 <1>;                /* DVS_HIGH */

        vaf: ldo1 {
                regulator-min-microvolt = <1200000>;
                regulator-max-microvolt = <3300000>;
        };

        vmmc: ldo2 {
                regulator-min-microvolt = <1200000>;
                regulator-max-microvolt = <3300000>;
        };

        vcam_io: ldo3 {
                regulator-min-microvolt = <1200000>;
                regulator-max-microvolt = <3300000>;
                regulator-boot-on;
        };

        vcam_core: ldo4 {
                regulator-min-microvolt = <800000>;
                regulator-max-microvolt = <2850000>;
                regulator-boot-on;
        };

        vcam: ldo5 {
                regulator-min-microvolt = <1200000>;
                regulator-max-microvolt = <3300000>;
        };

        vcc: buck {
                regulator-name = "VBUCK";
                regulator-min-microvolt = <800000>;
                regulator-max-microvolt = <2300000>;
        };
};

예제 2: LP8725

95-161

LP8725 예제의 `ti,general-config = 0xdd`는 BUCK1·BUCK2 enable, DVS 미사용, LDO normal mode, 256 microsecond time step을 설정합니다. LDO1~5, LILO1~2와 두 BUCK을 선언하며 BUCK1·2는 800,000~3,000,000 microvolt, 460,000~1,370,000 microamp 범위와 boot-on 상태를 사용합니다.

lp8725@7a {
        compatible = "ti,lp8725";
        reg = <0x7a>;

        /* Enable BUCK1,2, no DVS, normal LDO mode, timestep is 256usec */
        ti,general-config = /bits/ 8 <0xdd>;
        ti,update-config;

        vcam_io: ldo1 {
                regulator-min-microvolt = <1200000>;
                regulator-max-microvolt = <3300000>;
        };

        vcam_core: ldo2 {
                regulator-min-microvolt = <1200000>;
                regulator-max-microvolt = <3300000>;
        };

        vcam: ldo3 {
                regulator-min-microvolt = <1200000>;
                regulator-max-microvolt = <3300000>;
        };

        vcmmb_io: ldo4 {
                regulator-min-microvolt = <1200000>;
                regulator-max-microvolt = <3300000>;
                regulator-boot-on;
        };

        vcmmb_core: ldo5 {
                regulator-min-microvolt = <1200000>;
                regulator-max-microvolt = <3300000>;
                regulator-boot-on;
        };

        vaux1: lilo1 {
                regulator-name = "VAUX1";
                regulator-min-microvolt = <800000>;
                regulator-max-microvolt = <3300000>;
        };

        vaux2: lilo2 {
                regulator-name = "VAUX2";
                regulator-min-microvolt = <800000>;
                regulator-max-microvolt = <3300000>;
        };

        vcc1: buck1 {
                regulator-name = "VBUCK1";
                regulator-min-microvolt = <800000>;
                regulator-max-microvolt = <3000000>;
                regulator-min-microamp  = <460000>;
                regulator-max-microamp  = <1370000>;
                regulator-boot-on;
        };

        vcc2: buck2 {
                regulator-name = "VBUCK2";
                regulator-min-microvolt = <800000>;
                regulator-max-microvolt = <3000000>;
                regulator-min-microamp  = <460000>;
                regulator-max-microamp  = <1370000>;
                regulator-boot-on;
        };
};