1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mfd/stericsson,ab8500.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: ST-Ericsson Analog Baseband AB8500 and AB8505
8
9maintainers:
10  - Linus Walleij <linus.walleij@linaro.org>
11
12description:
13  the AB8500 "Analog Baseband" is the mixed-signals integrated circuit
14  handling power management (regulators), analog-to-digital conversion
15  (ADC), battery charging, fuel gauging of the battery, battery-backed
16  RTC, PWM, USB PHY and some GPIO lines in the ST-Ericsson U8500 platforms
17  in connection with the DB8500 digital baseband. The DB8500 PRCMU
18  communicates directly and autonomously with the AB8500 and thus it
19  appears as a subnode of the DB8500 PRCMU. An altered version called
20  AB8505 also exist, the difference in AB8505 is that some of the USB and
21  USB charging handling has changed, and it has an embedded USB-to-serial
22  converter. Most subblocks takes their interrupts directly from the
23  AB8500 embedded interrupt controller.
24
25properties:
26  $nodename:
27    pattern: '^ab850[05]$'
28
29  compatible:
30    enum:
31      - stericsson,ab8500
32      - stericsson,ab8505
33
34  interrupts:
35    maxItems: 1
36
37  interrupt-controller: true
38
39  '#interrupt-cells':
40    const: 2
41
42  # Some subnodes use a reg, some don't. Those that do use a single cell.
43  '#address-cells':
44    const: 1
45
46  '#size-cells':
47    const: 0
48
49  clock-controller:
50    description: Node describing the AB8500 clock controller. This
51      provides the reference clock for the entire U8500 system and
52      the DB8500 counterpart.
53    type: object
54
55    properties:
56      compatible:
57        const: stericsson,ab8500-clk
58
59      '#clock-cells':
60        const: 1
61
62  gpio:
63    description: Node describing the AB8500 GPIO controller. A few
64      GPIO pins available for misc usage.
65    type: object
66
67    properties:
68      compatible:
69        enum:
70          - stericsson,ab8500-gpio
71          - stericsson,ab8505-gpio
72
73      gpio-controller: true
74
75      '#gpio-cells':
76        const: 2
77
78  rtc:
79    description: Node describing the AB8500 battery-backed RTC.
80    type: object
81
82    properties:
83      compatible:
84        const: stericsson,ab8500-rtc
85
86      interrupts:
87        items:
88          - description: 60 second interval alarm interrupt
89          - description: RTC alarm
90
91      interrupt-names:
92        items:
93          - const: 60S
94          - const: ALARM
95
96  adc:
97    description: Node describing the AB8500 general purpose analog to digital
98      converter, GPADC.
99    type: object
100
101    properties:
102      compatible:
103        const: stericsson,ab8500-gpadc
104
105      # AB8505 only supports one (software) EOC interrupt
106      interrupts:
107        minItems: 1
108        maxItems: 2
109
110      interrupt-names: true
111
112      vddadc-supply: true
113
114      '#address-cells':
115        const: 1
116
117      '#size-cells':
118        const: 0
119
120      '#io-channel-cells':
121        const: 1
122
123    patternProperties:
124      "^channel@[0-9a-f]+$":
125        type: object
126        $ref: ../iio/adc/adc.yaml#
127        description: Represents each of the external channels which are
128          connected to the ADC.
129
130        properties:
131          reg:
132            items:
133              minimum: 1
134              maximum: 31
135
136        required:
137          - reg
138
139        additionalProperties: false
140
141    required:
142      - compatible
143      - interrupts
144      - interrupt-names
145      - vddadc-supply
146      - '#address-cells'
147      - '#size-cells'
148      - '#io-channel-cells'
149
150    additionalProperties: false
151
152  thermal:
153    description: Node describing the AB8500 thermal control block. All this block
154      really does is to fire an interrupt when the die becomes 130 degrees Celsius
155      in temperature.
156    type: object
157
158    properties:
159      compatible:
160        const: stericsson,abx500-temp
161
162      interrupts:
163        items:
164          - description: Thermal warm warning interrupt
165
166      interrupt-names:
167        items:
168          - const: ABX500_TEMP_WARM
169
170    required:
171      - compatible
172      - interrupts
173      - interrupt-names
174
175    additionalProperties: false
176
177  ab8500_fg:
178    description: Node describing the AB8500 fuel gauge control block.
179    type: object
180    $ref: ../power/supply/stericsson,ab8500-fg.yaml
181
182  ab8500_btemp:
183    description: Node describing the AB8500 battery temperature control block.
184    type: object
185    $ref: ../power/supply/stericsson,ab8500-btemp.yaml
186
187  ab8500_charger:
188    description: Node describing the AB8500 battery charger control block.
189    type: object
190    $ref: ../power/supply/stericsson,ab8500-charger.yaml
191
192  ab8500_chargalg:
193    description: Node describing the AB8500 battery charger algorithm.
194    type: object
195    $ref: ../power/supply/stericsson,ab8500-chargalg.yaml
196
197  phy:
198    description: Node describing the AB8500 USB PHY control block.
199    type: object
200
201    properties:
202      compatible:
203        const: stericsson,ab8500-usb
204
205      interrupts:
206        items:
207          - description: ID wakeup rising IRQ
208          - description: ID wakeup falling IRQ
209          - description: VBUS detection falling IRQ
210          - description: VBUS detection rising IRQ
211          - description: USB link status change IRQ
212          - description: ADP probe plug IRQ
213          - description: ADP probe unplug IRQ
214
215      interrupt-names:
216        items:
217          - const: ID_WAKEUP_R
218          - const: ID_WAKEUP_F
219          - const: VBUS_DET_F
220          - const: VBUS_DET_R
221          - const: USB_LINK_STATUS
222          - const: USB_ADP_PROBE_PLUG
223          - const: USB_ADP_PROBE_UNPLUG
224
225      vddulpivio18-supply: true
226      v-ape-supply: true
227      musb_1v8-supply: true
228
229      clocks:
230        items:
231          - description: PRCMY system clock
232
233      clock-names:
234        items:
235          - const: sysclk
236
237      '#phy-cells':
238        const: 0
239
240    required:
241      - compatible
242      - interrupts
243      - interrupt-names
244      - vddulpivio18-supply
245      - v-ape-supply
246      - musb_1v8-supply
247      - clocks
248      - clock-names
249      - '#phy-cells'
250
251    additionalProperties: false
252
253  key:
254    description: Node describing the AB8500 power-on key control block.
255    type: object
256
257    properties:
258      compatible:
259        const: stericsson,ab8500-poweron-key
260
261      interrupts:
262        items:
263          - description: ON key falling IRQ
264          - description: ON key rising IRQ
265
266      interrupt-names:
267        items:
268          - const: ONKEY_DBF
269          - const: ONKEY_DBR
270
271    required:
272      - compatible
273      - interrupts
274      - interrupt-names
275
276    additionalProperties: false
277
278  ab8500-sysctrl:
279    description: Node describing the AB8500 system control block.
280    type: object
281
282    properties:
283      compatible:
284        const: stericsson,ab8500-sysctrl
285
286    required:
287      - compatible
288
289    additionalProperties: false
290
291  codec:
292    description: Node describing the AB8500 audio codec block.
293    type: object
294
295    properties:
296      compatible:
297        const: stericsson,ab8500-codec
298
299      V-AUD-supply: true
300      V-AMIC1-supply: true
301      V-AMIC2-supply: true
302      V-DMIC-supply: true
303
304      clocks:
305        items:
306          - description: Audio system clock
307
308      clock-names:
309        items:
310          - const: audioclk
311
312      stericsson,earpeice-cmv:
313        description: Earpeice voltage
314        $ref: /schemas/types.yaml#/definitions/uint32
315        enum: [ 950, 1100, 1270, 1580 ]
316
317    required:
318      - compatible
319
320    additionalProperties: false
321
322  regulator:
323    description: Node describing the AB8500 internal regulators.
324    type: object
325
326    properties:
327      compatible:
328        enum:
329          - stericsson,ab8500-regulator
330          - stericsson,ab8505-regulator
331
332      vin-supply:
333        description: The regulator supplying all of the internal regulators
334          with power.
335
336      ab8500_ldo_aux1:
337        description: The voltage for the auxilary LDO regulator 1
338        type: object
339        $ref: ../regulator/regulator.yaml#
340
341      ab8500_ldo_aux2:
342        description: The voltage for the auxilary LDO regulator 2
343        type: object
344        $ref: ../regulator/regulator.yaml#
345
346      ab8500_ldo_aux3:
347        description: The voltage for the auxilary LDO regulator 3
348        type: object
349        $ref: ../regulator/regulator.yaml#
350
351      ab8500_ldo_aux4:
352        description: The voltage for the auxilary LDO regulator 4
353          only present on AB8505
354        type: object
355        $ref: ../regulator/regulator.yaml#
356
357      ab8500_ldo_aux5:
358        description: The voltage for the auxilary LDO regulator 5
359          only present on AB8505
360        type: object
361        $ref: ../regulator/regulator.yaml#
362
363      ab8500_ldo_aux6:
364        description: The voltage for the auxilary LDO regulator 6
365          only present on AB8505
366        type: object
367        $ref: ../regulator/regulator.yaml#
368
369      # There is never any AUX7 regulator which is confusing
370
371      ab8500_ldo_aux8:
372        description: The voltage for the auxilary LDO regulator 8
373          only present on AB8505
374        type: object
375        $ref: ../regulator/regulator.yaml#
376
377      ab8500_ldo_intcore:
378        description: The LDO regulator for the internal core voltage
379          of the AB8500
380        type: object
381        $ref: ../regulator/regulator.yaml#
382
383      ab8500_ldo_adc:
384        description: Analog power regulator for the analog to digital converter
385          ADC, only present on AB8505
386        type: object
387        $ref: ../regulator/regulator.yaml#
388
389      ab8500_ldo_tvout:
390        description: The voltage for the TV output regulator, incidentally
391          this voltage is also used for other purposes such as measuring
392          the temperature of the NTC thermistor on the battery.
393          Only present on AB8500.
394        type: object
395        $ref: ../regulator/regulator.yaml#
396
397      ab8500_ldo_audio:
398        description: The LDO regulator for the audio codec output
399        type: object
400        $ref: ../regulator/regulator.yaml#
401
402      ab8500_ldo_anamic1:
403        description: The LDO regulator for the analog microphone 1
404        type: object
405        $ref: ../regulator/regulator.yaml#
406
407      ab8500_ldo_anamic2:
408        description: The LDO regulator for the analog microphone 2
409        type: object
410        $ref: ../regulator/regulator.yaml#
411
412      ab8500_ldo_dmic:
413        description: The LDO regulator for the digital microphone
414          only present on AB8500
415        type: object
416        $ref: ../regulator/regulator.yaml#
417
418      ab8500_ldo_ana:
419        description: Analog power regulator for CSI and DSI interfaces,
420          Camera Serial Interface CSI and Display Serial Interface DSI.
421        type: object
422        $ref: ../regulator/regulator.yaml#
423
424    required:
425      - compatible
426
427    additionalProperties: false
428
429
430  regulator-external:
431    description: Node describing the AB8500 external regulators. This
432      concerns the autonomous regulators VSMPS1, VSMPS2 and VSMPS3
433      that are normally controlled by external electronics but also
434      sometimes need to be explicitly controlled by software.
435    type: object
436
437    properties:
438      compatible:
439        const: stericsson,ab8500-ext-regulator
440
441      ab8500_ext1:
442        description: The voltage for the VSMPS1 external regulator
443        type: object
444        $ref: ../regulator/regulator.yaml#
445
446      ab8500_ext2:
447        description: The voltage for the VSMPS2 external regulator
448        type: object
449        $ref: ../regulator/regulator.yaml#
450
451      ab8500_ext3:
452        description: The voltage for the VSMPS3 external regulator
453        type: object
454        $ref: ../regulator/regulator.yaml#
455
456    required:
457      - compatible
458
459    additionalProperties: false
460
461patternProperties:
462  "^pwm@[1-9]+?$":
463    type: object
464    $ref: ../pwm/pwm.yaml#
465    description: Represents each of the PWM blocks in the AB8500
466
467    properties:
468      compatible:
469        const: stericsson,ab8500-pwm
470
471      reg: true
472
473      clocks:
474        items:
475          - description: internal clock
476
477      clock-names:
478        items:
479          - const: intclk
480
481    required:
482      - compatible
483      - reg
484
485required:
486  - compatible
487  - clock-controller
488  - gpio
489  - rtc
490  - adc
491  - thermal
492  - ab8500_fg
493  - ab8500_btemp
494  - ab8500_charger
495  - ab8500_chargalg
496  - phy
497  - key
498  - regulator
499
500additionalProperties: false
501