mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 14:24:11 +08:00
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 -----BEGIN PGP SIGNATURE----- iQJEBAABCgAuFiEEktVUI4SxYhzZyEuo+vtdtY28YcMFAl7+UtkQHHJvYmhAa2Vy bmVsLm9yZwAKCRD6+121jbxhw78WEACCkLrvgqJ6fkAInzOGz8yXgrVEU2mWYlgD 4mt5K0M7mVeNonuQJDCbFAvmisKTS/Gxjw5234k68aJ/0C7oCRjMhB/wIKgU/gzm K3mBOI02CAxCZzKvQQloESZV62nUI9wOcRTF3K5BjMsxsGbNBzaZPxP3A9Uku34t VpY/H23ZXZ1FeWx0OjeMF6lKJP4cWX4l4Ay9Y9oE4m31LXq64Cb5VBBxo70yqJZB QiTCqBBS+WpTCvbukKn+rCazeRka5evCSC0vlXum4WkifZDMIclke7gS4QjfsJr/ DM6OmAfNRfOyYO6yGKZzU2eu98q/wFggGaqyJ2vn7Ht0CbzWqgrCaQzEN5ksxwak CKe9KHS/W2PK3nxRFa1GfznEoBsueckkzmv4hxuwafDuBPgt+UPDExbruHvV3qHC O4W2zdYWJaQE9ZeiBkZmAbDM+cdbzyd0qHFcuNuU7d53Ez+XDpVDhVE2WX3Hiegw vTLKyId9McvHrYlRZqNgUSbKgqCCPkjfdU5ANAQB7LSFuiolNZgqcDZZ2Jq9nHxS irX1dvPKgXxTVz4SAZ6vtrPp5ZueSxcgYGkdC6A+3sm7Xi4RdTgHeRrHFDP3QxrE FoGAb8ZBzGL6EVdiyIDMPSN2rnABKntheixVZ8bQ4yA8BAEKapuoMRAqCedNW9q+ ixQ/tlB83w== =/l5U -----END PGP SIGNATURE----- Merge tag 'devicetree-fixes-for-5.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux Pull devicetree fixes from Rob Herring: - 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 * tag 'devicetree-fixes-for-5.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: dt-bindings: clock: imx: Fix e-mail address dt-bindings: thermal: k3: Fix the reg property dt-bindings: thermal: Remove soc unit address dt-bindings: display: arm: versatile: Pass the sysreg unit name dt-bindings: usb: aspeed: Remove the leading zeroes dt-bindings: copy process-schema-examples.yaml to process-schema.yaml dt-bindings: do not build processed-schema.yaml for 'make dt_binding_check' dt-bindings: fix error in 'make clean' after 'make dt_binding_check' dt-bindings: mailbox: zynqmp_ipi: fix unit address dt-bindings: bus: uniphier-system-bus: fix warning in example scripts/dtc: Update to upstream version v1.6.0-11-g9d7888cbf19c doc: devicetree: bindings: fix spelling mistake docs: dt: minor adjustments at writing-schema.rst dt: fix reference to olpc,xo1.75-ec.txt dt: Fix broken references to renamed docs dt: fix broken links due to txt->yaml renames dt: update a reference for reneases pcar file renamed to yaml
This commit is contained in:
commit
684c8ccc40
@ -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 $@
|
|||||||
|
|
||||||
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:
|
|||||||
&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:
|
|||||||
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#
|
|||||||
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#
|
|||||||
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#
|
|||||||
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:
|
|||||||
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:
|
|||||||
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:
|
|||||||
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:
|
|||||||
"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
|
|||||||
|
|
||||||
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:
|
|||||||
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:
|
|||||||
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:
|
|||||||
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:
|
|||||||
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
|
|||||||
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
|
|||||||
|
|
||||||
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.
|
|||||||
[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.
|
|||||||
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.
|
|||||||
|
|
||||||
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:
|
|||||||
|
|
||||||
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:
|
|||||||
#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:
|
|||||||
#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:
|
|||||||
#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.
|
|||||||
- 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:
|
|||||||
#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";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
: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
|
|||||||
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
|
|||||||
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
|
|||||||
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
|
|||||||
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
|
||||||
@ -14574,8 +14574,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), \
|
|||||||
$(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 $@
|
|||||||
# 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
|
|||||||
|
|
||||||
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
|
|||||||
}
|
}
|
||||||
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
|
|||||||
}
|
}
|
||||||
|
|
||||||
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
|
|||||||
|
|
||||||
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, ®_format, &i2c_bus_bridge);
|
WARNING(i2c_bus_reg, check_i2c_bus_reg, NULL, ®_format, &i2c_bus_bridge);
|
||||||
@ -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,
|
|||||||
|
|
||||||
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[] = {
|
|||||||
&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 */
|
|||||||
|
|
||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
/* '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 @@
|
|||||||
#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);
|
|||||||
|
|
||||||
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)
|
|||||||
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)
|
|||||||
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)) {
|
||||||
|
@ -1 +1 @@
|
|||||||
#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
|
|||||||
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
|
|||||||
}
|
}
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user