[PATCH] dt-bindings: mfd: mediatek: mt6397: Convert to DT schema format
Macpaul Lin
macpaul.lin at mediatek.com
Thu Aug 22 23:44:57 PDT 2024
On 8/8/24 20:04, Krzysztof Kozlowski wrote:
>
>
> External email : Please do not click links or open attachments until you
> have verified the sender or the content.
>
> On 08/08/2024 12:57, Macpaul Lin wrote:
>> Convert the mfd: mediatek: mt6397 binding to DT schema format.
>>
>> New updates in this conversion:
>> - Align generic names of DT schema "audio-codec" and "regulators".
>> - mt6397-regulators: Replace the "txt" reference with newly added DT
>> schema.
>>
>> Signed-off-by: Sen Chu <sen.chu at mediatek.com>
>> Signed-off-by: Macpaul Lin <macpaul.lin at mediatek.com>
>> ---
>> .../bindings/mfd/mediatek,mt6397.yaml | 202 ++++++++++++++++++
>> .../devicetree/bindings/mfd/mt6397.txt | 110 ----------
>
> You are doing conversions in odd order... and ignore my comments. The
> example from your regulator binding is supposed to be here - I wrote it
> last time.
>
> Due to doing changes totally unsynchronized, this CANNOT be merged
> without unnecessary maintainer coordination, because of dependency.
>
> Sorry, that's not how it works for MFD devices.
>
> Perform conversion of entire device in ONE patchset.
Okay, will collect the conversion of mt6323-regulator.txt and
rtc-mt6397.txt in the next version.
>> 2 files changed, 202 insertions(+), 110 deletions(-)
>> create mode 100644 Documentation/devicetree/bindings/mfd/mediatek,mt6397.yaml
>> delete mode 100644 Documentation/devicetree/bindings/mfd/mt6397.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@mediatek.com/T/
[snip]
>> +$id: http://devicetree.org/schemas/mfd/mediatek,mt6397.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: MediaTek MT6397/MT6323 Multifunction Device
>> +
>> +maintainers:
>> + - Sen Chu <sen.chu at mediatek.com>
>> + - Macpaul Lin <macpaul.lin at mediatek.com>
>> +
>> +description: |
>> + MT6397/MT6323 is a multifunction device with the following sub modules:
>
> MFD is Linuxism, avoid it.
Will replace MFD with "power management system chip with sub-modules"
something like this in next version.
>> + - Regulator
>> + - 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 MFD is a child device of pwrap.
>> + See the following for pwarp node definitions:
>> + ../soc/mediatek/mediatek,pwrap.yaml
>
> Drop, instead add proper ref or compatible in parent node.
I'm confused here. I've checked mediatek,mt6357.yaml as a reference
.
It uses the similar method here.
"See the following for pwarp node definitions:"
"Documentation/devicetree/bindings/soc/mediatek/mediatek,pwrap.yaml"
If "$ref: /schemas/soc/mediatek/mediatek,pwrap.yaml" is added here,
dt_bindings_check will complain the following errors and more.
Documentation/devicetree/bindings/mfd/mediatek,mt6397.example.dtb: pmic:
compatible: 'oneOf' conditional failed, one must be fixed:
['mediatek,mt6397'] is too short
'mediatek,mt6397' is not one of ['mediatek,mt2701-pwrap',
'mediatek,mt6765-pwrap', 'mediatek,mt6779-pwrap',
'mediatek,mt6795-pwrap', 'mediatek,mt6797-pwrap',
'mediatek,mt6873-pwrap', 'mediatek,mt7622-pwrap',
'mediatek,mt8135-pwrap', 'mediatek,mt8173-pwrap',
'mediatek,mt8183-pwrap', 'mediatek,mt8186-pwrap',
'mediatek,mt8195-pwrap', 'mediatek,mt8365-pwrap', 'mediatek,mt8516-pwrap']
'mediatek,mt6397' is not one of ['mediatek,mt8186-pwrap',
'mediatek,mt8195-pwrap']
'mediatek,mt6397' is not one of ['mediatek,mt8188-pwrap']
from schema $id:
http://devicetree.org/schemas/mfd/mediatek,mt6397.yaml#
Which also conflicts with the comments in the examples..
>> + pwrap {
>
> Drop
Please help to check if a $ref or a compatible of pwrap should be added
here.
>> +
>> + This document describes the binding for MFD device and its sub module.
>
> Drop
Will fix it in next version.
>> +
>> +properties:
>> + compatible:
>> + oneOf:
>> + - enum:
>> + - mediatek,mt6323
>> + - mediatek,mt6331 # "mediatek,mt6331" for PMIC MT6331 and MT6332.
>> + - mediatek,mt6357
>> + - mediatek,mt6358
>> + - mediatek,mt6359
>> + - mediatek,mt6397
>> + - items:
>> + - enum:
>> + - mediatek,mt6366 # "mediatek,mt6366", "mediatek,mt6358" for PMIC MT6366
>
> Drop comment, it is obvious. Don't repeat constraints in free form text.
Will fix it in next version.
>
>> + - const: mediatek,mt6358
>> +
>> + interrupts:
>> + maxItems: 1
>> +
>> + interrupt-controller: true
>> +
>> + "#interrupt-cells":
>> + const: 2
>> +
>> + rtc:
>> + type: object
>> + unevaluatedProperties: false
>> + description:
>> + Real Time Clock (RTC)
>> + See ../rtc/rtc-mt6397.txt
>
> No, convert the binding.
Will convert it rtc-mt6397.txt and put it into
"mfd/mediatek,mt6397.yaml" together.
>
>> + properties:
>> + compatible:
>> + oneOf:
>> + - enum:
>> + - mediatek,mt6323-rtc
>> + - mediatek,mt6331-rtc
>> + - mediatek,mt6358-rtc
>> + - mediatek,mt6397-rtc
>> + - items:
>> + - enum:
>> + - mediatek,mt6366-rtc # RTC MT6366
>
> Drop all such comments.
>
>> + - const: mediatek,mt6358-rtc
>> +
>> + regulators:
>> + type: object
>> + oneOf:
>> + - $ref: /schemas/regulator/mediatek,mt6358-regulator.yaml
>> + - $ref: /schemas/regulator/mediatek,mt6397-regulator.yaml
>
> And how is it supposed to be tested?
The dt_bindings_check didn't complain eny thing about these.
Of course I've included the conversion patch of
mediatek,mt6397-regulator.yaml.
>> + unevaluatedProperties: false
>> + description:
>> + Regulators
>> + For mt6323, see ../regulator/mt6323-regulator.txt
>
> Drop, useless.
Should I convert it to DT schema and add to $ref above together?
>
>> + properties:
>> + compatible:
>> + oneOf:
>> + - enum:
>> + - mediatek,mt6323-regulator
>> + - mediatek,mt6358-regulator
>> + - mediatek,mt6397-regulator
>> + - items:
>> + - enum:
>> + - mediatek,mt6366-regulator # Regulator MT6366
>> + - const: mediatek,mt6358-regulator
>> +
>> + audio-codec:
>> + type: object
>> + unevaluatedProperties: false
>
> This does not make sense. You do not have any ref here.
The dt_bindings_check will complain error here.
Will replace it with "additionalProperties: false".
>> + description:
>> + Audio codec
>> + properties:
>> + compatible:
>> + oneOf:
>> + - enum:
>> + - mediatek,mt6397-codec
>> + - mediatek,mt6358-sound
>> + - items:
>> + - enum:
>> + - mediatek,mt6366-sound # Codec MT6366
>> + - const: mediatek,mt6358-sound
>
> This wasn't in the old binding. Commit msg also does not explain why you
> are doing changes from conversion.
Will update new added item into commit message in next version.
>> +
>> + clk:
>> + type: object
>> + unevaluatedProperties: false
>
> Again, no, it does not work like this. See example schema for
> explanation of this.
Will replace it with "additionalProperties: false".
> Convert all children - entire device. Then either use ref or
> additionalProperties: true. See Qualcomm mdss bindings for example.
There is no more children available for the clock node of this PMIC.
This is a clock buffer node. However, there are no sub nodes or any
public document explain these clock buffer in public domain.
What I've got is the compatible string in the driver.
>> + description:
>> + Clock
>
> Your descriptions are useless. You just said "clk" node is "clock". Really?
Will improve it in next version.
>> + properties:
>> + compatible:
>> + const: mediatek,mt6397-clk
>> +
>> + led:
>> + type: object
>> + unevaluatedProperties: false
>> + description:
>> + LED
>> + See ../leds/leds-mt6323.txt for more information
>
> No
Will convert "leds-mt6323.txt" and move it together with
"mfd/mediatek,mt6397.yaml"
>> + properties:
>> + compatible:
>> + const: mediatek,mt6323-led
>> +
>> + keys:
>> + type: object
>> + $ref: /schemas/input/mediatek,pmic-keys.yaml
>> + unevaluatedProperties: false
>> + description: Keys
>
> Keys are keys? Could keys be anything else?
Will fix it in the next version.
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + #include <dt-bindings/interrupt-controller/arm-gic.h>
>> +
>> + pwrap {
>
> Drop
Will fix it in the next version.
>> + pmic {
>> + compatible = "mediatek,mt6397";
>> + interrupts-extended = <&pio 222 IRQ_TYPE_LEVEL_HIGH>;
>> + interrupt-controller;
>> + #interrupt-cells = <2>;
>> +
>> + mt6397_codec: audio-codec {
>> + compatible = "mediatek,mt6397-codec";
>> + };
>> +
>> + mt6397_regulators: regulators {
>> + compatible = "mediatek,mt6397-regulator";
>> +
>> + mt6397_vpca15_reg: buck_vpca15 {
>> + regulator-name = "vpca15";
>> + regulator-min-microvolt = <850000>;
>> + regulator-max-microvolt = <1400000>;
>> + regulator-ramp-delay = <12500>;
>> + regulator-always-on;
>> + };
>> +
>> + mt6397_vgp4_reg: ldo_vgp4 {
>> + regulator-name = "vgp4";
>> + regulator-min-microvolt = <1200000>;
>> + regulator-max-microvolt = <3300000>;
>> + regulator-enable-ramp-delay = <218>;
>> + };
>> + };
>
> Incomplete.
>
> The parent device example is supposed to be 100% complete.
Will complete the example with MT6397 and MT6323 as reference in the
next version.
> Best regards,
> Krzysztof
Thanks for the review and still some questions listed above.
Please help to clarify the correction method for the questions.
Best regards,
Macpaul Lin
More information about the Linux-mediatek
mailing list