mbox series

[0/4] dt-bindings: additional/unevaluatedProperties clean-ups

Message ID 20201005183830.486085-1-robh@kernel.org (mailing list archive)
Headers show
Series dt-bindings: additional/unevaluatedProperties clean-ups | expand

Message

Rob Herring (Arm) Oct. 5, 2020, 6:38 p.m. UTC
The default behavior for json-schema is any unknown property is allowed.
That is generally not the behavior we want for DT. In order to disallow
extra properties, schemas need to define 'additionalProperties: false'
typically. Ideally, we'd just add that automatically with the tools, but
there are some exceptions so only making things explicit everywhere
really works. Missing 'additionalProperties' or 'unevaluatedProperties'
has been a constant source of review comments, so a meta-schema check is
really needed here.

Once this series is in place, the meta-schema can be updated with a
check. The rule is if there's a $ref to another schema, then either
'additionalProperties' or 'unevaluatedProperties' is required. If not,
then 'additionalProperties' is required.

Rob


Rob Herring (4):
  dt-bindings: Add missing 'unevaluatedProperties'
  dt-bindings: Use 'additionalProperties' instead of
    'unevaluatedProperties'
  dt-bindings: Explicitly allow additional properties in board/SoC
    schemas
  dt-bindings: Explicitly allow additional properties in common schemas

 Documentation/devicetree/bindings/arm/actions.yaml     |  2 ++
 Documentation/devicetree/bindings/arm/altera.yaml      |  3 +++
 Documentation/devicetree/bindings/arm/amazon,al.yaml   |  2 ++
 Documentation/devicetree/bindings/arm/amlogic.yaml     |  3 +++
 .../devicetree/bindings/arm/arm,integrator.yaml        |  2 ++
 .../devicetree/bindings/arm/arm,realview.yaml          |  2 ++
 .../devicetree/bindings/arm/arm,versatile.yaml         |  2 ++
 .../devicetree/bindings/arm/arm,vexpress-juno.yaml     |  2 ++
 Documentation/devicetree/bindings/arm/atmel-at91.yaml  |  2 ++
 Documentation/devicetree/bindings/arm/axxia.yaml       |  2 ++
 Documentation/devicetree/bindings/arm/bcm/bcm2835.yaml |  2 ++
 .../devicetree/bindings/arm/bcm/brcm,bcm11351.yaml     |  2 ++
 .../devicetree/bindings/arm/bcm/brcm,bcm21664.yaml     |  2 ++
 .../devicetree/bindings/arm/bcm/brcm,bcm23550.yaml     |  2 ++
 .../devicetree/bindings/arm/bcm/brcm,bcm4708.yaml      |  3 +++
 .../devicetree/bindings/arm/bcm/brcm,cygnus.yaml       |  2 ++
 .../devicetree/bindings/arm/bcm/brcm,hr2.yaml          |  2 ++
 .../devicetree/bindings/arm/bcm/brcm,ns2.yaml          |  2 ++
 .../devicetree/bindings/arm/bcm/brcm,nsp.yaml          |  2 ++
 .../devicetree/bindings/arm/bcm/brcm,stingray.yaml     |  2 ++
 .../devicetree/bindings/arm/bcm/brcm,vulcan-soc.yaml   |  2 ++
 Documentation/devicetree/bindings/arm/bitmain.yaml     |  3 +++
 Documentation/devicetree/bindings/arm/calxeda.yaml     |  2 ++
 .../devicetree/bindings/arm/coresight-cti.yaml         |  2 ++
 Documentation/devicetree/bindings/arm/cpus.yaml        |  2 ++
 Documentation/devicetree/bindings/arm/digicolor.yaml   |  2 ++
 Documentation/devicetree/bindings/arm/fsl.yaml         |  2 ++
 .../devicetree/bindings/arm/hisilicon/hisilicon.yaml   |  3 +++
 .../devicetree/bindings/arm/intel,keembay.yaml         |  3 +++
 .../devicetree/bindings/arm/intel-ixp4xx.yaml          |  2 ++
 .../bindings/arm/keystone/ti,k3-sci-common.yaml        |  2 ++
 .../devicetree/bindings/arm/marvell/armada-7k-8k.yaml  |  2 ++
 Documentation/devicetree/bindings/arm/mediatek.yaml    |  3 +++
 .../devicetree/bindings/arm/microchip,sparx5.yaml      |  2 ++
 Documentation/devicetree/bindings/arm/moxart.yaml      |  1 +
 Documentation/devicetree/bindings/arm/mrvl/mrvl.yaml   |  3 +++
 Documentation/devicetree/bindings/arm/mstar/mstar.yaml |  2 ++
 .../bindings/arm/nvidia,tegra194-ccplex.yaml           |  2 ++
 Documentation/devicetree/bindings/arm/nxp/lpc32xx.yaml |  2 ++
 Documentation/devicetree/bindings/arm/qcom.yaml        |  2 ++
 Documentation/devicetree/bindings/arm/rda.yaml         |  2 ++
 Documentation/devicetree/bindings/arm/realtek.yaml     |  3 +++
 Documentation/devicetree/bindings/arm/renesas.yaml     |  2 ++
 Documentation/devicetree/bindings/arm/rockchip.yaml    |  3 +++
 .../bindings/arm/samsung/samsung-boards.yaml           |  2 ++
 Documentation/devicetree/bindings/arm/sirf.yaml        |  3 +++
 .../devicetree/bindings/arm/socionext/milbeaut.yaml    |  3 +++
 .../devicetree/bindings/arm/socionext/uniphier.yaml    |  2 ++
 Documentation/devicetree/bindings/arm/spear.yaml       |  3 +++
 Documentation/devicetree/bindings/arm/sprd/sprd.yaml   |  2 ++
 Documentation/devicetree/bindings/arm/sti.yaml         |  3 +++
 .../devicetree/bindings/arm/stm32/st,mlahb.yaml        |  2 ++
 Documentation/devicetree/bindings/arm/stm32/stm32.yaml |  3 +++
 Documentation/devicetree/bindings/arm/sunxi.yaml       |  2 ++
 Documentation/devicetree/bindings/arm/tegra.yaml       |  2 ++
 Documentation/devicetree/bindings/arm/ti/nspire.yaml   |  3 +++
 .../devicetree/bindings/arm/ti/ti,davinci.yaml         |  3 +++
 Documentation/devicetree/bindings/arm/ux500.yaml       |  2 ++
 Documentation/devicetree/bindings/arm/vt8500.yaml      |  3 +++
 Documentation/devicetree/bindings/arm/xilinx.yaml      |  2 ++
 Documentation/devicetree/bindings/arm/zte.yaml         |  2 ++
 .../devicetree/bindings/ata/faraday,ftide010.yaml      |  2 ++
 Documentation/devicetree/bindings/ata/pata-common.yaml |  2 ++
 Documentation/devicetree/bindings/ata/sata-common.yaml |  2 ++
 Documentation/devicetree/bindings/bus/renesas,bsc.yaml |  2 ++
 .../devicetree/bindings/bus/simple-pm-bus.yaml         |  2 ++
 .../bindings/chrome/google,cros-ec-typec.yaml          |  2 ++
 .../devicetree/bindings/clock/baikal,bt1-ccu-div.yaml  |  6 +++++-
 .../devicetree/bindings/clock/baikal,bt1-ccu-pll.yaml  |  2 +-
 .../devicetree/bindings/clock/imx8m-clock.yaml         |  2 +-
 .../devicetree/bindings/connector/usb-connector.yaml   |  2 ++
 .../bindings/display/bridge/snps,dw-mipi-dsi.yaml      |  2 ++
 .../devicetree/bindings/display/dsi-controller.yaml    |  2 ++
 .../devicetree/bindings/display/panel/lvds.yaml        |  2 ++
 .../bindings/display/panel/panel-common.yaml           |  2 ++
 .../devicetree/bindings/display/panel/tpo,tpg110.yaml  |  2 ++
 Documentation/devicetree/bindings/dma/dma-common.yaml  |  2 ++
 .../devicetree/bindings/dma/dma-controller.yaml        |  2 ++
 Documentation/devicetree/bindings/dma/dma-router.yaml  |  2 ++
 Documentation/devicetree/bindings/dma/ingenic,dma.yaml |  2 ++
 .../devicetree/bindings/dma/st,stm32-dma.yaml          |  2 ++
 .../devicetree/bindings/dma/st,stm32-dmamux.yaml       |  2 ++
 .../devicetree/bindings/dma/st,stm32-mdma.yaml         |  2 ++
 Documentation/devicetree/bindings/dma/ti/k3-udma.yaml  |  2 ++
 .../devicetree/bindings/extcon/wlf,arizona.yaml        |  2 ++
 .../devicetree/bindings/hwmon/baikal,bt1-pvt.yaml      |  4 ++--
 .../devicetree/bindings/i2c/amlogic,meson6-i2c.yaml    |  2 ++
 .../devicetree/bindings/i2c/cdns,i2c-r1p10.yaml        |  2 ++
 Documentation/devicetree/bindings/i2c/i2c-gpio.yaml    |  2 ++
 Documentation/devicetree/bindings/i2c/i2c-rk3x.yaml    |  2 ++
 .../bindings/i2c/socionext,uniphier-fi2c.yaml          |  2 ++
 .../bindings/i2c/socionext,uniphier-i2c.yaml           |  2 ++
 .../devicetree/bindings/i2c/st,stm32-i2c.yaml          |  2 ++
 .../devicetree/bindings/i2c/xlnx,xps-iic-2.00.a.yaml   |  2 ++
 .../devicetree/bindings/iio/accel/adi,adis16240.yaml   |  4 ++++
 .../devicetree/bindings/iio/accel/adi,adxl345.yaml     |  4 ++++
 .../devicetree/bindings/iio/accel/adi,adxl372.yaml     |  4 ++++
 .../devicetree/bindings/iio/adc/adi,ad7124.yaml        |  4 ++++
 .../devicetree/bindings/iio/adc/adi,ad7192.yaml        |  4 ++++
 .../devicetree/bindings/iio/adc/adi,ad7292.yaml        |  4 ++++
 .../devicetree/bindings/iio/adc/adi,ad7606.yaml        |  6 ++++++
 .../devicetree/bindings/iio/adc/adi,ad7923.yaml        |  4 ++++
 .../devicetree/bindings/iio/adc/maxim,max1241.yaml     |  4 ++++
 .../bindings/iio/adc/samsung,exynos-adc.yaml           |  5 ++++-
 Documentation/devicetree/bindings/iio/common.yaml      |  2 ++
 .../devicetree/bindings/iio/dac/adi,ad5770r.yaml       | 10 ++++++++++
 .../devicetree/bindings/iio/frequency/adf4371.yaml     |  4 ++++
 .../devicetree/bindings/iio/imu/adi,adis16460.yaml     |  4 ++++
 .../devicetree/bindings/iio/imu/adi,adis16475.yaml     |  2 ++
 .../devicetree/bindings/iio/imu/bosch,bmi160.yaml      |  4 ++++
 .../devicetree/bindings/iio/imu/nxp,fxos8700.yaml      |  4 ++++
 .../devicetree/bindings/input/fsl,mpr121-touchkey.yaml |  2 ++
 Documentation/devicetree/bindings/input/input.yaml     |  2 ++
 .../devicetree/bindings/input/matrix-keymap.yaml       |  2 ++
 .../bindings/input/touchscreen/touchscreen.yaml        |  2 ++
 .../bindings/interrupt-controller/loongson,htpic.yaml  |  2 ++
 .../interrupt-controller/loongson,liointc.yaml         |  2 ++
 .../bindings/interrupt-controller/mti,gic.yaml         |  2 +-
 Documentation/devicetree/bindings/leds/common.yaml     |  2 ++
 .../bindings/leds/leds-class-multicolor.yaml           |  3 +++
 .../devicetree/bindings/leds/trigger-source.yaml       |  2 ++
 Documentation/devicetree/bindings/media/rc.yaml        |  2 ++
 .../bindings/memory-controllers/renesas,rpc-if.yaml    |  2 ++
 .../devicetree/bindings/mfd/cirrus,lochnagar.yaml      | 10 +++++++++-
 Documentation/devicetree/bindings/mfd/syscon.yaml      |  2 +-
 .../bindings/mfd/ti,j721e-system-controller.yaml       |  5 ++++-
 .../devicetree/bindings/mips/ingenic/devices.yaml      |  3 +++
 .../devicetree/bindings/mips/loongson/devices.yaml     |  3 +++
 .../devicetree/bindings/misc/olpc,xo1.75-ec.yaml       |  4 +++-
 .../devicetree/bindings/mmc/amlogic,meson-mx-sdhc.yaml |  2 ++
 Documentation/devicetree/bindings/mmc/cdns,sdhci.yaml  |  2 ++
 Documentation/devicetree/bindings/mmc/ingenic,mmc.yaml |  2 ++
 .../devicetree/bindings/mmc/mmc-controller.yaml        |  2 ++
 Documentation/devicetree/bindings/mmc/owl-mmc.yaml     |  2 ++
 .../devicetree/bindings/mmc/rockchip-dw-mshc.yaml      |  2 ++
 Documentation/devicetree/bindings/mmc/sdhci-pxa.yaml   |  2 ++
 .../devicetree/bindings/mmc/socionext,uniphier-sd.yaml |  2 ++
 .../bindings/mmc/synopsys-dw-mshc-common.yaml          |  2 ++
 .../devicetree/bindings/mmc/synopsys-dw-mshc.yaml      |  2 ++
 Documentation/devicetree/bindings/mtd/denali,nand.yaml |  2 ++
 .../devicetree/bindings/mtd/ingenic,nand.yaml          |  2 ++
 .../devicetree/bindings/mtd/nand-controller.yaml       |  2 ++
 .../devicetree/bindings/mtd/st,stm32-fmc2-nand.yaml    |  2 ++
 Documentation/devicetree/bindings/net/adi,adin.yaml    |  2 ++
 .../devicetree/bindings/net/amlogic,meson-dwmac.yaml   |  2 ++
 .../devicetree/bindings/net/aspeed,ast2600-mdio.yaml   |  2 ++
 .../devicetree/bindings/net/can/can-transceiver.yaml   |  2 ++
 Documentation/devicetree/bindings/net/dsa/dsa.yaml     |  2 ++
 .../devicetree/bindings/net/ethernet-controller.yaml   |  2 ++
 .../devicetree/bindings/net/ethernet-phy.yaml          |  2 ++
 .../devicetree/bindings/net/marvell,mvusb.yaml         |  2 ++
 Documentation/devicetree/bindings/net/mdio.yaml        |  2 ++
 .../devicetree/bindings/net/mediatek,star-emac.yaml    |  2 ++
 Documentation/devicetree/bindings/net/nxp,tja11xx.yaml |  2 ++
 Documentation/devicetree/bindings/net/qca,ar71xx.yaml  |  2 ++
 Documentation/devicetree/bindings/net/qca,ar803x.yaml  |  2 ++
 .../devicetree/bindings/net/qcom,ipq4019-mdio.yaml     |  2 ++
 .../devicetree/bindings/net/qcom,ipq8064-mdio.yaml     |  2 ++
 .../devicetree/bindings/net/renesas,ether.yaml         |  2 ++
 Documentation/devicetree/bindings/net/snps,dwmac.yaml  |  2 ++
 Documentation/devicetree/bindings/net/stm32-dwmac.yaml |  2 ++
 .../devicetree/bindings/net/ti,davinci-mdio.yaml       |  2 ++
 Documentation/devicetree/bindings/net/ti,dp83867.yaml  |  2 ++
 Documentation/devicetree/bindings/net/ti,dp83869.yaml  |  2 ++
 Documentation/devicetree/bindings/nvmem/imx-ocotp.yaml |  2 ++
 .../devicetree/bindings/nvmem/nvmem-consumer.yaml      |  2 ++
 Documentation/devicetree/bindings/nvmem/nvmem.yaml     |  2 ++
 .../devicetree/bindings/nvmem/qcom,qfprom.yaml         |  2 ++
 .../devicetree/bindings/nvmem/qcom,spmi-sdam.yaml      |  2 ++
 .../devicetree/bindings/nvmem/rockchip-efuse.yaml      |  2 ++
 .../devicetree/bindings/nvmem/st,stm32-romem.yaml      |  2 ++
 .../opp/allwinner,sun50i-h6-operating-points.yaml      |  4 +++-
 .../devicetree/bindings/pci/cdns,cdns-pcie-ep.yaml     |  2 ++
 .../devicetree/bindings/pci/cdns,cdns-pcie-host.yaml   |  2 ++
 .../devicetree/bindings/pci/cdns-pcie-ep.yaml          |  2 ++
 .../devicetree/bindings/pci/cdns-pcie-host.yaml        |  2 ++
 Documentation/devicetree/bindings/pci/cdns-pcie.yaml   |  2 ++
 .../devicetree/bindings/pci/host-generic-pci.yaml      |  2 ++
 Documentation/devicetree/bindings/pci/loongson.yaml    |  2 ++
 Documentation/devicetree/bindings/pci/pci-ep.yaml      |  2 ++
 .../devicetree/bindings/pci/ti,j721e-pci-ep.yaml       |  2 ++
 .../devicetree/bindings/pci/ti,j721e-pci-host.yaml     |  2 ++
 Documentation/devicetree/bindings/pci/versatile.yaml   |  2 ++
 .../devicetree/bindings/pinctrl/cirrus,madera.yaml     |  2 ++
 .../devicetree/bindings/pinctrl/pincfg-node.yaml       |  2 ++
 .../devicetree/bindings/pinctrl/pinmux-node.yaml       |  2 ++
 .../devicetree/bindings/power/pd-samsung.yaml          |  2 ++
 .../devicetree/bindings/power/power-domain.yaml        |  2 ++
 .../devicetree/bindings/power/supply/power-supply.yaml |  2 ++
 Documentation/devicetree/bindings/pwm/pwm.yaml         |  2 ++
 .../devicetree/bindings/regulator/fixed-regulator.yaml |  2 ++
 .../bindings/regulator/google,cros-ec-regulator.yaml   |  2 ++
 .../devicetree/bindings/regulator/gpio-regulator.yaml  |  2 ++
 .../bindings/regulator/qcom-labibb-regulator.yaml      |  2 +-
 .../devicetree/bindings/regulator/regulator.yaml       |  2 ++
 .../bindings/regulator/st,stm32-booster.yaml           |  2 ++
 .../bindings/regulator/st,stm32-vrefbuf.yaml           |  2 ++
 .../bindings/regulator/vqmmc-ipq4019-regulator.yaml    |  2 ++
 .../devicetree/bindings/regulator/wlf,arizona.yaml     |  2 ++
 Documentation/devicetree/bindings/riscv/cpus.yaml      |  2 ++
 Documentation/devicetree/bindings/riscv/sifive.yaml    |  3 +++
 Documentation/devicetree/bindings/rtc/ingenic,rtc.yaml |  2 ++
 Documentation/devicetree/bindings/rtc/rtc.yaml         |  2 ++
 Documentation/devicetree/bindings/rtc/s3c-rtc.yaml     |  2 ++
 .../devicetree/bindings/serial/ingenic,uart.yaml       |  5 +++++
 .../devicetree/bindings/serial/renesas,hscif.yaml      |  2 ++
 .../devicetree/bindings/serial/renesas,sci.yaml        |  2 ++
 .../devicetree/bindings/serial/renesas,scif.yaml       |  2 ++
 .../devicetree/bindings/serial/renesas,scifa.yaml      |  2 ++
 .../devicetree/bindings/serial/renesas,scifb.yaml      |  2 ++
 Documentation/devicetree/bindings/serial/rs485.yaml    |  3 +++
 Documentation/devicetree/bindings/serial/serial.yaml   |  2 ++
 .../devicetree/bindings/serial/snps-dw-apb-uart.yaml   |  2 ++
 .../devicetree/bindings/soc/imx/fsl,aips-bus.yaml      |  2 ++
 .../devicetree/bindings/sound/amlogic,aiu.yaml         |  2 ++
 .../devicetree/bindings/sound/cirrus,madera.yaml       |  2 ++
 .../bindings/sound/nvidia,tegra210-ahub.yaml           |  3 +++
 .../devicetree/bindings/sound/wlf,arizona.yaml         |  2 ++
 .../bindings/soundwire/soundwire-controller.yaml       |  2 ++
 .../bindings/spi/amlogic,meson-gx-spicc.yaml           |  2 ++
 .../devicetree/bindings/spi/amlogic,meson6-spifc.yaml  |  2 ++
 .../devicetree/bindings/spi/mikrotik,rb4xx-spi.yaml    |  2 ++
 .../devicetree/bindings/spi/qca,ar934x-spi.yaml        |  2 ++
 .../devicetree/bindings/spi/qcom,spi-qcom-qspi.yaml    |  2 ++
 .../devicetree/bindings/spi/renesas,hspi.yaml          |  2 ++
 .../devicetree/bindings/spi/renesas,rspi.yaml          |  2 ++
 .../devicetree/bindings/spi/renesas,sh-msiof.yaml      |  2 ++
 .../bindings/spi/socionext,uniphier-spi.yaml           |  2 ++
 .../devicetree/bindings/spi/spi-controller.yaml        |  2 ++
 Documentation/devicetree/bindings/spi/spi-gpio.yaml    |  2 ++
 Documentation/devicetree/bindings/spi/spi-mux.yaml     |  2 ++
 Documentation/devicetree/bindings/spi/spi-pl022.yaml   |  2 ++
 .../devicetree/bindings/spi/spi-rockchip.yaml          |  2 ++
 Documentation/devicetree/bindings/spi/spi-sifive.yaml  |  2 ++
 .../devicetree/bindings/spi/st,stm32-qspi.yaml         |  2 ++
 .../devicetree/bindings/spi/st,stm32-spi.yaml          |  2 ++
 Documentation/devicetree/bindings/spmi/spmi.yaml       |  2 ++
 .../bindings/thermal/thermal-cooling-devices.yaml      |  2 ++
 .../devicetree/bindings/thermal/thermal-sensor.yaml    |  2 ++
 .../devicetree/bindings/timer/snps,dw-apb-timer.yaml   |  2 +-
 Documentation/devicetree/bindings/usb/ti,tps6598x.yaml |  2 ++
 Documentation/devicetree/bindings/usb/usb-hcd.yaml     |  2 ++
 .../bindings/watchdog/amlogic,meson-gxbb-wdt.yaml      |  2 ++
 .../devicetree/bindings/watchdog/arm-smc-wdt.yaml      |  2 ++
 .../devicetree/bindings/watchdog/qcom-wdt.yaml         |  2 ++
 .../devicetree/bindings/watchdog/samsung-wdt.yaml      |  2 ++
 .../devicetree/bindings/watchdog/st,stm32-iwdg.yaml    |  2 ++
 .../devicetree/bindings/watchdog/ti,rti-wdt.yaml       |  2 ++
 .../devicetree/bindings/watchdog/watchdog.yaml         |  2 ++
 249 files changed, 570 insertions(+), 14 deletions(-)

--
2.25.1

Comments

Srinivas Kandagatla Oct. 6, 2020, 8:25 a.m. UTC | #1
On 05/10/2020 19:38, Rob Herring wrote:
> The default behavior for json-schema is any unknown property is allowed.
> T
> 
> hat is generally not the behavior we want for DT. In order to disallow
> extra properties, schemas need to define 'additionalProperties: false'
> typically. Ideally, we'd just add that automatically with the tools, but
> there are some exceptions so only making things explicit everywhere
> really works. Missing 'additionalProperties' or 'unevaluatedProperties'
> has been a constant source of review comments, so a meta-schema check is
> really needed here.
> 
>   Documentation/devicetree/bindings/nvmem/nvmem.yaml     |  2 ++
>   .../devicetree/bindings/nvmem/qcom,qfprom.yaml         |  2 ++

for nvmem parts,

Acked-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>


thanks,
--srini