← Documents Documentation/devicetree/bindings/sound/cs35l35.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / Sound

Cirrus CS35L35 boosted speaker amplifier

CS35L35의 stereo boost 공유, Class H 제어와 monitor signal format을 설명합니다.

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

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

1. 요약·해설

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

요약과 해설

cs35l35.txt:1-181

증폭기의 전원과 boost 설정부터 stereo signal 배치, 위험도가 높은 Class H override, monitor packet 형식까지 단계별로 해설합니다. 접을 수 있는 영어 원문 전체와 원문 줄 좌표를 보존한 한국어 전문 번역을 함께 제공합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 CS35L35 Boosted Speaker Amplifier
2
3 Required properties:
4
5 - compatible : "cirrus,cs35l35"
6
7 - reg : the I2C address of the device for I2C
8
9 - VA-supply, VP-supply : power supplies for the device,
10 as covered in
11 Documentation/devicetree/bindings/regulator/regulator.txt.
12
13 - interrupts : IRQ line info CS35L35.
14 (See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
15 for further information relating to interrupt properties)
16
17 - cirrus,boost-ind-nanohenry: Inductor value for boost converter. The value is
18 in nH and they can be values of 1000nH, 1200nH, 1500nH, and 2200nH.
19
20 Optional properties:
21 - reset-gpios : gpio used to reset the amplifier
22
23 - cirrus,stereo-config : Boolean to determine if there are 2 AMPs for a
24 Stereo configuration
25
26 - cirrus,audio-channel : Set Location of Audio Signal on Serial Port
27 0 = Data Packet received on Left I2S Channel
28 1 = Data Packet received on Right I2S Channel
29
30 - cirrus,advisory-channel : Set Location of Advisory Signal on Serial Port
31 0 = Data Packet received on Left I2S Channel
32 1 = Data Packet received on Right I2S Channel
33
34 - cirrus,shared-boost : Boolean to enable ClassH tracking of Advisory Signal
35 if 2 Devices share Boost BST_CTL
36
37 - cirrus,external-boost : Boolean to specify the device is using an external
38 boost supply, note that sharing a boost from another cs35l35 would constitute
39 using an external supply for the slave device
40
41 - cirrus,sp-drv-strength : Value for setting the Serial Port drive strength
42 Table 3-10 of the datasheet lists drive-strength specifications
43 0 = 1x (Default)
44 1 = .5x
45 - cirrus,sp-drv-unused : Determines how unused slots should be driven on the
46 Serial Port.
47 0 - Hi-Z
48 2 - Drive 0's (Default)
49 3 - Drive 1's
50
51 - cirrus,bst-pdn-fet-on : Boolean to determine if the Boost PDN control
52 powers down with a rectification FET On or Off. If VSPK is supplied
53 externally then FET is off.
54
55 - cirrus,boost-ctl-millivolt : Boost Voltage Value. Configures the boost
56 converter's output voltage in mV. The range is from 2600mV to 9000mV with
57 increments of 100mV.
58 (Default) VP
59
60 - cirrus,boost-peak-milliamp : Boost-converter peak current limit in mA.
61 Configures the peak current by monitoring the current through the boost FET.
62 Range starts at 1680mA and goes to a maximum of 4480mA with increments of
63 110mA.
64 (Default) 2.46 Amps
65
66 - cirrus,amp-gain-zc : Boolean to determine if to use Amplifier gain-change
67 zero-cross
68
69 Optional H/G Algorithm sub-node:
70
71 The cs35l35 node can have a single "cirrus,classh-internal-algo" sub-node
72 that will disable automatic control of the internal H/G Algorithm.
73
74 It is strongly recommended that the Datasheet be referenced when adjusting
75 or using these Class H Algorithm controls over the internal Algorithm.
76 Serious damage can occur to the Device and surrounding components.
77
78 - cirrus,classh-internal-algo : Sub-node for the Internal Class H Algorithm
79 See Section 4.3 Internal Class H Algorithm in the Datasheet.
80 If not used, the device manages the ClassH Algorithm internally.
81
82 Optional properties for the "cirrus,classh-internal-algo" Sub-node
83
84 Section 7.29 Class H Control
85 - cirrus,classh-bst-overide : Boolean
86 - cirrus,classh-bst-max-limit
87 - cirrus,classh-mem-depth
88
89 Section 7.30 Class H Headroom Control
90 - cirrus,classh-headroom
91
92 Section 7.31 Class H Release Rate
93 - cirrus,classh-release-rate
94
95 Section 7.32 Class H Weak FET Drive Control
96 - cirrus,classh-wk-fet-disable
97 - cirrus,classh-wk-fet-delay
98 - cirrus,classh-wk-fet-thld
99
100 Section 7.34 Class H VP Control
101 - cirrus,classh-vpch-auto
102 - cirrus,classh-vpch-rate
103 - cirrus,classh-vpch-man
104
105 Optional Monitor Signal Format sub-node:
106
107 The cs35l35 node can have a single "cirrus,monitor-signal-format" sub-node
108 for adjusting the Depth, Location and Frame of the Monitoring Signals
109 for Algorithms.
110
111 See Sections 4.8.2 through 4.8.4 Serial-Port Control in the Datasheet
112
113 -cirrus,monitor-signal-format : Sub-node for the Monitor Signaling Formatting
114 on the I2S Port. Each of the 3 8 bit values in the array contain the settings
115 for depth, location, and frame.
116
117 If not used, the defaults for the 6 monitor signals is used.
118
119 Sections 7.44 - 7.53 lists values for the depth, location, and frame
120 for each monitoring signal.
121
122 - cirrus,imon : 4 8 bit values to set the depth, location, frame and ADC
123 scale of the IMON monitor signal.
124
125 - cirrus,vmon : 3 8 bit values to set the depth, location, and frame
126 of the VMON monitor signal.
127
128 - cirrus,vpmon : 3 8 bit values to set the depth, location, and frame
129 of the VPMON monitor signal.
130
131 - cirrus,vbstmon : 3 8 bit values to set the depth, location, and frame
132 of the VBSTMON monitor signal
133
134 - cirrus,vpbrstat : 3 8 bit values to set the depth, location, and frame
135 of the VPBRSTAT monitor signal
136
137 - cirrus,zerofill : 3 8 bit values to set the depth, location, and frame\
138 of the ZEROFILL packet in the monitor signal
139
140 Example:
141
142 cs35l35: cs35l35@20 {
143 compatible = "cirrus,cs35l35";
144 reg = <0x20>;
145 VA-supply = <&dummy_vreg>;
146 VP-supply = <&dummy_vreg>;
147 reset-gpios = <&axi_gpio 54 0>;
148 interrupt-parent = <&gpio8>;
149 interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
150 cirrus,boost-ctl-millivolt = <9000>;
151
152 cirrus,stereo-config;
153 cirrus,audio-channel = <0x00>;
154 cirrus,advisory-channel = <0x01>;
155 cirrus,shared-boost;
156
157 cirrus,classh-internal-algo {
158 cirrus,classh-bst-overide;
159 cirrus,classh-bst-max-limit = <0x01>;
160 cirrus,classh-mem-depth = <0x01>;
161 cirrus,classh-release-rate = <0x08>;
162 cirrus,classh-headroom-millivolt = <0x0B>;
163 cirrus,classh-wk-fet-disable = <0x01>;
164 cirrus,classh-wk-fet-delay = <0x04>;
165 cirrus,classh-wk-fet-thld = <0x01>;
166 cirrus,classh-vpch-auto = <0x01>;
167 cirrus,classh-vpch-rate = <0x02>;
168 cirrus,classh-vpch-man = <0x05>;
169 };
170
171 /* Depth, Location, Frame */
172 cirrus,monitor-signal-format {
173 cirrus,imon = /bits/ 8 <0x03 0x00 0x01>;
174 cirrus,vmon = /bits/ 8 <0x03 0x00 0x00>;
175 cirrus,vpmon = /bits/ 8 <0x03 0x04 0x00>;
176 cirrus,vbstmon = /bits/ 8 <0x03 0x04 0x01>;
177 cirrus,vpbrstat = /bits/ 8 <0x00 0x04 0x00>;
178 cirrus,zerofill = /bits/ 8 <0x00 0x00 0x00>;
179 };
180
181 };
182

3. 한국어 전문 번역

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

CS35L35 필수 속성

1-19

CS35L35 boosted speaker amplifier의 `compatible` 값은 `cirrus,cs35l35`이고, `reg`에는 I2C 장치 주소를 지정합니다.

`VA-supply`와 `VP-supply`는 `Documentation/devicetree/bindings/regulator/regulator.txt`에 정의된 장치 전원 공급 장치를 가리킵니다.

`interrupts`는 CS35L35 IRQ 선 정보이며 자세한 interrupt 속성 규칙은 `Documentation/devicetree/bindings/interrupt-controller/interrupts.txt`를 참조합니다.

`cirrus,boost-ind-nanohenry`는 boost converter inductor 값을 nH 단위로 정합니다. 허용값은 1000nH, 1200nH, 1500nH, 2200nH입니다.

Stereo channel과 boost 공유

20-40

선택 속성 `reset-gpios`는 증폭기를 reset하는 GPIO입니다. Boolean `cirrus,stereo-config`는 증폭기 두 개를 사용하는 stereo 구성을 나타냅니다.

`cirrus,audio-channel`은 serial port에서 audio signal의 위치를 정하며 0은 left I2S channel, 1은 right I2S channel에서 받은 data packet을 뜻합니다. `cirrus,advisory-channel`도 같은 값 체계로 advisory signal의 위치를 정합니다.

Boolean `cirrus,shared-boost`는 장치 두 개가 boost `BST_CTL`을 공유할 때 advisory signal을 Class H로 추적하도록 합니다.

Boolean `cirrus,external-boost`는 장치가 외부 boost supply를 사용함을 나타냅니다. 다른 CS35L35의 boost를 공유하는 slave 장치도 외부 supply를 사용하는 것으로 간주합니다.

Serial port와 boost 전기 설정

41-68

`cirrus,sp-drv-strength`는 serial port drive strength를 정합니다. Datasheet 표 3-10에 규격이 있으며 값 0은 기본 1x, 값 1은 0.5x입니다.

`cirrus,sp-drv-unused`는 serial port의 사용하지 않는 slot을 구동하는 방법입니다. 값 0은 Hi-Z, 기본값 2는 0을 출력하고 값 3은 1을 출력합니다.

Boolean `cirrus,bst-pdn-fet-on`은 boost PDN control이 전원을 끌 때 rectification FET를 켠 상태로 둘지 정합니다. VSPK가 외부에서 공급되면 FET는 꺼집니다.

`cirrus,boost-ctl-millivolt`는 boost converter output voltage를 2600mV부터 9000mV까지 100mV 단위로 설정하며 기본값은 VP입니다.

`cirrus,boost-peak-milliamp`는 boost FET를 흐르는 전류를 감시해 peak current limit를 설정합니다. 1680mA부터 최대 4480mA까지 110mA 단위로 증가하며 기본값은 2.46A입니다.

Boolean `cirrus,amp-gain-zc`는 amplifier gain 변경에 zero-cross를 사용할지 정합니다.

내부 Class H 알고리즘 제어

69-81

CS35L35 노드에는 자동 내부 H/G algorithm 제어를 비활성화하는 `cirrus,classh-internal-algo` 하위 노드를 하나 둘 수 있습니다. 이 노드를 사용하지 않으면 장치가 Class H algorithm을 내부적으로 관리합니다.

속성을 직접 조정할 때는 Datasheet의 4.3절 Internal Class H Algorithm을 참조해야 합니다.

원문은 내부 algorithm보다 이 Class H 제어를 우선 사용하거나 조정할 때 장치와 주변 부품에 심각한 손상이 발생할 수 있다고 강하게 경고합니다.

Class H 세부 속성

82-104

Datasheet 7.29절 Class H Control에는 Boolean `cirrus,classh-bst-overide`, `cirrus,classh-bst-max-limit`, `cirrus,classh-mem-depth`가 대응합니다.

7.30절 Class H Headroom Control에는 `cirrus,classh-headroom`, 7.31절 Class H Release Rate에는 `cirrus,classh-release-rate`가 대응합니다.

7.32절 Class H Weak FET Drive Control에는 `cirrus,classh-wk-fet-disable`, `cirrus,classh-wk-fet-delay`, `cirrus,classh-wk-fet-thld`가 대응합니다.

7.34절 Class H VP Control에는 `cirrus,classh-vpch-auto`, `cirrus,classh-vpch-rate`, `cirrus,classh-vpch-man`이 대응합니다.

속성 이름의 `overide` 철자는 원문과 binding에 적힌 형태를 그대로 유지했습니다.

Monitor signal format 하위 노드

105-121

CS35L35 노드에는 algorithm이 사용할 monitoring signal의 depth, location, frame을 조정하는 `cirrus,monitor-signal-format` 하위 노드를 하나 둘 수 있습니다. 자세한 serial-port control은 Datasheet 4.8.2~4.8.4절을 참조합니다.

`cirrus,monitor-signal-format`의 각 monitor 설정은 세 개의 8-bit 값으로 depth, location, frame을 나타냅니다. 이 노드를 사용하지 않으면 여섯 monitor signal의 기본값을 사용합니다.

각 monitoring signal의 depth, location, frame 값은 Datasheet 7.44~7.53절에 나열되어 있습니다.

여섯 monitor signal

122-139

`cirrus,imon`은 IMON monitor signal의 depth, location, frame과 ADC scale을 정하는 네 개의 8-bit 값입니다.

`cirrus,vmon`, `cirrus,vpmon`, `cirrus,vbstmon`, `cirrus,vpbrstat`은 각각 VMON, VPMON, VBSTMON, VPBRSTAT monitor signal의 depth, location, frame을 정하는 세 개의 8-bit 값입니다.

`cirrus,zerofill`은 monitor signal 안의 ZEROFILL packet에 사용할 depth, location, frame을 정하는 세 개의 8-bit 값입니다.

CS35L35와 Class H 예제

140-169

예제는 I2C 주소 `0x20`, VA·VP supply, reset GPIO, level-low interrupt와 9000mV boost를 지정합니다. Stereo mode에서 audio는 left, advisory는 right channel을 사용하고 boost를 공유합니다.

`cirrus,classh-internal-algo` 하위 노드는 boost override와 limit, memory depth, release rate, headroom, weak-FET 조건과 Vpch 자동 추적 값을 구성합니다.

cs35l35: cs35l35@20 {
        compatible = "cirrus,cs35l35";
        reg = <0x20>;
        VA-supply = <&dummy_vreg>;
        VP-supply = <&dummy_vreg>;
        reset-gpios = <&axi_gpio 54 0>;
        interrupt-parent = <&gpio8>;
        interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
        cirrus,boost-ctl-millivolt = <9000>;

        cirrus,stereo-config;
        cirrus,audio-channel = <0x00>;
        cirrus,advisory-channel = <0x01>;
        cirrus,shared-boost;

        cirrus,classh-internal-algo {
                cirrus,classh-bst-overide;
                cirrus,classh-bst-max-limit = <0x01>;
                cirrus,classh-mem-depth = <0x01>;
                cirrus,classh-release-rate = <0x08>;
                cirrus,classh-headroom-millivolt = <0x0B>;
                cirrus,classh-wk-fet-disable = <0x01>;
                cirrus,classh-wk-fet-delay = <0x04>;
                cirrus,classh-wk-fet-thld = <0x01>;
                cirrus,classh-vpch-auto = <0x01>;
                cirrus,classh-vpch-rate = <0x02>;
                cirrus,classh-vpch-man = <0x05>;
        };

Monitor format 예제

170-181

`cirrus,monitor-signal-format` 예제는 `/bits/ 8` 배열로 IMON, VMON, VPMON, VBSTMON, VPBRSTAT, ZEROFILL packet의 depth, location, frame을 배치합니다.

        /* Depth, Location, Frame */
        cirrus,monitor-signal-format {
                cirrus,imon = /bits/ 8 <0x03 0x00 0x01>;
                cirrus,vmon = /bits/ 8 <0x03 0x00 0x00>;
                cirrus,vpmon = /bits/ 8 <0x03 0x04 0x00>;
                cirrus,vbstmon = /bits/ 8 <0x03 0x04 0x01>;
                cirrus,vpbrstat = /bits/ 8 <0x00 0x04 0x00>;
                cirrus,zerofill = /bits/ 8 <0x00 0x00 0x00>;
        };

};