Re: [PATCH 1/2] regulator: dt-bindings: maxim, max8997: correct array of voltages

Rob Herring
2022-04-03T15:12:55Z

On Thu, Mar 31, 2022 at 11:16:52PM +0200, Krzysztof Kozlowski wrote:
> uint32-array with voltages should be within one bracket pair <>, not
> each number in its own <>. Also the number of elements in the array
> should be defined within "items:".

Which encoding an array uses has been a source of pain.

>
> This fixes DT schema warnings like:
>
> maxim,max8997.example.dtb: pmic@66: max8997,pmic-buck1-dvs-voltage:
> [[1350000, 1300000, 1250000, 1200000, 1150000, 1100000, 1000000, 950000]] is too short

These exist due to the move from validating yaml files to DTBs and I
haven't come up with how to fix the warning. The schema was correct as
it was. The change leaks the encoding (everything is a matrix) into the
schema which we don't want to do.

The issue is in the if/then schema, the tools don't know if the type is
an array or matrix. It gets it wrong (or different from the top-level)
and thus the warning. I think the fix will be using the extracted type
information to do the right transformation. The code for all this is
pretty horrible and I've lost count of how many times I've re-written
it. I think a lot of it can be removed when/if support for yaml encoded
DT is removed which I think can happen in a kernel cycle or 2.

Perhaps in the short term the example can just be removed or commented
out though that doesn't help on dts files.

Rob