DeviceTree fixes for v4.15 (part2):

- Fixes from overlay code rework. A trifecta of fixes to the locking,
   an out of bounds access, and a memory leak in of_overlay_apply().
 
 - Clean-up at25 eeprom binding document
 
 - Remove leading '0x' in unit-addresses from binding docs
 -----BEGIN PGP SIGNATURE-----
 
 iQItBAABCAAXBQJaKrC8EBxyb2JoQGtlcm5lbC5vcmcACgkQ+vtdtY28YcPY7Q/9
 GOZDOhajewVoYo+LkKl8+1wtdih7QHOvziKY8Jn1Nd/o6ASXU5ltOxvk5iF/q4tz
 x7JFKMkUo8eyOy5p5XnkqAzOnQ+rP+aRvHxjeAiMtQZRtMcDJ6bv4FRMI4/hq610
 QocAcxzblXJayy/Ad2sbuMr34O6QBkvnicMiLHZNb2IhCgk0nxBbyiNJDr868XE6
 CwlkKgo+y0fFJKkW3y4v4jaMdMlmcxTPTY+4jOJoGnnD1LgNwNRgkTFCzRQLebBk
 E5D6XweMS7G0IOO8wLYEn70JYsNk4wRGjIvlZGR1e5REQNgT9H+1J8rXLxlWc5rk
 l2o4V3+nrBj3BpVCG5oQWBrwVsMZS8ExdnRnrGmZJ25C1EFzlRHGYtsvo6fvXsLs
 T2VfYPEDhN5IHZiUU/rcHfz1VpHjuBrtFStPQkFTSTfO52n22Q5KWBxHUqUjXbBZ
 phcPoHcDm+FfO4swkLuIP0wDAiNj8SJpJJNnHLrgIuy52UvXe/VD5BlY5RgXIZbg
 XhxAcsNKrqfH8ggfbM7ndXkUoFrDyl/dOupfwbtwzNqDQiPGvpjkr9hmE7XIL2aJ
 tyGahgkpZ3n49oGJPe5rTHKJacZBkl6rNI2CFQfERXyGYUmQSEU6AViSSyRG6ljK
 kXLmIzNPgJJF/I9YC3q8Wr6FUoOAapE7Zww/Cc83xJ8=
 =vBBN
 -----END PGP SIGNATURE-----

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

Pull DeviceTree fixes from Rob Herring:
 "Another set of DT fixes:

   - Fixes from overlay code rework. A trifecta of fixes to the locking,
     an out of bounds access, and a memory leak in of_overlay_apply()

   - Clean-up at25 eeprom binding document

   - Remove leading '0x' in unit-addresses from binding docs"

* tag 'devicetree-fixes-for-4.15-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
  of: overlay: Make node skipping in init_overlay_changeset() clearer
  of: overlay: Fix out-of-bounds write in init_overlay_changeset()
  of: overlay: Fix (un)locking in of_overlay_apply()
  of: overlay: Fix memory leak in of_overlay_apply() error path
  dt-bindings: eeprom: at25: Document device-specific compatible values
  dt-bindings: eeprom: at25: Grammar s/are can/can/
  dt-bindings: Remove leading 0x from bindings notation
  of: overlay: Remove else after goto
  of: Spelling s/changset/changeset/
  of: unittest: Remove bogus overlay mutex release from overlay_data_add()
This commit is contained in:
Linus Torvalds 2017-12-08 13:00:51 -08:00
commit 78d9b04844
77 changed files with 149 additions and 151 deletions

View File

@ -15,7 +15,7 @@ Required properties:
Example: Example:
ccn@0x2000000000 { ccn@2000000000 {
compatible = "arm,ccn-504"; compatible = "arm,ccn-504";
reg = <0x20 0x00000000 0 0x1000000>; reg = <0x20 0x00000000 0 0x1000000>;
interrupts = <0 181 4>; interrupts = <0 181 4>;

View File

@ -49,7 +49,7 @@ An interrupt consumer on an SoC using crossbar will use:
interrupts = <GIC_SPI request_number interrupt_level> interrupts = <GIC_SPI request_number interrupt_level>
Example: Example:
device_x@0x4a023000 { device_x@4a023000 {
/* Crossbar 8 used */ /* Crossbar 8 used */
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
... ...

View File

@ -8,7 +8,7 @@ Required properties:
- interrupts : Should contain MC General interrupt. - interrupts : Should contain MC General interrupt.
Example: Example:
memory-controller@0x7000f000 { memory-controller@7000f000 {
compatible = "nvidia,tegra20-mc"; compatible = "nvidia,tegra20-mc";
reg = <0x7000f000 0x024 reg = <0x7000f000 0x024
0x7000f03c 0x3c4>; 0x7000f03c 0x3c4>;

View File

@ -17,7 +17,7 @@ Optional properties:
- clock-output-names : From common clock binding. - clock-output-names : From common clock binding.
Example: Example:
clock@0xff000000 { clock@ff000000 {
compatible = "adi,axi-clkgen"; compatible = "adi,axi-clkgen";
#clock-cells = <0>; #clock-cells = <0>;
reg = <0xff000000 0x1000>; reg = <0xff000000 0x1000>;

View File

@ -23,7 +23,7 @@ Example:
clocks = <&clk_osc>; clocks = <&clk_osc>;
}; };
aux: aux@0x7e215004 { aux: aux@7e215004 {
compatible = "brcm,bcm2835-aux"; compatible = "brcm,bcm2835-aux";
#clock-cells = <1>; #clock-cells = <1>;
reg = <0x7e215000 0x8>; reg = <0x7e215000 0x8>;

View File

@ -24,7 +24,7 @@ tree sources.
Example 1: An example of a clock controller node is listed below. Example 1: An example of a clock controller node is listed below.
clock: clock-controller@0x10030000 { clock: clock-controller@10030000 {
compatible = "samsung,exynos4210-clock"; compatible = "samsung,exynos4210-clock";
reg = <0x10030000 0x20000>; reg = <0x10030000 0x20000>;
#clock-cells = <1>; #clock-cells = <1>;

View File

@ -22,7 +22,7 @@ tree sources.
Example 1: An example of a clock controller node is listed below. Example 1: An example of a clock controller node is listed below.
clock: clock-controller@0x10010000 { clock: clock-controller@10010000 {
compatible = "samsung,exynos5250-clock"; compatible = "samsung,exynos5250-clock";
reg = <0x10010000 0x30000>; reg = <0x10010000 0x30000>;
#clock-cells = <1>; #clock-cells = <1>;

View File

@ -30,7 +30,7 @@ Example 1: An example of a clock controller node is listed below.
#clock-cells = <0>; #clock-cells = <0>;
}; };
clock: clock-controller@0x10010000 { clock: clock-controller@10010000 {
compatible = "samsung,exynos5410-clock"; compatible = "samsung,exynos5410-clock";
reg = <0x10010000 0x30000>; reg = <0x10010000 0x30000>;
#clock-cells = <1>; #clock-cells = <1>;

View File

@ -23,7 +23,7 @@ tree sources.
Example 1: An example of a clock controller node is listed below. Example 1: An example of a clock controller node is listed below.
clock: clock-controller@0x10010000 { clock: clock-controller@10010000 {
compatible = "samsung,exynos5420-clock"; compatible = "samsung,exynos5420-clock";
reg = <0x10010000 0x30000>; reg = <0x10010000 0x30000>;
#clock-cells = <1>; #clock-cells = <1>;

View File

@ -21,7 +21,7 @@ tree sources.
Example: An example of a clock controller node is listed below. Example: An example of a clock controller node is listed below.
clock: clock-controller@0x10010000 { clock: clock-controller@10010000 {
compatible = "samsung,exynos5440-clock"; compatible = "samsung,exynos5440-clock";
reg = <0x160000 0x10000>; reg = <0x160000 0x10000>;
#clock-cells = <1>; #clock-cells = <1>;

View File

@ -14,7 +14,7 @@ Required properties:
Example: Example:
pllctrl: pll-controller@0x02310000 { pllctrl: pll-controller@02310000 {
compatible = "ti,keystone-pllctrl", "syscon"; compatible = "ti,keystone-pllctrl", "syscon";
reg = <0x02310000 0x200>; reg = <0x02310000 0x200>;
}; };

View File

@ -20,13 +20,13 @@ ID in its "clocks" phandle cell. See include/dt-bindings/clock/zx296702-clock.h
for the full list of zx296702 clock IDs. for the full list of zx296702 clock IDs.
topclk: topcrm@0x09800000 { topclk: topcrm@09800000 {
compatible = "zte,zx296702-topcrm-clk"; compatible = "zte,zx296702-topcrm-clk";
reg = <0x09800000 0x1000>; reg = <0x09800000 0x1000>;
#clock-cells = <1>; #clock-cells = <1>;
}; };
uart0: serial@0x09405000 { uart0: serial@09405000 {
compatible = "zte,zx296702-uart"; compatible = "zte,zx296702-uart";
reg = <0x09405000 0x1000>; reg = <0x09405000 0x1000>;
interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -456,7 +456,7 @@ System ON/OFF key driver
Definition: this is phandle to the register map node. Definition: this is phandle to the register map node.
EXAMPLE: EXAMPLE:
snvs-pwrkey@0x020cc000 { snvs-pwrkey@020cc000 {
compatible = "fsl,sec-v4.0-pwrkey"; compatible = "fsl,sec-v4.0-pwrkey";
regmap = <&snvs>; regmap = <&snvs>;
interrupts = <0 4 0x4> interrupts = <0 4 0x4>
@ -545,7 +545,7 @@ FULL EXAMPLE
interrupts = <93 2>; interrupts = <93 2>;
}; };
snvs-pwrkey@0x020cc000 { snvs-pwrkey@020cc000 {
compatible = "fsl,sec-v4.0-pwrkey"; compatible = "fsl,sec-v4.0-pwrkey";
regmap = <&sec_mon>; regmap = <&sec_mon>;
interrupts = <0 4 0x4>; interrupts = <0 4 0x4>;

View File

@ -9,7 +9,7 @@ Required properties:
- clock-names : the name of clock used by the DFI, must be "pclk_ddr_mon"; - clock-names : the name of clock used by the DFI, must be "pclk_ddr_mon";
Example: Example:
dfi: dfi@0xff630000 { dfi: dfi@ff630000 {
compatible = "rockchip,rk3399-dfi"; compatible = "rockchip,rk3399-dfi";
reg = <0x00 0xff630000 0x00 0x4000>; reg = <0x00 0xff630000 0x00 0x4000>;
rockchip,pmu = <&pmugrf>; rockchip,pmu = <&pmugrf>;

View File

@ -27,7 +27,7 @@ Optional properties:
Example: Example:
fb0: fb@0x00500000 { fb0: fb@00500000 {
compatible = "atmel,at91sam9g45-lcdc"; compatible = "atmel,at91sam9g45-lcdc";
reg = <0x00500000 0x1000>; reg = <0x00500000 0x1000>;
interrupts = <23 3 0>; interrupts = <23 3 0>;
@ -41,7 +41,7 @@ Example:
Example for fixed framebuffer memory: Example for fixed framebuffer memory:
fb0: fb@0x00500000 { fb0: fb@00500000 {
compatible = "atmel,at91sam9263-lcdc"; compatible = "atmel,at91sam9263-lcdc";
reg = <0x00700000 0x1000 0x70000000 0x200000>; reg = <0x00700000 0x1000 0x70000000 0x200000>;
[...] [...]

View File

@ -73,7 +73,7 @@ Hypervisor OS configuration:
max-read-transactions = <31>; max-read-transactions = <31>;
channel-reset-timeout-cycles = <0x500>; channel-reset-timeout-cycles = <0x500>;
hidma_24: dma-controller@0x5c050000 { hidma_24: dma-controller@5c050000 {
compatible = "qcom,hidma-1.0"; compatible = "qcom,hidma-1.0";
reg = <0 0x5c050000 0x0 0x1000>, reg = <0 0x5c050000 0x0 0x1000>,
<0 0x5c0b0000 0x0 0x1000>; <0 0x5c0b0000 0x0 0x1000>;
@ -85,7 +85,7 @@ Hypervisor OS configuration:
Guest OS configuration: Guest OS configuration:
hidma_24: dma-controller@0x5c050000 { hidma_24: dma-controller@5c050000 {
compatible = "qcom,hidma-1.0"; compatible = "qcom,hidma-1.0";
reg = <0 0x5c050000 0x0 0x1000>, reg = <0 0x5c050000 0x0 0x1000>,
<0 0x5c0b0000 0x0 0x1000>; <0 0x5c0b0000 0x0 0x1000>;

View File

@ -13,7 +13,7 @@ Required properties:
Example: Example:
Controller: Controller:
dma: dma-controller@0x09c00000{ dma: dma-controller@09c00000{
compatible = "zte,zx296702-dma"; compatible = "zte,zx296702-dma";
reg = <0x09c00000 0x1000>; reg = <0x09c00000 0x1000>;
clocks = <&topclk ZX296702_DMA_ACLK>; clocks = <&topclk ZX296702_DMA_ACLK>;

View File

@ -1,7 +1,12 @@
EEPROMs (SPI) compatible with Atmel at25. EEPROMs (SPI) compatible with Atmel at25.
Required properties: Required properties:
- compatible : "atmel,at25". - compatible : Should be "<vendor>,<type>", and generic value "atmel,at25".
Example "<vendor>,<type>" values:
"microchip,25lc040"
"st,m95m02"
"st,m95256"
- reg : chip select number - reg : chip select number
- spi-max-frequency : max spi frequency to use - spi-max-frequency : max spi frequency to use
- pagesize : size of the eeprom page - pagesize : size of the eeprom page
@ -13,7 +18,7 @@ Optional properties:
- spi-cpol : SPI inverse clock polarity, as per spi-bus bindings. - spi-cpol : SPI inverse clock polarity, as per spi-bus bindings.
- read-only : this parameter-less property disables writes to the eeprom - read-only : this parameter-less property disables writes to the eeprom
Obsolete legacy properties are can be used in place of "size", "pagesize", Obsolete legacy properties can be used in place of "size", "pagesize",
"address-width", and "read-only": "address-width", and "read-only":
- at25,byte-len : total eeprom size in bytes - at25,byte-len : total eeprom size in bytes
- at25,addr-mode : addr-mode flags, as defined in include/linux/spi/eeprom.h - at25,addr-mode : addr-mode flags, as defined in include/linux/spi/eeprom.h
@ -22,8 +27,8 @@ Obsolete legacy properties are can be used in place of "size", "pagesize",
Additional compatible properties are also allowed. Additional compatible properties are also allowed.
Example: Example:
at25@0 { eeprom@0 {
compatible = "atmel,at25", "st,m95256"; compatible = "st,m95256", "atmel,at25";
reg = <0> reg = <0>
spi-max-frequency = <5000000>; spi-max-frequency = <5000000>;
spi-cpha; spi-cpha;

View File

@ -30,7 +30,7 @@ Optional properties:
Example: Example:
gpio_altr: gpio@0xff200000 { gpio_altr: gpio@ff200000 {
compatible = "altr,pio-1.0"; compatible = "altr,pio-1.0";
reg = <0xff200000 0x10>; reg = <0xff200000 0x10>;
interrupts = <0 45 4>; interrupts = <0 45 4>;

View File

@ -18,7 +18,7 @@ Optional properties:
Example Example
/ { / {
i2c4: i2c4@0x10054000 { i2c4: i2c4@10054000 {
compatible = "ingenic,jz4780-i2c"; compatible = "ingenic,jz4780-i2c";
reg = <0x10054000 0x1000>; reg = <0x10054000 0x1000>;

View File

@ -10,7 +10,7 @@ Required properties:
Example: Example:
hp03@0x77 { hp03@77 {
compatible = "hoperf,hp03"; compatible = "hoperf,hp03";
reg = <0x77>; reg = <0x77>;
xclr-gpio = <&portc 0 0x0>; xclr-gpio = <&portc 0 0x0>;

View File

@ -15,7 +15,7 @@ Optional properties:
Example: Example:
i2c@80110000 { i2c@80110000 {
bu21013_tp@0x5c { bu21013_tp@5c {
compatible = "rohm,bu21013_tp"; compatible = "rohm,bu21013_tp";
reg = <0x5c>; reg = <0x5c>;
touch-gpio = <&gpio2 20 0x4>; touch-gpio = <&gpio2 20 0x4>;

View File

@ -155,7 +155,7 @@ Example:
<0x0 0xe112f000 0 0x02000>, <0x0 0xe112f000 0 0x02000>,
<0x0 0xe1140000 0 0x10000>, <0x0 0xe1140000 0 0x10000>,
<0x0 0xe1160000 0 0x10000>; <0x0 0xe1160000 0 0x10000>;
v2m0: v2m@0x8000 { v2m0: v2m@8000 {
compatible = "arm,gic-v2m-frame"; compatible = "arm,gic-v2m-frame";
msi-controller; msi-controller;
reg = <0x0 0x80000 0 0x1000>; reg = <0x0 0x80000 0 0x1000>;
@ -163,7 +163,7 @@ Example:
.... ....
v2mN: v2m@0x9000 { v2mN: v2m@9000 {
compatible = "arm,gic-v2m-frame"; compatible = "arm,gic-v2m-frame";
msi-controller; msi-controller;
reg = <0x0 0x90000 0 0x1000>; reg = <0x0 0x90000 0 0x1000>;

View File

@ -71,7 +71,7 @@ Example 2:
* An interrupt generating device that is wired to a Meta external * An interrupt generating device that is wired to a Meta external
* trigger block. * trigger block.
*/ */
uart1: uart@0x02004c00 { uart1: uart@02004c00 {
// Interrupt source '5' that is level-sensitive. // Interrupt source '5' that is level-sensitive.
// Note that there are only two cells as specified in the // Note that there are only two cells as specified in the
// interrupt parent's '#interrupt-cells' property. // interrupt parent's '#interrupt-cells' property.

View File

@ -51,7 +51,7 @@ Example 1:
/* /*
* TZ1090 PDC block * TZ1090 PDC block
*/ */
pdc: pdc@0x02006000 { pdc: pdc@02006000 {
// This is an interrupt controller node. // This is an interrupt controller node.
interrupt-controller; interrupt-controller;

View File

@ -39,7 +39,7 @@ Example:
The following is an example from the SPEAr320 SoC dtsi file. The following is an example from the SPEAr320 SoC dtsi file.
shirq: interrupt-controller@0xb3000000 { shirq: interrupt-controller@b3000000 {
compatible = "st,spear320-shirq"; compatible = "st,spear320-shirq";
reg = <0xb3000000 0x1000>; reg = <0xb3000000 0x1000>;
interrupts = <28 29 30 1>; interrupts = <28 29 30 1>;

View File

@ -14,7 +14,7 @@ Optional properties:
depends on the interrupt controller parent. depends on the interrupt controller parent.
Example: Example:
mbox_tx: mailbox@0x100 { mbox_tx: mailbox@100 {
compatible = "altr,mailbox-1.0"; compatible = "altr,mailbox-1.0";
reg = <0x100 0x8>; reg = <0x100 0x8>;
interrupt-parent = < &gic_0 >; interrupt-parent = < &gic_0 >;
@ -22,7 +22,7 @@ Example:
#mbox-cells = <1>; #mbox-cells = <1>;
}; };
mbox_rx: mailbox@0x200 { mbox_rx: mailbox@200 {
compatible = "altr,mailbox-1.0"; compatible = "altr,mailbox-1.0";
reg = <0x200 0x8>; reg = <0x200 0x8>;
interrupt-parent = < &gic_0 >; interrupt-parent = < &gic_0 >;
@ -40,7 +40,7 @@ support only one channel).The equivalent "mbox-names" property value can be
used to give a name to the communication channel to be used by the client user. used to give a name to the communication channel to be used by the client user.
Example: Example:
mclient0: mclient0@0x400 { mclient0: mclient0@400 {
compatible = "client-1.0"; compatible = "client-1.0";
reg = <0x400 0x10>; reg = <0x400 0x10>;
mbox-names = "mbox-tx", "mbox-rx"; mbox-names = "mbox-tx", "mbox-rx";

View File

@ -15,7 +15,7 @@ Optional properties:
- brcm,use-bcm-hdr: present if a BCM header precedes each frame. - brcm,use-bcm-hdr: present if a BCM header precedes each frame.
Example: Example:
pdc0: iproc-pdc0@0x612c0000 { pdc0: iproc-pdc0@612c0000 {
compatible = "brcm,iproc-pdc-mbox"; compatible = "brcm,iproc-pdc-mbox";
reg = <0 0x612c0000 0 0x445>; /* PDC FS0 regs */ reg = <0 0x612c0000 0 0x445>; /* PDC FS0 regs */
interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -17,7 +17,7 @@ Optional properties:
Example: Example:
gsc_0: gsc@0x13e00000 { gsc_0: gsc@13e00000 {
compatible = "samsung,exynos5250-gsc"; compatible = "samsung,exynos5250-gsc";
reg = <0x13e00000 0x1000>; reg = <0x13e00000 0x1000>;
interrupts = <0 85 0>; interrupts = <0 85 0>;

View File

@ -68,7 +68,7 @@ vcodec_dec: vcodec@16000000 {
"vdec_bus_clk_src"; "vdec_bus_clk_src";
}; };
vcodec_enc: vcodec@0x18002000 { vcodec_enc: vcodec@18002000 {
compatible = "mediatek,mt8173-vcodec-enc"; compatible = "mediatek,mt8173-vcodec-enc";
reg = <0 0x18002000 0 0x1000>, /*VENC_SYS*/ reg = <0 0x18002000 0 0x1000>, /*VENC_SYS*/
<0 0x19002000 0 0x1000>; /*VENC_LT_SYS*/ <0 0x19002000 0 0x1000>; /*VENC_LT_SYS*/

View File

@ -44,7 +44,7 @@ Device node example
vin0 = &vin0; vin0 = &vin0;
}; };
vin0: vin@0xe6ef0000 { vin0: vin@e6ef0000 {
compatible = "renesas,vin-r8a7790", "renesas,rcar-gen2-vin"; compatible = "renesas,vin-r8a7790", "renesas,rcar-gen2-vin";
clocks = <&mstp8_clks R8A7790_CLK_VIN0>; clocks = <&mstp8_clks R8A7790_CLK_VIN0>;
reg = <0 0xe6ef0000 0 0x1000>; reg = <0 0xe6ef0000 0 0x1000>;

View File

@ -138,7 +138,7 @@ Example:
}; };
/* MIPI CSI-2 bus IF sensor */ /* MIPI CSI-2 bus IF sensor */
s5c73m3: sensor@0x1a { s5c73m3: sensor@1a {
compatible = "samsung,s5c73m3"; compatible = "samsung,s5c73m3";
reg = <0x1a>; reg = <0x1a>;
vddio-supply = <...>; vddio-supply = <...>;

View File

@ -8,7 +8,7 @@ Bindings, specific for the sh_mobile_ceu_camera.c driver:
Example: Example:
ceu0: ceu@0xfe910000 { ceu0: ceu@fe910000 {
compatible = "renesas,sh-mobile-ceu"; compatible = "renesas,sh-mobile-ceu";
reg = <0xfe910000 0xa0>; reg = <0xfe910000 0xa0>;
interrupt-parent = <&intcs>; interrupt-parent = <&intcs>;

View File

@ -154,7 +154,7 @@ imx074 is linked to ceu0 through the MIPI CSI-2 receiver (csi2). ceu0 has a
'port' node which may indicate that at any time only one of the following data 'port' node which may indicate that at any time only one of the following data
pipelines can be active: ov772x -> ceu0 or imx074 -> csi2 -> ceu0. pipelines can be active: ov772x -> ceu0 or imx074 -> csi2 -> ceu0.
ceu0: ceu@0xfe910000 { ceu0: ceu@fe910000 {
compatible = "renesas,sh-mobile-ceu"; compatible = "renesas,sh-mobile-ceu";
reg = <0xfe910000 0xa0>; reg = <0xfe910000 0xa0>;
interrupts = <0x880>; interrupts = <0x880>;
@ -193,9 +193,9 @@ pipelines can be active: ov772x -> ceu0 or imx074 -> csi2 -> ceu0.
}; };
}; };
i2c0: i2c@0xfff20000 { i2c0: i2c@fff20000 {
... ...
ov772x_1: camera@0x21 { ov772x_1: camera@21 {
compatible = "ovti,ov772x"; compatible = "ovti,ov772x";
reg = <0x21>; reg = <0x21>;
vddio-supply = <&regulator1>; vddio-supply = <&regulator1>;
@ -219,7 +219,7 @@ pipelines can be active: ov772x -> ceu0 or imx074 -> csi2 -> ceu0.
}; };
}; };
imx074: camera@0x1a { imx074: camera@1a {
compatible = "sony,imx074"; compatible = "sony,imx074";
reg = <0x1a>; reg = <0x1a>;
vddio-supply = <&regulator1>; vddio-supply = <&regulator1>;
@ -239,7 +239,7 @@ pipelines can be active: ov772x -> ceu0 or imx074 -> csi2 -> ceu0.
}; };
}; };
csi2: csi2@0xffc90000 { csi2: csi2@ffc90000 {
compatible = "renesas,sh-mobile-csi2"; compatible = "renesas,sh-mobile-csi2";
reg = <0xffc90000 0x1000>; reg = <0xffc90000 0x1000>;
interrupts = <0x17a0>; interrupts = <0x17a0>;

View File

@ -46,7 +46,7 @@ Optional properties:
Example: Example:
emif1: emif@0x4c000000 { emif1: emif@4c000000 {
compatible = "ti,emif-4d"; compatible = "ti,emif-4d";
ti,hwmods = "emif2"; ti,hwmods = "emif2";
phy-type = <1>; phy-type = <1>;

View File

@ -13,7 +13,7 @@ Required properties:
Example: Example:
devctrl: device-state-control@0x02620000 { devctrl: device-state-control@02620000 {
compatible = "ti,keystone-devctrl", "syscon"; compatible = "ti,keystone-devctrl", "syscon";
reg = <0x02620000 0x1000>; reg = <0x02620000 0x1000>;
}; };

View File

@ -9,7 +9,7 @@ Required properties:
- reg : Location and size of bounce buffer - reg : Location and size of bounce buffer
Example: Example:
smc@0x3404c000 { smc@3404c000 {
compatible = "brcm,bcm11351-smc", "brcm,kona-smc"; compatible = "brcm,bcm11351-smc", "brcm,kona-smc";
reg = <0x3404c000 0x400>; //1 KiB in SRAM reg = <0x3404c000 0x400>; //1 KiB in SRAM
}; };

View File

@ -12,7 +12,7 @@ Refer to clocks/clock-bindings.txt for generic clock consumer properties.
Example: Example:
sdio2: sdio@0x3f1a0000 { sdio2: sdio@3f1a0000 {
compatible = "brcm,kona-sdhci"; compatible = "brcm,kona-sdhci";
reg = <0x3f1a0000 0x10000>; reg = <0x3f1a0000 0x10000>;
clocks = <&sdio3_clk>; clocks = <&sdio3_clk>;

View File

@ -24,7 +24,7 @@ Optional properties:
Example: Example:
sdhci0: sdhci@0x18041000 { sdhci0: sdhci@18041000 {
compatible = "brcm,sdhci-iproc-cygnus"; compatible = "brcm,sdhci-iproc-cygnus";
reg = <0x18041000 0x100>; reg = <0x18041000 0x100>;
interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -55,7 +55,7 @@ Examples:
[hwmod populated DMA resources] [hwmod populated DMA resources]
mmc1: mmc@0x4809c000 { mmc1: mmc@4809c000 {
compatible = "ti,omap4-hsmmc"; compatible = "ti,omap4-hsmmc";
reg = <0x4809c000 0x400>; reg = <0x4809c000 0x400>;
ti,hwmods = "mmc1"; ti,hwmods = "mmc1";
@ -67,7 +67,7 @@ Examples:
[generic DMA request binding] [generic DMA request binding]
mmc1: mmc@0x4809c000 { mmc1: mmc@4809c000 {
compatible = "ti,omap4-hsmmc"; compatible = "ti,omap4-hsmmc";
reg = <0x4809c000 0x400>; reg = <0x4809c000 0x400>;
ti,hwmods = "mmc1"; ti,hwmods = "mmc1";

View File

@ -82,15 +82,15 @@ gpmc: gpmc@6e000000 {
label = "bootloader-nor"; label = "bootloader-nor";
reg = <0 0x40000>; reg = <0 0x40000>;
}; };
partition@0x40000 { partition@40000 {
label = "params-nor"; label = "params-nor";
reg = <0x40000 0x40000>; reg = <0x40000 0x40000>;
}; };
partition@0x80000 { partition@80000 {
label = "kernel-nor"; label = "kernel-nor";
reg = <0x80000 0x200000>; reg = <0x80000 0x200000>;
}; };
partition@0x280000 { partition@280000 {
label = "filesystem-nor"; label = "filesystem-nor";
reg = <0x240000 0x7d80000>; reg = <0x240000 0x7d80000>;
}; };

View File

@ -131,7 +131,7 @@ Example:
read-only; read-only;
reg = <0x00000000 0x00400000>; reg = <0x00000000 0x00400000>;
}; };
android@0x00400000 { android@00400000 {
label = "android"; label = "android";
reg = <0x00400000 0x12c00000>; reg = <0x00400000 0x12c00000>;
}; };

View File

@ -52,7 +52,7 @@ Optional properties:
Example: Example:
tse_sub_0_eth_tse_0: ethernet@0x1,00000000 { tse_sub_0_eth_tse_0: ethernet@1,00000000 {
compatible = "altr,tse-msgdma-1.0"; compatible = "altr,tse-msgdma-1.0";
reg = <0x00000001 0x00000000 0x00000400>, reg = <0x00000001 0x00000000 0x00000400>,
<0x00000001 0x00000460 0x00000020>, <0x00000001 0x00000460 0x00000020>,
@ -90,7 +90,7 @@ Example:
}; };
}; };
tse_sub_1_eth_tse_0: ethernet@0x1,00001000 { tse_sub_1_eth_tse_0: ethernet@1,00001000 {
compatible = "altr,tse-msgdma-1.0"; compatible = "altr,tse-msgdma-1.0";
reg = <0x00000001 0x00001000 0x00000400>, reg = <0x00000001 0x00001000 0x00000400>,
<0x00000001 0x00001460 0x00000020>, <0x00000001 0x00001460 0x00000020>,

View File

@ -18,7 +18,7 @@ Example :
This example shows these optional properties, plus other properties This example shows these optional properties, plus other properties
required for the TI Davinci MDIO driver. required for the TI Davinci MDIO driver.
davinci_mdio: ethernet@0x5c030000 { davinci_mdio: ethernet@5c030000 {
compatible = "ti,davinci_mdio"; compatible = "ti,davinci_mdio";
reg = <0x5c030000 0x1000>; reg = <0x5c030000 0x1000>;
#address-cells = <1>; #address-cells = <1>;

View File

@ -28,7 +28,7 @@ Required properties:
Example: Example:
gmii_to_sgmii_converter: phy@0x100000240 { gmii_to_sgmii_converter: phy@100000240 {
compatible = "altr,gmii-to-sgmii-2.0"; compatible = "altr,gmii-to-sgmii-2.0";
reg = <0x00000001 0x00000240 0x00000008>, reg = <0x00000001 0x00000240 0x00000008>,
<0x00000001 0x00000200 0x00000040>; <0x00000001 0x00000200 0x00000040>;

View File

@ -36,7 +36,7 @@ Optional properties:
Example: Example:
cpu@0x0 { cpu@0 {
device_type = "cpu"; device_type = "cpu";
compatible = "altr,nios2-1.0"; compatible = "altr,nios2-1.0";
reg = <0>; reg = <0>;

View File

@ -25,7 +25,7 @@ Optional properties:
- bus-range: PCI bus numbers covered - bus-range: PCI bus numbers covered
Example Example
pcie_0: pcie@0xc00000000 { pcie_0: pcie@c00000000 {
compatible = "altr,pcie-root-port-1.0"; compatible = "altr,pcie-root-port-1.0";
reg = <0xc0000000 0x20000000>, reg = <0xc0000000 0x20000000>,
<0xff220000 0x00004000>; <0xff220000 0x00004000>;

View File

@ -52,7 +52,7 @@ Additional required properties for imx7d-pcie:
Example: Example:
pcie@0x01000000 { pcie@01000000 {
compatible = "fsl,imx6q-pcie", "snps,dw-pcie"; compatible = "fsl,imx6q-pcie", "snps,dw-pcie";
reg = <0x01ffc000 0x04000>, reg = <0x01ffc000 0x04000>,
<0x01f00000 0x80000>; <0x01f00000 0x80000>;

View File

@ -21,7 +21,7 @@ Optional properties:
- dma-coherent: Present if DMA operations are coherent. - dma-coherent: Present if DMA operations are coherent.
Hip05 Example (note that Hip06 is the same except compatible): Hip05 Example (note that Hip06 is the same except compatible):
pcie@0xb0080000 { pcie@b0080000 {
compatible = "hisilicon,hip05-pcie", "snps,dw-pcie"; compatible = "hisilicon,hip05-pcie", "snps,dw-pcie";
reg = <0 0xb0080000 0 0x10000>, <0x220 0x00000000 0 0x2000>; reg = <0 0xb0080000 0 0x10000>, <0x220 0x00000000 0 0x2000>;
reg-names = "rc_dbi", "config"; reg-names = "rc_dbi", "config";

View File

@ -45,7 +45,7 @@ Optional properties:
- usb3_vbus-supply : regulator phandle for controller usb3 vbus - usb3_vbus-supply : regulator phandle for controller usb3 vbus
Example: Example:
usbphy: phy@0x01c13400 { usbphy: phy@01c13400 {
#phy-cells = <1>; #phy-cells = <1>;
compatible = "allwinner,sun4i-a10-usb-phy"; compatible = "allwinner,sun4i-a10-usb-phy";
/* phy base regs, phy1 pmu reg, phy2 pmu reg */ /* phy base regs, phy1 pmu reg, phy2 pmu reg */

View File

@ -25,7 +25,7 @@ Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
For example: For example:
pinmux: pinmux@0x0301d0c8 { pinmux: pinmux@0301d0c8 {
compatible = "brcm,cygnus-pinmux"; compatible = "brcm,cygnus-pinmux";
reg = <0x0301d0c8 0x1b0>; reg = <0x0301d0c8 0x1b0>;

View File

@ -96,14 +96,14 @@ For example, pinctrl might have subnodes like the following:
For a specific board, if it wants to use sd1, For a specific board, if it wants to use sd1,
it can add the following to its board-specific .dts file. it can add the following to its board-specific .dts file.
sd1: sd@0x12340000 { sd1: sd@12340000 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&sd1_pmx0>; pinctrl-0 = <&sd1_pmx0>;
} }
or or
sd1: sd@0x12340000 { sd1: sd@12340000 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&sd1_pmx1>; pinctrl-0 = <&sd1_pmx1>;
} }

View File

@ -41,7 +41,7 @@ For example, pinctrl might have subnodes like the following:
For a specific board, if it wants to use uart2 without hardware flow control, For a specific board, if it wants to use uart2 without hardware flow control,
it can add the following to its board-specific .dts file. it can add the following to its board-specific .dts file.
uart2: uart@0xb0070000 { uart2: uart@b0070000 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&uart2_noflow_pins_a>; pinctrl-0 = <&uart2_noflow_pins_a>;
} }

View File

@ -136,7 +136,7 @@ Example for rk3188:
#size-cells = <1>; #size-cells = <1>;
ranges; ranges;
gpio0: gpio0@0x2000a000 { gpio0: gpio0@2000a000 {
compatible = "rockchip,rk3188-gpio-bank0"; compatible = "rockchip,rk3188-gpio-bank0";
reg = <0x2000a000 0x100>; reg = <0x2000a000 0x100>;
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
@ -149,7 +149,7 @@ Example for rk3188:
#interrupt-cells = <2>; #interrupt-cells = <2>;
}; };
gpio1: gpio1@0x2003c000 { gpio1: gpio1@2003c000 {
compatible = "rockchip,gpio-bank"; compatible = "rockchip,gpio-bank";
reg = <0x2003c000 0x100>; reg = <0x2003c000 0x100>;
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -107,7 +107,7 @@ regulators (twl_reg1 and twl_reg2),
... ...
}; };
mmc: mmc@0x0 { mmc: mmc@0 {
... ...
... ...
vmmc-supply = <&twl_reg1>; vmmc-supply = <&twl_reg1>;

View File

@ -12,7 +12,7 @@ Optional properties:
Example: Example:
uart@0x4000c400 { uart@4000c400 {
compatible = "energymicro,efm32-uart"; compatible = "energymicro,efm32-uart";
reg = <0x4000c400 0x400>; reg = <0x4000c400 0x400>;
interrupts = <15>; interrupts = <15>;

View File

@ -14,7 +14,7 @@ Required properties:
Example: Example:
ps20: ps2@0x01c2a000 { ps20: ps2@01c2a000 {
compatible = "allwinner,sun4i-a10-ps2"; compatible = "allwinner,sun4i-a10-ps2";
reg = <0x01c2a000 0x400>; reg = <0x01c2a000 0x400>;
interrupts = <0 62 4>; interrupts = <0 62 4>;

View File

@ -220,7 +220,7 @@ qmss: qmss@2a40000 {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges; ranges;
pdsp0@0x2a10000 { pdsp0@2a10000 {
reg = <0x2a10000 0x1000>, reg = <0x2a10000 0x1000>,
<0x2a0f000 0x100>, <0x2a0f000 0x100>,
<0x2a0c000 0x3c8>, <0x2a0c000 0x3c8>,

View File

@ -21,7 +21,7 @@ please check:
Example: Example:
i2s: i2s@0x77600000 { i2s: i2s@77600000 {
compatible = "adi,axi-i2s-1.00.a"; compatible = "adi,axi-i2s-1.00.a";
reg = <0x77600000 0x1000>; reg = <0x77600000 0x1000>;
clocks = <&clk 15>, <&audio_clock>; clocks = <&clk 15>, <&audio_clock>;

View File

@ -20,7 +20,7 @@ please check:
Example: Example:
spdif: spdif@0x77400000 { spdif: spdif@77400000 {
compatible = "adi,axi-spdif-tx-1.00.a"; compatible = "adi,axi-spdif-tx-1.00.a";
reg = <0x77600000 0x1000>; reg = <0x77600000 0x1000>;
clocks = <&clk 15>, <&audio_clock>; clocks = <&clk 15>, <&audio_clock>;

View File

@ -20,7 +20,7 @@ Optional properties:
Example: Example:
&i2c { &i2c {
ak4613: ak4613@0x10 { ak4613: ak4613@10 {
compatible = "asahi-kasei,ak4613"; compatible = "asahi-kasei,ak4613";
reg = <0x10>; reg = <0x10>;
}; };

View File

@ -17,7 +17,7 @@ Optional properties:
Example 1: Example 1:
&i2c { &i2c {
ak4648: ak4648@0x12 { ak4648: ak4648@12 {
compatible = "asahi-kasei,ak4642"; compatible = "asahi-kasei,ak4642";
reg = <0x12>; reg = <0x12>;
}; };

View File

@ -10,7 +10,7 @@ Required properties:
Example: Example:
&i2c { &i2c {
max98371: max98371@0x31 { max98371: max98371@31 {
compatible = "maxim,max98371"; compatible = "maxim,max98371";
reg = <0x31>; reg = <0x31>;
}; };

View File

@ -10,7 +10,7 @@ Required properties:
Example: Example:
&i2c { &i2c {
max9867: max9867@0x18 { max9867: max9867@18 {
compatible = "maxim,max9867"; compatible = "maxim,max9867";
reg = <0x18>; reg = <0x18>;
}; };

View File

@ -20,7 +20,7 @@ Required properties:
Example: Example:
sh_fsi2: sh_fsi2@0xec230000 { sh_fsi2: sh_fsi2@ec230000 {
compatible = "renesas,sh_fsi2"; compatible = "renesas,sh_fsi2";
reg = <0xec230000 0x400>; reg = <0xec230000 0x400>;
interrupts = <0 146 0x4>; interrupts = <0 146 0x4>;

View File

@ -33,7 +33,7 @@ Required properties on RK3288:
Example for the rk3188 SPDIF controller: Example for the rk3188 SPDIF controller:
spdif: spdif@0x1011e000 { spdif: spdif@1011e000 {
compatible = "rockchip,rk3188-spdif", "rockchip,rk3066-spdif"; compatible = "rockchip,rk3188-spdif", "rockchip,rk3066-spdif";
reg = <0x1011e000 0x2000>; reg = <0x1011e000 0x2000>;
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -51,7 +51,7 @@ Optional properties:
Example: Example:
sti_uni_player1: sti-uni-player@0x8D81000 { sti_uni_player1: sti-uni-player@8D81000 {
compatible = "st,stih407-uni-player-hdmi"; compatible = "st,stih407-uni-player-hdmi";
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
st,syscfg = <&syscfg_core>; st,syscfg = <&syscfg_core>;
@ -63,7 +63,7 @@ Example:
st,tdm-mode = <1>; st,tdm-mode = <1>;
}; };
sti_uni_player2: sti-uni-player@0x8D82000 { sti_uni_player2: sti-uni-player@8D82000 {
compatible = "st,stih407-uni-player-pcm-out"; compatible = "st,stih407-uni-player-pcm-out";
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
st,syscfg = <&syscfg_core>; st,syscfg = <&syscfg_core>;
@ -74,7 +74,7 @@ Example:
dma-names = "tx"; dma-names = "tx";
}; };
sti_uni_player3: sti-uni-player@0x8D85000 { sti_uni_player3: sti-uni-player@8D85000 {
compatible = "st,stih407-uni-player-spdif"; compatible = "st,stih407-uni-player-spdif";
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
st,syscfg = <&syscfg_core>; st,syscfg = <&syscfg_core>;
@ -85,7 +85,7 @@ Example:
dma-names = "tx"; dma-names = "tx";
}; };
sti_uni_reader1: sti-uni-reader@0x8D84000 { sti_uni_reader1: sti-uni-reader@8D84000 {
compatible = "st,stih407-uni-reader-hdmi"; compatible = "st,stih407-uni-reader-hdmi";
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
st,syscfg = <&syscfg_core>; st,syscfg = <&syscfg_core>;

View File

@ -19,7 +19,7 @@ Recommended properties :
Example: Example:
spi1: spi@0x4000c400 { /* USART1 */ spi1: spi@4000c400 { /* USART1 */
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
compatible = "energymicro,efm32-spi"; compatible = "energymicro,efm32-spi";

View File

@ -239,7 +239,7 @@ cpus {
* A simple fan controller which supports 10 speeds of operation * A simple fan controller which supports 10 speeds of operation
* (represented as 0-9). * (represented as 0-9).
*/ */
fan0: fan@0x48 { fan0: fan@48 {
... ...
cooling-min-level = <0>; cooling-min-level = <0>;
cooling-max-level = <9>; cooling-max-level = <9>;
@ -252,7 +252,7 @@ ocp {
/* /*
* A simple IC with a single bandgap temperature sensor. * A simple IC with a single bandgap temperature sensor.
*/ */
bandgap0: bandgap@0x0000ED00 { bandgap0: bandgap@0000ED00 {
... ...
#thermal-sensor-cells = <0>; #thermal-sensor-cells = <0>;
}; };
@ -330,7 +330,7 @@ ocp {
/* /*
* A simple IC with several bandgap temperature sensors. * A simple IC with several bandgap temperature sensors.
*/ */
bandgap0: bandgap@0x0000ED00 { bandgap0: bandgap@0000ED00 {
... ...
#thermal-sensor-cells = <1>; #thermal-sensor-cells = <1>;
}; };
@ -447,7 +447,7 @@ one thermal zone.
/* /*
* A simple IC with a single temperature sensor. * A simple IC with a single temperature sensor.
*/ */
adc: sensor@0x49 { adc: sensor@49 {
... ...
#thermal-sensor-cells = <0>; #thermal-sensor-cells = <0>;
}; };
@ -458,7 +458,7 @@ ocp {
/* /*
* A simple IC with a single bandgap temperature sensor. * A simple IC with a single bandgap temperature sensor.
*/ */
bandgap0: bandgap@0x0000ED00 { bandgap0: bandgap@0000ED00 {
... ...
#thermal-sensor-cells = <0>; #thermal-sensor-cells = <0>;
}; };
@ -516,7 +516,7 @@ with many sensors and many cooling devices.
/* /*
* An IC with several temperature sensor. * An IC with several temperature sensor.
*/ */
adc_dummy: sensor@0x50 { adc_dummy: sensor@50 {
... ...
#thermal-sensor-cells = <1>; /* sensor internal ID */ #thermal-sensor-cells = <1>; /* sensor internal ID */
}; };

View File

@ -32,7 +32,7 @@ Optional properties:
Example: Example:
ufsphy1: ufsphy@0xfc597000 { ufsphy1: ufsphy@fc597000 {
compatible = "qcom,ufs-phy-qmp-20nm"; compatible = "qcom,ufs-phy-qmp-20nm";
reg = <0xfc597000 0x800>; reg = <0xfc597000 0x800>;
reg-names = "phy_mem"; reg-names = "phy_mem";
@ -53,7 +53,7 @@ Example:
<&clock_gcc clk_gcc_ufs_rx_cfg_clk>; <&clock_gcc clk_gcc_ufs_rx_cfg_clk>;
}; };
ufshc@0xfc598000 { ufshc@fc598000 {
... ...
phys = <&ufsphy1>; phys = <&ufsphy1>;
phy-names = "ufsphy"; phy-names = "ufsphy";

View File

@ -46,7 +46,7 @@ Note: If above properties are not defined it can be assumed that the supply
regulators or clocks are always on. regulators or clocks are always on.
Example: Example:
ufshc@0xfc598000 { ufshc@fc598000 {
compatible = "jedec,ufs-1.1"; compatible = "jedec,ufs-1.1";
reg = <0xfc598000 0x800>; reg = <0xfc598000 0x800>;
interrupts = <0 28 0>; interrupts = <0 28 0>;

View File

@ -22,7 +22,7 @@ See: Documentation/devicetree/bindings/reset/reset.txt
Example: Example:
ehci1: usb@0xfe203e00 { ehci1: usb@fe203e00 {
compatible = "st,st-ehci-300x"; compatible = "st,st-ehci-300x";
reg = <0xfe203e00 0x100>; reg = <0xfe203e00 0x100>;
interrupts = <GIC_SPI 148 IRQ_TYPE_NONE>; interrupts = <GIC_SPI 148 IRQ_TYPE_NONE>;

View File

@ -20,7 +20,7 @@ See: Documentation/devicetree/bindings/reset/reset.txt
Example: Example:
ohci0: usb@0xfe1ffc00 { ohci0: usb@fe1ffc00 {
compatible = "st,st-ohci-300x"; compatible = "st,st-ohci-300x";
reg = <0xfe1ffc00 0x100>; reg = <0xfe1ffc00 0x100>;
interrupts = <GIC_SPI 149 IRQ_TYPE_NONE>; interrupts = <GIC_SPI 149 IRQ_TYPE_NONE>;

View File

@ -6,7 +6,7 @@ reg: Register address and length for watchdog registers
Example: Example:
watchdog: jz4740-watchdog@0x10002000 { watchdog: jz4740-watchdog@10002000 {
compatible = "ingenic,jz4740-watchdog"; compatible = "ingenic,jz4740-watchdog";
reg = <0x10002000 0x100>; reg = <0x10002000 0x100>;
}; };

View File

@ -695,7 +695,7 @@ int __of_changeset_apply_entries(struct of_changeset *ocs, int *ret_revert)
/* /*
* Returns 0 on success, a negative error value in case of an error. * Returns 0 on success, a negative error value in case of an error.
* *
* If multiple changset entry notification errors occur then only the * If multiple changeset entry notification errors occur then only the
* final notification error is reported. * final notification error is reported.
*/ */
int __of_changeset_apply_notify(struct of_changeset *ocs) int __of_changeset_apply_notify(struct of_changeset *ocs)
@ -795,7 +795,7 @@ int __of_changeset_revert_entries(struct of_changeset *ocs, int *ret_apply)
} }
/* /*
* If multiple changset entry notification errors occur then only the * If multiple changeset entry notification errors occur then only the
* final notification error is reported. * final notification error is reported.
*/ */
int __of_changeset_revert_notify(struct of_changeset *ocs) int __of_changeset_revert_notify(struct of_changeset *ocs)

View File

@ -522,7 +522,7 @@ static int init_overlay_changeset(struct overlay_changeset *ovcs,
struct device_node *node, *overlay_node; struct device_node *node, *overlay_node;
struct fragment *fragment; struct fragment *fragment;
struct fragment *fragments; struct fragment *fragments;
int cnt, ret; int cnt, id, ret;
/* /*
* Warn for some issues. Can not return -EINVAL for these until * Warn for some issues. Can not return -EINVAL for these until
@ -543,9 +543,9 @@ static int init_overlay_changeset(struct overlay_changeset *ovcs,
of_changeset_init(&ovcs->cset); of_changeset_init(&ovcs->cset);
ovcs->id = idr_alloc(&ovcs_idr, ovcs, 1, 0, GFP_KERNEL); id = idr_alloc(&ovcs_idr, ovcs, 1, 0, GFP_KERNEL);
if (ovcs->id <= 0) if (id <= 0)
return ovcs->id; return id;
cnt = 0; cnt = 0;
@ -572,18 +572,20 @@ static int init_overlay_changeset(struct overlay_changeset *ovcs,
cnt = 0; cnt = 0;
for_each_child_of_node(tree, node) { for_each_child_of_node(tree, node) {
overlay_node = of_get_child_by_name(node, "__overlay__");
if (!overlay_node)
continue;
fragment = &fragments[cnt]; fragment = &fragments[cnt];
fragment->overlay = of_get_child_by_name(node, "__overlay__"); fragment->overlay = overlay_node;
if (fragment->overlay) { fragment->target = find_target_node(node);
fragment->target = find_target_node(node); if (!fragment->target) {
if (!fragment->target) { of_node_put(fragment->overlay);
of_node_put(fragment->overlay); ret = -EINVAL;
ret = -EINVAL; goto err_free_fragments;
goto err_free_fragments;
} else {
cnt++;
}
} }
cnt++;
} }
/* /*
@ -611,6 +613,7 @@ static int init_overlay_changeset(struct overlay_changeset *ovcs,
goto err_free_fragments; goto err_free_fragments;
} }
ovcs->id = id;
ovcs->count = cnt; ovcs->count = cnt;
ovcs->fragments = fragments; ovcs->fragments = fragments;
@ -619,7 +622,7 @@ static int init_overlay_changeset(struct overlay_changeset *ovcs,
err_free_fragments: err_free_fragments:
kfree(fragments); kfree(fragments);
err_free_idr: err_free_idr:
idr_remove(&ovcs_idr, ovcs->id); idr_remove(&ovcs_idr, id);
pr_err("%s() failed, ret = %d\n", __func__, ret); pr_err("%s() failed, ret = %d\n", __func__, ret);
@ -630,9 +633,8 @@ static void free_overlay_changeset(struct overlay_changeset *ovcs)
{ {
int i; int i;
if (!ovcs->cset.entries.next) if (ovcs->cset.entries.next)
return; of_changeset_destroy(&ovcs->cset);
of_changeset_destroy(&ovcs->cset);
if (ovcs->id) if (ovcs->id)
idr_remove(&ovcs_idr, ovcs->id); idr_remove(&ovcs_idr, ovcs->id);
@ -660,14 +662,14 @@ static void free_overlay_changeset(struct overlay_changeset *ovcs)
* A non-zero return value will not have created the changeset if error is from: * A non-zero return value will not have created the changeset if error is from:
* - parameter checks * - parameter checks
* - building the changeset * - building the changeset
* - overlay changset pre-apply notifier * - overlay changeset pre-apply notifier
* *
* If an error is returned by an overlay changeset pre-apply notifier * If an error is returned by an overlay changeset pre-apply notifier
* then no further overlay changeset pre-apply notifier will be called. * then no further overlay changeset pre-apply notifier will be called.
* *
* A non-zero return value will have created the changeset if error is from: * A non-zero return value will have created the changeset if error is from:
* - overlay changeset entry notifier * - overlay changeset entry notifier
* - overlay changset post-apply notifier * - overlay changeset post-apply notifier
* *
* If an error is returned by an overlay changeset post-apply notifier * If an error is returned by an overlay changeset post-apply notifier
* then no further overlay changeset post-apply notifier will be called. * then no further overlay changeset post-apply notifier will be called.
@ -706,12 +708,11 @@ int of_overlay_apply(struct device_node *tree, int *ovcs_id)
} }
of_overlay_mutex_lock(); of_overlay_mutex_lock();
mutex_lock(&of_mutex);
ret = of_resolve_phandles(tree); ret = of_resolve_phandles(tree);
if (ret) if (ret)
goto err_overlay_unlock; goto err_free_overlay_changeset;
mutex_lock(&of_mutex);
ret = init_overlay_changeset(ovcs, tree); ret = init_overlay_changeset(ovcs, tree);
if (ret) if (ret)
@ -736,14 +737,13 @@ int of_overlay_apply(struct device_node *tree, int *ovcs_id)
devicetree_state_flags |= DTSF_APPLY_FAIL; devicetree_state_flags |= DTSF_APPLY_FAIL;
} }
goto err_free_overlay_changeset; goto err_free_overlay_changeset;
} else {
ret = __of_changeset_apply_notify(&ovcs->cset);
if (ret)
pr_err("overlay changeset entry notify error %d\n",
ret);
/* fall through */
} }
ret = __of_changeset_apply_notify(&ovcs->cset);
if (ret)
pr_err("overlay changeset entry notify error %d\n", ret);
/* notify failure is not fatal, continue */
list_add_tail(&ovcs->ovcs_list, &ovcs_list); list_add_tail(&ovcs->ovcs_list, &ovcs_list);
*ovcs_id = ovcs->id; *ovcs_id = ovcs->id;
@ -755,18 +755,14 @@ int of_overlay_apply(struct device_node *tree, int *ovcs_id)
ret = ret_tmp; ret = ret_tmp;
} }
mutex_unlock(&of_mutex); goto out_unlock;
of_overlay_mutex_unlock();
goto out;
err_overlay_unlock:
of_overlay_mutex_unlock();
err_free_overlay_changeset: err_free_overlay_changeset:
free_overlay_changeset(ovcs); free_overlay_changeset(ovcs);
out_unlock:
mutex_unlock(&of_mutex); mutex_unlock(&of_mutex);
of_overlay_mutex_unlock();
out: out:
pr_debug("%s() err=%d\n", __func__, ret); pr_debug("%s() err=%d\n", __func__, ret);
@ -871,7 +867,7 @@ static int overlay_removal_is_ok(struct overlay_changeset *remove_ovcs)
* *
* A non-zero return value will not revert the changeset if error is from: * A non-zero return value will not revert the changeset if error is from:
* - parameter checks * - parameter checks
* - overlay changset pre-remove notifier * - overlay changeset pre-remove notifier
* - overlay changeset entry revert * - overlay changeset entry revert
* *
* If an error is returned by an overlay changeset pre-remove notifier * If an error is returned by an overlay changeset pre-remove notifier
@ -882,7 +878,7 @@ static int overlay_removal_is_ok(struct overlay_changeset *remove_ovcs)
* *
* A non-zero return value will revert the changeset if error is from: * A non-zero return value will revert the changeset if error is from:
* - overlay changeset entry notifier * - overlay changeset entry notifier
* - overlay changset post-remove notifier * - overlay changeset post-remove notifier
* *
* If an error is returned by an overlay changeset post-remove notifier * If an error is returned by an overlay changeset post-remove notifier
* then no further overlay changeset post-remove notifier will be called. * then no further overlay changeset post-remove notifier will be called.
@ -931,15 +927,13 @@ int of_overlay_remove(int *ovcs_id)
if (ret_apply) if (ret_apply)
devicetree_state_flags |= DTSF_REVERT_FAIL; devicetree_state_flags |= DTSF_REVERT_FAIL;
goto out_unlock; goto out_unlock;
} else {
ret = __of_changeset_revert_notify(&ovcs->cset);
if (ret) {
pr_err("overlay changeset entry notify error %d\n",
ret);
/* fall through - changeset was reverted */
}
} }
ret = __of_changeset_revert_notify(&ovcs->cset);
if (ret)
pr_err("overlay changeset entry notify error %d\n", ret);
/* notify failure is not fatal, continue */
*ovcs_id = 0; *ovcs_id = 0;
ret_tmp = overlay_notify(ovcs, OF_OVERLAY_POST_REMOVE); ret_tmp = overlay_notify(ovcs, OF_OVERLAY_POST_REMOVE);

View File

@ -2165,7 +2165,6 @@ static int __init overlay_data_add(int onum)
ret = of_overlay_apply(info->np_overlay, &info->overlay_id); ret = of_overlay_apply(info->np_overlay, &info->overlay_id);
if (ret < 0) { if (ret < 0) {
pr_err("of_overlay_apply() (ret=%d), %d\n", ret, onum); pr_err("of_overlay_apply() (ret=%d), %d\n", ret, onum);
of_overlay_mutex_unlock();
goto out_free_np_overlay; goto out_free_np_overlay;
} }