On Tue, Apr 13, 2021 at 01:03:20AM +0200, Sebastian Reichel wrote: > Convert the binding to DT schema format. > > I slightly modified the binding by renaming the gpio node from > ab8500-gpio to ab8500-gpiocontroller, since the -gpio suffix > is used for gpio consumers. > > Signed-off-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx> > --- > .../devicetree/bindings/mfd/ab8500.txt | 280 ------- > .../bindings/mfd/stericsson,ab8500.yaml | 696 ++++++++++++++++++ > .../bindings/pinctrl/ste,abx500.txt | 318 -------- > .../supply/stericsson,ab8500-battery.txt | 34 - > 4 files changed, 696 insertions(+), 632 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/mfd/ab8500.txt > create mode 100644 Documentation/devicetree/bindings/mfd/stericsson,ab8500.yaml > delete mode 100644 Documentation/devicetree/bindings/pinctrl/ste,abx500.txt > delete mode 100644 Documentation/devicetree/bindings/power/supply/stericsson,ab8500-battery.txt > diff --git a/Documentation/devicetree/bindings/mfd/stericsson,ab8500.yaml b/Documentation/devicetree/bindings/mfd/stericsson,ab8500.yaml > new file mode 100644 > index 000000000000..80d33f21d72f > --- /dev/null > +++ b/Documentation/devicetree/bindings/mfd/stericsson,ab8500.yaml > @@ -0,0 +1,696 @@ > +# SPDX-License-Identifier: GPL-2.0 > +%YAML 1.2 > +--- > +$id: "http://devicetree.org/schemas/mfd/stericsson,ab8500.yaml#" > +$schema: "http://devicetree.org/meta-schemas/core.yaml#" > + > +title: AB8500 Multi-Functional Device > + > +maintainers: > + - Linus Walleij <linus.walleij@xxxxxxxxxx> > + - Lee Jones <lee.jones@xxxxxxxxxx> > + > +properties: > + compatible: > + enum: > + - stericsson,ab8500 > + - stericsson,ab8505 > + > + interrupts: > + maxItems: 1 > + > + interrupt-controller: true > + > + "#interrupt-cells": > + description: First cell is IRQ number, second cell is flags > + const: 2 > + > + clock-controller: > + type: object > + properties: > + compatible: > + const: stericsson,ab8500-clk > + > + "#clock-cells": > + const: 1 > + > + required: > + - compatible > + - "#clock-cells" > + > + additionalProperties: false > + > + ab8500-rtc: > + type: object > + properties: > + compatible: > + const: stericsson,ab8500-rtc > + > + interrupts: > + maxItems: 2 > + > + interrupt-names: > + items: > + - const: 60S > + - const: ALARM > + > + required: > + - compatible > + - interrupts > + - interrupt-names > + > + additionalProperties: false > + > + ab8500-gpadc: > + type: object > + properties: > + compatible: > + const: stericsson,ab8500-gpadc > + > + interrupts: > + minItems: 1 > + maxItems: 2 > + > + interrupt-names: > + minItems: 1 > + maxItems: 2 > + items: > + anyOf: > + - const: HW_CONV_END > + - const: SW_CONV_END > + > + vddadc-supply: > + description: analog supply > + > + "#address-cells": > + const: 1 > + > + "#size-cells": > + const: 0 > + > + "#io-channel-cells": > + const: 1 > + > + required: > + - compatible > + > + patternProperties: > + "^channel@[0-9a-f]+$": > + type: object > + properties: > + reg: > + maxItems: 1 maximum: 0x1f ? > + > + required: > + - reg > + > + additionalProperties: false > + > + additionalProperties: false > + > + ab8500_temp: > + type: object > + properties: > + compatible: > + const: stericsson,abx500-temp > + > + interrupts: > + maxItems: 1 > + > + interrupt-names: > + items: > + - const: ABX500_TEMP_WARM > + > + io-channels: > + maxItems: 2 > + > + io-channel-names: > + items: > + - const: aux1 > + - const: aux2 > + > + required: > + - compatible > + > + additionalProperties: false > + > + ab8500_btemp: > + type: object > + $ref: ../power/supply/stericsson,ab8500-btemp.yaml > + > + ab8500_charger: > + type: object > + $ref: ../power/supply/stericsson,ab8500-charger.yaml > + > + ab8500_fg: > + type: object > + $ref: ../power/supply/stericsson,ab8500-fg.yaml > + > + ab8500_chargalg: > + type: object > + $ref: ../power/supply/stericsson,ab8500-chargalg.yaml > + > + ab8500_battery: > + type: object > + properties: > + stericsson,battery-type: > + description: battery chemistry > + enum: > + - UNKNOWN > + - NiMH > + - LION > + - LIPO > + - LiFe > + - NiCd > + - LiMn > + > + thermistor-on-batctrl: > + type: boolean > + description: > + if set 'batctrl' is used for thermal measurement, otherwise 'btemp' > + is used for thermal measurement. > + > + additionalProperties: false > + > + ab8500_usb: > + type: object > + properties: > + compatible: > + const: stericsson,ab8500-usb > + > + interrupts: > + maxItems: 7 > + > + interrupt-names: > + items: > + - const: ID_WAKEUP_R > + - const: ID_WAKEUP_F > + - const: VBUS_DET_F > + - const: VBUS_DET_R > + - const: USB_LINK_STATUS > + - const: USB_ADP_PROBE_PLUG > + - const: USB_ADP_PROBE_UNPLUG > + > + vddulpivio18-supply: > + description: 1.8V VIO > + > + v-ape-supply: > + description: V-APE > + > + musb_1v8-supply: > + description: MUSB 1.8V > + > + clocks: > + maxItems: 1 > + > + clock-names: > + items: > + - const: sysclk > + > + additionalProperties: false > + > + ab8500-ponkey: > + type: object > + properties: > + compatible: > + const: stericsson,ab8500-poweron-key > + > + interrupts: > + maxItems: 2 > + > + interrupt-names: > + items: > + - const: ONKEY_DBF > + - const: ONKEY_DBR > + > + additionalProperties: false > + > + ab8500-sysctrl: > + type: object > + properties: > + compatible: > + const: stericsson,ab8500-sysctrl > + > + additionalProperties: false > + > + ab8500-debugfs: > + type: object > + properties: > + compatible: > + const: stericsson,ab8500-debug > + > + additionalProperties: false > + > + ab8500-codec: > + type: object > + properties: > + compatible: > + const: stericsson,ab8500-codec > + > + V-AUD-supply: > + description: V-AUD supply > + > + V-AMIC1-supply: > + description: V-AMIC1 supply > + > + V-AMIC2-supply: > + description: V-AMIC2 supply > + > + V-DMIC-supply: > + description: V-DMIC supply > + > + clocks: > + maxItems: 1 > + > + clock-names: > + items: > + - const: audioclk > + > + stericsson,earpeice-cmv: > + description: earpiece voltage in mV > + enum: [950, 1100, 1270, 1580] > + $ref: /schemas/types.yaml#/definitions/uint32 > + > + additionalProperties: false > + > + ab8500-ext-regulators: > + type: object > + properties: > + compatible: > + const: stericsson,ab8500-ext-regulator > + > + patternProperties: > + "^ab8500_ext[1-3]$": > + $ref: /schemas/regulator/regulator.yaml > + > + additionalProperties: false > + > +patternProperties: > + "^ab8500-pwm(-[1-3])?$": > + type: object > + properties: > + compatible: > + const: stericsson,ab8500-pwm > + > + clocks: > + maxItems: 1 > + > + clock-names: > + items: > + - const: intclk > + > + additionalProperties: false > + "^ab850[05]-gpiocontroller$": > + type: object > + properties: > + compatible: > + enum: > + - stericsson,ab8500-gpio > + - stericsson,ab8505-gpio > + - stericsson,ab8540-gpio > + - stericsson,ab9540-gpio > + > + gpio-controller: true > + > + "#gpio-cells": > + const: 2 > + > + required: > + - compatible > + - gpio-controller > + - "#gpio-cells" > + > + patternProperties: > + "^.*$": > + $ref: "/schemas/pinctrl/pincfg-node.yaml" This is going to match on all properties. Ideally, we'd have some pattern to match on, but you can do this instead: additionalProperties: type: object $ref: "/schemas/pinctrl/pincfg-node.yaml" > + > + additionalProperties: false > + > + "^ab850[05]-regulators$": > + type: object > + properties: > + compatible: > + enum: > + - stericsson,ab8500-regulator > + - stericsson,ab8505-regulator > + > + vin-supply: > + description: input supply > + > + patternProperties: > + "^ab8500_ldo_adc$|^ab8500_ldo_aux[1-8]$|^ab8500_ldo_intcore$|^ab8500_ldo_tvout$|^ab8500_ldo_audio$|^ab8500_ldo_anamic[12]$|^ab8500_ldo_dmic$|^ab8500_ldo_ana$": Can't you factor out 'ab8500_ldo_'? > + $ref: /schemas/regulator/regulator.yaml > + > + additionalProperties: false > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + #include <dt-bindings/interrupt-controller/irq.h> > + #include <dt-bindings/mfd/dbx500-prcmu.h> > + #include <dt-bindings/clock/ste-ab8500.h> > + ab8500 { > + compatible = "stericsson,ab8500"; > + interrupt-parent = <&intc>; > + interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-controller; > + #interrupt-cells = <2>; > + > + ab8500_clock: clock-controller { > + compatible = "stericsson,ab8500-clk"; > + #clock-cells = <1>; > + }; > + > + ab8500_gpio: ab8500-gpiocontroller { > + compatible = "stericsson,ab8500-gpio"; > + gpio-controller; > + #gpio-cells = <2>; > + }; > + > + ab8500-rtc { > + compatible = "stericsson,ab8500-rtc"; > + interrupts = <17 IRQ_TYPE_LEVEL_HIGH>, > + <18 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "60S", "ALARM"; > + }; > + > + gpadc: ab8500-gpadc { > + compatible = "stericsson,ab8500-gpadc"; > + interrupts = <32 IRQ_TYPE_LEVEL_HIGH>, > + <39 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "HW_CONV_END", "SW_CONV_END"; > + vddadc-supply = <&ab8500_ldo_tvout_reg>; > + #address-cells = <1>; > + #size-cells = <0>; > + #io-channel-cells = <1>; > + > + /* GPADC channels */ > + bat_ctrl: channel@1 { > + reg = <0x01>; > + }; > + btemp_ball: channel@2 { > + reg = <0x02>; > + }; > + main_charger_v: channel@3 { > + reg = <0x03>; > + }; > + acc_detect1: channel@4 { > + reg = <0x04>; > + }; > + acc_detect2: channel@5 { > + reg = <0x05>; > + }; > + adc_aux1: channel@6 { > + reg = <0x06>; > + }; > + adc_aux2: channel@7 { > + reg = <0x07>; > + }; > + main_batt_v: channel@8 { > + reg = <0x08>; > + }; > + vbus_v: channel@9 { > + reg = <0x09>; > + }; > + main_charger_c: channel@a { > + reg = <0x0a>; > + }; > + usb_charger_c: channel@b { > + reg = <0x0b>; > + }; > + bk_bat_v: channel@c { > + reg = <0x0c>; > + }; > + die_temp: channel@d { > + reg = <0x0d>; > + }; > + usb_id: channel@e { > + reg = <0x0e>; > + }; > + xtal_temp: channel@12 { > + reg = <0x12>; > + }; > + vbat_true_meas: channel@13 { > + reg = <0x13>; > + }; > + bat_ctrl_and_ibat: channel@1c { > + reg = <0x1c>; > + }; > + vbat_meas_and_ibat: channel@1d { > + reg = <0x1d>; > + }; > + vbat_true_meas_and_ibat: channel@1e { > + reg = <0x1e>; > + }; > + bat_temp_and_ibat: channel@1f { > + reg = <0x1f>; > + }; > + }; > + > + ab8500_temp { > + compatible = "stericsson,abx500-temp"; > + interrupts = <3 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "ABX500_TEMP_WARM"; > + io-channels = <&gpadc 0x06>, > + <&gpadc 0x07>; > + io-channel-names = "aux1", "aux2"; > + }; > + > + ab8500_battery: ab8500_battery { > + stericsson,battery-type = "LIPO"; > + thermistor-on-batctrl; > + }; > + > + ab8500_fg { > + compatible = "stericsson,ab8500-fg"; > + interrupts = <24 IRQ_TYPE_LEVEL_HIGH>, > + <8 IRQ_TYPE_LEVEL_HIGH>, > + <28 IRQ_TYPE_LEVEL_HIGH>, > + <27 IRQ_TYPE_LEVEL_HIGH>, > + <26 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "NCONV_ACCU", > + "BATT_OVV", > + "LOW_BAT_F", > + "CC_INT_CALIB", > + "CCEOC"; > + battery = <&ab8500_battery>; > + io-channels = <&gpadc 0x08>; > + io-channel-names = "main_bat_v"; > + }; > + > + ab8500_btemp { > + compatible = "stericsson,ab8500-btemp"; > + interrupts = <20 IRQ_TYPE_LEVEL_HIGH>, > + <80 IRQ_TYPE_LEVEL_HIGH>, > + <83 IRQ_TYPE_LEVEL_HIGH>, > + <81 IRQ_TYPE_LEVEL_HIGH>, > + <82 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "BAT_CTRL_INDB", > + "BTEMP_LOW", > + "BTEMP_HIGH", > + "BTEMP_LOW_MEDIUM", > + "BTEMP_MEDIUM_HIGH"; > + battery = <&ab8500_battery>; > + io-channels = <&gpadc 0x02>, > + <&gpadc 0x01>; > + io-channel-names = "btemp_ball", > + "bat_ctrl"; > + }; > + > + ab8500_charger { > + compatible = "stericsson,ab8500-charger"; > + interrupts = <10 IRQ_TYPE_LEVEL_HIGH>, > + <11 IRQ_TYPE_LEVEL_HIGH>, > + <0 IRQ_TYPE_LEVEL_HIGH>, > + <107 IRQ_TYPE_LEVEL_HIGH>, > + <106 IRQ_TYPE_LEVEL_HIGH>, > + <14 IRQ_TYPE_LEVEL_HIGH>, > + <15 IRQ_TYPE_LEVEL_HIGH>, > + <79 IRQ_TYPE_LEVEL_HIGH>, > + <105 IRQ_TYPE_LEVEL_HIGH>, > + <104 IRQ_TYPE_LEVEL_HIGH>, > + <89 IRQ_TYPE_LEVEL_HIGH>, > + <22 IRQ_TYPE_LEVEL_HIGH>, > + <21 IRQ_TYPE_LEVEL_HIGH>, > + <16 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "MAIN_CH_UNPLUG_DET", > + "MAIN_CHARGE_PLUG_DET", > + "MAIN_EXT_CH_NOT_OK", > + "MAIN_CH_TH_PROT_R", > + "MAIN_CH_TH_PROT_F", > + "VBUS_DET_F", > + "VBUS_DET_R", > + "USB_LINK_STATUS", > + "USB_CH_TH_PROT_R", > + "USB_CH_TH_PROT_F", > + "USB_CHARGER_NOT_OKR", > + "VBUS_OVV", > + "CH_WD_EXP", > + "VBUS_CH_DROP_END"; > + battery = <&ab8500_battery>; > + vddadc-supply = <&ab8500_ldo_tvout_reg>; > + io-channels = <&gpadc 0x03>, > + <&gpadc 0x0a>, > + <&gpadc 0x09>, > + <&gpadc 0x0b>; > + io-channel-names = "main_charger_v", > + "main_charger_c", > + "vbus_v", > + "usb_charger_c"; > + }; > + > + ab8500_chargalg { > + compatible = "stericsson,ab8500-chargalg"; > + battery = <&ab8500_battery>; > + }; > + > + ab8500_usb { > + compatible = "stericsson,ab8500-usb"; > + interrupts = <90 IRQ_TYPE_LEVEL_HIGH>, > + <96 IRQ_TYPE_LEVEL_HIGH>, > + <14 IRQ_TYPE_LEVEL_HIGH>, > + <15 IRQ_TYPE_LEVEL_HIGH>, > + <79 IRQ_TYPE_LEVEL_HIGH>, > + <74 IRQ_TYPE_LEVEL_HIGH>, > + <75 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "ID_WAKEUP_R", > + "ID_WAKEUP_F", > + "VBUS_DET_F", > + "VBUS_DET_R", > + "USB_LINK_STATUS", > + "USB_ADP_PROBE_PLUG", > + "USB_ADP_PROBE_UNPLUG"; > + vddulpivio18-supply = <&ab8500_ldo_intcore_reg>; > + v-ape-supply = <&db8500_vape_reg>; > + musb_1v8-supply = <&db8500_vsmps2_reg>; > + clocks = <&prcmu_clk PRCMU_SYSCLK>; > + clock-names = "sysclk"; > + }; > + > + ab8500-ponkey { > + compatible = "stericsson,ab8500-poweron-key"; > + interrupts = <6 IRQ_TYPE_LEVEL_HIGH>, > + <7 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "ONKEY_DBF", "ONKEY_DBR"; > + }; > + > + ab8500-sysctrl { > + compatible = "stericsson,ab8500-sysctrl"; > + }; > + > + ab8500-pwm-1 { > + compatible = "stericsson,ab8500-pwm"; > + clocks = <&ab8500_clock AB8500_SYSCLK_INT>; > + clock-names = "intclk"; > + }; > + > + ab8500-pwm-2 { > + compatible = "stericsson,ab8500-pwm"; > + clocks = <&ab8500_clock AB8500_SYSCLK_INT>; > + clock-names = "intclk"; > + }; > + > + ab8500-pwm-3 { > + compatible = "stericsson,ab8500-pwm"; > + clocks = <&ab8500_clock AB8500_SYSCLK_INT>; > + clock-names = "intclk"; > + }; > + > + ab8500-debugfs { > + compatible = "stericsson,ab8500-debug"; > + }; > + > + codec: ab8500-codec { > + compatible = "stericsson,ab8500-codec"; > + > + V-AUD-supply = <&ab8500_ldo_audio_reg>; > + V-AMIC1-supply = <&ab8500_ldo_anamic1_reg>; > + V-AMIC2-supply = <&ab8500_ldo_anamic2_reg>; > + V-DMIC-supply = <&ab8500_ldo_dmic_reg>; > + > + clocks = <&ab8500_clock AB8500_SYSCLK_AUDIO>; > + clock-names = "audioclk"; > + > + stericsson,earpeice-cmv = <950>; /* Units in mV. */ > + }; > + > + ext_regulators: ab8500-ext-regulators { > + compatible = "stericsson,ab8500-ext-regulator"; > + > + ab8500_ext1_reg: ab8500_ext1 { > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + ab8500_ext2_reg: ab8500_ext2 { > + regulator-min-microvolt = <1360000>; > + regulator-max-microvolt = <1360000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + > + ab8500_ext3_reg: ab8500_ext3 { > + regulator-min-microvolt = <3400000>; > + regulator-max-microvolt = <3400000>; > + regulator-boot-on; > + }; > + }; > + > + ab8500-regulators { > + compatible = "stericsson,ab8500-regulator"; > + vin-supply = <&ab8500_ext3_reg>; > + > + // supplies to the display/camera > + ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { > + regulator-min-microvolt = <2500000>; > + regulator-max-microvolt = <2900000>; > + regulator-boot-on; > + /* BUG: If turned off MMC will be affected. */ > + regulator-always-on; > + }; > + > + // supplies to the on-board eMMC > + ab8500_ldo_aux2_reg: ab8500_ldo_aux2 { > + regulator-min-microvolt = <1100000>; > + regulator-max-microvolt = <3300000>; > + }; > + > + // supply for VAUX3; SDcard slots > + ab8500_ldo_aux3_reg: ab8500_ldo_aux3 { > + regulator-min-microvolt = <1100000>; > + regulator-max-microvolt = <3300000>; > + }; > + > + // supply for v-intcore12; VINTCORE12 LDO > + ab8500_ldo_intcore_reg: ab8500_ldo_intcore { > + }; > + > + // supply for tvout; gpadc; TVOUT LDO > + ab8500_ldo_tvout_reg: ab8500_ldo_tvout { > + }; > + > + // supply for ab8500-vaudio; VAUDIO LDO > + ab8500_ldo_audio_reg: ab8500_ldo_audio { > + }; > + > + // supply for v-anamic1 VAMIC1 LDO > + ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 { > + }; > + > + // supply for v-amic2; VAMIC2 LDO; reuse constants for AMIC1 > + ab8500_ldo_anamic2_reg: ab8500_ldo_anamic2 { > + }; > + > + // supply for v-dmic; VDMIC LDO > + ab8500_ldo_dmic_reg: ab8500_ldo_dmic { > + }; > + > + // supply for U8500 CSI/DSI; VANA LDO > + ab8500_ldo_ana_reg: ab8500_ldo_ana { > + }; > + }; > + };