Commit 2a8eeea7 authored by Rob Herring's avatar Rob Herring

Merge tag 'devicetree-fixes-for-5.8-2' into dt/next

Devicetree fixes for v5.8, take 2:

- Sync dtc to upstream to pick up fixes for I2C bus checks and quiet
  warnings

- Various fixes for DT binding check warnings

- A couple of build fixes/improvements for binding checks

- ReST formatting improvements for writing-schema.rst

- Document reference fixes
parents ad440432 0115e6c9
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
DT_DOC_CHECKER ?= dt-doc-validate DT_DOC_CHECKER ?= dt-doc-validate
DT_EXTRACT_EX ?= dt-extract-example DT_EXTRACT_EX ?= dt-extract-example
DT_MK_SCHEMA ?= dt-mk-schema DT_MK_SCHEMA ?= dt-mk-schema
DT_MK_SCHEMA_USERONLY_FLAG := $(if $(DT_SCHEMA_FILES), -u)
DT_SCHEMA_MIN_VERSION = 2020.5 DT_SCHEMA_MIN_VERSION = 2020.5
...@@ -35,21 +34,40 @@ quiet_cmd_mk_schema = SCHEMA $@ ...@@ -35,21 +34,40 @@ quiet_cmd_mk_schema = SCHEMA $@
DT_DOCS = $(shell $(find_cmd) | sed -e 's|^$(srctree)/||') DT_DOCS = $(shell $(find_cmd) | sed -e 's|^$(srctree)/||')
DT_SCHEMA_FILES ?= $(DT_DOCS)
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES))
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES))
extra-$(CHECK_DT_BINDING) += processed-schema-examples.yaml
override DTC_FLAGS := \ override DTC_FLAGS := \
-Wno-avoid_unnecessary_addr_size \ -Wno-avoid_unnecessary_addr_size \
-Wno-graph_child_address -Wno-graph_child_address \
-Wno-interrupt_provider
$(obj)/processed-schema-examples.yaml: $(DT_DOCS) check_dtschema_version FORCE $(obj)/processed-schema-examples.yaml: $(DT_DOCS) check_dtschema_version FORCE
$(call if_changed,mk_schema) $(call if_changed,mk_schema)
$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := $(DT_MK_SCHEMA_USERONLY_FLAG) ifeq ($(DT_SCHEMA_FILES),)
# Unless DT_SCHEMA_FILES is specified, use the full schema for dtbs_check too.
# Just copy processed-schema-examples.yaml
$(obj)/processed-schema.yaml: $(obj)/processed-schema-examples.yaml FORCE
$(call if_changed,copy)
DT_SCHEMA_FILES = $(DT_DOCS)
else
# If DT_SCHEMA_FILES is specified, use it for processed-schema.yaml
$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u
$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) check_dtschema_version FORCE $(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) check_dtschema_version FORCE
$(call if_changed,mk_schema) $(call if_changed,mk_schema)
extra-y += processed-schema.yaml endif
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES))
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES))
extra-$(CHECK_DT_BINDING) += processed-schema-examples.yaml
extra-$(CHECK_DTBS) += processed-schema.yaml
# Hack: avoid 'Argument list too long' error for 'make clean'. Remove most of
# build artifacts here before they are processed by scripts/Makefile.clean
clean-files = $(shell find $(obj) \( -name '*.example.dts' -o \
-name '*.example.dt.yaml' \) -delete 2>/dev/null)
...@@ -47,7 +47,7 @@ Required properties: ...@@ -47,7 +47,7 @@ Required properties:
&lsio_mu1 1 2 &lsio_mu1 1 2
&lsio_mu1 1 3 &lsio_mu1 1 3
&lsio_mu1 3 3>; &lsio_mu1 3 3>;
See Documentation/devicetree/bindings/mailbox/fsl,mu.txt See Documentation/devicetree/bindings/mailbox/fsl,mu.yaml
for detailed mailbox binding. for detailed mailbox binding.
Note: Each mu which supports general interrupt should have an alias correctly Note: Each mu which supports general interrupt should have an alias correctly
......
...@@ -80,14 +80,14 @@ examples: ...@@ -80,14 +80,14 @@ examples:
ranges = <1 0x00000000 0x42000000 0x02000000>, ranges = <1 0x00000000 0x42000000 0x02000000>,
<5 0x00000000 0x46000000 0x01000000>; <5 0x00000000 0x46000000 0x01000000>;
ethernet@1,01f00000 { ethernet@1,1f00000 {
compatible = "smsc,lan9115"; compatible = "smsc,lan9115";
reg = <1 0x01f00000 0x1000>; reg = <1 0x01f00000 0x1000>;
interrupts = <0 48 4>; interrupts = <0 48 4>;
phy-mode = "mii"; phy-mode = "mii";
}; };
uart@5,00200000 { serial@5,200000 {
compatible = "ns16550a"; compatible = "ns16550a";
reg = <5 0x00200000 0x20>; reg = <5 0x00200000 0x20>;
interrupts = <0 49 4>; interrupts = <0 49 4>;
......
...@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml# ...@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Clock bindings for Freescale i.MX27 title: Clock bindings for Freescale i.MX27
maintainers: maintainers:
- Fabio Estevam <fabio.estevam@freescale.com> - Fabio Estevam <fabio.estevam@nxp.com>
description: | description: |
The clock consumer should specify the desired clock by having the clock The clock consumer should specify the desired clock by having the clock
......
...@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml# ...@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Clock bindings for Freescale i.MX31 title: Clock bindings for Freescale i.MX31
maintainers: maintainers:
- Fabio Estevam <fabio.estevam@freescale.com> - Fabio Estevam <fabio.estevam@nxp.com>
description: | description: |
The clock consumer should specify the desired clock by having the clock The clock consumer should specify the desired clock by having the clock
......
...@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml# ...@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Clock bindings for Freescale i.MX5 title: Clock bindings for Freescale i.MX5
maintainers: maintainers:
- Fabio Estevam <fabio.estevam@freescale.com> - Fabio Estevam <fabio.estevam@nxp.com>
description: | description: |
The clock consumer should specify the desired clock by having the clock The clock consumer should specify the desired clock by having the clock
......
...@@ -37,7 +37,7 @@ Optional properties: ...@@ -37,7 +37,7 @@ Optional properties:
simple-card or audio-graph-card binding. See their binding simple-card or audio-graph-card binding. See their binding
documents on how to describe the way the sii902x device is documents on how to describe the way the sii902x device is
connected to the rest of the audio system: connected to the rest of the audio system:
Documentation/devicetree/bindings/sound/simple-card.txt Documentation/devicetree/bindings/sound/simple-card.yaml
Documentation/devicetree/bindings/sound/audio-graph-card.txt Documentation/devicetree/bindings/sound/audio-graph-card.txt
Note: In case of the audio-graph-card binding the used port Note: In case of the audio-graph-card binding the used port
index should be 3. index should be 3.
......
...@@ -68,7 +68,7 @@ Required properties: ...@@ -68,7 +68,7 @@ Required properties:
datasheet datasheet
- clocks : phandle to the PRE axi clock input, as described - clocks : phandle to the PRE axi clock input, as described
in Documentation/devicetree/bindings/clock/clock-bindings.txt and in Documentation/devicetree/bindings/clock/clock-bindings.txt and
Documentation/devicetree/bindings/clock/imx6q-clock.txt. Documentation/devicetree/bindings/clock/imx6q-clock.yaml.
- clock-names: should be "axi" - clock-names: should be "axi"
- interrupts: should contain the PRE interrupt - interrupts: should contain the PRE interrupt
- fsl,iram: phandle pointing to the mmio-sram device node, that should be - fsl,iram: phandle pointing to the mmio-sram device node, that should be
...@@ -94,7 +94,7 @@ Required properties: ...@@ -94,7 +94,7 @@ Required properties:
datasheet datasheet
- clocks : phandles to the PRG ipg and axi clock inputs, as described - clocks : phandles to the PRG ipg and axi clock inputs, as described
in Documentation/devicetree/bindings/clock/clock-bindings.txt and in Documentation/devicetree/bindings/clock/clock-bindings.txt and
Documentation/devicetree/bindings/clock/imx6q-clock.txt. Documentation/devicetree/bindings/clock/imx6q-clock.yaml.
- clock-names: should be "ipg" and "axi" - clock-names: should be "ipg" and "axi"
- fsl,pres: phandles to the PRE units attached to this PRG, with the fixed - fsl,pres: phandles to the PRE units attached to this PRG, with the fixed
PRE as the first entry and the muxable PREs following. PRE as the first entry and the muxable PREs following.
......
...@@ -30,8 +30,8 @@ Required properties: ...@@ -30,8 +30,8 @@ Required properties:
"di2_sel" - IPU2 DI0 mux "di2_sel" - IPU2 DI0 mux
"di3_sel" - IPU2 DI1 mux "di3_sel" - IPU2 DI1 mux
The needed clock numbers for each are documented in The needed clock numbers for each are documented in
Documentation/devicetree/bindings/clock/imx5-clock.txt, and in Documentation/devicetree/bindings/clock/imx5-clock.yaml, and in
Documentation/devicetree/bindings/clock/imx6q-clock.txt. Documentation/devicetree/bindings/clock/imx6q-clock.yaml.
Optional properties: Optional properties:
- pinctrl-names : should be "default" on i.MX53, not used on i.MX6q - pinctrl-names : should be "default" on i.MX53, not used on i.MX6q
......
...@@ -33,7 +33,7 @@ additionalProperties: false ...@@ -33,7 +33,7 @@ additionalProperties: false
examples: examples:
- | - |
sysreg { sysreg@0 {
compatible = "arm,versatile-sysreg", "syscon", "simple-mfd"; compatible = "arm,versatile-sysreg", "syscon", "simple-mfd";
reg = <0x00000 0x1000>; reg = <0x00000 0x1000>;
......
...@@ -24,7 +24,7 @@ properties: ...@@ -24,7 +24,7 @@ properties:
description: | description: |
Should contain a list of phandles pointing to display interface port Should contain a list of phandles pointing to display interface port
of vop devices. vop definitions as defined in of vop devices. vop definitions as defined in
Documentation/devicetree/bindings/display/rockchip/rockchip-vop.txt Documentation/devicetree/bindings/display/rockchip/rockchip-vop.yaml
required: required:
- compatible - compatible
......
...@@ -12,7 +12,7 @@ Required properties for the top level node: ...@@ -12,7 +12,7 @@ Required properties for the top level node:
Only the GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported. Only the GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported.
- #interrupt-cells : Specifies the number of cells needed to encode an - #interrupt-cells : Specifies the number of cells needed to encode an
interrupt. Should be 2. The first cell defines the interrupt number, interrupt. Should be 2. The first cell defines the interrupt number,
the second encodes the triger flags encoded as described in the second encodes the trigger flags encoded as described in
Documentation/devicetree/bindings/interrupt-controller/interrupts.txt Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
- compatible: - compatible:
- "mediatek,mt7621-gpio" for Mediatek controllers - "mediatek,mt7621-gpio" for Mediatek controllers
......
...@@ -10,7 +10,7 @@ Interrupt number definition: ...@@ -10,7 +10,7 @@ Interrupt number definition:
16-31 : private irq, and we use 16 as the co-processor timer. 16-31 : private irq, and we use 16 as the co-processor timer.
31-1024: common irq for soc ip. 31-1024: common irq for soc ip.
Interrupt triger mode: (Defined in dt-bindings/interrupt-controller/irq.h) Interrupt trigger mode: (Defined in dt-bindings/interrupt-controller/irq.h)
IRQ_TYPE_LEVEL_HIGH (default) IRQ_TYPE_LEVEL_HIGH (default)
IRQ_TYPE_LEVEL_LOW IRQ_TYPE_LEVEL_LOW
IRQ_TYPE_EDGE_RISING IRQ_TYPE_EDGE_RISING
......
...@@ -87,7 +87,7 @@ Example: ...@@ -87,7 +87,7 @@ Example:
ranges; ranges;
/* APU<->RPU0 IPI mailbox controller */ /* APU<->RPU0 IPI mailbox controller */
ipi_mailbox_rpu0: mailbox@ff90400 { ipi_mailbox_rpu0: mailbox@ff990400 {
reg = <0xff990400 0x20>, reg = <0xff990400 0x20>,
<0xff990420 0x20>, <0xff990420 0x20>,
<0xff990080 0x20>, <0xff990080 0x20>,
......
...@@ -8,7 +8,7 @@ The embedded controller requires the SPI controller driver to signal readiness ...@@ -8,7 +8,7 @@ The embedded controller requires the SPI controller driver to signal readiness
to receive a transfer (that is, when TX FIFO contains the response data) by to receive a transfer (that is, when TX FIFO contains the response data) by
strobing the ACK pin with the ready signal. See the "ready-gpios" property of the strobing the ACK pin with the ready signal. See the "ready-gpios" property of the
SSP binding as documented in: SSP binding as documented in:
<Documentation/devicetree/bindings/spi/spi-pxa2xx.txt>. <Documentation/devicetree/bindings/spi/marvell,mmp2-ssp.yaml>.
Example: Example:
&ssp3 { &ssp3 {
......
...@@ -3,7 +3,7 @@ MediaTek SoC built-in Bluetooth Devices ...@@ -3,7 +3,7 @@ MediaTek SoC built-in Bluetooth Devices
This device is a serial attached device to BTIF device and thus it must be a This device is a serial attached device to BTIF device and thus it must be a
child node of the serial node with BTIF. The dt-bindings details for BTIF child node of the serial node with BTIF. The dt-bindings details for BTIF
device can be known via Documentation/devicetree/bindings/serial/8250.txt. device can be known via Documentation/devicetree/bindings/serial/8250.yaml.
Required properties: Required properties:
......
...@@ -114,7 +114,7 @@ with values derived from the SoC user manual. ...@@ -114,7 +114,7 @@ with values derived from the SoC user manual.
[flags]> [flags]>
On other mach-shmobile platforms GPIO is handled by the gpio-rcar driver. On other mach-shmobile platforms GPIO is handled by the gpio-rcar driver.
Please refer to Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt Please refer to Documentation/devicetree/bindings/gpio/renesas,rcar-gpio.yaml
for documentation of the GPIO device tree bindings on those platforms. for documentation of the GPIO device tree bindings on those platforms.
......
...@@ -5,7 +5,7 @@ It is based on common bindings for device graphs. ...@@ -5,7 +5,7 @@ It is based on common bindings for device graphs.
see ${LINUX}/Documentation/devicetree/bindings/graph.txt see ${LINUX}/Documentation/devicetree/bindings/graph.txt
Basically, Audio Graph Card property is same as Simple Card. Basically, Audio Graph Card property is same as Simple Card.
see ${LINUX}/Documentation/devicetree/bindings/sound/simple-card.txt see ${LINUX}/Documentation/devicetree/bindings/sound/simple-card.yaml
Below are same as Simple-Card. Below are same as Simple-Card.
......
...@@ -5,7 +5,7 @@ codec or external codecs. ...@@ -5,7 +5,7 @@ codec or external codecs.
sti sound drivers allows to expose sti SoC audio interface through the sti sound drivers allows to expose sti SoC audio interface through the
generic ASoC simple card. For details about sound card declaration please refer to generic ASoC simple card. For details about sound card declaration please refer to
Documentation/devicetree/bindings/sound/simple-card.txt. Documentation/devicetree/bindings/sound/simple-card.yaml.
1) sti-uniperiph-dai: audio dai device. 1) sti-uniperiph-dai: audio dai device.
--------------------------------------- ---------------------------------------
......
...@@ -19,7 +19,7 @@ Required properties: ...@@ -19,7 +19,7 @@ Required properties:
SPI Controller nodes must be child of GENI based Qualcomm Universal SPI Controller nodes must be child of GENI based Qualcomm Universal
Peripharal. Please refer GENI based QUP wrapper controller node bindings Peripharal. Please refer GENI based QUP wrapper controller node bindings
described in Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.txt. described in Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml.
SPI slave nodes must be children of the SPI master node and conform to SPI bus SPI slave nodes must be children of the SPI master node and conform to SPI bus
binding as described in Documentation/devicetree/bindings/spi/spi-bus.txt. binding as described in Documentation/devicetree/bindings/spi/spi-bus.txt.
......
...@@ -41,7 +41,7 @@ examples: ...@@ -41,7 +41,7 @@ examples:
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
// Example 1: SDM845 TSENS // Example 1: SDM845 TSENS
soc: soc@0 { soc: soc {
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;
......
...@@ -224,7 +224,7 @@ examples: ...@@ -224,7 +224,7 @@ examples:
#include <dt-bindings/thermal/thermal.h> #include <dt-bindings/thermal/thermal.h>
// Example 1: SDM845 TSENS // Example 1: SDM845 TSENS
soc: soc@0 { soc {
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;
......
...@@ -35,7 +35,7 @@ examples: ...@@ -35,7 +35,7 @@ examples:
#include <dt-bindings/soc/ti,sci_pm_domain.h> #include <dt-bindings/soc/ti,sci_pm_domain.h>
vtm: thermal@42050000 { vtm: thermal@42050000 {
compatible = "ti,am654-vtm"; compatible = "ti,am654-vtm";
reg = <0x0 0x42050000 0x0 0x25c>; reg = <0x42050000 0x25c>;
power-domains = <&k3_pds 80 TI_SCI_PD_EXCLUSIVE>; power-domains = <&k3_pds 80 TI_SCI_PD_EXCLUSIVE>;
#thermal-sensor-cells = <1>; #thermal-sensor-cells = <1>;
}; };
......
...@@ -8,7 +8,7 @@ regs is accessed by cpu co-processor 4 registers with mtcr/mfcr. ...@@ -8,7 +8,7 @@ regs is accessed by cpu co-processor 4 registers with mtcr/mfcr.
- PTIM_CTLR "cr<0, 14>" Control reg to start reset timer. - PTIM_CTLR "cr<0, 14>" Control reg to start reset timer.
- PTIM_TSR "cr<1, 14>" Interrupt cleanup status reg. - PTIM_TSR "cr<1, 14>" Interrupt cleanup status reg.
- PTIM_CCVR "cr<3, 14>" Current counter value reg. - PTIM_CCVR "cr<3, 14>" Current counter value reg.
- PTIM_LVR "cr<6, 14>" Window value reg to triger next event. - PTIM_LVR "cr<6, 14>" Window value reg to trigger next event.
============================== ==============================
timer node bindings definition timer node bindings definition
......
...@@ -127,8 +127,8 @@ examples: ...@@ -127,8 +127,8 @@ examples:
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
string@0409 { string@409 {
reg = <0x0409>; reg = <0x409>;
manufacturer = "ASPEED"; manufacturer = "ASPEED";
product = "USB Virtual Hub"; product = "USB Virtual Hub";
serial-number = "0000"; serial-number = "0000";
......
:orphan: .. SPDX-License-Identifier: GPL-2.0
Writing DeviceTree Bindings in json-schema Writing DeviceTree Bindings in json-schema
========================================== ==========================================
...@@ -124,9 +124,12 @@ dtc must also be built with YAML output support enabled. This requires that ...@@ -124,9 +124,12 @@ dtc must also be built with YAML output support enabled. This requires that
libyaml and its headers be installed on the host system. For some distributions libyaml and its headers be installed on the host system. For some distributions
that involves installing the development package, such as: that involves installing the development package, such as:
Debian: Debian::
apt-get install libyaml-dev apt-get install libyaml-dev
Fedora:
Fedora::
dnf -y install libyaml-devel dnf -y install libyaml-devel
Running checks Running checks
......
...@@ -68,4 +68,4 @@ and frameworks can be controlled from the same registers, all of these ...@@ -68,4 +68,4 @@ and frameworks can be controlled from the same registers, all of these
drivers access their registers through the same regmap. drivers access their registers through the same regmap.
For more information regarding the devicetree bindings of the TCU drivers, For more information regarding the devicetree bindings of the TCU drivers,
have a look at Documentation/devicetree/bindings/timer/ingenic,tcu.txt. have a look at Documentation/devicetree/bindings/timer/ingenic,tcu.yaml.
...@@ -3946,7 +3946,7 @@ L: linux-crypto@vger.kernel.org ...@@ -3946,7 +3946,7 @@ L: linux-crypto@vger.kernel.org
S: Supported S: Supported
F: drivers/char/hw_random/cctrng.c F: drivers/char/hw_random/cctrng.c
F: drivers/char/hw_random/cctrng.h F: drivers/char/hw_random/cctrng.h
F: Documentation/devicetree/bindings/rng/arm-cctrng.txt F: Documentation/devicetree/bindings/rng/arm-cctrng.yaml
W: https://developer.arm.com/products/system-ip/trustzone-cryptocell/cryptocell-700-family W: https://developer.arm.com/products/system-ip/trustzone-cryptocell/cryptocell-700-family
CEC FRAMEWORK CEC FRAMEWORK
...@@ -5490,7 +5490,7 @@ F: include/uapi/drm/r128_drm.h ...@@ -5490,7 +5490,7 @@ F: include/uapi/drm/r128_drm.h
DRM DRIVER FOR RAYDIUM RM67191 PANELS DRM DRIVER FOR RAYDIUM RM67191 PANELS
M: Robert Chiras <robert.chiras@nxp.com> M: Robert Chiras <robert.chiras@nxp.com>
S: Maintained S: Maintained
F: Documentation/devicetree/bindings/display/panel/raydium,rm67191.txt F: Documentation/devicetree/bindings/display/panel/raydium,rm67191.yaml
F: drivers/gpu/drm/panel/panel-raydium-rm67191.c F: drivers/gpu/drm/panel/panel-raydium-rm67191.c
DRM DRIVER FOR ROCKTECH JH057N00900 PANELS DRM DRIVER FOR ROCKTECH JH057N00900 PANELS
...@@ -14561,8 +14561,8 @@ RENESAS R-CAR THERMAL DRIVERS ...@@ -14561,8 +14561,8 @@ RENESAS R-CAR THERMAL DRIVERS
M: Niklas Söderlund <niklas.soderlund@ragnatech.se> M: Niklas Söderlund <niklas.soderlund@ragnatech.se>
L: linux-renesas-soc@vger.kernel.org L: linux-renesas-soc@vger.kernel.org
S: Supported S: Supported
F: Documentation/devicetree/bindings/thermal/rcar-gen3-thermal.txt F: Documentation/devicetree/bindings/thermal/rcar-gen3-thermal.yaml
F: Documentation/devicetree/bindings/thermal/rcar-thermal.txt F: Documentation/devicetree/bindings/thermal/rcar-thermal.yaml
F: drivers/thermal/rcar_gen3_thermal.c F: drivers/thermal/rcar_gen3_thermal.c
F: drivers/thermal/rcar_thermal.c F: drivers/thermal/rcar_thermal.c
......
...@@ -212,6 +212,9 @@ $(foreach m, $(notdir $1), \ ...@@ -212,6 +212,9 @@ $(foreach m, $(notdir $1), \
$(addprefix $(obj)/, $(foreach s, $3, $($(m:%$(strip $2)=%$(s))))))) $(addprefix $(obj)/, $(foreach s, $3, $($(m:%$(strip $2)=%$(s)))))))
endef endef
quiet_cmd_copy = COPY $@
cmd_copy = cp $< $@
# Shipped files # Shipped files
# =========================================================================== # ===========================================================================
...@@ -259,6 +262,7 @@ quiet_cmd_gzip = GZIP $@ ...@@ -259,6 +262,7 @@ quiet_cmd_gzip = GZIP $@
# DTC # DTC
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
DTC ?= $(objtree)/scripts/dtc/dtc DTC ?= $(objtree)/scripts/dtc/dtc
DTC_FLAGS += -Wno-interrupt_provider
# Disable noisy checks by default # Disable noisy checks by default
ifeq ($(findstring 1,$(KBUILD_EXTRA_WARN)),) ifeq ($(findstring 1,$(KBUILD_EXTRA_WARN)),)
...@@ -274,7 +278,8 @@ endif ...@@ -274,7 +278,8 @@ endif
ifneq ($(findstring 2,$(KBUILD_EXTRA_WARN)),) ifneq ($(findstring 2,$(KBUILD_EXTRA_WARN)),)
DTC_FLAGS += -Wnode_name_chars_strict \ DTC_FLAGS += -Wnode_name_chars_strict \
-Wproperty_name_chars_strict -Wproperty_name_chars_strict \
-Winterrupt_provider
endif endif
DTC_FLAGS += $(DTC_FLAGS_$(basetarget)) DTC_FLAGS += $(DTC_FLAGS_$(basetarget))
......
...@@ -1022,6 +1022,9 @@ static void check_i2c_bus_bridge(struct check *c, struct dt_info *dti, struct no ...@@ -1022,6 +1022,9 @@ static void check_i2c_bus_bridge(struct check *c, struct dt_info *dti, struct no
} }
WARNING(i2c_bus_bridge, check_i2c_bus_bridge, NULL, &addr_size_cells); WARNING(i2c_bus_bridge, check_i2c_bus_bridge, NULL, &addr_size_cells);
#define I2C_OWN_SLAVE_ADDRESS (1U << 30)
#define I2C_TEN_BIT_ADDRESS (1U << 31)
static void check_i2c_bus_reg(struct check *c, struct dt_info *dti, struct node *node) static void check_i2c_bus_reg(struct check *c, struct dt_info *dti, struct node *node)
{ {
struct property *prop; struct property *prop;
...@@ -1044,6 +1047,8 @@ static void check_i2c_bus_reg(struct check *c, struct dt_info *dti, struct node ...@@ -1044,6 +1047,8 @@ static void check_i2c_bus_reg(struct check *c, struct dt_info *dti, struct node
} }
reg = fdt32_to_cpu(*cells); reg = fdt32_to_cpu(*cells);
/* Ignore I2C_OWN_SLAVE_ADDRESS */
reg &= ~I2C_OWN_SLAVE_ADDRESS;
snprintf(unit_addr, sizeof(unit_addr), "%x", reg); snprintf(unit_addr, sizeof(unit_addr), "%x", reg);
if (!streq(unitname, unit_addr)) if (!streq(unitname, unit_addr))
FAIL(c, dti, node, "I2C bus unit address format error, expected \"%s\"", FAIL(c, dti, node, "I2C bus unit address format error, expected \"%s\"",
...@@ -1051,10 +1056,15 @@ static void check_i2c_bus_reg(struct check *c, struct dt_info *dti, struct node ...@@ -1051,10 +1056,15 @@ static void check_i2c_bus_reg(struct check *c, struct dt_info *dti, struct node
for (len = prop->val.len; len > 0; len -= 4) { for (len = prop->val.len; len > 0; len -= 4) {
reg = fdt32_to_cpu(*(cells++)); reg = fdt32_to_cpu(*(cells++));
if (reg > 0x3ff) /* Ignore I2C_OWN_SLAVE_ADDRESS */
reg &= ~I2C_OWN_SLAVE_ADDRESS;
if ((reg & I2C_TEN_BIT_ADDRESS) && ((reg & ~I2C_TEN_BIT_ADDRESS) > 0x3ff))
FAIL_PROP(c, dti, node, prop, "I2C address must be less than 10-bits, got \"0x%x\"", FAIL_PROP(c, dti, node, prop, "I2C address must be less than 10-bits, got \"0x%x\"",
reg); reg);
else if (reg > 0x7f)
FAIL_PROP(c, dti, node, prop, "I2C address must be less than 7-bits, got \"0x%x\". Set I2C_TEN_BIT_ADDRESS for 10 bit addresses or fix the property",
reg);
} }
} }
WARNING(i2c_bus_reg, check_i2c_bus_reg, NULL, &reg_format, &i2c_bus_bridge); WARNING(i2c_bus_reg, check_i2c_bus_reg, NULL, &reg_format, &i2c_bus_bridge);
...@@ -1547,6 +1557,28 @@ static bool node_is_interrupt_provider(struct node *node) ...@@ -1547,6 +1557,28 @@ static bool node_is_interrupt_provider(struct node *node)
return false; return false;
} }
static void check_interrupt_provider(struct check *c,
struct dt_info *dti,
struct node *node)
{
struct property *prop;
if (!node_is_interrupt_provider(node))
return;
prop = get_property(node, "#interrupt-cells");
if (!prop)
FAIL(c, dti, node,
"Missing #interrupt-cells in interrupt provider");
prop = get_property(node, "#address-cells");
if (!prop)
FAIL(c, dti, node,
"Missing #address-cells in interrupt provider");
}
WARNING(interrupt_provider, check_interrupt_provider, NULL);
static void check_interrupts_property(struct check *c, static void check_interrupts_property(struct check *c,
struct dt_info *dti, struct dt_info *dti,
struct node *node) struct node *node)
...@@ -1604,7 +1636,7 @@ static void check_interrupts_property(struct check *c, ...@@ -1604,7 +1636,7 @@ static void check_interrupts_property(struct check *c,
prop = get_property(irq_node, "#interrupt-cells"); prop = get_property(irq_node, "#interrupt-cells");
if (!prop) { if (!prop) {
FAIL(c, dti, irq_node, "Missing #interrupt-cells in interrupt-parent"); /* We warn about that already in another test. */
return; return;
} }
...@@ -1828,6 +1860,7 @@ static struct check *check_table[] = { ...@@ -1828,6 +1860,7 @@ static struct check *check_table[] = {
&deprecated_gpio_property, &deprecated_gpio_property,
&gpios_property, &gpios_property,
&interrupts_property, &interrupts_property,
&interrupt_provider,
&alias_paths, &alias_paths,
......
...@@ -51,6 +51,37 @@ extern int annotate; /* annotate .dts with input source location */ ...@@ -51,6 +51,37 @@ extern int annotate; /* annotate .dts with input source location */
typedef uint32_t cell_t; typedef uint32_t cell_t;
static inline uint16_t dtb_ld16(const void *p)
{
const uint8_t *bp = (const uint8_t *)p;
return ((uint16_t)bp[0] << 8)
| bp[1];
}
static inline uint32_t dtb_ld32(const void *p)
{
const uint8_t *bp = (const uint8_t *)p;
return ((uint32_t)bp[0] << 24)
| ((uint32_t)bp[1] << 16)
| ((uint32_t)bp[2] << 8)
| bp[3];
}
static inline uint64_t dtb_ld64(const void *p)
{
const uint8_t *bp = (const uint8_t *)p;
return ((uint64_t)bp[0] << 56)
| ((uint64_t)bp[1] << 48)
| ((uint64_t)bp[2] << 40)
| ((uint64_t)bp[3] << 32)
| ((uint64_t)bp[4] << 24)
| ((uint64_t)bp[5] << 16)
| ((uint64_t)bp[6] << 8)
| bp[7];
}
#define streq(a, b) (strcmp((a), (b)) == 0) #define streq(a, b) (strcmp((a), (b)) == 0)
#define strstarts(s, prefix) (strncmp((s), (prefix), strlen(prefix)) == 0) #define strstarts(s, prefix) (strncmp((s), (prefix), strlen(prefix)) == 0)
......
...@@ -156,7 +156,7 @@ static void asm_emit_data(void *e, struct data d) ...@@ -156,7 +156,7 @@ static void asm_emit_data(void *e, struct data d)
emit_offset_label(f, m->ref, m->offset); emit_offset_label(f, m->ref, m->offset);
while ((d.len - off) >= sizeof(uint32_t)) { while ((d.len - off) >= sizeof(uint32_t)) {
asm_emit_cell(e, fdt32_to_cpu(*((fdt32_t *)(d.val+off)))); asm_emit_cell(e, dtb_ld32(d.val + off));
off += sizeof(uint32_t); off += sizeof(uint32_t);
} }
......
...@@ -436,7 +436,7 @@ int fdt_open_into(const void *fdt, void *buf, int bufsize) ...@@ -436,7 +436,7 @@ int fdt_open_into(const void *fdt, void *buf, int bufsize)
return struct_size; return struct_size;
} }
if (can_assume(LIBFDT_ORDER) | if (can_assume(LIBFDT_ORDER) ||
!fdt_blocks_misordered_(fdt, mem_rsv_size, struct_size)) { !fdt_blocks_misordered_(fdt, mem_rsv_size, struct_size)) {
/* no further work necessary */ /* no further work necessary */
err = fdt_move(fdt, buf, bufsize); err = fdt_move(fdt, buf, bufsize);
......
...@@ -32,7 +32,7 @@ static int fdt_sw_probe_(void *fdt) ...@@ -32,7 +32,7 @@ static int fdt_sw_probe_(void *fdt)
/* 'memrsv' state: Initial state after fdt_create() /* 'memrsv' state: Initial state after fdt_create()
* *
* Allowed functions: * Allowed functions:
* fdt_add_reservmap_entry() * fdt_add_reservemap_entry()
* fdt_finish_reservemap() [moves to 'struct' state] * fdt_finish_reservemap() [moves to 'struct' state]
*/ */
static int fdt_sw_probe_memrsv_(void *fdt) static int fdt_sw_probe_memrsv_(void *fdt)
......
...@@ -9,6 +9,10 @@ ...@@ -9,6 +9,10 @@
#include "libfdt_env.h" #include "libfdt_env.h"
#include "fdt.h" #include "fdt.h"
#ifdef __cplusplus
extern "C" {
#endif
#define FDT_FIRST_SUPPORTED_VERSION 0x02 #define FDT_FIRST_SUPPORTED_VERSION 0x02
#define FDT_LAST_SUPPORTED_VERSION 0x11 #define FDT_LAST_SUPPORTED_VERSION 0x11
...@@ -2069,4 +2073,8 @@ int fdt_overlay_apply(void *fdt, void *fdto); ...@@ -2069,4 +2073,8 @@ int fdt_overlay_apply(void *fdt, void *fdto);
const char *fdt_strerror(int errval); const char *fdt_strerror(int errval);
#ifdef __cplusplus
}
#endif
#endif /* LIBFDT_H */ #endif /* LIBFDT_H */
...@@ -110,13 +110,13 @@ static void write_propval_int(FILE *f, const char *p, size_t len, size_t width) ...@@ -110,13 +110,13 @@ static void write_propval_int(FILE *f, const char *p, size_t len, size_t width)
fprintf(f, "%02"PRIx8, *(const uint8_t*)p); fprintf(f, "%02"PRIx8, *(const uint8_t*)p);
break; break;
case 2: case 2:
fprintf(f, "0x%02"PRIx16, fdt16_to_cpu(*(const fdt16_t*)p)); fprintf(f, "0x%02"PRIx16, dtb_ld16(p));
break; break;
case 4: case 4:
fprintf(f, "0x%02"PRIx32, fdt32_to_cpu(*(const fdt32_t*)p)); fprintf(f, "0x%02"PRIx32, dtb_ld32(p));
break; break;
case 8: case 8:
fprintf(f, "0x%02"PRIx64, fdt64_to_cpu(*(const fdt64_t*)p)); fprintf(f, "0x%02"PRIx64, dtb_ld64(p));
break; break;
} }
if (p + width < end) if (p + width < end)
...@@ -183,7 +183,7 @@ static enum markertype guess_value_type(struct property *prop) ...@@ -183,7 +183,7 @@ static enum markertype guess_value_type(struct property *prop)
nnotcelllbl++; nnotcelllbl++;
} }
if ((p[len-1] == '\0') && (nnotstring == 0) && (nnul < (len-nnul)) if ((p[len-1] == '\0') && (nnotstring == 0) && (nnul <= (len-nnul))
&& (nnotstringlbl == 0)) { && (nnotstringlbl == 0)) {
return TYPE_STRING; return TYPE_STRING;
} else if (((len % sizeof(cell_t)) == 0) && (nnotcelllbl == 0)) { } else if (((len % sizeof(cell_t)) == 0) && (nnotcelllbl == 0)) {
......
#define DTC_VERSION "DTC 1.6.0-g87a656ae" #define DTC_VERSION "DTC 1.6.0-g9d7888cb"
...@@ -59,10 +59,10 @@ static void yaml_propval_int(yaml_emitter_t *emitter, struct marker *markers, ch ...@@ -59,10 +59,10 @@ static void yaml_propval_int(yaml_emitter_t *emitter, struct marker *markers, ch
sprintf(buf, "0x%"PRIx8, *(uint8_t*)(data + off)); sprintf(buf, "0x%"PRIx8, *(uint8_t*)(data + off));
break; break;
case 2: case 2:
sprintf(buf, "0x%"PRIx16, fdt16_to_cpu(*(fdt16_t*)(data + off))); sprintf(buf, "0x%"PRIx16, dtb_ld16(data + off));
break; break;
case 4: case 4:
sprintf(buf, "0x%"PRIx32, fdt32_to_cpu(*(fdt32_t*)(data + off))); sprintf(buf, "0x%"PRIx32, dtb_ld32(data + off));
m = markers; m = markers;
is_phandle = false; is_phandle = false;
for_each_marker_of_type(m, REF_PHANDLE) { for_each_marker_of_type(m, REF_PHANDLE) {
...@@ -73,7 +73,7 @@ static void yaml_propval_int(yaml_emitter_t *emitter, struct marker *markers, ch ...@@ -73,7 +73,7 @@ static void yaml_propval_int(yaml_emitter_t *emitter, struct marker *markers, ch
} }
break; break;
case 8: case 8:
sprintf(buf, "0x%"PRIx64, fdt64_to_cpu(*(fdt64_t*)(data + off))); sprintf(buf, "0x%"PRIx64, dtb_ld64(data + off));
break; break;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment