]> Git Repo - J-u-boot.git/commitdiff
Merge branch 'master' of git://git.denx.de/u-boot-spi
authorTom Rini <[email protected]>
Sun, 14 Apr 2019 04:03:06 +0000 (00:03 -0400)
committerTom Rini <[email protected]>
Sun, 14 Apr 2019 04:03:06 +0000 (00:03 -0400)
Conflicts:
arch/arm/dts/armada-385-amc.dts
arch/arm/dts/armada-xp-theadorable.dts
arch/arm/dts/stm32mp157c-ev1-u-boot.dtsi

Signed-off-by: Tom Rini <[email protected]>
19 files changed:
1  2 
MAINTAINERS
arch/arm/dts/armada-xp-theadorable.dts
arch/arm/dts/da850-evm-u-boot.dtsi
arch/arm/dts/keystone-k2g-evm.dts
arch/arm/dts/keystone-k2g-ice.dts
arch/arm/dts/stm32mp157c-ev1-u-boot.dtsi
arch/mips/dts/ap143.dts
arch/mips/dts/gardena-smart-gateway-mt7688.dts
arch/mips/dts/jr2_pcb110.dts
arch/mips/dts/jr2_pcb111.dts
arch/mips/dts/serval2_pcb112.dts
arch/mips/dts/servalt_pcb116.dts
arch/sandbox/dts/test.dts
board/sunxi/MAINTAINERS
configs/da850evm_defconfig
configs/mscc_jr2_defconfig
configs/mscc_servalt_defconfig
doc/git-mailrc
lib/fdtdec.c

diff --combined MAINTAINERS
index 083bf47c8b963396cc5371d9ac77a258c8969637,1598dc866ecba4ab0952f290d14b548de27bd6cf..c77abba1e5bebaf8cb06904c9b2006b03ac70f48
@@@ -295,9 -295,7 +295,9 @@@ F: drivers/misc/stm32mp_fuse.
  F:    drivers/mmc/stm32_sdmmc2.c
  F:    drivers/phy/phy-stm32-usbphyc.c
  F:    drivers/pinctrl/pinctrl_stm32.c
 +F:    drivers/power/pmic/stpmic1.c
  F:    drivers/power/regulator/stm32-vrefbuf.c
 +F:    drivers/power/regulator/stpmic1.c
  F:    drivers/ram/stm32mp1/
  F:    drivers/misc/stm32_rcc.c
  F:    drivers/reset/stm32-reset.c
@@@ -310,7 -308,7 +310,7 @@@ F: arch/arm/cpu/armv7/stv0991
  F:    arch/arm/include/asm/arch-stv0991/
  
  ARM SUNXI
- M:    Jagan Teki <jagan@openedev.com>
+ M:    Jagan Teki <jagan@amarulasolutions.com>
  M:    Maxime Ripard <[email protected]>
  S:    Maintained
  T:    git git://git.denx.de/u-boot-sunxi.git
@@@ -691,14 -689,14 +691,14 @@@ T:      git git://git.denx.de/u-boot-sh.gi
  F:    arch/sh/
  
  SPI
- M:    Jagan Teki <jagan@openedev.com>
+ M:    Jagan Teki <jagan@amarulasolutions.com>
  S:    Maintained
  T:    git git://git.denx.de/u-boot-spi.git
  F:    drivers/spi/
  F:    include/spi*
  
  SPI-NOR
- M:    Jagan Teki <jagan@openedev.com>
+ M:    Jagan Teki <jagan@amarulasolutions.com>
  M:    Vignesh R <[email protected]>
  S:    Maintained
  F:    drivers/mtd/spi/
index bcb4bfdd5c198cdc809a808ce2317cfecb0cb9c7,b0f6c2bafe5a89a2bf3b7386c40a480320ab6faa..5b18d62c3c5f1d22040421aaf5133abb7a3907ff
                                status = "okay";
                        };
  
 -                      spi0: spi@10600 {
 -                              status = "okay";
 -                              u-boot,dm-pre-reloc;
 -
 -                              spi-flash@0 {
 -                                      u-boot,dm-pre-reloc;
 -                                      #address-cells = <1>;
 -                                      #size-cells = <1>;
 -                                      compatible = "n25q128a13", "jedec,spi-nor";
 -                                      reg = <0>; /* Chip select 0 */
 -                                      spi-max-frequency = <27777777>;
 -                              };
 -
 -                              fpga@1 {
 -                                      #address-cells = <1>;
 -                                      #size-cells = <1>;
 -                                      compatible = "spi-generic-device";
 -                                      reg = <1>; /* Chip select 1 */
 -                                      spi-max-frequency = <27777777>;
 -                              };
 -                      };
 -
 -                      spi1: spi@10680 {
 -                              status = "okay";
 -
 -                              fpga@0 {
 -                                      #address-cells = <1>;
 -                                      #size-cells = <1>;
 -                                      compatible = "spi-generic-device";
 -                                      reg = <0>; /* Chip select 0 */
 -                                      spi-max-frequency = <27777777>;
 -                              };
 -                      };
 -
                        /* The LCD controller is only used on this board */
                        lcd0: lcd-controller@e0000 {
                                compatible = "marvell,armada-xp-lcd";
        };
  };
  
-               compatible = "n25q128a13", "jedec,spi-nor", "spi-flash";
 +&spi0 {
 +      status = "okay";
 +      u-boot,dm-pre-reloc;
 +
 +      spi-flash@0 {
 +              u-boot,dm-pre-reloc;
 +              #address-cells = <1>;
 +              #size-cells = <1>;
++              compatible = "n25q128a13", "jedec,spi-nor";
 +              reg = <0>; /* Chip select 0 */
 +              spi-max-frequency = <27777777>;
 +      };
 +
 +      fpga@1 {
 +              #address-cells = <1>;
 +              #size-cells = <1>;
 +              compatible = "spi-generic-device";
 +              reg = <1>; /* Chip select 1 */
 +              spi-max-frequency = <27777777>;
 +      };
 +};
 +
 +&spi1 {
 +      status = "okay";
 +
 +      fpga@0 {
 +              #address-cells = <1>;
 +              #size-cells = <1>;
 +              compatible = "spi-generic-device";
 +              reg = <0>; /* Chip select 0 */
 +              spi-max-frequency = <27777777>;
 +      };
 +};
 +
 +
  &pciec {
        status = "okay";
  
index ab9368b9d3a6a0b0c125d243d62b9dd4f1b26a88,360e79e68d41d94e776d00791028ce8f401ad76e..1683f3472e4dfc51bd0a21240b46fe85bf791d74
@@@ -6,24 -6,6 +6,24 @@@
   * Copyright (C) Adam Ford
   */
  
 +/ {
 +      soc@1c00000 {
 +              u-boot,dm-spl;
 +      };
 +};
 +
  &flash {
-       compatible = "m25p64", "spi-flash";
+       compatible = "m25p64", "jedec,spi-nor";
  };
 +
 +&mmc0 {
 +      u-boot,dm-spl;
 +};
 +
 +&serial2 {
 +      u-boot,dm-spl;
 +};
 +
 +&spi1 {
 +      u-boot,dm-spl;
 +};
index 4820c7e50da780bf0fe1a7488bd05fdee2a4ca7f,d91869f2c2b65775b3766ae208f426fd50ab48d3..7c5deef8083f399a2ab80cb1ca35270af8052bd9
@@@ -29,6 -29,7 +29,6 @@@
        status = "okay";
        ethphy0: ethernet-phy@0 {
                reg = <0>;
 -              phy-mode = "rgmii-id";
        };
  };
  
@@@ -74,7 -75,7 +74,7 @@@
        spi_nor: flash@0 {
                #address-cells = <1>;
                #size-cells = <1>;
-               compatible = "spi-flash";
+               compatible = "jedec,spi-nor";
                spi-max-frequency = <50000000>;
                m25p,fast-read;
                reg = <0>;
@@@ -96,7 -97,7 +96,7 @@@
        status = "okay";
  
        flash0: m25p80@0 {
-               compatible = "s25fl512s","spi-flash";
+               compatible = "s25fl512s","jedec,spi-nor";
                reg = <0>;
                spi-tx-bus-width = <1>;
                spi-rx-bus-width = <4>;
index b67332fed5b2286a164882995b12eb39f84fc5ec,680dfee0713ca76fbd04054eb984fcfe72051ed9..ecca2dfac1ad4d4d85f6afa10bc5d9b82c0f4e4c
@@@ -7,7 -7,6 +7,7 @@@
  /dts-v1/;
  
  #include "keystone-k2g.dtsi"
 +#include <dt-bindings/net/ti-dp83867.h>
  
  / {
        compatible = "ti,k2g-ice", "ti,k2g", "ti,keystone";
@@@ -39,7 -38,7 +39,7 @@@
        status = "okay";
  
        flash0: m25p80@0 {
-               compatible = "s25fl256s1", "spi-flash";
+               compatible = "s25fl256s1", "jedec,spi-nor";
                reg = <0>;
                spi-tx-bus-width = <1>;
                spi-rx-bus-width = <4>;
                };
        };
  };
 +
 +&qmss {
 +      status = "okay";
 +};
 +
 +&knav_dmas {
 +      status = "okay";
 +};
 +
 +&netcp {
 +      pinctrl-names = "default";
 +      //pinctrl-0 = <&emac_pins>;
 +      status = "okay";
 +};
 +
 +&mdio {
 +      pinctrl-names = "default";
 +      //pinctrl-0 = <&mdio_pins>;
 +      status = "okay";
 +      ethphy0: ethernet-phy@0 {
 +              reg = <0>;
 +              ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
 +              ti,tx-internal-delay = <DP83867_RGMIIDCTL_250_PS>;
 +              ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_8_B_NIB>;
 +              ti,min-output-impedance;
 +              ti,dp83867-rxctrl-strap-quirk;
 +      };
 +};
 +
 +&gbe0 {
 +      phy-handle = <&ethphy0>;
 +      phy-mode = "rgmii-id";
 +      status = "okay";
 +};
index 6a18d032ae5400c6a37c68232368a53e556254f6,409f983fb2ea672c4fb542eb553ddc62a187fc02..8b92b1fa2eeea286f1ce7728906517e57b9bafde
@@@ -7,23 -7,29 +7,23 @@@
  
  / {
        aliases {
 -              spi0 = &qspi;
 +              gpio26 = &stmfx_pinctrl;
                i2c1 = &i2c2;
                i2c4 = &i2c5;
 +              pinctrl2 = &stmfx_pinctrl;
 +              spi0 = &qspi;
        };
  };
  
  &flash0 {
-       compatible = "spi-flash";
+       compatible = "jedec,spi-nor";
 +      u-boot,dm-spl;
  };
  
  &flash1 {
-       compatible = "spi-flash";
+       compatible = "jedec,spi-nor";
  };
  
 -&v3v3 {
 -      regulator-always-on;
 -};
 -
 -&usbotg_hs {
 -      g-tx-fifo-size = <576>;
 -};
 -
 -/* SPL part **************************************/
  &qspi {
        u-boot,dm-spl;
  };
        };
  };
  
 -&flash0 {
 -      u-boot,dm-spl;
 +&usbotg_hs {
 +      g-tx-fifo-size = <576>;
  };
  
 +&v3v3 {
 +      regulator-always-on;
 +};
diff --combined arch/mips/dts/ap143.dts
index 2e23225f12921ac355bf3ce27bf3e265f8c110ff,82bf637410b05d550814b97174935a7c2d379a45..93a098052c79de37b8492a585b24fddb36c3cdd4
        spi-flash@0 {
                #address-cells = <1>;
                #size-cells = <1>;
-               compatible = "spi-flash";
+               compatible = "jedec,spi-nor";
                memory-map = <0x9f000000 0x00800000>;
                spi-max-frequency = <25000000>;
                reg = <0>;
        };
  };
 +
 +&gmac1 {
 +      status = "okay";
 +      phy-mode = "rgmii";
 +};
index 897064dd9c08c992df2b3d77bb00dfd14824c049,2f2cfdd9f967f609ecf8ea7e71ad4e37222bf9b4..eedde89dfd8a719cf3647ef0e1c7704c66ec0822
@@@ -10,7 -10,7 +10,7 @@@
  
  / {
        compatible = "gardena,smart-gateway-mt7688", "ralink,mt7628a-soc";
 -      model = "Gardena smart-Gateway-MT7688";
 +      model = "GARDENA smart Gateway (MT7688)";
  
        aliases {
                serial0 = &uart0;
@@@ -97,7 -97,7 +97,7 @@@
        spi-flash@0 {
                #address-cells = <1>;
                #size-cells = <1>;
-               compatible = "spi-flash", "jedec,spi-nor";
+               compatible = "jedec,spi-nor";
                spi-max-frequency = <40000000>;
                reg = <0>;
        };
index 4a5a5848b9f1a841a617dca64afe1b77fa4eaff0,1e123978e39c23252a447e9c1e9ad53b2df7e4b9..6562221794e170a4345217f90d6ee3e9d4cab0d8
@@@ -5,7 -5,6 +5,7 @@@
  
  /dts-v1/;
  #include "mscc,jr2.dtsi"
 +#include <dt-bindings/mscc/jr2_data.h>
  
  / {
        model = "Jaguar2 Cu8-Sfp16 PCB110 Reference Board";
@@@ -44,7 -43,7 +44,7 @@@
  &spi0 {
        status = "okay";
        spi-flash@0 {
-               compatible = "spi-flash";
+               compatible = "jedec,spi-nor";
                spi-max-frequency = <18000000>; /* input clock */
                reg = <0>; /* CS0 */
        };
        sgpio-ports = <0x3f00ffff>;
        gpio-ranges = <&sgpio2 0 0 96>;
  };
 +
 +&mdio1 {
 +      status = "okay";
 +
 +      phy0: ethernet-phy@0 {
 +              reg = <0>;
 +      };
 +      phy1: ethernet-phy@1 {
 +              reg = <1>;
 +      };
 +      phy2: ethernet-phy@2 {
 +              reg = <2>;
 +      };
 +      phy3: ethernet-phy@3 {
 +              reg = <3>;
 +      };
 +      phy4: ethernet-phy@4 {
 +              reg = <4>;
 +      };
 +      phy5: ethernet-phy@5 {
 +              reg = <5>;
 +      };
 +      phy6: ethernet-phy@6 {
 +              reg = <6>;
 +      };
 +      phy7: ethernet-phy@7 {
 +              reg = <7>;
 +      };
 +};
 +
 +&switch {
 +      ethernet-ports {
 +
 +              port0: port@0 {
 +                      reg = <0>;
 +                      phy-handle = <&phy0>;
 +                      phys = <&serdes_hsio 0 SERDES1G(1) PHY_MODE_SGMII>;
 +              };
 +              port1: port@1 {
 +                      reg = <1>;
 +                      phy-handle = <&phy1>;
 +                      phys = <&serdes_hsio 1 SERDES1G(2) PHY_MODE_SGMII>;
 +              };
 +              port2: port@2 {
 +                      reg = <2>;
 +                      phy-handle = <&phy2>;
 +                      phys = <&serdes_hsio 2 SERDES1G(3) PHY_MODE_SGMII>;
 +              };
 +              port3: port@3 {
 +                      reg = <3>;
 +                      phy-handle = <&phy3>;
 +                      phys = <&serdes_hsio 3 SERDES1G(4) PHY_MODE_SGMII>;
 +              };
 +              port4: port@4 {
 +                      reg = <4>;
 +                      phy-handle = <&phy4>;
 +                      phys = <&serdes_hsio 4 SERDES1G(5) PHY_MODE_SGMII>;
 +              };
 +              port5: port@5 {
 +                      reg = <5>;
 +                      phy-handle = <&phy5>;
 +                      phys = <&serdes_hsio 5 SERDES1G(6) PHY_MODE_SGMII>;
 +              };
 +              port6: port@6 {
 +                      reg = <6>;
 +                      phy-handle = <&phy6>;
 +                      phys = <&serdes_hsio 6 SERDES1G(7) PHY_MODE_SGMII>;
 +              };
 +              port7: port@7 {
 +                      reg = <7>;
 +                      phy-handle = <&phy7>;
 +                      phys = <&serdes_hsio 7 SERDES1G(8) PHY_MODE_SGMII>;
 +              };
 +      };
 +};
index f37ebc760168723749c278b8214c594f02f8ee9c,fcd8455407fa23a8b55da8584effbed2f7291773..74305a8f3310730487259eb9c5ede0b62e488345
@@@ -5,7 -5,6 +5,7 @@@
  
  /dts-v1/;
  #include "mscc,jr2.dtsi"
 +#include <dt-bindings/mscc/jr2_data.h>
  
  / {
        model = "Jaguar2 Cu48 PCB111 Reference Board";
@@@ -44,7 -43,7 +44,7 @@@
  &spi0 {
        status = "okay";
        spi-flash@0 {
-               compatible = "spi-flash";
+               compatible = "jedec,spi-nor";
                spi-max-frequency = <18000000>; /* input clock */
                reg = <0>; /* CS0 */
        };
        sgpio-ports = <0xff000000>;
        gpio-ranges = <&sgpio2 0 0 96>;
  };
 +
 +&mdio1 {
 +      status = "okay";
 +
 +      phy0: ethernet-phy@0 {
 +              reg = <0>;
 +      };
 +      phy1: ethernet-phy@1 {
 +              reg = <1>;
 +      };
 +      phy2: ethernet-phy@2 {
 +              reg = <2>;
 +      };
 +      phy3: ethernet-phy@3 {
 +              reg = <3>;
 +      };
 +      phy4: ethernet-phy@4 {
 +              reg = <4>;
 +      };
 +      phy5: ethernet-phy@5 {
 +              reg = <5>;
 +      };
 +      phy6: ethernet-phy@6 {
 +              reg = <6>;
 +      };
 +      phy7: ethernet-phy@7 {
 +              reg = <7>;
 +      };
 +      phy8: ethernet-phy@8 {
 +              reg = <8>;
 +      };
 +      phy9: ethernet-phy@9 {
 +              reg = <9>;
 +      };
 +      phy10: ethernet-phy@10 {
 +              reg = <10>;
 +      };
 +      phy11: ethernet-phy@11 {
 +              reg = <11>;
 +      };
 +      phy12: ethernet-phy@12 {
 +              reg = <12>;
 +      };
 +      phy13: ethernet-phy@13 {
 +              reg = <13>;
 +      };
 +      phy14: ethernet-phy@14 {
 +              reg = <14>;
 +      };
 +      phy15: ethernet-phy@15 {
 +              reg = <15>;
 +      };
 +      phy16: ethernet-phy@16 {
 +              reg = <16>;
 +      };
 +      phy17: ethernet-phy@17 {
 +              reg = <17>;
 +      };
 +      phy18: ethernet-phy@18 {
 +              reg = <18>;
 +      };
 +      phy19: ethernet-phy@19 {
 +              reg = <19>;
 +      };
 +      phy20: ethernet-phy@20 {
 +              reg = <20>;
 +      };
 +      phy21: ethernet-phy@21 {
 +              reg = <21>;
 +      };
 +      phy22: ethernet-phy@22 {
 +              reg = <22>;
 +      };
 +      phy23: ethernet-phy@23 {
 +              reg = <23>;
 +      };
 +};
 +
 +&mdio2 {
 +      status = "okay";
 +
 +      phy24: ethernet-phy@24 {
 +              reg = <0>;
 +      };
 +      phy25: ethernet-phy@25 {
 +              reg = <1>;
 +      };
 +      phy26: ethernet-phy@26 {
 +              reg = <2>;
 +      };
 +      phy27: ethernet-phy@27 {
 +              reg = <3>;
 +      };
 +      phy28: ethernet-phy@28 {
 +              reg = <4>;
 +      };
 +      phy29: ethernet-phy@29 {
 +              reg = <5>;
 +      };
 +      phy30: ethernet-phy@30 {
 +              reg = <6>;
 +      };
 +      phy31: ethernet-phy@31 {
 +              reg = <7>;
 +      };
 +      phy32: ethernet-phy@32 {
 +              reg = <8>;
 +      };
 +      phy33: ethernet-phy@33 {
 +              reg = <9>;
 +      };
 +      phy34: ethernet-phy@34 {
 +              reg = <10>;
 +      };
 +      phy35: ethernet-phy@35 {
 +              reg = <11>;
 +      };
 +      phy36: ethernet-phy@36 {
 +              reg = <12>;
 +      };
 +      phy37: ethernet-phy@37 {
 +              reg = <13>;
 +      };
 +      phy38: ethernet-phy@38 {
 +              reg = <14>;
 +      };
 +      phy39: ethernet-phy@39 {
 +              reg = <15>;
 +      };
 +      phy40: ethernet-phy@40 {
 +              reg = <16>;
 +      };
 +      phy41: ethernet-phy@41 {
 +              reg = <17>;
 +      };
 +      phy42: ethernet-phy@42 {
 +              reg = <18>;
 +      };
 +      phy43: ethernet-phy@43 {
 +              reg = <19>;
 +      };
 +      phy44: ethernet-phy@44 {
 +              reg = <20>;
 +      };
 +      phy45: ethernet-phy@45 {
 +              reg = <21>;
 +      };
 +      phy46: ethernet-phy@46 {
 +              reg = <22>;
 +      };
 +      phy47: ethernet-phy@47 {
 +              reg = <23>;
 +      };
 +};
 +
 +&switch {
 +      ethernet-ports {
 +              port0: port@0 {
 +                      reg = <0>;
 +                      phy-handle = <&phy0>;
 +                      phys = <&serdes_hsio 0 SERDES6G(4) PHY_MODE_QSGMII>;
 +              };
 +              port1: port@1 {
 +                      reg = <1>;
 +                      phy-handle = <&phy1>;
 +                      phys = <&serdes_hsio 1 0xff PHY_MODE_QSGMII>;
 +              };
 +              port2: port@2 {
 +                      reg = <2>;
 +                      phy-handle = <&phy2>;
 +                      phys = <&serdes_hsio 2 0xff PHY_MODE_QSGMII>;
 +              };
 +              port3: port@3 {
 +                      reg = <3>;
 +                      phy-handle = <&phy3>;
 +                      phys = <&serdes_hsio 3 0xff PHY_MODE_QSGMII>;
 +              };
 +              port4: port@4 {
 +                      reg = <4>;
 +                      phy-handle = <&phy4>;
 +                      phys = <&serdes_hsio 4 SERDES6G(5) PHY_MODE_QSGMII>;
 +              };
 +              port5: port@5 {
 +                      reg = <5>;
 +                      phy-handle = <&phy5>;
 +                      phys = <&serdes_hsio 5 0xff PHY_MODE_QSGMII>;
 +              };
 +              port6: port@6 {
 +                      reg = <6>;
 +                      phy-handle = <&phy6>;
 +                      phys = <&serdes_hsio 6 0xff PHY_MODE_QSGMII>;
 +              };
 +              port7: port@7 {
 +                      reg = <7>;
 +                      phy-handle = <&phy7>;
 +                      phys = <&serdes_hsio 7 0xff PHY_MODE_QSGMII>;
 +              };
 +              port8: port@8 {
 +                      reg = <8>;
 +                      phy-handle = <&phy8>;
 +                      phys = <&serdes_hsio 8 SERDES6G(6) PHY_MODE_QSGMII>;
 +              };
 +              port9: port@9 {
 +                      reg = <9>;
 +                      phy-handle = <&phy9>;
 +                      phys = <&serdes_hsio 9 0xff PHY_MODE_QSGMII>;
 +              };
 +              port10: port@10 {
 +                      reg = <10>;
 +                      phy-handle = <&phy10>;
 +                      phys = <&serdes_hsio 10 0xff PHY_MODE_QSGMII>;
 +              };
 +              port11: port@11 {
 +                      reg = <11>;
 +                      phy-handle = <&phy11>;
 +                      phys = <&serdes_hsio 11 0xff PHY_MODE_QSGMII>;
 +              };
 +              port12: port@12 {
 +                      reg = <12>;
 +                      phy-handle = <&phy12>;
 +                      phys = <&serdes_hsio 12 SERDES6G(7) PHY_MODE_QSGMII>;
 +              };
 +              port13: port@13 {
 +                      reg = <13>;
 +                      phy-handle = <&phy13>;
 +                      phys = <&serdes_hsio 13 0xff PHY_MODE_QSGMII>;
 +              };
 +              port14: port@14 {
 +                      reg = <14>;
 +                      phy-handle = <&phy14>;
 +                      phys = <&serdes_hsio 14 0xff PHY_MODE_QSGMII>;
 +              };
 +              port15: port@15 {
 +                      reg = <15>;
 +                      phy-handle = <&phy15>;
 +                      phys = <&serdes_hsio 15 0xff PHY_MODE_QSGMII>;
 +              };
 +              port16: port@16 {
 +                      reg = <16>;
 +                      phy-handle = <&phy16>;
 +                      phys = <&serdes_hsio 16 SERDES6G(8) PHY_MODE_QSGMII>;
 +              };
 +              port17: port@17 {
 +                      reg = <17>;
 +                      phy-handle = <&phy17>;
 +                      phys = <&serdes_hsio 17 0xff PHY_MODE_QSGMII>;
 +              };
 +              port18: port@18 {
 +                      reg = <18>;
 +                      phy-handle = <&phy18>;
 +                      phys = <&serdes_hsio 18 0xff PHY_MODE_QSGMII>;
 +              };
 +              port19: port@19 {
 +                      reg = <19>;
 +                      phy-handle = <&phy19>;
 +                      phys = <&serdes_hsio 19 0xff PHY_MODE_QSGMII>;
 +              };
 +              port20: port@20 {
 +                      reg = <20>;
 +                      phy-handle = <&phy20>;
 +                      phys = <&serdes_hsio 20 SERDES6G(9) PHY_MODE_QSGMII>;
 +              };
 +              port21: port@21 {
 +                      reg = <21>;
 +                      phy-handle = <&phy21>;
 +                      phys = <&serdes_hsio 21 0xff PHY_MODE_QSGMII>;
 +              };
 +              port22: port@22 {
 +                      reg = <22>;
 +                      phy-handle = <&phy22>;
 +                      phys = <&serdes_hsio 22 0xff PHY_MODE_QSGMII>;
 +              };
 +              port23: port@23 {
 +                      reg = <23>;
 +                      phy-handle = <&phy23>;
 +                      phys = <&serdes_hsio 23 0xff PHY_MODE_QSGMII>;
 +              };
 +              port24: port@24 {
 +                      reg = <24>;
 +                      phy-handle = <&phy24>;
 +                      phys = <&serdes_hsio 24 SERDES6G(10) PHY_MODE_QSGMII>;
 +              };
 +              port25: port@25 {
 +                      reg = <25>;
 +                      phy-handle = <&phy25>;
 +                      phys = <&serdes_hsio 25 0xff PHY_MODE_QSGMII>;
 +              };
 +              port26: port@26 {
 +                      reg = <26>;
 +                      phy-handle = <&phy26>;
 +                      phys = <&serdes_hsio 26 0xff PHY_MODE_QSGMII>;
 +              };
 +              port27: port@27 {
 +                      reg = <27>;
 +                      phy-handle = <&phy27>;
 +                      phys = <&serdes_hsio 27 0xff PHY_MODE_QSGMII>;
 +              };
 +              port28: port@28 {
 +                      reg = <28>;
 +                      phy-handle = <&phy28>;
 +                      phys = <&serdes_hsio 28 SERDES6G(11) PHY_MODE_QSGMII>;
 +              };
 +              port29: port@29 {
 +                      reg = <29>;
 +                      phy-handle = <&phy29>;
 +                      phys = <&serdes_hsio 29 0xff PHY_MODE_QSGMII>;
 +              };
 +              port30: port@30 {
 +                      reg = <30>;
 +                      phy-handle = <&phy30>;
 +                      phys = <&serdes_hsio 30 0xff PHY_MODE_QSGMII>;
 +              };
 +              port31: port@31 {
 +                      reg = <31>;
 +                      phy-handle = <&phy31>;
 +                      phys = <&serdes_hsio 31 0xff PHY_MODE_QSGMII>;
 +              };
 +              port32: port@32 {
 +                      reg = <32>;
 +                      phy-handle = <&phy32>;
 +                      phys = <&serdes_hsio 32 SERDES6G(12) PHY_MODE_QSGMII>;
 +              };
 +              port33: port@33 {
 +                      reg = <33>;
 +                      phy-handle = <&phy33>;
 +                      phys = <&serdes_hsio 33 0xff PHY_MODE_QSGMII>;
 +              };
 +              port34: port@34 {
 +                      reg = <34>;
 +                      phy-handle = <&phy34>;
 +                      phys = <&serdes_hsio 34 0xff PHY_MODE_QSGMII>;
 +              };
 +              port35: port@35 {
 +                      reg = <35>;
 +                      phy-handle = <&phy35>;
 +                      phys = <&serdes_hsio 35 0xff PHY_MODE_QSGMII>;
 +              };
 +              port36: port@36 {
 +                      reg = <36>;
 +                      phy-handle = <&phy36>;
 +                      phys = <&serdes_hsio 36 SERDES6G(13) PHY_MODE_QSGMII>;
 +              };
 +              port37: port@37 {
 +                      reg = <37>;
 +                      phy-handle = <&phy37>;
 +                      phys = <&serdes_hsio 37 0xff PHY_MODE_QSGMII>;
 +              };
 +              port38: port@38 {
 +                      reg = <38>;
 +                      phy-handle = <&phy38>;
 +                      phys = <&serdes_hsio 38 0xff PHY_MODE_QSGMII>;
 +              };
 +              port39: port@39 {
 +                      reg = <39>;
 +                      phy-handle = <&phy39>;
 +                      phys = <&serdes_hsio 39 0xff PHY_MODE_QSGMII>;
 +              };
 +              port40: port@40 {
 +                      reg = <40>;
 +                      phy-handle = <&phy40>;
 +                      phys = <&serdes_hsio 40 SERDES6G(14) PHY_MODE_QSGMII>;
 +              };
 +              port41: port@41 {
 +                      reg = <41>;
 +                      phy-handle = <&phy41>;
 +                      phys = <&serdes_hsio 41 0xff PHY_MODE_QSGMII>;
 +              };
 +              port42: port@42 {
 +                      reg = <42>;
 +                      phy-handle = <&phy42>;
 +                      phys = <&serdes_hsio 42 0xff PHY_MODE_QSGMII>;
 +              };
 +              port43: port@43 {
 +                      reg = <43>;
 +                      phy-handle = <&phy43>;
 +                      phys = <&serdes_hsio 43 0xff PHY_MODE_QSGMII>;
 +              };
 +              port44: port@44 {
 +                      reg = <44>;
 +                      phy-handle = <&phy44>;
 +                      phys = <&serdes_hsio 44 SERDES6G(15) PHY_MODE_QSGMII>;
 +              };
 +              port45: port@45 {
 +                      reg = <45>;
 +                      phy-handle = <&phy45>;
 +                      phys = <&serdes_hsio 45 0xff PHY_MODE_QSGMII>;
 +              };
 +              port46: port@46 {
 +                      reg = <46>;
 +                      phy-handle = <&phy46>;
 +                      phys = <&serdes_hsio 46 0xff PHY_MODE_QSGMII>;
 +              };
 +              port47: port@47 {
 +                      reg = <47>;
 +                      phy-handle = <&phy47>;
 +                      phys = <&serdes_hsio 47 0xff PHY_MODE_QSGMII>;
 +              };
 +      };
 +};
index 7a9d595433d347a724b92598138854d1840aaeb9,2921c449dc9264ef47dabd0998f08c2c1fc1d94c..5777a773b1716b01b7447008a5a75e6801e50ff3
@@@ -5,7 -5,6 +5,7 @@@
  
  /dts-v1/;
  #include "mscc,jr2.dtsi"
 +#include <dt-bindings/mscc/jr2_data.h>
  
  / {
        model = "Serval2 NID PCB112 Reference Board";
@@@ -44,7 -43,7 +44,7 @@@
  &spi0 {
        status = "okay";
        spi-flash@0 {
-               compatible = "spi-flash";
+               compatible = "jedec,spi-nor";
                spi-max-frequency = <18000000>; /* input clock */
                reg = <0>; /* CS0 */
        };
        status = "okay";
        sgpio-ports = <0x3fe0ffff>;
  };
 +
 +&mdio0 {
 +      status = "okay";
 +
 +      phy16: ethernet-phy@16 {
 +              reg = <16>;
 +      };
 +      phy17: ethernet-phy@17 {
 +              reg = <17>;
 +      };
 +      phy18: ethernet-phy@18 {
 +              reg = <18>;
 +      };
 +      phy19: ethernet-phy@19 {
 +              reg = <19>;
 +      };
 +};
 +
 +&switch {
 +      ethernet-ports {
 +
 +              port0: port@0 {
 +                      reg = <24>;
 +                      phy-handle = <&phy16>;
 +                      phys = <&serdes_hsio 24 SERDES6G(0) PHY_MODE_SGMII>;
 +              };
 +              port1: port@1 {
 +                      reg = <25>;
 +                      phy-handle = <&phy17>;
 +                      phys = <&serdes_hsio 25 SERDES6G(1) PHY_MODE_SGMII>;
 +              };
 +              port2: port@2 {
 +                      reg = <26>;
 +                      phy-handle = <&phy18>;
 +                      phys = <&serdes_hsio 26 SERDES6G(2) PHY_MODE_SGMII>;
 +              };
 +              port3: port@3 {
 +                      reg = <27>;
 +                      phy-handle = <&phy19>;
 +                      phys = <&serdes_hsio 27 SERDES6G(3) PHY_MODE_SGMII>;
 +              };
 +      };
 +};
index 9d4921504d3d02fe2de9e7ae9ff9abd79f80d7fc,4de3e25164fd82a3fd08f2bba7a3af0fb042e634..313b0998e6bfefbdbd27b61774f377c34212b26f
@@@ -43,7 -43,7 +43,7 @@@
  &spi0 {
        status = "okay";
        spi-flash@0 {
-               compatible = "spi-flash";
+               compatible = "jedec,spi-nor";
                spi-max-frequency = <18000000>; /* input clock */
                reg = <0>; /* CS0 */
                spi-cs-high;
        status = "okay";
        sgpio-ports = <0x0000fe7f>;
  };
 +
 +&mdio0 {
 +      status = "okay";
 +
 +      phy0: ethernet-phy@0 {
 +              reg = <0>;
 +      };
 +      phy1: ethernet-phy@1 {
 +              reg = <1>;
 +      };
 +};
 +
 +&switch {
 +      ethernet-ports {
 +
 +              port0: port@0 {
 +                      reg = <0>;
 +                      phy-handle = <&phy0>;
 +              };
 +              port1: port@1 {
 +                      reg = <1>;
 +                      phy-handle = <&phy1>;
 +              };
 +      };
 +};
index 6d4134c053ee85d15e3ebc11b3fbee5e32773646,54c4c196abe47e06d46cc06d4bf277a3b462a93a..8b2d6451c64375cf7d10b509c54fda8e8216a931
                        compatible = "denx,u-boot-probe-test";
                        first-syscon = <&syscon0>;
                        second-sys-ctrl = <&another_system_controller>;
 +                      third-syscon = <&syscon2>;
                };
        };
  
                cs-gpios = <0>, <&gpio_a 0>;
                spi.bin@0 {
                        reg = <0>;
-                       compatible = "spansion,m25p16", "spi-flash";
+                       compatible = "spansion,m25p16", "jedec,spi-nor";
                        spi-max-frequency = <40000000>;
                        sandbox,filename = "spi.bin";
                };
                        0x38 8>;
        };
  
 -      syscon@2 {
 +      syscon2: syscon@2 {
                compatible = "simple-mfd", "syscon";
                reg = <0x40 5
                        0x48 6
diff --combined board/sunxi/MAINTAINERS
index 7f96d2bb1c477e621802d3569046f203f9fb3384,8dd0da4aeb655230f0ab3205dd1702ec2b0ce469..338f374e56ee543e8e43e1608d111a8cec24f803
@@@ -341,11 -341,6 +341,11 @@@ M:       FUKAUMI Naoki <[email protected]
  S:    Maintained
  F:    configs/Nintendo_NES_Classic_Edition_defconfig
  
 +OCEANIC 5205 5INMFD BOARD
 +M:    Jagan Teki <[email protected]>
 +S:    Maintained
 +F:    configs/oceanic_5205_5inmfd_defconfig
 +
  OLIMEX A20-SOM204 BOARD
  M:    Stefan Mavrodiev <[email protected]>
  S:    Maintained
@@@ -353,7 -348,7 +353,7 @@@ F: configs/A20-Olimex-SOM204-EVB_defcon
  F:    configs/A20-Olimex-SOM204-EVB-eMMC_defconfig
  
  ORANGEPI LITE2 BOARD
- M:    Jagan Teki <jagan@openedev.com>
+ M:    Jagan Teki <jagan@amarulasolutions.com>
  S:    Maintained
  F:    configs/orangepi_lite2_defconfig
  
index 4083dcbae69bc58b0acf03d264bbaeac291a46ab,41dae05fb904e5e446415c62ed2664a3c8227c4a..4b09ba10a6758292ff7eaa278c8c74fbbc93cd51
@@@ -1,5 -1,4 +1,5 @@@
  CONFIG_ARM=y
 +CONFIG_SYS_THUMB_BUILD=y
  CONFIG_ARCH_DAVINCI=y
  CONFIG_SYS_TEXT_BASE=0xc1080000
  CONFIG_TARGET_DA850EVM=y
@@@ -14,7 -13,6 +14,7 @@@ CONFIG_SPL_SPI_SUPPORT=
  CONFIG_NR_DRAM_BANKS=1
  CONFIG_SYS_EXTRA_OPTIONS="MAC_ADDR_IN_SPIFLASH"
  CONFIG_BOOTDELAY=3
 +CONFIG_DEFAULT_FDT_FILE="da850-evm.dtb"
  CONFIG_MISC_INIT_R=y
  CONFIG_VERSION_VARIABLE=y
  # CONFIG_DISPLAY_CPUINFO is not set
@@@ -22,7 -20,6 +22,7 @@@
  CONFIG_BOARD_EARLY_INIT_F=y
  CONFIG_SPL_BOARD_INIT=y
  CONFIG_SPL_SYS_MALLOC_SIMPLE=y
 +CONFIG_SPL_SEPARATE_BSS=y
  CONFIG_SPL_SPI_LOAD=y
  CONFIG_HUSH_PARSER=y
  CONFIG_SYS_PROMPT="U-Boot > "
@@@ -42,15 -39,10 +42,11 @@@ CONFIG_CMD_DIAG=
  CONFIG_OF_CONTROL=y
  CONFIG_SPL_OF_CONTROL=y
  CONFIG_DEFAULT_DEVICE_TREE="da850-evm"
 -CONFIG_SPL_OF_PLATDATA=y
  CONFIG_ENV_IS_IN_SPI_FLASH=y
- CONFIG_USE_ENV_SPI_MAX_HZ=y
- CONFIG_ENV_SPI_MAX_HZ=0
- CONFIG_USE_ENV_SPI_MODE=y
- CONFIG_ENV_SPI_MODE=0
  CONFIG_DM=y
  CONFIG_SPL_DM=y
 +CONFIG_SPL_DM_SEQ_ALIAS=y
 +CONFIG_SPL_OF_TRANSLATE=y
  CONFIG_DM_GPIO=y
  CONFIG_DA8XX_GPIO=y
  CONFIG_DM_I2C=y
index 92c22b8a84ee962015427c7f845841c9c2f3db5a,9276df22a5a52f93eea6336d7c077eb8b7a3e48d..d6e4bd4f9ac1c5177a831f78c81c38f3571ebe3b
@@@ -28,10 -28,7 +28,10 @@@ CONFIG_CMD_MEMTEST=
  CONFIG_CMD_GPIO=y
  CONFIG_CMD_SF=y
  CONFIG_CMD_SPI=y
 -# CONFIG_CMD_NET is not set
 +CONFIG_CMD_DHCP=y
 +# CONFIG_NET_TFTP_VARS is not set
 +# CONFIG_CMD_NFS is not set
 +CONFIG_CMD_PING=y
  CONFIG_CMD_MTDPARTS=y
  CONFIG_MTDIDS_DEFAULT="nor0=spi_flash"
  CONFIG_MTDPARTS_DEFAULT="mtdparts=spi_flash:1m(UBoot),256k(Env),256k(Env.bk)"
@@@ -41,10 -38,6 +41,6 @@@ CONFIG_OF_LIST="jr2_pcb110 jr2_pcb111 s
  CONFIG_DTB_RESELECT=y
  CONFIG_MULTI_DTB_FIT=y
  CONFIG_ENV_IS_IN_SPI_FLASH=y
- CONFIG_USE_ENV_SPI_MAX_HZ=y
- CONFIG_ENV_SPI_MAX_HZ=0
- CONFIG_USE_ENV_SPI_MODE=y
- CONFIG_ENV_SPI_MODE=0
  CONFIG_NET_RANDOM_ETHADDR=y
  CONFIG_CLK=y
  CONFIG_DM_GPIO=y
@@@ -69,4 -62,3 +65,4 @@@ CONFIG_SYS_NS16550=
  CONFIG_SPI=y
  CONFIG_DM_SPI=y
  CONFIG_LZMA=y
 +CONFIG_MSCC_JR2_SWITCH=y
index 33d43dede5e63067107a9fc16688a33ab7531061,a450f48018957ca8f6563462eab5057d1080f698..924cf6ad013fe6051b31e348140a329f6e7060ec
@@@ -24,6 -24,7 +24,6 @@@ CONFIG_CMD_MEMTEST=
  CONFIG_CMD_GPIO=y
  CONFIG_CMD_SF=y
  CONFIG_CMD_SPI=y
 -# CONFIG_CMD_NET is not set
  CONFIG_CMD_MTDPARTS=y
  CONFIG_MTDIDS_DEFAULT="nor0=spi_flash"
  CONFIG_MTDPARTS_DEFAULT="mtdparts=spi_flash:1m(UBoot),256k(Env),256k(Env.bk)"
@@@ -32,10 -33,6 +32,6 @@@ CONFIG_DEFAULT_DEVICE_TREE="servalt_pcb
  CONFIG_DTB_RESELECT=y
  CONFIG_MULTI_DTB_FIT=y
  CONFIG_ENV_IS_IN_SPI_FLASH=y
- CONFIG_USE_ENV_SPI_MAX_HZ=y
- CONFIG_ENV_SPI_MAX_HZ=0
- CONFIG_USE_ENV_SPI_MODE=y
- CONFIG_ENV_SPI_MODE=0
  CONFIG_NET_RANDOM_ETHADDR=y
  CONFIG_CLK=y
  CONFIG_DM_GPIO=y
@@@ -58,8 -55,3 +54,8 @@@ CONFIG_SYS_NS16550=
  CONFIG_SPI=y
  CONFIG_DM_SPI=y
  CONFIG_LZMA=y
 +CONFIG_CMD_DHCP=y
 +# CONFIG_NET_TFTP_VARS is not set
 +# CONFIG_CMD_NFS is not set
 +CONFIG_CMD_PING=y
 +CONFIG_MSCC_SERVALT_SWITCH=y
diff --combined doc/git-mailrc
index ec6d8bf8f4feadd112aceed6d31202342f999d9e,9cf180779c87832c3de678a5cd8c3accab080671..f989792e8d3ff85cb59edd4e815f5a6925cdf373
@@@ -24,8 -24,9 +24,8 @@@ alias dinh           Dinh Nguyen <dingu
  alias hs             Heiko Schocher <[email protected]>
  alias iwamatsu       Nobuhiro Iwamatsu <[email protected]>
  alias jaehoon        Jaehoon Chung <[email protected]>
- alias jagan          Jagan Teki <jagan@openedev.com>
+ alias jagan          Jagan Teki <jagan@amarulasolutions.com>
  alias jhersh         Joe Hershberger <[email protected]>
 -alias luka           Luka Perkov <[email protected]>
  alias lukma          Lukasz Majewski <[email protected]>
  alias macpaul        Macpaul Lin <[email protected]>
  alias marex          Marek Vasut <[email protected]>
@@@ -34,6 -35,7 +34,6 @@@ alias masahiro       Masahiro Yamada <y
  alias mateusz        Mateusz Kulikowski <[email protected]>
  alias maxime         Maxime Ripard <[email protected]>
  alias monstr         Michal Simek <[email protected]>
 -alias prafulla       Prafulla Wadaskar <[email protected]>
  alias prom           Minkyu Kang <[email protected]>
  alias ptomsich       Philipp Tomsich <[email protected]>
  alias sbabic         Stefano Babic <[email protected]>
@@@ -54,7 -56,7 +54,7 @@@ alias arm            uboot, aaribaud, t
  alias at91           uboot, abiessmann
  alias davinci        ti
  alias imx            uboot, sbabic
 -alias kirkwood       uboot, prafulla, luka, stroese
 +alias kirkwood       uboot, stroese
  alias omap           ti
  alias pxa            uboot, marex
  alias rmobile        uboot, iwamatsu
diff --combined lib/fdtdec.c
index efec3c2717764ffc1820f080eba3899ab3a74643,21f1eee92d3035689d954f59c3ab59da6572a576..9c9c30234732f09b8162414e12145373a23b6cc6
@@@ -45,7 -45,7 +45,7 @@@ static const char * const compat_names[
        COMPAT(SAMSUNG_EXYNOS_TMU, "samsung,exynos-tmu"),
        COMPAT(SAMSUNG_EXYNOS_MIPI_DSI, "samsung,exynos-mipi-dsi"),
        COMPAT(SAMSUNG_EXYNOS_DWMMC, "samsung,exynos-dwmmc"),
-       COMPAT(GENERIC_SPI_FLASH, "spi-flash"),
+       COMPAT(GENERIC_SPI_FLASH, "jedec,spi-nor"),
        COMPAT(SAMSUNG_EXYNOS_SYSMMU, "samsung,sysmmu-v3.3"),
        COMPAT(INTEL_MICROCODE, "intel,microcode"),
        COMPAT(INTEL_QRK_MRC, "intel,quark-mrc"),
@@@ -1261,231 -1261,6 +1261,231 @@@ __weak void *board_fdt_blob_setup(void
  }
  #endif
  
 +int fdtdec_set_phandle(void *blob, int node, uint32_t phandle)
 +{
 +      fdt32_t value = cpu_to_fdt32(phandle);
 +
 +      return fdt_setprop(blob, node, "phandle", &value, sizeof(value));
 +}
 +
 +static int fdtdec_init_reserved_memory(void *blob)
 +{
 +      int na, ns, node, err;
 +      fdt32_t value;
 +
 +      /* inherit #address-cells and #size-cells from the root node */
 +      na = fdt_address_cells(blob, 0);
 +      ns = fdt_size_cells(blob, 0);
 +
 +      node = fdt_add_subnode(blob, 0, "reserved-memory");
 +      if (node < 0)
 +              return node;
 +
 +      err = fdt_setprop(blob, node, "ranges", NULL, 0);
 +      if (err < 0)
 +              return err;
 +
 +      value = cpu_to_fdt32(ns);
 +
 +      err = fdt_setprop(blob, node, "#size-cells", &value, sizeof(value));
 +      if (err < 0)
 +              return err;
 +
 +      value = cpu_to_fdt32(na);
 +
 +      err = fdt_setprop(blob, node, "#address-cells", &value, sizeof(value));
 +      if (err < 0)
 +              return err;
 +
 +      return node;
 +}
 +
 +int fdtdec_add_reserved_memory(void *blob, const char *basename,
 +                             const struct fdt_memory *carveout,
 +                             uint32_t *phandlep)
 +{
 +      fdt32_t cells[4] = {}, *ptr = cells;
 +      uint32_t upper, lower, phandle;
 +      int parent, node, na, ns, err;
 +      char name[64];
 +
 +      /* create an empty /reserved-memory node if one doesn't exist */
 +      parent = fdt_path_offset(blob, "/reserved-memory");
 +      if (parent < 0) {
 +              parent = fdtdec_init_reserved_memory(blob);
 +              if (parent < 0)
 +                      return parent;
 +      }
 +
 +      /* only 1 or 2 #address-cells and #size-cells are supported */
 +      na = fdt_address_cells(blob, parent);
 +      if (na < 1 || na > 2)
 +              return -FDT_ERR_BADNCELLS;
 +
 +      ns = fdt_size_cells(blob, parent);
 +      if (ns < 1 || ns > 2)
 +              return -FDT_ERR_BADNCELLS;
 +
 +      /* find a matching node and return the phandle to that */
 +      fdt_for_each_subnode(node, blob, parent) {
 +              const char *name = fdt_get_name(blob, node, NULL);
 +              phys_addr_t addr, size;
 +
 +              addr = fdtdec_get_addr_size(blob, node, "reg", &size);
 +              if (addr == FDT_ADDR_T_NONE) {
 +                      debug("failed to read address/size for %s\n", name);
 +                      continue;
 +              }
 +
 +              if (addr == carveout->start && (addr + size) == carveout->end) {
 +                      *phandlep = fdt_get_phandle(blob, node);
 +                      return 0;
 +              }
 +      }
 +
 +      /*
 +       * Unpack the start address and generate the name of the new node
 +       * base on the basename and the unit-address.
 +       */
 +      lower = fdt_addr_unpack(carveout->start, &upper);
 +
 +      if (na > 1 && upper > 0)
 +              snprintf(name, sizeof(name), "%s@%x,%x", basename, upper,
 +                       lower);
 +      else {
 +              if (upper > 0) {
 +                      debug("address %08x:%08x exceeds addressable space\n",
 +                            upper, lower);
 +                      return -FDT_ERR_BADVALUE;
 +              }
 +
 +              snprintf(name, sizeof(name), "%s@%x", basename, lower);
 +      }
 +
 +      node = fdt_add_subnode(blob, parent, name);
 +      if (node < 0)
 +              return node;
 +
 +      err = fdt_generate_phandle(blob, &phandle);
 +      if (err < 0)
 +              return err;
 +
 +      err = fdtdec_set_phandle(blob, node, phandle);
 +      if (err < 0)
 +              return err;
 +
 +      /* store one or two address cells */
 +      if (na > 1)
 +              *ptr++ = cpu_to_fdt32(upper);
 +
 +      *ptr++ = cpu_to_fdt32(lower);
 +
 +      /* store one or two size cells */
 +      lower = fdt_size_unpack(carveout->end - carveout->start + 1, &upper);
 +
 +      if (ns > 1)
 +              *ptr++ = cpu_to_fdt32(upper);
 +
 +      *ptr++ = cpu_to_fdt32(lower);
 +
 +      err = fdt_setprop(blob, node, "reg", cells, (na + ns) * sizeof(*cells));
 +      if (err < 0)
 +              return err;
 +
 +      /* return the phandle for the new node for the caller to use */
 +      if (phandlep)
 +              *phandlep = phandle;
 +
 +      return 0;
 +}
 +
 +int fdtdec_get_carveout(const void *blob, const char *node, const char *name,
 +                      unsigned int index, struct fdt_memory *carveout)
 +{
 +      const fdt32_t *prop;
 +      uint32_t phandle;
 +      int offset, len;
 +      fdt_size_t size;
 +
 +      offset = fdt_path_offset(blob, node);
 +      if (offset < 0)
 +              return offset;
 +
 +      prop = fdt_getprop(blob, offset, name, &len);
 +      if (!prop) {
 +              debug("failed to get %s for %s\n", name, node);
 +              return -FDT_ERR_NOTFOUND;
 +      }
 +
 +      if ((len % sizeof(phandle)) != 0) {
 +              debug("invalid phandle property\n");
 +              return -FDT_ERR_BADPHANDLE;
 +      }
 +
 +      if (len < (sizeof(phandle) * (index + 1))) {
 +              debug("invalid phandle index\n");
 +              return -FDT_ERR_BADPHANDLE;
 +      }
 +
 +      phandle = fdt32_to_cpu(prop[index]);
 +
 +      offset = fdt_node_offset_by_phandle(blob, phandle);
 +      if (offset < 0) {
 +              debug("failed to find node for phandle %u\n", phandle);
 +              return offset;
 +      }
 +
 +      carveout->start = fdtdec_get_addr_size_auto_noparent(blob, offset,
 +                                                           "reg", 0, &size,
 +                                                           true);
 +      if (carveout->start == FDT_ADDR_T_NONE) {
 +              debug("failed to read address/size from \"reg\" property\n");
 +              return -FDT_ERR_NOTFOUND;
 +      }
 +
 +      carveout->end = carveout->start + size - 1;
 +
 +      return 0;
 +}
 +
 +int fdtdec_set_carveout(void *blob, const char *node, const char *prop_name,
 +                      unsigned int index, const char *name,
 +                      const struct fdt_memory *carveout)
 +{
 +      uint32_t phandle;
 +      int err, offset;
 +      fdt32_t value;
 +
 +      /* XXX implement support for multiple phandles */
 +      if (index > 0) {
 +              debug("invalid index %u\n", index);
 +              return -FDT_ERR_BADOFFSET;
 +      }
 +
 +      err = fdtdec_add_reserved_memory(blob, name, carveout, &phandle);
 +      if (err < 0) {
 +              debug("failed to add reserved memory: %d\n", err);
 +              return err;
 +      }
 +
 +      offset = fdt_path_offset(blob, node);
 +      if (offset < 0) {
 +              debug("failed to find offset for node %s: %d\n", node, offset);
 +              return offset;
 +      }
 +
 +      value = cpu_to_fdt32(phandle);
 +
 +      err = fdt_setprop(blob, offset, prop_name, &value, sizeof(value));
 +      if (err < 0) {
 +              debug("failed to set %s property for node %s: %d\n", prop_name,
 +                    node, err);
 +              return err;
 +      }
 +
 +      return 0;
 +}
 +
  int fdtdec_setup(void)
  {
  #if CONFIG_IS_ENABLED(OF_CONTROL)
This page took 0.103172 seconds and 4 git commands to generate.