mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:24:47 +01:00
Devicetree updates for v7.0:
DT core:
- Sync dtc/libfdt with upstream v1.7.2-62-ga26ef6400bd8
- Add a for_each_compatible_node_scoped() loop and convert users in
cpufreq, dmaengine, clk, cdx, powerpc and Arm
- Simplify of/platform.c with scoped loop helpers
- Add fw_devlink tracking for "mmc-pwrseq"
- Optimize fw_devlink callback code size for pinctrl-N properties
- Replace strcmp_suffix() with strends()
DT bindings:
- Support building single binding targets
- Convert google,goldfish-fb, cznic,turris-mox-rwtm, ti,prm-inst
- Add bindings for Freescale AVIC, Realtek RTD1xxx system controllers,
Microchip 25AA010A EEPROM, OnSemi FIN3385, IEI WT61P803 PUZZLE, Delta
Electronics DPS-800-AB power supply, Infineon IR35221 Digital
Multi-phase Controller, Infineon PXE1610 Digital Dual Output 6+1
VR12.5 & VR13 CPU Controller, socionext,uniphier-smpctrl, and
xlnx,zynqmp-firmware
- Lots of trivial binding fixes to address warnings in DTS files. These
are mostly for arm64 platforms which is getting closer to be warning
free. Some public shaming has helped.
- Fix I2C bus node names in examples
- Drop obsolete brcm,vulcan-soc binding
- Drop unreferenced binding headers
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEktVUI4SxYhzZyEuo+vtdtY28YcMFAmmNLZEACgkQ+vtdtY28
YcPa+A/+Lpf1FLau//mfndvkzRUvuU5aF3eJdL1FPxfC64Js2cb9ZGSoEK+YDjaV
XzNIi2Z1j+i4+uf5MTvyGaqaVx3PcQBcQtb7pu+W1pt2KiOzfVqn66EmRsY3b4cc
twyOwx2sZMTOZambUfZreWwEl6uJiMowIbcLCsnVWihoiGVTnMpnV/jLcO9jISaP
fe42FX9qN4NL2QqWwcREYuWMuOH7MkHDRNpEhTouWosdmFCp3PkVZcuWv3NKjGMg
/tsH5X9QMr972A9s8Zk36ijvTv7NN+9t1GOtPS9KGpbwJmyPHr38mG1fsj+P0rY7
rOXRnT2PScN6kvKZuw0Rex5xeMxrQCzRkFLzyfq2LOsE0GAUyyR3qysNOdH8xO3Z
3TVMGVaelYw5T+ahie1+gf/H/t+8hGhX3teCo8ORFNYo7oLsA9qNclfd5SW2Acat
pPK80PXkqTRsQ9lVGfytPZJ+m5OhcTIBdI9ieEXk/kryDAL4dHcB2IIVHM2/qm50
aGW0Kh0d61Roe0PZ5GEqI/yWPVHZroXEBxT61tDKwPyGawcq4Gs3Sftd6RXbLi8h
+T6HzkHPZFlKaiLmBC1wqXnEKLd8h72qNjjDdXbRBdLXW6S5hGPtPiLv18ArlmmR
4eiFX1Tr+pUAt2W/IwZb9H84mGkbJODbI62x9k9rst/vLeHmnjs=
=RE7t
-----END PGP SIGNATURE-----
Merge tag 'devicetree-for-7.0' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
Pull devicetree updates from Rob Herring:
"DT core:
- Sync dtc/libfdt with upstream v1.7.2-62-ga26ef6400bd8
- Add a for_each_compatible_node_scoped() loop and convert users in
cpufreq, dmaengine, clk, cdx, powerpc and Arm
- Simplify of/platform.c with scoped loop helpers
- Add fw_devlink tracking for "mmc-pwrseq"
- Optimize fw_devlink callback code size for pinctrl-N properties
- Replace strcmp_suffix() with strends()
DT bindings:
- Support building single binding targets
- Convert google,goldfish-fb, cznic,turris-mox-rwtm, ti,prm-inst
- Add bindings for Freescale AVIC, Realtek RTD1xxx system
controllers, Microchip 25AA010A EEPROM, OnSemi FIN3385, IEI
WT61P803 PUZZLE, Delta Electronics DPS-800-AB power supply,
Infineon IR35221 Digital Multi-phase Controller, Infineon PXE1610
Digital Dual Output 6+1 VR12.5 & VR13 CPU Controller,
socionext,uniphier-smpctrl, and xlnx,zynqmp-firmware
- Lots of trivial binding fixes to address warnings in DTS files.
These are mostly for arm64 platforms which is getting closer to be
warning free. Some public shaming has helped.
- Fix I2C bus node names in examples
- Drop obsolete brcm,vulcan-soc binding
- Drop unreferenced binding headers"
* tag 'devicetree-for-7.0' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (60 commits)
dt-bindings: interrupt-controller: Add compatiblie string fsl,imx(1|25|27|31|35)-avic
dt-bindings: soc: imx: add fsl,aips and fsl,emi compatible strings
dt-bindings: display: bridge: lt8912b: Drop reset gpio requirement
dt-bindings: firmware: fsl,scu: Mark multi-channel MU layouts as deprecated
cpufreq: s5pv210: Simplify with scoped for each OF child loop
dmaengine: fsl_raid: Simplify with scoped for each OF child loop
clk: imx: imx31: Simplify with scoped for each OF child loop
clk: imx: imx27: Simplify with scoped for each OF child loop
cdx: Use mutex guard to simplify error handling
cdx: Simplify with scoped for each OF child loop
powerpc/wii: Simplify with scoped for each OF child loop
powerpc/fsp2: Simplify with scoped for each OF child loop
ARM: exynos: Simplify with scoped for each OF child loop
ARM: at91: Simplify with scoped for each OF child loop
of: Add for_each_compatible_node_scoped() helper
dt-bindings: Fix emails with spaces or missing brackets
scripts/dtc: Update to upstream version v1.7.2-62-ga26ef6400bd8
dt-bindings: crypto: inside-secure,safexcel: Mandate only ring IRQs
dt-bindings: crypto: inside-secure,safexcel: Add SoC compatibles
of: reserved_mem: Fix placement of __free() annotation
...
This commit is contained in:
commit
098b6e44cb
97 changed files with 1255 additions and 1838 deletions
|
|
@ -259,6 +259,7 @@ ForEachMacros:
|
||||||
- 'for_each_collection'
|
- 'for_each_collection'
|
||||||
- 'for_each_comp_order'
|
- 'for_each_comp_order'
|
||||||
- 'for_each_compatible_node'
|
- 'for_each_compatible_node'
|
||||||
|
- 'for_each_compatible_node_scoped'
|
||||||
- 'for_each_component_dais'
|
- 'for_each_component_dais'
|
||||||
- 'for_each_component_dais_safe'
|
- 'for_each_component_dais_safe'
|
||||||
- 'for_each_conduit'
|
- 'for_each_conduit'
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,6 @@ DT_DOCS = $(patsubst $(srctree)/%,%,$(shell $(find_all_cmd)))
|
||||||
|
|
||||||
override DTC_FLAGS := \
|
override DTC_FLAGS := \
|
||||||
-Wno-avoid_unnecessary_addr_size \
|
-Wno-avoid_unnecessary_addr_size \
|
||||||
-Wno-graph_child_address \
|
|
||||||
-Wno-unique_unit_address \
|
-Wno-unique_unit_address \
|
||||||
-Wunique_unit_address_if_enabled
|
-Wunique_unit_address_if_enabled
|
||||||
|
|
||||||
|
|
@ -82,5 +81,8 @@ clean-files = $(shell find $(obj) \( -name '*.example.dts' -o \
|
||||||
dt_compatible_check: $(obj)/processed-schema.json
|
dt_compatible_check: $(obj)/processed-schema.json
|
||||||
$(Q)$(srctree)/scripts/dtc/dt-extract-compatibles $(srctree) | xargs dt-check-compatible -v -s $<
|
$(Q)$(srctree)/scripts/dtc/dt-extract-compatibles $(srctree) | xargs dt-check-compatible -v -s $<
|
||||||
|
|
||||||
|
PHONY += dt_binding_check_one
|
||||||
|
dt_binding_check_one: $(obj)/.dt-binding.checked $(obj)/.yamllint.checked
|
||||||
|
|
||||||
PHONY += dt_binding_check
|
PHONY += dt_binding_check
|
||||||
dt_binding_check: $(obj)/.dt-binding.checked $(obj)/.yamllint.checked $(CHK_DT_EXAMPLES)
|
dt_binding_check: dt_binding_check_one $(CHK_DT_EXAMPLES)
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,12 @@ patternProperties:
|
||||||
- const: simple-bus
|
- const: simple-bus
|
||||||
- const: simple-bus
|
- const: simple-bus
|
||||||
|
|
||||||
|
"#interrupt-cells":
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
interrupt-map: true
|
||||||
|
interrupt-map-mask: true
|
||||||
|
|
||||||
patternProperties:
|
patternProperties:
|
||||||
'^motherboard-bus@':
|
'^motherboard-bus@':
|
||||||
type: object
|
type: object
|
||||||
|
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
|
||||||
%YAML 1.2
|
|
||||||
---
|
|
||||||
$id: http://devicetree.org/schemas/arm/bcm/brcm,vulcan-soc.yaml#
|
|
||||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
||||||
|
|
||||||
title: Broadcom Vulcan
|
|
||||||
|
|
||||||
maintainers:
|
|
||||||
- Robert Richter <rrichter@marvell.com>
|
|
||||||
|
|
||||||
properties:
|
|
||||||
$nodename:
|
|
||||||
const: '/'
|
|
||||||
compatible:
|
|
||||||
items:
|
|
||||||
- enum:
|
|
||||||
- brcm,vulcan-eval
|
|
||||||
- cavium,thunderx2-cn9900
|
|
||||||
- const: brcm,vulcan-soc
|
|
||||||
|
|
||||||
additionalProperties: true
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
@ -65,6 +65,11 @@ properties:
|
||||||
gpio-line-names:
|
gpio-line-names:
|
||||||
minItems: 8
|
minItems: 8
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
'-hog$':
|
||||||
|
required:
|
||||||
|
- gpio-hog
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
- gpio-controller
|
- gpio-controller
|
||||||
|
|
@ -87,6 +92,9 @@ properties:
|
||||||
- compatible
|
- compatible
|
||||||
- "#reset-cells"
|
- "#reset-cells"
|
||||||
|
|
||||||
|
power:
|
||||||
|
$ref: /schemas/power/raspberrypi,bcm2835-power.yaml#
|
||||||
|
|
||||||
pwm:
|
pwm:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
OMAP PRM instance bindings
|
|
||||||
|
|
||||||
Power and Reset Manager is an IP block on OMAP family of devices which
|
|
||||||
handle the power domains and their current state, and provide reset
|
|
||||||
handling for the domains and/or separate IP blocks under the power domain
|
|
||||||
hierarchy.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: Must contain one of the following:
|
|
||||||
"ti,am3-prm-inst"
|
|
||||||
"ti,am4-prm-inst"
|
|
||||||
"ti,omap4-prm-inst"
|
|
||||||
"ti,omap5-prm-inst"
|
|
||||||
"ti,dra7-prm-inst"
|
|
||||||
and additionally must contain:
|
|
||||||
"ti,omap-prm-inst"
|
|
||||||
- reg: Contains PRM instance register address range
|
|
||||||
(base address and length)
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- #power-domain-cells: Should be 0 if the instance is a power domain provider.
|
|
||||||
- #reset-cells: Should be 1 if the PRM instance in question supports resets.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
prm_dsp2: prm@1b00 {
|
|
||||||
compatible = "ti,dra7-prm-inst", "ti,omap-prm-inst";
|
|
||||||
reg = <0x1b00 0x40>;
|
|
||||||
#power-domain-cells = <0>;
|
|
||||||
#reset-cells = <1>;
|
|
||||||
};
|
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/arm/ti/ti,omap-prm-inst.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: OMAP PRM instances
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Aaro Koskinen <aaro.koskinen@iki.fi>
|
||||||
|
- Andreas Kemnade <andreas@kemnade.info>
|
||||||
|
- Kevin Hilman <khilman@baylibre.com>
|
||||||
|
- Roger Quadros <rogerq@kernel.org>
|
||||||
|
- Tony Lindgren <tony@atomide.com>
|
||||||
|
|
||||||
|
description:
|
||||||
|
Power and Reset Manager is an IP block on OMAP family of devices which
|
||||||
|
handle the power domains and their current state, and provide reset
|
||||||
|
handling for the domains and/or separate IP blocks under the power domain
|
||||||
|
hierarchy.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- ti,am3-prm-inst
|
||||||
|
- ti,am4-prm-inst
|
||||||
|
- ti,omap4-prm-inst
|
||||||
|
- ti,omap5-prm-inst
|
||||||
|
- ti,dra7-prm-inst
|
||||||
|
- const: ti,omap-prm-inst
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
"#power-domain-cells":
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
"#reset-cells":
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
reset-controller@1b00 {
|
||||||
|
compatible = "ti,dra7-prm-inst", "ti,omap-prm-inst";
|
||||||
|
reg = <0x1b00 0x40>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
|
#reset-cells = <1>;
|
||||||
|
};
|
||||||
|
|
@ -103,7 +103,7 @@ required:
|
||||||
- arm,vexpress,config-bridge
|
- arm,vexpress,config-bridge
|
||||||
|
|
||||||
patternProperties:
|
patternProperties:
|
||||||
'clk[0-9]*$':
|
'^clock-controller.*$':
|
||||||
type: object
|
type: object
|
||||||
description:
|
description:
|
||||||
clocks
|
clocks
|
||||||
|
|
@ -137,7 +137,7 @@ patternProperties:
|
||||||
- arm,vexpress-sysreg,func
|
- arm,vexpress-sysreg,func
|
||||||
- "#clock-cells"
|
- "#clock-cells"
|
||||||
|
|
||||||
"^volt-.+$":
|
"^regulator-.+$":
|
||||||
$ref: /schemas/regulator/regulator.yaml#
|
$ref: /schemas/regulator/regulator.yaml#
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
|
@ -272,7 +272,7 @@ examples:
|
||||||
compatible = "arm,vexpress,config-bus";
|
compatible = "arm,vexpress,config-bus";
|
||||||
arm,vexpress,config-bridge = <&v2m_sysreg>;
|
arm,vexpress,config-bridge = <&v2m_sysreg>;
|
||||||
|
|
||||||
clk0 {
|
clock-controller {
|
||||||
compatible = "arm,vexpress-osc";
|
compatible = "arm,vexpress-osc";
|
||||||
arm,vexpress-sysreg,func = <1 0>;
|
arm,vexpress-sysreg,func = <1 0>;
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,10 @@ description: |
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
enum:
|
items:
|
||||||
- aspeed,ast2600-ahbc
|
- enum:
|
||||||
|
- aspeed,ast2600-ahbc
|
||||||
|
- const: syscon
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
@ -32,6 +34,6 @@ additionalProperties: false
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
ahbc@1e600000 {
|
ahbc@1e600000 {
|
||||||
compatible = "aspeed,ast2600-ahbc";
|
compatible = "aspeed,ast2600-ahbc", "syscon";
|
||||||
reg = <0x1e600000 0x100>;
|
reg = <0x1e600000 0x100>;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -19,21 +19,29 @@ description: |
|
||||||
the SDMA can access. There are no special clocks for the bus, because
|
the SDMA can access. There are no special clocks for the bus, because
|
||||||
the SDMA controller itself has its interrupt and clock assignments.
|
the SDMA controller itself has its interrupt and clock assignments.
|
||||||
|
|
||||||
|
EMI (External Memory Interface) for legacy i.MX35.
|
||||||
|
|
||||||
select:
|
select:
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
contains:
|
contains:
|
||||||
const: fsl,spba-bus
|
enum:
|
||||||
|
- fsl,aips
|
||||||
|
- fsl,emi
|
||||||
|
- fsl,spba-bus
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
$nodename:
|
$nodename:
|
||||||
pattern: "^spba-bus(@[0-9a-f]+)?$"
|
pattern: "^((spba|emi)-bus|bus)(@[0-9a-f]+)?$"
|
||||||
|
|
||||||
compatible:
|
compatible:
|
||||||
items:
|
items:
|
||||||
- const: fsl,spba-bus
|
- enum:
|
||||||
|
- fsl,aips
|
||||||
|
- fsl,emi
|
||||||
|
- fsl,spba-bus
|
||||||
- const: simple-bus
|
- const: simple-bus
|
||||||
|
|
||||||
'#address-cells':
|
'#address-cells':
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ properties:
|
||||||
const: 1
|
const: 1
|
||||||
|
|
||||||
"#size-cells":
|
"#size-cells":
|
||||||
const: 1
|
enum: [ 1, 2 ]
|
||||||
|
|
||||||
ranges: true
|
ranges: true
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,11 +30,17 @@ properties:
|
||||||
interrupts:
|
interrupts:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
|
aspeed,ahbc:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/phandle
|
||||||
|
description:
|
||||||
|
A phandle to the AHB controller node, which must be a syscon
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
- reg
|
- reg
|
||||||
- clocks
|
- clocks
|
||||||
- interrupts
|
- interrupts
|
||||||
|
- aspeed,ahbc
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
|
||||||
|
|
@ -46,4 +52,5 @@ examples:
|
||||||
reg = <0x1e6fa000 0x400>, <0x1e710000 0x1800>;
|
reg = <0x1e6fa000 0x400>, <0x1e710000 0x1800>;
|
||||||
interrupts = <160>;
|
interrupts = <160>;
|
||||||
clocks = <&syscon ASPEED_CLK_GATE_RSACLK>;
|
clocks = <&syscon ASPEED_CLK_GATE_RSACLK>;
|
||||||
|
aspeed,ahbc = <&ahbc>;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,14 @@ maintainers:
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
oneOf:
|
oneOf:
|
||||||
|
- items:
|
||||||
|
- const: marvell,armada-cp110-crypto
|
||||||
|
- const: inside-secure,safexcel-eip197b
|
||||||
|
- items:
|
||||||
|
- enum:
|
||||||
|
- marvell,armada-3700-crypto
|
||||||
|
- mediatek,mt7986-crypto
|
||||||
|
- const: inside-secure,safexcel-eip97ies
|
||||||
- const: inside-secure,safexcel-eip197b
|
- const: inside-secure,safexcel-eip197b
|
||||||
- const: inside-secure,safexcel-eip197d
|
- const: inside-secure,safexcel-eip197d
|
||||||
- const: inside-secure,safexcel-eip97ies
|
- const: inside-secure,safexcel-eip97ies
|
||||||
|
|
@ -26,9 +34,11 @@ properties:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
interrupts:
|
interrupts:
|
||||||
|
minItems: 4
|
||||||
maxItems: 6
|
maxItems: 6
|
||||||
|
|
||||||
interrupt-names:
|
interrupt-names:
|
||||||
|
minItems: 4
|
||||||
items:
|
items:
|
||||||
- const: ring0
|
- const: ring0
|
||||||
- const: ring1
|
- const: ring1
|
||||||
|
|
@ -65,6 +75,18 @@ allOf:
|
||||||
minItems: 2
|
minItems: 2
|
||||||
required:
|
required:
|
||||||
- clock-names
|
- clock-names
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
not:
|
||||||
|
contains:
|
||||||
|
const: mediatek,mt7986-crypto
|
||||||
|
then:
|
||||||
|
properties:
|
||||||
|
interrupts:
|
||||||
|
minItems: 6
|
||||||
|
interrupt-names:
|
||||||
|
minItems: 6
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ required:
|
||||||
- compatible
|
- compatible
|
||||||
- clocks
|
- clocks
|
||||||
- ports
|
- ports
|
||||||
|
- reg
|
||||||
|
|
||||||
allOf:
|
allOf:
|
||||||
- if:
|
- if:
|
||||||
|
|
@ -73,6 +74,15 @@ allOf:
|
||||||
ports:
|
ports:
|
||||||
properties:
|
properties:
|
||||||
port@2: false
|
port@2: false
|
||||||
|
- if:
|
||||||
|
not:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
contains:
|
||||||
|
const: fsl,imx6sx-ldb
|
||||||
|
then:
|
||||||
|
required:
|
||||||
|
- reg-names
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,6 @@ properties:
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
- reg
|
- reg
|
||||||
- reset-gpios
|
|
||||||
- ports
|
- ports
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ properties:
|
||||||
oneOf:
|
oneOf:
|
||||||
- items:
|
- items:
|
||||||
- enum:
|
- enum:
|
||||||
|
- onnn,fin3385 # OnSemi FIN3385
|
||||||
- ti,ds90c185 # For the TI DS90C185 FPD-Link Serializer
|
- ti,ds90c185 # For the TI DS90C185 FPD-Link Serializer
|
||||||
- ti,ds90c187 # For the TI DS90C187 FPD-Link Serializer
|
- ti,ds90c187 # For the TI DS90C187 FPD-Link Serializer
|
||||||
- ti,sn75lvds83 # For the TI SN75LVDS83 FlatLink transmitter
|
- ti,sn75lvds83 # For the TI SN75LVDS83 FlatLink transmitter
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,9 @@ properties:
|
||||||
interrupts:
|
interrupts:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
video-ports:
|
video-ports:
|
||||||
$ref: /schemas/types.yaml#/definitions/uint32
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
default: 0x230145
|
default: 0x230145
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ properties:
|
||||||
- 1 # 3.5dB pre-emphasis
|
- 1 # 3.5dB pre-emphasis
|
||||||
- 2 # 6dB pre-emphasis
|
- 2 # 6dB pre-emphasis
|
||||||
|
|
||||||
oneOf:
|
anyOf:
|
||||||
- required:
|
- required:
|
||||||
- port@0
|
- port@0
|
||||||
- required:
|
- required:
|
||||||
|
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
Android Goldfish framebuffer
|
|
||||||
|
|
||||||
Android Goldfish framebuffer device used by Android emulator.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
|
|
||||||
- compatible : should contain "google,goldfish-fb"
|
|
||||||
- reg : <registers mapping>
|
|
||||||
- interrupts : <interrupt mapping>
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
display-controller@1f008000 {
|
|
||||||
compatible = "google,goldfish-fb";
|
|
||||||
interrupts = <0x10>;
|
|
||||||
reg = <0x1f008000 0x100>;
|
|
||||||
};
|
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/display/google,goldfish-fb.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Android Goldfish Framebuffer
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Kuan-Wei Chiu <visitorckw@gmail.com>
|
||||||
|
|
||||||
|
description:
|
||||||
|
Android Goldfish framebuffer device used by Android emulator.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: google,goldfish-fb
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- interrupts
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
display@1f008000 {
|
||||||
|
compatible = "google,goldfish-fb";
|
||||||
|
reg = <0x1f008000 0x100>;
|
||||||
|
interrupts = <16>;
|
||||||
|
};
|
||||||
|
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
title: MediaTek mt8186 DSP core
|
title: MediaTek mt8186 DSP core
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Tinghan Shen <tinghan.shen@mediatek.com>
|
- AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
MediaTek mt8186 SoC contains a DSP core used for
|
MediaTek mt8186 SoC contains a DSP core used for
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ properties:
|
||||||
- fujitsu,mb85rs1mt
|
- fujitsu,mb85rs1mt
|
||||||
- fujitsu,mb85rs256
|
- fujitsu,mb85rs256
|
||||||
- fujitsu,mb85rs64
|
- fujitsu,mb85rs64
|
||||||
|
- microchip,25aa010a
|
||||||
- microchip,at25160bn
|
- microchip,at25160bn
|
||||||
- microchip,25lc040
|
- microchip,25lc040
|
||||||
- st,m95m02
|
- st,m95m02
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ additionalProperties: false
|
||||||
examples:
|
examples:
|
||||||
- |+
|
- |+
|
||||||
#include <dt-bindings/interrupt-controller/irq.h>
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
i2c1 {
|
i2c {
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
Turris Mox rWTM firmware driver
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible : Should be "cznic,turris-mox-rwtm"
|
|
||||||
- mboxes : Must contain a reference to associated mailbox
|
|
||||||
|
|
||||||
This device tree node should be used on Turris Mox, or potentially another A3700
|
|
||||||
compatible device running the Mox's rWTM firmware in the secure processor (for
|
|
||||||
example it is possible to flash this firmware into EspressoBin).
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
firmware {
|
|
||||||
turris-mox-rwtm {
|
|
||||||
compatible = "cznic,turris-mox-rwtm";
|
|
||||||
mboxes = <&rwtm 0>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/firmware/cznic,turris-mox-rwtm.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: CZ.NIC Turris Mox rWTM firmware
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Marek Behún <kabel@kernel.org>
|
||||||
|
|
||||||
|
description:
|
||||||
|
This device tree node should be used on Turris Mox, or potentially another
|
||||||
|
A3700 compatible device running the Mox's rWTM firmware in the secure
|
||||||
|
processor (for example it is possible to flash this firmware into
|
||||||
|
EspressoBin).
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
oneOf:
|
||||||
|
- items:
|
||||||
|
- const: marvell,armada-3700-rwtm-firmware
|
||||||
|
- const: cznic,turris-mox-rwtm
|
||||||
|
- const: marvell,armada-3700-rwtm-firmware
|
||||||
|
|
||||||
|
mboxes:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- mboxes
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
turris-mox-rwtm {
|
||||||
|
compatible = "marvell,armada-3700-rwtm-firmware", "cznic,turris-mox-rwtm";
|
||||||
|
mboxes = <&rwtm 0>;
|
||||||
|
};
|
||||||
|
|
@ -76,7 +76,8 @@ properties:
|
||||||
- description: TX0 MU channel
|
- description: TX0 MU channel
|
||||||
- description: RX0 MU channel
|
- description: RX0 MU channel
|
||||||
- description: optional MU channel for general interrupt
|
- description: optional MU channel for general interrupt
|
||||||
- items:
|
- deprecated: true
|
||||||
|
items:
|
||||||
- description: TX0 MU channel
|
- description: TX0 MU channel
|
||||||
- description: TX1 MU channel
|
- description: TX1 MU channel
|
||||||
- description: TX2 MU channel
|
- description: TX2 MU channel
|
||||||
|
|
@ -85,7 +86,8 @@ properties:
|
||||||
- description: RX1 MU channel
|
- description: RX1 MU channel
|
||||||
- description: RX2 MU channel
|
- description: RX2 MU channel
|
||||||
- description: RX3 MU channel
|
- description: RX3 MU channel
|
||||||
- items:
|
- deprecated: true
|
||||||
|
items:
|
||||||
- description: TX0 MU channel
|
- description: TX0 MU channel
|
||||||
- description: TX1 MU channel
|
- description: TX1 MU channel
|
||||||
- description: TX2 MU channel
|
- description: TX2 MU channel
|
||||||
|
|
@ -105,7 +107,8 @@ properties:
|
||||||
- const: tx0
|
- const: tx0
|
||||||
- const: rx0
|
- const: rx0
|
||||||
- const: gip3
|
- const: gip3
|
||||||
- items:
|
- deprecated: true
|
||||||
|
items:
|
||||||
- const: tx0
|
- const: tx0
|
||||||
- const: tx1
|
- const: tx1
|
||||||
- const: tx2
|
- const: tx2
|
||||||
|
|
@ -114,7 +117,8 @@ properties:
|
||||||
- const: rx1
|
- const: rx1
|
||||||
- const: rx2
|
- const: rx2
|
||||||
- const: rx3
|
- const: rx3
|
||||||
- items:
|
- deprecated: true
|
||||||
|
items:
|
||||||
- const: tx0
|
- const: tx0
|
||||||
- const: tx1
|
- const: tx1
|
||||||
- const: tx2
|
- const: tx2
|
||||||
|
|
@ -167,11 +171,9 @@ examples:
|
||||||
firmware {
|
firmware {
|
||||||
system-controller {
|
system-controller {
|
||||||
compatible = "fsl,imx-scu";
|
compatible = "fsl,imx-scu";
|
||||||
mbox-names = "tx0", "tx1", "tx2", "tx3",
|
mbox-names = "tx0", "rx0", "gip3";
|
||||||
"rx0", "rx1", "rx2", "rx3",
|
mboxes = <&lsio_mu1 0 0
|
||||||
"gip3";
|
&lsio_mu1 1 0
|
||||||
mboxes = <&lsio_mu1 0 0 &lsio_mu1 0 1 &lsio_mu1 0 2 &lsio_mu1 0 3
|
|
||||||
&lsio_mu1 1 0 &lsio_mu1 1 1 &lsio_mu1 1 2 &lsio_mu1 1 3
|
|
||||||
&lsio_mu1 3 3>;
|
&lsio_mu1 3 3>;
|
||||||
|
|
||||||
clock-controller {
|
clock-controller {
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,6 @@ properties:
|
||||||
type: object
|
type: object
|
||||||
|
|
||||||
pinctrl:
|
pinctrl:
|
||||||
$ref: /schemas/pinctrl/xlnx,zynqmp-pinctrl.yaml#
|
|
||||||
description: The pinctrl node provides access to pinconfig and pincontrol
|
description: The pinctrl node provides access to pinconfig and pincontrol
|
||||||
functionality available in firmware.
|
functionality available in firmware.
|
||||||
type: object
|
type: object
|
||||||
|
|
@ -106,6 +105,21 @@ properties:
|
||||||
type: object
|
type: object
|
||||||
deprecated: true
|
deprecated: true
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
contains:
|
||||||
|
const: xlnx,zynqmp-firmware
|
||||||
|
then:
|
||||||
|
properties:
|
||||||
|
pinctrl:
|
||||||
|
$ref: /schemas/pinctrl/xlnx,zynqmp-pinctrl.yaml#
|
||||||
|
else:
|
||||||
|
properties:
|
||||||
|
pinctrl:
|
||||||
|
$ref: /schemas/pinctrl/xlnx,versal-pinctrl.yaml#
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
|
|
||||||
|
|
@ -116,6 +130,7 @@ examples:
|
||||||
#include <dt-bindings/power/xlnx-zynqmp-power.h>
|
#include <dt-bindings/power/xlnx-zynqmp-power.h>
|
||||||
firmware {
|
firmware {
|
||||||
zynqmp_firmware: zynqmp-firmware {
|
zynqmp_firmware: zynqmp-firmware {
|
||||||
|
compatible = "xlnx,zynqmp-firmware";
|
||||||
#power-domain-cells = <1>;
|
#power-domain-cells = <1>;
|
||||||
soc-nvmem {
|
soc-nvmem {
|
||||||
compatible = "xlnx,zynqmp-nvmem-fw";
|
compatible = "xlnx,zynqmp-nvmem-fw";
|
||||||
|
|
@ -163,6 +178,10 @@ examples:
|
||||||
compatible = "xlnx,versal-fpga";
|
compatible = "xlnx,versal-fpga";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pinctrl {
|
||||||
|
compatible = "xlnx,versal-pinctrl";
|
||||||
|
};
|
||||||
|
|
||||||
xlnx_aes: zynqmp-aes {
|
xlnx_aes: zynqmp-aes {
|
||||||
compatible = "xlnx,zynqmp-aes";
|
compatible = "xlnx,zynqmp-aes";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/hwmon/iei,wt61p803-puzzle-hwmon.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: IEI WT61P803 PUZZLE MCU HWMON module from IEI Integration Corp.
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Luka Kovacic <luka.kovacic@sartura.hr>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
This module is a part of the IEI WT61P803 PUZZLE MFD device. For more details
|
||||||
|
see Documentation/devicetree/bindings/mfd/iei,wt61p803-puzzle.yaml.
|
||||||
|
|
||||||
|
The HWMON module is a sub-node of the MCU node in the Device Tree.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: iei,wt61p803-puzzle-hwmon
|
||||||
|
|
||||||
|
'#address-cells':
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
'#size-cells':
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
'^fan-group@[0-1]$':
|
||||||
|
type: object
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
properties:
|
||||||
|
reg:
|
||||||
|
minimum: 0
|
||||||
|
maximum: 1
|
||||||
|
description:
|
||||||
|
Fan group ID
|
||||||
|
|
||||||
|
'#cooling-cells':
|
||||||
|
const: 2
|
||||||
|
|
||||||
|
cooling-levels:
|
||||||
|
minItems: 1
|
||||||
|
maxItems: 255
|
||||||
|
description:
|
||||||
|
Cooling levels for the fans (PWM value mapping)
|
||||||
|
|
||||||
|
required:
|
||||||
|
- reg
|
||||||
|
- '#cooling-cells'
|
||||||
|
- cooling-levels
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- '#address-cells'
|
||||||
|
- '#size-cells'
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
title: Sensirion SHTC1 Humidity and Temperature Sensor IC
|
title: Sensirion SHTC1 Humidity and Temperature Sensor IC
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Christopher Ruehl chris.ruehl@gtsys.com.hk
|
- Christopher Ruehl <chris.ruehl@gtsys.com.hk>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
The SHTC1, SHTW1 and SHTC3 are digital humidity and temperature sensors
|
The SHTC1, SHTW1 and SHTC3 are digital humidity and temperature sensors
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ title: Synaptics RMI4 compliant devices
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Jason A. Donenfeld <Jason@zx2c4.com>
|
- Jason A. Donenfeld <Jason@zx2c4.com>
|
||||||
- Matthias Schiffer <matthias.schiffer@ew.tq-group.com
|
- Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
|
||||||
- Vincent Huang <vincent.huang@tw.synaptics.com>
|
- Vincent Huang <vincent.huang@tw.synaptics.com>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,14 @@ maintainers:
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
oneOf:
|
oneOf:
|
||||||
|
- items:
|
||||||
|
- enum:
|
||||||
|
- fsl,imx1-aitc
|
||||||
|
- fsl,imx25-asic
|
||||||
|
- fsl,imx27-aitc
|
||||||
|
- fsl,imx31-avic
|
||||||
|
- fsl,imx35-avic
|
||||||
|
- const: fsl,avic
|
||||||
- items:
|
- items:
|
||||||
- enum:
|
- enum:
|
||||||
- fsl,imx51-tzic
|
- fsl,imx51-tzic
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,9 @@ properties:
|
||||||
interrupts:
|
interrupts:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
|
'#address-cells':
|
||||||
|
const: 0
|
||||||
|
|
||||||
interrupt-controller: true
|
interrupt-controller: true
|
||||||
|
|
||||||
'#interrupt-cells':
|
'#interrupt-cells':
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,9 @@ properties:
|
||||||
- const: isr1
|
- const: isr1
|
||||||
minItems: 2
|
minItems: 2
|
||||||
|
|
||||||
|
'#address-cells':
|
||||||
|
const: 0
|
||||||
|
|
||||||
interrupt-controller: true
|
interrupt-controller: true
|
||||||
|
|
||||||
interrupts:
|
interrupts:
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,9 @@ properties:
|
||||||
minimum: 0
|
minimum: 0
|
||||||
maximum: 192
|
maximum: 192
|
||||||
|
|
||||||
|
'#address-cells':
|
||||||
|
const: 0
|
||||||
|
|
||||||
interrupt-controller: true
|
interrupt-controller: true
|
||||||
|
|
||||||
'#interrupt-cells':
|
'#interrupt-cells':
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/leds/iei,wt61p803-puzzle-leds.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: IEI WT61P803 PUZZLE MCU LED module from IEI Integration Corp.
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Luka Kovacic <luka.kovacic@sartura.hr>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
This module is a part of the IEI WT61P803 PUZZLE MFD device. For more details
|
||||||
|
see Documentation/devicetree/bindings/mfd/iei,wt61p803-puzzle.yaml.
|
||||||
|
|
||||||
|
The LED module is a sub-node of the MCU node in the Device Tree.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: iei,wt61p803-puzzle-leds
|
||||||
|
|
||||||
|
'#address-cells':
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
'#size-cells':
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
led@0:
|
||||||
|
$ref: common.yaml
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
properties:
|
||||||
|
reg:
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- '#address-cells'
|
||||||
|
- '#size-cells'
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
@ -95,7 +95,7 @@ examples:
|
||||||
#include <dt-bindings/gpio/gpio.h>
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
#include <dt-bindings/media/video-interfaces.h>
|
#include <dt-bindings/media/video-interfaces.h>
|
||||||
|
|
||||||
i2c0 {
|
i2c {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ title: Samsung Exynos SoC G-Scaler
|
||||||
maintainers:
|
maintainers:
|
||||||
- Inki Dae <inki.dae@samsung.com>
|
- Inki Dae <inki.dae@samsung.com>
|
||||||
- Krzysztof Kozlowski <krzk@kernel.org>
|
- Krzysztof Kozlowski <krzk@kernel.org>
|
||||||
- Seung-Woo Kim <sw0312.kim@samsung.com
|
- Seung-Woo Kim <sw0312.kim@samsung.com>
|
||||||
|
|
||||||
description:
|
description:
|
||||||
G-Scaler is used for scaling and color space conversion on Samsung Exynos
|
G-Scaler is used for scaling and color space conversion on Samsung Exynos
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,80 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/mfd/iei,wt61p803-puzzle.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: IEI WT61P803 PUZZLE MCU from IEI Integration Corp.
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Luka Kovacic <luka.kovacic@sartura.hr>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
IEI WT61P803 PUZZLE MCU is embedded in some IEI Puzzle series boards.
|
||||||
|
It's used for controlling system power states, fans, LEDs and temperature
|
||||||
|
sensors.
|
||||||
|
|
||||||
|
For Device Tree bindings of other sub-modules (HWMON, LEDs) refer to the
|
||||||
|
binding documents under the respective subsystem directories.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: iei,wt61p803-puzzle
|
||||||
|
|
||||||
|
current-speed: true
|
||||||
|
|
||||||
|
enable-beep:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
hwmon:
|
||||||
|
$ref: /schemas/hwmon/iei,wt61p803-puzzle-hwmon.yaml
|
||||||
|
|
||||||
|
leds:
|
||||||
|
$ref: /schemas/leds/iei,wt61p803-puzzle-leds.yaml
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- current-speed
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/leds/common.h>
|
||||||
|
serial {
|
||||||
|
mcu {
|
||||||
|
compatible = "iei,wt61p803-puzzle";
|
||||||
|
current-speed = <115200>;
|
||||||
|
enable-beep;
|
||||||
|
|
||||||
|
leds {
|
||||||
|
compatible = "iei,wt61p803-puzzle-leds";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
led@0 {
|
||||||
|
reg = <0>;
|
||||||
|
function = LED_FUNCTION_POWER;
|
||||||
|
color = <LED_COLOR_ID_BLUE>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hwmon {
|
||||||
|
compatible = "iei,wt61p803-puzzle-hwmon";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
fan-group@0 {
|
||||||
|
#cooling-cells = <2>;
|
||||||
|
reg = <0x00>;
|
||||||
|
cooling-levels = <64 102 170 230 250>;
|
||||||
|
};
|
||||||
|
|
||||||
|
fan-group@1 {
|
||||||
|
#cooling-cells = <2>;
|
||||||
|
reg = <0x01>;
|
||||||
|
cooling-levels = <64 102 170 230 250>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
@ -7,7 +7,8 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
title: MediaTek System Control Processor System
|
title: MediaTek System Control Processor System
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- MandyJH Liu <mandyjh.liu@mediatek.com>
|
- AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||||
|
- Matthias Brugger <matthias.bgg@gmail.com>
|
||||||
|
|
||||||
description:
|
description:
|
||||||
MediaTek System Control Processor System (SCPSYS) has several
|
MediaTek System Control Processor System (SCPSYS) has several
|
||||||
|
|
|
||||||
69
Documentation/devicetree/bindings/mfd/realtek,rtd1xxx.yaml
Normal file
69
Documentation/devicetree/bindings/mfd/realtek,rtd1xxx.yaml
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/mfd/realtek,rtd1xxx.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Realtek RTD1xxx system controllers
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Andreas Färber <afaerber@suse.de>
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- realtek,rtd1293-crt
|
||||||
|
- realtek,rtd1293-iso
|
||||||
|
- realtek,rtd1293-misc
|
||||||
|
- realtek,rtd1293-sb2
|
||||||
|
- realtek,rtd1293-scpu-wrapper
|
||||||
|
- realtek,rtd1295-crt
|
||||||
|
- realtek,rtd1295-iso
|
||||||
|
- realtek,rtd1295-misc
|
||||||
|
- realtek,rtd1295-sb2
|
||||||
|
- realtek,rtd1295-scpu-wrapper
|
||||||
|
- realtek,rtd1296-crt
|
||||||
|
- realtek,rtd1296-iso
|
||||||
|
- realtek,rtd1296-misc
|
||||||
|
- realtek,rtd1296-sb2
|
||||||
|
- realtek,rtd1296-scpu-wrapper
|
||||||
|
- realtek,rtd1395-crt
|
||||||
|
- realtek,rtd1395-iso
|
||||||
|
- realtek,rtd1395-misc
|
||||||
|
- realtek,rtd1395-sb2
|
||||||
|
- realtek,rtd1395-scpu-wrapper
|
||||||
|
- realtek,rtd1619-crt
|
||||||
|
- realtek,rtd1619-iso
|
||||||
|
- realtek,rtd1619-misc
|
||||||
|
- realtek,rtd1619-sb2
|
||||||
|
- realtek,rtd1619-scpu-wrapper
|
||||||
|
- const: syscon
|
||||||
|
- const: simple-mfd
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
reg-io-width:
|
||||||
|
const: 4
|
||||||
|
|
||||||
|
ranges: true
|
||||||
|
|
||||||
|
'#address-cells':
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
'#size-cells':
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
'@[0-9a-f]+$':
|
||||||
|
type: object
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
@ -73,6 +73,8 @@ properties:
|
||||||
- const: idm_base
|
- const: idm_base
|
||||||
- const: nicpm_base
|
- const: nicpm_base
|
||||||
|
|
||||||
|
dma-coherent: true
|
||||||
|
|
||||||
unevaluatedProperties: false
|
unevaluatedProperties: false
|
||||||
|
|
||||||
examples:
|
examples:
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
title: Mobiveil AXI PCIe Host Bridge
|
title: Mobiveil AXI PCIe Host Bridge
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Frank Li <Frank Li@nxp.com>
|
- Frank Li <Frank.Li@nxp.com>
|
||||||
|
|
||||||
description:
|
description:
|
||||||
Mobiveil's GPEX 4.0 is a PCIe Gen4 host bridge IP. This configurable IP
|
Mobiveil's GPEX 4.0 is a PCIe Gen4 host bridge IP. This configurable IP
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
title: Mediatek Power Domains Controller
|
title: Mediatek Power Domains Controller
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- MandyJH Liu <mandyjh.liu@mediatek.com>
|
- AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||||
- Matthias Brugger <mbrugger@suse.com>
|
- Matthias Brugger <mbrugger@suse.com>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,9 @@ properties:
|
||||||
compatible:
|
compatible:
|
||||||
const: syscon-poweroff
|
const: syscon-poweroff
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
mask:
|
mask:
|
||||||
$ref: /schemas/types.yaml#/definitions/uint32
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
description: Update only the register bits defined by the mask (32 bit).
|
description: Update only the register bits defined by the mask (32 bit).
|
||||||
|
|
@ -44,7 +47,10 @@ properties:
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
- offset
|
|
||||||
|
anyOf:
|
||||||
|
- required: [offset]
|
||||||
|
- required: [reg]
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ allOf:
|
||||||
required:
|
required:
|
||||||
- value
|
- value
|
||||||
|
|
||||||
oneOf:
|
anyOf:
|
||||||
- required: [offset]
|
- required: [offset]
|
||||||
- required: [reg]
|
- required: [reg]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
title: Mediatek SCP
|
title: Mediatek SCP
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Tinghan Shen <tinghan.shen@mediatek.com>
|
- AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||||
|
|
||||||
description:
|
description:
|
||||||
This binding provides support for ARM Cortex M4 Co-processor found on some
|
This binding provides support for ARM Cortex M4 Co-processor found on some
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@ I. For patch submitters
|
||||||
|
|
||||||
"dt-bindings: <binding dir>: ..."
|
"dt-bindings: <binding dir>: ..."
|
||||||
|
|
||||||
Few subsystems, like ASoC, media, regulators and SPI, expect reverse order
|
Few subsystems, like ASoC, media, regulators, SCSI, SPI and UFS, expect
|
||||||
of the prefixes::
|
reverse order of the prefixes, based on subsystem name::
|
||||||
|
|
||||||
"<binding dir>: dt-bindings: ..."
|
"<binding dir>: dt-bindings: ..."
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,8 @@ properties:
|
||||||
- delta,ahe50dc-fan
|
- delta,ahe50dc-fan
|
||||||
# Delta Electronics DPS-650-AB power supply
|
# Delta Electronics DPS-650-AB power supply
|
||||||
- delta,dps650ab
|
- delta,dps650ab
|
||||||
|
# Delta Electronics DPS-800-AB power supply
|
||||||
|
- delta,dps800
|
||||||
# Delta Electronics DPS920AB 920W 54V Power Supply
|
# Delta Electronics DPS920AB 920W 54V Power Supply
|
||||||
- delta,dps920ab
|
- delta,dps920ab
|
||||||
# 1/4 Brick DC/DC Regulated Power Module
|
# 1/4 Brick DC/DC Regulated Power Module
|
||||||
|
|
@ -135,10 +137,14 @@ properties:
|
||||||
- ibm,cffps2
|
- ibm,cffps2
|
||||||
# IBM On-Chip Controller hwmon device
|
# IBM On-Chip Controller hwmon device
|
||||||
- ibm,p8-occ-hwmon
|
- ibm,p8-occ-hwmon
|
||||||
|
# Infineon Digital Multi-phase Controller
|
||||||
|
- infineon,ir35221
|
||||||
# Infineon IR36021 digital POL buck controller
|
# Infineon IR36021 digital POL buck controller
|
||||||
- infineon,ir36021
|
- infineon,ir36021
|
||||||
# Infineon IRPS5401 Voltage Regulator (PMIC)
|
# Infineon IRPS5401 Voltage Regulator (PMIC)
|
||||||
- infineon,irps5401
|
- infineon,irps5401
|
||||||
|
# Infineon Digital Dual Output 6+1 VR12.5 & VR13 CPU Controller
|
||||||
|
- infineon,pxe1610
|
||||||
# Infineon Hot-swap controller xdp710
|
# Infineon Hot-swap controller xdp710
|
||||||
- infineon,xdp710
|
- infineon,xdp710
|
||||||
# Infineon Multi-phase Digital VR Controller xdpe11280
|
# Infineon Multi-phase Digital VR Controller xdpe11280
|
||||||
|
|
@ -418,6 +424,8 @@ properties:
|
||||||
- smsc,emc6d103
|
- smsc,emc6d103
|
||||||
# Temperature sensor with integrated fan control
|
# Temperature sensor with integrated fan control
|
||||||
- smsc,emc6d103s
|
- smsc,emc6d103s
|
||||||
|
# Socionext Uniphier SMP control registers
|
||||||
|
- socionext,uniphier-smpctrl
|
||||||
# SparkFun Qwiic Joystick (COM-15168) with i2c interface
|
# SparkFun Qwiic Joystick (COM-15168) with i2c interface
|
||||||
- sparkfun,qwiic-joystick
|
- sparkfun,qwiic-joystick
|
||||||
# STMicroelectronics Hot-swap controller stef48h28
|
# STMicroelectronics Hot-swap controller stef48h28
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ additionalProperties: false
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
#include <dt-bindings/interrupt-controller/irq.h>
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
i2c2 {
|
i2c {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -214,6 +214,10 @@ binding schema. All of the DT binding documents can be validated using the
|
||||||
|
|
||||||
make dt_binding_check
|
make dt_binding_check
|
||||||
|
|
||||||
|
Or to validate a single schema and its example::
|
||||||
|
|
||||||
|
make sram/sram.yaml
|
||||||
|
|
||||||
In order to perform validation of DT source files, use the ``dtbs_check`` target::
|
In order to perform validation of DT source files, use the ``dtbs_check`` target::
|
||||||
|
|
||||||
make dtbs_check
|
make dtbs_check
|
||||||
|
|
@ -226,10 +230,10 @@ It is possible to run both in a single command::
|
||||||
|
|
||||||
make dt_binding_check dtbs_check
|
make dt_binding_check dtbs_check
|
||||||
|
|
||||||
It is also possible to run checks with a subset of matching schema files by
|
It is also possible to combine running the above commands with a subset of
|
||||||
setting the ``DT_SCHEMA_FILES`` variable to 1 or more specific schema files or
|
matching schema files by setting the ``DT_SCHEMA_FILES`` variable to 1 or more
|
||||||
patterns (partial match of a fixed string). Each file or pattern should be
|
specific schema files or patterns (partial match of a fixed string). Each file
|
||||||
separated by ':'.
|
or pattern should be separated by ':'.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
|
|
|
||||||
10
MAINTAINERS
10
MAINTAINERS
|
|
@ -2728,7 +2728,7 @@ F: Documentation/ABI/testing/sysfs-bus-i2c-devices-turris-omnia-mcu
|
||||||
F: Documentation/ABI/testing/sysfs-bus-moxtet-devices
|
F: Documentation/ABI/testing/sysfs-bus-moxtet-devices
|
||||||
F: Documentation/ABI/testing/sysfs-firmware-turris-mox-rwtm
|
F: Documentation/ABI/testing/sysfs-firmware-turris-mox-rwtm
|
||||||
F: Documentation/devicetree/bindings/bus/cznic,moxtet.yaml
|
F: Documentation/devicetree/bindings/bus/cznic,moxtet.yaml
|
||||||
F: Documentation/devicetree/bindings/firmware/cznic,turris-mox-rwtm.txt
|
F: Documentation/devicetree/bindings/firmware/cznic,turris-mox-rwtm.yaml
|
||||||
F: Documentation/devicetree/bindings/firmware/cznic,turris-omnia-mcu.yaml
|
F: Documentation/devicetree/bindings/firmware/cznic,turris-omnia-mcu.yaml
|
||||||
F: Documentation/devicetree/bindings/interrupt-controller/marvell,mpic.yaml
|
F: Documentation/devicetree/bindings/interrupt-controller/marvell,mpic.yaml
|
||||||
F: Documentation/devicetree/bindings/leds/cznic,turris-omnia-leds.yaml
|
F: Documentation/devicetree/bindings/leds/cznic,turris-omnia-leds.yaml
|
||||||
|
|
@ -5776,13 +5776,6 @@ S: Supported
|
||||||
W: http://www.marvell.com
|
W: http://www.marvell.com
|
||||||
F: drivers/crypto/cavium/cpt/
|
F: drivers/crypto/cavium/cpt/
|
||||||
|
|
||||||
CAVIUM THUNDERX2 ARM64 SOC
|
|
||||||
M: Robert Richter <rric@kernel.org>
|
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
|
||||||
S: Odd Fixes
|
|
||||||
F: Documentation/devicetree/bindings/arm/bcm/brcm,vulcan-soc.yaml
|
|
||||||
F: arch/arm64/boot/dts/cavium/thunder2-99xx*
|
|
||||||
|
|
||||||
CBS/ETF/TAPRIO QDISCS
|
CBS/ETF/TAPRIO QDISCS
|
||||||
M: Vinicius Costa Gomes <vinicius.gomes@intel.com>
|
M: Vinicius Costa Gomes <vinicius.gomes@intel.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
|
@ -19720,6 +19713,7 @@ F: include/linux/of*.h
|
||||||
F: rust/helpers/of.c
|
F: rust/helpers/of.c
|
||||||
F: rust/kernel/of.rs
|
F: rust/kernel/of.rs
|
||||||
F: scripts/dtc/
|
F: scripts/dtc/
|
||||||
|
F: scripts/Makefile.dtb*
|
||||||
F: tools/testing/selftests/dt/
|
F: tools/testing/selftests/dt/
|
||||||
K: of_overlay_notifier_
|
K: of_overlay_notifier_
|
||||||
K: of_overlay_fdt_apply
|
K: of_overlay_fdt_apply
|
||||||
|
|
|
||||||
14
Makefile
14
Makefile
|
|
@ -1529,6 +1529,12 @@ ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),)
|
||||||
dtstree := arch/$(SRCARCH)/boot/dts
|
dtstree := arch/$(SRCARCH)/boot/dts
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
dtbindingtree := Documentation/devicetree/bindings
|
||||||
|
|
||||||
|
%.yaml: dtbs_prepare
|
||||||
|
$(Q)$(MAKE) $(build)=$(dtbindingtree) \
|
||||||
|
$(dtbindingtree)/$(patsubst %.yaml,%.example.dtb,$@) dt_binding_check_one
|
||||||
|
|
||||||
ifneq ($(dtstree),)
|
ifneq ($(dtstree),)
|
||||||
|
|
||||||
%.dtb: dtbs_prepare
|
%.dtb: dtbs_prepare
|
||||||
|
|
@ -1546,7 +1552,7 @@ dtbs: dtbs_prepare
|
||||||
# dtbs_install depend on it as dtbs_install may run as root.
|
# dtbs_install depend on it as dtbs_install may run as root.
|
||||||
dtbs_prepare: include/config/kernel.release scripts_dtc
|
dtbs_prepare: include/config/kernel.release scripts_dtc
|
||||||
|
|
||||||
ifneq ($(filter dtbs_check, $(MAKECMDGOALS)),)
|
ifneq ($(filter dtbs_check %.yaml, $(MAKECMDGOALS)),)
|
||||||
export CHECK_DTBS=y
|
export CHECK_DTBS=y
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
@ -1579,14 +1585,14 @@ endif
|
||||||
|
|
||||||
PHONY += dt_binding_check dt_binding_schemas
|
PHONY += dt_binding_check dt_binding_schemas
|
||||||
dt_binding_check: dt_binding_schemas scripts_dtc
|
dt_binding_check: dt_binding_schemas scripts_dtc
|
||||||
$(Q)$(MAKE) $(build)=Documentation/devicetree/bindings $@
|
$(Q)$(MAKE) $(build)=$(dtbindingtree) $@
|
||||||
|
|
||||||
dt_binding_schemas:
|
dt_binding_schemas:
|
||||||
$(Q)$(MAKE) $(build)=Documentation/devicetree/bindings
|
$(Q)$(MAKE) $(build)=$(dtbindingtree)
|
||||||
|
|
||||||
PHONY += dt_compatible_check
|
PHONY += dt_compatible_check
|
||||||
dt_compatible_check: dt_binding_schemas
|
dt_compatible_check: dt_binding_schemas
|
||||||
$(Q)$(MAKE) $(build)=Documentation/devicetree/bindings $@
|
$(Q)$(MAKE) $(build)=$(dtbindingtree) $@
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Modules
|
# Modules
|
||||||
|
|
|
||||||
|
|
@ -982,15 +982,12 @@ static void __init at91_pm_sram_init(void)
|
||||||
struct gen_pool *sram_pool;
|
struct gen_pool *sram_pool;
|
||||||
phys_addr_t sram_pbase;
|
phys_addr_t sram_pbase;
|
||||||
unsigned long sram_base;
|
unsigned long sram_base;
|
||||||
struct device_node *node;
|
|
||||||
struct platform_device *pdev = NULL;
|
struct platform_device *pdev = NULL;
|
||||||
|
|
||||||
for_each_compatible_node(node, NULL, "mmio-sram") {
|
for_each_compatible_node_scoped(node, NULL, "mmio-sram") {
|
||||||
pdev = of_find_device_by_node(node);
|
pdev = of_find_device_by_node(node);
|
||||||
if (pdev) {
|
if (pdev)
|
||||||
of_node_put(node);
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pdev) {
|
if (!pdev) {
|
||||||
|
|
|
||||||
|
|
@ -47,9 +47,7 @@ unsigned int exynos_rev(void)
|
||||||
|
|
||||||
void __init exynos_sysram_init(void)
|
void __init exynos_sysram_init(void)
|
||||||
{
|
{
|
||||||
struct device_node *node;
|
for_each_compatible_node_scoped(node, NULL, "samsung,exynos4210-sysram") {
|
||||||
|
|
||||||
for_each_compatible_node(node, NULL, "samsung,exynos4210-sysram") {
|
|
||||||
struct resource res;
|
struct resource res;
|
||||||
if (!of_device_is_available(node))
|
if (!of_device_is_available(node))
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -57,15 +55,13 @@ void __init exynos_sysram_init(void)
|
||||||
of_address_to_resource(node, 0, &res);
|
of_address_to_resource(node, 0, &res);
|
||||||
sysram_base_addr = ioremap(res.start, resource_size(&res));
|
sysram_base_addr = ioremap(res.start, resource_size(&res));
|
||||||
sysram_base_phys = res.start;
|
sysram_base_phys = res.start;
|
||||||
of_node_put(node);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for_each_compatible_node(node, NULL, "samsung,exynos4210-sysram-ns") {
|
for_each_compatible_node_scoped(node, NULL, "samsung,exynos4210-sysram-ns") {
|
||||||
if (!of_device_is_available(node))
|
if (!of_device_is_available(node))
|
||||||
continue;
|
continue;
|
||||||
sysram_ns_base_addr = of_iomap(node, 0);
|
sysram_ns_base_addr = of_iomap(node, 0);
|
||||||
of_node_put(node);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -199,16 +199,14 @@ static irqreturn_t rst_wrn_handler(int irq, void *data) {
|
||||||
|
|
||||||
static void __init node_irq_request(const char *compat, irq_handler_t errirq_handler)
|
static void __init node_irq_request(const char *compat, irq_handler_t errirq_handler)
|
||||||
{
|
{
|
||||||
struct device_node *np;
|
|
||||||
unsigned int irq;
|
unsigned int irq;
|
||||||
int32_t rc;
|
int32_t rc;
|
||||||
|
|
||||||
for_each_compatible_node(np, NULL, compat) {
|
for_each_compatible_node_scoped(np, NULL, compat) {
|
||||||
irq = irq_of_parse_and_map(np, 0);
|
irq = irq_of_parse_and_map(np, 0);
|
||||||
if (!irq) {
|
if (!irq) {
|
||||||
pr_err("device tree node %pOFn is missing a interrupt",
|
pr_err("device tree node %pOFn is missing a interrupt",
|
||||||
np);
|
np);
|
||||||
of_node_put(np);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -216,7 +214,6 @@ static void __init node_irq_request(const char *compat, irq_handler_t errirq_han
|
||||||
if (rc) {
|
if (rc) {
|
||||||
pr_err("fsp_of_probe: request_irq failed: np=%pOF rc=%d",
|
pr_err("fsp_of_probe: request_irq failed: np=%pOF rc=%d",
|
||||||
np, rc);
|
np, rc);
|
||||||
of_node_put(np);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -201,11 +201,10 @@ unsigned int hlwd_pic_get_irq(void)
|
||||||
void __init hlwd_pic_probe(void)
|
void __init hlwd_pic_probe(void)
|
||||||
{
|
{
|
||||||
struct irq_domain *host;
|
struct irq_domain *host;
|
||||||
struct device_node *np;
|
|
||||||
const u32 *interrupts;
|
const u32 *interrupts;
|
||||||
int cascade_virq;
|
int cascade_virq;
|
||||||
|
|
||||||
for_each_compatible_node(np, NULL, "nintendo,hollywood-pic") {
|
for_each_compatible_node_scoped(np, NULL, "nintendo,hollywood-pic") {
|
||||||
interrupts = of_get_property(np, "interrupts", NULL);
|
interrupts = of_get_property(np, "interrupts", NULL);
|
||||||
if (interrupts) {
|
if (interrupts) {
|
||||||
host = hlwd_pic_init(np);
|
host = hlwd_pic_init(np);
|
||||||
|
|
@ -215,7 +214,6 @@ void __init hlwd_pic_probe(void)
|
||||||
irq_set_chained_handler(cascade_virq,
|
irq_set_chained_handler(cascade_virq,
|
||||||
hlwd_pic_irq_cascade);
|
hlwd_pic_irq_cascade);
|
||||||
hlwd_irq_host = host;
|
hlwd_irq_host = host;
|
||||||
of_node_put(np);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -608,7 +608,6 @@ static ssize_t rescan_store(const struct bus_type *bus,
|
||||||
{
|
{
|
||||||
struct cdx_controller *cdx;
|
struct cdx_controller *cdx;
|
||||||
struct platform_device *pd;
|
struct platform_device *pd;
|
||||||
struct device_node *np;
|
|
||||||
bool val;
|
bool val;
|
||||||
|
|
||||||
if (kstrtobool(buf, &val) < 0)
|
if (kstrtobool(buf, &val) < 0)
|
||||||
|
|
@ -617,19 +616,16 @@ static ssize_t rescan_store(const struct bus_type *bus,
|
||||||
if (!val)
|
if (!val)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
mutex_lock(&cdx_controller_lock);
|
guard(mutex)(&cdx_controller_lock);
|
||||||
|
|
||||||
/* Unregister all the devices on the bus */
|
/* Unregister all the devices on the bus */
|
||||||
cdx_unregister_devices(&cdx_bus_type);
|
cdx_unregister_devices(&cdx_bus_type);
|
||||||
|
|
||||||
/* Rescan all the devices */
|
/* Rescan all the devices */
|
||||||
for_each_compatible_node(np, NULL, compat_node_name) {
|
for_each_compatible_node_scoped(np, NULL, compat_node_name) {
|
||||||
pd = of_find_device_by_node(np);
|
pd = of_find_device_by_node(np);
|
||||||
if (!pd) {
|
if (!pd)
|
||||||
of_node_put(np);
|
return -EINVAL;
|
||||||
count = -EINVAL;
|
|
||||||
goto unlock;
|
|
||||||
}
|
|
||||||
|
|
||||||
cdx = platform_get_drvdata(pd);
|
cdx = platform_get_drvdata(pd);
|
||||||
if (cdx && cdx->controller_registered && cdx->ops->scan)
|
if (cdx && cdx->controller_registered && cdx->ops->scan)
|
||||||
|
|
@ -638,9 +634,6 @@ static ssize_t rescan_store(const struct bus_type *bus,
|
||||||
put_device(&pd->dev);
|
put_device(&pd->dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
unlock:
|
|
||||||
mutex_unlock(&cdx_controller_lock);
|
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
static BUS_ATTR_WO(rescan);
|
static BUS_ATTR_WO(rescan);
|
||||||
|
|
|
||||||
|
|
@ -171,17 +171,14 @@ static void __init _mx27_clocks_init(unsigned long fref)
|
||||||
|
|
||||||
static void __init mx27_clocks_init_dt(struct device_node *np)
|
static void __init mx27_clocks_init_dt(struct device_node *np)
|
||||||
{
|
{
|
||||||
struct device_node *refnp;
|
|
||||||
u32 fref = 26000000; /* default */
|
u32 fref = 26000000; /* default */
|
||||||
|
|
||||||
for_each_compatible_node(refnp, NULL, "fixed-clock") {
|
for_each_compatible_node_scoped(refnp, NULL, "fixed-clock") {
|
||||||
if (!of_device_is_compatible(refnp, "fsl,imx-osc26m"))
|
if (!of_device_is_compatible(refnp, "fsl,imx-osc26m"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!of_property_read_u32(refnp, "clock-frequency", &fref)) {
|
if (!of_property_read_u32(refnp, "clock-frequency", &fref))
|
||||||
of_node_put(refnp);
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ccm = of_iomap(np, 0);
|
ccm = of_iomap(np, 0);
|
||||||
|
|
|
||||||
|
|
@ -123,18 +123,15 @@ static void __init _mx31_clocks_init(void __iomem *base, unsigned long fref)
|
||||||
|
|
||||||
static void __init mx31_clocks_init_dt(struct device_node *np)
|
static void __init mx31_clocks_init_dt(struct device_node *np)
|
||||||
{
|
{
|
||||||
struct device_node *osc_np;
|
|
||||||
u32 fref = 26000000; /* default */
|
u32 fref = 26000000; /* default */
|
||||||
void __iomem *ccm;
|
void __iomem *ccm;
|
||||||
|
|
||||||
for_each_compatible_node(osc_np, NULL, "fixed-clock") {
|
for_each_compatible_node_scoped(osc_np, NULL, "fixed-clock") {
|
||||||
if (!of_device_is_compatible(osc_np, "fsl,imx-osc26m"))
|
if (!of_device_is_compatible(osc_np, "fsl,imx-osc26m"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!of_property_read_u32(osc_np, "clock-frequency", &fref)) {
|
if (!of_property_read_u32(osc_np, "clock-frequency", &fref))
|
||||||
of_node_put(osc_np);
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ccm = of_iomap(np, 0);
|
ccm = of_iomap(np, 0);
|
||||||
|
|
|
||||||
|
|
@ -629,19 +629,17 @@ static int s5pv210_cpufreq_probe(struct platform_device *pdev)
|
||||||
goto err_clock;
|
goto err_clock;
|
||||||
}
|
}
|
||||||
|
|
||||||
for_each_compatible_node(np, NULL, "samsung,s5pv210-dmc") {
|
for_each_compatible_node_scoped(dmc, NULL, "samsung,s5pv210-dmc") {
|
||||||
id = of_alias_get_id(np, "dmc");
|
id = of_alias_get_id(dmc, "dmc");
|
||||||
if (id < 0 || id >= ARRAY_SIZE(dmc_base)) {
|
if (id < 0 || id >= ARRAY_SIZE(dmc_base)) {
|
||||||
dev_err(dev, "failed to get alias of dmc node '%pOFn'\n", np);
|
dev_err(dev, "failed to get alias of dmc node '%pOFn'\n", dmc);
|
||||||
of_node_put(np);
|
|
||||||
result = id;
|
result = id;
|
||||||
goto err_clk_base;
|
goto err_clk_base;
|
||||||
}
|
}
|
||||||
|
|
||||||
dmc_base[id] = of_iomap(np, 0);
|
dmc_base[id] = of_iomap(dmc, 0);
|
||||||
if (!dmc_base[id]) {
|
if (!dmc_base[id]) {
|
||||||
dev_err(dev, "failed to map dmc%d registers\n", id);
|
dev_err(dev, "failed to map dmc%d registers\n", id);
|
||||||
of_node_put(np);
|
|
||||||
result = -EFAULT;
|
result = -EFAULT;
|
||||||
goto err_dmc;
|
goto err_dmc;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -746,7 +746,6 @@ err_free:
|
||||||
static int fsl_re_probe(struct platform_device *ofdev)
|
static int fsl_re_probe(struct platform_device *ofdev)
|
||||||
{
|
{
|
||||||
struct fsl_re_drv_private *re_priv;
|
struct fsl_re_drv_private *re_priv;
|
||||||
struct device_node *np;
|
|
||||||
struct device_node *child;
|
struct device_node *child;
|
||||||
u32 off;
|
u32 off;
|
||||||
u8 ridx = 0;
|
u8 ridx = 0;
|
||||||
|
|
@ -823,11 +822,10 @@ static int fsl_re_probe(struct platform_device *ofdev)
|
||||||
dev_set_drvdata(dev, re_priv);
|
dev_set_drvdata(dev, re_priv);
|
||||||
|
|
||||||
/* Parse Device tree to find out the total number of JQs present */
|
/* Parse Device tree to find out the total number of JQs present */
|
||||||
for_each_compatible_node(np, NULL, "fsl,raideng-v1.0-job-queue") {
|
for_each_compatible_node_scoped(np, NULL, "fsl,raideng-v1.0-job-queue") {
|
||||||
rc = of_property_read_u32(np, "reg", &off);
|
rc = of_property_read_u32(np, "reg", &off);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
dev_err(dev, "Reg property not found in JQ node\n");
|
dev_err(dev, "Reg property not found in JQ node\n");
|
||||||
of_node_put(np);
|
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
/* Find out the Job Rings present under each JQ */
|
/* Find out the Job Rings present under each JQ */
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,6 @@ static void __init fdt_reserved_mem_save_node(unsigned long node, const char *un
|
||||||
fdt_init_reserved_mem_node(rmem);
|
fdt_init_reserved_mem_node(rmem);
|
||||||
|
|
||||||
reserved_mem_count++;
|
reserved_mem_count++;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init early_init_dt_reserve_memory(phys_addr_t base,
|
static int __init early_init_dt_reserve_memory(phys_addr_t base,
|
||||||
|
|
@ -762,7 +761,7 @@ int of_reserved_mem_region_to_resource(const struct device_node *np,
|
||||||
if (!np)
|
if (!np)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
struct device_node __free(device_node) *target = of_parse_phandle(np, "memory-region", idx);
|
struct device_node *target __free(device_node) = of_parse_phandle(np, "memory-region", idx);
|
||||||
if (!target || !of_device_is_available(target))
|
if (!target || !of_device_is_available(target))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -394,7 +394,6 @@ int of_platform_bus_probe(struct device_node *root,
|
||||||
const struct of_device_id *matches,
|
const struct of_device_id *matches,
|
||||||
struct device *parent)
|
struct device *parent)
|
||||||
{
|
{
|
||||||
struct device_node *child;
|
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
root = root ? of_node_get(root) : of_find_node_by_path("/");
|
root = root ? of_node_get(root) : of_find_node_by_path("/");
|
||||||
|
|
@ -407,13 +406,13 @@ int of_platform_bus_probe(struct device_node *root,
|
||||||
/* Do a self check of bus type, if there's a match, create children */
|
/* Do a self check of bus type, if there's a match, create children */
|
||||||
if (of_match_node(matches, root)) {
|
if (of_match_node(matches, root)) {
|
||||||
rc = of_platform_bus_create(root, matches, NULL, parent, false);
|
rc = of_platform_bus_create(root, matches, NULL, parent, false);
|
||||||
} else for_each_child_of_node(root, child) {
|
} else {
|
||||||
if (!of_match_node(matches, child))
|
for_each_child_of_node_scoped(root, child) {
|
||||||
continue;
|
if (!of_match_node(matches, child))
|
||||||
rc = of_platform_bus_create(child, matches, NULL, parent, false);
|
continue;
|
||||||
if (rc) {
|
rc = of_platform_bus_create(child, matches, NULL, parent, false);
|
||||||
of_node_put(child);
|
if (rc)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@
|
||||||
|
|
||||||
#define pr_fmt(fmt) "OF: " fmt
|
#define pr_fmt(fmt) "OF: " fmt
|
||||||
|
|
||||||
|
#include <linux/ctype.h>
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <linux/of_address.h>
|
#include <linux/of_address.h>
|
||||||
#include <linux/of_device.h>
|
#include <linux/of_device.h>
|
||||||
|
|
@ -1294,17 +1295,6 @@ static struct device_node *parse_##fname(struct device_node *np, \
|
||||||
return parse_prop_cells(np, prop_name, index, name, cells); \
|
return parse_prop_cells(np, prop_name, index, name, cells); \
|
||||||
}
|
}
|
||||||
|
|
||||||
static int strcmp_suffix(const char *str, const char *suffix)
|
|
||||||
{
|
|
||||||
unsigned int len, suffix_len;
|
|
||||||
|
|
||||||
len = strlen(str);
|
|
||||||
suffix_len = strlen(suffix);
|
|
||||||
if (len <= suffix_len)
|
|
||||||
return -1;
|
|
||||||
return strcmp(str + len - suffix_len, suffix);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* parse_suffix_prop_cells - Suffix property parsing function for suppliers
|
* parse_suffix_prop_cells - Suffix property parsing function for suppliers
|
||||||
*
|
*
|
||||||
|
|
@ -1331,7 +1321,7 @@ static struct device_node *parse_suffix_prop_cells(struct device_node *np,
|
||||||
{
|
{
|
||||||
struct of_phandle_args sup_args;
|
struct of_phandle_args sup_args;
|
||||||
|
|
||||||
if (strcmp_suffix(prop_name, suffix))
|
if (!strends(prop_name, suffix))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (of_parse_phandle_with_args(np, prop_name, cells_name, index,
|
if (of_parse_phandle_with_args(np, prop_name, cells_name, index,
|
||||||
|
|
@ -1391,15 +1381,6 @@ DEFINE_SIMPLE_PROP(extcon, "extcon", NULL)
|
||||||
DEFINE_SIMPLE_PROP(nvmem_cells, "nvmem-cells", "#nvmem-cell-cells")
|
DEFINE_SIMPLE_PROP(nvmem_cells, "nvmem-cells", "#nvmem-cell-cells")
|
||||||
DEFINE_SIMPLE_PROP(phys, "phys", "#phy-cells")
|
DEFINE_SIMPLE_PROP(phys, "phys", "#phy-cells")
|
||||||
DEFINE_SIMPLE_PROP(wakeup_parent, "wakeup-parent", NULL)
|
DEFINE_SIMPLE_PROP(wakeup_parent, "wakeup-parent", NULL)
|
||||||
DEFINE_SIMPLE_PROP(pinctrl0, "pinctrl-0", NULL)
|
|
||||||
DEFINE_SIMPLE_PROP(pinctrl1, "pinctrl-1", NULL)
|
|
||||||
DEFINE_SIMPLE_PROP(pinctrl2, "pinctrl-2", NULL)
|
|
||||||
DEFINE_SIMPLE_PROP(pinctrl3, "pinctrl-3", NULL)
|
|
||||||
DEFINE_SIMPLE_PROP(pinctrl4, "pinctrl-4", NULL)
|
|
||||||
DEFINE_SIMPLE_PROP(pinctrl5, "pinctrl-5", NULL)
|
|
||||||
DEFINE_SIMPLE_PROP(pinctrl6, "pinctrl-6", NULL)
|
|
||||||
DEFINE_SIMPLE_PROP(pinctrl7, "pinctrl-7", NULL)
|
|
||||||
DEFINE_SIMPLE_PROP(pinctrl8, "pinctrl-8", NULL)
|
|
||||||
DEFINE_SIMPLE_PROP(pwms, "pwms", "#pwm-cells")
|
DEFINE_SIMPLE_PROP(pwms, "pwms", "#pwm-cells")
|
||||||
DEFINE_SIMPLE_PROP(resets, "resets", "#reset-cells")
|
DEFINE_SIMPLE_PROP(resets, "resets", "#reset-cells")
|
||||||
DEFINE_SIMPLE_PROP(leds, "leds", NULL)
|
DEFINE_SIMPLE_PROP(leds, "leds", NULL)
|
||||||
|
|
@ -1410,13 +1391,26 @@ DEFINE_SIMPLE_PROP(post_init_providers, "post-init-providers", NULL)
|
||||||
DEFINE_SIMPLE_PROP(access_controllers, "access-controllers", "#access-controller-cells")
|
DEFINE_SIMPLE_PROP(access_controllers, "access-controllers", "#access-controller-cells")
|
||||||
DEFINE_SIMPLE_PROP(pses, "pses", "#pse-cells")
|
DEFINE_SIMPLE_PROP(pses, "pses", "#pse-cells")
|
||||||
DEFINE_SIMPLE_PROP(power_supplies, "power-supplies", NULL)
|
DEFINE_SIMPLE_PROP(power_supplies, "power-supplies", NULL)
|
||||||
|
DEFINE_SIMPLE_PROP(mmc_pwrseq, "mmc-pwrseq", NULL)
|
||||||
DEFINE_SUFFIX_PROP(regulators, "-supply", NULL)
|
DEFINE_SUFFIX_PROP(regulators, "-supply", NULL)
|
||||||
DEFINE_SUFFIX_PROP(gpio, "-gpio", "#gpio-cells")
|
DEFINE_SUFFIX_PROP(gpio, "-gpio", "#gpio-cells")
|
||||||
|
|
||||||
|
static struct device_node *parse_pinctrl_n(struct device_node *np,
|
||||||
|
const char *prop_name, int index)
|
||||||
|
{
|
||||||
|
if (!strstarts(prop_name, "pinctrl-"))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (!isdigit(prop_name[strlen("pinctrl-")]))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return of_parse_phandle(np, prop_name, index);
|
||||||
|
}
|
||||||
|
|
||||||
static struct device_node *parse_gpios(struct device_node *np,
|
static struct device_node *parse_gpios(struct device_node *np,
|
||||||
const char *prop_name, int index)
|
const char *prop_name, int index)
|
||||||
{
|
{
|
||||||
if (!strcmp_suffix(prop_name, ",nr-gpios"))
|
if (strends(prop_name, ",nr-gpios"))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return parse_suffix_prop_cells(np, prop_name, index, "-gpios",
|
return parse_suffix_prop_cells(np, prop_name, index, "-gpios",
|
||||||
|
|
@ -1536,15 +1530,7 @@ static const struct supplier_bindings of_supplier_bindings[] = {
|
||||||
{ .parse_prop = parse_nvmem_cells, },
|
{ .parse_prop = parse_nvmem_cells, },
|
||||||
{ .parse_prop = parse_phys, },
|
{ .parse_prop = parse_phys, },
|
||||||
{ .parse_prop = parse_wakeup_parent, },
|
{ .parse_prop = parse_wakeup_parent, },
|
||||||
{ .parse_prop = parse_pinctrl0, },
|
{ .parse_prop = parse_pinctrl_n, },
|
||||||
{ .parse_prop = parse_pinctrl1, },
|
|
||||||
{ .parse_prop = parse_pinctrl2, },
|
|
||||||
{ .parse_prop = parse_pinctrl3, },
|
|
||||||
{ .parse_prop = parse_pinctrl4, },
|
|
||||||
{ .parse_prop = parse_pinctrl5, },
|
|
||||||
{ .parse_prop = parse_pinctrl6, },
|
|
||||||
{ .parse_prop = parse_pinctrl7, },
|
|
||||||
{ .parse_prop = parse_pinctrl8, },
|
|
||||||
{
|
{
|
||||||
.parse_prop = parse_remote_endpoint,
|
.parse_prop = parse_remote_endpoint,
|
||||||
.get_con_dev = of_graph_get_port_parent,
|
.get_con_dev = of_graph_get_port_parent,
|
||||||
|
|
@ -1557,6 +1543,7 @@ static const struct supplier_bindings of_supplier_bindings[] = {
|
||||||
{ .parse_prop = parse_msi_parent, },
|
{ .parse_prop = parse_msi_parent, },
|
||||||
{ .parse_prop = parse_pses, },
|
{ .parse_prop = parse_pses, },
|
||||||
{ .parse_prop = parse_power_supplies, },
|
{ .parse_prop = parse_power_supplies, },
|
||||||
|
{ .parse_prop = parse_mmc_pwrseq, },
|
||||||
{ .parse_prop = parse_gpio_compat, },
|
{ .parse_prop = parse_gpio_compat, },
|
||||||
{ .parse_prop = parse_interrupts, },
|
{ .parse_prop = parse_interrupts, },
|
||||||
{ .parse_prop = parse_interrupt_map, },
|
{ .parse_prop = parse_interrupt_map, },
|
||||||
|
|
|
||||||
|
|
@ -804,11 +804,13 @@ static void __init of_unittest_property_copy(void)
|
||||||
|
|
||||||
new = __of_prop_dup(&p1, GFP_KERNEL);
|
new = __of_prop_dup(&p1, GFP_KERNEL);
|
||||||
unittest(new && propcmp(&p1, new), "empty property didn't copy correctly\n");
|
unittest(new && propcmp(&p1, new), "empty property didn't copy correctly\n");
|
||||||
__of_prop_free(new);
|
if (new)
|
||||||
|
__of_prop_free(new);
|
||||||
|
|
||||||
new = __of_prop_dup(&p2, GFP_KERNEL);
|
new = __of_prop_dup(&p2, GFP_KERNEL);
|
||||||
unittest(new && propcmp(&p2, new), "non-empty property didn't copy correctly\n");
|
unittest(new && propcmp(&p2, new), "non-empty property didn't copy correctly\n");
|
||||||
__of_prop_free(new);
|
if (new)
|
||||||
|
__of_prop_free(new);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef DT_CLOCK_OXSEMI_OX810SE_H
|
|
||||||
#define DT_CLOCK_OXSEMI_OX810SE_H
|
|
||||||
|
|
||||||
#define CLK_810_LEON 0
|
|
||||||
#define CLK_810_DMA_SGDMA 1
|
|
||||||
#define CLK_810_CIPHER 2
|
|
||||||
#define CLK_810_SATA 3
|
|
||||||
#define CLK_810_AUDIO 4
|
|
||||||
#define CLK_810_USBMPH 5
|
|
||||||
#define CLK_810_ETHA 6
|
|
||||||
#define CLK_810_PCIEA 7
|
|
||||||
#define CLK_810_NAND 8
|
|
||||||
|
|
||||||
#endif /* DT_CLOCK_OXSEMI_OX810SE_H */
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef DT_CLOCK_OXSEMI_OX820_H
|
|
||||||
#define DT_CLOCK_OXSEMI_OX820_H
|
|
||||||
|
|
||||||
/* PLLs */
|
|
||||||
#define CLK_820_PLLA 0
|
|
||||||
#define CLK_820_PLLB 1
|
|
||||||
|
|
||||||
/* Gate Clocks */
|
|
||||||
#define CLK_820_LEON 2
|
|
||||||
#define CLK_820_DMA_SGDMA 3
|
|
||||||
#define CLK_820_CIPHER 4
|
|
||||||
#define CLK_820_SD 5
|
|
||||||
#define CLK_820_SATA 6
|
|
||||||
#define CLK_820_AUDIO 7
|
|
||||||
#define CLK_820_USBMPH 8
|
|
||||||
#define CLK_820_ETHA 9
|
|
||||||
#define CLK_820_PCIEA 10
|
|
||||||
#define CLK_820_NAND 11
|
|
||||||
#define CLK_820_PCIEB 12
|
|
||||||
#define CLK_820_ETHB 13
|
|
||||||
#define CLK_820_REF600 14
|
|
||||||
#define CLK_820_USBDEV 15
|
|
||||||
|
|
||||||
#endif /* DT_CLOCK_OXSEMI_OX820_H */
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _DT_BINDINGS_CLK_QCOM_MSS_SC7180_H
|
|
||||||
#define _DT_BINDINGS_CLK_QCOM_MSS_SC7180_H
|
|
||||||
|
|
||||||
#define MSS_AXI_CRYPTO_CLK 0
|
|
||||||
#define MSS_AXI_NAV_CLK 1
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,123 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2019 Xilinx Inc.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _DT_BINDINGS_CLK_VERSAL_H
|
|
||||||
#define _DT_BINDINGS_CLK_VERSAL_H
|
|
||||||
|
|
||||||
#define PMC_PLL 1
|
|
||||||
#define APU_PLL 2
|
|
||||||
#define RPU_PLL 3
|
|
||||||
#define CPM_PLL 4
|
|
||||||
#define NOC_PLL 5
|
|
||||||
#define PLL_MAX 6
|
|
||||||
#define PMC_PRESRC 7
|
|
||||||
#define PMC_POSTCLK 8
|
|
||||||
#define PMC_PLL_OUT 9
|
|
||||||
#define PPLL 10
|
|
||||||
#define NOC_PRESRC 11
|
|
||||||
#define NOC_POSTCLK 12
|
|
||||||
#define NOC_PLL_OUT 13
|
|
||||||
#define NPLL 14
|
|
||||||
#define APU_PRESRC 15
|
|
||||||
#define APU_POSTCLK 16
|
|
||||||
#define APU_PLL_OUT 17
|
|
||||||
#define APLL 18
|
|
||||||
#define RPU_PRESRC 19
|
|
||||||
#define RPU_POSTCLK 20
|
|
||||||
#define RPU_PLL_OUT 21
|
|
||||||
#define RPLL 22
|
|
||||||
#define CPM_PRESRC 23
|
|
||||||
#define CPM_POSTCLK 24
|
|
||||||
#define CPM_PLL_OUT 25
|
|
||||||
#define CPLL 26
|
|
||||||
#define PPLL_TO_XPD 27
|
|
||||||
#define NPLL_TO_XPD 28
|
|
||||||
#define APLL_TO_XPD 29
|
|
||||||
#define RPLL_TO_XPD 30
|
|
||||||
#define EFUSE_REF 31
|
|
||||||
#define SYSMON_REF 32
|
|
||||||
#define IRO_SUSPEND_REF 33
|
|
||||||
#define USB_SUSPEND 34
|
|
||||||
#define SWITCH_TIMEOUT 35
|
|
||||||
#define RCLK_PMC 36
|
|
||||||
#define RCLK_LPD 37
|
|
||||||
#define WDT 38
|
|
||||||
#define TTC0 39
|
|
||||||
#define TTC1 40
|
|
||||||
#define TTC2 41
|
|
||||||
#define TTC3 42
|
|
||||||
#define GEM_TSU 43
|
|
||||||
#define GEM_TSU_LB 44
|
|
||||||
#define MUXED_IRO_DIV2 45
|
|
||||||
#define MUXED_IRO_DIV4 46
|
|
||||||
#define PSM_REF 47
|
|
||||||
#define GEM0_RX 48
|
|
||||||
#define GEM0_TX 49
|
|
||||||
#define GEM1_RX 50
|
|
||||||
#define GEM1_TX 51
|
|
||||||
#define CPM_CORE_REF 52
|
|
||||||
#define CPM_LSBUS_REF 53
|
|
||||||
#define CPM_DBG_REF 54
|
|
||||||
#define CPM_AUX0_REF 55
|
|
||||||
#define CPM_AUX1_REF 56
|
|
||||||
#define QSPI_REF 57
|
|
||||||
#define OSPI_REF 58
|
|
||||||
#define SDIO0_REF 59
|
|
||||||
#define SDIO1_REF 60
|
|
||||||
#define PMC_LSBUS_REF 61
|
|
||||||
#define I2C_REF 62
|
|
||||||
#define TEST_PATTERN_REF 63
|
|
||||||
#define DFT_OSC_REF 64
|
|
||||||
#define PMC_PL0_REF 65
|
|
||||||
#define PMC_PL1_REF 66
|
|
||||||
#define PMC_PL2_REF 67
|
|
||||||
#define PMC_PL3_REF 68
|
|
||||||
#define CFU_REF 69
|
|
||||||
#define SPARE_REF 70
|
|
||||||
#define NPI_REF 71
|
|
||||||
#define HSM0_REF 72
|
|
||||||
#define HSM1_REF 73
|
|
||||||
#define SD_DLL_REF 74
|
|
||||||
#define FPD_TOP_SWITCH 75
|
|
||||||
#define FPD_LSBUS 76
|
|
||||||
#define ACPU 77
|
|
||||||
#define DBG_TRACE 78
|
|
||||||
#define DBG_FPD 79
|
|
||||||
#define LPD_TOP_SWITCH 80
|
|
||||||
#define ADMA 81
|
|
||||||
#define LPD_LSBUS 82
|
|
||||||
#define CPU_R5 83
|
|
||||||
#define CPU_R5_CORE 84
|
|
||||||
#define CPU_R5_OCM 85
|
|
||||||
#define CPU_R5_OCM2 86
|
|
||||||
#define IOU_SWITCH 87
|
|
||||||
#define GEM0_REF 88
|
|
||||||
#define GEM1_REF 89
|
|
||||||
#define GEM_TSU_REF 90
|
|
||||||
#define USB0_BUS_REF 91
|
|
||||||
#define UART0_REF 92
|
|
||||||
#define UART1_REF 93
|
|
||||||
#define SPI0_REF 94
|
|
||||||
#define SPI1_REF 95
|
|
||||||
#define CAN0_REF 96
|
|
||||||
#define CAN1_REF 97
|
|
||||||
#define I2C0_REF 98
|
|
||||||
#define I2C1_REF 99
|
|
||||||
#define DBG_LPD 100
|
|
||||||
#define TIMESTAMP_REF 101
|
|
||||||
#define DBG_TSTMP 102
|
|
||||||
#define CPM_TOPSW_REF 103
|
|
||||||
#define USB3_DUAL_REF 104
|
|
||||||
#define OUTCLK_MAX 105
|
|
||||||
#define REF_CLK 106
|
|
||||||
#define PL_ALT_REF_CLK 107
|
|
||||||
#define MUXED_IRO 108
|
|
||||||
#define PL_EXT 109
|
|
||||||
#define PL_LB 110
|
|
||||||
#define MIO_50_OR_51 111
|
|
||||||
#define MIO_24_OR_25 112
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,133 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
|
||||||
/*
|
|
||||||
* Xilinx Zynq MPSoC Firmware layer
|
|
||||||
*
|
|
||||||
* Copyright (C) 2014-2018 Xilinx, Inc.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _DT_BINDINGS_CLK_ZYNQMP_H
|
|
||||||
#define _DT_BINDINGS_CLK_ZYNQMP_H
|
|
||||||
|
|
||||||
/*
|
|
||||||
* These bindings are deprecated, because they do not match the actual
|
|
||||||
* concept of bindings but rather contain pure firmware values.
|
|
||||||
* Instead include the header in the DTS source directory.
|
|
||||||
*/
|
|
||||||
#warning "These bindings are deprecated. Instead use the header in the DTS source directory."
|
|
||||||
|
|
||||||
#define IOPLL 0
|
|
||||||
#define RPLL 1
|
|
||||||
#define APLL 2
|
|
||||||
#define DPLL 3
|
|
||||||
#define VPLL 4
|
|
||||||
#define IOPLL_TO_FPD 5
|
|
||||||
#define RPLL_TO_FPD 6
|
|
||||||
#define APLL_TO_LPD 7
|
|
||||||
#define DPLL_TO_LPD 8
|
|
||||||
#define VPLL_TO_LPD 9
|
|
||||||
#define ACPU 10
|
|
||||||
#define ACPU_HALF 11
|
|
||||||
#define DBF_FPD 12
|
|
||||||
#define DBF_LPD 13
|
|
||||||
#define DBG_TRACE 14
|
|
||||||
#define DBG_TSTMP 15
|
|
||||||
#define DP_VIDEO_REF 16
|
|
||||||
#define DP_AUDIO_REF 17
|
|
||||||
#define DP_STC_REF 18
|
|
||||||
#define GDMA_REF 19
|
|
||||||
#define DPDMA_REF 20
|
|
||||||
#define DDR_REF 21
|
|
||||||
#define SATA_REF 22
|
|
||||||
#define PCIE_REF 23
|
|
||||||
#define GPU_REF 24
|
|
||||||
#define GPU_PP0_REF 25
|
|
||||||
#define GPU_PP1_REF 26
|
|
||||||
#define TOPSW_MAIN 27
|
|
||||||
#define TOPSW_LSBUS 28
|
|
||||||
#define GTGREF0_REF 29
|
|
||||||
#define LPD_SWITCH 30
|
|
||||||
#define LPD_LSBUS 31
|
|
||||||
#define USB0_BUS_REF 32
|
|
||||||
#define USB1_BUS_REF 33
|
|
||||||
#define USB3_DUAL_REF 34
|
|
||||||
#define USB0 35
|
|
||||||
#define USB1 36
|
|
||||||
#define CPU_R5 37
|
|
||||||
#define CPU_R5_CORE 38
|
|
||||||
#define CSU_SPB 39
|
|
||||||
#define CSU_PLL 40
|
|
||||||
#define PCAP 41
|
|
||||||
#define IOU_SWITCH 42
|
|
||||||
#define GEM_TSU_REF 43
|
|
||||||
#define GEM_TSU 44
|
|
||||||
#define GEM0_TX 45
|
|
||||||
#define GEM1_TX 46
|
|
||||||
#define GEM2_TX 47
|
|
||||||
#define GEM3_TX 48
|
|
||||||
#define GEM0_RX 49
|
|
||||||
#define GEM1_RX 50
|
|
||||||
#define GEM2_RX 51
|
|
||||||
#define GEM3_RX 52
|
|
||||||
#define QSPI_REF 53
|
|
||||||
#define SDIO0_REF 54
|
|
||||||
#define SDIO1_REF 55
|
|
||||||
#define UART0_REF 56
|
|
||||||
#define UART1_REF 57
|
|
||||||
#define SPI0_REF 58
|
|
||||||
#define SPI1_REF 59
|
|
||||||
#define NAND_REF 60
|
|
||||||
#define I2C0_REF 61
|
|
||||||
#define I2C1_REF 62
|
|
||||||
#define CAN0_REF 63
|
|
||||||
#define CAN1_REF 64
|
|
||||||
#define CAN0 65
|
|
||||||
#define CAN1 66
|
|
||||||
#define DLL_REF 67
|
|
||||||
#define ADMA_REF 68
|
|
||||||
#define TIMESTAMP_REF 69
|
|
||||||
#define AMS_REF 70
|
|
||||||
#define PL0_REF 71
|
|
||||||
#define PL1_REF 72
|
|
||||||
#define PL2_REF 73
|
|
||||||
#define PL3_REF 74
|
|
||||||
#define WDT 75
|
|
||||||
#define IOPLL_INT 76
|
|
||||||
#define IOPLL_PRE_SRC 77
|
|
||||||
#define IOPLL_HALF 78
|
|
||||||
#define IOPLL_INT_MUX 79
|
|
||||||
#define IOPLL_POST_SRC 80
|
|
||||||
#define RPLL_INT 81
|
|
||||||
#define RPLL_PRE_SRC 82
|
|
||||||
#define RPLL_HALF 83
|
|
||||||
#define RPLL_INT_MUX 84
|
|
||||||
#define RPLL_POST_SRC 85
|
|
||||||
#define APLL_INT 86
|
|
||||||
#define APLL_PRE_SRC 87
|
|
||||||
#define APLL_HALF 88
|
|
||||||
#define APLL_INT_MUX 89
|
|
||||||
#define APLL_POST_SRC 90
|
|
||||||
#define DPLL_INT 91
|
|
||||||
#define DPLL_PRE_SRC 92
|
|
||||||
#define DPLL_HALF 93
|
|
||||||
#define DPLL_INT_MUX 94
|
|
||||||
#define DPLL_POST_SRC 95
|
|
||||||
#define VPLL_INT 96
|
|
||||||
#define VPLL_PRE_SRC 97
|
|
||||||
#define VPLL_HALF 98
|
|
||||||
#define VPLL_INT_MUX 99
|
|
||||||
#define VPLL_POST_SRC 100
|
|
||||||
#define CAN0_MIO 101
|
|
||||||
#define CAN1_MIO 102
|
|
||||||
#define ACPU_FULL 103
|
|
||||||
#define GEM0_REF 104
|
|
||||||
#define GEM1_REF 105
|
|
||||||
#define GEM2_REF 106
|
|
||||||
#define GEM3_REF 107
|
|
||||||
#define GEM0_REF_UNG 108
|
|
||||||
#define GEM1_REF_UNG 109
|
|
||||||
#define GEM2_REF_UNG 110
|
|
||||||
#define GEM3_REF_UNG 111
|
|
||||||
#define LPD_WDT 112
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
/*
|
|
||||||
* This header provides macros for JZ4775 DMA bindings.
|
|
||||||
*
|
|
||||||
* Copyright (c) 2020 周琰杰 (Zhou Yanjie) <zhouyanjie@wanyeetech.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __DT_BINDINGS_DMA_JZ4775_DMA_H__
|
|
||||||
#define __DT_BINDINGS_DMA_JZ4775_DMA_H__
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Request type numbers for the JZ4775 DMA controller (written to the DRTn
|
|
||||||
* register for the channel).
|
|
||||||
*/
|
|
||||||
#define JZ4775_DMA_I2S0_TX 0x6
|
|
||||||
#define JZ4775_DMA_I2S0_RX 0x7
|
|
||||||
#define JZ4775_DMA_AUTO 0x8
|
|
||||||
#define JZ4775_DMA_SADC_RX 0x9
|
|
||||||
#define JZ4775_DMA_UART3_TX 0x0e
|
|
||||||
#define JZ4775_DMA_UART3_RX 0x0f
|
|
||||||
#define JZ4775_DMA_UART2_TX 0x10
|
|
||||||
#define JZ4775_DMA_UART2_RX 0x11
|
|
||||||
#define JZ4775_DMA_UART1_TX 0x12
|
|
||||||
#define JZ4775_DMA_UART1_RX 0x13
|
|
||||||
#define JZ4775_DMA_UART0_TX 0x14
|
|
||||||
#define JZ4775_DMA_UART0_RX 0x15
|
|
||||||
#define JZ4775_DMA_SSI0_TX 0x16
|
|
||||||
#define JZ4775_DMA_SSI0_RX 0x17
|
|
||||||
#define JZ4775_DMA_MSC0_TX 0x1a
|
|
||||||
#define JZ4775_DMA_MSC0_RX 0x1b
|
|
||||||
#define JZ4775_DMA_MSC1_TX 0x1c
|
|
||||||
#define JZ4775_DMA_MSC1_RX 0x1d
|
|
||||||
#define JZ4775_DMA_MSC2_TX 0x1e
|
|
||||||
#define JZ4775_DMA_MSC2_RX 0x1f
|
|
||||||
#define JZ4775_DMA_PCM0_TX 0x20
|
|
||||||
#define JZ4775_DMA_PCM0_RX 0x21
|
|
||||||
#define JZ4775_DMA_SMB0_TX 0x24
|
|
||||||
#define JZ4775_DMA_SMB0_RX 0x25
|
|
||||||
#define JZ4775_DMA_SMB1_TX 0x26
|
|
||||||
#define JZ4775_DMA_SMB1_RX 0x27
|
|
||||||
#define JZ4775_DMA_SMB2_TX 0x28
|
|
||||||
#define JZ4775_DMA_SMB2_RX 0x29
|
|
||||||
|
|
||||||
#endif /* __DT_BINDINGS_DMA_JZ4775_DMA_H__ */
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
/*
|
|
||||||
* This header provides macros for X2000 DMA bindings.
|
|
||||||
*
|
|
||||||
* Copyright (c) 2020 周琰杰 (Zhou Yanjie) <zhouyanjie@wanyeetech.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __DT_BINDINGS_DMA_X2000_DMA_H__
|
|
||||||
#define __DT_BINDINGS_DMA_X2000_DMA_H__
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Request type numbers for the X2000 DMA controller (written to the DRTn
|
|
||||||
* register for the channel).
|
|
||||||
*/
|
|
||||||
#define X2000_DMA_AUTO 0x8
|
|
||||||
#define X2000_DMA_UART5_TX 0xa
|
|
||||||
#define X2000_DMA_UART5_RX 0xb
|
|
||||||
#define X2000_DMA_UART4_TX 0xc
|
|
||||||
#define X2000_DMA_UART4_RX 0xd
|
|
||||||
#define X2000_DMA_UART3_TX 0xe
|
|
||||||
#define X2000_DMA_UART3_RX 0xf
|
|
||||||
#define X2000_DMA_UART2_TX 0x10
|
|
||||||
#define X2000_DMA_UART2_RX 0x11
|
|
||||||
#define X2000_DMA_UART1_TX 0x12
|
|
||||||
#define X2000_DMA_UART1_RX 0x13
|
|
||||||
#define X2000_DMA_UART0_TX 0x14
|
|
||||||
#define X2000_DMA_UART0_RX 0x15
|
|
||||||
#define X2000_DMA_SSI0_TX 0x16
|
|
||||||
#define X2000_DMA_SSI0_RX 0x17
|
|
||||||
#define X2000_DMA_SSI1_TX 0x18
|
|
||||||
#define X2000_DMA_SSI1_RX 0x19
|
|
||||||
#define X2000_DMA_I2C0_TX 0x24
|
|
||||||
#define X2000_DMA_I2C0_RX 0x25
|
|
||||||
#define X2000_DMA_I2C1_TX 0x26
|
|
||||||
#define X2000_DMA_I2C1_RX 0x27
|
|
||||||
#define X2000_DMA_I2C2_TX 0x28
|
|
||||||
#define X2000_DMA_I2C2_RX 0x29
|
|
||||||
#define X2000_DMA_I2C3_TX 0x2a
|
|
||||||
#define X2000_DMA_I2C3_RX 0x2b
|
|
||||||
#define X2000_DMA_I2C4_TX 0x2c
|
|
||||||
#define X2000_DMA_I2C4_RX 0x2d
|
|
||||||
#define X2000_DMA_I2C5_TX 0x2e
|
|
||||||
#define X2000_DMA_I2C5_RX 0x2f
|
|
||||||
#define X2000_DMA_UART6_TX 0x30
|
|
||||||
#define X2000_DMA_UART6_RX 0x31
|
|
||||||
#define X2000_DMA_UART7_TX 0x32
|
|
||||||
#define X2000_DMA_UART7_RX 0x33
|
|
||||||
#define X2000_DMA_UART8_TX 0x34
|
|
||||||
#define X2000_DMA_UART8_RX 0x35
|
|
||||||
#define X2000_DMA_UART9_TX 0x36
|
|
||||||
#define X2000_DMA_UART9_RX 0x37
|
|
||||||
#define X2000_DMA_SADC_RX 0x38
|
|
||||||
|
|
||||||
#endif /* __DT_BINDINGS_DMA_X2000_DMA_H__ */
|
|
||||||
|
|
@ -1,222 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 MediaTek Inc.
|
|
||||||
* Author: Dennis-YC Hsieh <dennis-yc.hsieh@mediatek.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _DT_BINDINGS_GCE_MT6779_H
|
|
||||||
#define _DT_BINDINGS_GCE_MT6779_H
|
|
||||||
|
|
||||||
#define CMDQ_NO_TIMEOUT 0xffffffff
|
|
||||||
|
|
||||||
/* GCE HW thread priority */
|
|
||||||
#define CMDQ_THR_PRIO_LOWEST 0
|
|
||||||
#define CMDQ_THR_PRIO_1 1
|
|
||||||
#define CMDQ_THR_PRIO_2 2
|
|
||||||
#define CMDQ_THR_PRIO_3 3
|
|
||||||
#define CMDQ_THR_PRIO_4 4
|
|
||||||
#define CMDQ_THR_PRIO_5 5
|
|
||||||
#define CMDQ_THR_PRIO_6 6
|
|
||||||
#define CMDQ_THR_PRIO_HIGHEST 7
|
|
||||||
|
|
||||||
/* GCE subsys table */
|
|
||||||
#define SUBSYS_1300XXXX 0
|
|
||||||
#define SUBSYS_1400XXXX 1
|
|
||||||
#define SUBSYS_1401XXXX 2
|
|
||||||
#define SUBSYS_1402XXXX 3
|
|
||||||
#define SUBSYS_1502XXXX 4
|
|
||||||
#define SUBSYS_1880XXXX 5
|
|
||||||
#define SUBSYS_1881XXXX 6
|
|
||||||
#define SUBSYS_1882XXXX 7
|
|
||||||
#define SUBSYS_1883XXXX 8
|
|
||||||
#define SUBSYS_1884XXXX 9
|
|
||||||
#define SUBSYS_1000XXXX 10
|
|
||||||
#define SUBSYS_1001XXXX 11
|
|
||||||
#define SUBSYS_1002XXXX 12
|
|
||||||
#define SUBSYS_1003XXXX 13
|
|
||||||
#define SUBSYS_1004XXXX 14
|
|
||||||
#define SUBSYS_1005XXXX 15
|
|
||||||
#define SUBSYS_1020XXXX 16
|
|
||||||
#define SUBSYS_1028XXXX 17
|
|
||||||
#define SUBSYS_1700XXXX 18
|
|
||||||
#define SUBSYS_1701XXXX 19
|
|
||||||
#define SUBSYS_1702XXXX 20
|
|
||||||
#define SUBSYS_1703XXXX 21
|
|
||||||
#define SUBSYS_1800XXXX 22
|
|
||||||
#define SUBSYS_1801XXXX 23
|
|
||||||
#define SUBSYS_1802XXXX 24
|
|
||||||
#define SUBSYS_1804XXXX 25
|
|
||||||
#define SUBSYS_1805XXXX 26
|
|
||||||
#define SUBSYS_1808XXXX 27
|
|
||||||
#define SUBSYS_180aXXXX 28
|
|
||||||
#define SUBSYS_180bXXXX 29
|
|
||||||
#define CMDQ_SUBSYS_OFF 32
|
|
||||||
|
|
||||||
/* GCE hardware events */
|
|
||||||
#define CMDQ_EVENT_DISP_RDMA0_SOF 0
|
|
||||||
#define CMDQ_EVENT_DISP_RDMA1_SOF 1
|
|
||||||
#define CMDQ_EVENT_MDP_RDMA0_SOF 2
|
|
||||||
#define CMDQ_EVENT_MDP_RDMA1_SOF 3
|
|
||||||
#define CMDQ_EVENT_MDP_RSZ0_SOF 4
|
|
||||||
#define CMDQ_EVENT_MDP_RSZ1_SOF 5
|
|
||||||
#define CMDQ_EVENT_MDP_TDSHP_SOF 6
|
|
||||||
#define CMDQ_EVENT_MDP_WROT0_SOF 7
|
|
||||||
#define CMDQ_EVENT_MDP_WROT1_SOF 8
|
|
||||||
#define CMDQ_EVENT_DISP_OVL0_SOF 9
|
|
||||||
#define CMDQ_EVENT_DISP_2L_OVL0_SOF 10
|
|
||||||
#define CMDQ_EVENT_DISP_2L_OVL1_SOF 11
|
|
||||||
#define CMDQ_EVENT_DISP_WDMA0_SOF 12
|
|
||||||
#define CMDQ_EVENT_DISP_COLOR0_SOF 13
|
|
||||||
#define CMDQ_EVENT_DISP_CCORR0_SOF 14
|
|
||||||
#define CMDQ_EVENT_DISP_AAL0_SOF 15
|
|
||||||
#define CMDQ_EVENT_DISP_GAMMA0_SOF 16
|
|
||||||
#define CMDQ_EVENT_DISP_DITHER0_SOF 17
|
|
||||||
#define CMDQ_EVENT_DISP_PWM0_SOF 18
|
|
||||||
#define CMDQ_EVENT_DISP_DSI0_SOF 19
|
|
||||||
#define CMDQ_EVENT_DISP_DPI0_SOF 20
|
|
||||||
#define CMDQ_EVENT_DISP_POSTMASK0_SOF 21
|
|
||||||
#define CMDQ_EVENT_DISP_RSZ0_SOF 22
|
|
||||||
#define CMDQ_EVENT_MDP_AAL_SOF 23
|
|
||||||
#define CMDQ_EVENT_MDP_CCORR_SOF 24
|
|
||||||
#define CMDQ_EVENT_DISP_DBI0_SOF 25
|
|
||||||
#define CMDQ_EVENT_ISP_RELAY_SOF 26
|
|
||||||
#define CMDQ_EVENT_IPU_RELAY_SOF 27
|
|
||||||
#define CMDQ_EVENT_DISP_RDMA0_EOF 28
|
|
||||||
#define CMDQ_EVENT_DISP_RDMA1_EOF 29
|
|
||||||
#define CMDQ_EVENT_MDP_RDMA0_EOF 30
|
|
||||||
#define CMDQ_EVENT_MDP_RDMA1_EOF 31
|
|
||||||
#define CMDQ_EVENT_MDP_RSZ0_EOF 32
|
|
||||||
#define CMDQ_EVENT_MDP_RSZ1_EOF 33
|
|
||||||
#define CMDQ_EVENT_MDP_TDSHP_EOF 34
|
|
||||||
#define CMDQ_EVENT_MDP_WROT0_W_EOF 35
|
|
||||||
#define CMDQ_EVENT_MDP_WROT1_W_EOF 36
|
|
||||||
#define CMDQ_EVENT_DISP_OVL0_EOF 37
|
|
||||||
#define CMDQ_EVENT_DISP_2L_OVL0_EOF 38
|
|
||||||
#define CMDQ_EVENT_DISP_2L_OVL1_EOF 39
|
|
||||||
#define CMDQ_EVENT_DISP_WDMA0_EOF 40
|
|
||||||
#define CMDQ_EVENT_DISP_COLOR0_EOF 41
|
|
||||||
#define CMDQ_EVENT_DISP_CCORR0_EOF 42
|
|
||||||
#define CMDQ_EVENT_DISP_AAL0_EOF 43
|
|
||||||
#define CMDQ_EVENT_DISP_GAMMA0_EOF 44
|
|
||||||
#define CMDQ_EVENT_DISP_DITHER0_EOF 45
|
|
||||||
#define CMDQ_EVENT_DISP_DSI0_EOF 46
|
|
||||||
#define CMDQ_EVENT_DISP_DPI0_EOF 47
|
|
||||||
#define CMDQ_EVENT_DISP_RSZ0_EOF 49
|
|
||||||
#define CMDQ_EVENT_MDP_AAL_FRAME_DONE 50
|
|
||||||
#define CMDQ_EVENT_MDP_CCORR_FRAME_DONE 51
|
|
||||||
#define CMDQ_EVENT_DISP_POSTMASK0_FRAME_DONE 52
|
|
||||||
#define CMDQ_EVENT_MUTEX0_STREAM_EOF 130
|
|
||||||
#define CMDQ_EVENT_MUTEX1_STREAM_EOF 131
|
|
||||||
#define CMDQ_EVENT_MUTEX2_STREAM_EOF 132
|
|
||||||
#define CMDQ_EVENT_MUTEX3_STREAM_EOF 133
|
|
||||||
#define CMDQ_EVENT_MUTEX4_STREAM_EOF 134
|
|
||||||
#define CMDQ_EVENT_MUTEX5_STREAM_EOF 135
|
|
||||||
#define CMDQ_EVENT_MUTEX6_STREAM_EOF 136
|
|
||||||
#define CMDQ_EVENT_MUTEX7_STREAM_EOF 137
|
|
||||||
#define CMDQ_EVENT_MUTEX8_STREAM_EOF 138
|
|
||||||
#define CMDQ_EVENT_MUTEX9_STREAM_EOF 139
|
|
||||||
#define CMDQ_EVENT_MUTEX10_STREAM_EOF 140
|
|
||||||
#define CMDQ_EVENT_MUTEX11_STREAM_EOF 141
|
|
||||||
#define CMDQ_EVENT_DISP_RDMA0_UNDERRUN 142
|
|
||||||
#define CMDQ_EVENT_DISP_RDMA1_UNDERRUN 143
|
|
||||||
#define CMDQ_EVENT_DISP_RDMA2_UNDERRUN 144
|
|
||||||
#define CMDQ_EVENT_DISP_RDMA3_UNDERRUN 145
|
|
||||||
#define CMDQ_EVENT_DSI0_TE 146
|
|
||||||
#define CMDQ_EVENT_DSI0_IRQ_EVENT 147
|
|
||||||
#define CMDQ_EVENT_DSI0_DONE_EVENT 148
|
|
||||||
#define CMDQ_EVENT_DISP_POSTMASK0_RST_DONE 150
|
|
||||||
#define CMDQ_EVENT_DISP_WDMA0_RST_DONE 151
|
|
||||||
#define CMDQ_EVENT_MDP_WROT0_RST_DONE 153
|
|
||||||
#define CMDQ_EVENT_MDP_RDMA0_RST_DONE 154
|
|
||||||
#define CMDQ_EVENT_DISP_OVL0_RST_DONE 155
|
|
||||||
#define CMDQ_EVENT_DISP_OVL0_2L_RST_DONE 156
|
|
||||||
#define CMDQ_EVENT_DISP_OVL1_2L_RST_DONE 157
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD0_EOF 257
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD1_EOF 258
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD2_EOF 259
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD3_EOF 260
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD4_EOF 261
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD5_EOF 262
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD6_EOF 263
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD7_EOF 264
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD8_EOF 265
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD9_EOF 266
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD10_EOF 267
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD11_EOF 268
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD12_EOF 269
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD13_EOF 270
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD14_EOF 271
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD15_EOF 272
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD16_EOF 273
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD17_EOF 274
|
|
||||||
#define CMDQ_EVENT_DIP_CQ_THREAD18_EOF 275
|
|
||||||
#define CMDQ_EVENT_DIP_DMA_ERR_EVENT 276
|
|
||||||
#define CMDQ_EVENT_AMD_FRAME_DONE 277
|
|
||||||
#define CMDQ_EVENT_MFB_DONE 278
|
|
||||||
#define CMDQ_EVENT_WPE_A_EOF 279
|
|
||||||
#define CMDQ_EVENT_VENC_EOF 289
|
|
||||||
#define CMDQ_EVENT_VENC_CMDQ_PAUSE_DONE 290
|
|
||||||
#define CMDQ_EVENT_JPEG_ENC_EOF 291
|
|
||||||
#define CMDQ_EVENT_VENC_MB_DONE 292
|
|
||||||
#define CMDQ_EVENT_VENC_128BYTE_CNT_DONE 293
|
|
||||||
#define CMDQ_EVENT_ISP_FRAME_DONE_A 321
|
|
||||||
#define CMDQ_EVENT_ISP_FRAME_DONE_B 322
|
|
||||||
#define CMDQ_EVENT_ISP_FRAME_DONE_C 323
|
|
||||||
#define CMDQ_EVENT_ISP_CAMSV_0_PASS1_DONE 324
|
|
||||||
#define CMDQ_EVENT_ISP_CAMSV_0_2_PASS1_DONE 325
|
|
||||||
#define CMDQ_EVENT_ISP_CAMSV_1_PASS1_DONE 326
|
|
||||||
#define CMDQ_EVENT_ISP_CAMSV_2_PASS1_DONE 327
|
|
||||||
#define CMDQ_EVENT_ISP_CAMSV_3_PASS1_DONE 328
|
|
||||||
#define CMDQ_EVENT_ISP_TSF_DONE 329
|
|
||||||
#define CMDQ_EVENT_SENINF_0_FIFO_FULL 330
|
|
||||||
#define CMDQ_EVENT_SENINF_1_FIFO_FULL 331
|
|
||||||
#define CMDQ_EVENT_SENINF_2_FIFO_FULL 332
|
|
||||||
#define CMDQ_EVENT_SENINF_3_FIFO_FULL 333
|
|
||||||
#define CMDQ_EVENT_SENINF_4_FIFO_FULL 334
|
|
||||||
#define CMDQ_EVENT_SENINF_5_FIFO_FULL 335
|
|
||||||
#define CMDQ_EVENT_SENINF_6_FIFO_FULL 336
|
|
||||||
#define CMDQ_EVENT_SENINF_7_FIFO_FULL 337
|
|
||||||
#define CMDQ_EVENT_TG_OVRUN_A_INT_DLY 338
|
|
||||||
#define CMDQ_EVENT_TG_OVRUN_B_INT_DLY 339
|
|
||||||
#define CMDQ_EVENT_TG_OVRUN_C_INT 340
|
|
||||||
#define CMDQ_EVENT_TG_GRABERR_A_INT_DLY 341
|
|
||||||
#define CMDQ_EVENT_TG_GRABERR_B_INT_DLY 342
|
|
||||||
#define CMDQ_EVENT_TG_GRABERR_C_INT 343
|
|
||||||
#define CMDQ_EVENT_CQ_VR_SNAP_A_INT_DLY 344
|
|
||||||
#define CMDQ_EVENT_CQ_VR_SNAP_B_INT_DLY 345
|
|
||||||
#define CMDQ_EVENT_CQ_VR_SNAP_C_INT 346
|
|
||||||
#define CMDQ_EVENT_DMA_R1_ERROR_A_INT_DLY 347
|
|
||||||
#define CMDQ_EVENT_DMA_R1_ERROR_B_INT_DLY 348
|
|
||||||
#define CMDQ_EVENT_DMA_R1_ERROR_C_INT 349
|
|
||||||
#define CMDQ_EVENT_APU_GCE_CORE0_EVENT_0 353
|
|
||||||
#define CMDQ_EVENT_APU_GCE_CORE0_EVENT_1 354
|
|
||||||
#define CMDQ_EVENT_APU_GCE_CORE0_EVENT_2 355
|
|
||||||
#define CMDQ_EVENT_APU_GCE_CORE0_EVENT_3 356
|
|
||||||
#define CMDQ_EVENT_APU_GCE_CORE1_EVENT_0 385
|
|
||||||
#define CMDQ_EVENT_APU_GCE_CORE1_EVENT_1 386
|
|
||||||
#define CMDQ_EVENT_APU_GCE_CORE1_EVENT_2 387
|
|
||||||
#define CMDQ_EVENT_APU_GCE_CORE1_EVENT_3 388
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_0 416
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_1 417
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_2 418
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_3 419
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_4 420
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_5 421
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_6 422
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_7 423
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_8 424
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_9 425
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_10 426
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_11 427
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_12 428
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_13 429
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_14 430
|
|
||||||
#define CMDQ_EVENT_VDEC_EVENT_15 431
|
|
||||||
#define CMDQ_EVENT_FDVT_DONE 449
|
|
||||||
#define CMDQ_EVENT_FE_DONE 450
|
|
||||||
#define CMDQ_EVENT_RSC_EOF 451
|
|
||||||
#define CMDQ_EVENT_DVS_DONE_ASYNC_SHOT 452
|
|
||||||
#define CMDQ_EVENT_DVP_DONE_ASYNC_SHOT 453
|
|
||||||
#define CMDQ_EVENT_DSI0_TE_INFRA 898
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,206 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 MediaTek Inc.
|
|
||||||
* Author: Chao Hao <chao.hao@mediatek.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _DT_BINDINGS_MEMORY_MT6779_LARB_PORT_H_
|
|
||||||
#define _DT_BINDINGS_MEMORY_MT6779_LARB_PORT_H_
|
|
||||||
|
|
||||||
#include <dt-bindings/memory/mtk-memory-port.h>
|
|
||||||
|
|
||||||
#define M4U_LARB0_ID 0
|
|
||||||
#define M4U_LARB1_ID 1
|
|
||||||
#define M4U_LARB2_ID 2
|
|
||||||
#define M4U_LARB3_ID 3
|
|
||||||
#define M4U_LARB4_ID 4
|
|
||||||
#define M4U_LARB5_ID 5
|
|
||||||
#define M4U_LARB6_ID 6
|
|
||||||
#define M4U_LARB7_ID 7
|
|
||||||
#define M4U_LARB8_ID 8
|
|
||||||
#define M4U_LARB9_ID 9
|
|
||||||
#define M4U_LARB10_ID 10
|
|
||||||
#define M4U_LARB11_ID 11
|
|
||||||
|
|
||||||
/* larb0 */
|
|
||||||
#define M4U_PORT_DISP_POSTMASK0 MTK_M4U_ID(M4U_LARB0_ID, 0)
|
|
||||||
#define M4U_PORT_DISP_OVL0_HDR MTK_M4U_ID(M4U_LARB0_ID, 1)
|
|
||||||
#define M4U_PORT_DISP_OVL1_HDR MTK_M4U_ID(M4U_LARB0_ID, 2)
|
|
||||||
#define M4U_PORT_DISP_OVL0 MTK_M4U_ID(M4U_LARB0_ID, 3)
|
|
||||||
#define M4U_PORT_DISP_OVL1 MTK_M4U_ID(M4U_LARB0_ID, 4)
|
|
||||||
#define M4U_PORT_DISP_PVRIC0 MTK_M4U_ID(M4U_LARB0_ID, 5)
|
|
||||||
#define M4U_PORT_DISP_RDMA0 MTK_M4U_ID(M4U_LARB0_ID, 6)
|
|
||||||
#define M4U_PORT_DISP_WDMA0 MTK_M4U_ID(M4U_LARB0_ID, 7)
|
|
||||||
#define M4U_PORT_DISP_FAKE0 MTK_M4U_ID(M4U_LARB0_ID, 8)
|
|
||||||
|
|
||||||
/* larb1 */
|
|
||||||
#define M4U_PORT_DISP_OVL0_2L_HDR MTK_M4U_ID(M4U_LARB1_ID, 0)
|
|
||||||
#define M4U_PORT_DISP_OVL1_2L_HDR MTK_M4U_ID(M4U_LARB1_ID, 1)
|
|
||||||
#define M4U_PORT_DISP_OVL0_2L MTK_M4U_ID(M4U_LARB1_ID, 2)
|
|
||||||
#define M4U_PORT_DISP_OVL1_2L MTK_M4U_ID(M4U_LARB1_ID, 3)
|
|
||||||
#define M4U_PORT_DISP_RDMA1 MTK_M4U_ID(M4U_LARB1_ID, 4)
|
|
||||||
#define M4U_PORT_MDP_PVRIC0 MTK_M4U_ID(M4U_LARB1_ID, 5)
|
|
||||||
#define M4U_PORT_MDP_PVRIC1 MTK_M4U_ID(M4U_LARB1_ID, 6)
|
|
||||||
#define M4U_PORT_MDP_RDMA0 MTK_M4U_ID(M4U_LARB1_ID, 7)
|
|
||||||
#define M4U_PORT_MDP_RDMA1 MTK_M4U_ID(M4U_LARB1_ID, 8)
|
|
||||||
#define M4U_PORT_MDP_WROT0_R MTK_M4U_ID(M4U_LARB1_ID, 9)
|
|
||||||
#define M4U_PORT_MDP_WROT0_W MTK_M4U_ID(M4U_LARB1_ID, 10)
|
|
||||||
#define M4U_PORT_MDP_WROT1_R MTK_M4U_ID(M4U_LARB1_ID, 11)
|
|
||||||
#define M4U_PORT_MDP_WROT1_W MTK_M4U_ID(M4U_LARB1_ID, 12)
|
|
||||||
#define M4U_PORT_DISP_FAKE1 MTK_M4U_ID(M4U_LARB1_ID, 13)
|
|
||||||
|
|
||||||
/* larb2-VDEC */
|
|
||||||
#define M4U_PORT_HW_VDEC_MC_EXT MTK_M4U_ID(M4U_LARB2_ID, 0)
|
|
||||||
#define M4U_PORT_HW_VDEC_UFO_EXT MTK_M4U_ID(M4U_LARB2_ID, 1)
|
|
||||||
#define M4U_PORT_HW_VDEC_PP_EXT MTK_M4U_ID(M4U_LARB2_ID, 2)
|
|
||||||
#define M4U_PORT_HW_VDEC_PRED_RD_EXT MTK_M4U_ID(M4U_LARB2_ID, 3)
|
|
||||||
#define M4U_PORT_HW_VDEC_PRED_WR_EXT MTK_M4U_ID(M4U_LARB2_ID, 4)
|
|
||||||
#define M4U_PORT_HW_VDEC_PPWRAP_EXT MTK_M4U_ID(M4U_LARB2_ID, 5)
|
|
||||||
#define M4U_PORT_HW_VDEC_TILE_EXT MTK_M4U_ID(M4U_LARB2_ID, 6)
|
|
||||||
#define M4U_PORT_HW_VDEC_VLD_EXT MTK_M4U_ID(M4U_LARB2_ID, 7)
|
|
||||||
#define M4U_PORT_HW_VDEC_VLD2_EXT MTK_M4U_ID(M4U_LARB2_ID, 8)
|
|
||||||
#define M4U_PORT_HW_VDEC_AVC_MV_EXT MTK_M4U_ID(M4U_LARB2_ID, 9)
|
|
||||||
#define M4U_PORT_HW_VDEC_UFO_ENC_EXT MTK_M4U_ID(M4U_LARB2_ID, 10)
|
|
||||||
#define M4U_PORT_HW_VDEC_RG_CTRL_DMA_EXT MTK_M4U_ID(M4U_LARB2_ID, 11)
|
|
||||||
|
|
||||||
/* larb3-VENC */
|
|
||||||
#define M4U_PORT_VENC_RCPU MTK_M4U_ID(M4U_LARB3_ID, 0)
|
|
||||||
#define M4U_PORT_VENC_REC MTK_M4U_ID(M4U_LARB3_ID, 1)
|
|
||||||
#define M4U_PORT_VENC_BSDMA MTK_M4U_ID(M4U_LARB3_ID, 2)
|
|
||||||
#define M4U_PORT_VENC_SV_COMV MTK_M4U_ID(M4U_LARB3_ID, 3)
|
|
||||||
#define M4U_PORT_VENC_RD_COMV MTK_M4U_ID(M4U_LARB3_ID, 4)
|
|
||||||
#define M4U_PORT_VENC_NBM_RDMA MTK_M4U_ID(M4U_LARB3_ID, 5)
|
|
||||||
#define M4U_PORT_VENC_NBM_RDMA_LITE MTK_M4U_ID(M4U_LARB3_ID, 6)
|
|
||||||
#define M4U_PORT_JPGENC_Y_RDMA MTK_M4U_ID(M4U_LARB3_ID, 7)
|
|
||||||
#define M4U_PORT_JPGENC_C_RDMA MTK_M4U_ID(M4U_LARB3_ID, 8)
|
|
||||||
#define M4U_PORT_JPGENC_Q_TABLE MTK_M4U_ID(M4U_LARB3_ID, 9)
|
|
||||||
#define M4U_PORT_JPGENC_BSDMA MTK_M4U_ID(M4U_LARB3_ID, 10)
|
|
||||||
#define M4U_PORT_JPGDEC_WDMA MTK_M4U_ID(M4U_LARB3_ID, 11)
|
|
||||||
#define M4U_PORT_JPGDEC_BSDMA MTK_M4U_ID(M4U_LARB3_ID, 12)
|
|
||||||
#define M4U_PORT_VENC_NBM_WDMA MTK_M4U_ID(M4U_LARB3_ID, 13)
|
|
||||||
#define M4U_PORT_VENC_NBM_WDMA_LITE MTK_M4U_ID(M4U_LARB3_ID, 14)
|
|
||||||
#define M4U_PORT_VENC_CUR_LUMA MTK_M4U_ID(M4U_LARB3_ID, 15)
|
|
||||||
#define M4U_PORT_VENC_CUR_CHROMA MTK_M4U_ID(M4U_LARB3_ID, 16)
|
|
||||||
#define M4U_PORT_VENC_REF_LUMA MTK_M4U_ID(M4U_LARB3_ID, 17)
|
|
||||||
#define M4U_PORT_VENC_REF_CHROMA MTK_M4U_ID(M4U_LARB3_ID, 18)
|
|
||||||
|
|
||||||
/* larb4-dummy */
|
|
||||||
|
|
||||||
/* larb5-IMG */
|
|
||||||
#define M4U_PORT_IMGI_D1 MTK_M4U_ID(M4U_LARB5_ID, 0)
|
|
||||||
#define M4U_PORT_IMGBI_D1 MTK_M4U_ID(M4U_LARB5_ID, 1)
|
|
||||||
#define M4U_PORT_DMGI_D1 MTK_M4U_ID(M4U_LARB5_ID, 2)
|
|
||||||
#define M4U_PORT_DEPI_D1 MTK_M4U_ID(M4U_LARB5_ID, 3)
|
|
||||||
#define M4U_PORT_LCEI_D1 MTK_M4U_ID(M4U_LARB5_ID, 4)
|
|
||||||
#define M4U_PORT_SMTI_D1 MTK_M4U_ID(M4U_LARB5_ID, 5)
|
|
||||||
#define M4U_PORT_SMTO_D2 MTK_M4U_ID(M4U_LARB5_ID, 6)
|
|
||||||
#define M4U_PORT_SMTO_D1 MTK_M4U_ID(M4U_LARB5_ID, 7)
|
|
||||||
#define M4U_PORT_CRZO_D1 MTK_M4U_ID(M4U_LARB5_ID, 8)
|
|
||||||
#define M4U_PORT_IMG3O_D1 MTK_M4U_ID(M4U_LARB5_ID, 9)
|
|
||||||
#define M4U_PORT_VIPI_D1 MTK_M4U_ID(M4U_LARB5_ID, 10)
|
|
||||||
#define M4U_PORT_WPE_RDMA1 MTK_M4U_ID(M4U_LARB5_ID, 11)
|
|
||||||
#define M4U_PORT_WPE_RDMA0 MTK_M4U_ID(M4U_LARB5_ID, 12)
|
|
||||||
#define M4U_PORT_WPE_WDMA MTK_M4U_ID(M4U_LARB5_ID, 13)
|
|
||||||
#define M4U_PORT_TIMGO_D1 MTK_M4U_ID(M4U_LARB5_ID, 14)
|
|
||||||
#define M4U_PORT_MFB_RDMA0 MTK_M4U_ID(M4U_LARB5_ID, 15)
|
|
||||||
#define M4U_PORT_MFB_RDMA1 MTK_M4U_ID(M4U_LARB5_ID, 16)
|
|
||||||
#define M4U_PORT_MFB_RDMA2 MTK_M4U_ID(M4U_LARB5_ID, 17)
|
|
||||||
#define M4U_PORT_MFB_RDMA3 MTK_M4U_ID(M4U_LARB5_ID, 18)
|
|
||||||
#define M4U_PORT_MFB_WDMA MTK_M4U_ID(M4U_LARB5_ID, 19)
|
|
||||||
#define M4U_PORT_RESERVE1 MTK_M4U_ID(M4U_LARB5_ID, 20)
|
|
||||||
#define M4U_PORT_RESERVE2 MTK_M4U_ID(M4U_LARB5_ID, 21)
|
|
||||||
#define M4U_PORT_RESERVE3 MTK_M4U_ID(M4U_LARB5_ID, 22)
|
|
||||||
#define M4U_PORT_RESERVE4 MTK_M4U_ID(M4U_LARB5_ID, 23)
|
|
||||||
#define M4U_PORT_RESERVE5 MTK_M4U_ID(M4U_LARB5_ID, 24)
|
|
||||||
#define M4U_PORT_RESERVE6 MTK_M4U_ID(M4U_LARB5_ID, 25)
|
|
||||||
|
|
||||||
/* larb6-IMG-VPU */
|
|
||||||
#define M4U_PORT_IMG_IPUO MTK_M4U_ID(M4U_LARB6_ID, 0)
|
|
||||||
#define M4U_PORT_IMG_IPU3O MTK_M4U_ID(M4U_LARB6_ID, 1)
|
|
||||||
#define M4U_PORT_IMG_IPUI MTK_M4U_ID(M4U_LARB6_ID, 2)
|
|
||||||
|
|
||||||
/* larb7-DVS */
|
|
||||||
#define M4U_PORT_DVS_RDMA MTK_M4U_ID(M4U_LARB7_ID, 0)
|
|
||||||
#define M4U_PORT_DVS_WDMA MTK_M4U_ID(M4U_LARB7_ID, 1)
|
|
||||||
#define M4U_PORT_DVP_RDMA MTK_M4U_ID(M4U_LARB7_ID, 2)
|
|
||||||
#define M4U_PORT_DVP_WDMA MTK_M4U_ID(M4U_LARB7_ID, 3)
|
|
||||||
|
|
||||||
/* larb8-IPESYS */
|
|
||||||
#define M4U_PORT_FDVT_RDA MTK_M4U_ID(M4U_LARB8_ID, 0)
|
|
||||||
#define M4U_PORT_FDVT_RDB MTK_M4U_ID(M4U_LARB8_ID, 1)
|
|
||||||
#define M4U_PORT_FDVT_WRA MTK_M4U_ID(M4U_LARB8_ID, 2)
|
|
||||||
#define M4U_PORT_FDVT_WRB MTK_M4U_ID(M4U_LARB8_ID, 3)
|
|
||||||
#define M4U_PORT_FE_RD0 MTK_M4U_ID(M4U_LARB8_ID, 4)
|
|
||||||
#define M4U_PORT_FE_RD1 MTK_M4U_ID(M4U_LARB8_ID, 5)
|
|
||||||
#define M4U_PORT_FE_WR0 MTK_M4U_ID(M4U_LARB8_ID, 6)
|
|
||||||
#define M4U_PORT_FE_WR1 MTK_M4U_ID(M4U_LARB8_ID, 7)
|
|
||||||
#define M4U_PORT_RSC_RDMA0 MTK_M4U_ID(M4U_LARB8_ID, 8)
|
|
||||||
#define M4U_PORT_RSC_WDMA MTK_M4U_ID(M4U_LARB8_ID, 9)
|
|
||||||
|
|
||||||
/* larb9-CAM */
|
|
||||||
#define M4U_PORT_CAM_IMGO_R1_C MTK_M4U_ID(M4U_LARB9_ID, 0)
|
|
||||||
#define M4U_PORT_CAM_RRZO_R1_C MTK_M4U_ID(M4U_LARB9_ID, 1)
|
|
||||||
#define M4U_PORT_CAM_LSCI_R1_C MTK_M4U_ID(M4U_LARB9_ID, 2)
|
|
||||||
#define M4U_PORT_CAM_BPCI_R1_C MTK_M4U_ID(M4U_LARB9_ID, 3)
|
|
||||||
#define M4U_PORT_CAM_YUVO_R1_C MTK_M4U_ID(M4U_LARB9_ID, 4)
|
|
||||||
#define M4U_PORT_CAM_UFDI_R2_C MTK_M4U_ID(M4U_LARB9_ID, 5)
|
|
||||||
#define M4U_PORT_CAM_RAWI_R2_C MTK_M4U_ID(M4U_LARB9_ID, 6)
|
|
||||||
#define M4U_PORT_CAM_RAWI_R5_C MTK_M4U_ID(M4U_LARB9_ID, 7)
|
|
||||||
#define M4U_PORT_CAM_CAMSV_1 MTK_M4U_ID(M4U_LARB9_ID, 8)
|
|
||||||
#define M4U_PORT_CAM_CAMSV_2 MTK_M4U_ID(M4U_LARB9_ID, 9)
|
|
||||||
#define M4U_PORT_CAM_CAMSV_3 MTK_M4U_ID(M4U_LARB9_ID, 10)
|
|
||||||
#define M4U_PORT_CAM_CAMSV_4 MTK_M4U_ID(M4U_LARB9_ID, 11)
|
|
||||||
#define M4U_PORT_CAM_CAMSV_5 MTK_M4U_ID(M4U_LARB9_ID, 12)
|
|
||||||
#define M4U_PORT_CAM_CAMSV_6 MTK_M4U_ID(M4U_LARB9_ID, 13)
|
|
||||||
#define M4U_PORT_CAM_AAO_R1_C MTK_M4U_ID(M4U_LARB9_ID, 14)
|
|
||||||
#define M4U_PORT_CAM_AFO_R1_C MTK_M4U_ID(M4U_LARB9_ID, 15)
|
|
||||||
#define M4U_PORT_CAM_FLKO_R1_C MTK_M4U_ID(M4U_LARB9_ID, 16)
|
|
||||||
#define M4U_PORT_CAM_LCESO_R1_C MTK_M4U_ID(M4U_LARB9_ID, 17)
|
|
||||||
#define M4U_PORT_CAM_CRZO_R1_C MTK_M4U_ID(M4U_LARB9_ID, 18)
|
|
||||||
#define M4U_PORT_CAM_LTMSO_R1_C MTK_M4U_ID(M4U_LARB9_ID, 19)
|
|
||||||
#define M4U_PORT_CAM_RSSO_R1_C MTK_M4U_ID(M4U_LARB9_ID, 20)
|
|
||||||
#define M4U_PORT_CAM_CCUI MTK_M4U_ID(M4U_LARB9_ID, 21)
|
|
||||||
#define M4U_PORT_CAM_CCUO MTK_M4U_ID(M4U_LARB9_ID, 22)
|
|
||||||
#define M4U_PORT_CAM_FAKE MTK_M4U_ID(M4U_LARB9_ID, 23)
|
|
||||||
|
|
||||||
/* larb10-CAM_A */
|
|
||||||
#define M4U_PORT_CAM_IMGO_R1_A MTK_M4U_ID(M4U_LARB10_ID, 0)
|
|
||||||
#define M4U_PORT_CAM_RRZO_R1_A MTK_M4U_ID(M4U_LARB10_ID, 1)
|
|
||||||
#define M4U_PORT_CAM_LSCI_R1_A MTK_M4U_ID(M4U_LARB10_ID, 2)
|
|
||||||
#define M4U_PORT_CAM_BPCI_R1_A MTK_M4U_ID(M4U_LARB10_ID, 3)
|
|
||||||
#define M4U_PORT_CAM_YUVO_R1_A MTK_M4U_ID(M4U_LARB10_ID, 4)
|
|
||||||
#define M4U_PORT_CAM_UFDI_R2_A MTK_M4U_ID(M4U_LARB10_ID, 5)
|
|
||||||
#define M4U_PORT_CAM_RAWI_R2_A MTK_M4U_ID(M4U_LARB10_ID, 6)
|
|
||||||
#define M4U_PORT_CAM_RAWI_R5_A MTK_M4U_ID(M4U_LARB10_ID, 7)
|
|
||||||
#define M4U_PORT_CAM_IMGO_R1_B MTK_M4U_ID(M4U_LARB10_ID, 8)
|
|
||||||
#define M4U_PORT_CAM_RRZO_R1_B MTK_M4U_ID(M4U_LARB10_ID, 9)
|
|
||||||
#define M4U_PORT_CAM_LSCI_R1_B MTK_M4U_ID(M4U_LARB10_ID, 10)
|
|
||||||
#define M4U_PORT_CAM_BPCI_R1_B MTK_M4U_ID(M4U_LARB10_ID, 11)
|
|
||||||
#define M4U_PORT_CAM_YUVO_R1_B MTK_M4U_ID(M4U_LARB10_ID, 12)
|
|
||||||
#define M4U_PORT_CAM_UFDI_R2_B MTK_M4U_ID(M4U_LARB10_ID, 13)
|
|
||||||
#define M4U_PORT_CAM_RAWI_R2_B MTK_M4U_ID(M4U_LARB10_ID, 14)
|
|
||||||
#define M4U_PORT_CAM_RAWI_R5_B MTK_M4U_ID(M4U_LARB10_ID, 15)
|
|
||||||
#define M4U_PORT_CAM_CAMSV_0 MTK_M4U_ID(M4U_LARB10_ID, 16)
|
|
||||||
#define M4U_PORT_CAM_AAO_R1_A MTK_M4U_ID(M4U_LARB10_ID, 17)
|
|
||||||
#define M4U_PORT_CAM_AFO_R1_A MTK_M4U_ID(M4U_LARB10_ID, 18)
|
|
||||||
#define M4U_PORT_CAM_FLKO_R1_A MTK_M4U_ID(M4U_LARB10_ID, 19)
|
|
||||||
#define M4U_PORT_CAM_LCESO_R1_A MTK_M4U_ID(M4U_LARB10_ID, 20)
|
|
||||||
#define M4U_PORT_CAM_CRZO_R1_A MTK_M4U_ID(M4U_LARB10_ID, 21)
|
|
||||||
#define M4U_PORT_CAM_AAO_R1_B MTK_M4U_ID(M4U_LARB10_ID, 22)
|
|
||||||
#define M4U_PORT_CAM_AFO_R1_B MTK_M4U_ID(M4U_LARB10_ID, 23)
|
|
||||||
#define M4U_PORT_CAM_FLKO_R1_B MTK_M4U_ID(M4U_LARB10_ID, 24)
|
|
||||||
#define M4U_PORT_CAM_LCESO_R1_B MTK_M4U_ID(M4U_LARB10_ID, 25)
|
|
||||||
#define M4U_PORT_CAM_CRZO_R1_B MTK_M4U_ID(M4U_LARB10_ID, 26)
|
|
||||||
#define M4U_PORT_CAM_LTMSO_R1_A MTK_M4U_ID(M4U_LARB10_ID, 27)
|
|
||||||
#define M4U_PORT_CAM_RSSO_R1_A MTK_M4U_ID(M4U_LARB10_ID, 28)
|
|
||||||
#define M4U_PORT_CAM_LTMSO_R1_B MTK_M4U_ID(M4U_LARB10_ID, 29)
|
|
||||||
#define M4U_PORT_CAM_RSSO_R1_B MTK_M4U_ID(M4U_LARB10_ID, 30)
|
|
||||||
|
|
||||||
/* larb11-CAM-VPU */
|
|
||||||
#define M4U_PORT_CAM_IPUO MTK_M4U_ID(M4U_LARB11_ID, 0)
|
|
||||||
#define M4U_PORT_CAM_IPU2O MTK_M4U_ID(M4U_LARB11_ID, 1)
|
|
||||||
#define M4U_PORT_CAM_IPU3O MTK_M4U_ID(M4U_LARB11_ID, 2)
|
|
||||||
#define M4U_PORT_CAM_IPUI MTK_M4U_ID(M4U_LARB11_ID, 3)
|
|
||||||
#define M4U_PORT_CAM_IPU2I MTK_M4U_ID(M4U_LARB11_ID, 4)
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,190 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
|
||||||
/*
|
|
||||||
* This header provides constants for SERDES MUX for TI SoCs
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _DT_BINDINGS_MUX_TI_SERDES
|
|
||||||
#define _DT_BINDINGS_MUX_TI_SERDES
|
|
||||||
|
|
||||||
/*
|
|
||||||
* These bindings are deprecated, because they do not match the actual
|
|
||||||
* concept of bindings but rather contain pure constants values used only
|
|
||||||
* in DTS board files.
|
|
||||||
* Instead include the header in the DTS source directory.
|
|
||||||
*/
|
|
||||||
#warning "These bindings are deprecated. Instead, use the header in the DTS source directory."
|
|
||||||
|
|
||||||
/* J721E */
|
|
||||||
|
|
||||||
#define J721E_SERDES0_LANE0_QSGMII_LANE1 0x0
|
|
||||||
#define J721E_SERDES0_LANE0_PCIE0_LANE0 0x1
|
|
||||||
#define J721E_SERDES0_LANE0_USB3_0_SWAP 0x2
|
|
||||||
#define J721E_SERDES0_LANE0_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J721E_SERDES0_LANE1_QSGMII_LANE2 0x0
|
|
||||||
#define J721E_SERDES0_LANE1_PCIE0_LANE1 0x1
|
|
||||||
#define J721E_SERDES0_LANE1_USB3_0 0x2
|
|
||||||
#define J721E_SERDES0_LANE1_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J721E_SERDES1_LANE0_QSGMII_LANE3 0x0
|
|
||||||
#define J721E_SERDES1_LANE0_PCIE1_LANE0 0x1
|
|
||||||
#define J721E_SERDES1_LANE0_USB3_1_SWAP 0x2
|
|
||||||
#define J721E_SERDES1_LANE0_SGMII_LANE0 0x3
|
|
||||||
|
|
||||||
#define J721E_SERDES1_LANE1_QSGMII_LANE4 0x0
|
|
||||||
#define J721E_SERDES1_LANE1_PCIE1_LANE1 0x1
|
|
||||||
#define J721E_SERDES1_LANE1_USB3_1 0x2
|
|
||||||
#define J721E_SERDES1_LANE1_SGMII_LANE1 0x3
|
|
||||||
|
|
||||||
#define J721E_SERDES2_LANE0_IP1_UNUSED 0x0
|
|
||||||
#define J721E_SERDES2_LANE0_PCIE2_LANE0 0x1
|
|
||||||
#define J721E_SERDES2_LANE0_USB3_1_SWAP 0x2
|
|
||||||
#define J721E_SERDES2_LANE0_SGMII_LANE0 0x3
|
|
||||||
|
|
||||||
#define J721E_SERDES2_LANE1_IP1_UNUSED 0x0
|
|
||||||
#define J721E_SERDES2_LANE1_PCIE2_LANE1 0x1
|
|
||||||
#define J721E_SERDES2_LANE1_USB3_1 0x2
|
|
||||||
#define J721E_SERDES2_LANE1_SGMII_LANE1 0x3
|
|
||||||
|
|
||||||
#define J721E_SERDES3_LANE0_IP1_UNUSED 0x0
|
|
||||||
#define J721E_SERDES3_LANE0_PCIE3_LANE0 0x1
|
|
||||||
#define J721E_SERDES3_LANE0_USB3_0_SWAP 0x2
|
|
||||||
#define J721E_SERDES3_LANE0_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J721E_SERDES3_LANE1_IP1_UNUSED 0x0
|
|
||||||
#define J721E_SERDES3_LANE1_PCIE3_LANE1 0x1
|
|
||||||
#define J721E_SERDES3_LANE1_USB3_0 0x2
|
|
||||||
#define J721E_SERDES3_LANE1_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J721E_SERDES4_LANE0_EDP_LANE0 0x0
|
|
||||||
#define J721E_SERDES4_LANE0_IP2_UNUSED 0x1
|
|
||||||
#define J721E_SERDES4_LANE0_QSGMII_LANE5 0x2
|
|
||||||
#define J721E_SERDES4_LANE0_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J721E_SERDES4_LANE1_EDP_LANE1 0x0
|
|
||||||
#define J721E_SERDES4_LANE1_IP2_UNUSED 0x1
|
|
||||||
#define J721E_SERDES4_LANE1_QSGMII_LANE6 0x2
|
|
||||||
#define J721E_SERDES4_LANE1_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J721E_SERDES4_LANE2_EDP_LANE2 0x0
|
|
||||||
#define J721E_SERDES4_LANE2_IP2_UNUSED 0x1
|
|
||||||
#define J721E_SERDES4_LANE2_QSGMII_LANE7 0x2
|
|
||||||
#define J721E_SERDES4_LANE2_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J721E_SERDES4_LANE3_EDP_LANE3 0x0
|
|
||||||
#define J721E_SERDES4_LANE3_IP2_UNUSED 0x1
|
|
||||||
#define J721E_SERDES4_LANE3_QSGMII_LANE8 0x2
|
|
||||||
#define J721E_SERDES4_LANE3_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
/* J7200 */
|
|
||||||
|
|
||||||
#define J7200_SERDES0_LANE0_QSGMII_LANE3 0x0
|
|
||||||
#define J7200_SERDES0_LANE0_PCIE1_LANE0 0x1
|
|
||||||
#define J7200_SERDES0_LANE0_IP3_UNUSED 0x2
|
|
||||||
#define J7200_SERDES0_LANE0_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J7200_SERDES0_LANE1_QSGMII_LANE4 0x0
|
|
||||||
#define J7200_SERDES0_LANE1_PCIE1_LANE1 0x1
|
|
||||||
#define J7200_SERDES0_LANE1_IP3_UNUSED 0x2
|
|
||||||
#define J7200_SERDES0_LANE1_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J7200_SERDES0_LANE2_QSGMII_LANE1 0x0
|
|
||||||
#define J7200_SERDES0_LANE2_PCIE1_LANE2 0x1
|
|
||||||
#define J7200_SERDES0_LANE2_IP3_UNUSED 0x2
|
|
||||||
#define J7200_SERDES0_LANE2_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J7200_SERDES0_LANE3_QSGMII_LANE2 0x0
|
|
||||||
#define J7200_SERDES0_LANE3_PCIE1_LANE3 0x1
|
|
||||||
#define J7200_SERDES0_LANE3_USB 0x2
|
|
||||||
#define J7200_SERDES0_LANE3_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
/* AM64 */
|
|
||||||
|
|
||||||
#define AM64_SERDES0_LANE0_PCIE0 0x0
|
|
||||||
#define AM64_SERDES0_LANE0_USB 0x1
|
|
||||||
|
|
||||||
/* J721S2 */
|
|
||||||
|
|
||||||
#define J721S2_SERDES0_LANE0_EDP_LANE0 0x0
|
|
||||||
#define J721S2_SERDES0_LANE0_PCIE1_LANE0 0x1
|
|
||||||
#define J721S2_SERDES0_LANE0_IP3_UNUSED 0x2
|
|
||||||
#define J721S2_SERDES0_LANE0_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J721S2_SERDES0_LANE1_EDP_LANE1 0x0
|
|
||||||
#define J721S2_SERDES0_LANE1_PCIE1_LANE1 0x1
|
|
||||||
#define J721S2_SERDES0_LANE1_USB 0x2
|
|
||||||
#define J721S2_SERDES0_LANE1_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J721S2_SERDES0_LANE2_EDP_LANE2 0x0
|
|
||||||
#define J721S2_SERDES0_LANE2_PCIE1_LANE2 0x1
|
|
||||||
#define J721S2_SERDES0_LANE2_IP3_UNUSED 0x2
|
|
||||||
#define J721S2_SERDES0_LANE2_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J721S2_SERDES0_LANE3_EDP_LANE3 0x0
|
|
||||||
#define J721S2_SERDES0_LANE3_PCIE1_LANE3 0x1
|
|
||||||
#define J721S2_SERDES0_LANE3_USB 0x2
|
|
||||||
#define J721S2_SERDES0_LANE3_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
/* J784S4 */
|
|
||||||
|
|
||||||
#define J784S4_SERDES0_LANE0_IP1_UNUSED 0x0
|
|
||||||
#define J784S4_SERDES0_LANE0_PCIE1_LANE0 0x1
|
|
||||||
#define J784S4_SERDES0_LANE0_IP3_UNUSED 0x2
|
|
||||||
#define J784S4_SERDES0_LANE0_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J784S4_SERDES0_LANE1_IP1_UNUSED 0x0
|
|
||||||
#define J784S4_SERDES0_LANE1_PCIE1_LANE1 0x1
|
|
||||||
#define J784S4_SERDES0_LANE1_IP3_UNUSED 0x2
|
|
||||||
#define J784S4_SERDES0_LANE1_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J784S4_SERDES0_LANE2_PCIE3_LANE0 0x0
|
|
||||||
#define J784S4_SERDES0_LANE2_PCIE1_LANE2 0x1
|
|
||||||
#define J784S4_SERDES0_LANE2_IP3_UNUSED 0x2
|
|
||||||
#define J784S4_SERDES0_LANE2_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J784S4_SERDES0_LANE3_PCIE3_LANE1 0x0
|
|
||||||
#define J784S4_SERDES0_LANE3_PCIE1_LANE3 0x1
|
|
||||||
#define J784S4_SERDES0_LANE3_USB 0x2
|
|
||||||
#define J784S4_SERDES0_LANE3_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J784S4_SERDES1_LANE0_QSGMII_LANE3 0x0
|
|
||||||
#define J784S4_SERDES1_LANE0_PCIE0_LANE0 0x1
|
|
||||||
#define J784S4_SERDES1_LANE0_IP3_UNUSED 0x2
|
|
||||||
#define J784S4_SERDES1_LANE0_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J784S4_SERDES1_LANE1_QSGMII_LANE4 0x0
|
|
||||||
#define J784S4_SERDES1_LANE1_PCIE0_LANE1 0x1
|
|
||||||
#define J784S4_SERDES1_LANE1_IP3_UNUSED 0x2
|
|
||||||
#define J784S4_SERDES1_LANE1_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J784S4_SERDES1_LANE2_QSGMII_LANE1 0x0
|
|
||||||
#define J784S4_SERDES1_LANE2_PCIE0_LANE2 0x1
|
|
||||||
#define J784S4_SERDES1_LANE2_PCIE2_LANE0 0x2
|
|
||||||
#define J784S4_SERDES1_LANE2_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J784S4_SERDES1_LANE3_QSGMII_LANE2 0x0
|
|
||||||
#define J784S4_SERDES1_LANE3_PCIE0_LANE3 0x1
|
|
||||||
#define J784S4_SERDES1_LANE3_PCIE2_LANE1 0x2
|
|
||||||
#define J784S4_SERDES1_LANE3_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J784S4_SERDES2_LANE0_QSGMII_LANE5 0x0
|
|
||||||
#define J784S4_SERDES2_LANE0_IP2_UNUSED 0x1
|
|
||||||
#define J784S4_SERDES2_LANE0_IP3_UNUSED 0x2
|
|
||||||
#define J784S4_SERDES2_LANE0_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J784S4_SERDES2_LANE1_QSGMII_LANE6 0x0
|
|
||||||
#define J784S4_SERDES2_LANE1_IP2_UNUSED 0x1
|
|
||||||
#define J784S4_SERDES2_LANE1_IP3_UNUSED 0x2
|
|
||||||
#define J784S4_SERDES2_LANE1_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J784S4_SERDES2_LANE2_QSGMII_LANE7 0x0
|
|
||||||
#define J784S4_SERDES2_LANE2_QSGMII_LANE1 0x1
|
|
||||||
#define J784S4_SERDES2_LANE2_IP3_UNUSED 0x2
|
|
||||||
#define J784S4_SERDES2_LANE2_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#define J784S4_SERDES2_LANE3_QSGMII_LANE8 0x0
|
|
||||||
#define J784S4_SERDES2_LANE3_QSGMII_LANE2 0x1
|
|
||||||
#define J784S4_SERDES2_LANE3_IP3_UNUSED 0x2
|
|
||||||
#define J784S4_SERDES2_LANE3_IP4_UNUSED 0x3
|
|
||||||
|
|
||||||
#endif /* _DT_BINDINGS_MUX_TI_SERDES */
|
|
||||||
|
|
@ -1,257 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
|
||||||
#ifndef __DTS_MT6397_PINFUNC_H
|
|
||||||
#define __DTS_MT6397_PINFUNC_H
|
|
||||||
|
|
||||||
#include <dt-bindings/pinctrl/mt65xx.h>
|
|
||||||
|
|
||||||
#define MT6397_PIN_0_INT__FUNC_GPIO0 (MTK_PIN_NO(0) | 0)
|
|
||||||
#define MT6397_PIN_0_INT__FUNC_INT (MTK_PIN_NO(0) | 1)
|
|
||||||
|
|
||||||
#define MT6397_PIN_1_SRCVOLTEN__FUNC_GPIO1 (MTK_PIN_NO(1) | 0)
|
|
||||||
#define MT6397_PIN_1_SRCVOLTEN__FUNC_SRCVOLTEN (MTK_PIN_NO(1) | 1)
|
|
||||||
#define MT6397_PIN_1_SRCVOLTEN__FUNC_TEST_CK1 (MTK_PIN_NO(1) | 6)
|
|
||||||
|
|
||||||
#define MT6397_PIN_2_SRCLKEN_PERI__FUNC_GPIO2 (MTK_PIN_NO(2) | 0)
|
|
||||||
#define MT6397_PIN_2_SRCLKEN_PERI__FUNC_SRCLKEN_PERI (MTK_PIN_NO(2) | 1)
|
|
||||||
#define MT6397_PIN_2_SRCLKEN_PERI__FUNC_TEST_CK2 (MTK_PIN_NO(2) | 6)
|
|
||||||
|
|
||||||
#define MT6397_PIN_3_RTC_32K1V8__FUNC_GPIO3 (MTK_PIN_NO(3) | 0)
|
|
||||||
#define MT6397_PIN_3_RTC_32K1V8__FUNC_RTC_32K1V8 (MTK_PIN_NO(3) | 1)
|
|
||||||
#define MT6397_PIN_3_RTC_32K1V8__FUNC_TEST_CK3 (MTK_PIN_NO(3) | 6)
|
|
||||||
|
|
||||||
#define MT6397_PIN_4_WRAP_EVENT__FUNC_GPIO4 (MTK_PIN_NO(4) | 0)
|
|
||||||
#define MT6397_PIN_4_WRAP_EVENT__FUNC_WRAP_EVENT (MTK_PIN_NO(4) | 1)
|
|
||||||
|
|
||||||
#define MT6397_PIN_5_SPI_CLK__FUNC_GPIO5 (MTK_PIN_NO(5) | 0)
|
|
||||||
#define MT6397_PIN_5_SPI_CLK__FUNC_SPI_CLK (MTK_PIN_NO(5) | 1)
|
|
||||||
|
|
||||||
#define MT6397_PIN_6_SPI_CSN__FUNC_GPIO6 (MTK_PIN_NO(6) | 0)
|
|
||||||
#define MT6397_PIN_6_SPI_CSN__FUNC_SPI_CSN (MTK_PIN_NO(6) | 1)
|
|
||||||
|
|
||||||
#define MT6397_PIN_7_SPI_MOSI__FUNC_GPIO7 (MTK_PIN_NO(7) | 0)
|
|
||||||
#define MT6397_PIN_7_SPI_MOSI__FUNC_SPI_MOSI (MTK_PIN_NO(7) | 1)
|
|
||||||
|
|
||||||
#define MT6397_PIN_8_SPI_MISO__FUNC_GPIO8 (MTK_PIN_NO(8) | 0)
|
|
||||||
#define MT6397_PIN_8_SPI_MISO__FUNC_SPI_MISO (MTK_PIN_NO(8) | 1)
|
|
||||||
|
|
||||||
#define MT6397_PIN_9_AUD_CLK_MOSI__FUNC_GPIO9 (MTK_PIN_NO(9) | 0)
|
|
||||||
#define MT6397_PIN_9_AUD_CLK_MOSI__FUNC_AUD_CLK (MTK_PIN_NO(9) | 1)
|
|
||||||
#define MT6397_PIN_9_AUD_CLK_MOSI__FUNC_TEST_IN0 (MTK_PIN_NO(9) | 6)
|
|
||||||
#define MT6397_PIN_9_AUD_CLK_MOSI__FUNC_TEST_OUT0 (MTK_PIN_NO(9) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_10_AUD_DAT_MISO__FUNC_GPIO10 (MTK_PIN_NO(10) | 0)
|
|
||||||
#define MT6397_PIN_10_AUD_DAT_MISO__FUNC_AUD_MISO (MTK_PIN_NO(10) | 1)
|
|
||||||
#define MT6397_PIN_10_AUD_DAT_MISO__FUNC_TEST_IN1 (MTK_PIN_NO(10) | 6)
|
|
||||||
#define MT6397_PIN_10_AUD_DAT_MISO__FUNC_TEST_OUT1 (MTK_PIN_NO(10) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_11_AUD_DAT_MOSI__FUNC_GPIO11 (MTK_PIN_NO(11) | 0)
|
|
||||||
#define MT6397_PIN_11_AUD_DAT_MOSI__FUNC_AUD_MOSI (MTK_PIN_NO(11) | 1)
|
|
||||||
#define MT6397_PIN_11_AUD_DAT_MOSI__FUNC_TEST_IN2 (MTK_PIN_NO(11) | 6)
|
|
||||||
#define MT6397_PIN_11_AUD_DAT_MOSI__FUNC_TEST_OUT2 (MTK_PIN_NO(11) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_12_COL0__FUNC_GPIO12 (MTK_PIN_NO(12) | 0)
|
|
||||||
#define MT6397_PIN_12_COL0__FUNC_COL0_USBDL (MTK_PIN_NO(12) | 1)
|
|
||||||
#define MT6397_PIN_12_COL0__FUNC_EINT10_1X (MTK_PIN_NO(12) | 2)
|
|
||||||
#define MT6397_PIN_12_COL0__FUNC_PWM1_3X (MTK_PIN_NO(12) | 3)
|
|
||||||
#define MT6397_PIN_12_COL0__FUNC_TEST_IN3 (MTK_PIN_NO(12) | 6)
|
|
||||||
#define MT6397_PIN_12_COL0__FUNC_TEST_OUT3 (MTK_PIN_NO(12) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_13_COL1__FUNC_GPIO13 (MTK_PIN_NO(13) | 0)
|
|
||||||
#define MT6397_PIN_13_COL1__FUNC_COL1 (MTK_PIN_NO(13) | 1)
|
|
||||||
#define MT6397_PIN_13_COL1__FUNC_EINT11_1X (MTK_PIN_NO(13) | 2)
|
|
||||||
#define MT6397_PIN_13_COL1__FUNC_SCL0_2X (MTK_PIN_NO(13) | 3)
|
|
||||||
#define MT6397_PIN_13_COL1__FUNC_TEST_IN4 (MTK_PIN_NO(13) | 6)
|
|
||||||
#define MT6397_PIN_13_COL1__FUNC_TEST_OUT4 (MTK_PIN_NO(13) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_14_COL2__FUNC_GPIO14 (MTK_PIN_NO(14) | 0)
|
|
||||||
#define MT6397_PIN_14_COL2__FUNC_COL2 (MTK_PIN_NO(14) | 1)
|
|
||||||
#define MT6397_PIN_14_COL2__FUNC_EINT12_1X (MTK_PIN_NO(14) | 2)
|
|
||||||
#define MT6397_PIN_14_COL2__FUNC_SDA0_2X (MTK_PIN_NO(14) | 3)
|
|
||||||
#define MT6397_PIN_14_COL2__FUNC_TEST_IN5 (MTK_PIN_NO(14) | 6)
|
|
||||||
#define MT6397_PIN_14_COL2__FUNC_TEST_OUT5 (MTK_PIN_NO(14) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_15_COL3__FUNC_GPIO15 (MTK_PIN_NO(15) | 0)
|
|
||||||
#define MT6397_PIN_15_COL3__FUNC_COL3 (MTK_PIN_NO(15) | 1)
|
|
||||||
#define MT6397_PIN_15_COL3__FUNC_EINT13_1X (MTK_PIN_NO(15) | 2)
|
|
||||||
#define MT6397_PIN_15_COL3__FUNC_SCL1_2X (MTK_PIN_NO(15) | 3)
|
|
||||||
#define MT6397_PIN_15_COL3__FUNC_TEST_IN6 (MTK_PIN_NO(15) | 6)
|
|
||||||
#define MT6397_PIN_15_COL3__FUNC_TEST_OUT6 (MTK_PIN_NO(15) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_16_COL4__FUNC_GPIO16 (MTK_PIN_NO(16) | 0)
|
|
||||||
#define MT6397_PIN_16_COL4__FUNC_COL4 (MTK_PIN_NO(16) | 1)
|
|
||||||
#define MT6397_PIN_16_COL4__FUNC_EINT14_1X (MTK_PIN_NO(16) | 2)
|
|
||||||
#define MT6397_PIN_16_COL4__FUNC_SDA1_2X (MTK_PIN_NO(16) | 3)
|
|
||||||
#define MT6397_PIN_16_COL4__FUNC_TEST_IN7 (MTK_PIN_NO(16) | 6)
|
|
||||||
#define MT6397_PIN_16_COL4__FUNC_TEST_OUT7 (MTK_PIN_NO(16) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_17_COL5__FUNC_GPIO17 (MTK_PIN_NO(17) | 0)
|
|
||||||
#define MT6397_PIN_17_COL5__FUNC_COL5 (MTK_PIN_NO(17) | 1)
|
|
||||||
#define MT6397_PIN_17_COL5__FUNC_EINT15_1X (MTK_PIN_NO(17) | 2)
|
|
||||||
#define MT6397_PIN_17_COL5__FUNC_SCL2_2X (MTK_PIN_NO(17) | 3)
|
|
||||||
#define MT6397_PIN_17_COL5__FUNC_TEST_IN8 (MTK_PIN_NO(17) | 6)
|
|
||||||
#define MT6397_PIN_17_COL5__FUNC_TEST_OUT8 (MTK_PIN_NO(17) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_18_COL6__FUNC_GPIO18 (MTK_PIN_NO(18) | 0)
|
|
||||||
#define MT6397_PIN_18_COL6__FUNC_COL6 (MTK_PIN_NO(18) | 1)
|
|
||||||
#define MT6397_PIN_18_COL6__FUNC_EINT16_1X (MTK_PIN_NO(18) | 2)
|
|
||||||
#define MT6397_PIN_18_COL6__FUNC_SDA2_2X (MTK_PIN_NO(18) | 3)
|
|
||||||
#define MT6397_PIN_18_COL6__FUNC_GPIO32K_0 (MTK_PIN_NO(18) | 4)
|
|
||||||
#define MT6397_PIN_18_COL6__FUNC_GPIO26M_0 (MTK_PIN_NO(18) | 5)
|
|
||||||
#define MT6397_PIN_18_COL6__FUNC_TEST_IN9 (MTK_PIN_NO(18) | 6)
|
|
||||||
#define MT6397_PIN_18_COL6__FUNC_TEST_OUT9 (MTK_PIN_NO(18) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_19_COL7__FUNC_GPIO19 (MTK_PIN_NO(19) | 0)
|
|
||||||
#define MT6397_PIN_19_COL7__FUNC_COL7 (MTK_PIN_NO(19) | 1)
|
|
||||||
#define MT6397_PIN_19_COL7__FUNC_EINT17_1X (MTK_PIN_NO(19) | 2)
|
|
||||||
#define MT6397_PIN_19_COL7__FUNC_PWM2_3X (MTK_PIN_NO(19) | 3)
|
|
||||||
#define MT6397_PIN_19_COL7__FUNC_GPIO32K_1 (MTK_PIN_NO(19) | 4)
|
|
||||||
#define MT6397_PIN_19_COL7__FUNC_GPIO26M_1 (MTK_PIN_NO(19) | 5)
|
|
||||||
#define MT6397_PIN_19_COL7__FUNC_TEST_IN10 (MTK_PIN_NO(19) | 6)
|
|
||||||
#define MT6397_PIN_19_COL7__FUNC_TEST_OUT10 (MTK_PIN_NO(19) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_20_ROW0__FUNC_GPIO20 (MTK_PIN_NO(20) | 0)
|
|
||||||
#define MT6397_PIN_20_ROW0__FUNC_ROW0 (MTK_PIN_NO(20) | 1)
|
|
||||||
#define MT6397_PIN_20_ROW0__FUNC_EINT18_1X (MTK_PIN_NO(20) | 2)
|
|
||||||
#define MT6397_PIN_20_ROW0__FUNC_SCL0_3X (MTK_PIN_NO(20) | 3)
|
|
||||||
#define MT6397_PIN_20_ROW0__FUNC_TEST_IN11 (MTK_PIN_NO(20) | 6)
|
|
||||||
#define MT6397_PIN_20_ROW0__FUNC_TEST_OUT11 (MTK_PIN_NO(20) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_21_ROW1__FUNC_GPIO21 (MTK_PIN_NO(21) | 0)
|
|
||||||
#define MT6397_PIN_21_ROW1__FUNC_ROW1 (MTK_PIN_NO(21) | 1)
|
|
||||||
#define MT6397_PIN_21_ROW1__FUNC_EINT19_1X (MTK_PIN_NO(21) | 2)
|
|
||||||
#define MT6397_PIN_21_ROW1__FUNC_SDA0_3X (MTK_PIN_NO(21) | 3)
|
|
||||||
#define MT6397_PIN_21_ROW1__FUNC_AUD_TSTCK (MTK_PIN_NO(21) | 4)
|
|
||||||
#define MT6397_PIN_21_ROW1__FUNC_TEST_IN12 (MTK_PIN_NO(21) | 6)
|
|
||||||
#define MT6397_PIN_21_ROW1__FUNC_TEST_OUT12 (MTK_PIN_NO(21) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_22_ROW2__FUNC_GPIO22 (MTK_PIN_NO(22) | 0)
|
|
||||||
#define MT6397_PIN_22_ROW2__FUNC_ROW2 (MTK_PIN_NO(22) | 1)
|
|
||||||
#define MT6397_PIN_22_ROW2__FUNC_EINT20_1X (MTK_PIN_NO(22) | 2)
|
|
||||||
#define MT6397_PIN_22_ROW2__FUNC_SCL1_3X (MTK_PIN_NO(22) | 3)
|
|
||||||
#define MT6397_PIN_22_ROW2__FUNC_TEST_IN13 (MTK_PIN_NO(22) | 6)
|
|
||||||
#define MT6397_PIN_22_ROW2__FUNC_TEST_OUT13 (MTK_PIN_NO(22) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_23_ROW3__FUNC_GPIO23 (MTK_PIN_NO(23) | 0)
|
|
||||||
#define MT6397_PIN_23_ROW3__FUNC_ROW3 (MTK_PIN_NO(23) | 1)
|
|
||||||
#define MT6397_PIN_23_ROW3__FUNC_EINT21_1X (MTK_PIN_NO(23) | 2)
|
|
||||||
#define MT6397_PIN_23_ROW3__FUNC_SDA1_3X (MTK_PIN_NO(23) | 3)
|
|
||||||
#define MT6397_PIN_23_ROW3__FUNC_TEST_IN14 (MTK_PIN_NO(23) | 6)
|
|
||||||
#define MT6397_PIN_23_ROW3__FUNC_TEST_OUT14 (MTK_PIN_NO(23) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_24_ROW4__FUNC_GPIO24 (MTK_PIN_NO(24) | 0)
|
|
||||||
#define MT6397_PIN_24_ROW4__FUNC_ROW4 (MTK_PIN_NO(24) | 1)
|
|
||||||
#define MT6397_PIN_24_ROW4__FUNC_EINT22_1X (MTK_PIN_NO(24) | 2)
|
|
||||||
#define MT6397_PIN_24_ROW4__FUNC_SCL2_3X (MTK_PIN_NO(24) | 3)
|
|
||||||
#define MT6397_PIN_24_ROW4__FUNC_TEST_IN15 (MTK_PIN_NO(24) | 6)
|
|
||||||
#define MT6397_PIN_24_ROW4__FUNC_TEST_OUT15 (MTK_PIN_NO(24) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_25_ROW5__FUNC_GPIO25 (MTK_PIN_NO(25) | 0)
|
|
||||||
#define MT6397_PIN_25_ROW5__FUNC_ROW5 (MTK_PIN_NO(25) | 1)
|
|
||||||
#define MT6397_PIN_25_ROW5__FUNC_EINT23_1X (MTK_PIN_NO(25) | 2)
|
|
||||||
#define MT6397_PIN_25_ROW5__FUNC_SDA2_3X (MTK_PIN_NO(25) | 3)
|
|
||||||
#define MT6397_PIN_25_ROW5__FUNC_TEST_IN16 (MTK_PIN_NO(25) | 6)
|
|
||||||
#define MT6397_PIN_25_ROW5__FUNC_TEST_OUT16 (MTK_PIN_NO(25) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_26_ROW6__FUNC_GPIO26 (MTK_PIN_NO(26) | 0)
|
|
||||||
#define MT6397_PIN_26_ROW6__FUNC_ROW6 (MTK_PIN_NO(26) | 1)
|
|
||||||
#define MT6397_PIN_26_ROW6__FUNC_EINT24_1X (MTK_PIN_NO(26) | 2)
|
|
||||||
#define MT6397_PIN_26_ROW6__FUNC_PWM3_3X (MTK_PIN_NO(26) | 3)
|
|
||||||
#define MT6397_PIN_26_ROW6__FUNC_GPIO32K_2 (MTK_PIN_NO(26) | 4)
|
|
||||||
#define MT6397_PIN_26_ROW6__FUNC_GPIO26M_2 (MTK_PIN_NO(26) | 5)
|
|
||||||
#define MT6397_PIN_26_ROW6__FUNC_TEST_IN17 (MTK_PIN_NO(26) | 6)
|
|
||||||
#define MT6397_PIN_26_ROW6__FUNC_TEST_OUT17 (MTK_PIN_NO(26) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_27_ROW7__FUNC_GPIO27 (MTK_PIN_NO(27) | 0)
|
|
||||||
#define MT6397_PIN_27_ROW7__FUNC_ROW7 (MTK_PIN_NO(27) | 1)
|
|
||||||
#define MT6397_PIN_27_ROW7__FUNC_EINT3_1X (MTK_PIN_NO(27) | 2)
|
|
||||||
#define MT6397_PIN_27_ROW7__FUNC_CBUS (MTK_PIN_NO(27) | 3)
|
|
||||||
#define MT6397_PIN_27_ROW7__FUNC_GPIO32K_3 (MTK_PIN_NO(27) | 4)
|
|
||||||
#define MT6397_PIN_27_ROW7__FUNC_GPIO26M_3 (MTK_PIN_NO(27) | 5)
|
|
||||||
#define MT6397_PIN_27_ROW7__FUNC_TEST_IN18 (MTK_PIN_NO(27) | 6)
|
|
||||||
#define MT6397_PIN_27_ROW7__FUNC_TEST_OUT18 (MTK_PIN_NO(27) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_28_PWM1__FUNC_GPIO28 (MTK_PIN_NO(28) | 0)
|
|
||||||
#define MT6397_PIN_28_PWM1__FUNC_PWM1 (MTK_PIN_NO(28) | 1)
|
|
||||||
#define MT6397_PIN_28_PWM1__FUNC_EINT4_1X (MTK_PIN_NO(28) | 2)
|
|
||||||
#define MT6397_PIN_28_PWM1__FUNC_GPIO32K_4 (MTK_PIN_NO(28) | 4)
|
|
||||||
#define MT6397_PIN_28_PWM1__FUNC_GPIO26M_4 (MTK_PIN_NO(28) | 5)
|
|
||||||
#define MT6397_PIN_28_PWM1__FUNC_TEST_IN19 (MTK_PIN_NO(28) | 6)
|
|
||||||
#define MT6397_PIN_28_PWM1__FUNC_TEST_OUT19 (MTK_PIN_NO(28) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_29_PWM2__FUNC_GPIO29 (MTK_PIN_NO(29) | 0)
|
|
||||||
#define MT6397_PIN_29_PWM2__FUNC_PWM2 (MTK_PIN_NO(29) | 1)
|
|
||||||
#define MT6397_PIN_29_PWM2__FUNC_EINT5_1X (MTK_PIN_NO(29) | 2)
|
|
||||||
#define MT6397_PIN_29_PWM2__FUNC_GPIO32K_5 (MTK_PIN_NO(29) | 4)
|
|
||||||
#define MT6397_PIN_29_PWM2__FUNC_GPIO26M_5 (MTK_PIN_NO(29) | 5)
|
|
||||||
#define MT6397_PIN_29_PWM2__FUNC_TEST_IN20 (MTK_PIN_NO(29) | 6)
|
|
||||||
#define MT6397_PIN_29_PWM2__FUNC_TEST_OUT20 (MTK_PIN_NO(29) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_30_PWM3__FUNC_GPIO30 (MTK_PIN_NO(30) | 0)
|
|
||||||
#define MT6397_PIN_30_PWM3__FUNC_PWM3 (MTK_PIN_NO(30) | 1)
|
|
||||||
#define MT6397_PIN_30_PWM3__FUNC_EINT6_1X (MTK_PIN_NO(30) | 2)
|
|
||||||
#define MT6397_PIN_30_PWM3__FUNC_COL0 (MTK_PIN_NO(30) | 3)
|
|
||||||
#define MT6397_PIN_30_PWM3__FUNC_GPIO32K_6 (MTK_PIN_NO(30) | 4)
|
|
||||||
#define MT6397_PIN_30_PWM3__FUNC_GPIO26M_6 (MTK_PIN_NO(30) | 5)
|
|
||||||
#define MT6397_PIN_30_PWM3__FUNC_TEST_IN21 (MTK_PIN_NO(30) | 6)
|
|
||||||
#define MT6397_PIN_30_PWM3__FUNC_TEST_OUT21 (MTK_PIN_NO(30) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_31_SCL0__FUNC_GPIO31 (MTK_PIN_NO(31) | 0)
|
|
||||||
#define MT6397_PIN_31_SCL0__FUNC_SCL0 (MTK_PIN_NO(31) | 1)
|
|
||||||
#define MT6397_PIN_31_SCL0__FUNC_EINT7_1X (MTK_PIN_NO(31) | 2)
|
|
||||||
#define MT6397_PIN_31_SCL0__FUNC_PWM1_2X (MTK_PIN_NO(31) | 3)
|
|
||||||
#define MT6397_PIN_31_SCL0__FUNC_TEST_IN22 (MTK_PIN_NO(31) | 6)
|
|
||||||
#define MT6397_PIN_31_SCL0__FUNC_TEST_OUT22 (MTK_PIN_NO(31) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_32_SDA0__FUNC_GPIO32 (MTK_PIN_NO(32) | 0)
|
|
||||||
#define MT6397_PIN_32_SDA0__FUNC_SDA0 (MTK_PIN_NO(32) | 1)
|
|
||||||
#define MT6397_PIN_32_SDA0__FUNC_EINT8_1X (MTK_PIN_NO(32) | 2)
|
|
||||||
#define MT6397_PIN_32_SDA0__FUNC_TEST_IN23 (MTK_PIN_NO(32) | 6)
|
|
||||||
#define MT6397_PIN_32_SDA0__FUNC_TEST_OUT23 (MTK_PIN_NO(32) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_33_SCL1__FUNC_GPIO33 (MTK_PIN_NO(33) | 0)
|
|
||||||
#define MT6397_PIN_33_SCL1__FUNC_SCL1 (MTK_PIN_NO(33) | 1)
|
|
||||||
#define MT6397_PIN_33_SCL1__FUNC_EINT9_1X (MTK_PIN_NO(33) | 2)
|
|
||||||
#define MT6397_PIN_33_SCL1__FUNC_PWM2_2X (MTK_PIN_NO(33) | 3)
|
|
||||||
#define MT6397_PIN_33_SCL1__FUNC_TEST_IN24 (MTK_PIN_NO(33) | 6)
|
|
||||||
#define MT6397_PIN_33_SCL1__FUNC_TEST_OUT24 (MTK_PIN_NO(33) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_34_SDA1__FUNC_GPIO34 (MTK_PIN_NO(34) | 0)
|
|
||||||
#define MT6397_PIN_34_SDA1__FUNC_SDA1 (MTK_PIN_NO(34) | 1)
|
|
||||||
#define MT6397_PIN_34_SDA1__FUNC_EINT0_1X (MTK_PIN_NO(34) | 2)
|
|
||||||
#define MT6397_PIN_34_SDA1__FUNC_TEST_IN25 (MTK_PIN_NO(34) | 6)
|
|
||||||
#define MT6397_PIN_34_SDA1__FUNC_TEST_OUT25 (MTK_PIN_NO(34) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_35_SCL2__FUNC_GPIO35 (MTK_PIN_NO(35) | 0)
|
|
||||||
#define MT6397_PIN_35_SCL2__FUNC_SCL2 (MTK_PIN_NO(35) | 1)
|
|
||||||
#define MT6397_PIN_35_SCL2__FUNC_EINT1_1X (MTK_PIN_NO(35) | 2)
|
|
||||||
#define MT6397_PIN_35_SCL2__FUNC_PWM3_2X (MTK_PIN_NO(35) | 3)
|
|
||||||
#define MT6397_PIN_35_SCL2__FUNC_TEST_IN26 (MTK_PIN_NO(35) | 6)
|
|
||||||
#define MT6397_PIN_35_SCL2__FUNC_TEST_OUT26 (MTK_PIN_NO(35) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_36_SDA2__FUNC_GPIO36 (MTK_PIN_NO(36) | 0)
|
|
||||||
#define MT6397_PIN_36_SDA2__FUNC_SDA2 (MTK_PIN_NO(36) | 1)
|
|
||||||
#define MT6397_PIN_36_SDA2__FUNC_EINT2_1X (MTK_PIN_NO(36) | 2)
|
|
||||||
#define MT6397_PIN_36_SDA2__FUNC_TEST_IN27 (MTK_PIN_NO(36) | 6)
|
|
||||||
#define MT6397_PIN_36_SDA2__FUNC_TEST_OUT27 (MTK_PIN_NO(36) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_37_HDMISD__FUNC_GPIO37 (MTK_PIN_NO(37) | 0)
|
|
||||||
#define MT6397_PIN_37_HDMISD__FUNC_HDMISD (MTK_PIN_NO(37) | 1)
|
|
||||||
#define MT6397_PIN_37_HDMISD__FUNC_TEST_IN28 (MTK_PIN_NO(37) | 6)
|
|
||||||
#define MT6397_PIN_37_HDMISD__FUNC_TEST_OUT28 (MTK_PIN_NO(37) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_38_HDMISCK__FUNC_GPIO38 (MTK_PIN_NO(38) | 0)
|
|
||||||
#define MT6397_PIN_38_HDMISCK__FUNC_HDMISCK (MTK_PIN_NO(38) | 1)
|
|
||||||
#define MT6397_PIN_38_HDMISCK__FUNC_TEST_IN29 (MTK_PIN_NO(38) | 6)
|
|
||||||
#define MT6397_PIN_38_HDMISCK__FUNC_TEST_OUT29 (MTK_PIN_NO(38) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_39_HTPLG__FUNC_GPIO39 (MTK_PIN_NO(39) | 0)
|
|
||||||
#define MT6397_PIN_39_HTPLG__FUNC_HTPLG (MTK_PIN_NO(39) | 1)
|
|
||||||
#define MT6397_PIN_39_HTPLG__FUNC_TEST_IN30 (MTK_PIN_NO(39) | 6)
|
|
||||||
#define MT6397_PIN_39_HTPLG__FUNC_TEST_OUT30 (MTK_PIN_NO(39) | 7)
|
|
||||||
|
|
||||||
#define MT6397_PIN_40_CEC__FUNC_GPIO40 (MTK_PIN_NO(40) | 0)
|
|
||||||
#define MT6397_PIN_40_CEC__FUNC_CEC (MTK_PIN_NO(40) | 1)
|
|
||||||
#define MT6397_PIN_40_CEC__FUNC_TEST_IN31 (MTK_PIN_NO(40) | 6)
|
|
||||||
#define MT6397_PIN_40_CEC__FUNC_TEST_OUT31 (MTK_PIN_NO(40) | 7)
|
|
||||||
|
|
||||||
#endif /* __DTS_MT6397_PINFUNC_H */
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
||||||
|
|
||||||
#ifndef __DT_BINDINGS_RESET_BCM6318_H
|
|
||||||
#define __DT_BINDINGS_RESET_BCM6318_H
|
|
||||||
|
|
||||||
#define BCM6318_RST_SPI 0
|
|
||||||
#define BCM6318_RST_EPHY 1
|
|
||||||
#define BCM6318_RST_SAR 2
|
|
||||||
#define BCM6318_RST_ENETSW 3
|
|
||||||
#define BCM6318_RST_USBD 4
|
|
||||||
#define BCM6318_RST_USBH 5
|
|
||||||
#define BCM6318_RST_PCIE_CORE 6
|
|
||||||
#define BCM6318_RST_PCIE 7
|
|
||||||
#define BCM6318_RST_PCIE_EXT 8
|
|
||||||
#define BCM6318_RST_PCIE_HARD 9
|
|
||||||
#define BCM6318_RST_ADSL 10
|
|
||||||
#define BCM6318_RST_PHYMIPS 11
|
|
||||||
#define BCM6318_RST_HOSTMIPS 12
|
|
||||||
|
|
||||||
#endif /* __DT_BINDINGS_RESET_BCM6318_H */
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
/*
|
|
||||||
* Copyright 2021 NXP
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef DT_BINDING_PCC_RESET_IMX8ULP_H
|
|
||||||
#define DT_BINDING_PCC_RESET_IMX8ULP_H
|
|
||||||
|
|
||||||
/* PCC3 */
|
|
||||||
#define PCC3_WDOG3_SWRST 0
|
|
||||||
#define PCC3_WDOG4_SWRST 1
|
|
||||||
#define PCC3_LPIT1_SWRST 2
|
|
||||||
#define PCC3_TPM4_SWRST 3
|
|
||||||
#define PCC3_TPM5_SWRST 4
|
|
||||||
#define PCC3_FLEXIO1_SWRST 5
|
|
||||||
#define PCC3_I3C2_SWRST 6
|
|
||||||
#define PCC3_LPI2C4_SWRST 7
|
|
||||||
#define PCC3_LPI2C5_SWRST 8
|
|
||||||
#define PCC3_LPUART4_SWRST 9
|
|
||||||
#define PCC3_LPUART5_SWRST 10
|
|
||||||
#define PCC3_LPSPI4_SWRST 11
|
|
||||||
#define PCC3_LPSPI5_SWRST 12
|
|
||||||
|
|
||||||
/* PCC4 */
|
|
||||||
#define PCC4_FLEXSPI2_SWRST 0
|
|
||||||
#define PCC4_TPM6_SWRST 1
|
|
||||||
#define PCC4_TPM7_SWRST 2
|
|
||||||
#define PCC4_LPI2C6_SWRST 3
|
|
||||||
#define PCC4_LPI2C7_SWRST 4
|
|
||||||
#define PCC4_LPUART6_SWRST 5
|
|
||||||
#define PCC4_LPUART7_SWRST 6
|
|
||||||
#define PCC4_SAI4_SWRST 7
|
|
||||||
#define PCC4_SAI5_SWRST 8
|
|
||||||
#define PCC4_USDHC0_SWRST 9
|
|
||||||
#define PCC4_USDHC1_SWRST 10
|
|
||||||
#define PCC4_USDHC2_SWRST 11
|
|
||||||
#define PCC4_USB0_SWRST 12
|
|
||||||
#define PCC4_USB0_PHY_SWRST 13
|
|
||||||
#define PCC4_USB1_SWRST 14
|
|
||||||
#define PCC4_USB1_PHY_SWRST 15
|
|
||||||
#define PCC4_ENET_SWRST 16
|
|
||||||
|
|
||||||
/* PCC5 */
|
|
||||||
#define PCC5_TPM8_SWRST 0
|
|
||||||
#define PCC5_SAI6_SWRST 1
|
|
||||||
#define PCC5_SAI7_SWRST 2
|
|
||||||
#define PCC5_SPDIF_SWRST 3
|
|
||||||
#define PCC5_ISI_SWRST 4
|
|
||||||
#define PCC5_CSI_REGS_SWRST 5
|
|
||||||
#define PCC5_CSI_SWRST 6
|
|
||||||
#define PCC5_DSI_SWRST 7
|
|
||||||
#define PCC5_WDOG5_SWRST 8
|
|
||||||
#define PCC5_EPDC_SWRST 9
|
|
||||||
#define PCC5_PXP_SWRST 10
|
|
||||||
#define PCC5_GPU2D_SWRST 11
|
|
||||||
#define PCC5_GPU3D_SWRST 12
|
|
||||||
#define PCC5_DC_NANO_SWRST 13
|
|
||||||
|
|
||||||
#endif /*DT_BINDING_RESET_IMX8ULP_H */
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef DT_RESET_OXSEMI_OX810SE_H
|
|
||||||
#define DT_RESET_OXSEMI_OX810SE_H
|
|
||||||
|
|
||||||
#define RESET_ARM 0
|
|
||||||
#define RESET_COPRO 1
|
|
||||||
/* Reserved 2 */
|
|
||||||
/* Reserved 3 */
|
|
||||||
#define RESET_USBHS 4
|
|
||||||
#define RESET_USBHSPHY 5
|
|
||||||
#define RESET_MAC 6
|
|
||||||
#define RESET_PCI 7
|
|
||||||
#define RESET_DMA 8
|
|
||||||
#define RESET_DPE 9
|
|
||||||
#define RESET_DDR 10
|
|
||||||
#define RESET_SATA 11
|
|
||||||
#define RESET_SATA_LINK 12
|
|
||||||
#define RESET_SATA_PHY 13
|
|
||||||
/* Reserved 14 */
|
|
||||||
#define RESET_NAND 15
|
|
||||||
#define RESET_GPIO 16
|
|
||||||
#define RESET_UART1 17
|
|
||||||
#define RESET_UART2 18
|
|
||||||
#define RESET_MISC 19
|
|
||||||
#define RESET_I2S 20
|
|
||||||
#define RESET_AHB_MON 21
|
|
||||||
#define RESET_UART3 22
|
|
||||||
#define RESET_UART4 23
|
|
||||||
#define RESET_SGDMA 24
|
|
||||||
/* Reserved 25 */
|
|
||||||
/* Reserved 26 */
|
|
||||||
/* Reserved 27 */
|
|
||||||
/* Reserved 28 */
|
|
||||||
/* Reserved 29 */
|
|
||||||
/* Reserved 30 */
|
|
||||||
#define RESET_BUS 31
|
|
||||||
|
|
||||||
#endif /* DT_RESET_OXSEMI_OX810SE_H */
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef DT_RESET_OXSEMI_OX820_H
|
|
||||||
#define DT_RESET_OXSEMI_OX820_H
|
|
||||||
|
|
||||||
#define RESET_SCU 0
|
|
||||||
#define RESET_LEON 1
|
|
||||||
#define RESET_ARM0 2
|
|
||||||
#define RESET_ARM1 3
|
|
||||||
#define RESET_USBHS 4
|
|
||||||
#define RESET_USBPHYA 5
|
|
||||||
#define RESET_MAC 6
|
|
||||||
#define RESET_PCIEA 7
|
|
||||||
#define RESET_SGDMA 8
|
|
||||||
#define RESET_CIPHER 9
|
|
||||||
#define RESET_DDR 10
|
|
||||||
#define RESET_SATA 11
|
|
||||||
#define RESET_SATA_LINK 12
|
|
||||||
#define RESET_SATA_PHY 13
|
|
||||||
#define RESET_PCIEPHY 14
|
|
||||||
#define RESET_NAND 15
|
|
||||||
#define RESET_GPIO 16
|
|
||||||
#define RESET_UART1 17
|
|
||||||
#define RESET_UART2 18
|
|
||||||
#define RESET_MISC 19
|
|
||||||
#define RESET_I2S 20
|
|
||||||
#define RESET_SD 21
|
|
||||||
#define RESET_MAC_2 22
|
|
||||||
#define RESET_PCIEB 23
|
|
||||||
#define RESET_VIDEO 24
|
|
||||||
#define RESET_DDR_PHY 25
|
|
||||||
#define RESET_USBPHYB 26
|
|
||||||
#define RESET_USBDEV 27
|
|
||||||
/* Reserved 29 */
|
|
||||||
#define RESET_ARMDBG 29
|
|
||||||
#define RESET_PLLA 30
|
|
||||||
#define RESET_PLLB 31
|
|
||||||
|
|
||||||
#endif /* DT_RESET_OXSEMI_OX820_H */
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
|
||||||
#ifndef __AUDIO_JACK_EVENTS_H
|
|
||||||
#define __AUDIO_JACK_EVENTS_H
|
|
||||||
|
|
||||||
#define JACK_HEADPHONE 1
|
|
||||||
#define JACK_MICROPHONE 2
|
|
||||||
#define JACK_LINEOUT 3
|
|
||||||
#define JACK_LINEIN 4
|
|
||||||
|
|
||||||
#endif /* __AUDIO_JACK_EVENTS_H */
|
|
||||||
|
|
@ -1485,6 +1485,13 @@ static inline int of_property_read_s32(const struct device_node *np,
|
||||||
#define for_each_compatible_node(dn, type, compatible) \
|
#define for_each_compatible_node(dn, type, compatible) \
|
||||||
for (dn = of_find_compatible_node(NULL, type, compatible); dn; \
|
for (dn = of_find_compatible_node(NULL, type, compatible); dn; \
|
||||||
dn = of_find_compatible_node(dn, type, compatible))
|
dn = of_find_compatible_node(dn, type, compatible))
|
||||||
|
|
||||||
|
#define for_each_compatible_node_scoped(dn, type, compatible) \
|
||||||
|
for (struct device_node *dn __free(device_node) = \
|
||||||
|
of_find_compatible_node(NULL, type, compatible); \
|
||||||
|
dn; \
|
||||||
|
dn = of_find_compatible_node(dn, type, compatible))
|
||||||
|
|
||||||
#define for_each_matching_node(dn, matches) \
|
#define for_each_matching_node(dn, matches) \
|
||||||
for (dn = of_find_matching_node(NULL, matches); dn; \
|
for (dn = of_find_matching_node(NULL, matches); dn; \
|
||||||
dn = of_find_matching_node(dn, matches))
|
dn = of_find_matching_node(dn, matches))
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,6 @@ ifeq ($(findstring 1,$(KBUILD_EXTRA_WARN)),)
|
||||||
DTC_FLAGS += -Wno-unit_address_vs_reg \
|
DTC_FLAGS += -Wno-unit_address_vs_reg \
|
||||||
-Wno-avoid_unnecessary_addr_size \
|
-Wno-avoid_unnecessary_addr_size \
|
||||||
-Wno-alias_paths \
|
-Wno-alias_paths \
|
||||||
-Wno-graph_child_address \
|
|
||||||
-Wno-interrupt_map \
|
-Wno-interrupt_map \
|
||||||
-Wno-simple_bus_reg
|
-Wno-simple_bus_reg
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -340,6 +340,14 @@ static void check_node_name_format(struct check *c, struct dt_info *dti,
|
||||||
}
|
}
|
||||||
ERROR(node_name_format, check_node_name_format, NULL, &node_name_chars);
|
ERROR(node_name_format, check_node_name_format, NULL, &node_name_chars);
|
||||||
|
|
||||||
|
static void check_node_name_not_empty(struct check *c, struct dt_info *dti,
|
||||||
|
struct node *node)
|
||||||
|
{
|
||||||
|
if (node->basenamelen == 0 && node->parent != NULL)
|
||||||
|
FAIL(c, dti, node, "Empty node name");
|
||||||
|
}
|
||||||
|
ERROR(node_name_not_empty, check_node_name_not_empty, NULL, &node_name_chars);
|
||||||
|
|
||||||
static void check_node_name_vs_property_name(struct check *c,
|
static void check_node_name_vs_property_name(struct check *c,
|
||||||
struct dt_info *dti,
|
struct dt_info *dti,
|
||||||
struct node *node)
|
struct node *node)
|
||||||
|
|
@ -718,11 +726,14 @@ static void check_alias_paths(struct check *c, struct dt_info *dti,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!prop->val.val || !get_node_by_path(dti->dt, prop->val.val)) {
|
/* This check does not work for overlays with external paths */
|
||||||
|
if (!(dti->dtsflags & DTSF_PLUGIN) &&
|
||||||
|
(!prop->val.val || !get_node_by_path(dti->dt, prop->val.val))) {
|
||||||
FAIL_PROP(c, dti, node, prop, "aliases property is not a valid node (%s)",
|
FAIL_PROP(c, dti, node, prop, "aliases property is not a valid node (%s)",
|
||||||
prop->val.val);
|
prop->val.val);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strspn(prop->name, LOWERCASE DIGITS "-") != strlen(prop->name))
|
if (strspn(prop->name, LOWERCASE DIGITS "-") != strlen(prop->name))
|
||||||
FAIL(c, dti, node, "aliases property name must include only lowercase and '-'");
|
FAIL(c, dti, node, "aliases property name must include only lowercase and '-'");
|
||||||
}
|
}
|
||||||
|
|
@ -1894,34 +1905,9 @@ static void check_graph_endpoint(struct check *c, struct dt_info *dti,
|
||||||
}
|
}
|
||||||
WARNING(graph_endpoint, check_graph_endpoint, NULL, &graph_nodes);
|
WARNING(graph_endpoint, check_graph_endpoint, NULL, &graph_nodes);
|
||||||
|
|
||||||
static void check_graph_child_address(struct check *c, struct dt_info *dti,
|
|
||||||
struct node *node)
|
|
||||||
{
|
|
||||||
int cnt = 0;
|
|
||||||
struct node *child;
|
|
||||||
|
|
||||||
if (node->bus != &graph_ports_bus && node->bus != &graph_port_bus)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for_each_child(node, child) {
|
|
||||||
struct property *prop = get_property(child, "reg");
|
|
||||||
|
|
||||||
/* No error if we have any non-zero unit address */
|
|
||||||
if (prop && propval_cell(prop) != 0 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
cnt++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cnt == 1 && node->addr_cells != -1)
|
|
||||||
FAIL(c, dti, node, "graph node has single child node '%s', #address-cells/#size-cells are not necessary",
|
|
||||||
node->children->name);
|
|
||||||
}
|
|
||||||
WARNING(graph_child_address, check_graph_child_address, NULL, &graph_nodes, &graph_port, &graph_endpoint);
|
|
||||||
|
|
||||||
static struct check *check_table[] = {
|
static struct check *check_table[] = {
|
||||||
&duplicate_node_names, &duplicate_property_names,
|
&duplicate_node_names, &duplicate_property_names,
|
||||||
&node_name_chars, &node_name_format, &property_name_chars,
|
&node_name_chars, &node_name_format, &node_name_not_empty, &property_name_chars,
|
||||||
&name_is_string, &name_properties, &node_name_vs_property_name,
|
&name_is_string, &name_properties, &node_name_vs_property_name,
|
||||||
|
|
||||||
&duplicate_label,
|
&duplicate_label,
|
||||||
|
|
@ -2005,7 +1991,7 @@ static struct check *check_table[] = {
|
||||||
|
|
||||||
&alias_paths,
|
&alias_paths,
|
||||||
|
|
||||||
&graph_nodes, &graph_child_address, &graph_port, &graph_endpoint,
|
&graph_nodes, &graph_port, &graph_endpoint,
|
||||||
|
|
||||||
&always_fail,
|
&always_fail,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,7 @@ def parse_compatibles(file, compat_ignore_list):
|
||||||
compat_list += parse_of_functions(data, "_is_compatible")
|
compat_list += parse_of_functions(data, "_is_compatible")
|
||||||
compat_list += parse_of_functions(data, "of_find_compatible_node")
|
compat_list += parse_of_functions(data, "of_find_compatible_node")
|
||||||
compat_list += parse_of_functions(data, "for_each_compatible_node")
|
compat_list += parse_of_functions(data, "for_each_compatible_node")
|
||||||
|
compat_list += parse_of_functions(data, "for_each_compatible_node_scoped")
|
||||||
compat_list += parse_of_functions(data, "of_get_compatible_child")
|
compat_list += parse_of_functions(data, "of_get_compatible_child")
|
||||||
|
|
||||||
return compat_list
|
return compat_list
|
||||||
|
|
|
||||||
|
|
@ -338,9 +338,14 @@ int main(int argc, char *argv[])
|
||||||
if (auto_label_aliases)
|
if (auto_label_aliases)
|
||||||
generate_label_tree(dti, "aliases", false);
|
generate_label_tree(dti, "aliases", false);
|
||||||
|
|
||||||
|
generate_labels_from_tree(dti, "__symbols__");
|
||||||
|
|
||||||
if (generate_symbols)
|
if (generate_symbols)
|
||||||
generate_label_tree(dti, "__symbols__", true);
|
generate_label_tree(dti, "__symbols__", true);
|
||||||
|
|
||||||
|
fixup_phandles(dti, "__fixups__");
|
||||||
|
local_fixup_phandles(dti, "__local_fixups__");
|
||||||
|
|
||||||
if (generate_fixups) {
|
if (generate_fixups) {
|
||||||
generate_fixups_tree(dti, "__fixups__");
|
generate_fixups_tree(dti, "__fixups__");
|
||||||
generate_local_fixups_tree(dti, "__local_fixups__");
|
generate_local_fixups_tree(dti, "__local_fixups__");
|
||||||
|
|
|
||||||
|
|
@ -339,9 +339,12 @@ struct dt_info *build_dt_info(unsigned int dtsflags,
|
||||||
struct reserve_info *reservelist,
|
struct reserve_info *reservelist,
|
||||||
struct node *tree, uint32_t boot_cpuid_phys);
|
struct node *tree, uint32_t boot_cpuid_phys);
|
||||||
void sort_tree(struct dt_info *dti);
|
void sort_tree(struct dt_info *dti);
|
||||||
|
void generate_labels_from_tree(struct dt_info *dti, const char *name);
|
||||||
void generate_label_tree(struct dt_info *dti, const char *name, bool allocph);
|
void generate_label_tree(struct dt_info *dti, const char *name, bool allocph);
|
||||||
void generate_fixups_tree(struct dt_info *dti, const char *name);
|
void generate_fixups_tree(struct dt_info *dti, const char *name);
|
||||||
|
void fixup_phandles(struct dt_info *dti, const char *name);
|
||||||
void generate_local_fixups_tree(struct dt_info *dti, const char *name);
|
void generate_local_fixups_tree(struct dt_info *dti, const char *name);
|
||||||
|
void local_fixup_phandles(struct dt_info *dti, const char *name);
|
||||||
|
|
||||||
/* Checks */
|
/* Checks */
|
||||||
|
|
||||||
|
|
@ -357,6 +360,9 @@ struct dt_info *dt_from_blob(const char *fname);
|
||||||
|
|
||||||
/* Tree source */
|
/* Tree source */
|
||||||
|
|
||||||
|
void property_add_marker(struct property *prop,
|
||||||
|
enum markertype type, unsigned int offset, char *ref);
|
||||||
|
void add_phandle_marker(struct dt_info *dti, struct property *prop, unsigned int offset);
|
||||||
void dt_to_source(FILE *f, struct dt_info *dti);
|
void dt_to_source(FILE *f, struct dt_info *dti);
|
||||||
struct dt_info *dt_from_source(const char *f);
|
struct dt_info *dt_from_source(const char *f);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -807,6 +807,7 @@ struct dt_info *dt_from_blob(const char *fname)
|
||||||
struct node *tree;
|
struct node *tree;
|
||||||
uint32_t val;
|
uint32_t val;
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
|
unsigned int dtsflags = DTSF_V1;
|
||||||
|
|
||||||
f = srcfile_relative_open(fname, NULL);
|
f = srcfile_relative_open(fname, NULL);
|
||||||
|
|
||||||
|
|
@ -919,5 +920,8 @@ struct dt_info *dt_from_blob(const char *fname)
|
||||||
|
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
return build_dt_info(DTSF_V1, reservelist, tree, boot_cpuid_phys);
|
if (get_subnode(tree, "__fixups__") || get_subnode(tree, "__local_fixups__"))
|
||||||
|
dtsflags |= DTSF_PLUGIN;
|
||||||
|
|
||||||
|
return build_dt_info(dtsflags, reservelist, tree, boot_cpuid_phys);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -407,7 +407,8 @@ static int overlay_fixup_phandle(void *fdt, void *fdto, int symbols_off,
|
||||||
const char *fixup_str = value;
|
const char *fixup_str = value;
|
||||||
uint32_t path_len, name_len;
|
uint32_t path_len, name_len;
|
||||||
uint32_t fixup_len;
|
uint32_t fixup_len;
|
||||||
char *sep, *endptr;
|
const char *sep;
|
||||||
|
char *endptr;
|
||||||
int poffset, ret;
|
int poffset, ret;
|
||||||
|
|
||||||
fixup_end = memchr(value, '\0', len);
|
fixup_end = memchr(value, '\0', len);
|
||||||
|
|
|
||||||
|
|
@ -306,8 +306,8 @@ const char *fdt_get_name(const void *fdt, int nodeoffset, int *len)
|
||||||
const char *nameptr;
|
const char *nameptr;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (((err = fdt_ro_probe_(fdt)) < 0)
|
if (!can_assume(VALID_DTB) && (((err = fdt_ro_probe_(fdt)) < 0)
|
||||||
|| ((err = fdt_check_node_offset_(fdt, nodeoffset)) < 0))
|
|| ((err = fdt_check_node_offset_(fdt, nodeoffset)) < 0)))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
nameptr = nh->name;
|
nameptr = nh->name;
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,20 @@ extern "C" {
|
||||||
/* Low-level functions (you probably don't need these) */
|
/* Low-level functions (you probably don't need these) */
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdt_offset_ptr - safely get a byte range within the device tree blob
|
||||||
|
* @fdt: Pointer to the device tree blob
|
||||||
|
* @offset: Offset within the blob to the desired byte range
|
||||||
|
* @checklen: Required length of the byte range
|
||||||
|
*
|
||||||
|
* fdt_offset_ptr() returns a pointer to the byte range of length @checklen at
|
||||||
|
* the given @offset within the device tree blob, after verifying that the byte
|
||||||
|
* range fits entirely within the blob and does not overflow.
|
||||||
|
*
|
||||||
|
* returns:
|
||||||
|
* pointer to the byte range, on success
|
||||||
|
* NULL, if the requested range does not fit within the blob
|
||||||
|
*/
|
||||||
#ifndef SWIG /* This function is not useful in Python */
|
#ifndef SWIG /* This function is not useful in Python */
|
||||||
const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen);
|
const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen);
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -124,6 +138,20 @@ static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen)
|
||||||
return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen);
|
return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdt_next_tag - get next tag in the device tree
|
||||||
|
* @fdt: Pointer to the device tree blob
|
||||||
|
* @offset: Offset within the blob to start searching
|
||||||
|
* @nextoffset: Pointer to variable to store the offset of the next tag
|
||||||
|
*
|
||||||
|
* fdt_next_tag() returns the tag type of the next tag in the device tree
|
||||||
|
* blob starting from the given @offset. If @nextoffset is non-NULL, it will
|
||||||
|
* be set to the offset immediately following the tag.
|
||||||
|
*
|
||||||
|
* returns:
|
||||||
|
* the tag type (FDT_BEGIN_NODE, FDT_END_NODE, FDT_PROP, FDT_NOP, FDT_END),
|
||||||
|
* FDT_END, if offset is out of bounds
|
||||||
|
*/
|
||||||
uint32_t fdt_next_tag(const void *fdt, int offset, int *nextoffset);
|
uint32_t fdt_next_tag(const void *fdt, int offset, int *nextoffset);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -334,6 +362,23 @@ int fdt_move(const void *fdt, void *buf, int bufsize);
|
||||||
/* Read-only functions */
|
/* Read-only functions */
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdt_check_full - check device tree validity
|
||||||
|
* @fdt: pointer to the device tree blob
|
||||||
|
* @bufsize: size of the buffer containing the device tree
|
||||||
|
*
|
||||||
|
* fdt_check_full() checks that the given buffer contains a valid
|
||||||
|
* flattened device tree and that the tree structure is internally
|
||||||
|
* consistent. This is a more thorough check than fdt_check_header().
|
||||||
|
*
|
||||||
|
* returns:
|
||||||
|
* 0, on success
|
||||||
|
* -FDT_ERR_BADMAGIC,
|
||||||
|
* -FDT_ERR_BADVERSION,
|
||||||
|
* -FDT_ERR_BADSTATE,
|
||||||
|
* -FDT_ERR_BADSTRUCTURE,
|
||||||
|
* -FDT_ERR_TRUNCATED, standard meanings
|
||||||
|
*/
|
||||||
int fdt_check_full(const void *fdt, size_t bufsize);
|
int fdt_check_full(const void *fdt, size_t bufsize);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1540,10 +1585,90 @@ int fdt_create_with_flags(void *buf, int bufsize, uint32_t flags);
|
||||||
*/
|
*/
|
||||||
int fdt_create(void *buf, int bufsize);
|
int fdt_create(void *buf, int bufsize);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdt_resize - move and resize a device tree in sequential write state
|
||||||
|
* @fdt: Pointer to the device tree to resize
|
||||||
|
* @buf: Buffer where resized tree should be placed
|
||||||
|
* @bufsize: Size of the buffer at @buf
|
||||||
|
*
|
||||||
|
* fdt_resize() moves the device tree blob from @fdt to @buf and
|
||||||
|
* resizes it to fit in the new buffer size.
|
||||||
|
*
|
||||||
|
* returns:
|
||||||
|
* 0, on success
|
||||||
|
* -FDT_ERR_NOSPACE, if @bufsize is too small
|
||||||
|
* -FDT_ERR_BADMAGIC,
|
||||||
|
* -FDT_ERR_BADVERSION,
|
||||||
|
* -FDT_ERR_BADSTATE, standard meanings
|
||||||
|
*/
|
||||||
int fdt_resize(void *fdt, void *buf, int bufsize);
|
int fdt_resize(void *fdt, void *buf, int bufsize);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdt_add_reservemap_entry - add an entry to the memory reserve map
|
||||||
|
* @fdt: Pointer to the device tree blob
|
||||||
|
* @addr: Start address of the reserve map entry
|
||||||
|
* @size: Size of the reserved region
|
||||||
|
*
|
||||||
|
* fdt_add_reservemap_entry() adds a memory reserve map entry to the
|
||||||
|
* device tree blob during the sequential write process. This function
|
||||||
|
* can only be called after fdt_create() and before fdt_finish_reservemap().
|
||||||
|
*
|
||||||
|
* returns:
|
||||||
|
* 0, on success
|
||||||
|
* -FDT_ERR_NOSPACE, if there is insufficient space in the blob
|
||||||
|
* -FDT_ERR_BADSTATE, if not in the correct sequential write state
|
||||||
|
*/
|
||||||
int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size);
|
int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdt_finish_reservemap - complete the memory reserve map
|
||||||
|
* @fdt: Pointer to the device tree blob
|
||||||
|
*
|
||||||
|
* fdt_finish_reservemap() completes the memory reserve map section
|
||||||
|
* of the device tree blob during sequential write. After calling this
|
||||||
|
* function, no more reserve map entries can be added and the blob
|
||||||
|
* moves to the structure creation phase.
|
||||||
|
*
|
||||||
|
* returns:
|
||||||
|
* 0, on success
|
||||||
|
* -FDT_ERR_BADSTATE, if not in the correct sequential write state
|
||||||
|
*/
|
||||||
int fdt_finish_reservemap(void *fdt);
|
int fdt_finish_reservemap(void *fdt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdt_begin_node - start creation of a new node
|
||||||
|
* @fdt: Pointer to the device tree blob
|
||||||
|
* @name: Name of the node to create
|
||||||
|
*
|
||||||
|
* fdt_begin_node() starts the creation of a new node with the given
|
||||||
|
* @name during sequential write. After calling this function, properties
|
||||||
|
* can be added with fdt_property() and subnodes can be created with
|
||||||
|
* additional fdt_begin_node() calls. The node must be completed with
|
||||||
|
* fdt_end_node().
|
||||||
|
*
|
||||||
|
* returns:
|
||||||
|
* 0, on success
|
||||||
|
* -FDT_ERR_NOSPACE, if there is insufficient space in the blob
|
||||||
|
* -FDT_ERR_BADSTATE, if not in the correct sequential write state
|
||||||
|
*/
|
||||||
int fdt_begin_node(void *fdt, const char *name);
|
int fdt_begin_node(void *fdt, const char *name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdt_property - add a property to the current node
|
||||||
|
* @fdt: Pointer to the device tree blob
|
||||||
|
* @name: Name of the property to add
|
||||||
|
* @val: Pointer to the property value
|
||||||
|
* @len: Length of the property value in bytes
|
||||||
|
*
|
||||||
|
* fdt_property() adds a property with the given @name and value to
|
||||||
|
* the current node during sequential write. This function can only
|
||||||
|
* be called between fdt_begin_node() and fdt_end_node().
|
||||||
|
*
|
||||||
|
* returns:
|
||||||
|
* 0, on success
|
||||||
|
* -FDT_ERR_NOSPACE, if there is insufficient space in the blob
|
||||||
|
* -FDT_ERR_BADSTATE, if not currently within a node
|
||||||
|
*/
|
||||||
int fdt_property(void *fdt, const char *name, const void *val, int len);
|
int fdt_property(void *fdt, const char *name, const void *val, int len);
|
||||||
static inline int fdt_property_u32(void *fdt, const char *name, uint32_t val)
|
static inline int fdt_property_u32(void *fdt, const char *name, uint32_t val)
|
||||||
{
|
{
|
||||||
|
|
@ -1580,15 +1705,94 @@ int fdt_property_placeholder(void *fdt, const char *name, int len, void **valp);
|
||||||
|
|
||||||
#define fdt_property_string(fdt, name, str) \
|
#define fdt_property_string(fdt, name, str) \
|
||||||
fdt_property(fdt, name, str, strlen(str)+1)
|
fdt_property(fdt, name, str, strlen(str)+1)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdt_end_node - complete the current node
|
||||||
|
* @fdt: Pointer to the device tree blob
|
||||||
|
*
|
||||||
|
* fdt_end_node() completes the current node during sequential write. This
|
||||||
|
* function must be called to close each node started with
|
||||||
|
* fdt_begin_node(). After calling this function, no more properties or subnodes
|
||||||
|
* can be added to the node.
|
||||||
|
*
|
||||||
|
* returns:
|
||||||
|
* 0, on success
|
||||||
|
* -FDT_ERR_BADSTATE, if not currently within a node
|
||||||
|
*/
|
||||||
int fdt_end_node(void *fdt);
|
int fdt_end_node(void *fdt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdt_finish - complete device tree creation
|
||||||
|
* @fdt: Pointer to the device tree blob
|
||||||
|
*
|
||||||
|
* fdt_finish() completes the device tree creation process started with
|
||||||
|
* fdt_create(). This function finalizes the device tree blob and makes it ready
|
||||||
|
* for use. After calling this function, the blob is complete and can be used
|
||||||
|
* with libfdt read-only and read-write functions, but not with sequential write
|
||||||
|
* functions.
|
||||||
|
*
|
||||||
|
* returns:
|
||||||
|
* 0, on success
|
||||||
|
* -FDT_ERR_BADSTATE, if the sequential write process is incomplete
|
||||||
|
*/
|
||||||
int fdt_finish(void *fdt);
|
int fdt_finish(void *fdt);
|
||||||
|
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
/* Read-write functions */
|
/* Read-write functions */
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdt_create_empty_tree - create an empty device tree
|
||||||
|
* @buf: Buffer where the empty tree should be created
|
||||||
|
* @bufsize: Size of the buffer at @buf
|
||||||
|
*
|
||||||
|
* fdt_create_empty_tree() creates a minimal empty device tree blob
|
||||||
|
* in the given buffer. The tree contains only a root node with no
|
||||||
|
* properties or subnodes.
|
||||||
|
*
|
||||||
|
* returns:
|
||||||
|
* 0, on success
|
||||||
|
* -FDT_ERR_NOSPACE, if @bufsize is too small for even an empty tree
|
||||||
|
*/
|
||||||
int fdt_create_empty_tree(void *buf, int bufsize);
|
int fdt_create_empty_tree(void *buf, int bufsize);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdt_open_into - move a device tree into a new buffer and make editable
|
||||||
|
* @fdt: Pointer to the device tree to move
|
||||||
|
* @buf: Buffer where the editable tree should be placed
|
||||||
|
* @bufsize: Size of the buffer at @buf
|
||||||
|
*
|
||||||
|
* fdt_open_into() moves and reorganizes the device tree blob from @fdt
|
||||||
|
* into @buf, converting it to a format suitable for read-write operations.
|
||||||
|
* The new buffer should allow space for modifications.
|
||||||
|
*
|
||||||
|
* returns:
|
||||||
|
* 0, on success
|
||||||
|
* -FDT_ERR_NOSPACE, if @bufsize is too small
|
||||||
|
* -FDT_ERR_BADMAGIC,
|
||||||
|
* -FDT_ERR_BADVERSION,
|
||||||
|
* -FDT_ERR_BADSTATE,
|
||||||
|
* -FDT_ERR_BADSTRUCTURE,
|
||||||
|
* -FDT_ERR_TRUNCATED, standard meanings
|
||||||
|
*/
|
||||||
int fdt_open_into(const void *fdt, void *buf, int bufsize);
|
int fdt_open_into(const void *fdt, void *buf, int bufsize);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdt_pack - pack a device tree blob
|
||||||
|
* @fdt: Pointer to the device tree blob
|
||||||
|
*
|
||||||
|
* fdt_pack() reorganizes the device tree blob to eliminate any free space
|
||||||
|
* and pack it into the minimum possible size. This is useful after making
|
||||||
|
* modifications that might have left gaps in the blob.
|
||||||
|
*
|
||||||
|
* returns:
|
||||||
|
* 0, on success
|
||||||
|
* -FDT_ERR_BADMAGIC,
|
||||||
|
* -FDT_ERR_BADVERSION,
|
||||||
|
* -FDT_ERR_BADSTATE,
|
||||||
|
* -FDT_ERR_BADSTRUCTURE,
|
||||||
|
* -FDT_ERR_BADLAYOUT, standard meanings
|
||||||
|
*/
|
||||||
int fdt_pack(void *fdt);
|
int fdt_pack(void *fdt);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2317,6 +2521,16 @@ int fdt_overlay_target_offset(const void *fdt, const void *fdto,
|
||||||
/* Debugging / informational functions */
|
/* Debugging / informational functions */
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdt_strerror - return string description of error code
|
||||||
|
* @errval: Error code returned by a libfdt function
|
||||||
|
*
|
||||||
|
* fdt_strerror() returns a string description of the error code passed
|
||||||
|
* in @errval.
|
||||||
|
*
|
||||||
|
* returns:
|
||||||
|
* pointer to a string describing the error code
|
||||||
|
*/
|
||||||
const char *fdt_strerror(int errval);
|
const char *fdt_strerror(int errval);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
||||||
|
|
@ -66,31 +66,4 @@ static inline fdt64_t cpu_to_fdt64(uint64_t x)
|
||||||
#undef CPU_TO_FDT16
|
#undef CPU_TO_FDT16
|
||||||
#undef EXTRACT_BYTE
|
#undef EXTRACT_BYTE
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
#include <AvailabilityMacros.h>
|
|
||||||
|
|
||||||
/* strnlen() is not available on Mac OS < 10.7 */
|
|
||||||
# if !defined(MAC_OS_X_VERSION_10_7) || (MAC_OS_X_VERSION_MAX_ALLOWED < \
|
|
||||||
MAC_OS_X_VERSION_10_7)
|
|
||||||
|
|
||||||
#define strnlen fdt_strnlen
|
|
||||||
|
|
||||||
/*
|
|
||||||
* fdt_strnlen: returns the length of a string or max_count - which ever is
|
|
||||||
* smallest.
|
|
||||||
* Input 1 string: the string whose size is to be determined
|
|
||||||
* Input 2 max_count: the maximum value returned by this function
|
|
||||||
* Output: length of the string or max_count (the smallest of the two)
|
|
||||||
*/
|
|
||||||
static inline size_t fdt_strnlen(const char *string, size_t max_count)
|
|
||||||
{
|
|
||||||
const char *p = memchr(string, 0, max_count);
|
|
||||||
return p ? p - string : max_count;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* !defined(MAC_OS_X_VERSION_10_7) || (MAC_OS_X_VERSION_MAX_ALLOWED <
|
|
||||||
MAC_OS_X_VERSION_10_7) */
|
|
||||||
|
|
||||||
#endif /* __APPLE__ */
|
|
||||||
|
|
||||||
#endif /* LIBFDT_ENV_H */
|
#endif /* LIBFDT_ENV_H */
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,13 @@
|
||||||
#define FDT_TAGALIGN(x) (FDT_ALIGN((x), FDT_TAGSIZE))
|
#define FDT_TAGALIGN(x) (FDT_ALIGN((x), FDT_TAGSIZE))
|
||||||
|
|
||||||
int32_t fdt_ro_probe_(const void *fdt);
|
int32_t fdt_ro_probe_(const void *fdt);
|
||||||
#define FDT_RO_PROBE(fdt) \
|
#define FDT_RO_PROBE(fdt) \
|
||||||
{ \
|
{ \
|
||||||
int32_t totalsize_; \
|
if (!can_assume(VALID_DTB)) { \
|
||||||
if ((totalsize_ = fdt_ro_probe_(fdt)) < 0) \
|
int32_t totalsize_; \
|
||||||
return totalsize_; \
|
if ((totalsize_ = fdt_ro_probe_(fdt)) < 0) \
|
||||||
|
return totalsize_; \
|
||||||
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
int fdt_check_node_offset_(const void *fdt, int offset);
|
int fdt_check_node_offset_(const void *fdt, int offset);
|
||||||
|
|
@ -92,7 +94,7 @@ static inline uint64_t fdt64_ld_(const fdt64_t *p)
|
||||||
* signature or hash check before using libfdt.
|
* signature or hash check before using libfdt.
|
||||||
*
|
*
|
||||||
* For situations where security is not a concern it may be safe to enable
|
* For situations where security is not a concern it may be safe to enable
|
||||||
* ASSUME_SANE.
|
* ASSUME_PERFECT.
|
||||||
*/
|
*/
|
||||||
enum {
|
enum {
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -340,20 +340,73 @@ void append_to_property(struct node *node,
|
||||||
char *name, const void *data, int len,
|
char *name, const void *data, int len,
|
||||||
enum markertype type)
|
enum markertype type)
|
||||||
{
|
{
|
||||||
struct data d;
|
struct property *p;
|
||||||
|
|
||||||
|
p = get_property(node, name);
|
||||||
|
if (!p) {
|
||||||
|
p = build_property(name, empty_data, NULL);
|
||||||
|
add_property(node, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
p->val = data_add_marker(p->val, type, name);
|
||||||
|
p->val = data_append_data(p->val, data, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int append_unique_str_to_property(struct node *node,
|
||||||
|
char *name, const char *data, int len)
|
||||||
|
{
|
||||||
struct property *p;
|
struct property *p;
|
||||||
|
|
||||||
p = get_property(node, name);
|
p = get_property(node, name);
|
||||||
if (p) {
|
if (p) {
|
||||||
d = data_add_marker(p->val, type, name);
|
const char *s;
|
||||||
d = data_append_data(d, data, len);
|
|
||||||
p->val = d;
|
if (p->val.len && p->val.val[p->val.len - 1] != '\0')
|
||||||
|
/* The current content doesn't look like a string */
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
for (s = p->val.val; s < p->val.val + p->val.len; s = strchr(s, '\0') + 1) {
|
||||||
|
if (strcmp(data, s) == 0)
|
||||||
|
/* data already contained in node.name */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
d = data_add_marker(empty_data, type, name);
|
p = build_property(name, empty_data, NULL);
|
||||||
d = data_append_data(d, data, len);
|
|
||||||
p = build_property(name, d, NULL);
|
|
||||||
add_property(node, p);
|
add_property(node, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p->val = data_add_marker(p->val, TYPE_STRING, name);
|
||||||
|
p->val = data_append_data(p->val, data, len);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int append_unique_u32_to_property(struct node *node, char *name, fdt32_t value)
|
||||||
|
{
|
||||||
|
struct property *p;
|
||||||
|
|
||||||
|
p = get_property(node, name);
|
||||||
|
if (p) {
|
||||||
|
const fdt32_t *v, *val_end = (const fdt32_t *)p->val.val + p->val.len / 4;
|
||||||
|
|
||||||
|
if (p->val.len % 4 != 0)
|
||||||
|
/* The current content doesn't look like a u32 array */
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
for (v = (const void *)p->val.val; v < val_end; v++) {
|
||||||
|
if (*v == value)
|
||||||
|
/* value already contained */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
p = build_property(name, empty_data, NULL);
|
||||||
|
add_property(node, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
p->val = data_add_marker(p->val, TYPE_UINT32, name);
|
||||||
|
p->val = data_append_data(p->val, &value, 4);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct reserve_info *build_reserve_entry(uint64_t address, uint64_t size)
|
struct reserve_info *build_reserve_entry(uint64_t address, uint64_t size)
|
||||||
|
|
@ -918,11 +971,12 @@ static bool any_fixup_tree(struct dt_info *dti, struct node *node)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void add_fixup_entry(struct dt_info *dti, struct node *fn,
|
static int add_fixup_entry(struct dt_info *dti, struct node *fn,
|
||||||
struct node *node, struct property *prop,
|
struct node *node, struct property *prop,
|
||||||
struct marker *m)
|
struct marker *m)
|
||||||
{
|
{
|
||||||
char *entry;
|
char *entry;
|
||||||
|
int ret;
|
||||||
|
|
||||||
/* m->ref can only be a REF_PHANDLE, but check anyway */
|
/* m->ref can only be a REF_PHANDLE, but check anyway */
|
||||||
assert(m->type == REF_PHANDLE);
|
assert(m->type == REF_PHANDLE);
|
||||||
|
|
@ -939,32 +993,39 @@ static void add_fixup_entry(struct dt_info *dti, struct node *fn,
|
||||||
|
|
||||||
xasprintf(&entry, "%s:%s:%u",
|
xasprintf(&entry, "%s:%s:%u",
|
||||||
node->fullpath, prop->name, m->offset);
|
node->fullpath, prop->name, m->offset);
|
||||||
append_to_property(fn, m->ref, entry, strlen(entry) + 1, TYPE_STRING);
|
ret = append_unique_str_to_property(fn, m->ref, entry, strlen(entry) + 1);
|
||||||
|
|
||||||
free(entry);
|
free(entry);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void generate_fixups_tree_internal(struct dt_info *dti,
|
static int generate_fixups_tree_internal(struct dt_info *dti,
|
||||||
struct node *fn,
|
struct node *fn,
|
||||||
struct node *node)
|
struct node *node)
|
||||||
{
|
{
|
||||||
struct node *dt = dti->dt;
|
struct node *dt = dti->dt;
|
||||||
struct node *c;
|
struct node *c;
|
||||||
struct property *prop;
|
struct property *prop;
|
||||||
struct marker *m;
|
struct marker *m;
|
||||||
struct node *refnode;
|
struct node *refnode;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
for_each_property(node, prop) {
|
for_each_property(node, prop) {
|
||||||
m = prop->val.markers;
|
m = prop->val.markers;
|
||||||
for_each_marker_of_type(m, REF_PHANDLE) {
|
for_each_marker_of_type(m, REF_PHANDLE) {
|
||||||
refnode = get_node_by_ref(dt, m->ref);
|
refnode = get_node_by_ref(dt, m->ref);
|
||||||
if (!refnode)
|
if (!refnode)
|
||||||
add_fixup_entry(dti, fn, node, prop, m);
|
if (add_fixup_entry(dti, fn, node, prop, m))
|
||||||
|
ret = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for_each_child(node, c)
|
for_each_child(node, c)
|
||||||
generate_fixups_tree_internal(dti, fn, c);
|
if (generate_fixups_tree_internal(dti, fn, c))
|
||||||
|
ret = -1;
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool any_local_fixup_tree(struct dt_info *dti, struct node *node)
|
static bool any_local_fixup_tree(struct dt_info *dti, struct node *node)
|
||||||
|
|
@ -989,7 +1050,7 @@ static bool any_local_fixup_tree(struct dt_info *dti, struct node *node)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void add_local_fixup_entry(struct dt_info *dti,
|
static int add_local_fixup_entry(struct dt_info *dti,
|
||||||
struct node *lfn, struct node *node,
|
struct node *lfn, struct node *node,
|
||||||
struct property *prop, struct marker *m,
|
struct property *prop, struct marker *m,
|
||||||
struct node *refnode)
|
struct node *refnode)
|
||||||
|
|
@ -1020,30 +1081,56 @@ static void add_local_fixup_entry(struct dt_info *dti,
|
||||||
free(compp);
|
free(compp);
|
||||||
|
|
||||||
value_32 = cpu_to_fdt32(m->offset);
|
value_32 = cpu_to_fdt32(m->offset);
|
||||||
append_to_property(wn, prop->name, &value_32, sizeof(value_32), TYPE_UINT32);
|
return append_unique_u32_to_property(wn, prop->name, value_32);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void generate_local_fixups_tree_internal(struct dt_info *dti,
|
static int generate_local_fixups_tree_internal(struct dt_info *dti,
|
||||||
struct node *lfn,
|
struct node *lfn,
|
||||||
struct node *node)
|
struct node *node)
|
||||||
{
|
{
|
||||||
struct node *dt = dti->dt;
|
struct node *dt = dti->dt;
|
||||||
struct node *c;
|
struct node *c;
|
||||||
struct property *prop;
|
struct property *prop;
|
||||||
struct marker *m;
|
struct marker *m;
|
||||||
struct node *refnode;
|
struct node *refnode;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
for_each_property(node, prop) {
|
for_each_property(node, prop) {
|
||||||
m = prop->val.markers;
|
m = prop->val.markers;
|
||||||
for_each_marker_of_type(m, REF_PHANDLE) {
|
for_each_marker_of_type(m, REF_PHANDLE) {
|
||||||
refnode = get_node_by_ref(dt, m->ref);
|
refnode = get_node_by_ref(dt, m->ref);
|
||||||
if (refnode)
|
if (refnode)
|
||||||
add_local_fixup_entry(dti, lfn, node, prop, m, refnode);
|
if (add_local_fixup_entry(dti, lfn, node, prop, m, refnode))
|
||||||
|
ret = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for_each_child(node, c)
|
for_each_child(node, c)
|
||||||
generate_local_fixups_tree_internal(dti, lfn, c);
|
if (generate_local_fixups_tree_internal(dti, lfn, c))
|
||||||
|
ret = -1;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void generate_labels_from_tree(struct dt_info *dti, const char *name)
|
||||||
|
{
|
||||||
|
struct node *an;
|
||||||
|
struct property *p;
|
||||||
|
|
||||||
|
an = get_subnode(dti->dt, name);
|
||||||
|
if (!an)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for_each_property(an, p) {
|
||||||
|
struct node *labeled_node;
|
||||||
|
|
||||||
|
labeled_node = get_node_by_path(dti->dt, p->val.val);
|
||||||
|
if (labeled_node)
|
||||||
|
add_label(&labeled_node->labels, p->name);
|
||||||
|
else if (quiet < 1)
|
||||||
|
fprintf(stderr, "Warning: Path %s referenced in property %s/%s missing",
|
||||||
|
p->val.val, name, p->name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void generate_label_tree(struct dt_info *dti, const char *name, bool allocph)
|
void generate_label_tree(struct dt_info *dti, const char *name, bool allocph)
|
||||||
|
|
@ -1056,29 +1143,173 @@ void generate_label_tree(struct dt_info *dti, const char *name, bool allocph)
|
||||||
|
|
||||||
void generate_fixups_tree(struct dt_info *dti, const char *name)
|
void generate_fixups_tree(struct dt_info *dti, const char *name)
|
||||||
{
|
{
|
||||||
struct node *n = get_subnode(dti->dt, name);
|
|
||||||
|
|
||||||
/* Start with an empty __fixups__ node to not get duplicates */
|
|
||||||
if (n)
|
|
||||||
n->deleted = true;
|
|
||||||
|
|
||||||
if (!any_fixup_tree(dti, dti->dt))
|
if (!any_fixup_tree(dti, dti->dt))
|
||||||
return;
|
return;
|
||||||
generate_fixups_tree_internal(dti,
|
if (generate_fixups_tree_internal(dti, build_root_node(dti->dt, name), dti->dt))
|
||||||
build_and_name_child_node(dti->dt, name),
|
fprintf(stderr,
|
||||||
dti->dt);
|
"Warning: Preexisting data in %s malformed, some content could not be added.\n",
|
||||||
|
name);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fixup_phandles(struct dt_info *dti, const char *name)
|
||||||
|
{
|
||||||
|
struct node *an;
|
||||||
|
struct property *fp;
|
||||||
|
|
||||||
|
an = get_subnode(dti->dt, name);
|
||||||
|
if (!an)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for_each_property(an, fp) {
|
||||||
|
char *fnext = fp->val.val;
|
||||||
|
char *fv;
|
||||||
|
unsigned int fl;
|
||||||
|
|
||||||
|
while ((fl = fp->val.len - (fnext - fp->val.val))) {
|
||||||
|
char *propname, *soffset;
|
||||||
|
struct node *n;
|
||||||
|
struct property *p;
|
||||||
|
long offset;
|
||||||
|
|
||||||
|
fv = fnext;
|
||||||
|
fnext = memchr(fv, 0, fl);
|
||||||
|
|
||||||
|
if (!fnext) {
|
||||||
|
if (quiet < 1)
|
||||||
|
fprintf(stderr, "Warning: Malformed fixup entry for label %s\n",
|
||||||
|
fp->name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
fnext += 1;
|
||||||
|
|
||||||
|
propname = memchr(fv, ':', fnext - 1 - fv);
|
||||||
|
if (!propname) {
|
||||||
|
if (quiet < 1)
|
||||||
|
fprintf(stderr, "Warning: Malformed fixup entry for label %s\n",
|
||||||
|
fp->name);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
propname++;
|
||||||
|
|
||||||
|
soffset = memchr(propname, ':', fnext - 1 - propname);
|
||||||
|
if (!soffset) {
|
||||||
|
if (quiet < 1)
|
||||||
|
fprintf(stderr, "Warning: Malformed fixup entry for label %s\n",
|
||||||
|
fp->name);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
soffset++;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* temporarily modify the property to not have to create
|
||||||
|
* a copy for the node path.
|
||||||
|
*/
|
||||||
|
*(propname - 1) = '\0';
|
||||||
|
|
||||||
|
n = get_node_by_path(dti->dt, fv);
|
||||||
|
if (!n && quiet < 1)
|
||||||
|
fprintf(stderr, "Warning: Label %s references non-existing node %s\n",
|
||||||
|
fp->name, fv);
|
||||||
|
|
||||||
|
*(propname - 1) = ':';
|
||||||
|
|
||||||
|
if (!n)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* temporarily modify the property to not have to create
|
||||||
|
* a copy for the property name.
|
||||||
|
*/
|
||||||
|
*(soffset - 1) = '\0';
|
||||||
|
|
||||||
|
p = get_property(n, propname);
|
||||||
|
|
||||||
|
if (!p && quiet < 1)
|
||||||
|
fprintf(stderr, "Warning: Label %s references non-existing property %s in node %s\n",
|
||||||
|
fp->name, n->fullpath, propname);
|
||||||
|
|
||||||
|
*(soffset - 1) = ':';
|
||||||
|
|
||||||
|
if (!p)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
offset = strtol(soffset, NULL, 0);
|
||||||
|
if (offset < 0 || offset + 4 > p->val.len) {
|
||||||
|
if (quiet < 1)
|
||||||
|
fprintf(stderr,
|
||||||
|
"Warning: Label %s contains invalid offset for property %s in node %s\n",
|
||||||
|
fp->name, p->name, n->fullpath);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
property_add_marker(p, REF_PHANDLE, offset, fp->name);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void generate_local_fixups_tree(struct dt_info *dti, const char *name)
|
void generate_local_fixups_tree(struct dt_info *dti, const char *name)
|
||||||
{
|
{
|
||||||
struct node *n = get_subnode(dti->dt, name);
|
|
||||||
|
|
||||||
/* Start with an empty __local_fixups__ node to not get duplicates */
|
|
||||||
if (n)
|
|
||||||
n->deleted = true;
|
|
||||||
if (!any_local_fixup_tree(dti, dti->dt))
|
if (!any_local_fixup_tree(dti, dti->dt))
|
||||||
return;
|
return;
|
||||||
generate_local_fixups_tree_internal(dti,
|
if (generate_local_fixups_tree_internal(dti, build_root_node(dti->dt, name), dti->dt))
|
||||||
build_and_name_child_node(dti->dt, name),
|
fprintf(stderr,
|
||||||
dti->dt);
|
"Warning: Preexisting data in %s malformed, some content could not be added.\n",
|
||||||
|
name);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void local_fixup_phandles_node(struct dt_info *dti, struct node *lf, struct node *n)
|
||||||
|
{
|
||||||
|
struct property *lfp;
|
||||||
|
struct node *lfsubnode;
|
||||||
|
|
||||||
|
for_each_property(lf, lfp) {
|
||||||
|
struct property *p = get_property(n, lfp->name);
|
||||||
|
fdt32_t *offsets = (fdt32_t *)lfp->val.val;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
if (!p) {
|
||||||
|
if (quiet < 1)
|
||||||
|
fprintf(stderr, "Warning: Property %s in %s referenced in __local_fixups__ missing\n",
|
||||||
|
lfp->name, n->fullpath);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Each property in the __local_fixups__ tree is a concatenation
|
||||||
|
* of offsets, so it must be a multiple of sizeof(fdt32_t).
|
||||||
|
*/
|
||||||
|
if (lfp->val.len % sizeof(fdt32_t)) {
|
||||||
|
if (quiet < 1)
|
||||||
|
fprintf(stderr, "Warning: property %s in /__local_fixups__%s malformed\n",
|
||||||
|
lfp->name, n->fullpath);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < lfp->val.len / sizeof(fdt32_t); i++)
|
||||||
|
add_phandle_marker(dti, p, dtb_ld32(offsets + i));
|
||||||
|
}
|
||||||
|
|
||||||
|
for_each_child(lf, lfsubnode) {
|
||||||
|
struct node *subnode = get_subnode(n, lfsubnode->name);
|
||||||
|
|
||||||
|
if (!subnode) {
|
||||||
|
if (quiet < 1)
|
||||||
|
fprintf(stderr, "Warning: node %s/%s referenced in __local_fixups__ missing\n",
|
||||||
|
lfsubnode->name, n->fullpath);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
local_fixup_phandles_node(dti, lfsubnode, subnode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void local_fixup_phandles(struct dt_info *dti, const char *name)
|
||||||
|
{
|
||||||
|
struct node *an;
|
||||||
|
|
||||||
|
an = get_subnode(dti->dt, name);
|
||||||
|
if (!an)
|
||||||
|
return;
|
||||||
|
|
||||||
|
local_fixup_phandles_node(dti, an, dti->dt);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,26 @@ static char *shorten_to_initial_path(char *fname)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the given path is an absolute one.
|
||||||
|
*
|
||||||
|
* On Windows, it either needs to begin with a forward slash or with a drive
|
||||||
|
* letter (e.g. "C:").
|
||||||
|
* On all other operating systems, it must begin with a forward slash to be
|
||||||
|
* considered an absolute path.
|
||||||
|
*/
|
||||||
|
static bool is_absolute_path(const char *path)
|
||||||
|
{
|
||||||
|
#ifdef WIN32
|
||||||
|
return (
|
||||||
|
path[0] == '/' ||
|
||||||
|
(((path[0] >= 'A' && path[0] <= 'Z') || (path[0] >= 'a' && path[0] <= 'z')) && path[1] == ':')
|
||||||
|
);
|
||||||
|
#else
|
||||||
|
return (path[0] == '/');
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Try to open a file in a given directory.
|
* Try to open a file in a given directory.
|
||||||
*
|
*
|
||||||
|
|
@ -103,7 +123,7 @@ static char *try_open(const char *dirname, const char *fname, FILE **fp)
|
||||||
{
|
{
|
||||||
char *fullname;
|
char *fullname;
|
||||||
|
|
||||||
if (!dirname || fname[0] == '/')
|
if (!dirname || is_absolute_path(fname))
|
||||||
fullname = xstrdup(fname);
|
fullname = xstrdup(fname);
|
||||||
else
|
else
|
||||||
fullname = join_path(dirname, fname);
|
fullname = join_path(dirname, fname);
|
||||||
|
|
|
||||||
|
|
@ -173,23 +173,59 @@ static struct marker **add_marker(struct marker **mi,
|
||||||
return &nm->next;
|
return &nm->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void add_string_markers(struct property *prop)
|
void property_add_marker(struct property *prop,
|
||||||
|
enum markertype type, unsigned int offset, char *ref)
|
||||||
{
|
{
|
||||||
int l, len = prop->val.len;
|
add_marker(&prop->val.markers, type, offset, ref);
|
||||||
const char *p = prop->val.val;
|
}
|
||||||
|
|
||||||
|
static void add_string_markers(struct property *prop, unsigned int offset, int len)
|
||||||
|
{
|
||||||
|
int l;
|
||||||
|
const char *p = prop->val.val + offset;
|
||||||
struct marker **mi = &prop->val.markers;
|
struct marker **mi = &prop->val.markers;
|
||||||
|
|
||||||
for (l = strlen(p) + 1; l < len; l += strlen(p + l) + 1)
|
for (l = strlen(p) + 1; l < len; l += strlen(p + l) + 1)
|
||||||
mi = add_marker(mi, TYPE_STRING, l, NULL);
|
mi = add_marker(mi, TYPE_STRING, offset + l, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum markertype guess_value_type(struct property *prop)
|
void add_phandle_marker(struct dt_info *dti, struct property *prop, unsigned int offset)
|
||||||
{
|
{
|
||||||
int len = prop->val.len;
|
cell_t phandle;
|
||||||
const char *p = prop->val.val;
|
struct node *refn;
|
||||||
struct marker *m = prop->val.markers;
|
char *ref;
|
||||||
|
|
||||||
|
if (prop->val.len < offset + 4) {
|
||||||
|
if (quiet < 1)
|
||||||
|
fprintf(stderr,
|
||||||
|
"Warning: property %s too short to contain a phandle at offset %u\n",
|
||||||
|
prop->name, offset);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
phandle = dtb_ld32(prop->val.val + offset);
|
||||||
|
refn = get_node_by_phandle(dti->dt, phandle);
|
||||||
|
|
||||||
|
if (!refn) {
|
||||||
|
if (quiet < 1)
|
||||||
|
fprintf(stderr,
|
||||||
|
"Warning: node referenced by phandle 0x%x in property %s not found\n",
|
||||||
|
phandle, prop->name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (refn->labels)
|
||||||
|
ref = refn->labels->label;
|
||||||
|
else
|
||||||
|
ref = refn->fullpath;
|
||||||
|
|
||||||
|
add_marker(&prop->val.markers, REF_PHANDLE, offset, ref);
|
||||||
|
}
|
||||||
|
|
||||||
|
static enum markertype guess_value_type(struct property *prop, unsigned int offset, int len)
|
||||||
|
{
|
||||||
|
const char *p = prop->val.val + offset;
|
||||||
int nnotstring = 0, nnul = 0;
|
int nnotstring = 0, nnul = 0;
|
||||||
int nnotstringlbl = 0, nnotcelllbl = 0;
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
|
|
@ -199,30 +235,49 @@ static enum markertype guess_value_type(struct property *prop)
|
||||||
nnul++;
|
nnul++;
|
||||||
}
|
}
|
||||||
|
|
||||||
for_each_marker_of_type(m, LABEL) {
|
if ((p[len-1] == '\0') && (nnotstring == 0) && (nnul <= len - nnul)) {
|
||||||
if ((m->offset > 0) && (prop->val.val[m->offset - 1] != '\0'))
|
|
||||||
nnotstringlbl++;
|
|
||||||
if ((m->offset % sizeof(cell_t)) != 0)
|
|
||||||
nnotcelllbl++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((p[len-1] == '\0') && (nnotstring == 0) && (nnul <= (len-nnul))
|
|
||||||
&& (nnotstringlbl == 0)) {
|
|
||||||
if (nnul > 1)
|
if (nnul > 1)
|
||||||
add_string_markers(prop);
|
add_string_markers(prop, offset, len);
|
||||||
return TYPE_STRING;
|
return TYPE_STRING;
|
||||||
} else if (((len % sizeof(cell_t)) == 0) && (nnotcelllbl == 0)) {
|
} else if ((len % sizeof(cell_t)) == 0) {
|
||||||
return TYPE_UINT32;
|
return TYPE_UINT32;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TYPE_UINT8;
|
return TYPE_UINT8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void guess_type_markers(struct property *prop)
|
||||||
|
{
|
||||||
|
struct marker **m = &prop->val.markers;
|
||||||
|
unsigned int offset = 0;
|
||||||
|
|
||||||
|
for (m = &prop->val.markers; *m; m = &((*m)->next)) {
|
||||||
|
if (is_type_marker((*m)->type))
|
||||||
|
/* assume the whole property is already marked */
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ((*m)->offset > offset) {
|
||||||
|
m = add_marker(m, guess_value_type(prop, offset, (*m)->offset - offset),
|
||||||
|
offset, NULL);
|
||||||
|
|
||||||
|
offset = (*m)->offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((*m)->type == REF_PHANDLE) {
|
||||||
|
m = add_marker(m, TYPE_UINT32, offset, NULL);
|
||||||
|
offset += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (offset < prop->val.len)
|
||||||
|
add_marker(m, guess_value_type(prop, offset, prop->val.len - offset),
|
||||||
|
offset, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
static void write_propval(FILE *f, struct property *prop)
|
static void write_propval(FILE *f, struct property *prop)
|
||||||
{
|
{
|
||||||
size_t len = prop->val.len;
|
size_t len = prop->val.len;
|
||||||
struct marker *m = prop->val.markers;
|
struct marker *m;
|
||||||
struct marker dummy_marker;
|
|
||||||
enum markertype emit_type = TYPE_NONE;
|
enum markertype emit_type = TYPE_NONE;
|
||||||
char *srcstr;
|
char *srcstr;
|
||||||
|
|
||||||
|
|
@ -241,14 +296,8 @@ static void write_propval(FILE *f, struct property *prop)
|
||||||
|
|
||||||
fprintf(f, " =");
|
fprintf(f, " =");
|
||||||
|
|
||||||
if (!next_type_marker(m)) {
|
guess_type_markers(prop);
|
||||||
/* data type information missing, need to guess */
|
m = prop->val.markers;
|
||||||
dummy_marker.type = guess_value_type(prop);
|
|
||||||
dummy_marker.next = prop->val.markers;
|
|
||||||
dummy_marker.offset = 0;
|
|
||||||
dummy_marker.ref = NULL;
|
|
||||||
m = &dummy_marker;
|
|
||||||
}
|
|
||||||
|
|
||||||
for_each_marker(m) {
|
for_each_marker(m) {
|
||||||
size_t chunk_len = (m->next ? m->next->offset : len) - m->offset;
|
size_t chunk_len = (m->next ? m->next->offset : len) - m->offset;
|
||||||
|
|
@ -369,7 +418,10 @@ void dt_to_source(FILE *f, struct dt_info *dti)
|
||||||
{
|
{
|
||||||
struct reserve_info *re;
|
struct reserve_info *re;
|
||||||
|
|
||||||
fprintf(f, "/dts-v1/;\n\n");
|
fprintf(f, "/dts-v1/;\n");
|
||||||
|
if (dti->dtsflags & DTSF_PLUGIN)
|
||||||
|
fprintf(f, "/plugin/;\n");
|
||||||
|
fprintf(f, "\n");
|
||||||
|
|
||||||
for (re = dti->reservelist; re; re = re->next) {
|
for (re = dti->reservelist; re; re = re->next) {
|
||||||
struct label *l;
|
struct label *l;
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
#define DTC_VERSION "DTC 1.7.2-g52f07dcc"
|
#define DTC_VERSION "DTC 1.7.2-ga26ef640"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue