Re: [PATCH] dt-bindings: Drop redundant minItems/maxItems

Rob Herring
2021-06-17T22:17:10Z

On Thu, Jun 17, 2021 at 10:06 AM Suman Anna <s-anna@ti.com> wrote:
>
> Hi Rob,
>
> On 6/15/21 2:15 PM, Rob Herring wrote:
> > If a property has an 'items' list, then a 'minItems' or 'maxItems' with the
> > same size as the list is redundant and can be dropped. Note that is DT
> > schema specific behavior and not standard json-schema behavior. The tooling
> > will fixup the final schema adding any unspecified minItems/maxItems.
> >
> > This condition is partially checked with the meta-schema already, but
> > only if both 'minItems' and 'maxItems' are equal to the 'items' length.
> > An improved meta-schema is pending.
> >
> > Cc: Jens Axboe <axboe@kernel.dk>
> > Cc: Stephen Boyd <sboyd@kernel.org>
> > Cc: Herbert Xu <herbert@gondor.apana.org.au>
> > Cc: "David S. Miller" <davem@davemloft.net>
> > Cc: David Airlie <airlied@linux.ie>
> > Cc: Daniel Vetter <daniel@ffwll.ch>
> > Cc: Vinod Koul <vkoul@kernel.org>
> > Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> > Cc: Kamal Dasu <kdasu.kdev@gmail.com>
> > Cc: Jonathan Cameron <jic23@kernel.org>
> > Cc: Lars-Peter Clausen <lars@metafoo.de>
> > Cc: Thomas Gleixner <tglx@linutronix.de>
> > Cc: Marc Zyngier <maz@kernel.org>
> > Cc: Joerg Roedel <joro@8bytes.org>
> > Cc: Jassi Brar <jassisinghbrar@gmail.com>
> > Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> > Cc: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
> > Cc: Ulf Hansson <ulf.hansson@linaro.org>
> > Cc: Jakub Kicinski <kuba@kernel.org>
> > Cc: Wolfgang Grandegger <wg@grandegger.com>
> > Cc: Marc Kleine-Budde <mkl@pengutronix.de>
> > Cc: Andrew Lunn <andrew@lunn.ch>
> > Cc: Vivien Didelot <vivien.didelot@gmail.com>
> > Cc: Vladimir Oltean <olteanv@gmail.com>
> > Cc: Bjorn Helgaas <bhelgaas@google.com>
> > Cc: Kishon Vijay Abraham I <kishon@ti.com>
> > Cc: Linus Walleij <linus.walleij@linaro.org>
> > Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
> > Cc: Lee Jones <lee.jones@linaro.org>
> > Cc: Ohad Ben-Cohen <ohad@wizery.com>
> > Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
> > Cc: Philipp Zabel <p.zabel@pengutronix.de>
> > Cc: Paul Walmsley <paul.walmsley@sifive.com>
> > Cc: Palmer Dabbelt <palmer@dabbelt.com>
> > Cc: Albert Ou <aou@eecs.berkeley.edu>
> > Cc: Alessandro Zummo <a.zummo@towertech.it>
> > Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > Cc: Mark Brown <broonie@kernel.org>
> > Cc: Zhang Rui <rui.zhang@intel.com>
> > Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
> > Cc: Wim Van Sebroeck <wim@linux-watchdog.org>
> > Cc: Guenter Roeck <linux@roeck-us.net>
> > Signed-off-by: Rob Herring <robh@kernel.org>
> > ---
> > .../devicetree/bindings/ata/nvidia,tegra-ahci.yaml | 1 -
> > .../devicetree/bindings/clock/allwinner,sun4i-a10-ccu.yaml | 2 --
> > .../devicetree/bindings/clock/qcom,gcc-apq8064.yaml | 1 -
> > Documentation/devicetree/bindings/clock/qcom,gcc-sdx55.yaml | 2 --
> > .../devicetree/bindings/clock/qcom,gcc-sm8350.yaml | 2 --
> > .../devicetree/bindings/clock/sprd,sc9863a-clk.yaml | 1 -
> > .../devicetree/bindings/crypto/allwinner,sun8i-ce.yaml | 2 --
> > Documentation/devicetree/bindings/crypto/fsl-dcp.yaml | 1 -
> > .../display/allwinner,sun4i-a10-display-backend.yaml | 6 ------
> > .../bindings/display/allwinner,sun6i-a31-mipi-dsi.yaml | 1 -
> > .../bindings/display/allwinner,sun8i-a83t-dw-hdmi.yaml | 4 ----
> > .../bindings/display/allwinner,sun8i-a83t-hdmi-phy.yaml | 2 --
> > .../bindings/display/allwinner,sun8i-r40-tcon-top.yaml | 2 --
> > .../devicetree/bindings/display/bridge/cdns,mhdp8546.yaml | 2 --
> > .../bindings/display/rockchip/rockchip,dw-hdmi.yaml | 2 --
> > Documentation/devicetree/bindings/display/st,stm32-dsi.yaml | 2 --
> > .../devicetree/bindings/display/st,stm32-ltdc.yaml | 1 -
> > .../devicetree/bindings/display/xlnx/xlnx,zynqmp-dpsub.yaml | 4 ----
> > .../devicetree/bindings/dma/renesas,rcar-dmac.yaml | 1 -
> > .../devicetree/bindings/edac/amazon,al-mc-edac.yaml | 2 --
> > Documentation/devicetree/bindings/eeprom/at24.yaml | 1 -
> > Documentation/devicetree/bindings/example-schema.yaml | 2 --
> > Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.yaml | 1 -
> > Documentation/devicetree/bindings/gpu/vivante,gc.yaml | 1 -
> > Documentation/devicetree/bindings/i2c/brcm,brcmstb-i2c.yaml | 1 -
> > .../devicetree/bindings/i2c/marvell,mv64xxx-i2c.yaml | 2 --
> > .../devicetree/bindings/i2c/mellanox,i2c-mlxbf.yaml | 1 -
> > .../devicetree/bindings/iio/adc/amlogic,meson-saradc.yaml | 1 -
> > .../devicetree/bindings/iio/adc/st,stm32-dfsdm-adc.yaml | 2 --
> > .../bindings/interrupt-controller/fsl,irqsteer.yaml | 1 -
> > .../bindings/interrupt-controller/loongson,liointc.yaml | 1 -
> > Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml | 1 -
> > .../devicetree/bindings/iommu/renesas,ipmmu-vmsa.yaml | 1 -
> > .../devicetree/bindings/mailbox/st,stm32-ipcc.yaml | 2 --
> > .../devicetree/bindings/media/amlogic,gx-vdec.yaml | 1 -
> > Documentation/devicetree/bindings/media/i2c/adv7604.yaml | 1 -
> > .../devicetree/bindings/media/marvell,mmp2-ccic.yaml | 1 -
> > .../devicetree/bindings/media/qcom,sc7180-venus.yaml | 1 -
> > .../devicetree/bindings/media/qcom,sdm845-venus-v2.yaml | 1 -
> > .../devicetree/bindings/media/qcom,sm8250-venus.yaml | 1 -
> > Documentation/devicetree/bindings/media/renesas,drif.yaml | 1 -
> > .../bindings/memory-controllers/mediatek,smi-common.yaml | 6 ++----
> > .../bindings/memory-controllers/mediatek,smi-larb.yaml | 1 -
> > .../devicetree/bindings/mmc/allwinner,sun4i-a10-mmc.yaml | 2 --
> > Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.yaml | 1 -
> > Documentation/devicetree/bindings/mmc/mtk-sd.yaml | 2 --
> > Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml | 2 --
> > Documentation/devicetree/bindings/mmc/sdhci-am654.yaml | 1 -
> > Documentation/devicetree/bindings/mmc/sdhci-pxa.yaml | 1 -
> > .../devicetree/bindings/net/amlogic,meson-dwmac.yaml | 2 --
> > .../devicetree/bindings/net/brcm,bcm4908-enet.yaml | 2 --
> > Documentation/devicetree/bindings/net/can/bosch,m_can.yaml | 2 --
> > Documentation/devicetree/bindings/net/dsa/brcm,sf2.yaml | 2 --
> > Documentation/devicetree/bindings/net/snps,dwmac.yaml | 2 --
> > Documentation/devicetree/bindings/net/stm32-dwmac.yaml | 1 -
> > Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml | 2 --
> > Documentation/devicetree/bindings/pci/loongson.yaml | 1 -
> > .../devicetree/bindings/pci/mediatek-pcie-gen3.yaml | 1 -
> > .../devicetree/bindings/pci/microchip,pcie-host.yaml | 2 --
> > Documentation/devicetree/bindings/perf/arm,cmn.yaml | 1 -
> > .../devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml | 1 -
> > .../devicetree/bindings/phy/brcm,brcmstb-usb-phy.yaml | 3 ---
> > Documentation/devicetree/bindings/phy/brcm,sata-phy.yaml | 1 -
> > Documentation/devicetree/bindings/phy/mediatek,tphy.yaml | 2 --
> > .../devicetree/bindings/phy/phy-cadence-sierra.yaml | 2 --
> > .../devicetree/bindings/phy/phy-cadence-torrent.yaml | 4 ----
> > .../devicetree/bindings/phy/qcom,ipq806x-usb-phy-hs.yaml | 1 -
> > .../devicetree/bindings/phy/qcom,ipq806x-usb-phy-ss.yaml | 1 -
> > Documentation/devicetree/bindings/phy/qcom,qmp-phy.yaml | 1 -
> > Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml | 2 --
> > Documentation/devicetree/bindings/phy/renesas,usb2-phy.yaml | 2 --
> > Documentation/devicetree/bindings/phy/renesas,usb3-phy.yaml | 1 -
> > .../devicetree/bindings/pinctrl/actions,s500-pinctrl.yaml | 1 -
> > .../devicetree/bindings/power/amlogic,meson-ee-pwrc.yaml | 1 -
> > .../devicetree/bindings/pwm/allwinner,sun4i-a10-pwm.yaml | 1 -
> > .../devicetree/bindings/remoteproc/st,stm32-rproc.yaml | 2 --
> > .../devicetree/bindings/remoteproc/ti,k3-dsp-rproc.yaml | 1 -
> > .../devicetree/bindings/remoteproc/ti,omap-remoteproc.yaml | 1 -
> > Documentation/devicetree/bindings/reset/fsl,imx-src.yaml | 1 -
> > .../devicetree/bindings/riscv/sifive-l2-cache.yaml | 1 -
> > .../devicetree/bindings/rtc/allwinner,sun6i-a31-rtc.yaml | 1 -
> > Documentation/devicetree/bindings/rtc/imxdi-rtc.yaml | 1 -
> > Documentation/devicetree/bindings/serial/fsl-lpuart.yaml | 2 --
> > Documentation/devicetree/bindings/serial/samsung_uart.yaml | 1 -
> > .../devicetree/bindings/soc/qcom/qcom,geni-se.yaml | 1 -
> > Documentation/devicetree/bindings/soc/ti/ti,pruss.yaml | 2 --
> > .../bindings/sound/nvidia,tegra-audio-graph-card.yaml | 1 -
> > .../devicetree/bindings/sound/nvidia,tegra210-i2s.yaml | 2 --
> > Documentation/devicetree/bindings/sound/st,stm32-sai.yaml | 3 ---
> > .../devicetree/bindings/spi/amlogic,meson-gx-spicc.yaml | 1 -
> > .../devicetree/bindings/spi/brcm,spi-bcm-qspi.yaml | 2 --
> > .../bindings/thermal/allwinner,sun8i-a83t-ths.yaml | 2 --
> > Documentation/devicetree/bindings/thermal/qcom-tsens.yaml | 1 -
> > .../bindings/timer/allwinner,sun5i-a13-hstimer.yaml | 1 -
> > Documentation/devicetree/bindings/timer/arm,arch_timer.yaml | 1 -
> > .../devicetree/bindings/timer/arm,arch_timer_mmio.yaml | 2 --
> > .../devicetree/bindings/timer/intel,ixp4xx-timer.yaml | 1 -
> > .../devicetree/bindings/usb/maxim,max3420-udc.yaml | 2 --
> > .../devicetree/bindings/usb/nvidia,tegra-xudc.yaml | 4 ----
> > Documentation/devicetree/bindings/usb/renesas,usbhs.yaml | 3 ---
> > .../devicetree/bindings/watchdog/st,stm32-iwdg.yaml | 1 -
> > 101 files changed, 2 insertions(+), 163 deletions(-)
> >
>
> [snip]
>
> > diff --git a/Documentation/devicetree/bindings/remoteproc/ti,k3-dsp-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/ti,k3-dsp-rproc.yaml
> > index 6070456a7b67..f399743b631b 100644
> > --- a/Documentation/devicetree/bindings/remoteproc/ti,k3-dsp-rproc.yaml
> > +++ b/Documentation/devicetree/bindings/remoteproc/ti,k3-dsp-rproc.yaml
> > @@ -57,7 +57,6 @@ properties:
> >
> > memory-region:
> > minItems: 2
> > - maxItems: 8
> > description: |
> > phandle to the reserved memory nodes to be associated with the remoteproc
> > device. There should be at least two reserved memory nodes defined. The
>
> Does this enforce the maxItems to be 2 only now? Or should this be dropping the
> minItems here which matches the length of items instead of maxItems?
>
> I have originally listed the individual item list only for the mandatory items
> and rest are scalable. I provided this through "additionalItems: true" under
> this property.

Good catch. This should be dropped. The meta-schema doesn't enforce
this if "additionalItems: true" which is rarely used.

> Also, have the exact same usage in
> Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml as well which
> is not included in this patch.

Yeah, I just missed this one. I've double checked and there aren't any more.

Rob