Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'devicetree-for-4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux

Pull DeviceTree updates from Rob Herring:
"There's a few orphans in the conversion to %pOF printf specifiers
included here that no one else picked up.

Summary:

- Convert more DT code to use of_property_read_* API.

- Improve DT overlay support when adding multiple overlays

- Convert printk's to %pOF format specifiers. Most went via subsystem
trees, but picked up the remaining orphans

- Correct unittests to use preferred "okay" for "status" property
value

- Add a KASLR seed property

- Vendor prefixes for Mellanox, Theobroma System, Adaptrum, Moxa

- Fix modalias buffer handling

- Clean-up of include paths for building dtbs

- Add bindings for amc6821, isl1208, tsl2x7x, srf02, and srf10
devices

- Add nvmem bindings for MediaTek MT7623 and MT7622 SoC

- Add compatible string for Allwinner H5 Mali-450 GPU

- Fix links to old OpenFirmware docs with new mirror on
devicetree.org

- Remove status property from binding doc examples"

* tag 'devicetree-for-4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (45 commits)
devicetree: Adjust status "ok" -> "okay" under drivers/of/
dt-bindings: Remove "status" from examples
dt-bindings: pinctrl: sh-pfc: Use generic node name
dt-bindings: Add vendor Mellanox
dt-binding: net/phy: fix interrupts description
virt: Convert to using %pOF instead of full_name
macintosh: Convert to using %pOF instead of full_name
ide: pmac: Convert to using %pOF instead of full_name
microblaze: Convert to using %pOF instead of full_name
dt-bindings: usb: musb: Grammar s/the/to/, s/is/are/
of: Use PLATFORM_DEVID_NONE definition
of/device: Fix of_device_get_modalias() buffer handling
of/device: Prevent buffer overflow in of_device_modalias()
dt-bindings: add amc6821, isl1208 trivial bindings
dt-bindings: add vendor prefix for Theobroma Systems
of: search scripts/dtc/include-prefixes path for both CPP and DTC
of: remove arch/$(SRCARCH)/boot/dts from include search path for CPP
of: remove drivers/of/testcase-data from include search path for CPP
of: return of_get_cpu_node from of_cpu_device_node_get if CPUs are not registered
iio: srf08: add device tree binding for srf02 and srf10
...

+509 -627
-1
Documentation/devicetree/bindings/arm/arch_timer.txt
··· 108 108 frame-number = <1> 109 109 interrupts = <0 15 0x8>; 110 110 reg = <0xf0003000 0x1000>; 111 - status = "disabled"; 112 111 }; 113 112 };
-1
Documentation/devicetree/bindings/arm/marvell/cp110-system-controller0.txt
··· 183 183 gpio-controller; 184 184 #gpio-cells = <2>; 185 185 gpio-ranges = <&cpm_pinctrl 0 0 32>; 186 - status = "disabled"; 187 186 }; 188 187 189 188 };
-2
Documentation/devicetree/bindings/ata/apm-xgene.txt
··· 57 57 <0x0 0x1f227000 0x0 0x1000>; 58 58 interrupts = <0x0 0x87 0x4>; 59 59 dma-coherent; 60 - status = "ok"; 61 60 clocks = <&sataclk 0>; 62 61 phys = <&phy2 0>; 63 62 phy-names = "sata-phy"; ··· 71 72 <0x0 0x1f237000 0x0 0x1000>; 72 73 interrupts = <0x0 0x88 0x4>; 73 74 dma-coherent; 74 - status = "ok"; 75 75 clocks = <&sataclk 0>; 76 76 phys = <&phy3 0>; 77 77 phy-names = "sata-phy";
-1
Documentation/devicetree/bindings/ata/imx-pata.txt
··· 13 13 reg = <0x83fe0000 0x4000>; 14 14 interrupts = <70>; 15 15 clocks = <&clks 161>; 16 - status = "disabled"; 17 16 };
-3
Documentation/devicetree/bindings/bus/mvebu-mbus.txt
··· 227 227 }; 228 228 229 229 devbus-bootcs { 230 - status = "okay"; 231 230 ranges = <0 MBUS_ID(0x01, 0x2f) 0 0x8000000>; 232 231 233 232 /* NOR */ ··· 239 240 240 241 pcie-controller { 241 242 compatible = "marvell,armada-xp-pcie"; 242 - status = "okay"; 243 243 device_type = "pci"; 244 244 245 245 #address-cells = <3>; ··· 256 258 257 259 pcie@1,0 { 258 260 /* Port 0, Lane 0 */ 259 - status = "okay"; 260 261 }; 261 262 }; 262 263
-2
Documentation/devicetree/bindings/bus/nvidia,tegra20-gmi.txt
··· 84 84 reset-names = "gmi"; 85 85 ranges = <4 0 0xd0000000 0xfffffff>; 86 86 87 - status = "okay"; 88 87 89 88 bus@4,0 { 90 89 compatible = "simple-bus"; ··· 120 121 reset-names = "gmi"; 121 122 ranges = <4 0 0xd0000000 0xfffffff>; 122 123 123 - status = "okay"; 124 124 125 125 can@4,0 { 126 126 reg = <4 0 0x100>;
-1
Documentation/devicetree/bindings/bus/nvidia,tegra210-aconnect.txt
··· 33 33 #size-cells = <1>; 34 34 ranges = <0x702c0000 0x0 0x702c0000 0x00040000>; 35 35 36 - status = "disabled"; 37 36 38 37 child1 { 39 38 ...
+24 -2
Documentation/devicetree/bindings/chosen.txt
··· 5 5 for passing data between firmware and the operating system, like boot 6 6 arguments. Data in the chosen node does not represent the hardware. 7 7 8 + The following properties are recognized: 8 9 9 - stdout-path property 10 - -------------------- 10 + 11 + kaslr-seed 12 + ----------- 13 + 14 + This property is used when booting with CONFIG_RANDOMIZE_BASE as the 15 + entropy used to randomize the kernel image base address location. Since 16 + it is used directly, this value is intended only for KASLR, and should 17 + not be used for other purposes (as it may leak information about KASLR 18 + offsets). It is parsed as a u64 value, e.g. 19 + 20 + / { 21 + chosen { 22 + kaslr-seed = <0xfeedbeef 0xc0def00d>; 23 + }; 24 + }; 25 + 26 + Note that if this property is set from UEFI (or a bootloader in EFI 27 + mode) when EFI_RNG_PROTOCOL is supported, it will be overwritten by 28 + the Linux EFI stub (which will populate the property itself, using 29 + EFI_RNG_PROTOCOL). 30 + 31 + stdout-path 32 + ----------- 11 33 12 34 Device trees may specify the device to be used for boot console output 13 35 with a stdout-path property under /chosen, as described in the Devicetree
-1
Documentation/devicetree/bindings/clock/alphascale,acc.txt
··· 102 102 reg = <0x80010000 0x4000>; 103 103 clocks = <&acc CLKID_SYS_UART4>, <&acc CLKID_AHB_UART4>; 104 104 interrupts = <19>; 105 - status = "disabled"; 106 105 }; 107 106 108 107 Clock consumer with only one, _AHB_ sink.
-1
Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt
··· 41 41 interrupts = <0 90 1>; 42 42 clocks = <&clkc_AO CLKID_AO_UART1>; 43 43 resets = <&clkc_AO RESET_AO_UART1>; 44 - status = "disabled"; 45 44 };
-1
Documentation/devicetree/bindings/clock/amlogic,gxbb-clkc.txt
··· 33 33 reg = <0xc81004c0 0x14>; 34 34 interrupts = <0 90 1>; 35 35 clocks = <&clkc CLKID_CLK81>; 36 - status = "disabled"; 37 36 };
-1
Documentation/devicetree/bindings/clock/amlogic,meson8b-clkc.txt
··· 39 39 reg = <0xc81004c0 0x14>; 40 40 interrupts = <0 90 1>; 41 41 clocks = <&clkc CLKID_CLK81>; 42 - status = "disabled"; 43 42 };
-1
Documentation/devicetree/bindings/clock/brcm,kona-ccu.txt
··· 46 46 47 47 uart@3e002000 { 48 48 compatible = "brcm,bcm11351-dw-apb-uart", "snps,dw-apb-uart"; 49 - status = "disabled"; 50 49 reg = <0x3e002000 0x1000>; 51 50 clocks = <&slave_ccu BCM281XX_SLAVE_CCU_UARTB3>; 52 51 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
-1
Documentation/devicetree/bindings/clock/exynos5433-clock.txt
··· 465 465 clock-names = "uart", "clk_uart_baud0"; 466 466 pinctrl-names = "default"; 467 467 pinctrl-0 = <&uart0_bus>; 468 - status = "disabled"; 469 468 };
-1
Documentation/devicetree/bindings/clock/hi3660-clock.txt
··· 38 38 clocks = <&crg_ctrl HI3660_CLK_MUX_UART0>, 39 39 <&crg_ctrl HI3660_PCLK>; 40 40 clock-names = "uartclk", "apb_pclk"; 41 - status = "disabled"; 42 41 };
-1
Documentation/devicetree/bindings/clock/hix5hd2-clock.txt
··· 27 27 interrupts = <0 49 4>; 28 28 clocks = <&clock HIX5HD2_FIXED_83M>; 29 29 clock-names = "apb_pclk"; 30 - status = "disabled"; 31 30 };
-1
Documentation/devicetree/bindings/clock/imx21-clock.txt
··· 24 24 clocks = <&clks IMX21_CLK_UART1_IPG_GATE>, 25 25 <&clks IMX21_CLK_PER1>; 26 26 clock-names = "ipg", "per"; 27 - status = "disabled"; 28 27 };
-1
Documentation/devicetree/bindings/clock/imx23-clock.txt
··· 67 67 reg = <0x8006c000 0x2000>; 68 68 interrupts = <24 25 23>; 69 69 clocks = <&clks 32>; 70 - status = "disabled"; 71 70 };
-1
Documentation/devicetree/bindings/clock/imx25-clock.txt
··· 157 157 interrupts = <45>; 158 158 clocks = <&clks 79>, <&clks 50>; 159 159 clock-names = "ipg", "per"; 160 - status = "disabled"; 161 160 };
-1
Documentation/devicetree/bindings/clock/imx27-clock.txt
··· 24 24 clocks = <&clks IMX27_CLK_UART1_IPG_GATE>, 25 25 <&clks IMX27_CLK_PER1_GATE>; 26 26 clock-names = "ipg", "per"; 27 - status = "disabled"; 28 27 };
-1
Documentation/devicetree/bindings/clock/imx28-clock.txt
··· 90 90 reg = <0x8006a000 0x2000>; 91 91 interrupts = <112 70 71>; 92 92 clocks = <&clks 45>; 93 - status = "disabled"; 94 93 };
-1
Documentation/devicetree/bindings/clock/imx31-clock.txt
··· 87 87 interrupts = <45>; 88 88 clocks = <&clks 10>, <&clks 30>; 89 89 clock-names = "ipg", "per"; 90 - status = "disabled"; 91 90 };
-1
Documentation/devicetree/bindings/clock/imx5-clock.txt
··· 25 25 interrupts = <82>; 26 26 clocks = <&clks IMX5_CLK_CAN1_IPG_GATE>, <&clks IMX5_CLK_CAN1_SERIAL_GATE>; 27 27 clock-names = "ipg", "per"; 28 - status = "disabled"; 29 28 };
-1
Documentation/devicetree/bindings/clock/imx6q-clock.txt
··· 27 27 interrupts = <0 26 0x04>; 28 28 clocks = <&clks IMX6QDL_CLK_UART_IPG>, <&clks IMX6QDL_CLK_UART_SERIAL>; 29 29 clock-names = "ipg", "per"; 30 - status = "disabled"; 31 30 };
-1
Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
··· 66 66 #clock-cells = <0>; 67 67 clock-output-names = "dfllCPU_out"; 68 68 vdd-cpu-supply = <&vdd_cpu>; 69 - status = "okay"; 70 69 71 70 nvidia,sample-rate = <12500>; 72 71 nvidia,droop-ctrl = <0x00000f00>;
-1
Documentation/devicetree/bindings/clock/pxa-clock.txt
··· 12 12 pxa2xx_clks: pxa2xx_clks@41300004 { 13 13 compatible = "marvell,pxa-clocks"; 14 14 #clock-cells = <1>; 15 - status = "okay"; 16 15 };
-1
Documentation/devicetree/bindings/clock/renesas,cpg-mssr.txt
··· 81 81 dma-names = "tx", "rx"; 82 82 power-domains = <&cpg>; 83 83 resets = <&cpg 310>; 84 - status = "disabled"; 85 84 };
-1
Documentation/devicetree/bindings/clock/renesas,r8a7778-cpg-clocks.txt
··· 44 44 interrupts = <0 87 IRQ_TYPE_LEVEL_HIGH>; 45 45 clocks = <&mstp3_clks R8A7778_CLK_SDHI0>; 46 46 power-domains = <&cpg_clocks>; 47 - status = "disabled"; 48 47 };
-1
Documentation/devicetree/bindings/clock/renesas,rz-cpg-clocks.txt
··· 50 50 clocks = <&mstp3_clks R7S72100_CLK_MTU2>; 51 51 clock-names = "fck"; 52 52 power-domains = <&cpg_clocks>; 53 - status = "disabled"; 54 53 };
-1
Documentation/devicetree/bindings/clock/samsung,s3c2410-clock.txt
··· 46 46 interrupts = <1 23 3 4>, <1 23 4 4>; 47 47 clock-names = "uart", "clk_uart_baud2"; 48 48 clocks = <&clocks PCLK_UART0>, <&clocks PCLK_UART0>; 49 - status = "disabled"; 50 49 };
-1
Documentation/devicetree/bindings/clock/samsung,s3c2412-clock.txt
··· 46 46 clock-names = "uart", "clk_uart_baud2", "clk_uart_baud3"; 47 47 clocks = <&clocks PCLK_UART0>, <&clocks PCLK_UART0>, 48 48 <&clocks SCLK_UART>; 49 - status = "disabled"; 50 49 };
-1
Documentation/devicetree/bindings/clock/samsung,s3c2443-clock.txt
··· 52 52 "clk_uart_baud3"; 53 53 clocks = <&clocks PCLK_UART0>, <&clocks PCLK_UART0>, 54 54 <&clocks SCLK_UART>; 55 - status = "disabled"; 56 55 };
-1
Documentation/devicetree/bindings/clock/samsung,s3c64xx-clock.txt
··· 73 73 "clk_uart_baud3"; 74 74 clocks = <&clock PCLK_UART0>, <&clocks PCLK_UART0>, 75 75 <&clock SCLK_UART>; 76 - status = "disabled"; 77 76 };
-1
Documentation/devicetree/bindings/clock/samsung,s5pv210-clock.txt
··· 74 74 "clk_uart_baud1"; 75 75 clocks = <&clocks UART0>, <&clocks UART0>, 76 76 <&clocks SCLK_UART0>; 77 - status = "disabled"; 78 77 };
+5 -1
Documentation/devicetree/bindings/clock/silabs,si5351.txt
··· 12 12 ==I2C device node== 13 13 14 14 Required properties: 15 - - compatible: shall be one of "silabs,si5351{a,a-msop,b,c}". 15 + - compatible: shall be one of the following: 16 + "silabs,si5351a" - Si5351a, QFN20 package 17 + "silabs,si5351a-msop" - Si5351a, MSOP10 package 18 + "silabs,si5351b" - Si5351b, QFN20 package 19 + "silabs,si5351c" - Si5351c, QFN20 package 16 20 - reg: i2c device address, shall be 0x60 or 0x61. 17 21 - #clock-cells: from common clock binding; shall be set to 1. 18 22 - clocks: from common clock binding; list of parent clock
+3 -4
Documentation/devicetree/bindings/clock/ti,sci-clk.txt
··· 14 14 - compatible: Must be "ti,k2g-sci-clk" 15 15 - #clock-cells: Shall be 2. 16 16 In clock consumers, this cell represents the device ID and clock ID 17 - exposed by the PM firmware. The assignments can be found in the header 18 - files <dt-bindings/genpd/<soc>.h> (which covers the device IDs) and 19 - <dt-bindings/clock/<soc>.h> (which covers the clock IDs), where <soc> 20 - is the SoC involved, for example 'k2g'. 17 + exposed by the PM firmware. The list of valid values for the device IDs 18 + and clocks IDs for 66AK2G SoC are documented at 19 + http://processors.wiki.ti.com/index.php/TISCI#66AK2G02_Data 21 20 22 21 Examples: 23 22 --------
-2
Documentation/devicetree/bindings/clock/ti/dra7-atl.txt
··· 81 81 <&atl_clkin2_ck>, <&atl_clkin3_ck>; 82 82 clocks = <&atl_gfclk_mux>; 83 83 clock-names = "fck"; 84 - status = "disabled"; 85 84 }; 86 85 87 86 #include <dt-bindings/clk/ti-dra7-atl.h> 88 87 89 88 &atl { 90 - status = "okay"; 91 89 92 90 atl2 { 93 91 bws = <DRA7_ATL_WS_MCASP2_FSX>;
-1
Documentation/devicetree/bindings/clock/zx296702-clk.txt
··· 31 31 reg = <0x09405000 0x1000>; 32 32 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; 33 33 clocks = <&lsp1clk ZX296702_UART0_PCLK>; 34 - status = "disabled"; 35 34 };
-1
Documentation/devicetree/bindings/clock/zx296718-clk.txt
··· 34 34 #phy-cells = <0>; 35 35 clocks = <&topclk USB20_PHY_CLK>; 36 36 clock-names = "phyclk"; 37 - status = "okay"; 38 37 };
-1
Documentation/devicetree/bindings/crypto/fsl-dcp.txt
··· 13 13 compatible = "fsl,imx28-dcp", "fsl,imx23-dcp"; 14 14 reg = <0x80028000 0x2000>; 15 15 interrupts = <52 53>; 16 - status = "okay"; 17 16 };
-1
Documentation/devicetree/bindings/crypto/inside-secure-safexcel.txt
··· 23 23 interrupt-names = "mem", "ring0", "ring1", "ring2", "ring3", 24 24 "eip"; 25 25 clocks = <&cpm_syscon0 1 26>; 26 - status = "disabled"; 27 26 };
-1
Documentation/devicetree/bindings/crypto/marvell-cesa.txt
··· 41 41 clock-names = "cesa0", "cesa1"; 42 42 marvell,crypto-srams = <&crypto_sram0>, <&crypto_sram1>; 43 43 marvell,crypto-sram-size = <0x600>; 44 - status = "okay"; 45 44 };
-1
Documentation/devicetree/bindings/crypto/mv_cesa.txt
··· 29 29 interrupts = <22>; 30 30 marvell,crypto-srams = <&crypto_sram>; 31 31 marvell,crypto-sram-size = <0x600>; 32 - status = "okay"; 33 32 };
-1
Documentation/devicetree/bindings/crypto/rockchip-crypto.txt
··· 25 25 clock-names = "aclk", "hclk", "sclk", "apb_pclk"; 26 26 resets = <&cru SRST_CRYPTO>; 27 27 reset-names = "crypto-rst"; 28 - status = "okay"; 29 28 };
-1
Documentation/devicetree/bindings/devfreq/event/rockchip-dfi.txt
··· 15 15 rockchip,pmu = <&pmugrf>; 16 16 clocks = <&cru PCLK_DDR_MON>; 17 17 clock-names = "pclk_ddr_mon"; 18 - status = "disabled"; 19 18 };
-1
Documentation/devicetree/bindings/devfreq/rk3399_dmc.txt
··· 205 205 rockchip,phy_lpddr4_ck_cs_drv = <PHY_DRV_ODT_80>; 206 206 rockchip,phy_lpddr4_dq_drv = <PHY_DRV_ODT_80>; 207 207 rockchip,phy_lpddr4_odt = <PHY_DRV_ODT_60>; 208 - status = "disabled"; 209 208 };
-1
Documentation/devicetree/bindings/display/atmel,lcdc.txt
··· 34 34 pinctrl-names = "default"; 35 35 pinctrl-0 = <&pinctrl_fb>; 36 36 display = <&display0>; 37 - status = "okay"; 38 37 #address-cells = <1>; 39 38 #size-cells = <1>; 40 39
-1
Documentation/devicetree/bindings/display/atmel/hlcdc-dc.txt
··· 23 23 interrupts = <36 IRQ_TYPE_LEVEL_HIGH 0>; 24 24 clocks = <&lcdc_clk>, <&lcdck>, <&clk32k>; 25 25 clock-names = "periph_clk","sys_clk", "slow_clk"; 26 - status = "disabled"; 27 26 28 27 hlcdc-display-controller { 29 28 compatible = "atmel,hlcdc-display-controller";
-1
Documentation/devicetree/bindings/display/bridge/megachips-stdpxxxx-ge-b850v3-fw.txt
··· 33 33 Example: 34 34 35 35 &mux2_i2c2 { 36 - status = "okay"; 37 36 clock-frequency = <100000>; 38 37 39 38 stdp4028@73 {
-1
Documentation/devicetree/bindings/display/bridge/renesas,dw-hdmi.txt
··· 43 43 clocks = <&cpg CPG_CORE R8A7795_CLK_S0D4>, <&cpg CPG_MOD 729>; 44 44 clock-names = "iahb", "isfr"; 45 45 power-domains = <&sysc R8A7795_PD_ALWAYS_ON>; 46 - status = "disabled"; 47 46 48 47 ports { 49 48 #address-cells = <1>;
-1
Documentation/devicetree/bindings/display/fsl,tcon.txt
··· 14 14 reg = <0x4003d000 0x1000>; 15 15 clocks = <&clks VF610_CLK_TCON0>; 16 16 clock-names = "ipg"; 17 - status = "okay"; 18 17 };
+1 -1
Documentation/devicetree/bindings/display/imx/fsl-imx-drm.txt
··· 116 116 Required properties: 117 117 - compatible: Should be "fsl,imx-parallel-display" 118 118 Optional properties: 119 - - interface_pix_fmt: How this display is connected to the 119 + - interface-pix-fmt: How this display is connected to the 120 120 display interface. Currently supported types: "rgb24", "rgb565", "bgr666" 121 121 and "lvds666". 122 122 - edid: verbatim EDID data block describing attached display.
-1
Documentation/devicetree/bindings/display/marvell,pxa2xx-lcdc.txt
··· 23 23 reg = <0x44000000 0x10000>; 24 24 interrupts = <17>; 25 25 clocks = <&clks CLK_LCD>; 26 - status = "okay"; 27 26 28 27 port { 29 28 lcdc_out: endpoint {
-1
Documentation/devicetree/bindings/display/panel/innolux,p079zca.txt
··· 18 18 power-supply = <...>; 19 19 backlight = <&backlight>; 20 20 enable-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>; 21 - status = "okay"; 22 21 }; 23 22 };
-1
Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt
··· 59 59 pinctrl-names = "default"; 60 60 pinctrl-0 = <&edp_hpd>; 61 61 62 - status = "disabled"; 63 62 64 63 ports { 65 64 #address-cells = <1>;
-1
Documentation/devicetree/bindings/display/rockchip/dw_hdmi-rockchip.txt
··· 46 46 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; 47 47 clocks = <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>; 48 48 clock-names = "iahb", "isfr"; 49 - status = "disabled"; 50 49 ports { 51 50 hdmi_in: port { 52 51 #address-cells = <1>;
-2
Documentation/devicetree/bindings/display/rockchip/dw_mipi_dsi_rockchip.txt
··· 36 36 resets = <&cru SRST_MIPIDSI0>; 37 37 reset-names = "apb"; 38 38 rockchip,grf = <&grf>; 39 - status = "okay"; 40 39 41 40 ports { 42 41 #address-cells = <1>; ··· 64 65 pinctrl-names = "default"; 65 66 pinctrl-0 = <&lcd_en>; 66 67 backlight = <&backlight>; 67 - status = "okay"; 68 68 }; 69 69 };
-1
Documentation/devicetree/bindings/display/rockchip/inno_hdmi-rockchip.txt
··· 25 25 clock-names = "pclk"; 26 26 pinctrl-names = "default"; 27 27 pinctrl-0 = <&hdmi_ctl>; 28 - status = "disabled"; 29 28 30 29 hdmi_in: port { 31 30 #address-cells = <1>;
-1
Documentation/devicetree/bindings/display/simple-framebuffer-sunxi.txt
··· 28 28 allwinner,pipeline = "de_be0-lcd0-hdmi"; 29 29 clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 43>, 30 30 <&ahb_gates 44>; 31 - status = "disabled"; 32 31 }; 33 32 };
-1
Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
··· 278 278 <&dma SUN4I_DMA_NORMAL 16>, 279 279 <&dma SUN4I_DMA_DEDICATED 24>; 280 280 dma-names = "ddc-tx", "ddc-rx", "audio-tx"; 281 - status = "disabled"; 282 281 283 282 ports { 284 283 #address-cells = <1>;
-1
Documentation/devicetree/bindings/dma/fsl-edma.txt
··· 72 72 dma-names = "tx", "rx"; 73 73 dmas = <&edma0 0 21>, 74 74 <&edma0 0 20>; 75 - status = "disabled"; 76 75 };
-1
Documentation/devicetree/bindings/dma/mv-xor.txt
··· 30 30 reg = <0xd0060900 0x100 31 31 0xd0060b00 0x100>; 32 32 clocks = <&coreclk 0>; 33 - status = "okay"; 34 33 35 34 xor00 { 36 35 interrupts = <51>;
-1
Documentation/devicetree/bindings/dma/qcom_adm.txt
··· 48 48 Example: 49 49 50 50 spi4: spi@1a280000 { 51 - status = "ok"; 52 51 spi-max-frequency = <50000000>; 53 52 54 53 pinctrl-0 = <&spi_pins>;
-1
Documentation/devicetree/bindings/dma/snps-dma.txt
··· 63 63 compatible = "arm,pl011", "arm,primecell"; 64 64 reg = <0xe0000000 0x1000>; 65 65 interrupts = <0 35 0x4>; 66 - status = "disabled"; 67 66 dmas = <&dmahost 12 0 1>, 68 67 <&dmahost 13 0 1 0>; 69 68 dma-names = "rx", "rx";
-1
Documentation/devicetree/bindings/dma/st_fdma.txt
··· 69 69 70 70 sti_uni_player2: sti-uni-player@2 { 71 71 compatible = "st,sti-uni-player"; 72 - status = "disabled"; 73 72 #sound-dai-cells = <0>; 74 73 st,syscfg = <&syscfg_core>; 75 74 clocks = <&clk_s_d0_flexgen CLK_PCM_2>;
-1
Documentation/devicetree/bindings/dma/ste-dma40.txt
··· 135 135 <&dma 13 0 0x0>; /* Logical - MemToDev */ 136 136 dma-names = "rx", "rx"; 137 137 138 - status = "disabled"; 139 138 };
-1
Documentation/devicetree/bindings/dma/sun4i-dma.txt
··· 40 40 clock-names = "ahb", "mod"; 41 41 dmas = <&dma 1 29>, <&dma 1 28>; 42 42 dma-names = "rx", "tx"; 43 - status = "disabled"; 44 43 #address-cells = <1>; 45 44 #size-cells = <0>; 46 45 };
-1
Documentation/devicetree/bindings/dma/ti-dma-crossbar.txt
··· 62 62 interrupts-extended = <&gic GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; 63 63 ti,hwmods = "uart1"; 64 64 clock-frequency = <48000000>; 65 - status = "disabled"; 66 65 /* Requesting crossbar input 49 and 50 */ 67 66 dmas = <&sdma_xbar 49>, <&sdma_xbar 50>; 68 67 dma-names = "tx", "rx";
-1
Documentation/devicetree/bindings/dma/ti-edma.txt
··· 102 102 reg-names = "mpu", "dat"; 103 103 interrupts = <80>, <81>; 104 104 interrupt-names = "tx", "rx"; 105 - status = "disabled"; 106 105 /* DMA channels 8 and 9 executed on eDMA TC2 - high priority queue */ 107 106 dmas = <&edma 8 2>, 108 107 <&edma 9 2>;
-1
Documentation/devicetree/bindings/fpga/xilinx-slave-serial.txt
··· 31 31 cell-index = <1>; 32 32 interrupts = <92>; 33 33 clocks = <&coreclk 0>; 34 - status = "okay"; 35 34 36 35 fpga_mgr_spi: fpga-mgr@0 { 37 36 compatible = "xlnx,fpga-slave-serial";
-1
Documentation/devicetree/bindings/gpio/gpio-mpc8xxx.txt
··· 23 23 #gpio-cells = <2>; 24 24 reg = <0x1100 0x080>; 25 25 interrupts = <78 0x8>; 26 - status = "okay"; 27 26 }; 28 27 29 28 Example of gpio-controller node for a ls2080a SoC:
-1
Documentation/devicetree/bindings/gpio/spear_spics.txt
··· 42 42 43 43 44 44 spi0: spi@e0100000 { 45 - status = "okay"; 46 45 num-cs = <3>; 47 46 cs-gpios = <&gpio1 7 0>, <&spics 0>, 48 47 <&spics 1>;
+5
Documentation/devicetree/bindings/gpu/arm,mali-utgard.txt
··· 10 10 * And, optionally, one of the vendor specific compatible: 11 11 + allwinner,sun4i-a10-mali 12 12 + allwinner,sun7i-a20-mali 13 + + allwinner,sun50i-h5-mali 13 14 + amlogic,meson-gxbb-mali 14 15 + amlogic,meson-gxl-mali 15 16 + stericsson,db8500-mali ··· 56 55 * resets: phandle to the reset line for the GPU 57 56 58 57 - allwinner,sun7i-a20-mali 58 + Required properties: 59 + * resets: phandle to the reset line for the GPU 60 + 61 + - allwinner,sun50i-h5-mali 59 62 Required properties: 60 63 * resets: phandle to the reset line for the GPU 61 64
-3
Documentation/devicetree/bindings/gpu/nvidia,gk20a.txt
··· 51 51 resets = <&tegra_car 184>; 52 52 reset-names = "gpu"; 53 53 iommus = <&mc TEGRA_SWGROUP_GPU>; 54 - status = "disabled"; 55 54 }; 56 55 57 56 Example for GM20B: ··· 69 70 resets = <&tegra_car 184>; 70 71 reset-names = "gpu"; 71 72 iommus = <&mc TEGRA_SWGROUP_GPU>; 72 - status = "disabled"; 73 73 }; 74 74 75 75 Example for GP10B: ··· 87 89 reset-names = "gpu"; 88 90 power-domains = <&bpmp TEGRA186_POWER_DOMAIN_GPU>; 89 91 iommus = <&smmu TEGRA186_SID_GPU>; 90 - status = "disabled"; 91 92 };
-1
Documentation/devicetree/bindings/gpu/samsung-g2d.txt
··· 24 24 interrupts = <0 89 0>; 25 25 clocks = <&clock 177>, <&clock 277>; 26 26 clock-names = "sclk_fimg2d", "fimg2d"; 27 - status = "disabled"; 28 27 };
-1
Documentation/devicetree/bindings/hsi/omap-ssi.txt
··· 92 92 interrupts = <69>, 93 93 <70>; 94 94 95 - status = "disabled"; /* second port is not used on N900 */ 96 95 } 97 96 }
-1
Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.txt
··· 102 102 #address-cells = <1>; 103 103 #size-cells = <0>; 104 104 compatible = "i2c-gpio"; 105 - status = "disabled"; 106 105 gpios = <&gpio5 6 GPIO_ACTIVE_HIGH /* sda */ 107 106 &gpio5 5 GPIO_ACTIVE_HIGH /* scl */ 108 107 >;
-1
Documentation/devicetree/bindings/i2c/i2c-efm32.txt
··· 22 22 interrupts = <9>; 23 23 clocks = <&cmu clk_HFPERCLKI2C0>; 24 24 clock-frequency = <100000>; 25 - status = "ok"; 26 25 energymicro,location = <3>; 27 26 28 27 eeprom@50 {
-1
Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt
··· 71 71 reset-names = "i2c"; 72 72 dmas = <&apbdma 16>, <&apbdma 16>; 73 73 dma-names = "rx", "tx"; 74 - status = "disabled"; 75 74 };
-1
Documentation/devicetree/bindings/iio/adc/brcm,iproc-static-adc.txt
··· 37 37 clocks = <&asiu_clks BCM_CYGNUS_ASIU_ADC_CLK>; 38 38 clock-names = "tsc_clk"; 39 39 interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>; 40 - status = "disabled"; 41 40 };
-1
Documentation/devicetree/bindings/iio/adc/lpc1850-adc.txt
··· 17 17 clocks = <&ccu1 CLK_APB3_ADC0>; 18 18 vref-supply = <&reg_vdda>; 19 19 resets = <&rgu 40>; 20 - status = "disabled"; 21 20 };
-1
Documentation/devicetree/bindings/iio/dac/lpc1850-dac.txt
··· 16 16 clocks = <&ccu1 CLK_APB3_DAC>; 17 17 vref-supply = <&reg_vdda>; 18 18 resets = <&rgu 42>; 19 - status = "disabled"; 20 19 };
-1
Documentation/devicetree/bindings/input/brcm,bcm-keypad.txt
··· 72 72 /* Required Board specific properties */ 73 73 keypad,num-rows = <5>; 74 74 keypad,num-columns = <5>; 75 - status = "okay"; 76 75 77 76 linux,keymap = <MATRIX_KEY(0x00, 0x02, KEY_F) /* key_forward */ 78 77 MATRIX_KEY(0x00, 0x03, KEY_HOME) /* key_home */
+1 -1
Documentation/devicetree/bindings/input/ti,drv260x.txt
··· 43 43 mode = <DRV260X_LRA_MODE>; 44 44 library-sel = <DRV260X_LIB_LRA>; 45 45 vib-rated-mv = <3200>; 46 - vib-overdriver-mv = <3200>; 46 + vib-overdrive-mv = <3200>; 47 47 } 48 48 49 49 For more product information please see the link below:
-1
Documentation/devicetree/bindings/input/touchscreen/colibri-vf50-ts.txt
··· 32 32 pinctrl-1 = <&pinctrl_touchctrl_default>; 33 33 pinctrl-2 = <&pinctrl_touchctrl_gpios>; 34 34 vf50-ts-min-pressure = <200>; 35 - status = "disabled"; 36 35 };
-1
Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt
··· 35 35 measure-delay-time = <0xfff>; 36 36 pre-charge-time = <0xffff>; 37 37 touchscreen-average-samples = <32>; 38 - status = "okay"; 39 38 };
-1
Documentation/devicetree/bindings/media/pxa-camera.txt
··· 24 24 clock-frequency = <50000000>; 25 25 clock-output-names = "qci_mclk"; 26 26 27 - status = "okay"; 28 27 29 28 port { 30 29 #address-cells = <1>;
-1
Documentation/devicetree/bindings/media/s5p-cec.txt
··· 33 33 hdmi-phandle = <&hdmi>; 34 34 pinctrl-names = "default"; 35 35 pinctrl-0 = <&hdmi_cec>; 36 - status = "okay"; 37 36 };
-2
Documentation/devicetree/bindings/media/samsung-fimc.txt
··· 166 166 clock-output-names = "cam_a_clkout", "cam_b_clkout"; 167 167 pinctrl-names = "default"; 168 168 pinctrl-0 = <&cam_port_a_clk_active>; 169 - status = "okay"; 170 169 #address-cells = <1>; 171 170 #size-cells = <1>; 172 171 ··· 188 189 compatible = "samsung,exynos4210-fimc"; 189 190 reg = <0x11800000 0x1000>; 190 191 interrupts = <0 85 0>; 191 - status = "okay"; 192 192 }; 193 193 194 194 csis_0: csis@11880000 {
-1
Documentation/devicetree/bindings/media/stih407-c8sectpfe.txt
··· 52 52 53 53 c8sectpfe@08a20000 { 54 54 compatible = "st,stih407-c8sectpfe"; 55 - status = "okay"; 56 55 reg = <0x08a20000 0x10000>, <0x08a00000 0x4000>; 57 56 reg-names = "stfe", "stfe-ram"; 58 57 interrupts = <GIC_SPI 34 IRQ_TYPE_NONE>, <GIC_SPI 35 IRQ_TYPE_NONE>;
-1
Documentation/devicetree/bindings/media/ti,da850-vpif.txt
··· 59 59 tvp5147@5d { 60 60 compatible = "ti,tvp5147"; 61 61 reg = <0x5d>; 62 - status = "okay"; 63 62 64 63 port { 65 64 composite_in: endpoint {
-1
Documentation/devicetree/bindings/memory-controllers/mvebu-devbus.txt
··· 130 130 Example: 131 131 132 132 devbus-bootcs@d0010400 { 133 - status = "okay"; 134 133 ranges = <0 0xf0000000 0x1000000>; /* @addr 0xf0000000, size 0x1000000 */ 135 134 #address-cells = <1>; 136 135 #size-cells = <1>;
-2
Documentation/devicetree/bindings/mfd/act8945a.txt
··· 12 12 pmic@5b { 13 13 compatible = "active-semi,act8945a"; 14 14 reg = <0x5b>; 15 - status = "okay"; 16 15 17 16 active-semi,vsel-high; 18 17 ··· 78 79 active-semi,input-voltage-threshold-microvolt = <6600>; 79 80 active-semi,precondition-timeout = <40>; 80 81 active-semi,total-timeout = <3>; 81 - status = "okay"; 82 82 }; 83 83 };
-1
Documentation/devicetree/bindings/mfd/atmel-hlcdc.txt
··· 25 25 clocks = <&lcdc_clk>, <&lcdck>, <&clk32k>; 26 26 clock-names = "periph_clk","sys_clk", "slow_clk"; 27 27 interrupts = <36 IRQ_TYPE_LEVEL_HIGH 0>; 28 - status = "disabled"; 29 28 30 29 hlcdc-display-controller { 31 30 compatible = "atmel,hlcdc-display-controller";
-1
Documentation/devicetree/bindings/mfd/da9052-i2c.txt
··· 37 37 Examples: 38 38 39 39 i2c@63fc8000 { /* I2C1 */ 40 - status = "okay"; 41 40 42 41 pmic: dialog@48 { 43 42 compatible = "dlg,da9053-aa";
-1
Documentation/devicetree/bindings/mfd/mc13xxx.txt
··· 116 116 fsl,spi-num-chipselects = <2>; 117 117 cs-gpios = <&gpio4 24 0>, /* GPIO4_24 */ 118 118 <&gpio4 25 0>; /* GPIO4_25 */ 119 - status = "okay"; 120 119 121 120 pmic: mc13892@0 { 122 121 #address-cells = <1>;
-2
Documentation/devicetree/bindings/mfd/mxs-lradc.txt
··· 26 26 compatible = "fsl,imx23-lradc"; 27 27 reg = <0x80050000 0x2000>; 28 28 interrupts = <36 37 38 39 40 41 42 43 44>; 29 - status = "okay"; 30 29 fsl,lradc-touchscreen-wires = <4>; 31 30 fsl,ave-ctrl = <4>; 32 31 fsl,ave-delay = <2>; ··· 38 39 compatible = "fsl,imx28-lradc"; 39 40 reg = <0x80050000 0x2000>; 40 41 interrupts = <10 14 15 16 17 18 19 20 21 22 23 24 25>; 41 - status = "okay"; 42 42 fsl,lradc-touchscreen-wires = <5>; 43 43 fsl,ave-ctrl = <4>; 44 44 fsl,ave-delay = <2>;
-2
Documentation/devicetree/bindings/mfd/samsung,exynos5433-lpass.txt
··· 57 57 clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; 58 58 pinctrl-names = "default"; 59 59 pinctrl-0 = <&i2s0_bus>; 60 - status = "disabled"; 61 60 }; 62 61 63 62 serial_3: serial@11460000 { ··· 68 69 clock-names = "uart", "clk_uart_baud0"; 69 70 pinctrl-names = "default"; 70 71 pinctrl-0 = <&uart_aud_bus>; 71 - status = "disabled"; 72 72 }; 73 73 };
-1
Documentation/devicetree/bindings/misc/atmel-ssc.txt
··· 47 47 dma-names = "tx", "rx"; 48 48 pinctrl-names = "default"; 49 49 pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>; 50 - status = "disabled"; 51 50 };
-1
Documentation/devicetree/bindings/mmc/arasan,sdhci.txt
··· 74 74 phys = <&emmc_phy>; 75 75 phy-names = "phy_arasan"; 76 76 #clock-cells = <0>; 77 - status = "disabled"; 78 77 };
-1
Documentation/devicetree/bindings/mmc/davinci_mmc.txt
··· 24 24 compatible = "ti,da830-mmc", 25 25 reg = <0x40000 0x1000>; 26 26 interrupts = <16>; 27 - status = "okay"; 28 27 bus-width = <4>; 29 28 max-frequency = <50000000>; 30 29 dmas = <&edma 16
-1
Documentation/devicetree/bindings/mmc/fsl-imx-mmc.txt
··· 20 20 dma-names = "rx-tx"; 21 21 bus-width = <4>; 22 22 cd-gpios = <&gpio3 29>; 23 - status = "okay"; 24 23 };
-1
Documentation/devicetree/bindings/mmc/mmc-card.txt
··· 21 21 vmmc-supply = <&reg_vcc3v3>; 22 22 bus-width = <8>; 23 23 non-removable; 24 - status = "okay"; 25 24 26 25 mmccard: mmccard@0 { 27 26 reg = <0>;
-1
Documentation/devicetree/bindings/mmc/mmc.txt
··· 153 153 bus-width = <4>; 154 154 non-removable; 155 155 mmc-pwrseq = <&sdhci0_pwrseq> 156 - status = "okay"; 157 156 158 157 brcmf: bcrmf@1 { 159 158 reg = <1>;
-1
Documentation/devicetree/bindings/mmc/orion-sdio.txt
··· 13 13 reg = <0xd00d4000 0x200>; 14 14 interrupts = <54>; 15 15 clocks = <&gateclk 17>; 16 - status = "disabled"; 17 16 };
-3
Documentation/devicetree/bindings/mmc/sdhci-st.txt
··· 63 63 64 64 mmc0: sdhci@fe81e000 { 65 65 compatible = "st,sdhci"; 66 - status = "disabled"; 67 66 reg = <0xfe81e000 0x1000>; 68 67 interrupts = <GIC_SPI 127 IRQ_TYPE_NONE>; 69 68 interrupt-names = "mmcirq"; ··· 76 77 77 78 mmc1: sdhci@09080000 { 78 79 compatible = "st,sdhci-stih407", "st,sdhci"; 79 - status = "disabled"; 80 80 reg = <0x09080000 0x7ff>; 81 81 reg-names = "mmc"; 82 82 interrupts = <GIC_SPI 90 IRQ_TYPE_NONE>; ··· 92 94 93 95 mmc0: sdhci@09060000 { 94 96 compatible = "st,sdhci-stih407", "st,sdhci"; 95 - status = "disabled"; 96 97 reg = <0x09060000 0x7ff>, <0x9061008 0x20>; 97 98 reg-names = "mmc", "top-mmc-delay"; 98 99 interrupts = <GIC_SPI 92 IRQ_TYPE_NONE>;
-1
Documentation/devicetree/bindings/mmc/zx-dw-mshc.txt
··· 28 28 max-frequency = <50000000>; 29 29 cap-sdio-irq; 30 30 cap-sd-highspeed; 31 - status = "disabled"; 32 31 };
-1
Documentation/devicetree/bindings/mtd/atmel-quadspi.txt
··· 24 24 #size-cells = <0>; 25 25 pinctrl-names = "default"; 26 26 pinctrl-0 = <&pinctrl_spi0_default>; 27 - status = "okay"; 28 27 29 28 m25p80@0 { 30 29 ...
-1
Documentation/devicetree/bindings/mtd/mtk-quadspi.txt
··· 37 37 clock-names = "spi", "sf"; 38 38 #address-cells = <1>; 39 39 #size-cells = <0>; 40 - status = "disabled"; 41 40 42 41 flash@0 { 43 42 compatible = "jedec,spi-nor";
-1
Documentation/devicetree/bindings/mtd/st-fsm.txt
··· 21 21 st,syscfg = <&syscfg_rear>; 22 22 st,boot-device-reg = <0x958>; 23 23 st,boot-device-spi = <0x1a>; 24 - status = "okay"; 25 24 }; 26 25
-1
Documentation/devicetree/bindings/mtd/sunxi-nand.txt
··· 41 41 #size-cells = <0>; 42 42 pinctrl-names = "default"; 43 43 pinctrl-0 = <&nand_pins_a &nand_cs0_pins_a &nand_rb0_pins_a>; 44 - status = "okay"; 45 44 46 45 nand@0 { 47 46 reg = <0>;
-1
Documentation/devicetree/bindings/net/brcm,amac.txt
··· 27 27 <0x18110000 0x1000>; 28 28 reg-names = "amac_base", "idm_base"; 29 29 interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>; 30 - status = "disabled"; 31 30 };
-1
Documentation/devicetree/bindings/net/btusb.txt
··· 29 29 Following example uses irq pin number 3 of gpio0 for out of band wake-on-bt: 30 30 31 31 &usb_host1_ehci { 32 - status = "okay"; 33 32 #address-cells = <1>; 34 33 #size-cells = <0>; 35 34
-1
Documentation/devicetree/bindings/net/can/m_can.txt
··· 56 56 <&clks IMX6SX_CLK_CANFD>; 57 57 clock-names = "hclk", "cclk"; 58 58 bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>; 59 - status = "disabled"; 60 59 }; 61 60 62 61 Board dts:
-2
Documentation/devicetree/bindings/net/dsa/ksz.txt
··· 24 24 pinctrl-0 = <&pinctrl_spi_ksz>; 25 25 cs-gpios = <&pioC 25 0>; 26 26 id = <1>; 27 - status = "okay"; 28 27 29 28 ksz9477: ksz9477@0 { 30 29 compatible = "microchip,ksz9477"; ··· 33 34 spi-cpha; 34 35 spi-cpol; 35 36 36 - status = "okay"; 37 37 ports { 38 38 #address-cells = <1>; 39 39 #size-cells = <0>;
-3
Documentation/devicetree/bindings/net/dsa/lan9303.txt
··· 27 27 I2C managed mode: 28 28 29 29 master: masterdevice@X { 30 - status = "okay"; 31 30 32 31 fixed-link { /* RMII fixed link to LAN9303 */ 33 32 speed = <100>; ··· 37 38 switch: switch@a { 38 39 compatible = "smsc,lan9303-i2c"; 39 40 reg = <0xa>; 40 - status = "okay"; 41 41 reset-gpios = <&gpio7 6 GPIO_ACTIVE_LOW>; 42 42 reset-duration = <200>; 43 43 ··· 65 67 MDIO managed mode: 66 68 67 69 master: masterdevice@X { 68 - status = "okay"; 69 70 phy-handle = <&switch>; 70 71 71 72 mdio {
-1
Documentation/devicetree/bindings/net/ftgmac100.txt
··· 30 30 compatible = "aspeed,ast2500-mac", "faraday,ftgmac100"; 31 31 reg = <0x1e660000 0x180>; 32 32 interrupts = <2>; 33 - status = "okay"; 34 33 use-ncsi; 35 34 };
-1
Documentation/devicetree/bindings/net/marvell-armada-370-neta.txt
··· 41 41 interrupts = <8>; 42 42 clocks = <&gate_clk 4>; 43 43 tx-csum-limit = <9800> 44 - status = "okay"; 45 44 phy = <&phy0>; 46 45 phy-mode = "rgmii-id"; 47 46 buffer-manager = <&bm>;
-2
Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt
··· 44 44 below example). 45 45 46 46 &mmc3 { 47 - status = "okay"; 48 47 vmmc-supply = <&wlan_en_reg>; 49 48 bus-width = <4>; 50 49 cap-power-off-card; ··· 69 70 Example for USB device: 70 71 71 72 &usb_host1_ohci { 72 - status = "okay"; 73 73 #address-cells = <1>; 74 74 #size-cells = <0>; 75 75
-2
Documentation/devicetree/bindings/net/marvell-neta-bm.txt
··· 31 31 reg = <0xc8000 0xac>; 32 32 clocks = <&gateclk 13>; 33 33 internal-mem = <&bm_bppi>; 34 - status = "okay"; 35 34 pool2,capacity = <4096>; 36 35 pool1,pkt-size = <512>; 37 36 }; ··· 44 45 #address-cells = <1>; 45 46 #size-cells = <1>; 46 47 clocks = <&gateclk 13>; 47 - status = "okay"; 48 48 };
-3
Documentation/devicetree/bindings/net/marvell-pp2.txt
··· 57 57 <0xc5000 0x100>; 58 58 clocks = <&gateclk 3>, <&gateclk 19>; 59 59 clock-names = "pp_clk", "gop_clk"; 60 - status = "okay"; 61 60 62 61 eth0: eth0@c4000 { 63 62 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; 64 63 port-id = <0>; 65 - status = "okay"; 66 64 phy = <&phy0>; 67 65 phy-mode = "gmii"; 68 66 }; ··· 68 70 eth1: eth1@c5000 { 69 71 interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; 70 72 port-id = <1>; 71 - status = "okay"; 72 73 phy = <&phy3>; 73 74 phy-mode = "gmii"; 74 75 };
-1
Documentation/devicetree/bindings/net/meson-dwmac.txt
··· 66 66 <&clkc CLKID_MPLL2>; 67 67 clock-names = "stmmaceth", "clkin0", "clkin1"; 68 68 phy-mode = "rgmii"; 69 - status = "disabled"; 70 69 };
-1
Documentation/devicetree/bindings/net/micrel-ksz90x1.txt
··· 69 69 }; 70 70 }; 71 71 ethernet@70000 { 72 - status = "okay"; 73 72 phy = <&phy0>; 74 73 phy-mode = "rgmii-id"; 75 74 };
-1
Documentation/devicetree/bindings/net/microchip,enc28j60.txt
··· 33 33 compatible = "fsl,imx28-spi"; 34 34 pinctrl-names = "default"; 35 35 pinctrl-0 = <&spi2_pins_b &spi2_sck_cfg>; 36 - status = "okay"; 37 36 38 37 enc28j60: ethernet@0 { 39 38 compatible = "microchip,enc28j60";
-2
Documentation/devicetree/bindings/net/nfc/nfcmrvl.txt
··· 25 25 Example (for ARM-based BeagleBoard Black with 88W8887 on UART5): 26 26 27 27 &uart5 { 28 - status = "okay"; 29 28 30 29 nfcmrvluart: nfcmrvluart@5 { 31 30 compatible = "marvell,nfc-uart"; ··· 40 41 Example (for ARM-based BeagleBoard Black with 88W8887 on I2C1): 41 42 42 43 &i2c1 { 43 - status = "okay"; 44 44 clock-frequency = <400000>; 45 45 46 46 nfcmrvli2c0: i2c@1 {
-1
Documentation/devicetree/bindings/net/nfc/nxp-nci.txt
··· 17 17 18 18 &i2c2 { 19 19 20 - status = "okay"; 21 20 22 21 npc100: npc100@29 { 23 22
-1
Documentation/devicetree/bindings/net/nfc/pn533-i2c.txt
··· 15 15 16 16 &i2c2 { 17 17 18 - status = "okay"; 19 18 20 19 pn532: pn532@24 { 21 20
-1
Documentation/devicetree/bindings/net/nfc/pn544.txt
··· 17 17 18 18 &i2c2 { 19 19 20 - status = "okay"; 21 20 22 21 pn544: pn544@28 { 23 22
-1
Documentation/devicetree/bindings/net/nfc/s3fwrn5.txt
··· 12 12 Example: 13 13 14 14 &hsi2c_4 { 15 - status = "okay"; 16 15 s3fwrn5@27 { 17 16 compatible = "samsung,s3fwrn5-i2c"; 18 17
-1
Documentation/devicetree/bindings/net/nfc/st-nci-i2c.txt
··· 20 20 21 21 &i2c2 { 22 22 23 - status = "okay"; 24 23 25 24 st21nfcb: st21nfcb@8 { 26 25
-1
Documentation/devicetree/bindings/net/nfc/st-nci-spi.txt
··· 19 19 20 20 &mcspi4 { 21 21 22 - status = "okay"; 23 22 24 23 st21nfcb: st21nfcb@0 { 25 24
-1
Documentation/devicetree/bindings/net/nfc/st21nfca.txt
··· 20 20 21 21 &i2c2 { 22 22 23 - status = "okay"; 24 23 25 24 st21nfca: st21nfca@1 { 26 25
-2
Documentation/devicetree/bindings/net/nfc/st95hf.txt
··· 35 35 #address-cells = <1>; 36 36 #size-cells = <0>; 37 37 cs-gpios = <&pio0 4>; 38 - status = "okay"; 39 38 40 39 st95hf@0{ 41 40 reg = <0>; 42 41 compatible = "st,st95hf"; 43 - status = "okay"; 44 42 spi-max-frequency = <1000000>; 45 43 enable-gpio = <&pio4 0>; 46 44 interrupt-parent = <&pio0>;
-2
Documentation/devicetree/bindings/net/nfc/trf7970a.txt
··· 23 23 Example (for ARM-based BeagleBone with TRF7970A on SPI1): 24 24 25 25 &spi1 { 26 - status = "okay"; 27 26 28 27 nfc@0 { 29 28 compatible = "ti,trf7970a"; ··· 40 41 irq-status-read-quirk; 41 42 en2-rf-quirk; 42 43 clock-frequency = <27120000>; 43 - status = "okay"; 44 44 }; 45 45 };
-1
Documentation/devicetree/bindings/net/oxnas-dwmac.txt
··· 35 35 /* Regmap for sys registers */ 36 36 oxsemi,sys-ctrl = <&sys>; 37 37 38 - status = "disabled"; 39 38 };
+3 -7
Documentation/devicetree/bindings/net/phy.txt
··· 2 2 3 3 Required properties: 4 4 5 - - interrupts : <a b> where a is the interrupt number and b is a 6 - field that represents an encoding of the sense and level 7 - information for the interrupt. This should be encoded based on 8 - the information in section 2) depending on the type of interrupt 9 - controller you have. 5 + - interrupts : interrupt specifier for the sole interrupt. 10 6 - interrupt-parent : the phandle for the interrupt controller that 11 7 services interrupts for this device. 12 8 - reg : The ID number for the phy, usually a small integer ··· 57 61 58 62 ethernet-phy@0 { 59 63 compatible = "ethernet-phy-id0141.0e90", "ethernet-phy-ieee802.3-c22"; 60 - interrupt-parent = <40000>; 61 - interrupts = <35 1>; 64 + interrupt-parent = <&PIC>; 65 + interrupts = <35 IRQ_TYPE_EDGE_RISING>; 62 66 reg = <0>; 63 67 };
-2
Documentation/devicetree/bindings/net/qca,qca7000.txt
··· 41 41 compatible = "fsl,imx28-spi"; 42 42 pinctrl-names = "default"; 43 43 pinctrl-0 = <&spi2_pins_a>; 44 - status = "okay"; 45 44 46 45 qca7000: ethernet@0 { 47 46 compatible = "qca,qca7000"; ··· 77 78 reg = <0x8006a000 0x2000>; 78 79 pinctrl-names = "default"; 79 80 pinctrl-0 = <&auart0_2pins_a>; 80 - status = "okay"; 81 81 82 82 qca7000: ethernet { 83 83 compatible = "qca,qca7000";
-1
Documentation/devicetree/bindings/net/rockchip-dwmac.txt
··· 71 71 tx_delay = <0x30>; 72 72 rx_delay = <0x10>; 73 73 74 - status = "ok"; 75 74 };
-1
Documentation/devicetree/bindings/net/smsc-lan87xx.txt
··· 15 15 pinctrl-names = "default", "sleep"; 16 16 pinctrl-0 = <&davinci_mdio_default>; 17 17 pinctrl-1 = <&davinci_mdio_sleep>; 18 - status = "okay"; 19 18 20 19 ethernetphy0: ethernet-phy@0 { 21 20 reg = <0>;
-1
Documentation/devicetree/bindings/net/socfpga-dwmac.txt
··· 40 40 gmac0: ethernet@ff700000 { 41 41 compatible = "altr,socfpga-stmmac", "snps,dwmac-3.70a", "snps,dwmac"; 42 42 altr,sysmgr-syscon = <&sysmgr 0x60 0>; 43 - status = "disabled"; 44 43 reg = <0xff700000 0x2000>; 45 44 interrupts = <0 115 4>; 46 45 interrupt-names = "macirq";
-1
Documentation/devicetree/bindings/net/sti-dwmac.txt
··· 34 34 35 35 ethernet0: dwmac@9630000 { 36 36 device_type = "network"; 37 - status = "disabled"; 38 37 compatible = "st,stih407-dwmac", "snps,dwmac", "snps,dwmac-3.710"; 39 38 reg = <0x9630000 0x8000>; 40 39 reg-names = "stmmaceth";
-1
Documentation/devicetree/bindings/net/stm32-dwmac.txt
··· 18 18 19 19 ethernet@40028000 { 20 20 compatible = "st,stm32-dwmac", "snps,dwmac-3.50a"; 21 - status = "disabled"; 22 21 reg = <0x40028000 0x8000>; 23 22 reg-names = "stmmaceth"; 24 23 interrupts = <0 61 0>, <0 62 0>;
-1
Documentation/devicetree/bindings/net/wireless/brcm,bcm43xx-fmac.txt
··· 29 29 vmmc-supply = <&reg_vmmc3>; 30 30 bus-width = <4>; 31 31 non-removable; 32 - status = "okay"; 33 32 34 33 brcmf: wifi@1 { 35 34 reg = <1>;
-1
Documentation/devicetree/bindings/net/wireless/esp,esp8089.txt
··· 21 21 mmc-pwrseq = <&wifi_pwrseq>; 22 22 bus-width = <4>; 23 23 non-removable; 24 - status = "okay"; 25 24 26 25 esp8089: sdio_wifi@1 { 27 26 compatible = "esp,esp8089";
-1
Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt
··· 48 48 so that firmware can wakeup host using this device side pin. 49 49 50 50 &mmc3 { 51 - status = "okay"; 52 51 vmmc-supply = <&wlan_en_reg>; 53 52 mmc-pwrseq = <&wifi_pwrseq>; 54 53 bus-width = <4>;
-1
Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt
··· 31 31 Example: 32 32 33 33 &mmc3 { 34 - status = "okay"; 35 34 vmmc-supply = <&wlan_en_reg>; 36 35 bus-width = <4>; 37 36 cap-power-off-card;
+4 -1
Documentation/devicetree/bindings/nvmem/mtk-efuse.txt
··· 3 3 This binding is intended to represent MTK-EFUSE which is found in most Mediatek SOCs. 4 4 5 5 Required properties: 6 - - compatible: should be "mediatek,mt8173-efuse" or "mediatek,efuse" 6 + - compatible: should be 7 + "mediatek,mt7622-efuse", "mediatek,efuse": for MT7622 8 + "mediatek,mt7623-efuse", "mediatek,efuse": for MT7623 9 + "mediatek,mt8173-efuse" or "mediatek,efuse": for MT8173 7 10 - reg: Should contain registers location and length 8 11 9 12 = Data cells =
-1
Documentation/devicetree/bindings/nvmem/mxs-ocotp.txt
··· 21 21 #size-cells = <1>; 22 22 reg = <0x8002c000 0x2000>; 23 23 clocks = <&clks 25>; 24 - status = "okay"; 25 24 };
-1
Documentation/devicetree/bindings/opp/opp.txt
··· 464 464 465 465 opp_table { 466 466 compatible = "operating-points-v2"; 467 - status = "okay"; 468 467 opp-shared; 469 468 470 469 opp-600000000 {
-1
Documentation/devicetree/bindings/pci/aardvark-pci.txt
··· 33 33 pcie0: pcie@d0070000 { 34 34 compatible = "marvell,armada-3700-pcie"; 35 35 device_type = "pci"; 36 - status = "disabled"; 37 36 reg = <0 0xd0070000 0 0x20000>; 38 37 #address-cells = <3>; 39 38 #size-cells = <2>;
-2
Documentation/devicetree/bindings/pci/hisilicon-pcie.txt
··· 40 40 0x0 0 0 2 &mbigen_pcie 2 11 41 41 0x0 0 0 3 &mbigen_pcie 3 12 42 42 0x0 0 0 4 &mbigen_pcie 4 13>; 43 - status = "ok"; 44 43 }; 45 44 46 45 HiSilicon Hip06/Hip07 PCIe host bridge DT (almost-ECAM) description. ··· 82 83 0x0 0 0 2 &mbigen_pcie0 650 4 83 84 0x0 0 0 3 &mbigen_pcie0 650 4 84 85 0x0 0 0 4 &mbigen_pcie0 650 4>; 85 - status = "ok"; 86 86 };
-11
Documentation/devicetree/bindings/pci/mvebu-pci.txt
··· 85 85 86 86 pcie-controller { 87 87 compatible = "marvell,armada-xp-pcie"; 88 - status = "disabled"; 89 88 device_type = "pci"; 90 89 91 90 #address-cells = <3>; ··· 146 147 /* wait 20ms for device settle after reset deassertion */ 147 148 reset-delay-us = <20000>; 148 149 clocks = <&gateclk 5>; 149 - status = "disabled"; 150 150 }; 151 151 152 152 pcie@2,0 { ··· 162 164 marvell,pcie-port = <0>; 163 165 marvell,pcie-lane = <1>; 164 166 clocks = <&gateclk 6>; 165 - status = "disabled"; 166 167 }; 167 168 168 169 pcie@3,0 { ··· 178 181 marvell,pcie-port = <0>; 179 182 marvell,pcie-lane = <2>; 180 183 clocks = <&gateclk 7>; 181 - status = "disabled"; 182 184 }; 183 185 184 186 pcie@4,0 { ··· 194 198 marvell,pcie-port = <0>; 195 199 marvell,pcie-lane = <3>; 196 200 clocks = <&gateclk 8>; 197 - status = "disabled"; 198 201 }; 199 202 200 203 pcie@5,0 { ··· 210 215 marvell,pcie-port = <1>; 211 216 marvell,pcie-lane = <0>; 212 217 clocks = <&gateclk 9>; 213 - status = "disabled"; 214 218 }; 215 219 216 220 pcie@6,0 { ··· 226 232 marvell,pcie-port = <1>; 227 233 marvell,pcie-lane = <1>; 228 234 clocks = <&gateclk 10>; 229 - status = "disabled"; 230 235 }; 231 236 232 237 pcie@7,0 { ··· 242 249 marvell,pcie-port = <1>; 243 250 marvell,pcie-lane = <2>; 244 251 clocks = <&gateclk 11>; 245 - status = "disabled"; 246 252 }; 247 253 248 254 pcie@8,0 { ··· 258 266 marvell,pcie-port = <1>; 259 267 marvell,pcie-lane = <3>; 260 268 clocks = <&gateclk 12>; 261 - status = "disabled"; 262 269 }; 263 270 264 271 pcie@9,0 { ··· 274 283 marvell,pcie-port = <2>; 275 284 marvell,pcie-lane = <0>; 276 285 clocks = <&gateclk 26>; 277 - status = "disabled"; 278 286 }; 279 287 280 288 pcie@10,0 { ··· 290 300 marvell,pcie-port = <3>; 291 301 marvell,pcie-lane = <0>; 292 302 clocks = <&gateclk 27>; 293 - status = "disabled"; 294 303 }; 295 304 };
-1
Documentation/devicetree/bindings/pci/pci-armada8k.txt
··· 34 34 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; 35 35 num-lanes = <1>; 36 36 clocks = <&cpm_syscon0 1 13>; 37 - status = "disabled"; 38 37 };
+2 -2
Documentation/devicetree/bindings/pci/pci.txt
··· 1 1 PCI bus bridges have standardized Device Tree bindings: 2 2 3 3 PCI Bus Binding to: IEEE Std 1275-1994 4 - http://www.firmware.org/1275/bindings/pci/pci2_1.pdf 4 + http://www.devicetree.org/open-firmware/bindings/pci/pci2_1.pdf 5 5 6 6 And for the interrupt mapping part: 7 7 8 8 Open Firmware Recommended Practice: Interrupt Mapping 9 - http://www.firmware.org/1275/practice/imap/imap0_9d.pdf 9 + http://www.devicetree.org/open-firmware/practice/imap/imap0_9d.pdf 10 10 11 11 Additionally to the properties specified in the above standards a host bridge 12 12 driver implementation may support the following properties:
-1
Documentation/devicetree/bindings/pci/rcar-pci.txt
··· 54 54 interrupt-map = <0 0 0 0 &gic 0 116 4>; 55 55 clocks = <&mstp3_clks R8A7791_CLK_PCIE>, <&pcie_bus_clk>; 56 56 clock-names = "pcie", "pcie_bus"; 57 - status = "disabled"; 58 57 };
-1
Documentation/devicetree/bindings/pci/xgene-pci-msi.txt
··· 44 44 45 45 + PCIe controller node with msi-parent property pointing to MSI node: 46 46 pcie0: pcie@1f2b0000 { 47 - status = "disabled"; 48 47 device_type = "pci"; 49 48 compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie"; 50 49 #interrupt-cells = <1>;
-3
Documentation/devicetree/bindings/phy/apm-xgene-phy.txt
··· 61 61 compatible = "apm,xgene-phy"; 62 62 reg = <0x0 0x1f21a000 0x0 0x100>; 63 63 #phy-cells = <1>; 64 - status = "disabled"; 65 64 }; 66 65 67 66 phy2: phy@1f22a000 { 68 67 compatible = "apm,xgene-phy"; 69 68 reg = <0x0 0x1f22a000 0x0 0x100>; 70 69 #phy-cells = <1>; 71 - status = "ok"; 72 70 }; 73 71 74 72 phy3: phy@1f23a000 { 75 73 compatible = "apm,xgene-phy"; 76 74 reg = <0x0 0x1f23a000 0x0 0x100>; 77 75 #phy-cells = <1>; 78 - status = "ok"; 79 76 };
-1
Documentation/devicetree/bindings/phy/keystone-usb-phy.txt
··· 16 16 #address-cells = <1>; 17 17 #size-cells = <1>; 18 18 reg = <0x2620738 32>; 19 - status = "disabled"; 20 19 };
-4
Documentation/devicetree/bindings/phy/phy-mtk-tphy.txt
··· 51 51 #address-cells = <2>; 52 52 #size-cells = <2>; 53 53 ranges; 54 - status = "okay"; 55 54 56 55 u2port0: usb-phy@11290800 { 57 56 reg = <0 0x11290800 0 0x100>; 58 57 clocks = <&apmixedsys CLK_APMIXED_REF2USB_TX>; 59 58 clock-names = "ref"; 60 59 #phy-cells = <1>; 61 - status = "okay"; 62 60 }; 63 61 64 62 u3port0: usb-phy@11290900 { ··· 64 66 clocks = <&clk26m>; 65 67 clock-names = "ref"; 66 68 #phy-cells = <1>; 67 - status = "okay"; 68 69 }; 69 70 70 71 u2port1: usb-phy@11291000 { ··· 71 74 clocks = <&apmixedsys CLK_APMIXED_REF2USB_TX>; 72 75 clock-names = "ref"; 73 76 #phy-cells = <1>; 74 - status = "okay"; 75 77 }; 76 78 }; 77 79
-1
Documentation/devicetree/bindings/phy/phy-mvebu.txt
··· 18 18 clocks = <&gate_clk 15>; 19 19 clock-names = "sata"; 20 20 #phy-cells = <0>; 21 - status = "ok"; 22 21 }; 23 22 24 23 Armada 375 USB cluster
-2
Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.txt
··· 67 67 <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>, 68 68 <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>; 69 69 interrupt-names = "otg-id", "otg-bvalid", "linestate"; 70 - status = "okay"; 71 70 }; 72 71 73 72 u2phy_host: host-port { 74 73 #phy-cells = <0>; 75 74 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; 76 75 interrupt-names = "linestate"; 77 - status = "okay"; 78 76 }; 79 77 }; 80 78 };
-2
Documentation/devicetree/bindings/phy/qcom-dwc3-usb-phy.txt
··· 25 25 clock-names = "ref"; 26 26 #phy-cells = <0>; 27 27 28 - status = "ok"; 29 28 }; 30 29 31 30 phy@100f8830 { ··· 34 35 clock-names = "ref"; 35 36 #phy-cells = <0>; 36 37 37 - status = "ok"; 38 38 };
-1
Documentation/devicetree/bindings/phy/samsung-phy.txt
··· 82 82 reg = <0x125b0000 0x100>; 83 83 clocks = <&clock 305>, <&clock 2>; 84 84 clock-names = "phy", "ref"; 85 - status = "okay"; 86 85 #phy-cells = <1>; 87 86 samsung,sysreg-phandle = <&sys_reg>; 88 87 samsung,pmureg-phandle = <&pmu_reg>;
-1
Documentation/devicetree/bindings/phy/sun9i-usb-phy.txt
··· 33 33 clock-names = "hsic_480M", "hsic_12M", "phy"; 34 34 resets = <&usb_phy_clk 18>, <&usb_phy_clk 19>; 35 35 reset-names = "hsic", "phy"; 36 - status = "disabled"; 37 36 #phy-cells = <0>; 38 37 };
-1
Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt
··· 148 148 interrupts = <1 4 7>; 149 149 pinctrl-names = "default"; 150 150 pinctrl-0 = <&pinctrl_dbgu>; 151 - status = "disabled"; 152 151 };
-1
Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt
··· 61 61 usdhc@0219c000 { /* uSDHC4 */ 62 62 non-removable; 63 63 vmmc-supply = <&reg_3p3v>; 64 - status = "okay"; 65 64 pinctrl-names = "default"; 66 65 pinctrl-0 = <&pinctrl_usdhc4_1>; 67 66 };
-1
Documentation/devicetree/bindings/pinctrl/fsl,imx7d-pinctrl.txt
··· 61 61 i2c1: i2c@30a20000 { 62 62 pinctrl-names = "default"; 63 63 pinctrl-0 = <&pinctrl_i2c1_1 &pinctrl_i2c1_2>; 64 - status = "okay"; 65 64 }; 66 65 67 66 iomuxc-lpsr@302c0000 {
-1
Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-dpaux-padctl.txt
··· 56 56 pinctrl-0 = <&state_dpaux_i2c>; 57 57 pinctrl-1 = <&state_dpaux_off>; 58 58 pinctrl-names = "default", "idle"; 59 - status = "disabled"; 60 59 };
-1
Documentation/devicetree/bindings/pinctrl/oxnas,pinctrl.txt
··· 50 50 reg-io-width = <1>; 51 51 current-speed = <115200>; 52 52 no-loopback-test; 53 - status = "disabled"; 54 53 resets = <&reset 22>; 55 54 pinctrl-names = "default"; 56 55 pinctrl-0 = <&pinctrl_uart2>;
-1
Documentation/devicetree/bindings/pinctrl/pinctrl-zx.txt
··· 81 81 &vga { 82 82 pinctrl-names = "default"; 83 83 pinctrl-0 = <&vga_pins>; 84 - status = "okay"; 85 84 };
+1 -2
Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt
··· 112 112 113 113 Example 1: SH73A0 (SH-Mobile AG5) pin controller node 114 114 115 - pfc: pfc@e6050000 { 115 + pfc: pin-controller@e6050000 { 116 116 compatible = "renesas,pfc-sh73a0"; 117 117 reg = <0xe6050000 0x8000>, 118 118 <0xe605801c 0x1c>; ··· 173 173 174 174 bus-width = <8>; 175 175 vmmc-supply = <&reg_1p8v>; 176 - status = "okay"; 177 176 };
-1
Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt
··· 121 121 reg-shift = <2>; 122 122 reg-io-width = <1>; 123 123 clocks = <&mux_uart2>; 124 - status = "okay"; 125 124 126 125 pinctrl-names = "default"; 127 126 pinctrl-0 = <&uart2_xfer>;
-1
Documentation/devicetree/bindings/pinctrl/st,stm32-pinctrl.txt
··· 180 180 &usart1 { 181 181 pinctrl-0 = <&usart1_pins_a>; 182 182 pinctrl-names = "default"; 183 - status = "okay"; 184 183 };
-1
Documentation/devicetree/bindings/power/power-controller.txt
··· 13 13 14 14 act8846: act8846@5 { 15 15 compatible = "active-semi,act8846"; 16 - status = "okay"; 17 16 system-power-controller; 18 17 }
-1
Documentation/devicetree/bindings/power/reset/st-reset.txt
··· 8 8 restart { 9 9 compatible = "st,stih407-restart"; 10 10 st,syscfg = <&syscfg_sbc_reg>; 11 - status = "okay"; 12 11 };
-2
Documentation/devicetree/bindings/power/supply/act8945a-charger.txt
··· 29 29 pmic@5b { 30 30 compatible = "active-semi,act8945a"; 31 31 reg = <0x5b>; 32 - status = "okay"; 33 32 34 33 charger { 35 34 compatible = "active-semi,act8945a-charger"; ··· 42 43 active-semi,input-voltage-threshold-microvolt = <6600>; 43 44 active-semi,precondition-timeout = <40>; 44 45 active-semi,total-timeout = <3>; 45 - status = "okay"; 46 46 }; 47 47 };
-1
Documentation/devicetree/bindings/power/supply/max8903-charger.txt
··· 21 21 flt-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>; 22 22 chg-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>; 23 23 cen-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>; 24 - status = "okay"; 25 24 };
-1
Documentation/devicetree/bindings/power/supply/maxim,max14656.txt
··· 12 12 clock-frequency = <50000>; 13 13 pinctrl-names = "default"; 14 14 pinctrl-0 = <&pinctrl_i2c2>; 15 - status = "okay"; 16 15 17 16 max14656@35 { 18 17 compatible = "maxim,max14656";
-1
Documentation/devicetree/bindings/ptp/brcm,ptp-dte.txt
··· 16 16 ptp: ptp-dte@180af650 { 17 17 compatible = "brcm,iproc-ptp-dte", "brcm,ptp-dte"; 18 18 reg = <0x180af650 0x10>; 19 - status = "okay"; 20 19 };
-1
Documentation/devicetree/bindings/pwm/pwm-meson.txt
··· 19 19 compatible = "amlogic,meson-gxbb-pwm"; 20 20 reg = <0x0 0x08550 0x0 0x10>; 21 21 #pwm-cells = <3>; 22 - status = "disabled"; 23 22 clocks = <&xtal>, <&xtal>; 24 23 clock-names = "clkin0", "clkin1"; 25 24 }
-1
Documentation/devicetree/bindings/pwm/pwm-sun4i.txt
··· 19 19 reg = <0x01c20e00 0xc>; 20 20 clocks = <&osc24M>; 21 21 #pwm-cells = <3>; 22 - status = "disabled"; 23 22 };
-2
Documentation/devicetree/bindings/pwm/pwm-tipwmss.txt
··· 26 26 ti,hwmods = "epwmss0"; 27 27 #address-cells = <1>; 28 28 #size-cells = <1>; 29 - status = "disabled"; 30 29 ranges = <0x48300100 0x48300100 0x80 /* ECAP */ 31 30 0x48300180 0x48300180 0x80 /* EQEP */ 32 31 0x48300200 0x48300200 0x80>; /* EHRPWM */ ··· 39 40 ti,hwmods = "epwmss0"; 40 41 #address-cells = <1>; 41 42 #size-cells = <1>; 42 - status = "disabled"; 43 43 ranges = <0x48300100 0x48300100 0x80 /* ECAP */ 44 44 0x48300180 0x48300180 0x80 /* EQEP */ 45 45 0x48300200 0x48300200 0x80>; /* EHRPWM */
-1
Documentation/devicetree/bindings/regulator/act8865-regulator.txt
··· 52 52 compatible = "active-semi,act8865"; 53 53 reg = <0x5b>; 54 54 active-semi,vsel-high; 55 - status = "disabled"; 56 55 57 56 regulators { 58 57 vcc_1v8_reg: DCDC_REG1 {
-1
Documentation/devicetree/bindings/regulator/act8945a-regulator.txt
··· 23 23 pmic@5b { 24 24 compatible = "active-semi,act8945a"; 25 25 reg = <0x5b>; 26 - status = "okay"; 27 26 28 27 active-semi,vsel-high; 29 28
-1
Documentation/devicetree/bindings/reset/nxp,lpc1850-rgu.txt
··· 80 80 clock-names = "stmmaceth"; 81 81 resets = <&rgu 22>; 82 82 reset-names = "stmmaceth"; 83 - status = "disabled"; 84 83 };
-1
Documentation/devicetree/bindings/rtc/st,stm32-rtc.txt
··· 45 45 interrupts = <17 1>; 46 46 interrupt-names = "alarm"; 47 47 st,syscfg = <&pwrcfg>; 48 - status = "disabled"; 49 48 };
-1
Documentation/devicetree/bindings/scsi/hisilicon-sas.txt
··· 85 85 <366 1>,<367 1>/* cq30-31 */ 86 86 <376 4>,/* fatal ecc */ 87 87 <381 4>;/* fatal axi */ 88 - status = "disabled"; 89 88 };
-1
Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt
··· 19 19 20 20 &i2c2 { 21 21 22 - status = "okay"; 23 22 24 23 st33zp24: st33zp24@13 { 25 24
-1
Documentation/devicetree/bindings/security/tpm/st33zp24-spi.txt
··· 18 18 19 19 &mcspi4 { 20 20 21 - status = "okay"; 22 21 23 22 st33zp24@0 { 24 23
-1
Documentation/devicetree/bindings/security/tpm/tpm-i2c.txt
··· 17 17 compatible = "nuvoton,npct650", "nuvoton,npct601"; 18 18 linux,sml-base = <0x7f 0xfd450000>; 19 19 linux,sml-size = <0x10000>; 20 - status = "okay"; 21 20 };
-1
Documentation/devicetree/bindings/security/tpm/tpm_tis_spi.txt
··· 13 13 14 14 &mcspi4 { 15 15 16 - status = "okay"; 17 16 18 17 tpm_tis@0 { 19 18
-1
Documentation/devicetree/bindings/serial/arc-uart.txt
··· 15 15 interrupts = <5>; 16 16 clock-frequency = <80000000>; 17 17 current-speed = <115200>; 18 - status = "okay"; 19 18 }; 20 19 21 20 Note: Each port should have an alias correctly numbered in "aliases" node.
-1
Documentation/devicetree/bindings/serial/axis,etraxfs-uart.txt
··· 15 15 compatible = "axis,etraxfs-uart"; 16 16 reg = <0xb0026000 0x1000>; 17 17 interrupts = <68>; 18 - status = "disabled"; 19 18 dtr-gpios = <&sysgpio 0 GPIO_ACTIVE_LOW>; 20 19 dsr-gpios = <&sysgpio 1 GPIO_ACTIVE_LOW>; 21 20 rng-gpios = <&sysgpio 2 GPIO_ACTIVE_LOW>;
-1
Documentation/devicetree/bindings/serial/nvidia,tegra20-hsuart.txt
··· 33 33 reset-names = "serial"; 34 34 dmas = <&apbdma 8>, <&apbdma 8>; 35 35 dma-names = "rx", "tx"; 36 - status = "disabled"; 37 36 };
-3
Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt
··· 72 72 }; 73 73 74 74 uarta: serial@12490000 { 75 - status = "ok"; 76 75 }; 77 76 78 77 uartb: serial@16340000 { 79 - status = "ok"; 80 78 }; 81 79 82 80 uartc: serial@1a240000 { 83 - status = "ok"; 84 81 };
-2
Documentation/devicetree/bindings/serial/serial.txt
··· 43 43 rng-gpios = <&gpio2 25 GPIO_ACTIVE_LOW>; 44 44 cts-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>; 45 45 rts-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; 46 - status = "okay"; 47 46 }; 48 47 49 48 scifa4: serial@e6c80000 { ··· 53 54 clock-names = "fck"; 54 55 power-domains = <&pd_a3sp>; 55 56 uart-has-rtscts; 56 - status = "okay"; 57 57 };
-1
Documentation/devicetree/bindings/serio/allwinner,sun4i-ps2.txt
··· 19 19 reg = <0x01c2a000 0x400>; 20 20 interrupts = <0 62 4>; 21 21 clocks = <&apb1_gates 6>; 22 - status = "disabled"; 23 22 };
-1
Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt
··· 78 78 interrupts = <0 152 0x0>; 79 79 clocks = <&gcc GSBI4_UART_CLK>, <&gcc GSBI4_H_CLK>; 80 80 clock-names = "core", "iface"; 81 - status = "ok"; 82 81 }; 83 82 }; 84 83
-1
Documentation/devicetree/bindings/sound/armada-370db-audio.txt
··· 23 23 compatible = "marvell,a370db-audio"; 24 24 marvell,audio-controller = <&audio_controller>; 25 25 marvell,audio-codec = <&audio_codec &spdif_out &spdif_in>; 26 - status = "okay"; 27 26 };
-1
Documentation/devicetree/bindings/sound/axentia,tse850-pcm5142.txt
··· 45 45 &ssc0 { 46 46 #sound-dai-cells = <0>; 47 47 48 - status = "okay"; 49 48 }; 50 49 51 50 &i2c {
-4
Documentation/devicetree/bindings/sound/brcm,cygnus-audio.txt
··· 47 47 48 48 ssp0: ssp_port@0 { 49 49 reg = <0>; 50 - status = "okay"; 51 50 }; 52 51 53 52 ssp1: ssp_port@1 { 54 53 reg = <1>; 55 - status = "disabled"; 56 54 }; 57 55 58 56 ssp2: ssp_port@2 { 59 57 reg = <2>; 60 - status = "disabled"; 61 58 }; 62 59 63 60 spdif: spdif_port@3 { 64 61 reg = <3>; 65 - status = "disabled"; 66 62 }; 67 63 };
-1
Documentation/devicetree/bindings/sound/davinci-mcbsp.txt
··· 47 47 dmas = <&edma0 3 1 48 48 &edma0 2 1>; 49 49 dma-names = "tx", "rx"; 50 - status = "okay"; 51 50 };
-1
Documentation/devicetree/bindings/sound/fsl,asrc.txt
··· 61 61 "txa", "txb", "txc"; 62 62 fsl,asrc-rate = <48000>; 63 63 fsl,asrc-width = <16>; 64 - status = "okay"; 65 64 };
-1
Documentation/devicetree/bindings/sound/fsl,esai.txt
··· 59 59 fsl,fifo-depth = <128>; 60 60 fsl,esai-synchronous; 61 61 big-endian; 62 - status = "disabled"; 63 62 };
-1
Documentation/devicetree/bindings/sound/fsl,spdif.txt
··· 59 59 "rxtx7"; 60 60 61 61 big-endian; 62 - status = "okay"; 63 62 };
-1
Documentation/devicetree/bindings/sound/hdmi.txt
··· 13 13 14 14 hdmi_audio: hdmi_audio@0 { 15 15 compatible = "linux,hdmi-audio"; 16 - status = "okay"; 17 16 };
-2
Documentation/devicetree/bindings/sound/renesas,rsnd.txt
··· 621 621 /* Single DAI */ 622 622 #sound-dai-cells = <0>; 623 623 624 - status = "okay"; 625 624 626 625 rcar_sound,dai { 627 626 dai0 { ··· 666 667 /* Single DAI */ 667 668 #sound-dai-cells = <0>; 668 669 669 - status = "okay"; 670 670 671 671 rcar_sound,dai { 672 672 dai0 {
-1
Documentation/devicetree/bindings/sound/rockchip,pdm.txt
··· 38 38 &pdmm0_sdi1_sleep 39 39 &pdmm0_sdi2_sleep 40 40 &pdmm0_sdi3_sleep>; 41 - status = "disabled"; 42 41 };
-1
Documentation/devicetree/bindings/sound/rockchip-spdif.txt
··· 41 41 dma-names = "tx"; 42 42 clock-names = "hclk", "mclk"; 43 43 clocks = <&cru HCLK_SPDIF>, <&cru SCLK_SPDIF>; 44 - status = "disabled"; 45 44 #sound-dai-cells = <0>; 46 45 };
-5
Documentation/devicetree/bindings/sound/st,sti-asoc-card.txt
··· 53 53 54 54 sti_uni_player1: sti-uni-player@0x8D81000 { 55 55 compatible = "st,stih407-uni-player-hdmi"; 56 - status = "okay"; 57 56 #sound-dai-cells = <0>; 58 57 st,syscfg = <&syscfg_core>; 59 58 clocks = <&clk_s_d0_flexgen CLK_PCM_1>; ··· 65 66 66 67 sti_uni_player2: sti-uni-player@0x8D82000 { 67 68 compatible = "st,stih407-uni-player-pcm-out"; 68 - status = "okay"; 69 69 #sound-dai-cells = <0>; 70 70 st,syscfg = <&syscfg_core>; 71 71 clocks = <&clk_s_d0_flexgen CLK_PCM_2>; ··· 76 78 77 79 sti_uni_player3: sti-uni-player@0x8D85000 { 78 80 compatible = "st,stih407-uni-player-spdif"; 79 - status = "okay"; 80 81 #sound-dai-cells = <0>; 81 82 st,syscfg = <&syscfg_core>; 82 83 clocks = <&clk_s_d0_flexgen CLK_SPDIFF>; ··· 87 90 88 91 sti_uni_reader1: sti-uni-reader@0x8D84000 { 89 92 compatible = "st,stih407-uni-reader-hdmi"; 90 - status = "disabled"; 91 93 #sound-dai-cells = <0>; 92 94 st,syscfg = <&syscfg_core>; 93 95 reg = <0x8D84000 0x158>; ··· 121 125 sound { 122 126 compatible = "simple-audio-card"; 123 127 simple-audio-card,name = "sti audio card"; 124 - status = "okay"; 125 128 126 129 simple-audio-card,dai-link@0 { 127 130 /* DAC */
-1
Documentation/devicetree/bindings/sound/sunxi,sun4i-spdif.txt
··· 39 39 clock-names = "apb", "spdif"; 40 40 dmas = <&dma 0 2>, <&dma 0 2>; 41 41 dma-names = "rx", "tx"; 42 - status = "okay"; 43 42 };
-1
Documentation/devicetree/bindings/sound/tas5720.txt
··· 17 17 Example: 18 18 19 19 tas5720: tas5720@6c { 20 - status = "okay"; 21 20 compatible = "ti,tas5720"; 22 21 reg = <0x6c>; 23 22 dvdd-supply = <&vdd_3v3_reg>;
-1
Documentation/devicetree/bindings/sound/zte,zx-i2s.txt
··· 27 27 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>; 28 28 dmas = <&dma 5>, <&dma 6>; 29 29 dma-names = "tx", "rx"; 30 - status = "okay"; 31 30 }; 32 31 33 32 sound {
-1
Documentation/devicetree/bindings/sound/zte,zx-spdif.txt
··· 24 24 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; 25 25 dmas = <&dma 4>; 26 26 dma-names = "tx"; 27 - status = "okay"; 28 27 };
-2
Documentation/devicetree/bindings/spi/efm32-spi.txt
··· 28 28 clocks = <&cmu 20>; 29 29 cs-gpios = <&gpio 51 1>; // D3 30 30 energymicro,location = <1>; 31 - status = "ok"; 32 31 33 32 ks8851@0 { 34 33 compatible = "ks8851"; ··· 35 36 reg = <0>; 36 37 interrupt-parent = <&boardfpga>; 37 38 interrupts = <4>; 38 - status = "ok"; 39 39 }; 40 40 };
-1
Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt
··· 38 38 reset-names = "spi"; 39 39 dmas = <&apbdma 16>, <&apbdma 16>; 40 40 dma-names = "rx", "tx"; 41 - status = "disabled"; 42 41 };
-1
Documentation/devicetree/bindings/spi/nvidia,tegra20-sflash.txt
··· 34 34 reset-names = "spi"; 35 35 dmas = <&apbdma 11>, <&apbdma 11>; 36 36 dma-names = "rx", "tx"; 37 - status = "disabled"; 38 37 };
-1
Documentation/devicetree/bindings/spi/nvidia,tegra20-slink.txt
··· 34 34 reset-names = "spi"; 35 35 dmas = <&apbdma 16>, <&apbdma 16>; 36 36 dma-names = "rx", "tx"; 37 - status = "disabled"; 38 37 };
-1
Documentation/devicetree/bindings/spi/sh-hspi.txt
··· 24 24 interrupts = <0 63 IRQ_TYPE_LEVEL_HIGH>; 25 25 #address-cells = <1>; 26 26 #size-cells = <0>; 27 - status = "disabled"; 28 27 }; 29 28
-1
Documentation/devicetree/bindings/spi/sh-msiof.txt
··· 79 79 dma-names = "tx", "rx"; 80 80 #address-cells = <1>; 81 81 #size-cells = <0>; 82 - status = "disabled"; 83 82 };
-1
Documentation/devicetree/bindings/spi/spi-clps711x.txt
··· 23 23 reg = <0x80000500 0x4>; 24 24 interrupts = <15>; 25 25 clocks = <&clks CLPS711X_CLK_SPI>; 26 - status = "disabled"; 27 26 }; 28 27 29 28 syscon3: syscon@80002200 {
-1
Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt
··· 39 39 pinctrl-names = "default"; 40 40 pinctrl-0 = <&pinctrl_dspi0_1>; 41 41 big-endian; 42 - status = "okay"; 43 42 44 43 sflash: at26df081a@0 { 45 44 #address-cells = <1>;
-1
Documentation/devicetree/bindings/spi/spi-mt65xx.txt
··· 57 57 clock-names = "parent-clk", "sel-clk", "spi-clk"; 58 58 cs-gpios = <&pio 105 GPIO_ACTIVE_LOW>, <&pio 72 GPIO_ACTIVE_LOW>; 59 59 mediatek,pad-select = <1>, <0>; 60 - status = "disabled"; 61 60 };
-2
Documentation/devicetree/bindings/spi/spi-orion.txt
··· 29 29 cell-index = <0>; 30 30 reg = <0x10600 0x28>; 31 31 interrupts = <23>; 32 - status = "disabled"; 33 32 }; 34 33 35 34 Example with SPI direct mode support (optionally): ··· 47 48 <MBUS_ID(0x01, 0x9f) 0 0xffffffff>, /* CS6 */ 48 49 <MBUS_ID(0x01, 0xdf) 0 0xffffffff>; /* CS7 */ 49 50 interrupts = <23>; 50 - status = "disabled"; 51 51 }; 52 52 53 53 To enable the direct mode, the board specific 'ranges' property in the
-1
Documentation/devicetree/bindings/spi/spi-sun4i.txt
··· 18 18 interrupts = <11>; 19 19 clocks = <&ahb_gates 21>, <&spi1_clk>; 20 20 clock-names = "ahb", "mod"; 21 - status = "disabled"; 22 21 #address-cells = <1>; 23 22 #size-cells = <0>; 24 23 };
-1
Documentation/devicetree/bindings/spi/spi-sun6i.txt
··· 39 39 pinctrl-names = "default"; 40 40 pinctrl-0 = <&spi0_pins>; 41 41 resets = <&ccu RST_BUS_SPI0>; 42 - status = "disabled"; 43 42 #address-cells = <1>; 44 43 #size-cells = <0>; 45 44 };
-1
Documentation/devicetree/bindings/spi/spi_atmel.txt
··· 26 26 clock-names = "spi_clk"; 27 27 cs-gpios = <&pioB 3 0>; 28 28 atmel,fifo-size = <32>; 29 - status = "okay"; 30 29 31 30 mmc-slot@0 { 32 31 compatible = "mmc-spi-slot";
-1
Documentation/devicetree/bindings/sram/sunxi-sram.txt
··· 59 59 emac_sram: sram-section@8000 { 60 60 compatible = "allwinner,sun4i-a10-sram-a3-a4"; 61 61 reg = <0x8000 0x4000>; 62 - status = "disabled"; 63 62 }; 64 63 }; 65 64 };
-1
Documentation/devicetree/bindings/thermal/armada-thermal.txt
··· 20 20 compatible = "marvell,armada370-thermal"; 21 21 reg = <0xd0018300 0x4 22 22 0xd0018304 0x4>; 23 - status = "okay"; 24 23 };
-1
Documentation/devicetree/bindings/thermal/exynos-thermal.txt
··· 77 77 interrupts = <2 4>; 78 78 clocks = <&clock 383>; 79 79 clock-names = "tmu_apbif"; 80 - status = "disabled"; 81 80 vtmu-supply = <&tmu_regulator_node>; 82 81 #include "exynos4412-tmu-sensor-conf.dtsi" 83 82 };
-1
Documentation/devicetree/bindings/thermal/rcar-gen3-thermal.txt
··· 36 36 clocks = <&cpg CPG_MOD 522>; 37 37 power-domains = <&sysc R8A7795_PD_ALWAYS_ON>; 38 38 #thermal-sensor-cells = <1>; 39 - status = "okay"; 40 39 }; 41 40 42 41 thermal-zones {
+14
Documentation/devicetree/bindings/trivial-devices.txt
··· 21 21 adi,adxl345 Three-Axis Digital Accelerometer 22 22 adi,adxl346 Three-Axis Digital Accelerometer (backward-compatibility value "adi,adxl345" must be listed too) 23 23 ams,iaq-core AMS iAQ-Core VOC Sensor 24 + amstaos,tsl2571 AMS/TAOS ALS and proximity sensor 25 + amstaos,tsl2671 AMS/TAOS ALS and proximity sensor 26 + amstaos,tmd2671 AMS/TAOS ALS and proximity sensor 27 + amstaos,tsl2771 AMS/TAOS ALS and proximity sensor 28 + amstaos,tmd2771 AMS/TAOS ALS and proximity sensor 29 + amstaos,tsl2572 AMS/TAOS ALS and proximity sensor 30 + amstaos,tsl2672 AMS/TAOS ALS and proximity sensor 31 + amstaos,tmd2672 AMS/TAOS ALS and proximity sensor 32 + amstaos,tsl2772 AMS/TAOS ALS and proximity sensor 33 + amstaos,tmd2772 AMS/TAOS ALS and proximity sensor 24 34 at,24c08 i2c serial eeprom (24cxx) 25 35 atmel,at97sc3204t i2c trusted platform module (TPM) 26 36 capella,cm32181 CM32181: Ambient Light Sensor ··· 46 36 dallas,ds3232 Extremely Accurate I²C RTC with Integrated Crystal and SRAM 47 37 dallas,ds4510 CPU Supervisor with Nonvolatile Memory and Programmable I/O 48 38 dallas,ds75 Digital Thermometer and Thermostat 39 + devantech,srf02 Devantech SRF02 ultrasonic ranger in I2C mode 49 40 devantech,srf08 Devantech SRF08 ultrasonic ranger 41 + devantech,srf10 Devantech SRF10 ultrasonic ranger 50 42 dlg,da9053 DA9053: flexible system level PMIC with multicore support 51 43 dlg,da9063 DA9063: system PMIC for quad-core application processors 52 44 domintech,dmard09 DMARD09: 3-axis Accelerometer ··· 66 54 gmt,g751 G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface 67 55 infineon,slb9635tt Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz) 68 56 infineon,slb9645tt Infineon SLB9645 I2C TPM (new protocol, max 400khz) 57 + isil,isl1208 Intersil ISL1208 Low Power RTC with Battery Backed SRAM 69 58 isil,isl29028 Intersil ISL29028 Ambient Light and Proximity Sensor 70 59 isil,isl29030 Intersil ISL29030 Ambient Light and Proximity Sensor 71 60 maxim,ds1050 5 Bit Programmable, Pulse-Width Modulator ··· 181 168 taos,tsl2550 Ambient Light Sensor with SMBUS/Two Wire Serial Interface 182 169 ti,ads7828 8-Channels, 12-bit ADC 183 170 ti,ads7830 8-Channels, 8-bit ADC 171 + ti,amc6821 Temperature Monitoring and Fan Control 184 172 ti,tsc2003 I2C Touch-Screen Controller 185 173 ti,tmp102 Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface 186 174 ti,tmp103 Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface
-5
Documentation/devicetree/bindings/unittest.txt
··· 10 10 Example: 11 11 unittest { 12 12 compatible = "unittest"; 13 - status = "okay"; 14 13 }; 15 14 16 15 2) OF unittest i2c adapter platform device ··· 24 25 Example: 25 26 unittest-i2c-bus { 26 27 compatible = "unittest-i2c-bus"; 27 - status = "okay"; 28 28 }; 29 29 30 30 3) OF unittest i2c device ··· 38 40 Example: 39 41 unittest-i2c-dev { 40 42 compatible = "unittest-i2c-dev"; 41 - status = "okay"; 42 43 }; 43 44 44 45 4) OF unittest i2c mux device ··· 52 55 Example: 53 56 unittest-i2c-mux { 54 57 compatible = "unittest-i2c-mux"; 55 - status = "okay"; 56 58 #address-cells = <1>; 57 59 #size-cells = <0>; 58 60 channel-0 { ··· 61 65 i2c-dev { 62 66 reg = <8>; 63 67 compatible = "unittest-i2c-dev"; 64 - status = "okay"; 65 68 }; 66 69 }; 67 70 };
-1
Documentation/devicetree/bindings/usb/allwinner,sun4i-a10-musb.txt
··· 25 25 phys = <&usbphy 0>; 26 26 phy-names = "usb"; 27 27 extcon = <&usbphy 0>; 28 - status = "disabled"; 29 28 };
+2 -2
Documentation/devicetree/bindings/usb/am33xx-usb.txt
··· 4 4 - reg: offset and length of the usbss register sets 5 5 - ti,hwmods : must be "usb_otg_hs" 6 6 7 - The glue layer contains multiple child nodes. It is required the have 7 + The glue layer contains multiple child nodes. It is required to have 8 8 at least a control module node, USB node and a PHY node. The second USB 9 - node and its PHY node is optional. The DMA node is also optional. 9 + node and its PHY node are optional. The DMA node is also optional. 10 10 11 11 Reset module 12 12 ~~~~~~~~~~~~
-2
Documentation/devicetree/bindings/usb/da8xx-usb.txt
··· 42 42 usb_phy: usb-phy { 43 43 compatible = "ti,da830-usb-phy"; 44 44 #phy-cells = <0>; 45 - status = "okay"; 46 45 }; 47 46 usb0: usb@200000 { 48 47 compatible = "ti,da830-musb"; ··· 65 66 "rx1", "rx2", "rx3", "rx4", 66 67 "tx1", "tx2", "tx3", "tx4"; 67 68 68 - status = "okay"; 69 69 70 70 cppi41dma: dma-controller@201000 { 71 71 compatible = "ti,da830-cppi41";
-1
Documentation/devicetree/bindings/usb/dwc3-st.txt
··· 42 42 Example: 43 43 44 44 st_dwc3: dwc3@8f94000 { 45 - status = "disabled"; 46 45 compatible = "st,stih407-dwc3"; 47 46 reg = <0x08f94000 0x1000>, <0x110 0x4>; 48 47 reg-names = "reg-glue", "syscfg-reg";
-1
Documentation/devicetree/bindings/usb/dwc3-xilinx.txt
··· 18 18 usb@0 { 19 19 #address-cells = <0x2>; 20 20 #size-cells = <0x1>; 21 - status = "okay"; 22 21 compatible = "xlnx,zynqmp-dwc3"; 23 22 clock-names = "bus_clk" "ref_clk"; 24 23 clocks = <&clk125>, <&clk125>;
-1
Documentation/devicetree/bindings/usb/ehci-st.txt
··· 31 31 clocks = <&clk_s_a1_ls 0>; 32 32 phys = <&usb2_phy>; 33 33 phy-names = "usb"; 34 - status = "okay"; 35 34 36 35 resets = <&powerdown STIH416_USB1_POWERDOWN>, 37 36 <&softreset STIH416_USB1_SOFTRESET>;
-2
Documentation/devicetree/bindings/usb/exynos-usb.txt
··· 40 40 port@0 { 41 41 reg = <0>; 42 42 phys = <&usb2phy 1>; 43 - status = "disabled"; 44 43 }; 45 44 }; 46 45 ··· 74 75 port@0 { 75 76 reg = <0>; 76 77 phys = <&usb2phy 1>; 77 - status = "disabled"; 78 78 }; 79 79 80 80 };
-1
Documentation/devicetree/bindings/usb/isp1301.txt
··· 21 21 interrupt-parent = <&mic>; 22 22 interrupts = <0x3d 0>, <0x3e 0>, <0x3c 0>, <0x3a 0>; 23 23 transceiver = <&isp1301>; 24 - status = "okay"; 25 24 };
-1
Documentation/devicetree/bindings/usb/keystone-usb.txt
··· 44 44 clock-names = "usb"; 45 45 interrupts = <GIC_SPI 393 IRQ_TYPE_EDGE_RISING>; 46 46 ranges; 47 - status = "disabled"; 48 47 49 48 dwc3@2690000 { 50 49 compatible = "synopsys,dwc3";
-2
Documentation/devicetree/bindings/usb/mediatek,mtu3.txt
··· 75 75 #address-cells = <2>; 76 76 #size-cells = <2>; 77 77 ranges; 78 - status = "disabled"; 79 78 80 79 usb_host: xhci@11270000 { 81 80 compatible = "mediatek,mt8173-xhci"; ··· 85 86 clocks = <&topckgen CLK_TOP_USB30_SEL>, <&clk26m>; 86 87 clock-names = "sys_ck", "ref_ck"; 87 88 vusb33-supply = <&mt6397_vusb_reg>; 88 - status = "disabled"; 89 89 }; 90 90 };
-1
Documentation/devicetree/bindings/usb/ohci-st.txt
··· 29 29 clock-names = "ic", "clk48"; 30 30 phys = <&usb2_phy>; 31 31 phy-names = "usb"; 32 - status = "okay"; 33 32 34 33 resets = <&powerdown STIH416_USB0_POWERDOWN>, 35 34 <&softreset STIH416_USB0_SOFTRESET>;
-3
Documentation/devicetree/bindings/usb/qcom,dwc3.txt
··· 29 29 clock-names = "ref"; 30 30 #phy-cells = <0>; 31 31 32 - status = "ok"; 33 32 }; 34 33 35 34 ss_phy: phy@100f8830 { ··· 38 39 clock-names = "ref"; 39 40 #phy-cells = <0>; 40 41 41 - status = "ok"; 42 42 }; 43 43 44 44 usb3_0: usb30@0 { ··· 49 51 50 52 ranges; 51 53 52 - status = "ok"; 53 54 54 55 dwc3@10000000 { 55 56 compatible = "snps,dwc3";
-4
Documentation/devicetree/bindings/usb/rockchip,dwc3.txt
··· 29 29 #address-cells = <2>; 30 30 #size-cells = <2>; 31 31 ranges; 32 - status = "disabled"; 33 32 usbdrd_dwc3_0: dwc3@fe800000 { 34 33 compatible = "snps,dwc3"; 35 34 reg = <0x0 0xfe800000 0x0 0x100000>; 36 35 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>; 37 36 dr_mode = "otg"; 38 - status = "disabled"; 39 37 }; 40 38 }; 41 39 ··· 46 48 #address-cells = <2>; 47 49 #size-cells = <2>; 48 50 ranges; 49 - status = "disabled"; 50 51 usbdrd_dwc3_1: dwc3@fe900000 { 51 52 compatible = "snps,dwc3"; 52 53 reg = <0x0 0xfe900000 0x0 0x100000>; 53 54 interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>; 54 55 dr_mode = "otg"; 55 - status = "disabled"; 56 56 }; 57 57 };
+1 -2
Documentation/devicetree/bindings/usb/usb-device.txt
··· 2 2 3 3 Usually, we only use device tree for hard wired USB device. 4 4 The reference binding doc is from: 5 - http://www.firmware.org/1275/bindings/usb/usb-1_0.ps 5 + http://www.devicetree.org/open-firmware/bindings/usb/usb-1_0.ps 6 6 7 7 Required properties: 8 8 - compatible: usbVID,PID. The textual representation of VID, PID shall ··· 16 16 Example: 17 17 18 18 &usb1 { 19 - status = "okay"; 20 19 21 20 #address-cells = <1>; 22 21 #size-cells = <0>;
+4 -1
Documentation/devicetree/bindings/vendor-prefixes.txt
··· 9 9 active-semi Active-Semi International Inc 10 10 ad Avionic Design GmbH 11 11 adapteva Adapteva, Inc. 12 + adaptrum Adaptrum, Inc. 12 13 adh AD Holdings Plc. 13 14 adi Analog Devices, Inc. 14 15 advantech Advantech Corporation ··· 198 197 megachips MegaChips 199 198 melexis Melexis N.V. 200 199 melfas MELFAS Inc. 200 + mellanox Mellanox Technologies 201 201 memsic MEMSIC Inc. 202 202 merrii Merrii Technology Co., Ltd. 203 203 micrel Micrel Inc. ··· 210 208 mitsubishi Mitsubishi Electric Corporation 211 209 mosaixtech Mosaix Technologies, Inc. 212 210 motorola Motorola, Inc. 213 - moxa Moxa 211 + moxa Moxa Inc. 214 212 mpl MPL AG 215 213 mqmaker mqmaker Inc. 216 214 msi Micro-Star International Co. Ltd. ··· 346 344 tronfy Tronfy 347 345 tronsmart Tronsmart 348 346 truly Truly Semiconductors Limited 347 + tsd Theobroma Systems Design und Consulting GmbH 349 348 tyan Tyan Computer Corporation 350 349 ucrobotics uCRobotics 351 350 udoo Udoo
-1
Documentation/devicetree/bindings/w1/fsl-imx-owire.txt
··· 15 15 compatible = "fsl,imx53-owire", "fsl,imx21-owire"; 16 16 reg = <0x63fa4000 0x4000>; 17 17 clocks = <&clks 159>; 18 - status = "disabled"; 19 18 };
-1
Documentation/devicetree/bindings/watchdog/atmel-sama5d4-wdt.txt
··· 31 31 atmel,watchdog-type = "hardware"; 32 32 atmel,dbg-halt; 33 33 atmel,idle-halt; 34 - status = "okay"; 35 34 };
-1
Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
··· 48 48 atmel,idle-halt; 49 49 atmel,max-heartbeat-sec = <16>; 50 50 atmel,min-heartbeat-sec = <0>; 51 - status = "okay"; 52 51 };
-1
Documentation/devicetree/bindings/watchdog/marvel.txt
··· 41 41 reg = <0x20300 0x28>, <0x20108 0x4>; 42 42 interrupts = <3>; 43 43 timeout-sec = <10>; 44 - status = "okay"; 45 44 clocks = <&gate_clk 7>; 46 45 };
+1 -1
Documentation/devicetree/booting-without-of.txt
··· 1282 1282 The interrupt tree model is fully described in the 1283 1283 document "Open Firmware Recommended Practice: Interrupt 1284 1284 Mapping Version 0.9". The document is available at: 1285 - <http://www.openfirmware.org/ofwg/practice/> 1285 + <http://www.devicetree.org/open-firmware/practice/> 1286 1286 1287 1287 1) interrupts property 1288 1288 ----------------------
+1 -1
arch/microblaze/kernel/timer.c
··· 293 293 return -EINVAL; 294 294 } 295 295 296 - pr_info("%s: irq=%d\n", timer->full_name, irq); 296 + pr_info("%pOF: irq=%d\n", timer, irq); 297 297 298 298 clk = of_clk_get(timer, 0); 299 299 if (IS_ERR(clk)) {
+7 -7
arch/microblaze/pci/pci-common.c
··· 508 508 struct of_pci_range range; 509 509 struct of_pci_range_parser parser; 510 510 511 - pr_info("PCI host bridge %s %s ranges:\n", 512 - dev->full_name, primary ? "(primary)" : ""); 511 + pr_info("PCI host bridge %pOF %s ranges:\n", 512 + dev, primary ? "(primary)" : ""); 513 513 514 514 /* Check for ranges property */ 515 515 if (of_pci_range_parser_init(&parser, dev)) ··· 1219 1219 1220 1220 if (!res->flags) { 1221 1221 pr_warn("PCI: I/O resource not set for host "); 1222 - pr_cont("bridge %s (domain %d)\n", 1223 - hose->dn->full_name, hose->global_number); 1222 + pr_cont("bridge %pOF (domain %d)\n", 1223 + hose->dn, hose->global_number); 1224 1224 /* Workaround for lack of IO resource only on 32-bit */ 1225 1225 res->start = (unsigned long)hose->io_base_virt - isa_io_base; 1226 1226 res->end = res->start + IO_SPACE_LIMIT; ··· 1241 1241 if (i > 0) 1242 1242 continue; 1243 1243 pr_err("PCI: Memory resource 0 not set for "); 1244 - pr_cont("host bridge %s (domain %d)\n", 1245 - hose->dn->full_name, hose->global_number); 1244 + pr_cont("host bridge %pOF (domain %d)\n", 1245 + hose->dn, hose->global_number); 1246 1246 1247 1247 /* Workaround for lack of MEM resource only on 32-bit */ 1248 1248 res->start = hose->pci_mem_offset; ··· 1270 1270 struct pci_bus *bus; 1271 1271 struct device_node *node = hose->dn; 1272 1272 1273 - pr_debug("PCI: Scanning PHB %s\n", of_node_full_name(node)); 1273 + pr_debug("PCI: Scanning PHB %pOF\n", node); 1274 1274 1275 1275 pcibios_setup_phb_resources(hose, &resources); 1276 1276
+11 -13
drivers/of/address.c
··· 274 274 275 275 /* Now consume following elements while they are contiguous */ 276 276 while (parser->range + parser->np <= parser->end) { 277 - u32 flags, pci_space; 277 + u32 flags; 278 278 u64 pci_addr, cpu_addr, size; 279 279 280 - pci_space = be32_to_cpup(parser->range); 281 280 flags = of_bus_pci_get_flags(parser->range); 282 281 pci_addr = of_read_number(parser->range + 1, ns); 283 282 cpu_addr = of_translate_address(parser->node, ··· 558 559 int na, ns, pna, pns; 559 560 u64 result = OF_BAD_ADDR; 560 561 561 - pr_debug("** translation for device %s **\n", of_node_full_name(dev)); 562 + pr_debug("** translation for device %pOF **\n", dev); 562 563 563 564 /* Increase refcount at current level */ 564 565 of_node_get(dev); ··· 572 573 /* Count address cells & copy address locally */ 573 574 bus->count_cells(dev, &na, &ns); 574 575 if (!OF_CHECK_COUNTS(na, ns)) { 575 - pr_debug("Bad cell count for %s\n", of_node_full_name(dev)); 576 + pr_debug("Bad cell count for %pOF\n", dev); 576 577 goto bail; 577 578 } 578 579 memcpy(addr, in_addr, na * 4); 579 580 580 - pr_debug("bus is %s (na=%d, ns=%d) on %s\n", 581 - bus->name, na, ns, of_node_full_name(parent)); 581 + pr_debug("bus is %s (na=%d, ns=%d) on %pOF\n", 582 + bus->name, na, ns, parent); 582 583 of_dump_addr("translating address:", addr, na); 583 584 584 585 /* Translate */ ··· 599 600 pbus = of_match_bus(parent); 600 601 pbus->count_cells(dev, &pna, &pns); 601 602 if (!OF_CHECK_COUNTS(pna, pns)) { 602 - pr_err("Bad cell count for %s\n", 603 - of_node_full_name(dev)); 603 + pr_err("Bad cell count for %pOF\n", dev); 604 604 break; 605 605 } 606 606 607 - pr_debug("parent bus is %s (na=%d, ns=%d) on %s\n", 608 - pbus->name, pna, pns, of_node_full_name(parent)); 607 + pr_debug("parent bus is %s (na=%d, ns=%d) on %pOF\n", 608 + pbus->name, pna, pns, parent); 609 609 610 610 /* Apply bus translation */ 611 611 if (of_translate_one(dev, bus, pbus, addr, na, ns, pna, rprop)) ··· 853 855 } 854 856 855 857 if (!ranges) { 856 - pr_debug("no dma-ranges found for node(%s)\n", np->full_name); 858 + pr_debug("no dma-ranges found for node(%pOF)\n", np); 857 859 ret = -ENODEV; 858 860 goto out; 859 861 } ··· 870 872 dmaaddr = of_read_number(ranges, naddr); 871 873 *paddr = of_translate_dma_address(np, ranges); 872 874 if (*paddr == OF_BAD_ADDR) { 873 - pr_err("translation of DMA address(%pad) to CPU address failed node(%s)\n", 874 - dma_addr, np->full_name); 875 + pr_err("translation of DMA address(%pad) to CPU address failed node(%pOF)\n", 876 + dma_addr, np); 875 877 ret = -EINVAL; 876 878 goto out; 877 879 }
+23 -23
drivers/of/base.c
··· 60 60 61 61 int of_n_addr_cells(struct device_node *np) 62 62 { 63 - const __be32 *ip; 63 + u32 cells; 64 64 65 65 do { 66 66 if (np->parent) 67 67 np = np->parent; 68 - ip = of_get_property(np, "#address-cells", NULL); 69 - if (ip) 70 - return be32_to_cpup(ip); 68 + if (!of_property_read_u32(np, "#address-cells", &cells)) 69 + return cells; 71 70 } while (np->parent); 72 71 /* No #address-cells property for the root node */ 73 72 return OF_ROOT_NODE_ADDR_CELLS_DEFAULT; ··· 75 76 76 77 int of_n_size_cells(struct device_node *np) 77 78 { 78 - const __be32 *ip; 79 + u32 cells; 79 80 80 81 do { 81 82 if (np->parent) 82 83 np = np->parent; 83 - ip = of_get_property(np, "#size-cells", NULL); 84 - if (ip) 85 - return be32_to_cpup(ip); 84 + if (!of_property_read_u32(np, "#size-cells", &cells)) 85 + return cells; 86 86 } while (np->parent); 87 87 /* No #size-cells property for the root node */ 88 88 return OF_ROOT_NODE_SIZE_CELLS_DEFAULT; ··· 158 160 pp->attr.read = of_node_property_read; 159 161 160 162 rc = sysfs_create_bin_file(&np->kobj, &pp->attr); 161 - WARN(rc, "error adding attribute %s to node %s\n", pp->name, np->full_name); 163 + WARN(rc, "error adding attribute %s to node %pOF\n", pp->name, np); 162 164 return rc; 163 165 } 164 166 ··· 1120 1122 void of_print_phandle_args(const char *msg, const struct of_phandle_args *args) 1121 1123 { 1122 1124 int i; 1123 - printk("%s %s", msg, of_node_full_name(args->np)); 1125 + printk("%s %pOF", msg, args->np); 1124 1126 for (i = 0; i < args->args_count; i++) { 1125 1127 const char delim = i ? ',' : ':'; 1126 1128 ··· 1182 1184 1183 1185 if (it->cells_name) { 1184 1186 if (!it->node) { 1185 - pr_err("%s: could not find phandle\n", 1186 - it->parent->full_name); 1187 + pr_err("%pOF: could not find phandle\n", 1188 + it->parent); 1187 1189 goto err; 1188 1190 } 1189 1191 1190 1192 if (of_property_read_u32(it->node, it->cells_name, 1191 1193 &count)) { 1192 - pr_err("%s: could not get %s for %s\n", 1193 - it->parent->full_name, 1194 + pr_err("%pOF: could not get %s for %pOF\n", 1195 + it->parent, 1194 1196 it->cells_name, 1195 - it->node->full_name); 1197 + it->node); 1196 1198 goto err; 1197 1199 } 1198 1200 } else { ··· 1204 1206 * property data length 1205 1207 */ 1206 1208 if (it->cur + count > it->list_end) { 1207 - pr_err("%s: arguments longer than property\n", 1208 - it->parent->full_name); 1209 + pr_err("%pOF: arguments longer than property\n", 1210 + it->parent); 1209 1211 goto err; 1210 1212 } 1211 1213 } ··· 1637 1639 strncpy(ap->stem, stem, stem_len); 1638 1640 ap->stem[stem_len] = 0; 1639 1641 list_add_tail(&ap->link, &aliases_lookup); 1640 - pr_debug("adding DT alias:%s: stem=%s id=%i node=%s\n", 1641 - ap->alias, ap->stem, ap->id, of_node_full_name(np)); 1642 + pr_debug("adding DT alias:%s: stem=%s id=%i node=%pOF\n", 1643 + ap->alias, ap->stem, ap->id, np); 1642 1644 } 1643 1645 1644 1646 /** ··· 1662 1664 1663 1665 if (of_chosen) { 1664 1666 /* linux,stdout-path and /aliases/stdout are for legacy compatibility */ 1665 - const char *name = of_get_property(of_chosen, "stdout-path", NULL); 1666 - if (!name) 1667 - name = of_get_property(of_chosen, "linux,stdout-path", NULL); 1667 + const char *name = NULL; 1668 + 1669 + if (of_property_read_string(of_chosen, "stdout-path", &name)) 1670 + of_property_read_string(of_chosen, "linux,stdout-path", 1671 + &name); 1668 1672 if (IS_ENABLED(CONFIG_PPC) && !name) 1669 - name = of_get_property(of_aliases, "stdout", NULL); 1673 + of_property_read_string(of_aliases, "stdout", &name); 1670 1674 if (name) 1671 1675 of_stdout = of_find_node_opts_by_path(name, &of_stdout_options); 1672 1676 }
+29 -42
drivers/of/device.c
··· 58 58 /* name and id have to be set so that the platform bus doesn't get 59 59 * confused on matching */ 60 60 ofdev->name = dev_name(&ofdev->dev); 61 - ofdev->id = -1; 61 + ofdev->id = PLATFORM_DEVID_NONE; 62 62 63 63 /* 64 64 * If this device has not binding numa node in devicetree, that is ··· 196 196 static ssize_t of_device_get_modalias(struct device *dev, char *str, ssize_t len) 197 197 { 198 198 const char *compat; 199 - int cplen, i; 200 - ssize_t tsize, csize, repend; 199 + char *c; 200 + struct property *p; 201 + ssize_t csize; 202 + ssize_t tsize; 201 203 202 204 if ((!dev) || (!dev->of_node)) 203 205 return -ENODEV; ··· 207 205 /* Name & Type */ 208 206 csize = snprintf(str, len, "of:N%sT%s", dev->of_node->name, 209 207 dev->of_node->type); 208 + tsize = csize; 209 + len -= csize; 210 + if (str) 211 + str += csize; 210 212 211 - /* Get compatible property if any */ 212 - compat = of_get_property(dev->of_node, "compatible", &cplen); 213 - if (!compat) 214 - return csize; 213 + of_property_for_each_string(dev->of_node, "compatible", p, compat) { 214 + csize = strlen(compat) + 1; 215 + tsize += csize; 216 + if (csize > len) 217 + continue; 215 218 216 - /* Find true end (we tolerate multiple \0 at the end */ 217 - for (i = (cplen - 1); i >= 0 && !compat[i]; i--) 218 - cplen--; 219 - if (!cplen) 220 - return csize; 221 - cplen++; 222 - 223 - /* Check space (need cplen+1 chars including final \0) */ 224 - tsize = csize + cplen; 225 - repend = tsize; 226 - 227 - if (csize >= len) /* @ the limit, all is already filled */ 228 - return tsize; 229 - 230 - if (tsize >= len) { /* limit compat list */ 231 - cplen = len - csize - 1; 232 - repend = len; 219 + csize = snprintf(str, len, "C%s", compat); 220 + for (c = str; c; ) { 221 + c = strchr(c, ' '); 222 + if (c) 223 + *c++ = '_'; 224 + } 225 + len -= csize; 226 + str += csize; 233 227 } 234 228 235 - /* Copy and do char replacement */ 236 - memcpy(&str[csize + 1], compat, cplen); 237 - for (i = csize; i < repend; i++) { 238 - char c = str[i]; 239 - if (c == '\0') 240 - str[i] = 'C'; 241 - else if (c == ' ') 242 - str[i] = '_'; 243 - } 244 - 245 - return repend; 229 + return tsize; 246 230 } 247 231 248 232 int of_device_request_module(struct device *dev) ··· 262 274 ssize_t sl = of_device_get_modalias(dev, str, len - 2); 263 275 if (sl < 0) 264 276 return sl; 277 + if (sl > len - 2) 278 + return -ENOMEM; 265 279 266 280 str[sl++] = '\n'; 267 281 str[sl] = 0; ··· 278 288 { 279 289 const char *compat; 280 290 struct alias_prop *app; 281 - int seen = 0, cplen, sl; 291 + struct property *p; 292 + int seen = 0; 282 293 283 294 if ((!dev) || (!dev->of_node)) 284 295 return; 285 296 286 297 add_uevent_var(env, "OF_NAME=%s", dev->of_node->name); 287 - add_uevent_var(env, "OF_FULLNAME=%s", dev->of_node->full_name); 298 + add_uevent_var(env, "OF_FULLNAME=%pOF", dev->of_node); 288 299 if (dev->of_node->type && strcmp("<NULL>", dev->of_node->type) != 0) 289 300 add_uevent_var(env, "OF_TYPE=%s", dev->of_node->type); 290 301 291 302 /* Since the compatible field can contain pretty much anything 292 303 * it's not really legal to split it out with commas. We split it 293 304 * up using a number of environment variables instead. */ 294 - compat = of_get_property(dev->of_node, "compatible", &cplen); 295 - while (compat && *compat && cplen > 0) { 305 + of_property_for_each_string(dev->of_node, "compatible", p, compat) { 296 306 add_uevent_var(env, "OF_COMPATIBLE_%d=%s", seen, compat); 297 - sl = strlen(compat) + 1; 298 - compat += sl; 299 - cplen -= sl; 300 307 seen++; 301 308 } 302 309 add_uevent_var(env, "OF_COMPATIBLE_N=%d", seen);
+16 -17
drivers/of/dynamic.c
··· 98 98 switch (action) { 99 99 case OF_RECONFIG_ATTACH_NODE: 100 100 case OF_RECONFIG_DETACH_NODE: 101 - pr_debug("notify %-15s %s\n", action_names[action], 102 - pr->dn->full_name); 101 + pr_debug("notify %-15s %pOF\n", action_names[action], 102 + pr->dn); 103 103 break; 104 104 case OF_RECONFIG_ADD_PROPERTY: 105 105 case OF_RECONFIG_REMOVE_PROPERTY: 106 106 case OF_RECONFIG_UPDATE_PROPERTY: 107 - pr_debug("notify %-15s %s:%s\n", action_names[action], 108 - pr->dn->full_name, pr->prop->name); 107 + pr_debug("notify %-15s %pOF:%s\n", action_names[action], 108 + pr->dn, pr->prop->name); 109 109 break; 110 110 111 111 } ··· 328 328 329 329 /* We should never be releasing nodes that haven't been detached. */ 330 330 if (!of_node_check_flag(node, OF_DETACHED)) { 331 - pr_err("ERROR: Bad of_node_put() on %s\n", node->full_name); 331 + pr_err("ERROR: Bad of_node_put() on %pOF\n", node); 332 332 dump_stack(); 333 333 return; 334 334 } 335 - 336 335 if (!of_node_check_flag(node, OF_DYNAMIC)) 337 336 return; 338 337 ··· 461 462 case OF_RECONFIG_ADD_PROPERTY: 462 463 case OF_RECONFIG_REMOVE_PROPERTY: 463 464 case OF_RECONFIG_UPDATE_PROPERTY: 464 - pr_debug("cset<%p> %-15s %s/%s\n", ce, action_names[ce->action], 465 - ce->np->full_name, ce->prop->name); 465 + pr_debug("cset<%p> %-15s %pOF/%s\n", ce, action_names[ce->action], 466 + ce->np, ce->prop->name); 466 467 break; 467 468 case OF_RECONFIG_ATTACH_NODE: 468 469 case OF_RECONFIG_DETACH_NODE: 469 - pr_debug("cset<%p> %-15s %s\n", ce, action_names[ce->action], 470 - ce->np->full_name); 470 + pr_debug("cset<%p> %-15s %pOF\n", ce, action_names[ce->action], 471 + ce->np); 471 472 break; 472 473 } 473 474 } ··· 538 539 } 539 540 540 541 if (ret) 541 - pr_err("changeset notifier error @%s\n", ce->np->full_name); 542 + pr_err("changeset notifier error @%pOF\n", ce->np); 542 543 } 543 544 544 545 static int __of_changeset_entry_apply(struct of_changeset_entry *ce) ··· 569 570 570 571 ret = __of_add_property(ce->np, ce->prop); 571 572 if (ret) { 572 - pr_err("changeset: add_property failed @%s/%s\n", 573 - ce->np->full_name, 573 + pr_err("changeset: add_property failed @%pOF/%s\n", 574 + ce->np, 574 575 ce->prop->name); 575 576 break; 576 577 } ··· 578 579 case OF_RECONFIG_REMOVE_PROPERTY: 579 580 ret = __of_remove_property(ce->np, ce->prop); 580 581 if (ret) { 581 - pr_err("changeset: remove_property failed @%s/%s\n", 582 - ce->np->full_name, 582 + pr_err("changeset: remove_property failed @%pOF/%s\n", 583 + ce->np, 583 584 ce->prop->name); 584 585 break; 585 586 } ··· 597 598 598 599 ret = __of_update_property(ce->np, ce->prop, &old_prop); 599 600 if (ret) { 600 - pr_err("changeset: update_property failed @%s/%s\n", 601 - ce->np->full_name, 601 + pr_err("changeset: update_property failed @%pOF/%s\n", 602 + ce->np, 602 603 ce->prop->name); 603 604 break; 604 605 }
+31 -46
drivers/of/irq.c
··· 59 59 struct device_node *of_irq_find_parent(struct device_node *child) 60 60 { 61 61 struct device_node *p; 62 - const __be32 *parp; 62 + phandle parent; 63 63 64 64 if (!of_node_get(child)) 65 65 return NULL; 66 66 67 67 do { 68 - parp = of_get_property(child, "interrupt-parent", NULL); 69 - if (parp == NULL) 68 + if (of_property_read_u32(child, "interrupt-parent", &parent)) { 70 69 p = of_get_parent(child); 71 - else { 70 + } else { 72 71 if (of_irq_workarounds & OF_IMAP_NO_PHANDLE) 73 72 p = of_node_get(of_irq_dflt_pic); 74 73 else 75 - p = of_find_node_by_phandle(be32_to_cpup(parp)); 74 + p = of_find_node_by_phandle(parent); 76 75 } 77 76 of_node_put(child); 78 77 child = p; ··· 116 117 * is none, we are nice and just walk up the tree 117 118 */ 118 119 do { 119 - tmp = of_get_property(ipar, "#interrupt-cells", NULL); 120 - if (tmp != NULL) { 121 - intsize = be32_to_cpu(*tmp); 120 + if (!of_property_read_u32(ipar, "#interrupt-cells", &intsize)) 122 121 break; 123 - } 124 122 tnode = ipar; 125 123 ipar = of_irq_find_parent(ipar); 126 124 of_node_put(tnode); ··· 127 131 goto fail; 128 132 } 129 133 130 - pr_debug("of_irq_parse_raw: ipar=%s, size=%d\n", of_node_full_name(ipar), intsize); 134 + pr_debug("of_irq_parse_raw: ipar=%pOF, size=%d\n", ipar, intsize); 131 135 132 136 if (out_irq->args_count != intsize) 133 137 goto fail; ··· 165 169 /* Now check if cursor is an interrupt-controller and if it is 166 170 * then we are done 167 171 */ 168 - if (of_get_property(ipar, "interrupt-controller", NULL) != 169 - NULL) { 172 + if (of_property_read_bool(ipar, "interrupt-controller")) { 170 173 pr_debug(" -> got it !\n"); 171 174 return 0; 172 175 } ··· 224 229 /* Get #interrupt-cells and #address-cells of new 225 230 * parent 226 231 */ 227 - tmp = of_get_property(newpar, "#interrupt-cells", NULL); 228 - if (tmp == NULL) { 232 + if (of_property_read_u32(newpar, "#interrupt-cells", 233 + &newintsize)) { 229 234 pr_debug(" -> parent lacks #interrupt-cells!\n"); 230 235 goto fail; 231 236 } 232 - newintsize = be32_to_cpu(*tmp); 233 - tmp = of_get_property(newpar, "#address-cells", NULL); 234 - newaddrsize = (tmp == NULL) ? 0 : be32_to_cpu(*tmp); 237 + if (of_property_read_u32(newpar, "#address-cells", 238 + &newaddrsize)) 239 + newaddrsize = 0; 235 240 236 241 pr_debug(" -> newintsize=%d, newaddrsize=%d\n", 237 242 newintsize, newaddrsize); ··· 264 269 skiplevel: 265 270 /* Iterate again with new parent */ 266 271 out_irq->np = newpar; 267 - pr_debug(" -> new parent: %s\n", of_node_full_name(newpar)); 272 + pr_debug(" -> new parent: %pOF\n", newpar); 268 273 of_node_put(ipar); 269 274 ipar = newpar; 270 275 newpar = NULL; ··· 292 297 int of_irq_parse_one(struct device_node *device, int index, struct of_phandle_args *out_irq) 293 298 { 294 299 struct device_node *p; 295 - const __be32 *intspec, *tmp, *addr; 296 - u32 intsize, intlen; 300 + const __be32 *addr; 301 + u32 intsize; 297 302 int i, res; 298 303 299 - pr_debug("of_irq_parse_one: dev=%s, index=%d\n", of_node_full_name(device), index); 304 + pr_debug("of_irq_parse_one: dev=%pOF, index=%d\n", device, index); 300 305 301 306 /* OldWorld mac stuff is "special", handle out of line */ 302 307 if (of_irq_workarounds & OF_IMAP_OLDWORLD_MAC) ··· 311 316 if (!res) 312 317 return of_irq_parse_raw(addr, out_irq); 313 318 314 - /* Get the interrupts property */ 315 - intspec = of_get_property(device, "interrupts", &intlen); 316 - if (intspec == NULL) 317 - return -EINVAL; 318 - 319 - intlen /= sizeof(*intspec); 320 - 321 - pr_debug(" intspec=%d intlen=%d\n", be32_to_cpup(intspec), intlen); 322 - 323 319 /* Look for the interrupt parent. */ 324 320 p = of_irq_find_parent(device); 325 321 if (p == NULL) 326 322 return -EINVAL; 327 323 328 324 /* Get size of interrupt specifier */ 329 - tmp = of_get_property(p, "#interrupt-cells", NULL); 330 - if (tmp == NULL) { 325 + if (of_property_read_u32(p, "#interrupt-cells", &intsize)) { 331 326 res = -EINVAL; 332 327 goto out; 333 328 } 334 - intsize = be32_to_cpu(*tmp); 335 329 336 - pr_debug(" intsize=%d intlen=%d\n", intsize, intlen); 337 - 338 - /* Check index */ 339 - if ((index + 1) * intsize > intlen) { 340 - res = -EINVAL; 341 - goto out; 342 - } 330 + pr_debug(" parent=%pOF, intsize=%d\n", p, intsize); 343 331 344 332 /* Copy intspec into irq structure */ 345 - intspec += index * intsize; 346 333 out_irq->np = p; 347 334 out_irq->args_count = intsize; 348 - for (i = 0; i < intsize; i++) 349 - out_irq->args[i] = be32_to_cpup(intspec++); 335 + for (i = 0; i < intsize; i++) { 336 + res = of_property_read_u32_index(device, "interrupts", 337 + (index * intsize) + i, 338 + out_irq->args + i); 339 + if (res) 340 + goto out; 341 + } 342 + 343 + pr_debug(" intspec=%d\n", *out_irq->args); 344 + 350 345 351 346 /* Check if there are any interrupt-map translations to process */ 352 347 res = of_irq_parse_raw(addr, out_irq); ··· 493 508 INIT_LIST_HEAD(&intc_parent_list); 494 509 495 510 for_each_matching_node_and_match(np, matches, &match) { 496 - if (!of_find_property(np, "interrupt-controller", NULL) || 511 + if (!of_property_read_bool(np, "interrupt-controller") || 497 512 !of_device_is_available(np)) 498 513 continue; 499 514 ··· 540 555 541 556 of_node_set_flag(desc->dev, OF_POPULATED); 542 557 543 - pr_debug("of_irq_init: init %s (%p), parent %p\n", 544 - desc->dev->full_name, 558 + pr_debug("of_irq_init: init %pOF (%p), parent %p\n", 559 + desc->dev, 545 560 desc->dev, desc->interrupt_parent); 546 561 ret = desc->irq_init_cb(desc->dev, 547 562 desc->interrupt_parent);
+2 -2
drivers/of/of_mdio.c
··· 166 166 167 167 if (of_match_node(whitelist_phys, child)) { 168 168 pr_warn(FW_WARN 169 - "%s: Whitelisted compatible string. Please remove\n", 170 - child->full_name); 169 + "%pOF: Whitelisted compatible string. Please remove\n", 170 + child); 171 171 return true; 172 172 } 173 173
+34 -38
drivers/of/of_pci.c
··· 57 57 */ 58 58 int of_pci_get_devfn(struct device_node *np) 59 59 { 60 - unsigned int size; 61 - const __be32 *reg; 60 + u32 reg[5]; 61 + int error; 62 62 63 - reg = of_get_property(np, "reg", &size); 63 + error = of_property_read_u32_array(np, "reg", reg, ARRAY_SIZE(reg)); 64 + if (error) 65 + return error; 64 66 65 - if (!reg || size < 5 * sizeof(__be32)) 66 - return -EINVAL; 67 - 68 - return (be32_to_cpup(reg) >> 8) & 0xff; 67 + return (reg[0] >> 8) & 0xff; 69 68 } 70 69 EXPORT_SYMBOL_GPL(of_pci_get_devfn); 71 70 ··· 77 78 */ 78 79 int of_pci_parse_bus_range(struct device_node *node, struct resource *res) 79 80 { 80 - const __be32 *values; 81 - int len; 81 + u32 bus_range[2]; 82 + int error; 82 83 83 - values = of_get_property(node, "bus-range", &len); 84 - if (!values || len < sizeof(*values) * 2) 85 - return -EINVAL; 84 + error = of_property_read_u32_array(node, "bus-range", bus_range, 85 + ARRAY_SIZE(bus_range)); 86 + if (error) 87 + return error; 86 88 87 89 res->name = node->name; 88 - res->start = be32_to_cpup(values++); 89 - res->end = be32_to_cpup(values); 90 + res->start = bus_range[0]; 91 + res->end = bus_range[1]; 90 92 res->flags = IORESOURCE_BUS; 91 93 92 94 return 0; ··· 105 105 */ 106 106 int of_get_pci_domain_nr(struct device_node *node) 107 107 { 108 - const __be32 *value; 109 - int len; 110 - u16 domain; 108 + u32 domain; 109 + int error; 111 110 112 - value = of_get_property(node, "linux,pci-domain", &len); 113 - if (!value || len < sizeof(*value)) 114 - return -EINVAL; 111 + error = of_property_read_u32(node, "linux,pci-domain", &domain); 112 + if (error) 113 + return error; 115 114 116 - domain = (u16)be32_to_cpup(value); 117 - 118 - return domain; 115 + return (u16)domain; 119 116 } 120 117 EXPORT_SYMBOL_GPL(of_get_pci_domain_nr); 121 118 ··· 201 204 if (!bus_range) 202 205 return -ENOMEM; 203 206 204 - pr_info("host bridge %s ranges:\n", dev->full_name); 207 + pr_info("host bridge %pOF ranges:\n", dev); 205 208 206 209 err = of_pci_parse_bus_range(dev, bus_range); 207 210 if (err) { 208 211 bus_range->start = busno; 209 212 bus_range->end = bus_max; 210 213 bus_range->flags = IORESOURCE_BUS; 211 - pr_info(" No bus range found for %s, using %pR\n", 212 - dev->full_name, bus_range); 214 + pr_info(" No bus range found for %pOF, using %pR\n", 215 + dev, bus_range); 213 216 } else { 214 217 if (bus_range->end > bus_range->start + bus_max) 215 218 bus_range->end = bus_range->start + bus_max; ··· 255 258 256 259 if (resource_type(res) == IORESOURCE_IO) { 257 260 if (!io_base) { 258 - pr_err("I/O range found for %s. Please provide an io_base pointer to save CPU base address\n", 259 - dev->full_name); 261 + pr_err("I/O range found for %pOF. Please provide an io_base pointer to save CPU base address\n", 262 + dev); 260 263 err = -EINVAL; 261 264 goto conversion_failed; 262 265 } 263 266 if (*io_base != (resource_size_t)OF_BAD_ADDR) 264 - pr_warn("More than one I/O resource converted for %s. CPU base address for old range lost!\n", 265 - dev->full_name); 267 + pr_warn("More than one I/O resource converted for %pOF. CPU base address for old range lost!\n", 268 + dev); 266 269 *io_base = range.cpu_addr; 267 270 } 268 271 ··· 322 325 } 323 326 324 327 if (!map_len || map_len % (4 * sizeof(*map))) { 325 - pr_err("%s: Error: Bad %s length: %d\n", np->full_name, 328 + pr_err("%pOF: Error: Bad %s length: %d\n", np, 326 329 map_name, map_len); 327 330 return -EINVAL; 328 331 } ··· 346 349 u32 rid_len = be32_to_cpup(map + 3); 347 350 348 351 if (rid_base & ~map_mask) { 349 - pr_err("%s: Invalid %s translation - %s-mask (0x%x) ignores rid-base (0x%x)\n", 350 - np->full_name, map_name, map_name, 352 + pr_err("%pOF: Invalid %s translation - %s-mask (0x%x) ignores rid-base (0x%x)\n", 353 + np, map_name, map_name, 351 354 map_mask, rid_base); 352 355 return -EFAULT; 353 356 } ··· 372 375 if (id_out) 373 376 *id_out = masked_rid - rid_base + out_base; 374 377 375 - pr_debug("%s: %s, using mask %08x, rid-base: %08x, out-base: %08x, length: %08x, rid: %08x -> %08x\n", 376 - np->full_name, map_name, map_mask, rid_base, out_base, 378 + pr_debug("%pOF: %s, using mask %08x, rid-base: %08x, out-base: %08x, length: %08x, rid: %08x -> %08x\n", 379 + np, map_name, map_mask, rid_base, out_base, 377 380 rid_len, rid, *id_out); 378 381 return 0; 379 382 } 380 383 381 - pr_err("%s: Invalid %s translation - no match for rid 0x%x on %s\n", 382 - np->full_name, map_name, rid, 383 - target && *target ? (*target)->full_name : "any target"); 384 + pr_err("%pOF: Invalid %s translation - no match for rid 0x%x on %pOF\n", 385 + np, map_name, rid, target && *target ? *target : NULL); 384 386 return -EFAULT; 385 387 }
+122 -22
drivers/of/overlay.c
··· 35 35 struct of_overlay_info { 36 36 struct device_node *target; 37 37 struct device_node *overlay; 38 + bool is_symbols_node; 38 39 }; 39 40 40 41 /** ··· 56 55 }; 57 56 58 57 static int of_overlay_apply_one(struct of_overlay *ov, 59 - struct device_node *target, const struct device_node *overlay); 58 + struct device_node *target, const struct device_node *overlay, 59 + bool is_symbols_node); 60 60 61 61 static BLOCKING_NOTIFIER_HEAD(of_overlay_chain); 62 62 ··· 94 92 return 0; 95 93 } 96 94 97 - static int of_overlay_apply_single_property(struct of_overlay *ov, 98 - struct device_node *target, struct property *prop) 95 + static struct property *dup_and_fixup_symbol_prop(struct of_overlay *ov, 96 + const struct property *prop) 99 97 { 100 - struct property *propn, *tprop; 98 + struct of_overlay_info *ovinfo; 99 + struct property *new; 100 + const char *overlay_name; 101 + char *label_path; 102 + char *symbol_path; 103 + const char *target_path; 104 + int k; 105 + int label_path_len; 106 + int overlay_name_len; 107 + int target_path_len; 108 + 109 + if (!prop->value) 110 + return NULL; 111 + symbol_path = prop->value; 112 + 113 + new = kzalloc(sizeof(*new), GFP_KERNEL); 114 + if (!new) 115 + return NULL; 116 + 117 + for (k = 0; k < ov->count; k++) { 118 + ovinfo = &ov->ovinfo_tab[k]; 119 + overlay_name = ovinfo->overlay->full_name; 120 + overlay_name_len = strlen(overlay_name); 121 + if (!strncasecmp(symbol_path, overlay_name, overlay_name_len)) 122 + break; 123 + } 124 + 125 + if (k >= ov->count) 126 + goto err_free; 127 + 128 + target_path = ovinfo->target->full_name; 129 + target_path_len = strlen(target_path); 130 + 131 + label_path = symbol_path + overlay_name_len; 132 + label_path_len = strlen(label_path); 133 + 134 + new->name = kstrdup(prop->name, GFP_KERNEL); 135 + new->length = target_path_len + label_path_len + 1; 136 + new->value = kzalloc(new->length, GFP_KERNEL); 137 + 138 + if (!new->name || !new->value) 139 + goto err_free; 140 + 141 + strcpy(new->value, target_path); 142 + strcpy(new->value + target_path_len, label_path); 143 + 144 + /* mark the property as dynamic */ 145 + of_property_set_flag(new, OF_DYNAMIC); 146 + 147 + return new; 148 + 149 + err_free: 150 + kfree(new->name); 151 + kfree(new->value); 152 + kfree(new); 153 + return NULL; 154 + 155 + 156 + } 157 + 158 + static int of_overlay_apply_single_property(struct of_overlay *ov, 159 + struct device_node *target, struct property *prop, 160 + bool is_symbols_node) 161 + { 162 + struct property *propn = NULL, *tprop; 101 163 102 164 /* NOTE: Multiple changes of single properties not supported */ 103 165 tprop = of_find_property(target, prop->name, NULL); ··· 172 106 of_prop_cmp(prop->name, "linux,phandle") == 0) 173 107 return 0; 174 108 175 - propn = __of_prop_dup(prop, GFP_KERNEL); 109 + if (is_symbols_node) { 110 + /* changing a property in __symbols__ node not allowed */ 111 + if (tprop) 112 + return -EINVAL; 113 + propn = dup_and_fixup_symbol_prop(ov, prop); 114 + } else { 115 + propn = __of_prop_dup(prop, GFP_KERNEL); 116 + } 117 + 176 118 if (propn == NULL) 177 119 return -ENOMEM; 178 120 ··· 204 130 return -ENOMEM; 205 131 206 132 /* NOTE: Multiple mods of created nodes not supported */ 207 - tchild = of_get_child_by_name(target, cname); 133 + for_each_child_of_node(target, tchild) 134 + if (!of_node_cmp(cname, kbasename(tchild->full_name))) 135 + break; 136 + 208 137 if (tchild != NULL) { 209 138 /* new overlay phandle value conflicts with existing value */ 210 139 if (child->phandle) 211 140 return -EINVAL; 212 141 213 142 /* apply overlay recursively */ 214 - ret = of_overlay_apply_one(ov, tchild, child); 143 + ret = of_overlay_apply_one(ov, tchild, child, 0); 215 144 of_node_put(tchild); 216 145 } else { 217 146 /* create empty tree as a target */ 218 - tchild = __of_node_dup(child, "%s/%s", target->full_name, cname); 147 + tchild = __of_node_dup(child, "%pOF/%s", target, cname); 219 148 if (!tchild) 220 149 return -ENOMEM; 221 150 ··· 229 152 if (ret) 230 153 return ret; 231 154 232 - ret = of_overlay_apply_one(ov, tchild, child); 155 + ret = of_overlay_apply_one(ov, tchild, child, 0); 233 156 if (ret) 234 157 return ret; 235 158 } ··· 245 168 * by using the changeset. 246 169 */ 247 170 static int of_overlay_apply_one(struct of_overlay *ov, 248 - struct device_node *target, const struct device_node *overlay) 171 + struct device_node *target, const struct device_node *overlay, 172 + bool is_symbols_node) 249 173 { 250 174 struct device_node *child; 251 175 struct property *prop; 252 176 int ret; 253 177 254 178 for_each_property_of_node(overlay, prop) { 255 - ret = of_overlay_apply_single_property(ov, target, prop); 179 + ret = of_overlay_apply_single_property(ov, target, prop, 180 + is_symbols_node); 256 181 if (ret) { 257 - pr_err("Failed to apply prop @%s/%s\n", 258 - target->full_name, prop->name); 182 + pr_err("Failed to apply prop @%pOF/%s\n", 183 + target, prop->name); 259 184 return ret; 260 185 } 261 186 } 262 187 188 + /* do not allow symbols node to have any children */ 189 + if (is_symbols_node) 190 + return 0; 191 + 263 192 for_each_child_of_node(overlay, child) { 264 193 ret = of_overlay_apply_single_device_node(ov, target, child); 265 194 if (ret != 0) { 266 - pr_err("Failed to apply single node @%s/%s\n", 267 - target->full_name, child->name); 195 + pr_err("Failed to apply single node @%pOF/%s\n", 196 + target, child->name); 268 197 of_node_put(child); 269 198 return ret; 270 199 } ··· 296 213 for (i = 0; i < ov->count; i++) { 297 214 struct of_overlay_info *ovinfo = &ov->ovinfo_tab[i]; 298 215 299 - err = of_overlay_apply_one(ov, ovinfo->target, ovinfo->overlay); 216 + err = of_overlay_apply_one(ov, ovinfo->target, ovinfo->overlay, 217 + ovinfo->is_symbols_node); 300 218 if (err != 0) { 301 - pr_err("apply failed '%s'\n", ovinfo->target->full_name); 219 + pr_err("apply failed '%pOF'\n", ovinfo->target); 302 220 return err; 303 221 } 304 222 } ··· 395 311 for_each_child_of_node(tree, node) 396 312 cnt++; 397 313 314 + if (of_get_child_by_name(tree, "__symbols__")) 315 + cnt++; 316 + 398 317 ovinfo = kcalloc(cnt, sizeof(*ovinfo), GFP_KERNEL); 399 318 if (ovinfo == NULL) 400 319 return -ENOMEM; ··· 407 320 err = of_fill_overlay_info(ov, node, &ovinfo[cnt]); 408 321 if (err == 0) 409 322 cnt++; 323 + } 324 + 325 + node = of_get_child_by_name(tree, "__symbols__"); 326 + if (node) { 327 + ovinfo[cnt].overlay = node; 328 + ovinfo[cnt].target = of_find_node_by_path("/__symbols__"); 329 + ovinfo[cnt].is_symbols_node = 1; 330 + 331 + if (!ovinfo[cnt].target) { 332 + pr_err("no symbols in root of device tree.\n"); 333 + return -EINVAL; 334 + } 335 + 336 + cnt++; 410 337 } 411 338 412 339 /* if nothing filled, return error */ ··· 501 400 /* build the overlay info structures */ 502 401 err = of_build_overlay_info(ov, tree); 503 402 if (err) { 504 - pr_err("of_build_overlay_info() failed for tree@%s\n", 505 - tree->full_name); 403 + pr_err("of_build_overlay_info() failed for tree@%pOF\n", 404 + tree); 506 405 goto err_free_idr; 507 406 } 508 407 ··· 581 480 /* check against each subtree affected by this overlay */ 582 481 list_for_each_entry(ce, &ovt->cset.entries, node) { 583 482 if (overlay_subtree_check(ce->np, dn)) { 584 - pr_err("%s: #%d clashes #%d @%s\n", 585 - __func__, ov->id, ovt->id, 586 - dn->full_name); 483 + pr_err("%s: #%d clashes #%d @%pOF\n", 484 + __func__, ov->id, ovt->id, dn); 587 485 return 0; 588 486 } 589 487 }
+17 -17
drivers/of/platform.c
··· 118 118 int rc, i, num_reg = 0, num_irq; 119 119 struct resource *res, temp_res; 120 120 121 - dev = platform_device_alloc("", -1); 121 + dev = platform_device_alloc("", PLATFORM_DEVID_NONE); 122 122 if (!dev) 123 123 return NULL; 124 124 ··· 228 228 const void *prop; 229 229 int i, ret; 230 230 231 - pr_debug("Creating amba device %s\n", node->full_name); 231 + pr_debug("Creating amba device %pOF\n", node); 232 232 233 233 if (!of_device_is_available(node) || 234 234 of_node_test_and_set_flag(node, OF_POPULATED)) ··· 259 259 260 260 ret = of_address_to_resource(node, 0, &dev->res); 261 261 if (ret) { 262 - pr_err("amba: of_address_to_resource() failed (%d) for %s\n", 263 - ret, node->full_name); 262 + pr_err("amba: of_address_to_resource() failed (%d) for %pOF\n", 263 + ret, node); 264 264 goto err_free; 265 265 } 266 266 267 267 ret = amba_device_add(dev, &iomem_resource); 268 268 if (ret) { 269 - pr_err("amba_device_add() failed (%d) for %s\n", 270 - ret, node->full_name); 269 + pr_err("amba_device_add() failed (%d) for %pOF\n", 270 + ret, node); 271 271 goto err_free; 272 272 } 273 273 ··· 310 310 if (!of_address_to_resource(np, 0, &res)) 311 311 if (res.start != auxdata->phys_addr) 312 312 continue; 313 - pr_debug("%s: devname=%s\n", np->full_name, auxdata->name); 313 + pr_debug("%pOF: devname=%s\n", np, auxdata->name); 314 314 return auxdata; 315 315 } 316 316 ··· 323 323 if (!of_device_is_compatible(np, auxdata->compatible)) 324 324 continue; 325 325 if (!auxdata->phys_addr && !auxdata->name) { 326 - pr_debug("%s: compatible match\n", np->full_name); 326 + pr_debug("%pOF: compatible match\n", np); 327 327 return auxdata; 328 328 } 329 329 } ··· 356 356 357 357 /* Make sure it has a compatible property */ 358 358 if (strict && (!of_get_property(bus, "compatible", NULL))) { 359 - pr_debug("%s() - skipping %s, no compatible prop\n", 360 - __func__, bus->full_name); 359 + pr_debug("%s() - skipping %pOF, no compatible prop\n", 360 + __func__, bus); 361 361 return 0; 362 362 } 363 363 364 364 if (of_node_check_flag(bus, OF_POPULATED_BUS)) { 365 - pr_debug("%s() - skipping %s, already populated\n", 366 - __func__, bus->full_name); 365 + pr_debug("%s() - skipping %pOF, already populated\n", 366 + __func__, bus); 367 367 return 0; 368 368 } 369 369 ··· 387 387 return 0; 388 388 389 389 for_each_child_of_node(bus, child) { 390 - pr_debug(" create child: %s\n", child->full_name); 390 + pr_debug(" create child: %pOF\n", child); 391 391 rc = of_platform_bus_create(child, matches, lookup, &dev->dev, strict); 392 392 if (rc) { 393 393 of_node_put(child); ··· 419 419 return -EINVAL; 420 420 421 421 pr_debug("%s()\n", __func__); 422 - pr_debug(" starting at: %s\n", root->full_name); 422 + pr_debug(" starting at: %pOF\n", root); 423 423 424 424 /* Do a self check of bus type, if there's a match, create children */ 425 425 if (of_match_node(matches, root)) { ··· 471 471 return -EINVAL; 472 472 473 473 pr_debug("%s()\n", __func__); 474 - pr_debug(" starting at: %s\n", root->full_name); 474 + pr_debug(" starting at: %pOF\n", root); 475 475 476 476 for_each_child_of_node(root, child) { 477 477 rc = of_platform_bus_create(child, matches, lookup, parent, true); ··· 660 660 of_dev_put(pdev_parent); 661 661 662 662 if (pdev == NULL) { 663 - pr_err("%s: failed to create for '%s'\n", 664 - __func__, rd->dn->full_name); 663 + pr_err("%s: failed to create for '%pOF'\n", 664 + __func__, rd->dn); 665 665 /* of_platform_device_create tosses the error code */ 666 666 return notifier_from_errno(-EINVAL); 667 667 }
+11 -12
drivers/of/property.c
··· 55 55 return -ENODATA; 56 56 57 57 if (prop->length % elem_size != 0) { 58 - pr_err("size of %s in node %s is not a multiple of %d\n", 59 - propname, np->full_name, elem_size); 58 + pr_err("size of %s in node %pOF is not a multiple of %d\n", 59 + propname, np, elem_size); 60 60 return -EINVAL; 61 61 } 62 62 ··· 537 537 { 538 538 struct device_node *port_node = of_get_parent(node); 539 539 540 - WARN_ONCE(!port_node, "%s(): endpoint %s has no parent node\n", 541 - __func__, node->full_name); 540 + WARN_ONCE(!port_node, "%s(): endpoint %pOF has no parent node\n", 541 + __func__, node); 542 542 543 543 memset(endpoint, 0, sizeof(*endpoint)); 544 544 ··· 621 621 of_node_put(node); 622 622 623 623 if (!port) { 624 - pr_err("graph: no port node found in %s\n", 625 - parent->full_name); 624 + pr_err("graph: no port node found in %pOF\n", parent); 626 625 return NULL; 627 626 } 628 627 } else { 629 628 port = of_get_parent(prev); 630 - if (WARN_ONCE(!port, "%s(): endpoint %s has no parent node\n", 631 - __func__, prev->full_name)) 629 + if (WARN_ONCE(!port, "%s(): endpoint %pOF has no parent node\n", 630 + __func__, prev)) 632 631 return NULL; 633 632 } 634 633 ··· 796 797 797 798 endpoint_node = of_graph_get_endpoint_by_regs(node, port, endpoint); 798 799 if (!endpoint_node) { 799 - pr_debug("no valid endpoint (%d, %d) for node %s\n", 800 - port, endpoint, node->full_name); 800 + pr_debug("no valid endpoint (%d, %d) for node %pOF\n", 801 + port, endpoint, node); 801 802 return NULL; 802 803 } 803 804 ··· 944 945 static struct fwnode_handle * 945 946 of_fwnode_graph_get_remote_endpoint(const struct fwnode_handle *fwnode) 946 947 { 947 - return of_fwnode_handle(of_parse_phandle(to_of_node(fwnode), 948 - "remote-endpoint", 0)); 948 + return of_fwnode_handle( 949 + of_graph_get_remote_endpoint(to_of_node(fwnode))); 949 950 } 950 951 951 952 static struct fwnode_handle *
+16 -7
drivers/of/unittest-data/Makefile
··· 1 1 obj-y += testcases.dtb.o 2 - obj-y += overlay.dtb.o 3 - obj-y += overlay_bad_phandle.dtb.o 4 - obj-y += overlay_base.dtb.o 5 2 6 3 targets += testcases.dtb testcases.dtb.S 4 + 5 + ifdef CONFIG_OF_OVERLAY 6 + 7 + obj-y += overlay.dtb.o 8 + obj-y += overlay_bad_phandle.dtb.o 9 + obj-y += overlay_bad_symbol.dtb.o 10 + obj-y += overlay_base.dtb.o 11 + 7 12 targets += overlay.dtb overlay.dtb.S 8 13 targets += overlay_bad_phandle.dtb overlay_bad_phandle.dtb.S 14 + targets += overlay_bad_symbol.dtb overlay_bad_symbol.dtb.S 9 15 targets += overlay_base.dtb overlay_base.dtb.S 10 - 11 - .PRECIOUS: \ 12 - $(obj)/%.dtb.S \ 13 - $(obj)/%.dtb 14 16 15 17 # enable creation of __symbols__ node 16 18 DTC_FLAGS_overlay := -@ 17 19 DTC_FLAGS_overlay_bad_phandle := -@ 20 + DTC_FLAGS_overlay_bad_symbol := -@ 18 21 DTC_FLAGS_overlay_base := -@ 22 + 23 + endif 24 + 25 + .PRECIOUS: \ 26 + $(obj)/%.dtb.S \ 27 + $(obj)/%.dtb
+27 -4
drivers/of/unittest-data/overlay.dts
··· 7 7 target = <&electric_1>; 8 8 9 9 __overlay__ { 10 - status = "ok"; 10 + status = "okay"; 11 11 12 12 hvac_2: hvac-large-1 { 13 13 compatible = "ot,hvac-large"; ··· 23 23 __overlay__ { 24 24 #address-cells = <1>; 25 25 #size-cells = <1>; 26 - status = "ok"; 26 + status = "okay"; 27 27 28 - ride@200 { 28 + ride@100 { 29 + #address-cells = <1>; 30 + #size-cells = <1>; 31 + 32 + track@30 { 33 + incline-up = < 48 32 16 >; 34 + }; 35 + 36 + track@40 { 37 + incline-up = < 47 31 15 >; 38 + }; 39 + }; 40 + 41 + ride_200: ride@200 { 42 + #address-cells = <1>; 43 + #size-cells = <1>; 29 44 compatible = "ot,ferris-wheel"; 30 45 reg = < 0x00000200 0x100 >; 31 46 hvac-provider = < &hvac_2 >; ··· 51 36 spin-rph = < 30 >; 52 37 gondolas = < 16 >; 53 38 gondola-capacity = < 6 >; 39 + 40 + ride_200_left: track@10 { 41 + reg = < 0x00000010 0x10 >; 42 + }; 43 + 44 + ride_200_right: track@20 { 45 + reg = < 0x00000020 0x10 >; 46 + }; 54 47 }; 55 48 }; 56 49 }; ··· 67 44 target = <&lights_2>; 68 45 69 46 __overlay__ { 70 - status = "ok"; 47 + status = "okay"; 71 48 color = "purple", "white", "red", "green"; 72 49 rate = < 3 256 >; 73 50 };
+22
drivers/of/unittest-data/overlay_bad_symbol.dts
··· 1 + /dts-v1/; 2 + /plugin/; 3 + 4 + / { 5 + 6 + fragment@0 { 7 + target = <&electric_1>; 8 + 9 + __overlay__ { 10 + 11 + // This label should cause an error when the overlay 12 + // is applied. There is already a symbol hvac_1 13 + // in the base tree 14 + hvac_1: hvac-medium-2 { 15 + compatible = "ot,hvac-medium"; 16 + heat-range = < 50 75 >; 17 + cool-range = < 60 80 >; 18 + }; 19 + 20 + }; 21 + }; 22 + };
+11
drivers/of/unittest-data/overlay_base.dts
··· 44 44 orientation = < 127 >; 45 45 46 46 ride@100 { 47 + #address-cells = <1>; 48 + #size-cells = <1>; 47 49 compatible = "ot,roller-coaster"; 48 50 reg = < 0x00000100 0x100 >; 49 51 hvac-provider = < &hvac_1 >; ··· 55 53 spin-controller = < &spin_ctrl_2 5 &spin_ctrl_2 7 >; 56 54 spin-controller-names = "track_1", "track_2"; 57 55 queues = < 2 >; 56 + 57 + track@30 { 58 + reg = < 0x00000030 0x10 >; 59 + }; 60 + 61 + track@40 { 62 + reg = < 0x00000040 0x10 >; 63 + }; 64 + 58 65 }; 59 66 }; 60 67
+47 -30
drivers/of/unittest.c
··· 46 46 static void __init of_unittest_find_node_by_name(void) 47 47 { 48 48 struct device_node *np; 49 - const char *options; 49 + const char *options, *name; 50 50 51 51 np = of_find_node_by_path("/testcase-data"); 52 - unittest(np && !strcmp("/testcase-data", np->full_name), 52 + name = kasprintf(GFP_KERNEL, "%pOF", np); 53 + unittest(np && !strcmp("/testcase-data", name), 53 54 "find /testcase-data failed\n"); 54 55 of_node_put(np); 56 + kfree(name); 55 57 56 58 /* Test if trailing '/' works */ 57 59 np = of_find_node_by_path("/testcase-data/"); 58 60 unittest(!np, "trailing '/' on /testcase-data/ should fail\n"); 59 61 60 62 np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a"); 61 - unittest(np && !strcmp("/testcase-data/phandle-tests/consumer-a", np->full_name), 63 + name = kasprintf(GFP_KERNEL, "%pOF", np); 64 + unittest(np && !strcmp("/testcase-data/phandle-tests/consumer-a", name), 62 65 "find /testcase-data/phandle-tests/consumer-a failed\n"); 63 66 of_node_put(np); 67 + kfree(name); 64 68 65 69 np = of_find_node_by_path("testcase-alias"); 66 - unittest(np && !strcmp("/testcase-data", np->full_name), 70 + name = kasprintf(GFP_KERNEL, "%pOF", np); 71 + unittest(np && !strcmp("/testcase-data", name), 67 72 "find testcase-alias failed\n"); 68 73 of_node_put(np); 74 + kfree(name); 69 75 70 76 /* Test if trailing '/' works on aliases */ 71 77 np = of_find_node_by_path("testcase-alias/"); 72 78 unittest(!np, "trailing '/' on testcase-alias/ should fail\n"); 73 79 74 80 np = of_find_node_by_path("testcase-alias/phandle-tests/consumer-a"); 75 - unittest(np && !strcmp("/testcase-data/phandle-tests/consumer-a", np->full_name), 81 + name = kasprintf(GFP_KERNEL, "%pOF", np); 82 + unittest(np && !strcmp("/testcase-data/phandle-tests/consumer-a", name), 76 83 "find testcase-alias/phandle-tests/consumer-a failed\n"); 77 84 of_node_put(np); 85 + kfree(name); 78 86 79 87 np = of_find_node_by_path("/testcase-data/missing-path"); 80 - unittest(!np, "non-existent path returned node %s\n", np->full_name); 88 + unittest(!np, "non-existent path returned node %pOF\n", np); 81 89 of_node_put(np); 82 90 83 91 np = of_find_node_by_path("missing-alias"); 84 - unittest(!np, "non-existent alias returned node %s\n", np->full_name); 92 + unittest(!np, "non-existent alias returned node %pOF\n", np); 85 93 of_node_put(np); 86 94 87 95 np = of_find_node_by_path("testcase-alias/missing-path"); 88 - unittest(!np, "non-existent alias with relative path returned node %s\n", np->full_name); 96 + unittest(!np, "non-existent alias with relative path returned node %pOF\n", np); 89 97 of_node_put(np); 90 98 91 99 np = of_find_node_opts_by_path("/testcase-data:testoption", &options); ··· 323 315 324 316 hash_for_each_possible(phandle_ht, nh, node, np->phandle) { 325 317 if (nh->np->phandle == np->phandle) { 326 - pr_info("Duplicate phandle! %i used by %s and %s\n", 327 - np->phandle, nh->np->full_name, np->full_name); 318 + pr_info("Duplicate phandle! %i used by %pOF and %pOF\n", 319 + np->phandle, nh->np, np); 328 320 dup_count++; 329 321 break; 330 322 } ··· 414 406 passed = false; 415 407 } 416 408 417 - unittest(passed, "index %i - data error on node %s rc=%i\n", 418 - i, args.np->full_name, rc); 409 + unittest(passed, "index %i - data error on node %pOF rc=%i\n", 410 + i, args.np, rc); 419 411 } 420 412 421 413 /* Check for missing list property */ ··· 598 590 599 591 /* Make sure node names are constructed correctly */ 600 592 unittest((np = of_find_node_by_path("/testcase-data/changeset/n2/n21")), 601 - "'%s' not added\n", n21->full_name); 593 + "'%pOF' not added\n", n21); 602 594 of_node_put(np); 603 595 604 596 unittest(!of_changeset_revert(&chgset), "revert failed\n"); ··· 629 621 passed &= (args.args_count == 1); 630 622 passed &= (args.args[0] == (i + 1)); 631 623 632 - unittest(passed, "index %i - data error on node %s rc=%i\n", 633 - i, args.np->full_name, rc); 624 + unittest(passed, "index %i - data error on node %pOF rc=%i\n", 625 + i, args.np, rc); 634 626 } 635 627 of_node_put(np); 636 628 ··· 675 667 default: 676 668 passed = false; 677 669 } 678 - unittest(passed, "index %i - data error on node %s rc=%i\n", 679 - i, args.np->full_name, rc); 670 + unittest(passed, "index %i - data error on node %pOF rc=%i\n", 671 + i, args.np, rc); 680 672 } 681 673 of_node_put(np); 682 674 } ··· 745 737 passed = false; 746 738 } 747 739 748 - unittest(passed, "index %i - data error on node %s rc=%i\n", 749 - i, args.np->full_name, rc); 740 + unittest(passed, "index %i - data error on node %pOF rc=%i\n", 741 + i, args.np, rc); 750 742 } 751 743 of_node_put(np); 752 744 } ··· 925 917 { 926 918 struct device_node *next, *dup, *child; 927 919 unsigned long flags; 920 + const char *full_name; 928 921 929 - dup = of_find_node_by_path(np->full_name); 922 + full_name = kasprintf(GFP_KERNEL, "%pOF", np); 923 + dup = of_find_node_by_path(full_name); 924 + kfree(full_name); 930 925 if (dup) { 931 926 update_node_properties(np, dup); 932 927 return 0; ··· 1034 1023 1035 1024 } 1036 1025 1037 - dev_dbg(dev, "%s for node @%s\n", __func__, np->full_name); 1026 + dev_dbg(dev, "%s for node @%pOF\n", __func__, np); 1038 1027 1039 1028 of_platform_populate(np, NULL, NULL, &pdev->dev); 1040 1029 ··· 1046 1035 struct device *dev = &pdev->dev; 1047 1036 struct device_node *np = dev->of_node; 1048 1037 1049 - dev_dbg(dev, "%s for node @%s\n", __func__, np->full_name); 1038 + dev_dbg(dev, "%s for node @%pOF\n", __func__, np); 1050 1039 return 0; 1051 1040 } 1052 1041 ··· 1660 1649 1661 1650 } 1662 1651 1663 - dev_dbg(dev, "%s for node @%s\n", __func__, np->full_name); 1652 + dev_dbg(dev, "%s for node @%pOF\n", __func__, np); 1664 1653 1665 1654 std = devm_kzalloc(dev, sizeof(*std), GFP_KERNEL); 1666 1655 if (!std) { ··· 1698 1687 struct device_node *np = dev->of_node; 1699 1688 struct unittest_i2c_bus_data *std = platform_get_drvdata(pdev); 1700 1689 1701 - dev_dbg(dev, "%s for node @%s\n", __func__, np->full_name); 1690 + dev_dbg(dev, "%s for node @%pOF\n", __func__, np); 1702 1691 i2c_del_adapter(&std->adap); 1703 1692 1704 1693 return 0; ··· 1729 1718 return -EINVAL; 1730 1719 } 1731 1720 1732 - dev_dbg(dev, "%s for node @%s\n", __func__, np->full_name); 1721 + dev_dbg(dev, "%s for node @%pOF\n", __func__, np); 1733 1722 1734 1723 return 0; 1735 1724 }; ··· 1739 1728 struct device *dev = &client->dev; 1740 1729 struct device_node *np = client->dev.of_node; 1741 1730 1742 - dev_dbg(dev, "%s for node @%s\n", __func__, np->full_name); 1731 + dev_dbg(dev, "%s for node @%pOF\n", __func__, np); 1743 1732 return 0; 1744 1733 } 1745 1734 ··· 1774 1763 struct i2c_mux_core *muxc; 1775 1764 u32 reg, max_reg; 1776 1765 1777 - dev_dbg(dev, "%s for node @%s\n", __func__, np->full_name); 1766 + dev_dbg(dev, "%s for node @%pOF\n", __func__, np); 1778 1767 1779 1768 if (!np) { 1780 1769 dev_err(dev, "No OF node\n"); ··· 1819 1808 struct device_node *np = client->dev.of_node; 1820 1809 struct i2c_mux_core *muxc = i2c_get_clientdata(client); 1821 1810 1822 - dev_dbg(dev, "%s for node @%s\n", __func__, np->full_name); 1811 + dev_dbg(dev, "%s for node @%pOF\n", __func__, np); 1823 1812 i2c_mux_del_adapters(muxc); 1824 1813 return 0; 1825 1814 } ··· 1994 1983 static inline void __init of_unittest_overlay(void) { } 1995 1984 #endif 1996 1985 1986 + #ifdef CONFIG_OF_OVERLAY 1987 + 1997 1988 /* 1998 1989 * __dtb_ot_begin[] and __dtb_ot_end[] are created by cmd_dt_S_dtb 1999 1990 * in scripts/Makefile.lib ··· 2023 2010 OVERLAY_INFO_EXTERN(overlay_base); 2024 2011 OVERLAY_INFO_EXTERN(overlay); 2025 2012 OVERLAY_INFO_EXTERN(overlay_bad_phandle); 2026 - 2027 - #ifdef CONFIG_OF_OVERLAY 2013 + OVERLAY_INFO_EXTERN(overlay_bad_symbol); 2028 2014 2029 2015 /* order of entries is hard-coded into users of overlays[] */ 2030 2016 static struct overlay_info overlays[] = { 2031 2017 OVERLAY_INFO(overlay_base, -9999), 2032 2018 OVERLAY_INFO(overlay, 0), 2033 2019 OVERLAY_INFO(overlay_bad_phandle, -EINVAL), 2020 + OVERLAY_INFO(overlay_bad_symbol, -EINVAL), 2034 2021 {} 2035 2022 }; 2036 2023 ··· 2302 2289 2303 2290 unittest(overlay_data_add(2), 2304 2291 "Adding overlay 'overlay_bad_phandle' failed\n"); 2292 + 2293 + unittest(overlay_data_add(3), 2294 + "Adding overlay 'overlay_bad_symbol' failed\n"); 2295 + 2305 2296 return; 2306 2297 2307 2298 err_unlock:
+6 -6
drivers/virt/fsl_hypervisor.c
··· 841 841 handle = of_get_property(np, "interrupts", NULL); 842 842 irq = irq_of_parse_and_map(np, 0); 843 843 if (!handle || (irq == NO_IRQ)) { 844 - pr_err("fsl-hv: no 'interrupts' property in %s node\n", 845 - np->full_name); 844 + pr_err("fsl-hv: no 'interrupts' property in %pOF node\n", 845 + np); 846 846 continue; 847 847 } 848 848 ··· 869 869 */ 870 870 dbisr->partition = ret = get_parent_handle(np); 871 871 if (ret < 0) { 872 - pr_err("fsl-hv: node %s has missing or " 873 - "malformed parent\n", np->full_name); 872 + pr_err("fsl-hv: node %pOF has missing or " 873 + "malformed parent\n", np); 874 874 kfree(dbisr); 875 875 continue; 876 876 } ··· 881 881 ret = request_irq(irq, fsl_hv_isr, 0, np->name, dbisr); 882 882 883 883 if (ret < 0) { 884 - pr_err("fsl-hv: could not request irq %u for node %s\n", 885 - irq, np->full_name); 884 + pr_err("fsl-hv: could not request irq %u for node %pOF\n", 885 + irq, np); 886 886 kfree(dbisr); 887 887 continue; 888 888 }
+1 -1
include/linux/of_device.h
··· 50 50 struct device *cpu_dev; 51 51 cpu_dev = get_cpu_device(cpu); 52 52 if (!cpu_dev) 53 - return NULL; 53 + return of_get_cpu_node(cpu, NULL); 54 54 return of_node_get(cpu_dev->of_node); 55 55 } 56 56
+4 -4
scripts/Makefile.lib
··· 173 173 174 174 ld_flags = $(LDFLAGS) $(ldflags-y) 175 175 176 + DTC_INCLUDE := $(srctree)/scripts/dtc/include-prefixes 177 + 176 178 dtc_cpp_flags = -Wp,-MD,$(depfile).pre.tmp -nostdinc \ 177 - -I$(srctree)/arch/$(SRCARCH)/boot/dts \ 178 - -I$(srctree)/scripts/dtc/include-prefixes \ 179 - -I$(srctree)/drivers/of/testcase-data \ 179 + $(addprefix -I,$(DTC_INCLUDE)) \ 180 180 -undef -D__DTS__ 181 181 182 182 # Finds the multi-part object the current object will be linked into ··· 317 317 cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \ 318 318 $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ 319 319 $(DTC) -O dtb -o $@ -b 0 \ 320 - -i $(dir $<) $(DTC_FLAGS) \ 320 + $(addprefix -i,$(dir $<) $(DTC_INCLUDE)) $(DTC_FLAGS) \ 321 321 -d $(depfile).dtc.tmp $(dtc-tmp) ; \ 322 322 cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) 323 323