On Sat, Sep 14, 2024 at 09:28:11PM +0800, Macpaul Lin wrote: > Convert the mfd: mediatek: mt6397 binding to DT schema format. > > MT6323, MT6358, and MT6397 are PMIC devices with multiple function > subdevices. They share a common PMIC design but have variations in > subdevice combinations. > > Key updates in this conversion: > > 1. RTC: > - Convert rtc-mt6397.txt and merge into parent MT6397 PMIC DT schema. > > 2. Regulators: > - Align to generic name "regulators". > - Update references from .txt to .yaml for mt6323, mt6358, and mt6397 > regulators. > - Simplify regulator name labels in device tree examples. > > 3. Audio Codec: > - Convert sound/mt6358.txt and merge into parent MT6397 PMIC DT schema. > - Align to generic name "audio-codec" for codec and sound subdevices. > - Add "mediatek,dmic-mode" and "Avdd-supply" properties. > > 4. Clocks: > - Align to generic name "clocks" for clockbuffer subdevices. > > 5. LEDs: > - Convert leds-mt6323.txt and merge into parent MT6397 PMIC DT schema. > - Update LED binding. > > 6. Keys: > - Add detailed descriptions for power and home keys. > - Add compatible: mediatek,mt6358-keys. > > 7. Power Controller: > - Convert mt6323-poweroff.txt and merge into parent MT6397 PMIC DT > schema. > - Add #power-domain-cells property to fix dt-binding check error. > - Clarify "BBPU" as "Baseband power up". > > 8. Pinctrl: > - Align to generic name "pinctrl" instead of "pin-controller". > > 9. Compatible: > - Drop "mediatek,mt6357" since there is a separated DT Schema > for PMIC MT6357. > > Additional updates: > - MAINTAINERS: Add co-maintainers and reference to > mfd/mediatek,mt6397.yaml for LED and power-controller drivers. > - input/mediatek,pmic-keys.yaml: Update reference to > mfd/mediatek,mt6397.yaml. > > Signed-off-by: Sen Chu <sen.chu@xxxxxxxxxxxx> > Signed-off-by: Macpaul Lin <macpaul.lin@xxxxxxxxxxxx> Limited review since this fails tests. > --- > .../bindings/input/mediatek,pmic-keys.yaml | 2 +- > .../devicetree/bindings/leds/leds-mt6323.txt | 63 - > .../bindings/mfd/mediatek,mt6397.yaml | 1077 +++++++++++++++++ > .../devicetree/bindings/mfd/mt6397.txt | 110 -- > .../bindings/power/reset/mt6323-poweroff.txt | 20 - > .../devicetree/bindings/rtc/rtc-mt6397.txt | 31 - > .../devicetree/bindings/sound/mt6358.txt | 26 - > MAINTAINERS | 8 +- > 8 files changed, 1084 insertions(+), 253 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/leds/leds-mt6323.txt > create mode 100644 Documentation/devicetree/bindings/mfd/mediatek,mt6397.yaml > delete mode 100644 Documentation/devicetree/bindings/mfd/mt6397.txt > delete mode 100644 Documentation/devicetree/bindings/power/reset/mt6323-poweroff.txt > delete mode 100644 Documentation/devicetree/bindings/rtc/rtc-mt6397.txt > delete mode 100644 Documentation/devicetree/bindings/sound/mt6358.txt > > Changes for v1: > - This patch depends on conversion of mediatek,mt6397-regulator.yaml > [1] https://lore.kernel.org/lkml/20240807091738.18387-1-macpaul.lin@xxxxxxxxxxxx/T/ > > Changes for v2: > - This patch has been made base on linux-next/master git repo. > - Keep the parent and child relationship with mediatek,pwrap in description. > [2] https://lore.kernel.org/all/20240826-slurp-earphone-0d5173923ae8@spud/ > - Keep the $ref for regulators since dt_binding_check didn't report any issue > based on linux-next/master repo. > - Fix description of mt6397/mt6323 devices, use "power management chip" > instead of "multifunction device" > - Drop unnecessary comments or description according to the review. > - Convert sub-modules to DT Schema: > - RTC, LEDs, power-controllers, regulators > - Drop duplicate sub node name and description for sub-modules > - RTC, Keys > - examples: > - drop parent pwrap node > - Add examples from mediatek,mt6323-regulator.yaml > - Add examples from mediatek,mt6358-regulator.yaml > - Add examples from mediatek,mt6397-regulator.yaml > - Complete the examples as could as possible. > > Changes for v3: > - Rebased on linux-next/master git repo near next-20240906. > - Revise commit message. > - Regulators: > - Use "additionalProperties: true" and add "contains" for matching > $ref DT bindings. > - Simplify regulator name labels in device tree examples. > - LEDs: > - Use LED bindings. > - Squash following patches in v2 for removing old text format DT bindings > into this patch, includes: > - leds-mt6323.txt, mt6323-poweroff.txt, rtc-mt6397.txt, sound/mt6358.txt. > - Fix file format of DT schemas, add blank between properties. > - Fix 'make checkrefdoc' errors, update reference in mediatek,pmic-keys.yaml. > > Changes for v4: > - Remove "mediatek,mt6357" from PMIC's compatible string since there is a > seperated DT schema for PMIC mt6357. > ... > +$id: http://devicetree.org/schemas/mfd/mediatek,mt6397.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: MediaTek MT6397/MT6323 Multifunction Device (PMIC) s/Multifunction Device/PMIC/ > + > +maintainers: > + - Sen Chu <sen.chu@xxxxxxxxxxxx> > + - Macpaul Lin <macpaul.lin@xxxxxxxxxxxx> > + > +description: | > + MT6397/MT6323 is a power management system chip. > + Please see the sub-modules below for supported features. > + > + MT6397/MT6323 is a multifunction device with the following sub modules: > + - Regulators > + - RTC > + - Audio codec > + - GPIO > + - Clock > + - LED > + - Keys > + - Power controller > + > + It is interfaced to host controller using SPI interface by a proprietary hardware > + called PMIC wrapper or pwrap. MT6397/MT6323 PMIC is a child device of pwrap. > + See the following for pwrap node definitions: > + Documentation/devicetree/bindings/soc/mediatek/mediatek,pwrap.yaml > + > +properties: > + compatible: > + oneOf: > + - enum: > + - mediatek,mt6323 > + - mediatek,mt6331 # "mediatek,mt6331" for PMIC MT6331 and MT6332. > + - mediatek,mt6358 > + - mediatek,mt6359 > + - mediatek,mt6397 > + - items: > + - enum: > + - mediatek,mt6366 > + - const: mediatek,mt6358 > + > + interrupts: > + maxItems: 1 > + > + interrupt-controller: true > + > + "#interrupt-cells": > + const: 2 > + > + rtc: > + type: object > + $ref: /schemas/rtc/rtc.yaml# > + unevaluatedProperties: false > + description: > + MT6397 Real Time Clock. > + > + properties: > + compatible: > + oneOf: > + - enum: > + - mediatek,mt6323-rtc > + - mediatek,mt6331-rtc > + - mediatek,mt6358-rtc > + - mediatek,mt6397-rtc > + - items: > + - enum: > + - mediatek,mt6366-rtc > + - const: mediatek,mt6358-rtc > + > + start-year: true Drop > + > + required: > + - compatible > + > + regulators: > + type: object > + description: > + List of child nodes that specify the regulators. > + additionalProperties: true > + properties: > + compatible: > + oneOf: > + - enum: > + - mediatek,mt6323-regulator > + - mediatek,mt6358-regulator > + - mediatek,mt6397-regulator > + - items: > + - enum: > + - mediatek,mt6366-regulator > + - const: mediatek,mt6358-regulator > + > + required: > + - compatible > + > + allOf: > + - if: > + properties: > + compatible: > + contains: > + const: mediatek,mt6323-regulator > + > + then: > + $ref: /schemas/regulator/mediatek,mt6323-regulator.yaml > + > + - if: > + properties: > + compatible: > + contains: > + const: mediatek,mt6358-regulator > + > + then: > + $ref: /schemas/regulator/mediatek,mt6358-regulator.yaml > + > + - if: > + properties: > + compatible: > + contains: > + const: mediatek,mt6397-regulator > + > + then: > + $ref: /schemas/regulator/mediatek,mt6397-regulator.yaml Drop this entire allOf. Not really needed. > + > + audio-codec: > + type: object > + additionalProperties: false > + description: > + Audio codec support with MT6397 and MT6358. > + properties: > + compatible: > + oneOf: > + - enum: > + - mediatek,mt6397-codec > + - mediatek,mt6358-sound > + - items: > + - enum: > + - mediatek,mt6366-sound > + - const: mediatek,mt6358-sound > + > + mediatek,dmic-mode: > + description: | > + Indicates how many data pins are used to transmit two channels of PDM > + signal. > + 0 - two wires; > + 1 - one wire; > + Default value is 0. > + enum: [0, 1] > + default: 0 > + > + Avdd-supply: > + description: Power source of AVDD. > + > + required: > + - compatible > + > + clocks: > + type: object > + additionalProperties: false > + description: | Do not need '|' unless you need to preserve formatting. > + This is a clock buffer node for mt6397. However, there are no sub nodes > + or any public document exposed in public. Blank line > + properties: > + compatible: > + const: mediatek,mt6397-clk > + '#clock-cells': > + const: 1 Blank line > + required: > + - compatible > + > + leds: > + type: object > + additionalProperties: false > + description: | > + MT6323 LED controller is subfunction provided by MT6323 PMIC, so the LED > + controllers are defined as the subnode of the function node provided by MT6323 > + PMIC controller that is being defined as one kind of Muti-Function Device (MFD) > + using shared bus called PMIC wrapper for each subfunction to access remote > + MT6323 PMIC hardware. > + > + Each led is represented as a child node of the mediatek,mt6323-led that > + describes the initial behavior for each LED physically and currently only four > + LED child nodes can be supported. > + > + properties: > + compatible: > + enum: > + - mediatek,mt6323-led > + - mediatek,mt6331-led > + - mediatek,mt6332-led > + > + reg: > + maxItems: 1 > + > + "#address-cells": > + const: 1 > + > + "#size-cells": > + const: 0 > + > + patternProperties: > + "^led@[0-3]$": > + type: object > + $ref: /schemas/leds/common.yaml# > + unevaluatedProperties: false > + > + properties: > + reg: > + description: > + LED channel number (0..3) > + minimum: 0 > + maximum: 3 > + > + required: > + - reg > + > + required: > + - compatible > + - '#address-cells' > + - '#size-cells' > + > + keys: > + type: object > + $ref: /schemas/input/mediatek,pmic-keys.yaml > + unevaluatedProperties: false > + description: > + Power and Home keys. > + properties: > + compatible: > + enum: > + - mediatek,mt6323-keys > + - mediatek,mt6331-keys > + - mediatek,mt6358-keys > + - mediatek,mt6397-keys You have $ref so lisitng properties is confusing. What do you want to achieve here? > + > + power-controller: > + type: object > + additionalProperties: false > + description: > + The power controller which could be found on PMIC is responsible for > + externally powering off or on the remote MediaTek SoC through the > + circuit BBPU (baseband power up). > + properties: > + compatible: > + const: mediatek,mt6323-pwrc > + > + '#power-domain-cells': > + const: 0 > + > + pinctrl: > + type: object > + $ref: /schemas/pinctrl/mediatek,mt65xx-pinctrl.yaml > + unevaluatedProperties: false > + description: > + Pin controller > + properties: > + compatible: > + const: mediatek,mt6397-pinctrl Also confusing. I don't think you got my point from previous review. > + > +required: > + - compatible > + - regulators > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + #include <dt-bindings/leds/common.h> > + > + pmic { > + compatible = "mediatek,mt6323"; > + interrupt-parent = <&pio>; > + interrupts = <150 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-controller; > + #interrupt-cells = <2>; > + > + leds { > + compatible = "mediatek,mt6323-led"; > + #address-cells = <1>; > + #size-cells = <0>; Messed indentation. > + }; Best regards, Krzysztof