All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/18] dm: Preparation for enhanced of-platdata
@ 2020-12-23  2:30 Simon Glass
  2020-12-23  2:30 ` [PATCH v2 01/18] Makefile: Build a separate .dtb for TPL Simon Glass
                   ` (35 more replies)
  0 siblings, 36 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

This series includes various patches in service of some upcoming
of-platdata enhancements. The new features will support declaring devices
and uclasses at build time (automatically, using dtoc) so as to further
reduce the code-size overhead of driver model.

The main changes in this series are:
- Support for separate SPL and TPL devicetree files, so dtoc can produce
   of-platdata for each individually
- Rename of NS16550 to ns16550 so it follows the identifier rules
- Drop unprintable characters to avoid dtoc warnings
- Report TPL code/data sizes in buildman, to support measuring size
- Update U-Boot to access device/uclass-private data via functions (to
     allow the storage mechanism to change later)
- Drop bd_info from the image to save space

Changes in v2:
- Remove an old comment about this in pinctrl
- Add a warning for clk_reqister()

Simon Glass (18):
  Makefile: Build a separate .dtb for TPL
  Makefile: Build SPL dtbs in the spl/ directory
  Makefile: Tidy up SPL dtb production
  Makefile: Use common args for dtoc
  buildman: Report sizes for TPL also
  serial: Update NS16550_t and struct NS16550
  serial: Rename ns16550 functions to lower case
  sandbox: Drop unnecessary test node
  spl: Drop bd_info in the data section
  dm: core: Support dm_dump_all() in SPL
  dm: core: Use 'uclass_driver' for the uclass linker_list
  dm: core: Only include simple-bus devicetree id when needed
  x86: apl: Drop support for !OF_PLATDATA_PARENT
  dm: core: Add function to access uclass priv
  dm: core: Add functions to set priv/plat
  dm: Use access methods for dev/uclass private data
  dm: core: Use access methods for dev/uclass private data
  dm: core: Rename the priv/plat members

 arch/arm/cpu/armv7/ls102xa/fdt.c           |   4 +
 arch/arm/cpu/armv8/fsl-layerscape/spl.c    |   5 +-
 arch/arm/mach-davinci/da850_lowlevel.c     |   4 +-
 arch/arm/mach-davinci/spl.c                |   4 +-
 arch/arm/mach-keystone/init.c              |   2 +-
 arch/arm/mach-stm32mp/pwr_regulator.c      |   3 +-
 arch/sandbox/dts/sandbox.dtsi              |   5 -
 arch/x86/cpu/apollolake/Kconfig            |   1 +
 arch/x86/cpu/apollolake/spl.c              |  28 ------
 arch/x86/cpu/apollolake/uart.c             |   5 +-
 arch/x86/cpu/slimbootloader/serial.c       |   4 +-
 board/Arcturus/ucp1020/spl.c               |   2 +-
 board/Arcturus/ucp1020/spl_minimal.c       |   6 +-
 board/Synology/ds109/ds109.c               |   9 +-
 board/freescale/mpc8313erdb/mpc8313erdb.c  |   6 +-
 board/freescale/mpc8315erdb/mpc8315erdb.c  |   6 +-
 board/freescale/p1010rdb/spl.c             |   2 +-
 board/freescale/p1010rdb/spl_minimal.c     |   8 +-
 board/freescale/p1_p2_rdb_pc/spl.c         |   2 +-
 board/freescale/p1_p2_rdb_pc/spl_minimal.c |   8 +-
 board/freescale/t102xrdb/spl.c             |   2 +-
 board/freescale/t104xrdb/spl.c             |   2 +-
 board/freescale/t208xqds/spl.c             |   2 +-
 board/freescale/t208xrdb/spl.c             |   2 +-
 board/freescale/t4rdb/spl.c                |   2 +-
 common/spl/Kconfig                         |   9 ++
 common/spl/spl.c                           |  20 ++--
 drivers/clk/clk.c                          |   4 +-
 drivers/clk/clk_fixed_rate.c               |   4 +-
 drivers/clk/rockchip/clk_px30.c            |   3 +-
 drivers/clk/rockchip/clk_rk3036.c          |   3 +-
 drivers/clk/rockchip/clk_rk3128.c          |   3 +-
 drivers/clk/rockchip/clk_rk3188.c          |   2 +-
 drivers/clk/rockchip/clk_rk322x.c          |   3 +-
 drivers/clk/rockchip/clk_rk3288.c          |   2 +-
 drivers/clk/rockchip/clk_rk3308.c          |   3 +-
 drivers/clk/rockchip/clk_rk3328.c          |   3 +-
 drivers/clk/rockchip/clk_rk3368.c          |   3 +-
 drivers/clk/rockchip/clk_rk3399.c          |   3 +-
 drivers/clk/rockchip/clk_rv1108.c          |   3 +-
 drivers/core/device-remove.c               |  24 ++---
 drivers/core/device.c                      | 103 ++++++++++++++-------
 drivers/core/dump.c                        |   6 +-
 drivers/core/lists.c                       |   4 +-
 drivers/core/root.c                        |   4 +-
 drivers/core/simple-bus.c                  |   4 +-
 drivers/core/uclass.c                      |  23 ++++-
 drivers/ddr/altera/sdram_agilex.c          |   2 +-
 drivers/ddr/altera/sdram_gen5.c            |   4 +-
 drivers/ddr/altera/sdram_s10.c             |   2 +-
 drivers/ddr/altera/sdram_soc64.c           |   2 +-
 drivers/gpio/dwapb_gpio.c                  |   2 +-
 drivers/gpio/gpio-uclass.c                 |   2 +-
 drivers/gpio/hi6220_gpio.c                 |   2 +-
 drivers/gpio/imx_rgpio2p.c                 |   5 +-
 drivers/gpio/lpc32xx_gpio.c                |   2 +-
 drivers/gpio/mt7621_gpio.c                 |   2 +-
 drivers/gpio/mxs_gpio.c                    |   2 +-
 drivers/gpio/omap_gpio.c                   |   3 +-
 drivers/gpio/s5p_gpio.c                    |   6 +-
 drivers/gpio/sandbox.c                     |   6 +-
 drivers/gpio/sunxi_gpio.c                  |   2 +-
 drivers/gpio/tegra186_gpio.c               |   6 +-
 drivers/gpio/tegra_gpio.c                  |   6 +-
 drivers/misc/altera_sysid.c                |   2 +-
 drivers/misc/cros_ec_sandbox.c             |   4 +-
 drivers/misc/fs_loader.c                   |   6 +-
 drivers/misc/p2sb-uclass.c                 |  15 ---
 drivers/misc/vexpress_config.c             |   2 +-
 drivers/mmc/arm_pl180_mmci.c               |   6 +-
 drivers/mmc/mxsmmc.c                       |   2 +-
 drivers/mmc/octeontx_hsmmc.c               |  17 +++-
 drivers/mux/mmio.c                         |   3 +-
 drivers/net/eth-phy-uclass.c               |   4 +-
 drivers/net/fm/eth.c                       |  22 ++++-
 drivers/net/fsl_mcdmafec.c                 |  10 +-
 drivers/net/mcffec.c                       |  12 +--
 drivers/net/mcfmii.c                       |   8 ++
 drivers/net/pfe_eth/pfe_eth.c              |   2 +-
 drivers/net/sunxi_emac.c                   |   2 +-
 drivers/net/tsec.c                         |  46 ++++++---
 drivers/net/xilinx_emaclite.c              |   2 +-
 drivers/pci/pci-emul-uclass.c              |   4 +-
 drivers/pci/pci-uclass.c                   |   8 +-
 drivers/pinctrl/intel/pinctrl_apl.c        |   2 -
 drivers/pinctrl/pinctrl-qe-io.c            |   4 +-
 drivers/pinctrl/pinctrl-single.c           |   6 +-
 drivers/power/regulator/da9063.c           |  24 ++---
 drivers/power/regulator/pbias_regulator.c  |   3 +-
 drivers/remoteproc/rproc-uclass.c          |   4 +-
 drivers/reset/reset-mediatek.c             |   3 +-
 drivers/reset/reset-rockchip.c             |   3 +-
 drivers/reset/reset-sifive.c               |   3 +-
 drivers/reset/reset-sunxi.c                |   3 +-
 drivers/serial/altera_jtag_uart.c          |   8 +-
 drivers/serial/altera_uart.c               |   8 +-
 drivers/serial/atmel_usart.c               |   2 +-
 drivers/serial/ns16550.c                   |  62 ++++++-------
 drivers/serial/sandbox.c                   |   6 +-
 drivers/serial/serial_arc.c                |   8 +-
 drivers/serial/serial_coreboot.c           |   2 +-
 drivers/serial/serial_intel_mid.c          |   2 +-
 drivers/serial/serial_linflexuart.c        |   2 +-
 drivers/serial/serial_lpuart.c             |  10 +-
 drivers/serial/serial_mcf.c                |  10 +-
 drivers/serial/serial_meson.c              |  12 +--
 drivers/serial/serial_mxc.c                |  12 +--
 drivers/serial/serial_ns16550.c            |  26 +++---
 drivers/serial/serial_omap.c               |   8 +-
 drivers/serial/serial_pxa.c                |  10 +-
 drivers/serial/serial_rockchip.c           |   7 +-
 drivers/serial/serial_s5p.c                |  12 +--
 drivers/spi/cadence_qspi.c                 |  12 +--
 drivers/spi/cf_spi.c                       |   2 +-
 drivers/spi/davinci_spi.c                  |   4 +-
 drivers/spi/designware_spi.c               |   4 +-
 drivers/spi/exynos_spi.c                   |   4 +-
 drivers/spi/fsl_dspi.c                     |   4 +-
 drivers/spi/fsl_espi.c                     |   2 +-
 drivers/spi/fsl_qspi.c                     |   2 +-
 drivers/spi/mxs_spi.c                      |   2 +-
 drivers/spi/pl022_spi.c                    |   2 +-
 drivers/spi/rk_spi.c                       |   6 +-
 drivers/spi/soft_spi.c                     |   4 +-
 drivers/spi/tegra114_spi.c                 |   4 +-
 drivers/spi/tegra20_sflash.c               |   4 +-
 drivers/spi/tegra20_slink.c                |   4 +-
 drivers/spi/tegra210_qspi.c                |   4 +-
 drivers/spi/uniphier_spi.c                 |   8 +-
 drivers/spi/zynq_qspi.c                    |   4 +-
 drivers/spi/zynq_spi.c                     |   8 +-
 drivers/spi/zynqmp_gqspi.c                 |   6 +-
 drivers/timer/ag101p_timer.c               |   4 +-
 drivers/timer/altera_timer.c               |   4 +-
 drivers/timer/andes_plmt_timer.c           |   7 +-
 drivers/timer/mpc83xx_timer.c              |   2 +-
 drivers/timer/sifive_clint_timer.c         |   7 +-
 drivers/timer/timer-uclass.c               |   2 +-
 drivers/usb/gadget/ether.c                 |  16 +++-
 drivers/usb/host/usb-uclass.c              |   6 +-
 drivers/video/video-uclass.c               |   2 +-
 dts/Makefile                               |  14 ++-
 include/dm/device-internal.h               |  84 +++++++++++++++++
 include/dm/device.h                        |  29 +++---
 include/dm/uclass-internal.h               |  14 +++
 include/dm/uclass.h                        |  14 ++-
 include/ns16550.h                          |  21 +++--
 include/spl.h                              |  10 +-
 lib/efi/efi_stub.c                         |   2 +-
 lib/efi_loader/efi_device_path.c           |   2 +-
 net/eth-uclass.c                           |  22 ++---
 scripts/Makefile.spl                       |  18 ++--
 test/dm/core.c                             |  24 ++---
 test/dm/test-driver.c                      |   7 +-
 test/dm/test-fdt.c                         |   4 +-
 test/dm/test-uclass.c                      |   4 +-
 test/py/tests/test_ofplatdata.py           |   1 -
 tools/buildman/builderthread.py            |   2 +-
 tools/dtoc/dtoc_test_simple.dts            |   5 -
 tools/dtoc/test_dtoc.py                    |  12 ---
 160 files changed, 757 insertions(+), 527 deletions(-)

-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 01/18] Makefile: Build a separate .dtb for TPL
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 02/18] Makefile: Build SPL dtbs in the spl/ directory Simon Glass
                   ` (34 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

At present both SPL and TPL use the same devicetree binary. While there
is logic to run fdtgrep separately on each one, it does not actually
happen.

Add a new TPL rule and use that instead. Make this rule conditional on
there actually being a TPL. Do the same for SPL for consistency.

Note that the SPL and TPL dtbs are build by a Makefule rule used for
U-Boot proper. This is the 'dtbs' target in dts/Makefile. So the check
for CONFIG_TPL_BUILD in cmd_fdtgrep never actually works at present.

We don't support CONFIG_OF_EMBED for TPL at present.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 dts/Makefile         | 11 ++++++++---
 scripts/Makefile.spl |  4 +++-
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/dts/Makefile b/dts/Makefile
index a20930eb9a5..4cd65ce73d4 100644
--- a/dts/Makefile
+++ b/dts/Makefile
@@ -19,6 +19,9 @@ endif
 $(obj)/dt-spl.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
 	$(call if_changed,fdtgrep)
 
+$(obj)/dt-tpl.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
+	$(call if_changed,fdtgrep)
+
 ifeq ($(CONFIG_OF_DTB_PROPS_REMOVE),y)
 $(obj)/dt.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
 	$(call if_changed,fdt_rm_props)
@@ -27,7 +30,7 @@ $(obj)/dt.dtb: $(DTB) FORCE
 	$(call if_changed,shipped)
 endif
 
-targets += dt.dtb dt-spl.dtb
+targets += dt.dtb dt-spl.dtb dt-tpl.dtb
 
 $(DTB): arch-dtbs
 	$(Q)test -e $@ || (						\
@@ -51,10 +54,12 @@ else
 obj-$(CONFIG_OF_EMBED) := dt.dtb.o
 endif
 
-dtbs: $(obj)/dt.dtb $(obj)/dt-spl.dtb
+dtbs: $(obj)/dt.dtb \
+		$(if $(CONFIG_SPL),$(obj)/dt-spl.dtb) \
+		$(if $(CONFIG_TPL),$(obj)/dt-tpl.dtb)
 	@:
 
-clean-files := dt.dtb.S dt-spl.dtb.S
+clean-files := dt.dtb.S dt-spl.dtb.S dt-tpl.dtb.S
 
 # Let clean descend into dts directories
 subdir- += ../arch/arm/dts ../arch/microblaze/dts ../arch/mips/dts ../arch/sandbox/dts ../arch/x86/dts ../arch/powerpc/dts ../arch/riscv/dts
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
index 9f1f7445d71..8ebe6a9840e 100644
--- a/scripts/Makefile.spl
+++ b/scripts/Makefile.spl
@@ -31,8 +31,10 @@ endif
 
 ifeq ($(CONFIG_TPL_BUILD),y)
 SPL_BIN := u-boot-tpl
+SPL_NAME := tpl
 else
 SPL_BIN := u-boot-spl
+SPL_NAME := spl
 endif
 
 ifdef CONFIG_SPL_BUILD
@@ -298,7 +300,7 @@ $(obj)/$(SPL_BIN)-pad.bin: $(obj)/$(SPL_BIN)
 	@bss_size_str=$(shell $(NM) $< | awk 'BEGIN {size = 0} /__bss_size/ {size = $$1} END {print "ibase=16; " toupper(size)}' | bc); \
 	dd if=/dev/zero of=$@ bs=1 count=$${bss_size_str} 2>/dev/null;
 
-$(obj)/$(SPL_BIN).dtb: dts/dt-spl.dtb FORCE
+$(obj)/$(SPL_BIN).dtb: dts/dt-$(SPL_NAME).dtb FORCE
 	$(call if_changed,copy)
 
 pythonpath = PYTHONPATH=scripts/dtc/pylibfdt
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 02/18] Makefile: Build SPL dtbs in the spl/ directory
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
  2020-12-23  2:30 ` [PATCH v2 01/18] Makefile: Build a separate .dtb for TPL Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 03/18] Makefile: Tidy up SPL dtb production Simon Glass
                   ` (33 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

Rather than putting these in the top-level dts/ directory (which is
intended for U-Boot proper), put them in the correct subdirectory for
SPL (either spl/ or tpl/). This is where other SPL targets are kept,
so this is more consistent.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 dts/Makefile         | 9 +++++----
 scripts/Makefile.spl | 2 +-
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/dts/Makefile b/dts/Makefile
index 4cd65ce73d4..c0a953ffac9 100644
--- a/dts/Makefile
+++ b/dts/Makefile
@@ -16,10 +16,11 @@ else
 DTB := arch/$(ARCH)/dts/$(DEVICE_TREE).dtb
 endif
 
-$(obj)/dt-spl.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
+spl/$(obj)/dt-spl.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
+	mkdir -p $(dir $@)
 	$(call if_changed,fdtgrep)
 
-$(obj)/dt-tpl.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
+tpl/$(obj)/dt-tpl.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
 	$(call if_changed,fdtgrep)
 
 ifeq ($(CONFIG_OF_DTB_PROPS_REMOVE),y)
@@ -55,8 +56,8 @@ obj-$(CONFIG_OF_EMBED) := dt.dtb.o
 endif
 
 dtbs: $(obj)/dt.dtb \
-		$(if $(CONFIG_SPL),$(obj)/dt-spl.dtb) \
-		$(if $(CONFIG_TPL),$(obj)/dt-tpl.dtb)
+		$(if $(CONFIG_SPL),spl/$(obj)/dt-spl.dtb) \
+		$(if $(CONFIG_TPL),tpl/$(obj)/dt-tpl.dtb)
 	@:
 
 clean-files := dt.dtb.S dt-spl.dtb.S dt-tpl.dtb.S
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
index 8ebe6a9840e..e83e93e5fc4 100644
--- a/scripts/Makefile.spl
+++ b/scripts/Makefile.spl
@@ -300,7 +300,7 @@ $(obj)/$(SPL_BIN)-pad.bin: $(obj)/$(SPL_BIN)
 	@bss_size_str=$(shell $(NM) $< | awk 'BEGIN {size = 0} /__bss_size/ {size = $$1} END {print "ibase=16; " toupper(size)}' | bc); \
 	dd if=/dev/zero of=$@ bs=1 count=$${bss_size_str} 2>/dev/null;
 
-$(obj)/$(SPL_BIN).dtb: dts/dt-$(SPL_NAME).dtb FORCE
+$(obj)/$(SPL_BIN).dtb: $(obj)/dts/dt-$(SPL_NAME).dtb FORCE
 	$(call if_changed,copy)
 
 pythonpath = PYTHONPATH=scripts/dtc/pylibfdt
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 03/18] Makefile: Tidy up SPL dtb production
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
  2020-12-23  2:30 ` [PATCH v2 01/18] Makefile: Build a separate .dtb for TPL Simon Glass
  2020-12-23  2:30 ` [PATCH v2 02/18] Makefile: Build SPL dtbs in the spl/ directory Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 04/18] Makefile: Use common args for dtoc Simon Glass
                   ` (32 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

Use the SPL_NAME variable to simplify the rules. Drop the SPL targets
clean-files since the SPL and TPL dts/ directories are removed by
existing rules. Move the SPL rules into a new spl_dtbs to avoid the
complicated $(if) construct.

Also drop unused pieces from the 'targets' variable.

With this, SPL and TPL have separate dtbs which respect the various
u-boot,dm-spl / u-boot,dm-tpl tags.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 dts/Makefile         | 18 +++++++++---------
 scripts/Makefile.spl |  7 ++++---
 2 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/dts/Makefile b/dts/Makefile
index c0a953ffac9..94967cf656c 100644
--- a/dts/Makefile
+++ b/dts/Makefile
@@ -16,13 +16,10 @@ else
 DTB := arch/$(ARCH)/dts/$(DEVICE_TREE).dtb
 endif
 
-spl/$(obj)/dt-spl.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
+$(obj)/dt-$(SPL_NAME).dtb: dts/dt.dtb $(objtree)/tools/fdtgrep FORCE
 	mkdir -p $(dir $@)
 	$(call if_changed,fdtgrep)
 
-tpl/$(obj)/dt-tpl.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
-	$(call if_changed,fdtgrep)
-
 ifeq ($(CONFIG_OF_DTB_PROPS_REMOVE),y)
 $(obj)/dt.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
 	$(call if_changed,fdt_rm_props)
@@ -31,7 +28,7 @@ $(obj)/dt.dtb: $(DTB) FORCE
 	$(call if_changed,shipped)
 endif
 
-targets += dt.dtb dt-spl.dtb dt-tpl.dtb
+targets += dt.dtb
 
 $(DTB): arch-dtbs
 	$(Q)test -e $@ || (						\
@@ -55,12 +52,15 @@ else
 obj-$(CONFIG_OF_EMBED) := dt.dtb.o
 endif
 
-dtbs: $(obj)/dt.dtb \
-		$(if $(CONFIG_SPL),spl/$(obj)/dt-spl.dtb) \
-		$(if $(CONFIG_TPL),tpl/$(obj)/dt-tpl.dtb)
+# Target for U-Boot proper
+dtbs: $(obj)/dt.dtb
+	@:
+
+# Target for SPL/TPL
+spl_dtbs: $(obj)/dt-$(SPL_NAME).dtb
 	@:
 
-clean-files := dt.dtb.S dt-spl.dtb.S dt-tpl.dtb.S
+clean-files := dt.dtb.S
 
 # Let clean descend into dts directories
 subdir- += ../arch/arm/dts ../arch/microblaze/dts ../arch/mips/dts ../arch/sandbox/dts ../arch/x86/dts ../arch/powerpc/dts ../arch/riscv/dts
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
index e83e93e5fc4..c92963833bc 100644
--- a/scripts/Makefile.spl
+++ b/scripts/Makefile.spl
@@ -37,6 +37,8 @@ SPL_BIN := u-boot-spl
 SPL_NAME := spl
 endif
 
+export SPL_NAME
+
 ifdef CONFIG_SPL_BUILD
 SPL_ := SPL_
 ifeq ($(CONFIG_TPL_BUILD),y)
@@ -459,9 +461,8 @@ endif
 PHONY += FORCE
 FORCE:
 
-PHONY += dtbs
-dtbs:
-	$(Q)$(MAKE) $(build)=dts dtbs
+$(obj)/dts/dt-$(SPL_NAME).dtb: dts/dt.dtb
+	$(Q)$(MAKE) $(build)=$(obj)/dts spl_dtbs
 
 # Declare the contents of the .PHONY variable as phony.  We keep that
 # information in a variable so we can use it in if_changed and friends.
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 04/18] Makefile: Use common args for dtoc
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (2 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 03/18] Makefile: Tidy up SPL dtb production Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 05/18] buildman: Report sizes for TPL also Simon Glass
                   ` (31 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

At present the dtoc commmand line is repeated twice in the Makefile. Use a
variable to avoid this, so it is easier to add more conditional arguments.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 scripts/Makefile.spl | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
index c92963833bc..161c15b200e 100644
--- a/scripts/Makefile.spl
+++ b/scripts/Makefile.spl
@@ -307,11 +307,14 @@ $(obj)/$(SPL_BIN).dtb: $(obj)/dts/dt-$(SPL_NAME).dtb FORCE
 
 pythonpath = PYTHONPATH=scripts/dtc/pylibfdt
 
+DTOC_ARGS := $(pythonpath) $(srctree)/tools/dtoc/dtoc \
+	-d $(obj)/$(SPL_BIN).dtb
+
 quiet_cmd_dtocc = DTOC C  $@
-cmd_dtocc = $(pythonpath) $(srctree)/tools/dtoc/dtoc -d $(obj)/$(SPL_BIN).dtb -o $@ platdata
+cmd_dtocc = $(DTOC_ARGS) -o $@ platdata
 
 quiet_cmd_dtoch = DTOC H  $@
-cmd_dtoch = $(pythonpath) $(srctree)/tools/dtoc/dtoc -d $(obj)/$(SPL_BIN).dtb -o $@ struct
+cmd_dtoch = $(DTOC_ARGS) -o $@ struct
 
 quiet_cmd_plat = PLAT    $@
 cmd_plat = $(CC) $(c_flags) -c $< -o $(filter-out $(PHONY),$@)
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 05/18] buildman: Report sizes for TPL also
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (3 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 04/18] Makefile: Use common args for dtoc Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 06/18] serial: Update NS16550_t and struct NS16550 Simon Glass
                   ` (30 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

At present only U-Boot proper and SPL are scanned to obtain size
information. Add TPL also, to complete the picture.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 tools/buildman/builderthread.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/buildman/builderthread.py b/tools/buildman/builderthread.py
index 48fcd6cf7e2..c5bf31e9e11 100644
--- a/tools/buildman/builderthread.py
+++ b/tools/buildman/builderthread.py
@@ -335,7 +335,7 @@ class BuilderThread(threading.Thread):
                 for var in sorted(env.keys()):
                     print('%s="%s"' % (var, env[var]), file=fd)
             lines = []
-            for fname in ['u-boot', 'spl/u-boot-spl']:
+            for fname in ['u-boot', 'spl/u-boot-spl', 'tpl/u-boot-tpl']:
                 cmd = ['%snm' % self.toolchain.cross, '--size-sort', fname]
                 nm_result = command.RunPipe([cmd], capture=True,
                         capture_stderr=True, cwd=result.out_dir,
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 06/18] serial: Update NS16550_t and struct NS16550
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (4 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 05/18] buildman: Report sizes for TPL also Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 07/18] serial: Rename ns16550 functions to lower case Simon Glass
                   ` (29 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

Typedefs should not be used in U-Boot and structs should be lower case.
Update the code to use struct ns16550 consistently.

Put a header guard on the file while we are here.

Signed-off-by: Simon Glass <sjg@chromium.org>

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---

(no changes since v1)

 arch/arm/mach-davinci/da850_lowlevel.c     |  4 +-
 arch/arm/mach-davinci/spl.c                |  4 +-
 arch/arm/mach-keystone/init.c              |  2 +-
 arch/x86/cpu/apollolake/uart.c             |  2 +-
 arch/x86/cpu/slimbootloader/serial.c       |  2 +-
 board/Arcturus/ucp1020/spl.c               |  2 +-
 board/Arcturus/ucp1020/spl_minimal.c       |  6 +--
 board/Synology/ds109/ds109.c               |  8 ++--
 board/freescale/mpc8313erdb/mpc8313erdb.c  |  6 +--
 board/freescale/mpc8315erdb/mpc8315erdb.c  |  6 +--
 board/freescale/p1010rdb/spl.c             |  2 +-
 board/freescale/p1010rdb/spl_minimal.c     |  8 ++--
 board/freescale/p1_p2_rdb_pc/spl.c         |  2 +-
 board/freescale/p1_p2_rdb_pc/spl_minimal.c |  8 ++--
 board/freescale/t102xrdb/spl.c             |  2 +-
 board/freescale/t104xrdb/spl.c             |  2 +-
 board/freescale/t208xqds/spl.c             |  2 +-
 board/freescale/t208xrdb/spl.c             |  2 +-
 board/freescale/t4rdb/spl.c                |  2 +-
 drivers/serial/ns16550.c                   | 44 +++++++++++-----------
 drivers/serial/serial_coreboot.c           |  2 +-
 drivers/serial/serial_intel_mid.c          |  2 +-
 drivers/serial/serial_ns16550.c            | 14 +++----
 drivers/serial/serial_omap.c               |  6 +--
 drivers/serial/serial_rockchip.c           |  4 +-
 include/ns16550.h                          | 21 ++++++-----
 lib/efi/efi_stub.c                         |  2 +-
 27 files changed, 85 insertions(+), 82 deletions(-)

diff --git a/arch/arm/mach-davinci/da850_lowlevel.c b/arch/arm/mach-davinci/da850_lowlevel.c
index 07bf19b5e42..6994ded2c66 100644
--- a/arch/arm/mach-davinci/da850_lowlevel.c
+++ b/arch/arm/mach-davinci/da850_lowlevel.c
@@ -290,8 +290,8 @@ int arch_cpu_init(void)
 	board_gpio_init();
 
 #if !CONFIG_IS_ENABLED(DM_SERIAL)
-	NS16550_init((NS16550_t)(CONFIG_SYS_NS16550_COM1),
-			CONFIG_SYS_NS16550_CLK / 16 / CONFIG_BAUDRATE);
+	NS16550_init((struct ns16550 *)(CONFIG_SYS_NS16550_COM1),
+		     CONFIG_SYS_NS16550_CLK / 16 / CONFIG_BAUDRATE);
 #endif
 	/*
 	 * Fix Power and Emulation Management Register
diff --git a/arch/arm/mach-davinci/spl.c b/arch/arm/mach-davinci/spl.c
index 5fea935d6e4..3c8330b47f8 100644
--- a/arch/arm/mach-davinci/spl.c
+++ b/arch/arm/mach-davinci/spl.c
@@ -27,9 +27,9 @@ void puts(const char *str)
 void putc(char c)
 {
 	if (c == '\n')
-		NS16550_putc((NS16550_t)(CONFIG_SYS_NS16550_COM1), '\r');
+		NS16550_putc((struct ns16550 *)(CONFIG_SYS_NS16550_COM1), '\r');
 
-	NS16550_putc((NS16550_t)(CONFIG_SYS_NS16550_COM1), c);
+	NS16550_putc((struct ns16550 *)(CONFIG_SYS_NS16550_COM1), c);
 }
 #endif /* CONFIG_SPL_LIBCOMMON_SUPPORT */
 
diff --git a/arch/arm/mach-keystone/init.c b/arch/arm/mach-keystone/init.c
index 88e8912959f..f4edaaaaaca 100644
--- a/arch/arm/mach-keystone/init.c
+++ b/arch/arm/mach-keystone/init.c
@@ -185,7 +185,7 @@ int arch_cpu_init(void)
 	 * driver doesn't handle this.
 	 */
 #ifndef CONFIG_DM_SERIAL
-	NS16550_init((NS16550_t)(CONFIG_SYS_NS16550_COM2),
+	NS16550_init((struct ns16550 *)(CONFIG_SYS_NS16550_COM2),
 		     CONFIG_SYS_NS16550_CLK / 16 / CONFIG_BAUDRATE);
 #endif
 
diff --git a/arch/x86/cpu/apollolake/uart.c b/arch/x86/cpu/apollolake/uart.c
index 26aef655bef..8e6dfdb6309 100644
--- a/arch/x86/cpu/apollolake/uart.c
+++ b/arch/x86/cpu/apollolake/uart.c
@@ -127,7 +127,7 @@ U_BOOT_DRIVER(intel_apl_ns16550) = {
 	.id	= UCLASS_SERIAL,
 	.of_match = apl_ns16550_serial_ids,
 	.plat_auto	= sizeof(struct ns16550_plat),
-	.priv_auto	= sizeof(struct NS16550),
+	.priv_auto	= sizeof(struct ns16550),
 	.ops	= &ns16550_serial_ops,
 	.of_to_plat = apl_ns16550_of_to_plat,
 	.probe = apl_ns16550_probe,
diff --git a/arch/x86/cpu/slimbootloader/serial.c b/arch/x86/cpu/slimbootloader/serial.c
index 5d8963220da..ebbd2c552ff 100644
--- a/arch/x86/cpu/slimbootloader/serial.c
+++ b/arch/x86/cpu/slimbootloader/serial.c
@@ -59,7 +59,7 @@ U_BOOT_DRIVER(serial_slimbootloader) = {
 	.of_match = slimbootloader_serial_ids,
 	.of_to_plat = slimbootloader_serial_of_to_plat,
 	.plat_auto	= sizeof(struct ns16550_plat),
-	.priv_auto	= sizeof(struct NS16550),
+	.priv_auto	= sizeof(struct ns16550),
 	.probe	= ns16550_serial_probe,
 	.ops	= &ns16550_serial_ops,
 };
diff --git a/board/Arcturus/ucp1020/spl.c b/board/Arcturus/ucp1020/spl.c
index 0fd9532d748..8e607558f4d 100644
--- a/board/Arcturus/ucp1020/spl.c
+++ b/board/Arcturus/ucp1020/spl.c
@@ -58,7 +58,7 @@ void board_init_f(ulong bootflag)
 	bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
 	gd->bus_clk = bus_clk;
 
-	NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     bus_clk / 16 / CONFIG_BAUDRATE);
 #ifdef CONFIG_SPL_MMC_BOOT
 	puts("\nSD boot...\n");
diff --git a/board/Arcturus/ucp1020/spl_minimal.c b/board/Arcturus/ucp1020/spl_minimal.c
index cd0022a73e1..38d84afc9e2 100644
--- a/board/Arcturus/ucp1020/spl_minimal.c
+++ b/board/Arcturus/ucp1020/spl_minimal.c
@@ -34,7 +34,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio >>= 1;
 	gd->bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
 
-	NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     gd->bus_clk / 16 / CONFIG_BAUDRATE);
 
 	puts("\nNAND boot... ");
@@ -55,9 +55,9 @@ void board_init_r(gd_t *gd, ulong dest_addr)
 void putc(char c)
 {
 	if (c == '\n')
-		NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM1, '\r');
+		NS16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, '\r');
 
-	NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM1, c);
+	NS16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, c);
 }
 
 void puts(const char *str)
diff --git a/board/Synology/ds109/ds109.c b/board/Synology/ds109/ds109.c
index aa2987d924f..c36e4d37fc7 100644
--- a/board/Synology/ds109/ds109.c
+++ b/board/Synology/ds109/ds109.c
@@ -106,10 +106,10 @@ void reset_misc(void)
 	printf("Synology reset...");
 	udelay(50000);
 
-	b_d = ns16550_calc_divisor((NS16550_t)CONFIG_SYS_NS16550_COM2,
-		CONFIG_SYS_NS16550_CLK, 9600);
-	NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM2, b_d);
-	NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM2, SOFTWARE_REBOOT);
+	b_d = ns16550_calc_divisor((struct ns16550 *)CONFIG_SYS_NS16550_COM2,
+				   CONFIG_SYS_NS16550_CLK, 9600);
+	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM2, b_d);
+	NS16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM2, SOFTWARE_REBOOT);
 }
 
 /* Support old kernels */
diff --git a/board/freescale/mpc8313erdb/mpc8313erdb.c b/board/freescale/mpc8313erdb/mpc8313erdb.c
index 65a10c345ae..69fa89146d8 100644
--- a/board/freescale/mpc8313erdb/mpc8313erdb.c
+++ b/board/freescale/mpc8313erdb/mpc8313erdb.c
@@ -132,7 +132,7 @@ int ft_board_setup(void *blob, struct bd_info *bd)
 void board_init_f(ulong bootflag)
 {
 	board_early_init_f();
-	NS16550_init((NS16550_t)(CONFIG_SYS_IMMR + 0x4500),
+	NS16550_init((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500),
 		     CONFIG_SYS_NS16550_CLK / 16 / CONFIG_BAUDRATE);
 	puts("NAND boot... ");
 	timer_init();
@@ -152,8 +152,8 @@ void putc(char c)
 		return;
 
 	if (c == '\n')
-		NS16550_putc((NS16550_t)(CONFIG_SYS_IMMR + 0x4500), '\r');
+		NS16550_putc((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500), '\r');
 
-	NS16550_putc((NS16550_t)(CONFIG_SYS_IMMR + 0x4500), c);
+	NS16550_putc((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500), c);
 }
 #endif
diff --git a/board/freescale/mpc8315erdb/mpc8315erdb.c b/board/freescale/mpc8315erdb/mpc8315erdb.c
index f8e4599f13f..fff8699d612 100644
--- a/board/freescale/mpc8315erdb/mpc8315erdb.c
+++ b/board/freescale/mpc8315erdb/mpc8315erdb.c
@@ -220,7 +220,7 @@ int checkboard(void)
 void board_init_f(ulong bootflag)
 {
 	board_early_init_f();
-	NS16550_init((NS16550_t)(CONFIG_SYS_IMMR + 0x4500),
+	NS16550_init((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500),
 		     CONFIG_SYS_NS16550_CLK / 16 / CONFIG_BAUDRATE);
 	puts("NAND boot... ");
 	timer_init();
@@ -240,9 +240,9 @@ void putc(char c)
 		return;
 
 	if (c == '\n')
-		NS16550_putc((NS16550_t)(CONFIG_SYS_IMMR + 0x4500), '\r');
+		NS16550_putc((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500), '\r');
 
-	NS16550_putc((NS16550_t)(CONFIG_SYS_IMMR + 0x4500), c);
+	NS16550_putc((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500), c);
 }
 
 #endif /* CONFIG_NAND_SPL */
diff --git a/board/freescale/p1010rdb/spl.c b/board/freescale/p1010rdb/spl.c
index fbaa6a65142..c015a6bf36a 100644
--- a/board/freescale/p1010rdb/spl.c
+++ b/board/freescale/p1010rdb/spl.c
@@ -44,7 +44,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio >>= 1;
 	gd->bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
 
-	NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     gd->bus_clk / 16 / CONFIG_BAUDRATE);
 
 #ifdef CONFIG_SPL_MMC_BOOT
diff --git a/board/freescale/p1010rdb/spl_minimal.c b/board/freescale/p1010rdb/spl_minimal.c
index 0bb2c838720..4cc70ea3522 100644
--- a/board/freescale/p1010rdb/spl_minimal.c
+++ b/board/freescale/p1010rdb/spl_minimal.c
@@ -31,8 +31,8 @@ void board_init_f(ulong bootflag)
 	plat_ratio >>= 1;
 	gd->bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
 
-	NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
-			gd->bus_clk / 16 / CONFIG_BAUDRATE);
+	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
+		     gd->bus_clk / 16 / CONFIG_BAUDRATE);
 
 	puts("\nNAND boot... ");
 
@@ -53,9 +53,9 @@ void board_init_r(gd_t *gd, ulong dest_addr)
 void putc(char c)
 {
 	if (c == '\n')
-		NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM1, '\r');
+		NS16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, '\r');
 
-	NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM1, c);
+	NS16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, c);
 }
 
 void puts(const char *str)
diff --git a/board/freescale/p1_p2_rdb_pc/spl.c b/board/freescale/p1_p2_rdb_pc/spl.c
index 8aceceb56a3..0b8b8a75759 100644
--- a/board/freescale/p1_p2_rdb_pc/spl.c
+++ b/board/freescale/p1_p2_rdb_pc/spl.c
@@ -50,7 +50,7 @@ void board_init_f(ulong bootflag)
 	bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
 	gd->bus_clk = bus_clk;
 
-	NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     bus_clk / 16 / CONFIG_BAUDRATE);
 #ifdef CONFIG_SPL_MMC_BOOT
 	puts("\nSD boot...\n");
diff --git a/board/freescale/p1_p2_rdb_pc/spl_minimal.c b/board/freescale/p1_p2_rdb_pc/spl_minimal.c
index ced5f3c3b5d..7068e94a2d0 100644
--- a/board/freescale/p1_p2_rdb_pc/spl_minimal.c
+++ b/board/freescale/p1_p2_rdb_pc/spl_minimal.c
@@ -30,8 +30,8 @@ void board_init_f(ulong bootflag)
 	plat_ratio >>= 1;
 	gd->bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
 
-	NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
-			gd->bus_clk / 16 / CONFIG_BAUDRATE);
+	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
+		     gd->bus_clk / 16 / CONFIG_BAUDRATE);
 
 	puts("\nNAND boot... ");
 
@@ -51,9 +51,9 @@ void board_init_r(gd_t *gd, ulong dest_addr)
 void putc(char c)
 {
 	if (c == '\n')
-		NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM1, '\r');
+		NS16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, '\r');
 
-	NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM1, c);
+	NS16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, c);
 }
 
 void puts(const char *str)
diff --git a/board/freescale/t102xrdb/spl.c b/board/freescale/t102xrdb/spl.c
index 09dd88ac4ea..d23b2f5fde3 100644
--- a/board/freescale/t102xrdb/spl.c
+++ b/board/freescale/t102xrdb/spl.c
@@ -82,7 +82,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio = (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f;
 	ccb_clk = sys_clk * plat_ratio / 2;
 
-	NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     ccb_clk / 16 / CONFIG_BAUDRATE);
 
 #if defined(CONFIG_SPL_MMC_BOOT)
diff --git a/board/freescale/t104xrdb/spl.c b/board/freescale/t104xrdb/spl.c
index e7922954de7..a93cc38450d 100644
--- a/board/freescale/t104xrdb/spl.c
+++ b/board/freescale/t104xrdb/spl.c
@@ -81,7 +81,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio = (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f;
 	uart_clk = sys_clk * plat_ratio / 2;
 
-	NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     uart_clk / 16 / CONFIG_BAUDRATE);
 
 	relocate_code(CONFIG_SPL_RELOC_STACK, (gd_t *)CONFIG_SPL_GD_ADDR, 0x0);
diff --git a/board/freescale/t208xqds/spl.c b/board/freescale/t208xqds/spl.c
index d8c2bbe28df..c6b23e4c690 100644
--- a/board/freescale/t208xqds/spl.c
+++ b/board/freescale/t208xqds/spl.c
@@ -81,7 +81,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio = (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f;
 	ccb_clk = sys_clk * plat_ratio / 2;
 
-	NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     ccb_clk / 16 / CONFIG_BAUDRATE);
 
 #if defined(CONFIG_SPL_MMC_BOOT)
diff --git a/board/freescale/t208xrdb/spl.c b/board/freescale/t208xrdb/spl.c
index c64bd871159..4b843830165 100644
--- a/board/freescale/t208xrdb/spl.c
+++ b/board/freescale/t208xrdb/spl.c
@@ -51,7 +51,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio = (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f;
 	ccb_clk = sys_clk * plat_ratio / 2;
 
-	NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     ccb_clk / 16 / CONFIG_BAUDRATE);
 
 #if defined(CONFIG_SPL_MMC_BOOT)
diff --git a/board/freescale/t4rdb/spl.c b/board/freescale/t4rdb/spl.c
index 9aa0a9b0523..efe2b4eb95c 100644
--- a/board/freescale/t4rdb/spl.c
+++ b/board/freescale/t4rdb/spl.c
@@ -60,7 +60,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio = (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f;
 	ccb_clk = sys_clk * plat_ratio / 2;
 
-	NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     ccb_clk / 16 / CONFIG_BAUDRATE);
 
 	puts("\nSD boot...\n");
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index 8dd81ad7948..d529b1b8072 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -156,7 +156,7 @@ static inline int serial_in_dynamic(struct ns16550_plat *plat, u8 *addr)
 
 #endif /* CONFIG_NS16550_DYNAMIC */
 
-static void ns16550_writeb(NS16550_t port, int offset, int value)
+static void ns16550_writeb(struct ns16550 *port, int offset, int value)
 {
 	struct ns16550_plat *plat = port->plat;
 	unsigned char *addr;
@@ -170,7 +170,7 @@ static void ns16550_writeb(NS16550_t port, int offset, int value)
 		serial_out_shift(addr, plat->reg_shift, value);
 }
 
-static int ns16550_readb(NS16550_t port, int offset)
+static int ns16550_readb(struct ns16550 *port, int offset)
 {
 	struct ns16550_plat *plat = port->plat;
 	unsigned char *addr;
@@ -184,7 +184,7 @@ static int ns16550_readb(NS16550_t port, int offset)
 		return serial_in_shift(addr, plat->reg_shift);
 }
 
-static u32 ns16550_getfcr(NS16550_t port)
+static u32 ns16550_getfcr(struct ns16550 *port)
 {
 	struct ns16550_plat *plat = port->plat;
 
@@ -199,20 +199,20 @@ static u32 ns16550_getfcr(NS16550_t port)
 	ns16550_readb(com_port, \
 		(unsigned char *)addr - (unsigned char *)com_port)
 #else
-static u32 ns16550_getfcr(NS16550_t port)
+static u32 ns16550_getfcr(struct ns16550 *port)
 {
 	return UART_FCR_DEFVAL;
 }
 #endif
 
-int ns16550_calc_divisor(NS16550_t port, int clock, int baudrate)
+int ns16550_calc_divisor(struct ns16550 *port, int clock, int baudrate)
 {
 	const unsigned int mode_x_div = 16;
 
 	return DIV_ROUND_CLOSEST(clock, mode_x_div * baudrate);
 }
 
-static void NS16550_setbrg(NS16550_t com_port, int baud_divisor)
+static void NS16550_setbrg(struct ns16550 *com_port, int baud_divisor)
 {
 	/* to keep serial format, read lcr before writing BKSE */
 	int lcr_val = serial_in(&com_port->lcr) & ~UART_LCR_BKSE;
@@ -223,7 +223,7 @@ static void NS16550_setbrg(NS16550_t com_port, int baud_divisor)
 	serial_out(lcr_val, &com_port->lcr);
 }
 
-void NS16550_init(NS16550_t com_port, int baud_divisor)
+void NS16550_init(struct ns16550 *com_port, int baud_divisor)
 {
 #if (defined(CONFIG_SPL_BUILD) && \
 		(defined(CONFIG_OMAP34XX) || defined(CONFIG_OMAP44XX)))
@@ -272,7 +272,7 @@ void NS16550_init(NS16550_t com_port, int baud_divisor)
 }
 
 #ifndef CONFIG_NS16550_MIN_FUNCTIONS
-void NS16550_reinit(NS16550_t com_port, int baud_divisor)
+void NS16550_reinit(struct ns16550 *com_port, int baud_divisor)
 {
 	serial_out(CONFIG_SYS_NS16550_IER, &com_port->ier);
 	NS16550_setbrg(com_port, 0);
@@ -282,7 +282,7 @@ void NS16550_reinit(NS16550_t com_port, int baud_divisor)
 }
 #endif /* CONFIG_NS16550_MIN_FUNCTIONS */
 
-void NS16550_putc(NS16550_t com_port, char c)
+void NS16550_putc(struct ns16550 *com_port, char c)
 {
 	while ((serial_in(&com_port->lsr) & UART_LSR_THRE) == 0)
 		;
@@ -299,7 +299,7 @@ void NS16550_putc(NS16550_t com_port, char c)
 }
 
 #ifndef CONFIG_NS16550_MIN_FUNCTIONS
-char NS16550_getc(NS16550_t com_port)
+char NS16550_getc(struct ns16550 *com_port)
 {
 	while ((serial_in(&com_port->lsr) & UART_LSR_DR) == 0) {
 #if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_USB_TTY)
@@ -311,7 +311,7 @@ char NS16550_getc(NS16550_t com_port)
 	return serial_in(&com_port->rbr);
 }
 
-int NS16550_tstc(NS16550_t com_port)
+int NS16550_tstc(struct ns16550 *com_port)
 {
 	return (serial_in(&com_port->lsr) & UART_LSR_DR) != 0;
 }
@@ -324,7 +324,7 @@ int NS16550_tstc(NS16550_t com_port)
 
 static inline void _debug_uart_init(void)
 {
-	struct NS16550 *com_port = (struct NS16550 *)CONFIG_DEBUG_UART_BASE;
+	struct ns16550 *com_port = (struct ns16550 *)CONFIG_DEBUG_UART_BASE;
 	int baud_divisor;
 
 	/*
@@ -345,7 +345,7 @@ static inline void _debug_uart_init(void)
 	serial_dout(&com_port->lcr, UART_LCRVAL);
 }
 
-static inline int NS16550_read_baud_divisor(struct NS16550 *com_port)
+static inline int NS16550_read_baud_divisor(struct ns16550 *com_port)
 {
 	int ret;
 
@@ -359,7 +359,7 @@ static inline int NS16550_read_baud_divisor(struct NS16550 *com_port)
 
 static inline void _debug_uart_putc(int ch)
 {
-	struct NS16550 *com_port = (struct NS16550 *)CONFIG_DEBUG_UART_BASE;
+	struct ns16550 *com_port = (struct ns16550 *)CONFIG_DEBUG_UART_BASE;
 
 	while (!(serial_din(&com_port->lsr) & UART_LSR_THRE)) {
 #ifdef CONFIG_DEBUG_UART_NS16550_CHECK_ENABLED
@@ -377,7 +377,7 @@ DEBUG_UART_FUNCS
 #if CONFIG_IS_ENABLED(DM_SERIAL)
 static int ns16550_serial_putc(struct udevice *dev, const char ch)
 {
-	struct NS16550 *const com_port = dev_get_priv(dev);
+	struct ns16550 *const com_port = dev_get_priv(dev);
 
 	if (!(serial_in(&com_port->lsr) & UART_LSR_THRE))
 		return -EAGAIN;
@@ -397,7 +397,7 @@ static int ns16550_serial_putc(struct udevice *dev, const char ch)
 
 static int ns16550_serial_pending(struct udevice *dev, bool input)
 {
-	struct NS16550 *const com_port = dev_get_priv(dev);
+	struct ns16550 *const com_port = dev_get_priv(dev);
 
 	if (input)
 		return (serial_in(&com_port->lsr) & UART_LSR_DR) ? 1 : 0;
@@ -407,7 +407,7 @@ static int ns16550_serial_pending(struct udevice *dev, bool input)
 
 static int ns16550_serial_getc(struct udevice *dev)
 {
-	struct NS16550 *const com_port = dev_get_priv(dev);
+	struct ns16550 *const com_port = dev_get_priv(dev);
 
 	if (!(serial_in(&com_port->lsr) & UART_LSR_DR))
 		return -EAGAIN;
@@ -417,7 +417,7 @@ static int ns16550_serial_getc(struct udevice *dev)
 
 static int ns16550_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct NS16550 *const com_port = dev_get_priv(dev);
+	struct ns16550 *const com_port = dev_get_priv(dev);
 	struct ns16550_plat *plat = com_port->plat;
 	int clock_divisor;
 
@@ -430,7 +430,7 @@ static int ns16550_serial_setbrg(struct udevice *dev, int baudrate)
 
 static int ns16550_serial_setconfig(struct udevice *dev, uint serial_config)
 {
-	struct NS16550 *const com_port = dev_get_priv(dev);
+	struct ns16550 *const com_port = dev_get_priv(dev);
 	int lcr_val = UART_LCR_WLS_8;
 	uint parity = SERIAL_GET_PARITY(serial_config);
 	uint bits = SERIAL_GET_BITS(serial_config);
@@ -464,7 +464,7 @@ static int ns16550_serial_setconfig(struct udevice *dev, uint serial_config)
 static int ns16550_serial_getinfo(struct udevice *dev,
 				  struct serial_device_info *info)
 {
-	struct NS16550 *const com_port = dev_get_priv(dev);
+	struct ns16550 *const com_port = dev_get_priv(dev);
 	struct ns16550_plat *plat = com_port->plat;
 
 	info->type = SERIAL_CHIP_16550_COMPATIBLE;
@@ -499,7 +499,7 @@ static int ns16550_serial_assign_base(struct ns16550_plat *plat, ulong base)
 int ns16550_serial_probe(struct udevice *dev)
 {
 	struct ns16550_plat *plat = dev->plat;
-	struct NS16550 *const com_port = dev_get_priv(dev);
+	struct ns16550 *const com_port = dev_get_priv(dev);
 	struct reset_ctl_bulk reset_bulk;
 	fdt_addr_t addr;
 	int ret;
@@ -613,7 +613,7 @@ U_BOOT_DRIVER(ns16550_serial) = {
 	.of_to_plat = ns16550_serial_of_to_plat,
 	.plat_auto	= sizeof(struct ns16550_plat),
 #endif
-	.priv_auto	= sizeof(struct NS16550),
+	.priv_auto	= sizeof(struct ns16550),
 	.probe = ns16550_serial_probe,
 	.ops	= &ns16550_serial_ops,
 #if !CONFIG_IS_ENABLED(OF_CONTROL)
diff --git a/drivers/serial/serial_coreboot.c b/drivers/serial/serial_coreboot.c
index 904e1b306e0..88c8209c5db 100644
--- a/drivers/serial/serial_coreboot.c
+++ b/drivers/serial/serial_coreboot.c
@@ -37,7 +37,7 @@ U_BOOT_DRIVER(coreboot_uart) = {
 	.name	= "coreboot_uart",
 	.id	= UCLASS_SERIAL,
 	.of_match	= coreboot_serial_ids,
-	.priv_auto	= sizeof(struct NS16550),
+	.priv_auto	= sizeof(struct ns16550),
 	.plat_auto	= sizeof(struct ns16550_plat),
 	.of_to_plat  = coreboot_of_to_plat,
 	.probe	= ns16550_serial_probe,
diff --git a/drivers/serial/serial_intel_mid.c b/drivers/serial/serial_intel_mid.c
index be9bf662fd2..bbf19057c4d 100644
--- a/drivers/serial/serial_intel_mid.c
+++ b/drivers/serial/serial_intel_mid.c
@@ -61,7 +61,7 @@ U_BOOT_DRIVER(serial_intel_mid) = {
 	.of_match = mid_serial_ids,
 	.of_to_plat = ns16550_serial_of_to_plat,
 	.plat_auto	= sizeof(struct ns16550_plat),
-	.priv_auto	= sizeof(struct NS16550),
+	.priv_auto	= sizeof(struct ns16550),
 	.probe	= mid_serial_probe,
 	.ops	= &ns16550_serial_ops,
 };
diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c
index ef394b72350..a8d3602e9b1 100644
--- a/drivers/serial/serial_ns16550.c
+++ b/drivers/serial/serial_ns16550.c
@@ -36,34 +36,34 @@ DECLARE_GLOBAL_DATA_PTR;
 /* Note: The port number specified in the functions is 1 based.
  *	 the array is 0 based.
  */
-static NS16550_t serial_ports[6] = {
+static struct ns16550 *serial_ports[6] = {
 #ifdef CONFIG_SYS_NS16550_COM1
-	(NS16550_t)CONFIG_SYS_NS16550_COM1,
+	(struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 #else
 	NULL,
 #endif
 #ifdef CONFIG_SYS_NS16550_COM2
-	(NS16550_t)CONFIG_SYS_NS16550_COM2,
+	(struct ns16550 *)CONFIG_SYS_NS16550_COM2,
 #else
 	NULL,
 #endif
 #ifdef CONFIG_SYS_NS16550_COM3
-	(NS16550_t)CONFIG_SYS_NS16550_COM3,
+	(struct ns16550 *)CONFIG_SYS_NS16550_COM3,
 #else
 	NULL,
 #endif
 #ifdef CONFIG_SYS_NS16550_COM4
-	(NS16550_t)CONFIG_SYS_NS16550_COM4,
+	(struct ns16550 *)CONFIG_SYS_NS16550_COM4,
 #else
 	NULL,
 #endif
 #ifdef CONFIG_SYS_NS16550_COM5
-	(NS16550_t)CONFIG_SYS_NS16550_COM5,
+	(struct ns16550 *)CONFIG_SYS_NS16550_COM5,
 #else
 	NULL,
 #endif
 #ifdef CONFIG_SYS_NS16550_COM6
-	(NS16550_t)CONFIG_SYS_NS16550_COM6
+	(struct ns16550 *)CONFIG_SYS_NS16550_COM6
 #else
 	NULL
 #endif
diff --git a/drivers/serial/serial_omap.c b/drivers/serial/serial_omap.c
index 2f38e1b8901..c2352155413 100644
--- a/drivers/serial/serial_omap.c
+++ b/drivers/serial/serial_omap.c
@@ -66,7 +66,7 @@ static inline int serial_in_shift(void *addr, int shift)
 
 static inline void _debug_uart_init(void)
 {
-	struct NS16550 *com_port = (struct NS16550 *)CONFIG_DEBUG_UART_BASE;
+	struct ns16550 *com_port = (struct ns16550 *)CONFIG_DEBUG_UART_BASE;
 	int baud_divisor;
 
 	baud_divisor = ns16550_calc_divisor(com_port, CONFIG_DEBUG_UART_CLOCK,
@@ -85,7 +85,7 @@ static inline void _debug_uart_init(void)
 
 static inline void _debug_uart_putc(int ch)
 {
-	struct NS16550 *com_port = (struct NS16550 *)CONFIG_DEBUG_UART_BASE;
+	struct ns16550 *com_port = (struct ns16550 *)CONFIG_DEBUG_UART_BASE;
 
 	while (!(serial_din(&com_port->lsr) & UART_LSR_THRE))
 		;
@@ -160,7 +160,7 @@ U_BOOT_DRIVER(omap_serial) = {
 	.of_to_plat = omap_serial_of_to_plat,
 	.plat_auto	= sizeof(struct ns16550_plat),
 #endif
-	.priv_auto	= sizeof(struct NS16550),
+	.priv_auto	= sizeof(struct ns16550),
 	.probe = ns16550_serial_probe,
 	.ops	= &ns16550_serial_ops,
 #if !CONFIG_IS_ENABLED(OF_CONTROL)
diff --git a/drivers/serial/serial_rockchip.c b/drivers/serial/serial_rockchip.c
index 4c0548ed0f3..036c07262be 100644
--- a/drivers/serial/serial_rockchip.c
+++ b/drivers/serial/serial_rockchip.c
@@ -42,7 +42,7 @@ static int rockchip_serial_probe(struct udevice *dev)
 U_BOOT_DRIVER(rockchip_rk3188_uart) = {
 	.name	= "rockchip_rk3188_uart",
 	.id	= UCLASS_SERIAL,
-	.priv_auto	= sizeof(struct NS16550),
+	.priv_auto	= sizeof(struct ns16550),
 	.plat_auto	= sizeof(struct rockchip_uart_plat),
 	.probe	= rockchip_serial_probe,
 	.ops	= &ns16550_serial_ops,
@@ -52,7 +52,7 @@ U_BOOT_DRIVER(rockchip_rk3188_uart) = {
 U_BOOT_DRIVER(rockchip_rk3288_uart) = {
 	.name	= "rockchip_rk3288_uart",
 	.id	= UCLASS_SERIAL,
-	.priv_auto	= sizeof(struct NS16550),
+	.priv_auto	= sizeof(struct ns16550),
 	.plat_auto	= sizeof(struct rockchip_uart_plat),
 	.probe	= rockchip_serial_probe,
 	.ops	= &ns16550_serial_ops,
diff --git a/include/ns16550.h b/include/ns16550.h
index bef29610325..75c5bf61fd3 100644
--- a/include/ns16550.h
+++ b/include/ns16550.h
@@ -21,6 +21,9 @@
  * will not allocate storage for arrays of size 0
  */
 
+#ifndef __ns16550_h
+#define __ns16550_h
+
 #include <linux/types.h>
 
 #ifdef CONFIG_DM_SERIAL
@@ -82,7 +85,7 @@ struct ns16550_plat {
 
 struct udevice;
 
-struct NS16550 {
+struct ns16550 {
 	UART_REG(rbr);		/* 0 */
 	UART_REG(ier);		/* 1 */
 	UART_REG(fcr);		/* 2 */
@@ -120,8 +123,6 @@ struct NS16550 {
 #define dll rbr
 #define dlm ier
 
-typedef struct NS16550 *NS16550_t;
-
 /*
  * These are the definitions for the FIFO Control Register
  */
@@ -221,11 +222,11 @@ typedef struct NS16550 *NS16550_t;
 /* useful defaults for LCR */
 #define UART_LCR_8N1	0x03
 
-void NS16550_init(NS16550_t com_port, int baud_divisor);
-void NS16550_putc(NS16550_t com_port, char c);
-char NS16550_getc(NS16550_t com_port);
-int NS16550_tstc(NS16550_t com_port);
-void NS16550_reinit(NS16550_t com_port, int baud_divisor);
+void NS16550_init(struct ns16550 *com_port, int baud_divisor);
+void NS16550_putc(struct ns16550 *com_port, char c);
+char NS16550_getc(struct ns16550 *com_port);
+int NS16550_tstc(struct ns16550 *com_port);
+void NS16550_reinit(struct ns16550 *com_port, int baud_divisor);
 
 /**
  * ns16550_calc_divisor() - calculate the divisor given clock and baud rate
@@ -238,7 +239,7 @@ void NS16550_reinit(NS16550_t com_port, int baud_divisor);
  * @baudrate:	Required baud rate
  * @return baud rate divisor that should be used
  */
-int ns16550_calc_divisor(NS16550_t port, int clock, int baudrate);
+int ns16550_calc_divisor(struct ns16550 *port, int clock, int baudrate);
 
 /**
  * ns16550_serial_of_to_plat() - convert DT to platform data
@@ -266,3 +267,5 @@ int ns16550_serial_probe(struct udevice *dev);
  * These should be used by the client driver for the driver's 'ops' member
  */
 extern const struct dm_serial_ops ns16550_serial_ops;
+
+#endif /* __ns16550_h */
diff --git a/lib/efi/efi_stub.c b/lib/efi/efi_stub.c
index 7d650d512e3..b3393e47fae 100644
--- a/lib/efi/efi_stub.c
+++ b/lib/efi/efi_stub.c
@@ -67,7 +67,7 @@ void putc(const char ch)
 		putc('\r');
 
 	if (use_uart) {
-		NS16550_t com_port = (NS16550_t)0x3f8;
+		struct ns16550 *com_port = (struct ns16550 *)0x3f8;
 
 		while ((inb((ulong)&com_port->lsr) & UART_LSR_THRE) == 0)
 			;
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 07/18] serial: Rename ns16550 functions to lower case
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (5 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 06/18] serial: Update NS16550_t and struct NS16550 Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 08/18] sandbox: Drop unnecessary test node Simon Glass
                   ` (28 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

Lower case should be used for function names. Update this driver and its
callers accordingly.

Signed-off-by: Simon Glass <sjg@chromium.org>

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---

(no changes since v1)

 arch/arm/mach-davinci/da850_lowlevel.c     |  2 +-
 arch/arm/mach-davinci/spl.c                |  4 ++--
 arch/arm/mach-keystone/init.c              |  2 +-
 board/Arcturus/ucp1020/spl.c               |  2 +-
 board/Arcturus/ucp1020/spl_minimal.c       |  6 ++---
 board/Synology/ds109/ds109.c               |  5 +++--
 board/freescale/mpc8313erdb/mpc8313erdb.c  |  6 ++---
 board/freescale/mpc8315erdb/mpc8315erdb.c  |  6 ++---
 board/freescale/p1010rdb/spl.c             |  2 +-
 board/freescale/p1010rdb/spl_minimal.c     |  6 ++---
 board/freescale/p1_p2_rdb_pc/spl.c         |  2 +-
 board/freescale/p1_p2_rdb_pc/spl_minimal.c |  6 ++---
 board/freescale/t102xrdb/spl.c             |  2 +-
 board/freescale/t104xrdb/spl.c             |  2 +-
 board/freescale/t208xqds/spl.c             |  2 +-
 board/freescale/t208xrdb/spl.c             |  2 +-
 board/freescale/t4rdb/spl.c                |  2 +-
 drivers/serial/ns16550.c                   | 26 +++++++++++-----------
 drivers/serial/serial_ns16550.c            | 12 +++++-----
 include/ns16550.h                          | 10 ++++-----
 20 files changed, 54 insertions(+), 53 deletions(-)

diff --git a/arch/arm/mach-davinci/da850_lowlevel.c b/arch/arm/mach-davinci/da850_lowlevel.c
index 6994ded2c66..759c93747c7 100644
--- a/arch/arm/mach-davinci/da850_lowlevel.c
+++ b/arch/arm/mach-davinci/da850_lowlevel.c
@@ -290,7 +290,7 @@ int arch_cpu_init(void)
 	board_gpio_init();
 
 #if !CONFIG_IS_ENABLED(DM_SERIAL)
-	NS16550_init((struct ns16550 *)(CONFIG_SYS_NS16550_COM1),
+	ns16550_init((struct ns16550 *)(CONFIG_SYS_NS16550_COM1),
 		     CONFIG_SYS_NS16550_CLK / 16 / CONFIG_BAUDRATE);
 #endif
 	/*
diff --git a/arch/arm/mach-davinci/spl.c b/arch/arm/mach-davinci/spl.c
index 3c8330b47f8..d0d7a814713 100644
--- a/arch/arm/mach-davinci/spl.c
+++ b/arch/arm/mach-davinci/spl.c
@@ -27,9 +27,9 @@ void puts(const char *str)
 void putc(char c)
 {
 	if (c == '\n')
-		NS16550_putc((struct ns16550 *)(CONFIG_SYS_NS16550_COM1), '\r');
+		ns16550_putc((struct ns16550 *)(CONFIG_SYS_NS16550_COM1), '\r');
 
-	NS16550_putc((struct ns16550 *)(CONFIG_SYS_NS16550_COM1), c);
+	ns16550_putc((struct ns16550 *)(CONFIG_SYS_NS16550_COM1), c);
 }
 #endif /* CONFIG_SPL_LIBCOMMON_SUPPORT */
 
diff --git a/arch/arm/mach-keystone/init.c b/arch/arm/mach-keystone/init.c
index f4edaaaaaca..4950f146550 100644
--- a/arch/arm/mach-keystone/init.c
+++ b/arch/arm/mach-keystone/init.c
@@ -185,7 +185,7 @@ int arch_cpu_init(void)
 	 * driver doesn't handle this.
 	 */
 #ifndef CONFIG_DM_SERIAL
-	NS16550_init((struct ns16550 *)(CONFIG_SYS_NS16550_COM2),
+	ns16550_init((struct ns16550 *)(CONFIG_SYS_NS16550_COM2),
 		     CONFIG_SYS_NS16550_CLK / 16 / CONFIG_BAUDRATE);
 #endif
 
diff --git a/board/Arcturus/ucp1020/spl.c b/board/Arcturus/ucp1020/spl.c
index 8e607558f4d..4ed06a80b79 100644
--- a/board/Arcturus/ucp1020/spl.c
+++ b/board/Arcturus/ucp1020/spl.c
@@ -58,7 +58,7 @@ void board_init_f(ulong bootflag)
 	bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
 	gd->bus_clk = bus_clk;
 
-	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
+	ns16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     bus_clk / 16 / CONFIG_BAUDRATE);
 #ifdef CONFIG_SPL_MMC_BOOT
 	puts("\nSD boot...\n");
diff --git a/board/Arcturus/ucp1020/spl_minimal.c b/board/Arcturus/ucp1020/spl_minimal.c
index 38d84afc9e2..90abec9cce5 100644
--- a/board/Arcturus/ucp1020/spl_minimal.c
+++ b/board/Arcturus/ucp1020/spl_minimal.c
@@ -34,7 +34,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio >>= 1;
 	gd->bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
 
-	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
+	ns16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     gd->bus_clk / 16 / CONFIG_BAUDRATE);
 
 	puts("\nNAND boot... ");
@@ -55,9 +55,9 @@ void board_init_r(gd_t *gd, ulong dest_addr)
 void putc(char c)
 {
 	if (c == '\n')
-		NS16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, '\r');
+		ns16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, '\r');
 
-	NS16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, c);
+	ns16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, c);
 }
 
 void puts(const char *str)
diff --git a/board/Synology/ds109/ds109.c b/board/Synology/ds109/ds109.c
index c36e4d37fc7..fe3b0eb554f 100644
--- a/board/Synology/ds109/ds109.c
+++ b/board/Synology/ds109/ds109.c
@@ -108,8 +108,9 @@ void reset_misc(void)
 
 	b_d = ns16550_calc_divisor((struct ns16550 *)CONFIG_SYS_NS16550_COM2,
 				   CONFIG_SYS_NS16550_CLK, 9600);
-	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM2, b_d);
-	NS16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM2, SOFTWARE_REBOOT);
+	ns16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM2, b_d);
+	ns16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM2,
+		     SOFTWARE_REBOOT);
 }
 
 /* Support old kernels */
diff --git a/board/freescale/mpc8313erdb/mpc8313erdb.c b/board/freescale/mpc8313erdb/mpc8313erdb.c
index 69fa89146d8..7e1a31f2650 100644
--- a/board/freescale/mpc8313erdb/mpc8313erdb.c
+++ b/board/freescale/mpc8313erdb/mpc8313erdb.c
@@ -132,7 +132,7 @@ int ft_board_setup(void *blob, struct bd_info *bd)
 void board_init_f(ulong bootflag)
 {
 	board_early_init_f();
-	NS16550_init((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500),
+	ns16550_init((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500),
 		     CONFIG_SYS_NS16550_CLK / 16 / CONFIG_BAUDRATE);
 	puts("NAND boot... ");
 	timer_init();
@@ -152,8 +152,8 @@ void putc(char c)
 		return;
 
 	if (c == '\n')
-		NS16550_putc((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500), '\r');
+		ns16550_putc((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500), '\r');
 
-	NS16550_putc((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500), c);
+	ns16550_putc((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500), c);
 }
 #endif
diff --git a/board/freescale/mpc8315erdb/mpc8315erdb.c b/board/freescale/mpc8315erdb/mpc8315erdb.c
index fff8699d612..05b983a3f26 100644
--- a/board/freescale/mpc8315erdb/mpc8315erdb.c
+++ b/board/freescale/mpc8315erdb/mpc8315erdb.c
@@ -220,7 +220,7 @@ int checkboard(void)
 void board_init_f(ulong bootflag)
 {
 	board_early_init_f();
-	NS16550_init((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500),
+	ns16550_init((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500),
 		     CONFIG_SYS_NS16550_CLK / 16 / CONFIG_BAUDRATE);
 	puts("NAND boot... ");
 	timer_init();
@@ -240,9 +240,9 @@ void putc(char c)
 		return;
 
 	if (c == '\n')
-		NS16550_putc((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500), '\r');
+		ns16550_putc((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500), '\r');
 
-	NS16550_putc((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500), c);
+	ns16550_putc((struct ns16550 *)(CONFIG_SYS_IMMR + 0x4500), c);
 }
 
 #endif /* CONFIG_NAND_SPL */
diff --git a/board/freescale/p1010rdb/spl.c b/board/freescale/p1010rdb/spl.c
index c015a6bf36a..35b95e08389 100644
--- a/board/freescale/p1010rdb/spl.c
+++ b/board/freescale/p1010rdb/spl.c
@@ -44,7 +44,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio >>= 1;
 	gd->bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
 
-	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
+	ns16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     gd->bus_clk / 16 / CONFIG_BAUDRATE);
 
 #ifdef CONFIG_SPL_MMC_BOOT
diff --git a/board/freescale/p1010rdb/spl_minimal.c b/board/freescale/p1010rdb/spl_minimal.c
index 4cc70ea3522..989c5b139ac 100644
--- a/board/freescale/p1010rdb/spl_minimal.c
+++ b/board/freescale/p1010rdb/spl_minimal.c
@@ -31,7 +31,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio >>= 1;
 	gd->bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
 
-	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
+	ns16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     gd->bus_clk / 16 / CONFIG_BAUDRATE);
 
 	puts("\nNAND boot... ");
@@ -53,9 +53,9 @@ void board_init_r(gd_t *gd, ulong dest_addr)
 void putc(char c)
 {
 	if (c == '\n')
-		NS16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, '\r');
+		ns16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, '\r');
 
-	NS16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, c);
+	ns16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, c);
 }
 
 void puts(const char *str)
diff --git a/board/freescale/p1_p2_rdb_pc/spl.c b/board/freescale/p1_p2_rdb_pc/spl.c
index 0b8b8a75759..b16f701ae1a 100644
--- a/board/freescale/p1_p2_rdb_pc/spl.c
+++ b/board/freescale/p1_p2_rdb_pc/spl.c
@@ -50,7 +50,7 @@ void board_init_f(ulong bootflag)
 	bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
 	gd->bus_clk = bus_clk;
 
-	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
+	ns16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     bus_clk / 16 / CONFIG_BAUDRATE);
 #ifdef CONFIG_SPL_MMC_BOOT
 	puts("\nSD boot...\n");
diff --git a/board/freescale/p1_p2_rdb_pc/spl_minimal.c b/board/freescale/p1_p2_rdb_pc/spl_minimal.c
index 7068e94a2d0..eb3f2c83fa2 100644
--- a/board/freescale/p1_p2_rdb_pc/spl_minimal.c
+++ b/board/freescale/p1_p2_rdb_pc/spl_minimal.c
@@ -30,7 +30,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio >>= 1;
 	gd->bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
 
-	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
+	ns16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     gd->bus_clk / 16 / CONFIG_BAUDRATE);
 
 	puts("\nNAND boot... ");
@@ -51,9 +51,9 @@ void board_init_r(gd_t *gd, ulong dest_addr)
 void putc(char c)
 {
 	if (c == '\n')
-		NS16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, '\r');
+		ns16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, '\r');
 
-	NS16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, c);
+	ns16550_putc((struct ns16550 *)CONFIG_SYS_NS16550_COM1, c);
 }
 
 void puts(const char *str)
diff --git a/board/freescale/t102xrdb/spl.c b/board/freescale/t102xrdb/spl.c
index d23b2f5fde3..66d2f3bda7b 100644
--- a/board/freescale/t102xrdb/spl.c
+++ b/board/freescale/t102xrdb/spl.c
@@ -82,7 +82,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio = (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f;
 	ccb_clk = sys_clk * plat_ratio / 2;
 
-	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
+	ns16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     ccb_clk / 16 / CONFIG_BAUDRATE);
 
 #if defined(CONFIG_SPL_MMC_BOOT)
diff --git a/board/freescale/t104xrdb/spl.c b/board/freescale/t104xrdb/spl.c
index a93cc38450d..28ac12a1fd0 100644
--- a/board/freescale/t104xrdb/spl.c
+++ b/board/freescale/t104xrdb/spl.c
@@ -81,7 +81,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio = (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f;
 	uart_clk = sys_clk * plat_ratio / 2;
 
-	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
+	ns16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     uart_clk / 16 / CONFIG_BAUDRATE);
 
 	relocate_code(CONFIG_SPL_RELOC_STACK, (gd_t *)CONFIG_SPL_GD_ADDR, 0x0);
diff --git a/board/freescale/t208xqds/spl.c b/board/freescale/t208xqds/spl.c
index c6b23e4c690..13e61f083f6 100644
--- a/board/freescale/t208xqds/spl.c
+++ b/board/freescale/t208xqds/spl.c
@@ -81,7 +81,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio = (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f;
 	ccb_clk = sys_clk * plat_ratio / 2;
 
-	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
+	ns16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     ccb_clk / 16 / CONFIG_BAUDRATE);
 
 #if defined(CONFIG_SPL_MMC_BOOT)
diff --git a/board/freescale/t208xrdb/spl.c b/board/freescale/t208xrdb/spl.c
index 4b843830165..2bba94da7bc 100644
--- a/board/freescale/t208xrdb/spl.c
+++ b/board/freescale/t208xrdb/spl.c
@@ -51,7 +51,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio = (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f;
 	ccb_clk = sys_clk * plat_ratio / 2;
 
-	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
+	ns16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     ccb_clk / 16 / CONFIG_BAUDRATE);
 
 #if defined(CONFIG_SPL_MMC_BOOT)
diff --git a/board/freescale/t4rdb/spl.c b/board/freescale/t4rdb/spl.c
index efe2b4eb95c..fc624efbe63 100644
--- a/board/freescale/t4rdb/spl.c
+++ b/board/freescale/t4rdb/spl.c
@@ -60,7 +60,7 @@ void board_init_f(ulong bootflag)
 	plat_ratio = (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f;
 	ccb_clk = sys_clk * plat_ratio / 2;
 
-	NS16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
+	ns16550_init((struct ns16550 *)CONFIG_SYS_NS16550_COM1,
 		     ccb_clk / 16 / CONFIG_BAUDRATE);
 
 	puts("\nSD boot...\n");
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index d529b1b8072..17808fb70a5 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -212,7 +212,7 @@ int ns16550_calc_divisor(struct ns16550 *port, int clock, int baudrate)
 	return DIV_ROUND_CLOSEST(clock, mode_x_div * baudrate);
 }
 
-static void NS16550_setbrg(struct ns16550 *com_port, int baud_divisor)
+static void ns16550_setbrg(struct ns16550 *com_port, int baud_divisor)
 {
 	/* to keep serial format, read lcr before writing BKSE */
 	int lcr_val = serial_in(&com_port->lcr) & ~UART_LCR_BKSE;
@@ -223,7 +223,7 @@ static void NS16550_setbrg(struct ns16550 *com_port, int baud_divisor)
 	serial_out(lcr_val, &com_port->lcr);
 }
 
-void NS16550_init(struct ns16550 *com_port, int baud_divisor)
+void ns16550_init(struct ns16550 *com_port, int baud_divisor)
 {
 #if (defined(CONFIG_SPL_BUILD) && \
 		(defined(CONFIG_OMAP34XX) || defined(CONFIG_OMAP44XX)))
@@ -235,13 +235,13 @@ void NS16550_init(struct ns16550 *com_port, int baud_divisor)
 	if ((serial_in(&com_port->lsr) & (UART_LSR_TEMT | UART_LSR_THRE))
 	     == UART_LSR_THRE) {
 		if (baud_divisor != -1)
-			NS16550_setbrg(com_port, baud_divisor);
+			ns16550_setbrg(com_port, baud_divisor);
 		else {
 			// Re-use old baud rate divisor to flush transmit reg.
 			const int dll = serial_in(&com_port->dll);
 			const int dlm = serial_in(&com_port->dlm);
 			const int divisor = dll | (dlm << 8);
-			NS16550_setbrg(com_port, divisor);
+			ns16550_setbrg(com_port, divisor);
 		}
 		serial_out(0, &com_port->mdr1);
 	}
@@ -260,7 +260,7 @@ void NS16550_init(struct ns16550 *com_port, int baud_divisor)
 	/* initialize serial config to 8N1 before writing baudrate */
 	serial_out(UART_LCRVAL, &com_port->lcr);
 	if (baud_divisor != -1)
-		NS16550_setbrg(com_port, baud_divisor);
+		ns16550_setbrg(com_port, baud_divisor);
 #if defined(CONFIG_ARCH_OMAP2PLUS) || defined(CONFIG_SOC_DA8XX) || \
 	defined(CONFIG_OMAP_SERIAL)
 	/* /16 is proper to hit 115200 with 48MHz */
@@ -272,17 +272,17 @@ void NS16550_init(struct ns16550 *com_port, int baud_divisor)
 }
 
 #ifndef CONFIG_NS16550_MIN_FUNCTIONS
-void NS16550_reinit(struct ns16550 *com_port, int baud_divisor)
+void ns16550_reinit(struct ns16550 *com_port, int baud_divisor)
 {
 	serial_out(CONFIG_SYS_NS16550_IER, &com_port->ier);
-	NS16550_setbrg(com_port, 0);
+	ns16550_setbrg(com_port, 0);
 	serial_out(UART_MCRVAL, &com_port->mcr);
 	serial_out(ns16550_getfcr(com_port), &com_port->fcr);
-	NS16550_setbrg(com_port, baud_divisor);
+	ns16550_setbrg(com_port, baud_divisor);
 }
 #endif /* CONFIG_NS16550_MIN_FUNCTIONS */
 
-void NS16550_putc(struct ns16550 *com_port, char c)
+void ns16550_putc(struct ns16550 *com_port, char c)
 {
 	while ((serial_in(&com_port->lsr) & UART_LSR_THRE) == 0)
 		;
@@ -299,7 +299,7 @@ void NS16550_putc(struct ns16550 *com_port, char c)
 }
 
 #ifndef CONFIG_NS16550_MIN_FUNCTIONS
-char NS16550_getc(struct ns16550 *com_port)
+char ns16550_getc(struct ns16550 *com_port)
 {
 	while ((serial_in(&com_port->lsr) & UART_LSR_DR) == 0) {
 #if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_USB_TTY)
@@ -311,7 +311,7 @@ char NS16550_getc(struct ns16550 *com_port)
 	return serial_in(&com_port->rbr);
 }
 
-int NS16550_tstc(struct ns16550 *com_port)
+int ns16550_tstc(struct ns16550 *com_port)
 {
 	return (serial_in(&com_port->lsr) & UART_LSR_DR) != 0;
 }
@@ -423,7 +423,7 @@ static int ns16550_serial_setbrg(struct udevice *dev, int baudrate)
 
 	clock_divisor = ns16550_calc_divisor(com_port, plat->clock, baudrate);
 
-	NS16550_setbrg(com_port, clock_divisor);
+	ns16550_setbrg(com_port, clock_divisor);
 
 	return 0;
 }
@@ -520,7 +520,7 @@ int ns16550_serial_probe(struct udevice *dev)
 		reset_deassert_bulk(&reset_bulk);
 
 	com_port->plat = dev_get_plat(dev);
-	NS16550_init(com_port, -1);
+	ns16550_init(com_port, -1);
 
 	return 0;
 }
diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c
index a8d3602e9b1..b5beca976d3 100644
--- a/drivers/serial/serial_ns16550.c
+++ b/drivers/serial/serial_ns16550.c
@@ -78,7 +78,7 @@ static struct ns16550 *serial_ports[6] = {
 		int clock_divisor; \
 		clock_divisor = ns16550_calc_divisor(serial_ports[port-1], \
 				CONFIG_SYS_NS16550_CLK, gd->baudrate); \
-		NS16550_init(serial_ports[port-1], clock_divisor); \
+		ns16550_init(serial_ports[port - 1], clock_divisor); \
 		return 0 ; \
 	} \
 	static void eserial##port##_setbrg(void) \
@@ -117,9 +117,9 @@ static struct ns16550 *serial_ports[6] = {
 static void _serial_putc(const char c, const int port)
 {
 	if (c == '\n')
-		NS16550_putc(PORT, '\r');
+		ns16550_putc(PORT, '\r');
 
-	NS16550_putc(PORT, c);
+	ns16550_putc(PORT, c);
 }
 
 static void _serial_puts(const char *s, const int port)
@@ -131,12 +131,12 @@ static void _serial_puts(const char *s, const int port)
 
 static int _serial_getc(const int port)
 {
-	return NS16550_getc(PORT);
+	return ns16550_getc(PORT);
 }
 
 static int _serial_tstc(const int port)
 {
-	return NS16550_tstc(PORT);
+	return ns16550_tstc(PORT);
 }
 
 static void _serial_setbrg(const int port)
@@ -145,7 +145,7 @@ static void _serial_setbrg(const int port)
 
 	clock_divisor = ns16550_calc_divisor(PORT, CONFIG_SYS_NS16550_CLK,
 					     gd->baudrate);
-	NS16550_reinit(PORT, clock_divisor);
+	ns16550_reinit(PORT, clock_divisor);
 }
 
 static inline void
diff --git a/include/ns16550.h b/include/ns16550.h
index 75c5bf61fd3..bef20719980 100644
--- a/include/ns16550.h
+++ b/include/ns16550.h
@@ -222,11 +222,11 @@ struct ns16550 {
 /* useful defaults for LCR */
 #define UART_LCR_8N1	0x03
 
-void NS16550_init(struct ns16550 *com_port, int baud_divisor);
-void NS16550_putc(struct ns16550 *com_port, char c);
-char NS16550_getc(struct ns16550 *com_port);
-int NS16550_tstc(struct ns16550 *com_port);
-void NS16550_reinit(struct ns16550 *com_port, int baud_divisor);
+void ns16550_init(struct ns16550 *com_port, int baud_divisor);
+void ns16550_putc(struct ns16550 *com_port, char c);
+char ns16550_getc(struct ns16550 *com_port);
+int ns16550_tstc(struct ns16550 *com_port);
+void ns16550_reinit(struct ns16550 *com_port, int baud_divisor);
 
 /**
  * ns16550_calc_divisor() - calculate the divisor given clock and baud rate
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 08/18] sandbox: Drop unnecessary test node
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (6 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 07/18] serial: Rename ns16550 functions to lower case Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 09/18] spl: Drop bd_info in the data section Simon Glass
                   ` (27 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

The spl-test4 node deliberately has an invalid compatible string. This
causes a warning from dtoc and the check it does is not really necessary.
Drop it, to avoid the warning and associated confusion.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 arch/sandbox/dts/sandbox.dtsi    |  5 -----
 test/py/tests/test_ofplatdata.py |  1 -
 tools/dtoc/dtoc_test_simple.dts  |  5 -----
 tools/dtoc/test_dtoc.py          | 12 ------------
 4 files changed, 23 deletions(-)

diff --git a/arch/sandbox/dts/sandbox.dtsi b/arch/sandbox/dts/sandbox.dtsi
index 81cdc55b0d4..7b4fc94495a 100644
--- a/arch/sandbox/dts/sandbox.dtsi
+++ b/arch/sandbox/dts/sandbox.dtsi
@@ -248,11 +248,6 @@
 		stringarray = "one";
 	};
 
-	spl-test4 {
-		u-boot,dm-pre-reloc;
-		compatible = "sandbox,spl-test.2";
-	};
-
 	spl-test5 {
 		u-boot,dm-tpl;
 		compatible = "sandbox,spl-test";
diff --git a/test/py/tests/test_ofplatdata.py b/test/py/tests/test_ofplatdata.py
index 78837a3c008..d55338e37e6 100644
--- a/test/py/tests/test_ofplatdata.py
+++ b/test/py/tests/test_ofplatdata.py
@@ -17,7 +17,6 @@ def test_spl_devicetree(u_boot_console):
     assert "u-boot,dm-spl" not in output
     assert "u-boot,dm-tpl" not in output
 
-    assert "spl-test4" in output
     assert "spl-test5" not in output
     assert "spl-test6" not in output
     assert "spl-test7" in output
diff --git a/tools/dtoc/dtoc_test_simple.dts b/tools/dtoc/dtoc_test_simple.dts
index fd168cb5931..1c87b891929 100644
--- a/tools/dtoc/dtoc_test_simple.dts
+++ b/tools/dtoc/dtoc_test_simple.dts
@@ -44,11 +44,6 @@
 		longbytearray = [09 0a 0b 0c 0d 0e 0f 10];
 	};
 
-	spl-test4 {
-		u-boot,dm-pre-reloc;
-		compatible = "sandbox,spl-test.2";
-	};
-
 	i2c at 0 {
 		compatible = "sandbox,i2c-test";
 		u-boot,dm-pre-reloc;
diff --git a/tools/dtoc/test_dtoc.py b/tools/dtoc/test_dtoc.py
index 4913d950218..49ab75b85da 100755
--- a/tools/dtoc/test_dtoc.py
+++ b/tools/dtoc/test_dtoc.py
@@ -204,8 +204,6 @@ struct dtd_sandbox_spl_test {
 \tconst char *\tstringarray[3];
 \tconst char *\tstringval;
 };
-struct dtd_sandbox_spl_test_2 {
-};
 ''', data)
 
         self.run_test(['platdata'], dtb_file, output)
@@ -286,16 +284,6 @@ U_BOOT_DEVICE(spl_test3) = {
 \t.parent_idx\t= -1,
 };
 
-/* Node /spl-test4 index 5 */
-static struct dtd_sandbox_spl_test_2 dtv_spl_test4 = {
-};
-U_BOOT_DEVICE(spl_test4) = {
-\t.name\t\t= "sandbox_spl_test_2",
-\t.plat\t= &dtv_spl_test4,
-\t.plat_size\t= sizeof(dtv_spl_test4),
-\t.parent_idx\t= -1,
-};
-
 ''' + C_EMPTY_POPULATE_PHANDLE_DATA, data)
 
     def test_driver_alias(self):
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 09/18] spl: Drop bd_info in the data section
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (7 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 08/18] sandbox: Drop unnecessary test node Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 10/18] dm: core: Support dm_dump_all() in SPL Simon Glass
                   ` (26 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

This uses up space in the SPL binary but it always starts as zero. Also
some boards cannot support data in TPL (e.g. Intel Apollo Lake).

Use malloc() to allocate this structure instead, by moving the init a
little later, after malloc() is inited. Make this function optional since
it pulls in malloc().

This reduces the TPL binary size on coral by about 64 bytes

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 arch/arm/cpu/armv8/fsl-layerscape/spl.c |  5 ++++-
 common/spl/Kconfig                      |  9 +++++++++
 common/spl/spl.c                        | 20 ++++++++++++--------
 include/spl.h                           | 10 +++++++++-
 4 files changed, 34 insertions(+), 10 deletions(-)

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/spl.c b/arch/arm/cpu/armv8/fsl-layerscape/spl.c
index 77724336d62..215ed9759e3 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/spl.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/spl.c
@@ -38,6 +38,9 @@ u32 spl_boot_device(void)
 
 #ifdef CONFIG_SPL_BUILD
 
+/* Define board data structure */
+static struct bd_info bdata __attribute__ ((section(".data")));
+
 void spl_board_init(void)
 {
 #if defined(CONFIG_NXP_ESBC) && defined(CONFIG_FSL_LSCH2)
@@ -74,7 +77,7 @@ void board_init_f(ulong dummy)
 	get_clocks();
 
 	preloader_console_init();
-	spl_set_bd();
+	gd->bd = &bdata;
 
 #ifdef CONFIG_SYS_I2C
 #ifdef CONFIG_SPL_I2C_SUPPORT
diff --git a/common/spl/Kconfig b/common/spl/Kconfig
index 6d980be0b72..6b0186763b2 100644
--- a/common/spl/Kconfig
+++ b/common/spl/Kconfig
@@ -113,6 +113,15 @@ config SPL_FSL_PBL
 	  Create boot binary having SPL binary in PBI format concatenated with
 	  u-boot binary.
 
+config SPL_ALLOC_BD
+	bool "Allocate memory for bd_info"
+	default y if X86 || SANDBOX
+	help
+	  Some boards don't allocate space for this in their board_init_f()
+	  code. In this case U-Boot can allocate space for gd->bd in the
+	  standard SPL flow (board_init_r()). Enable this option to support
+	  this feature.
+
 endmenu
 
 config HANDOFF
diff --git a/common/spl/spl.c b/common/spl/spl.c
index 63c48fbf33d..835c53deaa8 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -53,9 +53,6 @@ binman_sym_declare(ulong, spl, image_pos);
 binman_sym_declare(ulong, spl, size);
 #endif
 
-/* Define board data structure */
-static struct bd_info bdata __attribute__ ((section(".data")));
-
 /*
  * Board-specific Platform code can reimplement show_boot_progress () if needed
  */
@@ -443,14 +440,19 @@ static int spl_common_init(bool setup_malloc)
 	return 0;
 }
 
-void spl_set_bd(void)
+int spl_alloc_bd(void)
 {
 	/*
 	 * NOTE: On some platforms (e.g. x86) bdata may be in flash and not
 	 * writeable.
 	 */
-	if (!gd->bd)
-		gd->bd = &bdata;
+	if (!gd->bd) {
+		gd->bd = malloc(sizeof(*gd->bd));
+		if (!gd->bd)
+			return -ENOMEM;
+	}
+
+	return 0;
 }
 
 int spl_early_init(void)
@@ -600,8 +602,6 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
 
 	debug(">>" SPL_TPL_PROMPT "board_init_r()\n");
 
-	spl_set_bd();
-
 #if defined(CONFIG_SYS_SPL_MALLOC_START)
 	mem_malloc_init(CONFIG_SYS_SPL_MALLOC_START,
 			CONFIG_SYS_SPL_MALLOC_SIZE);
@@ -611,6 +611,10 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
 		if (spl_init())
 			hang();
 	}
+	if (IS_ENABLED(CONFIG_SPL_ALLOC_BD) && spl_alloc_bd()) {
+		puts("Cannot alloc bd\n");
+		hang();
+	}
 #if !defined(CONFIG_PPC) && !defined(CONFIG_ARCH_MX6)
 	/*
 	 * timer_init() does not exist on PPC systems. The timer is initialized
diff --git a/include/spl.h b/include/spl.h
index 374a295fa36..a7648787b74 100644
--- a/include/spl.h
+++ b/include/spl.h
@@ -285,7 +285,15 @@ u32 spl_mmc_boot_mode(const u32 boot_device);
  * If not overridden, it is weakly defined in common/spl/spl_mmc.c.
  */
 int spl_mmc_boot_partition(const u32 boot_device);
-void spl_set_bd(void);
+
+/**
+ * spl_alloc_bd() - Allocate space for bd_info
+ *
+ * This sets up the gd->bd pointer by allocating memory for it
+ *
+ * @return 0 if OK, -ENOMEM if out of memory
+ */
+int spl_alloc_bd(void);
 
 /**
  * spl_set_header_raw_uboot() - Set up a standard SPL image structure
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 10/18] dm: core: Support dm_dump_all() in SPL
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (8 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 09/18] spl: Drop bd_info in the data section Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 11/18] dm: core: Use 'uclass_driver' for the uclass linker_list Simon Glass
                   ` (25 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

At present the output from this function is hard to read in SPL, due to
(intended) limitations in SPL's printf() function. Add an SPL version so
it is clearer.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 drivers/core/dump.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/core/dump.c b/drivers/core/dump.c
index 20125473212..7784ec02dea 100644
--- a/drivers/core/dump.c
+++ b/drivers/core/dump.c
@@ -14,11 +14,13 @@ static void show_devices(struct udevice *dev, int depth, int last_flag)
 {
 	int i, is_last;
 	struct udevice *child;
+	u32 flags = dev->flags;
 
 	/* print the first 20 characters to not break the tree-format. */
-	printf(" %-10.10s  %3d  [ %c ]   %-20.20s  ", dev->uclass->uc_drv->name,
+	printf(IS_ENABLED(CONFIG_SPL_BUILD) ? " %s  %d  [ %c ]   %s  " :
+	       " %-10.10s  %3d  [ %c ]   %-20.20s  ", dev->uclass->uc_drv->name,
 	       dev_get_uclass_index(dev, NULL),
-	       dev->flags & DM_FLAG_ACTIVATED ? '+' : ' ', dev->driver->name);
+	       flags & DM_FLAG_ACTIVATED ? '+' : ' ', dev->driver->name);
 
 	for (i = depth; i >= 0; i--) {
 		is_last = (last_flag >> i) & 1;
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 11/18] dm: core: Use 'uclass_driver' for the uclass linker_list
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (9 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 10/18] dm: core: Support dm_dump_all() in SPL Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 12/18] dm: core: Only include simple-bus devicetree id when needed Simon Glass
                   ` (24 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

At present the name 'uclass_driver' is used for the uclass linker list.
This does not follow the convention of using the struct name. Fix it.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 drivers/core/lists.c | 4 ++--
 drivers/core/root.c  | 4 ++--
 include/dm/uclass.h  | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/core/lists.c b/drivers/core/lists.c
index b23ee3030e5..426444db3a9 100644
--- a/drivers/core/lists.c
+++ b/drivers/core/lists.c
@@ -39,8 +39,8 @@ struct driver *lists_driver_lookup_name(const char *name)
 struct uclass_driver *lists_uclass_lookup(enum uclass_id id)
 {
 	struct uclass_driver *uclass =
-		ll_entry_start(struct uclass_driver, uclass);
-	const int n_ents = ll_entry_count(struct uclass_driver, uclass);
+		ll_entry_start(struct uclass_driver, uclass_driver);
+	const int n_ents = ll_entry_count(struct uclass_driver, uclass_driver);
 	struct uclass_driver *entry;
 
 	for (entry = uclass; entry != uclass + n_ents; entry++) {
diff --git a/drivers/core/root.c b/drivers/core/root.c
index f2fba5883aa..9ef242979ba 100644
--- a/drivers/core/root.c
+++ b/drivers/core/root.c
@@ -86,8 +86,8 @@ void fix_drivers(void)
 void fix_uclass(void)
 {
 	struct uclass_driver *uclass =
-		ll_entry_start(struct uclass_driver, uclass);
-	const int n_ents = ll_entry_count(struct uclass_driver, uclass);
+		ll_entry_start(struct uclass_driver, uclass_driver);
+	const int n_ents = ll_entry_count(struct uclass_driver, uclass_driver);
 	struct uclass_driver *entry;
 
 	for (entry = uclass; entry != uclass + n_ents; entry++) {
diff --git a/include/dm/uclass.h b/include/dm/uclass.h
index 91edbfb47d4..fde08fe157a 100644
--- a/include/dm/uclass.h
+++ b/include/dm/uclass.h
@@ -112,7 +112,7 @@ struct uclass_driver {
 
 /* Declare a new uclass_driver */
 #define UCLASS_DRIVER(__name)						\
-	ll_entry_declare(struct uclass_driver, __name, uclass)
+	ll_entry_declare(struct uclass_driver, __name, uclass_driver)
 
 /**
  * uclass_get() - Get a uclass based on an ID, creating it if needed
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 12/18] dm: core: Only include simple-bus devicetree id when needed
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (10 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 11/18] dm: core: Use 'uclass_driver' for the uclass linker_list Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 13/18] x86: apl: Drop support for !OF_PLATDATA_PARENT Simon Glass
                   ` (23 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

This is not needed when of-platdata is in use. Update it.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 drivers/core/simple-bus.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/core/simple-bus.c b/drivers/core/simple-bus.c
index c45212a0d3a..7dbcbecd948 100644
--- a/drivers/core/simple-bus.c
+++ b/drivers/core/simple-bus.c
@@ -50,15 +50,17 @@ UCLASS_DRIVER(simple_bus) = {
 	.per_device_plat_auto	= sizeof(struct simple_bus_plat),
 };
 
+#if !CONFIG_IS_ENABLED(OF_PLATDATA)
 static const struct udevice_id generic_simple_bus_ids[] = {
 	{ .compatible = "simple-bus" },
 	{ .compatible = "simple-mfd" },
 	{ }
 };
+#endif
 
 U_BOOT_DRIVER(simple_bus) = {
 	.name	= "simple_bus",
 	.id	= UCLASS_SIMPLE_BUS,
-	.of_match = generic_simple_bus_ids,
+	.of_match = of_match_ptr(generic_simple_bus_ids),
 	.flags	= DM_FLAG_PRE_RELOC,
 };
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 13/18] x86: apl: Drop support for !OF_PLATDATA_PARENT
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (11 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 12/18] dm: core: Only include simple-bus devicetree id when needed Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 14/18] dm: core: Add function to access uclass priv Simon Glass
                   ` (22 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

This code was kept around after of-platdata started supporting parent
devices. That feature seems stable now, so let's drop it.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v2:
- Remove an old comment about this in pinctrl

 arch/x86/cpu/apollolake/Kconfig     |  1 +
 arch/x86/cpu/apollolake/spl.c       | 28 ----------------------------
 drivers/misc/p2sb-uclass.c          | 15 ---------------
 drivers/pinctrl/intel/pinctrl_apl.c |  2 --
 4 files changed, 1 insertion(+), 45 deletions(-)

diff --git a/arch/x86/cpu/apollolake/Kconfig b/arch/x86/cpu/apollolake/Kconfig
index c6c1350f4f0..f5dbd6cbd34 100644
--- a/arch/x86/cpu/apollolake/Kconfig
+++ b/arch/x86/cpu/apollolake/Kconfig
@@ -19,6 +19,7 @@ config INTEL_APOLLOLAKE
 	select SMP_AP_WORK
 	select INTEL_GMA_SWSMISCI
 	select ACPI_GNVS_EXTERNAL
+	select TPL_OF_PLATDATA_PARENT
 	imply ENABLE_MRC_CACHE
 	imply AHCI_PCI
 	imply SCSI
diff --git a/arch/x86/cpu/apollolake/spl.c b/arch/x86/cpu/apollolake/spl.c
index 3a1588bbd8b..16a2f15c6bc 100644
--- a/arch/x86/cpu/apollolake/spl.c
+++ b/arch/x86/cpu/apollolake/spl.c
@@ -83,33 +83,6 @@ static int apl_flash_probe(struct udevice *dev)
 	return spi_flash_std_probe(dev);
 }
 
-/*
- * Manually set the parent of the SPI flash to SPI, since dtoc doesn't. We also
- * need to allocate the parent_plat since by the time this function is
- * called device_bind() has already gone past that step.
- */
-static int apl_flash_bind(struct udevice *dev)
-{
-	if (CONFIG_IS_ENABLED(OF_PLATDATA) &&
-	    !CONFIG_IS_ENABLED(OF_PLATDATA_PARENT)) {
-		struct dm_spi_slave_plat *plat;
-		struct udevice *spi;
-		int ret;
-
-		ret = uclass_first_device_err(UCLASS_SPI, &spi);
-		if (ret)
-			return ret;
-		dev->parent = spi;
-
-		plat = calloc(sizeof(*plat), 1);
-		if (!plat)
-			return -ENOMEM;
-		dev->parent_plat = plat;
-	}
-
-	return 0;
-}
-
 static const struct dm_spi_flash_ops apl_flash_ops = {
 	.read		= apl_flash_std_read,
 };
@@ -123,7 +96,6 @@ U_BOOT_DRIVER(winbond_w25q128fw) = {
 	.name		= "winbond_w25q128fw",
 	.id		= UCLASS_SPI_FLASH,
 	.of_match	= apl_flash_ids,
-	.bind		= apl_flash_bind,
 	.probe		= apl_flash_probe,
 	.priv_auto	= sizeof(struct spi_flash),
 	.ops		= &apl_flash_ops,
diff --git a/drivers/misc/p2sb-uclass.c b/drivers/misc/p2sb-uclass.c
index 8f9ec027a2e..ac2852559f5 100644
--- a/drivers/misc/p2sb-uclass.c
+++ b/drivers/misc/p2sb-uclass.c
@@ -168,26 +168,11 @@ int p2sb_get_port_id(struct udevice *dev)
 
 int p2sb_set_port_id(struct udevice *dev, int portid)
 {
-	struct udevice *ps2b;
 	struct p2sb_child_plat *pplat;
 
 	if (!CONFIG_IS_ENABLED(OF_PLATDATA))
 		return -ENOSYS;
 
-	if (!CONFIG_IS_ENABLED(OF_PLATDATA_PARENT)) {
-		uclass_find_first_device(UCLASS_P2SB, &ps2b);
-		if (!ps2b)
-			return -EDEADLK;
-		dev->parent = ps2b;
-
-		/*
-		 * We must allocate this, since when the device was bound it did
-		 * not have a parent.
-		 */
-		dev->parent_plat = malloc(sizeof(*pplat));
-		if (!dev->parent_plat)
-			return -ENOMEM;
-	}
 	pplat = dev_get_parent_plat(dev);
 	pplat->pid = portid;
 
diff --git a/drivers/pinctrl/intel/pinctrl_apl.c b/drivers/pinctrl/intel/pinctrl_apl.c
index 48b0e9a161b..2bb654c8a18 100644
--- a/drivers/pinctrl/intel/pinctrl_apl.c
+++ b/drivers/pinctrl/intel/pinctrl_apl.c
@@ -152,8 +152,6 @@ static int apl_pinctrl_of_to_plat(struct udevice *dev)
 	 * linker list (i.e. alphabetical order by driver name). So the GPIO
 	 * device may well be bound before its parent (p2sb), and this call
 	 * will fail if p2sb is not bound yet.
-	 *
-	 * TODO(sjg at chromium.org): Add a parent pointer to child devices in dtoc
 	 */
 	ret = p2sb_set_port_id(dev, plat->dtplat.intel_p2sb_port_id);
 	if (ret)
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 14/18] dm: core: Add function to access uclass priv
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (12 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 13/18] x86: apl: Drop support for !OF_PLATDATA_PARENT Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 15/18] dm: core: Add functions to set priv/plat Simon Glass
                   ` (21 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

Add functions so this information is not accessed directly. This will be
needed for of-platdata which stores it in a different place.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 drivers/core/uclass.c        | 10 ++++++++++
 include/dm/uclass-internal.h | 14 ++++++++++++++
 include/dm/uclass.h          |  8 ++++++++
 3 files changed, 32 insertions(+)

diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c
index 6409457fa96..5e24927b341 100644
--- a/drivers/core/uclass.c
+++ b/drivers/core/uclass.c
@@ -160,6 +160,16 @@ const char *uclass_get_name(enum uclass_id id)
 	return uc->uc_drv->name;
 }
 
+void *uclass_get_priv(const struct uclass *uc)
+{
+	return uc->priv;
+}
+
+void uclass_set_priv(struct uclass *uc, void *priv)
+{
+	uc->priv = priv;
+}
+
 enum uclass_id uclass_get_by_name(const char *name)
 {
 	int i;
diff --git a/include/dm/uclass-internal.h b/include/dm/uclass-internal.h
index 3e052f95d32..c5a464be7c4 100644
--- a/include/dm/uclass-internal.h
+++ b/include/dm/uclass-internal.h
@@ -11,6 +11,20 @@
 
 #include <dm/ofnode.h>
 
+/**
+ * uclass_set_priv() - Set the private data for a uclass
+ *
+ * This is normally handled by driver model, which automatically allocates
+ * private data when an 'auto' size if provided by the uclass driver.
+ *
+ * Use this function to override normal operation for special situations, such
+ * as needing to allocate a variable amount of data.
+ *
+ * @uc		Uclass to update
+ * @priv	New private-data pointer
+ */
+void uclass_set_priv(struct uclass *uc, void *priv);
+
 /**
  * uclass_find_next_free_seq() - Get the next free sequence number
  *
diff --git a/include/dm/uclass.h b/include/dm/uclass.h
index fde08fe157a..20d4b9e6832 100644
--- a/include/dm/uclass.h
+++ b/include/dm/uclass.h
@@ -114,6 +114,14 @@ struct uclass_driver {
 #define UCLASS_DRIVER(__name)						\
 	ll_entry_declare(struct uclass_driver, __name, uclass_driver)
 
+/**
+ * uclass_get_priv() - Get the private data for a uclass
+ *
+ * @uc		Uclass to check
+ * @return private data, or NULL if none
+ */
+void *uclass_get_priv(const struct uclass *uc);
+
 /**
  * uclass_get() - Get a uclass based on an ID, creating it if needed
  *
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 15/18] dm: core: Add functions to set priv/plat
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (13 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 14/18] dm: core: Add function to access uclass priv Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 16/18] dm: Use access methods for dev/uclass private data Simon Glass
                   ` (20 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

This should not normally be needed in drivers, but add accessors for the
few cases that exist.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 drivers/core/device.c        | 30 +++++++++++++
 include/dm/device-internal.h | 84 ++++++++++++++++++++++++++++++++++++
 2 files changed, 114 insertions(+)

diff --git a/drivers/core/device.c b/drivers/core/device.c
index d1a08ce7834..f2d750c8de4 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -959,6 +959,36 @@ int device_set_name(struct udevice *dev, const char *name)
 	return 0;
 }
 
+void dev_set_priv(struct udevice *dev, void *priv)
+{
+	dev->priv = priv;
+}
+
+void dev_set_parent_priv(struct udevice *dev, void *parent_priv)
+{
+	dev->parent_priv = parent_priv;
+}
+
+void dev_set_uclass_priv(struct udevice *dev, void *uclass_priv)
+{
+	dev->uclass_priv = uclass_priv;
+}
+
+void dev_set_plat(struct udevice *dev, void *plat)
+{
+	dev->plat = plat;
+}
+
+void dev_set_parent_plat(struct udevice *dev, void *parent_plat)
+{
+	dev->parent_plat = parent_plat;
+}
+
+void dev_set_uclass_plat(struct udevice *dev, void *uclass_plat)
+{
+	dev->uclass_plat = uclass_plat;
+}
+
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 bool device_is_compatible(const struct udevice *dev, const char *compat)
 {
diff --git a/include/dm/device-internal.h b/include/dm/device-internal.h
index af3b6b2b054..03b092bdf7d 100644
--- a/include/dm/device-internal.h
+++ b/include/dm/device-internal.h
@@ -189,6 +189,90 @@ static inline int device_chld_remove(struct udevice *dev, struct driver *drv,
 }
 #endif
 
+/**
+ * dev_set_priv() - Set the private data for a device
+ *
+ * This is normally handled by driver model, which automatically allocates
+ * private data when an 'auto' size if provided by the driver.
+ *
+ * Use this function to override normal operation for special situations, such
+ * as needing to allocate a variable amount of data.
+ *
+ * @dev		Device to check
+ * @priv	New private-data pointer
+ */
+void dev_set_priv(struct udevice *dev, void *priv);
+
+/**
+ * dev_set_parent_priv() - Set the parent-private data for a device
+ *
+ * This is normally handled by driver model, which automatically allocates
+ * parent-private data when an 'auto' size if provided by the driver.
+ *
+ * Use this function to override normal operation for special situations, such
+ * as needing to allocate a variable amount of data.
+ *
+ * @dev:	Device to update
+ * @parent_priv: New parent-private data
+ */
+void dev_set_parent_priv(struct udevice *dev, void *parent_priv);
+
+/**
+ * dev_set_uclass_priv() - Set the uclass private data for a device
+ *
+ * This is normally handled by driver model, which automatically allocates
+ * uclass-private data when an 'auto' size if provided by the driver.
+ *
+ * Use this function to override normal operation for special situations, such
+ * as needing to allocate a variable amount of data.
+ *
+ * @dev:	Device to update
+ * @uclass_priv: New uclass private data
+ */
+void dev_set_uclass_priv(struct udevice *dev, void *uclass_priv);
+
+/**
+ * dev_set_plat() - Set the platform data for a device
+ *
+ * This is normally handled by driver model, which automatically allocates
+ * platform data when an 'auto' size if provided by the driver.
+ *
+ * Use this function to override normal operation for special situations, such
+ * as needing to allocate a variable amount of data.
+ *
+ * @dev		Device to check
+ * @plat	New platform-data pointer
+ */
+void dev_set_plat(struct udevice *dev, void *priv);
+
+/**
+ * dev_set_parent_plat() - Set the parent platform data for a device
+ *
+ * This is normally handled by driver model, which automatically allocates
+ * parent platform data when an 'auto' size if provided by the driver.
+ *
+ * Use this function to override normal operation for special situations, such
+ * as needing to allocate a variable amount of data.
+ *
+ * @dev:	Device to update
+ * @parent_plat: New parent platform data
+ */
+void dev_set_parent_plat(struct udevice *dev, void *parent_plat);
+
+/**
+ * dev_set_uclass_plat() - Set the uclass platform data for a device
+ *
+ * This is normally handled by driver model, which automatically allocates
+ * uclass platform data when an 'auto' size if provided by the driver.
+ *
+ * Use this function to override normal operation for special situations, such
+ * as needing to allocate a variable amount of data.
+ *
+ * @dev:	Device to update
+ * @uclass_plat: New uclass platform data
+ */
+void dev_set_uclass_plat(struct udevice *dev, void *uclass_plat);
+
 /**
  * simple_bus_translate() - translate a bus address to a system address
  *
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 16/18] dm: Use access methods for dev/uclass private data
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (14 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 15/18] dm: core: Add functions to set priv/plat Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 17/18] dm: core: " Simon Glass
                   ` (19 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

Most drivers use these access methods but a few do not. Update them.

In some cases the access is not permitted, so mark those with a FIXME tag
for the maintainer to check.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Pratyush Yadav <p.yadav@ti.com>
---

(no changes since v1)

 arch/arm/cpu/armv7/ls102xa/fdt.c          |  4 ++
 arch/arm/mach-stm32mp/pwr_regulator.c     |  3 +-
 arch/x86/cpu/apollolake/uart.c            |  3 +-
 arch/x86/cpu/slimbootloader/serial.c      |  2 +-
 drivers/clk/clk.c                         |  4 +-
 drivers/clk/clk_fixed_rate.c              |  4 +-
 drivers/clk/rockchip/clk_px30.c           |  3 +-
 drivers/clk/rockchip/clk_rk3036.c         |  3 +-
 drivers/clk/rockchip/clk_rk3128.c         |  3 +-
 drivers/clk/rockchip/clk_rk3188.c         |  2 +-
 drivers/clk/rockchip/clk_rk322x.c         |  3 +-
 drivers/clk/rockchip/clk_rk3288.c         |  2 +-
 drivers/clk/rockchip/clk_rk3308.c         |  3 +-
 drivers/clk/rockchip/clk_rk3328.c         |  3 +-
 drivers/clk/rockchip/clk_rk3368.c         |  3 +-
 drivers/clk/rockchip/clk_rk3399.c         |  3 +-
 drivers/clk/rockchip/clk_rv1108.c         |  3 +-
 drivers/core/device-remove.c              | 16 ++++----
 drivers/ddr/altera/sdram_agilex.c         |  2 +-
 drivers/ddr/altera/sdram_gen5.c           |  4 +-
 drivers/ddr/altera/sdram_s10.c            |  2 +-
 drivers/ddr/altera/sdram_soc64.c          |  2 +-
 drivers/gpio/dwapb_gpio.c                 |  2 +-
 drivers/gpio/gpio-uclass.c                |  2 +-
 drivers/gpio/hi6220_gpio.c                |  2 +-
 drivers/gpio/imx_rgpio2p.c                |  5 ++-
 drivers/gpio/lpc32xx_gpio.c               |  2 +-
 drivers/gpio/mt7621_gpio.c                |  2 +-
 drivers/gpio/mxs_gpio.c                   |  2 +-
 drivers/gpio/omap_gpio.c                  |  3 +-
 drivers/gpio/s5p_gpio.c                   |  6 +--
 drivers/gpio/sandbox.c                    |  6 ++-
 drivers/gpio/sunxi_gpio.c                 |  2 +-
 drivers/gpio/tegra186_gpio.c              |  6 +--
 drivers/gpio/tegra_gpio.c                 |  6 +--
 drivers/misc/altera_sysid.c               |  2 +-
 drivers/misc/cros_ec_sandbox.c            |  4 +-
 drivers/misc/fs_loader.c                  |  6 +--
 drivers/misc/vexpress_config.c            |  2 +-
 drivers/mmc/arm_pl180_mmci.c              |  6 +--
 drivers/mmc/mxsmmc.c                      |  2 +-
 drivers/mmc/octeontx_hsmmc.c              | 17 ++++++---
 drivers/mux/mmio.c                        |  3 +-
 drivers/net/eth-phy-uclass.c              |  4 +-
 drivers/net/fm/eth.c                      | 22 +++++++++--
 drivers/net/fsl_mcdmafec.c                | 10 ++---
 drivers/net/mcffec.c                      | 12 +++---
 drivers/net/mcfmii.c                      |  8 ++++
 drivers/net/pfe_eth/pfe_eth.c             |  2 +-
 drivers/net/sunxi_emac.c                  |  2 +-
 drivers/net/tsec.c                        | 46 +++++++++++++++++------
 drivers/net/xilinx_emaclite.c             |  2 +-
 drivers/pci/pci-emul-uclass.c             |  4 +-
 drivers/pci/pci-uclass.c                  |  8 ++--
 drivers/pinctrl/pinctrl-qe-io.c           |  4 +-
 drivers/pinctrl/pinctrl-single.c          |  6 +--
 drivers/power/regulator/da9063.c          | 24 ++++++------
 drivers/power/regulator/pbias_regulator.c |  3 +-
 drivers/remoteproc/rproc-uclass.c         |  4 +-
 drivers/reset/reset-mediatek.c            |  3 +-
 drivers/reset/reset-rockchip.c            |  3 +-
 drivers/reset/reset-sifive.c              |  3 +-
 drivers/reset/reset-sunxi.c               |  3 +-
 drivers/serial/altera_jtag_uart.c         |  8 ++--
 drivers/serial/altera_uart.c              |  8 ++--
 drivers/serial/atmel_usart.c              |  2 +-
 drivers/serial/ns16550.c                  |  4 +-
 drivers/serial/sandbox.c                  |  6 +--
 drivers/serial/serial_arc.c               |  8 ++--
 drivers/serial/serial_linflexuart.c       |  2 +-
 drivers/serial/serial_lpuart.c            | 10 ++---
 drivers/serial/serial_mcf.c               | 10 ++---
 drivers/serial/serial_meson.c             | 12 +++---
 drivers/serial/serial_mxc.c               | 12 +++---
 drivers/serial/serial_omap.c              |  2 +-
 drivers/serial/serial_pxa.c               | 10 ++---
 drivers/serial/serial_rockchip.c          |  3 +-
 drivers/serial/serial_s5p.c               | 12 +++---
 drivers/spi/cadence_qspi.c                | 12 +++---
 drivers/spi/cf_spi.c                      |  2 +-
 drivers/spi/davinci_spi.c                 |  4 +-
 drivers/spi/designware_spi.c              |  4 +-
 drivers/spi/exynos_spi.c                  |  4 +-
 drivers/spi/fsl_dspi.c                    |  4 +-
 drivers/spi/fsl_espi.c                    |  2 +-
 drivers/spi/fsl_qspi.c                    |  2 +-
 drivers/spi/mxs_spi.c                     |  2 +-
 drivers/spi/pl022_spi.c                   |  2 +-
 drivers/spi/rk_spi.c                      |  6 +--
 drivers/spi/soft_spi.c                    |  4 +-
 drivers/spi/tegra114_spi.c                |  4 +-
 drivers/spi/tegra20_sflash.c              |  4 +-
 drivers/spi/tegra20_slink.c               |  4 +-
 drivers/spi/tegra210_qspi.c               |  4 +-
 drivers/spi/uniphier_spi.c                |  8 ++--
 drivers/spi/zynq_qspi.c                   |  4 +-
 drivers/spi/zynq_spi.c                    |  8 ++--
 drivers/spi/zynqmp_gqspi.c                |  6 +--
 drivers/timer/ag101p_timer.c              |  4 +-
 drivers/timer/altera_timer.c              |  4 +-
 drivers/timer/andes_plmt_timer.c          |  7 ++--
 drivers/timer/mpc83xx_timer.c             |  2 +-
 drivers/timer/sifive_clint_timer.c        |  7 ++--
 drivers/timer/timer-uclass.c              |  2 +-
 drivers/usb/gadget/ether.c                | 16 ++++++--
 drivers/usb/host/usb-uclass.c             |  6 +--
 drivers/video/video-uclass.c              |  2 +-
 lib/efi_loader/efi_device_path.c          |  2 +-
 net/eth-uclass.c                          | 22 +++++------
 test/dm/core.c                            | 24 ++++++------
 test/dm/test-driver.c                     |  7 ++--
 test/dm/test-fdt.c                        |  4 +-
 test/dm/test-uclass.c                     |  4 +-
 113 files changed, 372 insertions(+), 278 deletions(-)

diff --git a/arch/arm/cpu/armv7/ls102xa/fdt.c b/arch/arm/cpu/armv7/ls102xa/fdt.c
index d8cb78ecc67..2556980cde6 100644
--- a/arch/arm/cpu/armv7/ls102xa/fdt.c
+++ b/arch/arm/cpu/armv7/ls102xa/fdt.c
@@ -52,7 +52,11 @@ void ft_fixup_enet_phy_connect_type(void *fdt)
 			continue;
 		}
 
+#ifdef CONFIG_DM_ETH
+		priv = dev_get_priv(dev);
+#else
 		priv = dev->priv;
+#endif
 		if (priv->flags & TSEC_SGMII)
 			continue;
 
diff --git a/arch/arm/mach-stm32mp/pwr_regulator.c b/arch/arm/mach-stm32mp/pwr_regulator.c
index 74a5df59487..af6ea439646 100644
--- a/arch/arm/mach-stm32mp/pwr_regulator.c
+++ b/arch/arm/mach-stm32mp/pwr_regulator.c
@@ -9,6 +9,7 @@
 #include <syscon.h>
 #include <asm/io.h>
 #include <dm/device_compat.h>
+#include <dm/device-internal.h>
 #include <linux/bitops.h>
 #include <linux/err.h>
 #include <power/pmic.h>
@@ -165,7 +166,7 @@ static int stm32mp_pwr_regulator_probe(struct udevice *dev)
 	}
 
 	uc_pdata->type = REGULATOR_TYPE_FIXED;
-	dev->priv = (void *)*p;
+	dev_set_priv(dev, (void *)*p);
 
 	return 0;
 }
diff --git a/arch/x86/cpu/apollolake/uart.c b/arch/x86/cpu/apollolake/uart.c
index 8e6dfdb6309..e523d85b1b4 100644
--- a/arch/x86/cpu/apollolake/uart.c
+++ b/arch/x86/cpu/apollolake/uart.c
@@ -16,6 +16,7 @@
 #include <asm/io.h>
 #include <asm/pci.h>
 #include <asm/lpss.h>
+#include <dm/device-internal.h>
 
 /* Low-power Subsystem (LPSS) clock register */
 enum {
@@ -105,7 +106,7 @@ static int apl_ns16550_of_to_plat(struct udevice *dev)
 	plat->clock = dtplat->clock_frequency;
 	plat->fcr = UART_FCR_DEFVAL;
 	plat->bdf = pci_ofplat_get_devfn(dtplat->reg[0]);
-	dev->plat = plat;
+	dev_set_plat(dev, plat);
 #else
 	int ret;
 
diff --git a/arch/x86/cpu/slimbootloader/serial.c b/arch/x86/cpu/slimbootloader/serial.c
index ebbd2c552ff..772a94c31cb 100644
--- a/arch/x86/cpu/slimbootloader/serial.c
+++ b/arch/x86/cpu/slimbootloader/serial.c
@@ -18,7 +18,7 @@ static int slimbootloader_serial_of_to_plat(struct udevice *dev)
 {
 	const efi_guid_t guid = SBL_SERIAL_PORT_INFO_GUID;
 	struct sbl_serial_port_info *data;
-	struct ns16550_plat *plat = dev->plat;
+	struct ns16550_plat *plat = dev_get_plat(dev);
 
 	if (!gd->arch.hob_list)
 		panic("hob list not found!");
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 928ad13641a..eb75132f27e 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -44,8 +44,10 @@ int clk_register(struct clk *clk, const char *drv_name,
 	}
 
 	clk->enable_count = 0;
+
 	/* Store back pointer to clk from udevice */
-	clk->dev->uclass_priv = clk;
+	/* FIXME: This is not allowed...should be allocated by driver model */
+	dev_set_uclass_priv(clk->dev, clk);
 
 	return 0;
 }
diff --git a/drivers/clk/clk_fixed_rate.c b/drivers/clk/clk_fixed_rate.c
index 12d81a7ff7a..3c5a83c523c 100644
--- a/drivers/clk/clk_fixed_rate.c
+++ b/drivers/clk/clk_fixed_rate.c
@@ -6,6 +6,7 @@
 #include <common.h>
 #include <clk-uclass.h>
 #include <dm.h>
+#include <dm/device-internal.h>
 #include <linux/clk-provider.h>
 
 static ulong clk_fixed_rate_get_rate(struct clk *clk)
@@ -32,7 +33,8 @@ static int clk_fixed_rate_of_to_plat(struct udevice *dev)
 		dev_read_u32_default(dev, "clock-frequency", 0);
 #endif
 	/* Make fixed rate clock accessible from higher level struct clk */
-	dev->uclass_priv = clk;
+	/* FIXME: This is not allowed */
+	dev_set_uclass_priv(dev, clk);
 	clk->dev = dev;
 	clk->enable_count = 0;
 
diff --git a/drivers/clk/rockchip/clk_px30.c b/drivers/clk/rockchip/clk_px30.c
index 355362dd678..a2a5939d4b1 100644
--- a/drivers/clk/rockchip/clk_px30.c
+++ b/drivers/clk/rockchip/clk_px30.c
@@ -15,6 +15,7 @@
 #include <asm/arch-rockchip/cru_px30.h>
 #include <asm/arch-rockchip/hardware.h>
 #include <asm/io.h>
+#include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/px30-cru.h>
 #include <linux/bitops.h>
@@ -1458,7 +1459,7 @@ static int px30_clk_bind(struct udevice *dev)
 						    glb_srst_fst);
 		priv->glb_srst_snd_value = offsetof(struct px30_cru,
 						    glb_srst_snd);
-		sys_child->priv = priv;
+		dev_set_priv(sys_child, priv);
 	}
 
 #if CONFIG_IS_ENABLED(RESET_ROCKCHIP)
diff --git a/drivers/clk/rockchip/clk_rk3036.c b/drivers/clk/rockchip/clk_rk3036.c
index 07ef6133f29..026858459e3 100644
--- a/drivers/clk/rockchip/clk_rk3036.c
+++ b/drivers/clk/rockchip/clk_rk3036.c
@@ -14,6 +14,7 @@
 #include <asm/arch-rockchip/clock.h>
 #include <asm/arch-rockchip/cru_rk3036.h>
 #include <asm/arch-rockchip/hardware.h>
+#include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rk3036-cru.h>
 #include <linux/delay.h>
@@ -353,7 +354,7 @@ static int rk3036_clk_bind(struct udevice *dev)
 						    cru_glb_srst_fst_value);
 		priv->glb_srst_snd_value = offsetof(struct rk3036_cru,
 						    cru_glb_srst_snd_value);
-		sys_child->priv = priv;
+		dev_set_priv(sys_child, priv);
 	}
 
 #if CONFIG_IS_ENABLED(RESET_ROCKCHIP)
diff --git a/drivers/clk/rockchip/clk_rk3128.c b/drivers/clk/rockchip/clk_rk3128.c
index 9349e14830e..d5b2b63dd79 100644
--- a/drivers/clk/rockchip/clk_rk3128.c
+++ b/drivers/clk/rockchip/clk_rk3128.c
@@ -15,6 +15,7 @@
 #include <asm/arch-rockchip/cru_rk3128.h>
 #include <asm/arch-rockchip/hardware.h>
 #include <bitfield.h>
+#include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rk3128-cru.h>
 #include <linux/delay.h>
@@ -581,7 +582,7 @@ static int rk3128_clk_bind(struct udevice *dev)
 						    cru_glb_srst_fst_value);
 		priv->glb_srst_snd_value = offsetof(struct rk3128_cru,
 						    cru_glb_srst_snd_value);
-		sys_child->priv = priv;
+		dev_set_priv(sys_child, priv);
 	}
 
 	return 0;
diff --git a/drivers/clk/rockchip/clk_rk3188.c b/drivers/clk/rockchip/clk_rk3188.c
index 48bfe09b11f..1b62d8d2898 100644
--- a/drivers/clk/rockchip/clk_rk3188.c
+++ b/drivers/clk/rockchip/clk_rk3188.c
@@ -593,7 +593,7 @@ static int rk3188_clk_bind(struct udevice *dev)
 						    cru_glb_srst_fst_value);
 		priv->glb_srst_snd_value = offsetof(struct rk3188_cru,
 						    cru_glb_srst_snd_value);
-		sys_child->priv = priv;
+		dev_set_priv(sys_child, priv);
 	}
 
 #if CONFIG_IS_ENABLED(RESET_ROCKCHIP)
diff --git a/drivers/clk/rockchip/clk_rk322x.c b/drivers/clk/rockchip/clk_rk322x.c
index c2f5fc0fd75..dbef606d887 100644
--- a/drivers/clk/rockchip/clk_rk322x.c
+++ b/drivers/clk/rockchip/clk_rk322x.c
@@ -14,6 +14,7 @@
 #include <asm/arch-rockchip/clock.h>
 #include <asm/arch-rockchip/cru_rk322x.h>
 #include <asm/arch-rockchip/hardware.h>
+#include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rk3228-cru.h>
 #include <linux/bitops.h>
@@ -510,7 +511,7 @@ static int rk322x_clk_bind(struct udevice *dev)
 						    cru_glb_srst_fst_value);
 		priv->glb_srst_snd_value = offsetof(struct rk322x_cru,
 						    cru_glb_srst_snd_value);
-		sys_child->priv = priv;
+		dev_set_priv(sys_child, priv);
 	}
 
 #if CONFIG_IS_ENABLED(RESET_ROCKCHIP)
diff --git a/drivers/clk/rockchip/clk_rk3288.c b/drivers/clk/rockchip/clk_rk3288.c
index e87fdfc54dd..6226d55658e 100644
--- a/drivers/clk/rockchip/clk_rk3288.c
+++ b/drivers/clk/rockchip/clk_rk3288.c
@@ -1018,7 +1018,7 @@ static int rk3288_clk_bind(struct udevice *dev)
 						    cru_glb_srst_fst_value);
 		priv->glb_srst_snd_value = offsetof(struct rockchip_cru,
 						    cru_glb_srst_snd_value);
-		sys_child->priv = priv;
+		dev_set_priv(sys_child, priv);
 	}
 
 #if CONFIG_IS_ENABLED(RESET_ROCKCHIP)
diff --git a/drivers/clk/rockchip/clk_rk3308.c b/drivers/clk/rockchip/clk_rk3308.c
index 30589512ecc..a05efcfbaba 100644
--- a/drivers/clk/rockchip/clk_rk3308.c
+++ b/drivers/clk/rockchip/clk_rk3308.c
@@ -15,6 +15,7 @@
 #include <asm/arch/cru_rk3308.h>
 #include <asm/arch-rockchip/clock.h>
 #include <asm/arch-rockchip/hardware.h>
+#include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rk3308-cru.h>
 #include <linux/bitops.h>
@@ -1045,7 +1046,7 @@ static int rk3308_clk_bind(struct udevice *dev)
 						    glb_srst_fst);
 		priv->glb_srst_snd_value = offsetof(struct rk3308_cru,
 						    glb_srst_snd);
-		sys_child->priv = priv;
+		dev_set_priv(sys_child, priv);
 	}
 
 #if CONFIG_IS_ENABLED(RESET_ROCKCHIP)
diff --git a/drivers/clk/rockchip/clk_rk3328.c b/drivers/clk/rockchip/clk_rk3328.c
index e2df71290f4..b825ff4cf83 100644
--- a/drivers/clk/rockchip/clk_rk3328.c
+++ b/drivers/clk/rockchip/clk_rk3328.c
@@ -16,6 +16,7 @@
 #include <asm/arch-rockchip/hardware.h>
 #include <asm/arch-rockchip/grf_rk3328.h>
 #include <asm/io.h>
+#include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rk3328-cru.h>
 #include <linux/bitops.h>
@@ -823,7 +824,7 @@ static int rk3328_clk_bind(struct udevice *dev)
 						    glb_srst_fst_value);
 		priv->glb_srst_snd_value = offsetof(struct rk3328_cru,
 						    glb_srst_snd_value);
-		sys_child->priv = priv;
+		dev_set_priv(sys_child, priv);
 	}
 
 #if CONFIG_IS_ENABLED(RESET_ROCKCHIP)
diff --git a/drivers/clk/rockchip/clk_rk3368.c b/drivers/clk/rockchip/clk_rk3368.c
index 9267cac6bcd..780b49ccd89 100644
--- a/drivers/clk/rockchip/clk_rk3368.c
+++ b/drivers/clk/rockchip/clk_rk3368.c
@@ -19,6 +19,7 @@
 #include <asm/arch-rockchip/cru_rk3368.h>
 #include <asm/arch-rockchip/hardware.h>
 #include <asm/io.h>
+#include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rk3368-cru.h>
 #include <linux/delay.h>
@@ -621,7 +622,7 @@ static int rk3368_clk_bind(struct udevice *dev)
 						    glb_srst_fst_val);
 		priv->glb_srst_snd_value = offsetof(struct rk3368_cru,
 						    glb_srst_snd_val);
-		sys_child->priv = priv;
+		dev_set_priv(sys_child, priv);
 	}
 
 #if CONFIG_IS_ENABLED(RESET_ROCKCHIP)
diff --git a/drivers/clk/rockchip/clk_rk3399.c b/drivers/clk/rockchip/clk_rk3399.c
index 68d5dbb581c..55ebac7057d 100644
--- a/drivers/clk/rockchip/clk_rk3399.c
+++ b/drivers/clk/rockchip/clk_rk3399.c
@@ -18,6 +18,7 @@
 #include <asm/arch-rockchip/clock.h>
 #include <asm/arch-rockchip/cru.h>
 #include <asm/arch-rockchip/hardware.h>
+#include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rk3399-cru.h>
 #include <linux/bitops.h>
@@ -1425,7 +1426,7 @@ static int rk3399_clk_bind(struct udevice *dev)
 						    glb_srst_fst_value);
 		priv->glb_srst_snd_value = offsetof(struct rockchip_cru,
 						    glb_srst_snd_value);
-		sys_child->priv = priv;
+		dev_set_priv(sys_child, priv);
 	}
 
 #if CONFIG_IS_ENABLED(RESET_ROCKCHIP)
diff --git a/drivers/clk/rockchip/clk_rv1108.c b/drivers/clk/rockchip/clk_rv1108.c
index 62bcf5a2ab3..1e22db0cb71 100644
--- a/drivers/clk/rockchip/clk_rv1108.c
+++ b/drivers/clk/rockchip/clk_rv1108.c
@@ -16,6 +16,7 @@
 #include <asm/arch-rockchip/clock.h>
 #include <asm/arch-rockchip/cru_rv1108.h>
 #include <asm/arch-rockchip/hardware.h>
+#include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rv1108-cru.h>
 #include <linux/delay.h>
@@ -697,7 +698,7 @@ static int rv1108_clk_bind(struct udevice *dev)
 						    glb_srst_fst_val);
 		priv->glb_srst_snd_value = offsetof(struct rv1108_cru,
 						    glb_srst_snd_val);
-		sys_child->priv = priv;
+		dev_set_priv(sys_child, priv);
 	}
 
 #if CONFIG_IS_ENABLED(RESET_ROCKCHIP)
diff --git a/drivers/core/device-remove.c b/drivers/core/device-remove.c
index 289220b98e8..8c121697711 100644
--- a/drivers/core/device-remove.c
+++ b/drivers/core/device-remove.c
@@ -89,15 +89,15 @@ int device_unbind(struct udevice *dev)
 		return log_msg_ret("child unbind", ret);
 
 	if (dev->flags & DM_FLAG_ALLOC_PDATA) {
-		free(dev->plat);
-		dev->plat = NULL;
+		free(dev_get_plat(dev));
+		dev_set_plat(dev, NULL);
 	}
 	if (dev->flags & DM_FLAG_ALLOC_UCLASS_PDATA) {
-		free(dev->uclass_plat);
+		free(dev_get_uclass_plat(dev));
 		dev->uclass_plat = NULL;
 	}
 	if (dev->flags & DM_FLAG_ALLOC_PARENT_PDATA) {
-		free(dev->parent_plat);
+		free(dev_get_parent_plat(dev));
 		dev->parent_plat = NULL;
 	}
 	ret = uclass_unbind_device(dev);
@@ -125,12 +125,12 @@ void device_free(struct udevice *dev)
 	int size;
 
 	if (dev->driver->priv_auto) {
-		free(dev->priv);
-		dev->priv = NULL;
+		free(dev_get_priv(dev));
+		dev_set_priv(dev, NULL);
 	}
 	size = dev->uclass->uc_drv->per_device_auto;
 	if (size) {
-		free(dev->uclass_priv);
+		free(dev_get_uclass_priv(dev));
 		dev->uclass_priv = NULL;
 	}
 	if (dev->parent) {
@@ -140,7 +140,7 @@ void device_free(struct udevice *dev)
 					per_child_auto;
 		}
 		if (size) {
-			free(dev->parent_priv);
+			free(dev_get_parent_priv(dev));
 			dev->parent_priv = NULL;
 		}
 	}
diff --git a/drivers/ddr/altera/sdram_agilex.c b/drivers/ddr/altera/sdram_agilex.c
index 868bf142b4d..a4ceb36461d 100644
--- a/drivers/ddr/altera/sdram_agilex.c
+++ b/drivers/ddr/altera/sdram_agilex.c
@@ -25,7 +25,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 int sdram_mmr_init_full(struct udevice *dev)
 {
-	struct altera_sdram_plat *plat = dev->plat;
+	struct altera_sdram_plat *plat = dev_get_plat(dev);
 	struct altera_sdram_priv *priv = dev_get_priv(dev);
 	u32 i;
 	int ret;
diff --git a/drivers/ddr/altera/sdram_gen5.c b/drivers/ddr/altera/sdram_gen5.c
index 3ffe057543f..8d3ce495dea 100644
--- a/drivers/ddr/altera/sdram_gen5.c
+++ b/drivers/ddr/altera/sdram_gen5.c
@@ -565,7 +565,7 @@ static unsigned long sdram_calculate_size(struct socfpga_sdr_ctrl *sdr_ctrl)
 
 static int altera_gen5_sdram_of_to_plat(struct udevice *dev)
 {
-	struct altera_gen5_sdram_plat *plat = dev->plat;
+	struct altera_gen5_sdram_plat *plat = dev_get_plat(dev);
 
 	plat->sdr = (struct socfpga_sdr *)devfdt_get_addr_index(dev, 0);
 	if (!plat->sdr)
@@ -578,7 +578,7 @@ static int altera_gen5_sdram_probe(struct udevice *dev)
 {
 	int ret;
 	unsigned long sdram_size;
-	struct altera_gen5_sdram_plat *plat = dev->plat;
+	struct altera_gen5_sdram_plat *plat = dev_get_plat(dev);
 	struct altera_gen5_sdram_priv *priv = dev_get_priv(dev);
 	struct socfpga_sdr_ctrl *sdr_ctrl = &plat->sdr->sdr_ctrl;
 	struct reset_ctl_bulk resets;
diff --git a/drivers/ddr/altera/sdram_s10.c b/drivers/ddr/altera/sdram_s10.c
index 984dc32442d..03a270f2639 100644
--- a/drivers/ddr/altera/sdram_s10.c
+++ b/drivers/ddr/altera/sdram_s10.c
@@ -70,7 +70,7 @@ int match_ddr_conf(u32 ddr_conf)
  */
 int sdram_mmr_init_full(struct udevice *dev)
 {
-	struct altera_sdram_plat *plat = dev->plat;
+	struct altera_sdram_plat *plat = dev_get_plat(dev);
 	struct altera_sdram_priv *priv = dev_get_priv(dev);
 	u32 update_value, io48_value, ddrioctl;
 	u32 i;
diff --git a/drivers/ddr/altera/sdram_soc64.c b/drivers/ddr/altera/sdram_soc64.c
index 7e77c7b0733..5aba655e5f1 100644
--- a/drivers/ddr/altera/sdram_soc64.c
+++ b/drivers/ddr/altera/sdram_soc64.c
@@ -232,7 +232,7 @@ phys_size_t sdram_calculate_size(struct altera_sdram_plat *plat)
 
 static int altera_sdram_of_to_plat(struct udevice *dev)
 {
-	struct altera_sdram_plat *plat = dev->plat;
+	struct altera_sdram_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr;
 
 	addr = dev_read_addr_index(dev, 0);
diff --git a/drivers/gpio/dwapb_gpio.c b/drivers/gpio/dwapb_gpio.c
index acd77b6892e..e6e919444f5 100644
--- a/drivers/gpio/dwapb_gpio.c
+++ b/drivers/gpio/dwapb_gpio.c
@@ -141,7 +141,7 @@ static int gpio_dwapb_reset(struct udevice *dev)
 static int gpio_dwapb_probe(struct udevice *dev)
 {
 	struct gpio_dev_priv *priv = dev_get_uclass_priv(dev);
-	struct gpio_dwapb_plat *plat = dev->plat;
+	struct gpio_dwapb_plat *plat = dev_get_plat(dev);
 
 	if (!plat) {
 		/* Reset on parent device only */
diff --git a/drivers/gpio/gpio-uclass.c b/drivers/gpio/gpio-uclass.c
index 65b18ce6c81..952c111b087 100644
--- a/drivers/gpio/gpio-uclass.c
+++ b/drivers/gpio/gpio-uclass.c
@@ -1165,7 +1165,7 @@ int gpio_get_number(const struct gpio_desc *desc)
 
 	if (!dev)
 		return -1;
-	uc_priv = dev->uclass_priv;
+	uc_priv = dev_get_uclass_priv(dev);
 
 	return uc_priv->gpio_base + desc->offset;
 }
diff --git a/drivers/gpio/hi6220_gpio.c b/drivers/gpio/hi6220_gpio.c
index f5e5fc6e48a..04f8d904a2f 100644
--- a/drivers/gpio/hi6220_gpio.c
+++ b/drivers/gpio/hi6220_gpio.c
@@ -67,7 +67,7 @@ static int hi6220_gpio_probe(struct udevice *dev)
 {
 	struct gpio_bank *bank = dev_get_priv(dev);
 	struct hikey_gpio_plat *plat = dev_get_plat(dev);
-	struct gpio_dev_priv *uc_priv = dev->uclass_priv;
+	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	char name[18], *str;
 
 	sprintf(name, "GPIO%d_", plat->bank_index);
diff --git a/drivers/gpio/imx_rgpio2p.c b/drivers/gpio/imx_rgpio2p.c
index 17edd40c5c5..a5a290a00ce 100644
--- a/drivers/gpio/imx_rgpio2p.c
+++ b/drivers/gpio/imx_rgpio2p.c
@@ -11,6 +11,7 @@
 #include <fdtdec.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
+#include <dm/device-internal.h>
 #include <malloc.h>
 
 enum imx_rgpio2p_direction {
@@ -151,7 +152,7 @@ static int imx_rgpio2p_probe(struct udevice *dev)
 
 static int imx_rgpio2p_bind(struct udevice *dev)
 {
-	struct imx_rgpio2p_plat *plat = dev->plat;
+	struct imx_rgpio2p_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr;
 
 	/*
@@ -184,7 +185,7 @@ static int imx_rgpio2p_bind(struct udevice *dev)
 
 	plat->regs = (struct gpio_regs *)addr;
 	plat->bank_index = dev_seq(dev);
-	dev->plat = plat;
+	dev_set_plat(dev, plat);
 
 	return 0;
 }
diff --git a/drivers/gpio/lpc32xx_gpio.c b/drivers/gpio/lpc32xx_gpio.c
index ffaec32ac2b..de66c765d11 100644
--- a/drivers/gpio/lpc32xx_gpio.c
+++ b/drivers/gpio/lpc32xx_gpio.c
@@ -295,7 +295,7 @@ static const struct dm_gpio_ops gpio_lpc32xx_ops = {
 static int lpc32xx_gpio_probe(struct udevice *dev)
 {
 	struct lpc32xx_gpio_priv *gpio_priv = dev_get_priv(dev);
-	struct gpio_dev_priv *uc_priv = dev->uclass_priv;
+	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 
 	if (dev_of_offset(dev) == -1) {
 		/* Tell the uclass how many GPIOs we have */
diff --git a/drivers/gpio/mt7621_gpio.c b/drivers/gpio/mt7621_gpio.c
index 65b4cbf61b9..43bb4df4da7 100644
--- a/drivers/gpio/mt7621_gpio.c
+++ b/drivers/gpio/mt7621_gpio.c
@@ -130,7 +130,7 @@ static int gpio_mediatek_probe(struct udevice *dev)
  */
 static int gpio_mediatek_bind(struct udevice *parent)
 {
-	struct mediatek_gpio_plat *plat = parent->plat;
+	struct mediatek_gpio_plat *plat = dev_get_plat(parent);
 	ofnode node;
 	int bank = 0;
 	int ret;
diff --git a/drivers/gpio/mxs_gpio.c b/drivers/gpio/mxs_gpio.c
index 5ad65e4ee0b..fd5e0ea5c25 100644
--- a/drivers/gpio/mxs_gpio.c
+++ b/drivers/gpio/mxs_gpio.c
@@ -264,7 +264,7 @@ static int mxs_gpio_probe(struct udevice *dev)
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int mxs_of_to_plat(struct udevice *dev)
 {
-	struct mxs_gpio_plat *plat = dev->plat;
+	struct mxs_gpio_plat *plat = dev_get_plat(dev);
 	struct fdtdec_phandle_args args;
 	int node = dev_of_offset(dev);
 	int ret;
diff --git a/drivers/gpio/omap_gpio.c b/drivers/gpio/omap_gpio.c
index 400c6ca4724..336ece47785 100644
--- a/drivers/gpio/omap_gpio.c
+++ b/drivers/gpio/omap_gpio.c
@@ -22,6 +22,7 @@
 #include <fdtdec.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
+#include <dm/device-internal.h>
 #include <linux/errno.h>
 #include <malloc.h>
 
@@ -328,7 +329,7 @@ static int omap_gpio_bind(struct udevice *dev)
 
 	plat->base = base_addr;
 	plat->port_name = fdt_get_name(gd->fdt_blob, dev_of_offset(dev), NULL);
-	dev->plat = plat;
+	dev_set_plat(dev, plat);
 
 	return 0;
 }
diff --git a/drivers/gpio/s5p_gpio.c b/drivers/gpio/s5p_gpio.c
index 9de9541c875..796fe3e1104 100644
--- a/drivers/gpio/s5p_gpio.c
+++ b/drivers/gpio/s5p_gpio.c
@@ -286,8 +286,8 @@ static const struct dm_gpio_ops gpio_exynos_ops = {
 static int gpio_exynos_probe(struct udevice *dev)
 {
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
-	struct exynos_bank_info *priv = dev->priv;
-	struct exynos_gpio_plat *plat = dev->plat;
+	struct exynos_bank_info *priv = dev_get_priv(dev);
+	struct exynos_gpio_plat *plat = dev_get_plat(dev);
 
 	/* Only child devices have ports */
 	if (!plat)
@@ -307,7 +307,7 @@ static int gpio_exynos_probe(struct udevice *dev)
  */
 static int gpio_exynos_bind(struct udevice *parent)
 {
-	struct exynos_gpio_plat *plat = parent->plat;
+	struct exynos_gpio_plat *plat = dev_get_plat(parent);
 	struct s5p_gpio_bank *bank, *base;
 	const void *blob = gd->fdt_blob;
 	int node;
diff --git a/drivers/gpio/sandbox.c b/drivers/gpio/sandbox.c
index 2708838adf6..489271b560e 100644
--- a/drivers/gpio/sandbox.c
+++ b/drivers/gpio/sandbox.c
@@ -11,6 +11,7 @@
 #include <acpi/acpi_device.h>
 #include <asm/gpio.h>
 #include <dm/acpi.h>
+#include <dm/device-internal.h>
 #include <dm/device_compat.h>
 #include <dm/lists.h>
 #include <dm/of.h>
@@ -297,14 +298,15 @@ static int gpio_sandbox_probe(struct udevice *dev)
 		/* Tell the uclass how many GPIOs we have */
 		uc_priv->gpio_count = CONFIG_SANDBOX_GPIO_COUNT;
 
-	dev->priv = calloc(sizeof(struct gpio_state), uc_priv->gpio_count);
+	dev_set_priv(dev,
+		     calloc(sizeof(struct gpio_state), uc_priv->gpio_count));
 
 	return 0;
 }
 
 static int gpio_sandbox_remove(struct udevice *dev)
 {
-	free(dev->priv);
+	free(dev_get_priv(dev));
 
 	return 0;
 }
diff --git a/drivers/gpio/sunxi_gpio.c b/drivers/gpio/sunxi_gpio.c
index 75494c78283..7633422b0bb 100644
--- a/drivers/gpio/sunxi_gpio.c
+++ b/drivers/gpio/sunxi_gpio.c
@@ -285,7 +285,7 @@ static int gpio_sunxi_bind(struct udevice *parent)
 {
 	struct sunxi_gpio_soc_data *soc_data =
 		(struct sunxi_gpio_soc_data *)dev_get_driver_data(parent);
-	struct sunxi_gpio_plat *plat = parent->plat;
+	struct sunxi_gpio_plat *plat = dev_get_plat(parent);
 	struct sunxi_gpio_reg *ctlr;
 	int bank, ret;
 
diff --git a/drivers/gpio/tegra186_gpio.c b/drivers/gpio/tegra186_gpio.c
index cd1fb65a55c..82dcaf96312 100644
--- a/drivers/gpio/tegra186_gpio.c
+++ b/drivers/gpio/tegra186_gpio.c
@@ -34,7 +34,7 @@ struct tegra186_gpio_plat {
 static uint32_t *tegra186_gpio_reg(struct udevice *dev, uint32_t reg,
 				   uint32_t gpio)
 {
-	struct tegra186_gpio_plat *plat = dev->plat;
+	struct tegra186_gpio_plat *plat = dev_get_plat(dev);
 	uint32_t index = (reg + (gpio * TEGRA186_GPIO_PER_GPIO_STRIDE)) / 4;
 
 	return &(plat->regs[index]);
@@ -166,7 +166,7 @@ static const struct dm_gpio_ops tegra186_gpio_ops = {
  */
 static int tegra186_gpio_bind(struct udevice *parent)
 {
-	struct tegra186_gpio_plat *parent_plat = parent->plat;
+	struct tegra186_gpio_plat *parent_plat = dev_get_plat(parent);
 	struct tegra186_gpio_ctlr_data *ctlr_data =
 		(struct tegra186_gpio_ctlr_data *)dev_get_driver_data(parent);
 	uint32_t *regs;
@@ -201,7 +201,7 @@ static int tegra186_gpio_bind(struct udevice *parent)
 
 static int tegra186_gpio_probe(struct udevice *dev)
 {
-	struct tegra186_gpio_plat *plat = dev->plat;
+	struct tegra186_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 
 	/* Only child devices have ports */
diff --git a/drivers/gpio/tegra_gpio.c b/drivers/gpio/tegra_gpio.c
index c489796f77c..5d3af8a016d 100644
--- a/drivers/gpio/tegra_gpio.c
+++ b/drivers/gpio/tegra_gpio.c
@@ -291,8 +291,8 @@ static const struct udevice_id tegra_gpio_ids[] = {
 static int gpio_tegra_probe(struct udevice *dev)
 {
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
-	struct tegra_port_info *priv = dev->priv;
-	struct tegra_gpio_plat *plat = dev->plat;
+	struct tegra_port_info *priv = dev_get_priv(dev);
+	struct tegra_gpio_plat *plat = dev_get_plat(dev);
 
 	/* Only child devices have ports */
 	if (!plat)
@@ -313,7 +313,7 @@ static int gpio_tegra_probe(struct udevice *dev)
  */
 static int gpio_tegra_bind(struct udevice *parent)
 {
-	struct tegra_gpio_plat *plat = parent->plat;
+	struct tegra_gpio_plat *plat = dev_get_plat(parent);
 	struct gpio_ctlr *ctlr;
 	int bank_count;
 	int bank;
diff --git a/drivers/misc/altera_sysid.c b/drivers/misc/altera_sysid.c
index 057b431c254..878df12771c 100644
--- a/drivers/misc/altera_sysid.c
+++ b/drivers/misc/altera_sysid.c
@@ -59,7 +59,7 @@ U_BOOT_CMD(
 static int altera_sysid_read(struct udevice *dev,
 			     int offset, void *buf, int size)
 {
-	struct altera_sysid_plat *plat = dev->plat;
+	struct altera_sysid_plat *plat = dev_get_plat(dev);
 	struct altera_sysid_regs *const regs = plat->regs;
 	u32 *sysid = buf;
 
diff --git a/drivers/misc/cros_ec_sandbox.c b/drivers/misc/cros_ec_sandbox.c
index cb7229ae96f..64186b9a3eb 100644
--- a/drivers/misc/cros_ec_sandbox.c
+++ b/drivers/misc/cros_ec_sandbox.c
@@ -522,8 +522,8 @@ void cros_ec_check_keyboard(struct udevice *dev)
 
 int cros_ec_probe(struct udevice *dev)
 {
-	struct ec_state *ec = dev->priv;
-	struct cros_ec_dev *cdev = dev->uclass_priv;
+	struct ec_state *ec = dev_get_priv(dev);
+	struct cros_ec_dev *cdev = dev_get_uclass_priv(dev);
 	struct udevice *keyb_dev;
 	ofnode node;
 	int err;
diff --git a/drivers/misc/fs_loader.c b/drivers/misc/fs_loader.c
index 5ed8ab6530f..f460b1a64c8 100644
--- a/drivers/misc/fs_loader.c
+++ b/drivers/misc/fs_loader.c
@@ -161,7 +161,7 @@ static int fw_get_filesystem_firmware(struct udevice *dev)
 		else
 			ret = -ENODEV;
 	} else {
-		ret = select_fs_dev(dev->plat);
+		ret = select_fs_dev(dev_get_plat(dev));
 	}
 
 	if (ret)
@@ -228,7 +228,7 @@ static int fs_loader_of_to_plat(struct udevice *dev)
 	if (ofnode_valid(fs_loader_node)) {
 		struct device_plat *plat;
 
-		plat = dev->plat;
+		plat = dev_get_plat(dev);
 		if (!ofnode_read_u32_array(fs_loader_node,
 					  "phandlepart",
 					  phandlepart, 2)) {
@@ -250,7 +250,7 @@ static int fs_loader_probe(struct udevice *dev)
 {
 #if CONFIG_IS_ENABLED(DM) && CONFIG_IS_ENABLED(BLK)
 	int ret;
-	struct device_plat *plat = dev->plat;
+	struct device_plat *plat = dev_get_plat(dev);
 
 	if (plat->phandlepart.phandle) {
 		ofnode node = ofnode_get_by_phandle(plat->phandlepart.phandle);
diff --git a/drivers/misc/vexpress_config.c b/drivers/misc/vexpress_config.c
index 02e5b586e29..2baca48109f 100644
--- a/drivers/misc/vexpress_config.c
+++ b/drivers/misc/vexpress_config.c
@@ -109,7 +109,7 @@ static int vexpress_config_probe(struct udevice *dev)
 	if (!priv)
 		return -ENOMEM;
 
-	dev->uclass_priv = priv;
+	dev_get_uclass_priv(dev) = priv;
 	priv->addr = ofnode_get_addr(args.node);
 
 	return dev_read_u32(dev, "arm,vexpress,site", &priv->site);
diff --git a/drivers/mmc/arm_pl180_mmci.c b/drivers/mmc/arm_pl180_mmci.c
index fe406fe4ad7..b2d1b4f9aa9 100644
--- a/drivers/mmc/arm_pl180_mmci.c
+++ b/drivers/mmc/arm_pl180_mmci.c
@@ -421,7 +421,7 @@ static int arm_pl180_mmc_probe(struct udevice *dev)
 	struct arm_pl180_mmc_plat *pdata = dev_get_plat(dev);
 	struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
 	struct mmc *mmc = &pdata->mmc;
-	struct pl180_mmc_host *host = dev->priv;
+	struct pl180_mmc_host *host = dev_get_priv(dev);
 	struct mmc_config *cfg = &pdata->cfg;
 	struct clk clk;
 	u32 bus_width;
@@ -508,7 +508,7 @@ static int dm_host_set_ios(struct udevice *dev)
 
 static int dm_mmc_getcd(struct udevice *dev)
 {
-	struct pl180_mmc_host *host = dev->priv;
+	struct pl180_mmc_host *host = dev_get_priv(dev);
 	int value = 1;
 
 	if (dm_gpio_is_valid(&host->cd_gpio))
@@ -525,7 +525,7 @@ static const struct dm_mmc_ops arm_pl180_dm_mmc_ops = {
 
 static int arm_pl180_mmc_of_to_plat(struct udevice *dev)
 {
-	struct pl180_mmc_host *host = dev->priv;
+	struct pl180_mmc_host *host = dev_get_priv(dev);
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
diff --git a/drivers/mmc/mxsmmc.c b/drivers/mmc/mxsmmc.c
index 143818d4018..b3fb559a677 100644
--- a/drivers/mmc/mxsmmc.c
+++ b/drivers/mmc/mxsmmc.c
@@ -668,7 +668,7 @@ static const struct dm_mmc_ops mxsmmc_ops = {
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int mxsmmc_of_to_plat(struct udevice *bus)
 {
-	struct mxsmmc_plat *plat = bus->plat;
+	struct mxsmmc_plat *plat = dev_get_plat(bus);
 	u32 prop[2];
 	int ret;
 
diff --git a/drivers/mmc/octeontx_hsmmc.c b/drivers/mmc/octeontx_hsmmc.c
index 5552342f8d9..57d107aac32 100644
--- a/drivers/mmc/octeontx_hsmmc.c
+++ b/drivers/mmc/octeontx_hsmmc.c
@@ -30,6 +30,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/csrs/csrs-mio_emm.h>
 #include <asm/io.h>
+#include <dm/device-internal.h>
 
 #include <power/regulator.h>
 
@@ -3841,7 +3842,7 @@ static int octeontx_mmc_host_child_pre_probe(struct udevice *dev)
 	}
 
 	slot = &host->slots[bus_id];
-	dev->priv = slot;
+	dev_set_priv(dev, slot);
 	slot->host = host;
 	slot->bus_id = bus_id;
 	slot->dev = dev;
@@ -3852,16 +3853,21 @@ static int octeontx_mmc_host_child_pre_probe(struct udevice *dev)
 	snprintf(name, sizeof(name), "octeontx-mmc%d", bus_id);
 	err = device_set_name(dev, name);
 
-	if (!dev->uclass_priv) {
+	/* FIXME: This code should not be needed */
+	if (!dev_get_uclass_priv(dev)) {
 		debug("%s(%s): Allocating uclass priv\n", __func__,
 		      dev->name);
 		upriv = calloc(1, sizeof(struct mmc_uclass_priv));
 		if (!upriv)
 			return -ENOMEM;
-		dev->uclass_priv = upriv;
-		dev->uclass->priv = upriv;
+
+		/*
+		 * FIXME: This is not allowed
+		 * dev_set_uclass_priv(dev, upriv);
+		 * uclass_set_priv(dev->uclass, upriv);
+		 */
 	} else {
-		upriv = dev->uclass_priv;
+		upriv = dev_get_uclass_priv(dev);
 	}
 
 	upriv->mmc = &slot->mmc;
@@ -3878,6 +3884,7 @@ static const struct udevice_id octeontx_hsmmc_host_ids[] = {
 
 U_BOOT_DRIVER(octeontx_hsmmc_host) = {
 	.name	= "octeontx_hsmmc_host",
+	/* FIXME: Why is this not UCLASS_MMC? */
 	.id	= UCLASS_MISC,
 	.of_match = of_match_ptr(octeontx_hsmmc_host_ids),
 	.probe	= octeontx_mmc_host_probe,
diff --git a/drivers/mux/mmio.c b/drivers/mux/mmio.c
index b9868505a3b..00e0282dcc0 100644
--- a/drivers/mux/mmio.c
+++ b/drivers/mux/mmio.c
@@ -12,6 +12,7 @@
 #include <regmap.h>
 #include <syscon.h>
 #include <dm/device.h>
+#include <dm/device-internal.h>
 #include <dm/device_compat.h>
 #include <dm/read.h>
 #include <dm/devres.h>
@@ -68,7 +69,7 @@ static int mmio_mux_probe(struct udevice *dev)
 	fields = devm_kmalloc(dev, num_fields * sizeof(*fields), __GFP_ZERO);
 	if (!fields)
 		return -ENOMEM;
-	dev->priv = fields;
+	dev_set_priv(dev, fields);
 
 	mux_reg_masks = devm_kmalloc(dev, num_fields * 2 * sizeof(u32),
 				     __GFP_ZERO);
diff --git a/drivers/net/eth-phy-uclass.c b/drivers/net/eth-phy-uclass.c
index 65615f13103..07aebd935e6 100644
--- a/drivers/net/eth-phy-uclass.c
+++ b/drivers/net/eth-phy-uclass.c
@@ -54,7 +54,7 @@ int eth_phy_set_mdio_bus(struct udevice *eth_dev, struct mii_dev *mdio_bus)
 	for (uclass_first_device(UCLASS_ETH_PHY, &dev); dev;
 	     uclass_next_device(&dev)) {
 		if (dev->parent == eth_dev) {
-			uc_priv = (struct eth_phy_device_priv *)(dev->uclass_priv);
+			uc_priv = (struct eth_phy_device_priv *)(dev_get_uclass_priv(dev));
 
 			if (!uc_priv->mdio_bus)
 				uc_priv->mdio_bus = mdio_bus;
@@ -79,7 +79,7 @@ struct mii_dev *eth_phy_get_mdio_bus(struct udevice *eth_dev)
 			 * phy_dev is shared and controlled by
 			 * other eth controller
 			 */
-			uc_priv = (struct eth_phy_device_priv *)(phy_dev->uclass_priv);
+			uc_priv = (struct eth_phy_device_priv *)(dev_get_uclass_priv(phy_dev));
 			if (uc_priv->mdio_bus)
 				printf("Get shared mii bus on %s\n", eth_dev->name);
 			else
diff --git a/drivers/net/fm/eth.c b/drivers/net/fm/eth.c
index 02ccf1efc3b..a10f87eefc5 100644
--- a/drivers/net/fm/eth.c
+++ b/drivers/net/fm/eth.c
@@ -547,7 +547,11 @@ static void fm_eth_halt(struct udevice *dev)
 	struct fm_eth *fm_eth;
 	struct fsl_enet_mac *mac;
 
+#ifndef CONFIG_DM_ETH
 	fm_eth = (struct fm_eth *)dev->priv;
+#else
+	fm_eth = dev_get_priv(dev);
+#endif
 	mac = fm_eth->mac;
 
 	/* graceful stop the transmission of frames */
@@ -577,7 +581,11 @@ static int fm_eth_send(struct udevice *dev, void *buf, int len)
 	u16 offset_in;
 	int i;
 
+#ifndef CONFIG_DM_ETH
 	fm_eth = (struct fm_eth *)dev->priv;
+#else
+	fm_eth = dev_get_priv(dev);
+#endif
 	pram = fm_eth->tx_pram;
 	txbd = fm_eth->cur_txbd;
 
@@ -664,13 +672,19 @@ static int fm_eth_recv(struct eth_device *dev)
 static int fm_eth_recv(struct udevice *dev, int flags, uchar **packetp)
 #endif
 {
-	struct fm_eth *fm_eth = (struct fm_eth *)dev->priv;
-	struct fm_port_bd *rxbd = fm_eth->cur_rxbd;
+	struct fm_eth *fm_eth;
+	struct fm_port_bd *rxbd;
 	u32 buf_lo, buf_hi;
 	u16 status, len;
 	int ret = -1;
 	u8 *data;
 
+#ifndef CONFIG_DM_ETH
+	fm_eth = (struct fm_eth *)dev->priv;
+#else
+	fm_eth = dev_get_priv(dev);
+#endif
+	rxbd = fm_eth->cur_rxbd;
 	status = muram_readw(&rxbd->status);
 
 	while (!(status & RxBD_EMPTY)) {
@@ -704,7 +718,7 @@ static int fm_eth_recv(struct udevice *dev, int flags, uchar **packetp)
 #ifdef CONFIG_DM_ETH
 static int fm_eth_free_pkt(struct udevice *dev, uchar *packet, int length)
 {
-	struct fm_eth *fm_eth = (struct fm_eth *)dev->priv;
+	struct fm_eth *fm_eth = (struct fm_eth *)dev_get_priv(dev);
 
 	fm_eth->cur_rxbd = fm_eth_free_one(fm_eth, fm_eth->cur_rxbd);
 
@@ -1004,7 +1018,7 @@ static struct udevice *fm_get_internal_mdio(struct udevice *dev)
 
 static int fm_eth_probe(struct udevice *dev)
 {
-	struct fm_eth *fm_eth = (struct fm_eth *)dev->priv;
+	struct fm_eth *fm_eth = (struct fm_eth *)dev_get_priv(dev);
 	struct ofnode_phandle_args args;
 	void *reg;
 	int ret, index;
diff --git a/drivers/net/fsl_mcdmafec.c b/drivers/net/fsl_mcdmafec.c
index 0196462beb4..c36d40c9111 100644
--- a/drivers/net/fsl_mcdmafec.c
+++ b/drivers/net/fsl_mcdmafec.c
@@ -79,7 +79,7 @@ static void init_eth_info(struct fec_info_dma *info)
 
 static void fec_halt(struct udevice *dev)
 {
-	struct fec_info_dma *info = dev->priv;
+	struct fec_info_dma *info = dev_get_priv(dev);
 	volatile fecdma_t *fecp = (fecdma_t *)info->iobase;
 	int counter = 0xffff;
 
@@ -230,7 +230,7 @@ static void fec_set_hwaddr(volatile fecdma_t *fecp, u8 *mac)
 
 static int fec_init(struct udevice *dev)
 {
-	struct fec_info_dma *info = dev->priv;
+	struct fec_info_dma *info = dev_get_priv(dev);
 	volatile fecdma_t *fecp = (fecdma_t *)info->iobase;
 	int rval, i;
 	uchar enetaddr[6];
@@ -352,7 +352,7 @@ static int mcdmafec_init(struct udevice *dev)
 
 static int mcdmafec_send(struct udevice *dev, void *packet, int length)
 {
-	struct fec_info_dma *info = dev->priv;
+	struct fec_info_dma *info = dev_get_priv(dev);
 	cbd_t *p_tbd, *p_used_tbd;
 	u16 phy_status;
 
@@ -412,7 +412,7 @@ static int mcdmafec_send(struct udevice *dev, void *packet, int length)
 
 static int mcdmafec_recv(struct udevice *dev, int flags, uchar **packetp)
 {
-	struct fec_info_dma *info = dev->priv;
+	struct fec_info_dma *info = dev_get_priv(dev);
 	volatile fecdma_t *fecp = (fecdma_t *)info->iobase;
 
 	cbd_t *prbd = &info->rxbd[info->rx_idx];
@@ -496,7 +496,7 @@ static const struct eth_ops mcdmafec_ops = {
  */
 static int mcdmafec_probe(struct udevice *dev)
 {
-	struct fec_info_dma *info = dev->priv;
+	struct fec_info_dma *info = dev_get_priv(dev);
 	struct eth_pdata *pdata = dev_get_plat(dev);
 	int node = dev_of_offset(dev);
 	int retval;
diff --git a/drivers/net/mcffec.c b/drivers/net/mcffec.c
index 4fa71360cf4..cb343b446f5 100644
--- a/drivers/net/mcffec.c
+++ b/drivers/net/mcffec.c
@@ -125,7 +125,7 @@ static void set_fec_duplex_speed(volatile fec_t *fecp, int dup_spd)
 #ifdef ET_DEBUG
 static void dbg_fec_regs(struct udevice *dev)
 {
-	struct fec_info_s *info = dev->priv;
+	struct fec_info_s *info = dev_get_priv(dev);
 	volatile fec_t *fecp = (fec_t *)(info->iobase);
 
 	printf("=====\n");
@@ -275,7 +275,7 @@ static void dbg_fec_regs(struct udevice *dev)
 
 int mcffec_init(struct udevice *dev)
 {
-	struct fec_info_s *info = dev->priv;
+	struct fec_info_s *info = dev_get_priv(dev);
 	volatile fec_t *fecp = (fec_t *) (info->iobase);
 	int rval, i;
 	uchar ea[6];
@@ -374,7 +374,7 @@ int mcffec_init(struct udevice *dev)
 
 static int mcffec_send(struct udevice *dev, void *packet, int length)
 {
-	struct fec_info_s *info = dev->priv;
+	struct fec_info_s *info = dev_get_priv(dev);
 	volatile fec_t *fecp = (fec_t *)info->iobase;
 	int j, rc;
 	u16 phy_status;
@@ -440,7 +440,7 @@ static int mcffec_send(struct udevice *dev, void *packet, int length)
 
 static int mcffec_recv(struct udevice *dev, int flags, uchar **packetp)
 {
-	struct fec_info_s *info = dev->priv;
+	struct fec_info_s *info = dev_get_priv(dev);
 	volatile fec_t *fecp = (fec_t *)info->iobase;
 	int length = -1;
 
@@ -492,7 +492,7 @@ static int mcffec_recv(struct udevice *dev, int flags, uchar **packetp)
 
 static void mcffec_halt(struct udevice *dev)
 {
-	struct fec_info_s *info = dev->priv;
+	struct fec_info_s *info = dev_get_priv(dev);
 
 	fec_reset(info);
 	fecpin_setclear(info, 0);
@@ -519,7 +519,7 @@ static const struct eth_ops mcffec_ops = {
 static int mcffec_probe(struct udevice *dev)
 {
 	struct eth_pdata *pdata = dev_get_plat(dev);
-	struct fec_info_s *info = dev->priv;
+	struct fec_info_s *info = dev_get_priv(dev);
 	int node = dev_of_offset(dev);
 	int retval, fec_idx;
 	const u32 *val;
diff --git a/drivers/net/mcfmii.c b/drivers/net/mcfmii.c
index 393605512d9..ec81320a86d 100644
--- a/drivers/net/mcfmii.c
+++ b/drivers/net/mcfmii.c
@@ -100,7 +100,11 @@ uint mii_send(uint mii_cmd)
 
 	/* retrieve from register structure */
 	dev = eth_get_dev();
+#ifdef CONFIG_DM_ETH
+	info = dev_get_priv(dev);
+#else
 	info = dev->priv;
+#endif
 
 	ep = (FEC_T *) info->miibase;
 
@@ -216,7 +220,11 @@ void __mii_init(void)
 
 	/* retrieve from register structure */
 	dev = eth_get_dev();
+#ifdef CONFIG_DM_ETH
+	info = dev_get_priv(dev);
+#else
 	info = dev->priv;
+#endif
 
 	fecp = (FEC_T *) info->miibase;
 
diff --git a/drivers/net/pfe_eth/pfe_eth.c b/drivers/net/pfe_eth/pfe_eth.c
index 3d145711147..0c27a668b59 100644
--- a/drivers/net/pfe_eth/pfe_eth.c
+++ b/drivers/net/pfe_eth/pfe_eth.c
@@ -157,7 +157,7 @@ static int pfe_eth_start(struct udevice *dev)
 
 static int pfe_eth_send(struct udevice *dev, void *packet, int length)
 {
-	struct pfe_eth_dev *priv = (struct pfe_eth_dev *)dev->priv;
+	struct pfe_eth_dev *priv = (struct pfe_eth_dev *)dev_get_priv(dev);
 
 	int rc;
 	int i = 0;
diff --git a/drivers/net/sunxi_emac.c b/drivers/net/sunxi_emac.c
index 7c6ae3cb814..17ad88e732e 100644
--- a/drivers/net/sunxi_emac.c
+++ b/drivers/net/sunxi_emac.c
@@ -537,7 +537,7 @@ static int sunxi_emac_eth_start(struct udevice *dev)
 {
 	struct eth_pdata *pdata = dev_get_plat(dev);
 
-	return _sunxi_emac_eth_init(dev->priv, pdata->enetaddr);
+	return _sunxi_emac_eth_init(dev_get_priv(dev), pdata->enetaddr);
 }
 
 static int sunxi_emac_eth_send(struct udevice *dev, void *packet, int length)
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c
index 2271eb82516..2d124732cf0 100644
--- a/drivers/net/tsec.c
+++ b/drivers/net/tsec.c
@@ -131,11 +131,17 @@ static int tsec_mcast_addr(struct eth_device *dev, const u8 *mcast_mac,
 static int tsec_mcast_addr(struct udevice *dev, const u8 *mcast_mac, int join)
 #endif
 {
-	struct tsec_private *priv = (struct tsec_private *)dev->priv;
-	struct tsec __iomem *regs = priv->regs;
+	struct tsec_private *priv;
+	struct tsec __iomem *regs;
 	u32 result, value;
 	u8 whichbit, whichreg;
 
+#ifndef CONFIG_DM_ETH
+	priv = (struct tsec_private *)dev->priv;
+#else
+	priv = dev_get_priv(dev);
+#endif
+	regs = priv->regs;
 	result = ether_crc(MAC_ADDR_LEN, mcast_mac);
 	whichbit = (result >> 24) & 0x1f; /* the 5 LSB = which bit to set */
 	whichreg = result >> 29; /* the 3 MSB = which reg to set it in */
@@ -260,12 +266,18 @@ static int tsec_send(struct eth_device *dev, void *packet, int length)
 static int tsec_send(struct udevice *dev, void *packet, int length)
 #endif
 {
-	struct tsec_private *priv = (struct tsec_private *)dev->priv;
-	struct tsec __iomem *regs = priv->regs;
+	struct tsec_private *priv;
+	struct tsec __iomem *regs;
 	int result = 0;
 	u16 status;
 	int i;
 
+#ifndef CONFIG_DM_ETH
+	priv = (struct tsec_private *)dev->priv;
+#else
+	priv = dev_get_priv(dev);
+#endif
+	regs = priv->regs;
 	/* Find an empty buffer descriptor */
 	for (i = 0;
 	     in_be16(&priv->txbd[priv->tx_idx].status) & TXBD_READY;
@@ -339,7 +351,7 @@ static int tsec_recv(struct eth_device *dev)
 #else
 static int tsec_recv(struct udevice *dev, int flags, uchar **packetp)
 {
-	struct tsec_private *priv = (struct tsec_private *)dev->priv;
+	struct tsec_private *priv = (struct tsec_private *)dev_get_priv(dev);
 	struct tsec __iomem *regs = priv->regs;
 	int ret = -1;
 
@@ -368,7 +380,7 @@ static int tsec_recv(struct udevice *dev, int flags, uchar **packetp)
 
 static int tsec_free_pkt(struct udevice *dev, uchar *packet, int length)
 {
-	struct tsec_private *priv = (struct tsec_private *)dev->priv;
+	struct tsec_private *priv = (struct tsec_private *)dev_get_priv(dev);
 	u16 status;
 
 	out_be16(&priv->rxbd[priv->rx_idx].length, 0);
@@ -392,8 +404,14 @@ static void tsec_halt(struct eth_device *dev)
 static void tsec_halt(struct udevice *dev)
 #endif
 {
-	struct tsec_private *priv = (struct tsec_private *)dev->priv;
-	struct tsec __iomem *regs = priv->regs;
+	struct tsec_private *priv;
+	struct tsec __iomem *regs;
+#ifndef CONFIG_DM_ETH
+	priv = (struct tsec_private *)dev->priv;
+#else
+	priv = dev_get_priv(dev);
+#endif
+	regs = priv->regs;
 
 	clrbits_be32(&regs->dmactrl, DMACTRL_GRS | DMACTRL_GTS);
 	setbits_be32(&regs->dmactrl, DMACTRL_GRS | DMACTRL_GTS);
@@ -560,16 +578,22 @@ static int tsec_init(struct eth_device *dev, struct bd_info *bd)
 static int tsec_init(struct udevice *dev)
 #endif
 {
-	struct tsec_private *priv = (struct tsec_private *)dev->priv;
+	struct tsec_private *priv;
+	struct tsec __iomem *regs;
 #ifdef CONFIG_DM_ETH
 	struct eth_pdata *pdata = dev_get_plat(dev);
 #else
 	struct eth_device *pdata = dev;
 #endif
-	struct tsec __iomem *regs = priv->regs;
 	u32 tempval;
 	int ret;
 
+#ifndef CONFIG_DM_ETH
+	priv = (struct tsec_private *)dev->priv;
+#else
+	priv = dev_get_priv(dev);
+#endif
+	regs = priv->regs;
 	/* Make sure the controller is stopped */
 	tsec_halt(dev);
 
@@ -865,7 +889,7 @@ int tsec_probe(struct udevice *dev)
 
 int tsec_remove(struct udevice *dev)
 {
-	struct tsec_private *priv = dev->priv;
+	struct tsec_private *priv = dev_get_priv(dev);
 
 	free(priv->phydev);
 	mdio_unregister(priv->bus);
diff --git a/drivers/net/xilinx_emaclite.c b/drivers/net/xilinx_emaclite.c
index 5c768875199..6b447537f66 100644
--- a/drivers/net/xilinx_emaclite.c
+++ b/drivers/net/xilinx_emaclite.c
@@ -457,7 +457,7 @@ static int emaclite_recv(struct udevice *dev, int flags, uchar **packetp)
 {
 	u32 length, first_read, reg, attempt = 0;
 	void *addr, *ack;
-	struct xemaclite *emaclite = dev->priv;
+	struct xemaclite *emaclite = dev_get_priv(dev);
 	struct emaclite_regs *regs = emaclite->regs;
 	struct ethernet_hdr *eth;
 	struct ip_udp_hdr *ip;
diff --git a/drivers/pci/pci-emul-uclass.c b/drivers/pci/pci-emul-uclass.c
index 756d8ad7449..a0b8afb87a0 100644
--- a/drivers/pci/pci-emul-uclass.c
+++ b/drivers/pci/pci-emul-uclass.c
@@ -82,7 +82,7 @@ uint sandbox_pci_read_bar(u32 barval, int type, uint size)
 
 static int sandbox_pci_emul_post_probe(struct udevice *dev)
 {
-	struct sandbox_pci_emul_priv *priv = dev->uclass->priv;
+	struct sandbox_pci_emul_priv *priv = uclass_get_priv(dev->uclass);
 
 	priv->dev_count++;
 	sandbox_set_enable_pci_map(true);
@@ -92,7 +92,7 @@ static int sandbox_pci_emul_post_probe(struct udevice *dev)
 
 static int sandbox_pci_emul_pre_remove(struct udevice *dev)
 {
-	struct sandbox_pci_emul_priv *priv = dev->uclass->priv;
+	struct sandbox_pci_emul_priv *priv = uclass_get_priv(dev->uclass);
 
 	priv->dev_count--;
 	sandbox_set_enable_pci_map(priv->dev_count > 0);
diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
index 914217d0c9a..37a233878d0 100644
--- a/drivers/pci/pci-uclass.c
+++ b/drivers/pci/pci-uclass.c
@@ -524,7 +524,7 @@ static void set_vga_bridge_bits(struct udevice *dev)
 
 int pci_auto_config_devices(struct udevice *bus)
 {
-	struct pci_controller *hose = bus->uclass_priv;
+	struct pci_controller *hose = dev_get_uclass_priv(bus);
 	struct pci_child_plat *pplat;
 	unsigned int sub_bus;
 	struct udevice *dev;
@@ -1007,7 +1007,7 @@ static int pci_uclass_pre_probe(struct udevice *bus)
 
 	debug("%s, bus=%d/%s, parent=%s\n", __func__, dev_seq(bus), bus->name,
 	      bus->parent->name);
-	hose = bus->uclass_priv;
+	hose = dev_get_uclass_priv(bus);
 
 	/*
 	 * Set the sequence number, if device_bind() doesn't. We want control
@@ -1109,7 +1109,7 @@ static int pci_bridge_read_config(const struct udevice *bus, pci_dev_t bdf,
 				  uint offset, ulong *valuep,
 				  enum pci_size_t size)
 {
-	struct pci_controller *hose = bus->uclass_priv;
+	struct pci_controller *hose = dev_get_uclass_priv(bus);
 
 	return pci_bus_read_config(hose->ctlr, bdf, offset, valuep, size);
 }
@@ -1118,7 +1118,7 @@ static int pci_bridge_write_config(struct udevice *bus, pci_dev_t bdf,
 				   uint offset, ulong value,
 				   enum pci_size_t size)
 {
-	struct pci_controller *hose = bus->uclass_priv;
+	struct pci_controller *hose = dev_get_uclass_priv(bus);
 
 	return pci_bus_write_config(hose->ctlr, bdf, offset, value, size);
 }
diff --git a/drivers/pinctrl/pinctrl-qe-io.c b/drivers/pinctrl/pinctrl-qe-io.c
index 690e5c77062..e129ab2f831 100644
--- a/drivers/pinctrl/pinctrl-qe-io.c
+++ b/drivers/pinctrl/pinctrl-qe-io.c
@@ -122,7 +122,7 @@ void qe_config_iopin(u8 port, u8 pin, int dir, int open_drain, int assign)
 #else
 static int qe_io_of_to_plat(struct udevice *dev)
 {
-	struct qe_io_plat *plat = dev->plat;
+	struct qe_io_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
@@ -143,7 +143,7 @@ static int qe_io_of_to_plat(struct udevice *dev)
  */
 static int par_io_of_config_node(struct udevice *dev, ofnode pio)
 {
-	struct qe_io_plat *plat = dev->plat;
+	struct qe_io_plat *plat = dev_get_plat(dev);
 	qepio83xx_t *par_io = plat->base;
 	const unsigned int *pio_map;
 	int pio_map_len;
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index 25d646a26f7..20c3c82aa98 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -47,7 +47,7 @@ static int single_configure_pins(struct udevice *dev,
 				 const struct single_fdt_pin_cfg *pins,
 				 int size)
 {
-	struct single_pdata *pdata = dev->plat;
+	struct single_pdata *pdata = dev_get_plat(dev);
 	int count = size / sizeof(struct single_fdt_pin_cfg);
 	phys_addr_t n, reg;
 	u32 val;
@@ -81,7 +81,7 @@ static int single_configure_bits(struct udevice *dev,
 				 const struct single_fdt_bits_cfg *pins,
 				 int size)
 {
-	struct single_pdata *pdata = dev->plat;
+	struct single_pdata *pdata = dev_get_plat(dev);
 	int count = size / sizeof(struct single_fdt_bits_cfg);
 	phys_addr_t n, reg;
 	u32 val, mask;
@@ -153,7 +153,7 @@ static int single_of_to_plat(struct udevice *dev)
 	fdt_addr_t addr;
 	u32 of_reg[2];
 	int res;
-	struct single_pdata *pdata = dev->plat;
+	struct single_pdata *pdata = dev_get_plat(dev);
 
 	pdata->width =
 		dev_read_u32_default(dev, "pinctrl-single,register-width", 0);
diff --git a/drivers/power/regulator/da9063.c b/drivers/power/regulator/da9063.c
index 32be59e49e9..8df1abcf788 100644
--- a/drivers/power/regulator/da9063.c
+++ b/drivers/power/regulator/da9063.c
@@ -135,7 +135,7 @@ static const struct da9063_reg_info da9063_buck_info[] = {
 
 static int da9063_get_enable(struct udevice *dev)
 {
-	const struct da9063_priv *priv = dev->priv;
+	const struct da9063_priv *priv = dev_get_priv(dev);
 	const struct da9063_reg_info *info = priv->reg_info;
 	int ret;
 
@@ -148,7 +148,7 @@ static int da9063_get_enable(struct udevice *dev)
 
 static int da9063_set_enable(struct udevice *dev, bool enable)
 {
-	const struct da9063_priv *priv = dev->priv;
+	const struct da9063_priv *priv = dev_get_priv(dev);
 	const struct da9063_reg_info *info = priv->reg_info;
 
 	return pmic_clrsetbits(dev->parent, info->en_reg,
@@ -157,7 +157,7 @@ static int da9063_set_enable(struct udevice *dev, bool enable)
 
 static int da9063_get_voltage(struct udevice *dev)
 {
-	const struct da9063_priv *priv = dev->priv;
+	const struct da9063_priv *priv = dev_get_priv(dev);
 	const struct da9063_reg_info *info = priv->reg_info;
 	int ret;
 
@@ -170,7 +170,7 @@ static int da9063_get_voltage(struct udevice *dev)
 
 static int da9063_set_voltage(struct udevice *dev, int uV)
 {
-	const struct da9063_priv *priv = dev->priv;
+	const struct da9063_priv *priv = dev_get_priv(dev);
 	const struct da9063_reg_info *info = priv->reg_info;
 	uint sel;
 
@@ -198,7 +198,7 @@ static const struct dm_regulator_mode
 
 static int ldo_get_mode(struct udevice *dev)
 {
-	const struct da9063_priv *priv = dev->priv;
+	const struct da9063_priv *priv = dev_get_priv(dev);
 	const struct da9063_reg_info *info = priv->reg_info;
 	int val;
 
@@ -214,7 +214,7 @@ static int ldo_get_mode(struct udevice *dev)
 
 static int ldo_set_mode(struct udevice *dev, int mode_id)
 {
-	const struct da9063_priv *priv = dev->priv;
+	const struct da9063_priv *priv = dev_get_priv(dev);
 	const struct da9063_reg_info *info = priv->reg_info;
 	const struct dm_regulator_mode *mode;
 
@@ -230,7 +230,7 @@ static int ldo_set_mode(struct udevice *dev, int mode_id)
 
 static int buck_get_mode(struct udevice *dev)
 {
-	const struct da9063_priv *priv = dev->priv;
+	const struct da9063_priv *priv = dev_get_priv(dev);
 	const struct da9063_reg_info *info = priv->reg_info;
 	int i;
 	int val;
@@ -261,7 +261,7 @@ static int buck_get_mode(struct udevice *dev)
 
 static int buck_set_mode(struct udevice *dev, int mode_id)
 {
-	const struct da9063_priv *priv = dev->priv;
+	const struct da9063_priv *priv = dev_get_priv(dev);
 	const struct da9063_reg_info *info = priv->reg_info;
 	const struct dm_regulator_mode *mode;
 
@@ -277,7 +277,7 @@ static int buck_set_mode(struct udevice *dev, int mode_id)
 
 static int buck_get_current_limit(struct udevice *dev)
 {
-	const struct da9063_priv *priv = dev->priv;
+	const struct da9063_priv *priv = dev_get_priv(dev);
 	const struct da9063_reg_info *info = priv->reg_info;
 	int val;
 
@@ -293,7 +293,7 @@ static int buck_get_current_limit(struct udevice *dev)
 
 static int buck_set_current_limit(struct udevice *dev, int uA)
 {
-	const struct da9063_priv *priv = dev->priv;
+	const struct da9063_priv *priv = dev_get_priv(dev);
 	const struct da9063_reg_info *info = priv->reg_info;
 	int val;
 
@@ -310,7 +310,7 @@ static int buck_set_current_limit(struct udevice *dev, int uA)
 static int da9063_ldo_probe(struct udevice *dev)
 {
 	struct dm_regulator_uclass_plat *uc_pdata;
-	struct da9063_priv *priv = dev->priv;
+	struct da9063_priv *priv = dev_get_priv(dev);
 
 	/* LDOs are named numerically in DT so can directly index */
 	if (dev->driver_data < 1 ||
@@ -329,7 +329,7 @@ static int da9063_ldo_probe(struct udevice *dev)
 static int da9063_buck_probe(struct udevice *dev)
 {
 	struct dm_regulator_uclass_plat *uc_pdata;
-	struct da9063_priv *priv = dev->priv;
+	struct da9063_priv *priv = dev_get_priv(dev);
 	int i;
 
 	/* Bucks have names rather than numbers so need to match with DT */
diff --git a/drivers/power/regulator/pbias_regulator.c b/drivers/power/regulator/pbias_regulator.c
index c3df156749f..6f0d0a59ff4 100644
--- a/drivers/power/regulator/pbias_regulator.c
+++ b/drivers/power/regulator/pbias_regulator.c
@@ -16,6 +16,7 @@
 #include <syscon.h>
 #include <linux/bitops.h>
 #include <linux/ioport.h>
+#include <dm/device-internal.h>
 #include <dm/read.h>
 #ifdef CONFIG_MMC_OMAP36XX_PINS
 #include <asm/arch/sys_proto.h>
@@ -208,7 +209,7 @@ static int pbias_regulator_probe(struct udevice *dev)
 	}
 
 	uc_pdata->type = REGULATOR_TYPE_OTHER;
-	dev->priv = (void *)*p;
+	dev_set_priv(dev, (void *)*p);
 
 	return 0;
 }
diff --git a/drivers/remoteproc/rproc-uclass.c b/drivers/remoteproc/rproc-uclass.c
index ccc910e7c74..773b8119f4f 100644
--- a/drivers/remoteproc/rproc-uclass.c
+++ b/drivers/remoteproc/rproc-uclass.c
@@ -115,7 +115,7 @@ static int rproc_pre_probe(struct udevice *dev)
 
 	/* See if we need to populate via fdt */
 
-	if (!dev->plat) {
+	if (!dev_get_plat(dev)) {
 #if CONFIG_IS_ENABLED(OF_CONTROL)
 		int node = dev_of_offset(dev);
 		const void *blob = gd->fdt_blob;
@@ -140,7 +140,7 @@ static int rproc_pre_probe(struct udevice *dev)
 #endif
 
 	} else {
-		struct dm_rproc_uclass_pdata *pdata = dev->plat;
+		struct dm_rproc_uclass_pdata *pdata = dev_get_plat(dev);
 
 		debug("'%s': using legacy data\n", dev->name);
 		if (pdata->name)
diff --git a/drivers/reset/reset-mediatek.c b/drivers/reset/reset-mediatek.c
index b97a21f6717..7427013ab60 100644
--- a/drivers/reset/reset-mediatek.c
+++ b/drivers/reset/reset-mediatek.c
@@ -14,6 +14,7 @@
 #include <regmap.h>
 #include <reset-uclass.h>
 #include <syscon.h>
+#include <dm/device-internal.h>
 #include <linux/bitops.h>
 #include <linux/err.h>
 
@@ -92,7 +93,7 @@ int mediatek_reset_bind(struct udevice *pdev, u32 regofs, u32 num_regs)
 	priv = malloc(sizeof(struct mediatek_reset_priv));
 	priv->regofs = regofs;
 	priv->nr_resets = num_regs * 32;
-	rst_dev->priv = priv;
+	dev_set_priv(rst_dev, priv);
 
 	return 0;
 }
diff --git a/drivers/reset/reset-rockchip.c b/drivers/reset/reset-rockchip.c
index e5e9918c0c1..eeb3d2eea77 100644
--- a/drivers/reset/reset-rockchip.c
+++ b/drivers/reset/reset-rockchip.c
@@ -11,6 +11,7 @@
 #include <linux/bitops.h>
 #include <linux/io.h>
 #include <asm/arch-rockchip/hardware.h>
+#include <dm/device-internal.h>
 #include <dm/lists.h>
 /*
  * Each reg has 16 bits reset signal for devices
@@ -121,7 +122,7 @@ int rockchip_reset_bind(struct udevice *pdev, u32 reg_offset, u32 reg_number)
 	priv = malloc(sizeof(struct rockchip_reset_priv));
 	priv->reset_reg_offset = reg_offset;
 	priv->reset_reg_num = reg_number;
-	rst_dev->priv = priv;
+	dev_set_priv(rst_dev, priv);
 
 	return 0;
 }
diff --git a/drivers/reset/reset-sifive.c b/drivers/reset/reset-sifive.c
index f6110d85f9f..eec840d677f 100644
--- a/drivers/reset/reset-sifive.c
+++ b/drivers/reset/reset-sifive.c
@@ -9,6 +9,7 @@
 #include <reset-uclass.h>
 #include <asm/io.h>
 #include <dm/device_compat.h>
+#include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <linux/bitops.h>
 
@@ -97,7 +98,7 @@ int sifive_reset_bind(struct udevice *dev, ulong count)
 	}
 	priv = malloc(sizeof(struct sifive_reset_priv));
 	priv->nr_reset = count;
-	rst_dev->priv = priv;
+	dev_set_priv(rst_dev, priv);
 
 	return 0;
 }
diff --git a/drivers/reset/reset-sunxi.c b/drivers/reset/reset-sunxi.c
index 1db321ce1fd..264337ed803 100644
--- a/drivers/reset/reset-sunxi.c
+++ b/drivers/reset/reset-sunxi.c
@@ -11,6 +11,7 @@
 #include <malloc.h>
 #include <reset-uclass.h>
 #include <asm/io.h>
+#include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <linux/bitops.h>
 #include <linux/log2.h>
@@ -113,7 +114,7 @@ int sunxi_reset_bind(struct udevice *dev, ulong count)
 	priv = malloc(sizeof(struct sunxi_reset_priv));
 	priv->count = count;
 	priv->desc = (const struct ccu_desc *)dev_get_driver_data(dev);
-	rst_dev->priv = priv;
+	dev_set_priv(rst_dev, priv);
 
 	return 0;
 }
diff --git a/drivers/serial/altera_jtag_uart.c b/drivers/serial/altera_jtag_uart.c
index 0d3ccd880ca..4435fcf56b9 100644
--- a/drivers/serial/altera_jtag_uart.c
+++ b/drivers/serial/altera_jtag_uart.c
@@ -37,7 +37,7 @@ static int altera_jtaguart_setbrg(struct udevice *dev, int baudrate)
 
 static int altera_jtaguart_putc(struct udevice *dev, const char ch)
 {
-	struct altera_jtaguart_plat *plat = dev->plat;
+	struct altera_jtaguart_plat *plat = dev_get_plat(dev);
 	struct altera_jtaguart_regs *const regs = plat->regs;
 	u32 st = readl(&regs->control);
 
@@ -56,7 +56,7 @@ static int altera_jtaguart_putc(struct udevice *dev, const char ch)
 
 static int altera_jtaguart_pending(struct udevice *dev, bool input)
 {
-	struct altera_jtaguart_plat *plat = dev->plat;
+	struct altera_jtaguart_plat *plat = dev_get_plat(dev);
 	struct altera_jtaguart_regs *const regs = plat->regs;
 	u32 st = readl(&regs->control);
 
@@ -68,7 +68,7 @@ static int altera_jtaguart_pending(struct udevice *dev, bool input)
 
 static int altera_jtaguart_getc(struct udevice *dev)
 {
-	struct altera_jtaguart_plat *plat = dev->plat;
+	struct altera_jtaguart_plat *plat = dev_get_plat(dev);
 	struct altera_jtaguart_regs *const regs = plat->regs;
 	u32 val;
 
@@ -83,7 +83,7 @@ static int altera_jtaguart_getc(struct udevice *dev)
 static int altera_jtaguart_probe(struct udevice *dev)
 {
 #ifdef CONFIG_ALTERA_JTAG_UART_BYPASS
-	struct altera_jtaguart_plat *plat = dev->plat;
+	struct altera_jtaguart_plat *plat = dev_get_plat(dev);
 	struct altera_jtaguart_regs *const regs = plat->regs;
 
 	writel(ALTERA_JTAG_AC, &regs->control); /* clear AC flag */
diff --git a/drivers/serial/altera_uart.c b/drivers/serial/altera_uart.c
index a3efa1ee1b5..b18be6e2454 100644
--- a/drivers/serial/altera_uart.c
+++ b/drivers/serial/altera_uart.c
@@ -32,7 +32,7 @@ struct altera_uart_plat {
 
 static int altera_uart_setbrg(struct udevice *dev, int baudrate)
 {
-	struct altera_uart_plat *plat = dev->plat;
+	struct altera_uart_plat *plat = dev_get_plat(dev);
 	struct altera_uart_regs *const regs = plat->regs;
 	u32 div;
 
@@ -44,7 +44,7 @@ static int altera_uart_setbrg(struct udevice *dev, int baudrate)
 
 static int altera_uart_putc(struct udevice *dev, const char ch)
 {
-	struct altera_uart_plat *plat = dev->plat;
+	struct altera_uart_plat *plat = dev_get_plat(dev);
 	struct altera_uart_regs *const regs = plat->regs;
 
 	if (!(readl(&regs->status) & ALTERA_UART_TRDY))
@@ -57,7 +57,7 @@ static int altera_uart_putc(struct udevice *dev, const char ch)
 
 static int altera_uart_pending(struct udevice *dev, bool input)
 {
-	struct altera_uart_plat *plat = dev->plat;
+	struct altera_uart_plat *plat = dev_get_plat(dev);
 	struct altera_uart_regs *const regs = plat->regs;
 	u32 st = readl(&regs->status);
 
@@ -69,7 +69,7 @@ static int altera_uart_pending(struct udevice *dev, bool input)
 
 static int altera_uart_getc(struct udevice *dev)
 {
-	struct altera_uart_plat *plat = dev->plat;
+	struct altera_uart_plat *plat = dev_get_plat(dev);
 	struct altera_uart_regs *const regs = plat->regs;
 
 	if (!(readl(&regs->status) & ALTERA_UART_RRDY))
diff --git a/drivers/serial/atmel_usart.c b/drivers/serial/atmel_usart.c
index 7eabf76d92e..7edec23e648 100644
--- a/drivers/serial/atmel_usart.c
+++ b/drivers/serial/atmel_usart.c
@@ -262,7 +262,7 @@ static int atmel_serial_enable_clk(struct udevice *dev)
 
 static int atmel_serial_probe(struct udevice *dev)
 {
-	struct atmel_serial_plat *plat = dev->plat;
+	struct atmel_serial_plat *plat = dev_get_plat(dev);
 	struct atmel_serial_priv *priv = dev_get_priv(dev);
 	int ret;
 #if CONFIG_IS_ENABLED(OF_CONTROL)
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index 17808fb70a5..508c134b94f 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -498,7 +498,7 @@ static int ns16550_serial_assign_base(struct ns16550_plat *plat, ulong base)
 
 int ns16550_serial_probe(struct udevice *dev)
 {
-	struct ns16550_plat *plat = dev->plat;
+	struct ns16550_plat *plat = dev_get_plat(dev);
 	struct ns16550 *const com_port = dev_get_priv(dev);
 	struct reset_ctl_bulk reset_bulk;
 	fdt_addr_t addr;
@@ -535,7 +535,7 @@ enum {
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 int ns16550_serial_of_to_plat(struct udevice *dev)
 {
-	struct ns16550_plat *plat = dev->plat;
+	struct ns16550_plat *plat = dev_get_plat(dev);
 	const u32 port_type = dev_get_driver_data(dev);
 	fdt_addr_t addr;
 	struct clk clk;
diff --git a/drivers/serial/sandbox.c b/drivers/serial/sandbox.c
index c7d5390b435..a05c56458b0 100644
--- a/drivers/serial/sandbox.c
+++ b/drivers/serial/sandbox.c
@@ -72,7 +72,7 @@ static int sandbox_serial_probe(struct udevice *dev)
 
 static int sandbox_serial_remove(struct udevice *dev)
 {
-	struct sandbox_serial_plat *plat = dev->plat;
+	struct sandbox_serial_plat *plat = dev_get_plat(dev);
 
 	if (plat->colour != -1)
 		output_ansi_reset();
@@ -83,7 +83,7 @@ static int sandbox_serial_remove(struct udevice *dev)
 static int sandbox_serial_putc(struct udevice *dev, const char ch)
 {
 	struct sandbox_serial_priv *priv = dev_get_priv(dev);
-	struct sandbox_serial_plat *plat = dev->plat;
+	struct sandbox_serial_plat *plat = dev_get_plat(dev);
 
 	/* With of-platdata we don't real the colour correctly, so disable it */
 	if (!CONFIG_IS_ENABLED(OF_PLATDATA) && priv->start_of_line &&
@@ -203,7 +203,7 @@ static const char * const ansi_colour[] = {
 
 static int sandbox_serial_of_to_plat(struct udevice *dev)
 {
-	struct sandbox_serial_plat *plat = dev->plat;
+	struct sandbox_serial_plat *plat = dev_get_plat(dev);
 	const char *colour;
 	int i;
 
diff --git a/drivers/serial/serial_arc.c b/drivers/serial/serial_arc.c
index 022e37748c8..445eacc8aac 100644
--- a/drivers/serial/serial_arc.c
+++ b/drivers/serial/serial_arc.c
@@ -37,7 +37,7 @@ struct arc_serial_plat {
 
 static int arc_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct arc_serial_plat *plat = dev->plat;
+	struct arc_serial_plat *plat = dev_get_plat(dev);
 	struct arc_serial_regs *const regs = plat->reg;
 	int arc_console_baud = gd->cpu_clk / (baudrate * 4) - 1;
 
@@ -49,7 +49,7 @@ static int arc_serial_setbrg(struct udevice *dev, int baudrate)
 
 static int arc_serial_putc(struct udevice *dev, const char c)
 {
-	struct arc_serial_plat *plat = dev->plat;
+	struct arc_serial_plat *plat = dev_get_plat(dev);
 	struct arc_serial_regs *const regs = plat->reg;
 
 	while (!(readb(&regs->status) & UART_TXEMPTY))
@@ -67,7 +67,7 @@ static int arc_serial_tstc(struct arc_serial_regs *const regs)
 
 static int arc_serial_pending(struct udevice *dev, bool input)
 {
-	struct arc_serial_plat *plat = dev->plat;
+	struct arc_serial_plat *plat = dev_get_plat(dev);
 	struct arc_serial_regs *const regs = plat->reg;
 	uint32_t status = readb(&regs->status);
 
@@ -79,7 +79,7 @@ static int arc_serial_pending(struct udevice *dev, bool input)
 
 static int arc_serial_getc(struct udevice *dev)
 {
-	struct arc_serial_plat *plat = dev->plat;
+	struct arc_serial_plat *plat = dev_get_plat(dev);
 	struct arc_serial_regs *const regs = plat->reg;
 
 	while (!arc_serial_tstc(regs))
diff --git a/drivers/serial/serial_linflexuart.c b/drivers/serial/serial_linflexuart.c
index ced005706ae..c3714e1e1ec 100644
--- a/drivers/serial/serial_linflexuart.c
+++ b/drivers/serial/serial_linflexuart.c
@@ -168,7 +168,7 @@ static void linflex_serial_init_internal(struct linflex_fsl *lfuart)
 
 static int linflex_serial_probe(struct udevice *dev)
 {
-	struct linflex_serial_plat *plat = dev->plat;
+	struct linflex_serial_plat *plat = dev_get_plat(dev);
 	struct linflex_serial_priv *priv = dev_get_priv(dev);
 
 	priv->lfuart = (struct linflex_fsl *)plat->base_addr;
diff --git a/drivers/serial/serial_lpuart.c b/drivers/serial/serial_lpuart.c
index 5beb5f2ce64..a35e5be303f 100644
--- a/drivers/serial/serial_lpuart.c
+++ b/drivers/serial/serial_lpuart.c
@@ -138,7 +138,7 @@ static inline int get_lpuart_clk_rate(struct udevice *dev, u32 *clk)
 
 static bool is_lpuart32(struct udevice *dev)
 {
-	struct lpuart_serial_plat *plat = dev->plat;
+	struct lpuart_serial_plat *plat = dev_get_plat(dev);
 
 	return plat->flags & LPUART_FLAG_REGMAP_32BIT_REG;
 }
@@ -445,7 +445,7 @@ static int lpuart_serial_setbrg(struct udevice *dev, int baudrate)
 
 static int lpuart_serial_getc(struct udevice *dev)
 {
-	struct lpuart_serial_plat *plat = dev->plat;
+	struct lpuart_serial_plat *plat = dev_get_plat(dev);
 
 	if (is_lpuart32(dev))
 		return _lpuart32_serial_getc(plat);
@@ -455,7 +455,7 @@ static int lpuart_serial_getc(struct udevice *dev)
 
 static int lpuart_serial_putc(struct udevice *dev, const char c)
 {
-	struct lpuart_serial_plat *plat = dev->plat;
+	struct lpuart_serial_plat *plat = dev_get_plat(dev);
 
 	if (is_lpuart32(dev))
 		_lpuart32_serial_putc(plat, c);
@@ -467,7 +467,7 @@ static int lpuart_serial_putc(struct udevice *dev, const char c)
 
 static int lpuart_serial_pending(struct udevice *dev, bool input)
 {
-	struct lpuart_serial_plat *plat = dev->plat;
+	struct lpuart_serial_plat *plat = dev_get_plat(dev);
 	struct lpuart_fsl *reg = plat->reg;
 	struct lpuart_fsl_reg32 *reg32 = plat->reg;
 	u32 stat;
@@ -513,7 +513,7 @@ static int lpuart_serial_probe(struct udevice *dev)
 
 static int lpuart_serial_of_to_plat(struct udevice *dev)
 {
-	struct lpuart_serial_plat *plat = dev->plat;
+	struct lpuart_serial_plat *plat = dev_get_plat(dev);
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(dev);
 	fdt_addr_t addr;
diff --git a/drivers/serial/serial_mcf.c b/drivers/serial/serial_mcf.c
index 4ba6dc32f92..e6e21b2ce8c 100644
--- a/drivers/serial/serial_mcf.c
+++ b/drivers/serial/serial_mcf.c
@@ -83,7 +83,7 @@ static void mcf_serial_setbrg_common(uart_t *uart, int baudrate)
 
 static int coldfire_serial_probe(struct udevice *dev)
 {
-	struct coldfire_serial_plat *plat = dev->plat;
+	struct coldfire_serial_plat *plat = dev_get_plat(dev);
 
 	plat->port = dev_seq(dev);
 
@@ -93,7 +93,7 @@ static int coldfire_serial_probe(struct udevice *dev)
 
 static int coldfire_serial_putc(struct udevice *dev, const char ch)
 {
-	struct coldfire_serial_plat *plat = dev->plat;
+	struct coldfire_serial_plat *plat = dev_get_plat(dev);
 	uart_t *uart = (uart_t *)plat->base;
 
 	/* Wait for last character to go. */
@@ -107,7 +107,7 @@ static int coldfire_serial_putc(struct udevice *dev, const char ch)
 
 static int coldfire_serial_getc(struct udevice *dev)
 {
-	struct coldfire_serial_plat *plat = dev->plat;
+	struct coldfire_serial_plat *plat = dev_get_plat(dev);
 	uart_t *uart = (uart_t *)(plat->base);
 
 	/* Wait for a character to arrive. */
@@ -119,7 +119,7 @@ static int coldfire_serial_getc(struct udevice *dev)
 
 int coldfire_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct coldfire_serial_plat *plat = dev->plat;
+	struct coldfire_serial_plat *plat = dev_get_plat(dev);
 	uart_t *uart = (uart_t *)(plat->base);
 
 	mcf_serial_setbrg_common(uart, baudrate);
@@ -129,7 +129,7 @@ int coldfire_serial_setbrg(struct udevice *dev, int baudrate)
 
 static int coldfire_serial_pending(struct udevice *dev, bool input)
 {
-	struct coldfire_serial_plat *plat = dev->plat;
+	struct coldfire_serial_plat *plat = dev_get_plat(dev);
 	uart_t *uart = (uart_t *)(plat->base);
 
 	if (input)
diff --git a/drivers/serial/serial_meson.c b/drivers/serial/serial_meson.c
index 40d9bfe7c6f..d69ec221e45 100644
--- a/drivers/serial/serial_meson.c
+++ b/drivers/serial/serial_meson.c
@@ -57,7 +57,7 @@ static void meson_serial_init(struct meson_uart *uart)
 
 static int meson_serial_probe(struct udevice *dev)
 {
-	struct meson_serial_plat *plat = dev->plat;
+	struct meson_serial_plat *plat = dev_get_plat(dev);
 	struct meson_uart *const uart = plat->reg;
 
 	meson_serial_init(uart);
@@ -67,7 +67,7 @@ static int meson_serial_probe(struct udevice *dev)
 
 static void meson_serial_rx_error(struct udevice *dev)
 {
-	struct meson_serial_plat *plat = dev->plat;
+	struct meson_serial_plat *plat = dev_get_plat(dev);
 	struct meson_uart *const uart = plat->reg;
 	u32 val = readl(&uart->control);
 
@@ -83,7 +83,7 @@ static void meson_serial_rx_error(struct udevice *dev)
 
 static int meson_serial_getc(struct udevice *dev)
 {
-	struct meson_serial_plat *plat = dev->plat;
+	struct meson_serial_plat *plat = dev_get_plat(dev);
 	struct meson_uart *const uart = plat->reg;
 	uint32_t status = readl(&uart->status);
 
@@ -100,7 +100,7 @@ static int meson_serial_getc(struct udevice *dev)
 
 static int meson_serial_putc(struct udevice *dev, const char ch)
 {
-	struct meson_serial_plat *plat = dev->plat;
+	struct meson_serial_plat *plat = dev_get_plat(dev);
 	struct meson_uart *const uart = plat->reg;
 
 	if (readl(&uart->status) & AML_UART_TX_FULL)
@@ -113,7 +113,7 @@ static int meson_serial_putc(struct udevice *dev, const char ch)
 
 static int meson_serial_pending(struct udevice *dev, bool input)
 {
-	struct meson_serial_plat *plat = dev->plat;
+	struct meson_serial_plat *plat = dev_get_plat(dev);
 	struct meson_uart *const uart = plat->reg;
 	uint32_t status = readl(&uart->status);
 
@@ -138,7 +138,7 @@ static int meson_serial_pending(struct udevice *dev, bool input)
 
 static int meson_serial_of_to_plat(struct udevice *dev)
 {
-	struct meson_serial_plat *plat = dev->plat;
+	struct meson_serial_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
diff --git a/drivers/serial/serial_mxc.c b/drivers/serial/serial_mxc.c
index 2603fa8611a..e5795da99d9 100644
--- a/drivers/serial/serial_mxc.c
+++ b/drivers/serial/serial_mxc.c
@@ -264,7 +264,7 @@ __weak struct serial_device *default_serial_console(void)
 
 int mxc_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct mxc_serial_plat *plat = dev->plat;
+	struct mxc_serial_plat *plat = dev_get_plat(dev);
 	u32 clk = imx_get_uartclk();
 
 	_mxc_serial_setbrg(plat->reg, clk, baudrate, plat->use_dte);
@@ -274,7 +274,7 @@ int mxc_serial_setbrg(struct udevice *dev, int baudrate)
 
 static int mxc_serial_probe(struct udevice *dev)
 {
-	struct mxc_serial_plat *plat = dev->plat;
+	struct mxc_serial_plat *plat = dev_get_plat(dev);
 
 	_mxc_serial_init(plat->reg, plat->use_dte);
 
@@ -283,7 +283,7 @@ static int mxc_serial_probe(struct udevice *dev)
 
 static int mxc_serial_getc(struct udevice *dev)
 {
-	struct mxc_serial_plat *plat = dev->plat;
+	struct mxc_serial_plat *plat = dev_get_plat(dev);
 	struct mxc_uart *const uart = plat->reg;
 
 	if (readl(&uart->ts) & UTS_RXEMPTY)
@@ -294,7 +294,7 @@ static int mxc_serial_getc(struct udevice *dev)
 
 static int mxc_serial_putc(struct udevice *dev, const char ch)
 {
-	struct mxc_serial_plat *plat = dev->plat;
+	struct mxc_serial_plat *plat = dev_get_plat(dev);
 	struct mxc_uart *const uart = plat->reg;
 
 	if (!(readl(&uart->ts) & UTS_TXEMPTY))
@@ -307,7 +307,7 @@ static int mxc_serial_putc(struct udevice *dev, const char ch)
 
 static int mxc_serial_pending(struct udevice *dev, bool input)
 {
-	struct mxc_serial_plat *plat = dev->plat;
+	struct mxc_serial_plat *plat = dev_get_plat(dev);
 	struct mxc_uart *const uart = plat->reg;
 	uint32_t sr2 = readl(&uart->sr2);
 
@@ -327,7 +327,7 @@ static const struct dm_serial_ops mxc_serial_ops = {
 #if CONFIG_IS_ENABLED(OF_CONTROL)
 static int mxc_serial_of_to_plat(struct udevice *dev)
 {
-	struct mxc_serial_plat *plat = dev->plat;
+	struct mxc_serial_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
diff --git a/drivers/serial/serial_omap.c b/drivers/serial/serial_omap.c
index c2352155413..2b23ece442e 100644
--- a/drivers/serial/serial_omap.c
+++ b/drivers/serial/serial_omap.c
@@ -101,7 +101,7 @@ DEBUG_UART_FUNCS
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int omap_serial_of_to_plat(struct udevice *dev)
 {
-	struct ns16550_plat *plat = dev->plat;
+	struct ns16550_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr;
 	struct clk clk;
 	int err;
diff --git a/drivers/serial/serial_pxa.c b/drivers/serial/serial_pxa.c
index d82f3b97529..669841ede4d 100644
--- a/drivers/serial/serial_pxa.c
+++ b/drivers/serial/serial_pxa.c
@@ -268,7 +268,7 @@ void pxa_serial_initialize(void)
 #ifdef CONFIG_DM_SERIAL
 static int pxa_serial_probe(struct udevice *dev)
 {
-	struct pxa_serial_plat *plat = dev->plat;
+	struct pxa_serial_plat *plat = dev_get_plat(dev);
 
 	pxa_setbrg_common((struct pxa_uart_regs *)plat->base, plat->port,
 			  plat->baudrate);
@@ -277,7 +277,7 @@ static int pxa_serial_probe(struct udevice *dev)
 
 static int pxa_serial_putc(struct udevice *dev, const char ch)
 {
-	struct pxa_serial_plat *plat = dev->plat;
+	struct pxa_serial_plat *plat = dev_get_plat(dev);
 	struct pxa_uart_regs *uart_regs = (struct pxa_uart_regs *)plat->base;
 
 	/* Wait for last character to go. */
@@ -291,7 +291,7 @@ static int pxa_serial_putc(struct udevice *dev, const char ch)
 
 static int pxa_serial_getc(struct udevice *dev)
 {
-	struct pxa_serial_plat *plat = dev->plat;
+	struct pxa_serial_plat *plat = dev_get_plat(dev);
 	struct pxa_uart_regs *uart_regs = (struct pxa_uart_regs *)plat->base;
 
 	/* Wait for a character to arrive. */
@@ -303,7 +303,7 @@ static int pxa_serial_getc(struct udevice *dev)
 
 int pxa_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct pxa_serial_plat *plat = dev->plat;
+	struct pxa_serial_plat *plat = dev_get_plat(dev);
 	struct pxa_uart_regs *uart_regs = (struct pxa_uart_regs *)plat->base;
 	int port = plat->port;
 
@@ -314,7 +314,7 @@ int pxa_serial_setbrg(struct udevice *dev, int baudrate)
 
 static int pxa_serial_pending(struct udevice *dev, bool input)
 {
-	struct pxa_serial_plat *plat = dev->plat;
+	struct pxa_serial_plat *plat = dev_get_plat(dev);
 	struct pxa_uart_regs *uart_regs = (struct pxa_uart_regs *)plat->base;
 
 	if (input)
diff --git a/drivers/serial/serial_rockchip.c b/drivers/serial/serial_rockchip.c
index 036c07262be..97d40869a2a 100644
--- a/drivers/serial/serial_rockchip.c
+++ b/drivers/serial/serial_rockchip.c
@@ -10,6 +10,7 @@
 #include <ns16550.h>
 #include <serial.h>
 #include <asm/arch-rockchip/clock.h>
+#include <dm/device-internal.h>
 
 #if defined(CONFIG_ROCKCHIP_RK3188)
 struct rockchip_uart_plat {
@@ -34,7 +35,7 @@ static int rockchip_serial_probe(struct udevice *dev)
 	plat->plat.reg_shift = plat->dtplat.reg_shift;
 	plat->plat.clock = plat->dtplat.clock_frequency;
 	plat->plat.fcr = UART_FCR_DEFVAL;
-	dev->plat = &plat->plat;
+	dev_set_plat(dev, &plat->plat);
 
 	return ns16550_serial_probe(dev);
 }
diff --git a/drivers/serial/serial_s5p.c b/drivers/serial/serial_s5p.c
index 120df835dbd..0eac0d53a50 100644
--- a/drivers/serial/serial_s5p.c
+++ b/drivers/serial/serial_s5p.c
@@ -88,7 +88,7 @@ static void __maybe_unused s5p_serial_baud(struct s5p_uart *uart, uint uclk,
 #ifndef CONFIG_SPL_BUILD
 int s5p_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct s5p_serial_plat *plat = dev->plat;
+	struct s5p_serial_plat *plat = dev_get_plat(dev);
 	struct s5p_uart *const uart = plat->reg;
 	u32 uclk;
 
@@ -111,7 +111,7 @@ int s5p_serial_setbrg(struct udevice *dev, int baudrate)
 
 static int s5p_serial_probe(struct udevice *dev)
 {
-	struct s5p_serial_plat *plat = dev->plat;
+	struct s5p_serial_plat *plat = dev_get_plat(dev);
 	struct s5p_uart *const uart = plat->reg;
 
 	s5p_serial_init(uart);
@@ -140,7 +140,7 @@ static int serial_err_check(const struct s5p_uart *const uart, int op)
 
 static int s5p_serial_getc(struct udevice *dev)
 {
-	struct s5p_serial_plat *plat = dev->plat;
+	struct s5p_serial_plat *plat = dev_get_plat(dev);
 	struct s5p_uart *const uart = plat->reg;
 
 	if (!(readl(&uart->ufstat) & RX_FIFO_COUNT_MASK))
@@ -152,7 +152,7 @@ static int s5p_serial_getc(struct udevice *dev)
 
 static int s5p_serial_putc(struct udevice *dev, const char ch)
 {
-	struct s5p_serial_plat *plat = dev->plat;
+	struct s5p_serial_plat *plat = dev_get_plat(dev);
 	struct s5p_uart *const uart = plat->reg;
 
 	if (readl(&uart->ufstat) & TX_FIFO_FULL)
@@ -166,7 +166,7 @@ static int s5p_serial_putc(struct udevice *dev, const char ch)
 
 static int s5p_serial_pending(struct udevice *dev, bool input)
 {
-	struct s5p_serial_plat *plat = dev->plat;
+	struct s5p_serial_plat *plat = dev_get_plat(dev);
 	struct s5p_uart *const uart = plat->reg;
 	uint32_t ufstat = readl(&uart->ufstat);
 
@@ -178,7 +178,7 @@ static int s5p_serial_pending(struct udevice *dev, bool input)
 
 static int s5p_serial_of_to_plat(struct udevice *dev)
 {
-	struct s5p_serial_plat *plat = dev->plat;
+	struct s5p_serial_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c
index b746501f5ff..67980431ba0 100644
--- a/drivers/spi/cadence_qspi.c
+++ b/drivers/spi/cadence_qspi.c
@@ -27,7 +27,7 @@
 
 static int cadence_spi_write_speed(struct udevice *bus, uint hz)
 {
-	struct cadence_spi_plat *plat = bus->plat;
+	struct cadence_spi_plat *plat = dev_get_plat(bus);
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 
 	cadence_qspi_apb_config_baudrate_div(priv->regbase,
@@ -130,7 +130,7 @@ static int spi_calibration(struct udevice *bus, uint hz)
 
 static int cadence_spi_set_speed(struct udevice *bus, uint hz)
 {
-	struct cadence_spi_plat *plat = bus->plat;
+	struct cadence_spi_plat *plat = dev_get_plat(bus);
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 	int err;
 
@@ -165,7 +165,7 @@ static int cadence_spi_set_speed(struct udevice *bus, uint hz)
 
 static int cadence_spi_probe(struct udevice *bus)
 {
-	struct cadence_spi_plat *plat = bus->plat;
+	struct cadence_spi_plat *plat = dev_get_plat(bus);
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 	struct clk clk;
 	int ret;
@@ -212,7 +212,7 @@ static int cadence_spi_remove(struct udevice *dev)
 
 static int cadence_spi_set_mode(struct udevice *bus, uint mode)
 {
-	struct cadence_spi_plat *plat = bus->plat;
+	struct cadence_spi_plat *plat = dev_get_plat(bus);
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 
 	/* Disable QSPI */
@@ -235,7 +235,7 @@ static int cadence_spi_mem_exec_op(struct spi_slave *spi,
 				   const struct spi_mem_op *op)
 {
 	struct udevice *bus = spi->dev->parent;
-	struct cadence_spi_plat *plat = bus->plat;
+	struct cadence_spi_plat *plat = dev_get_plat(bus);
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 	void *base = priv->regbase;
 	int err = 0;
@@ -284,7 +284,7 @@ static int cadence_spi_mem_exec_op(struct spi_slave *spi,
 
 static int cadence_spi_of_to_plat(struct udevice *bus)
 {
-	struct cadence_spi_plat *plat = bus->plat;
+	struct cadence_spi_plat *plat = dev_get_plat(bus);
 	ofnode subnode;
 
 	plat->regbase = (void *)devfdt_get_addr_index(bus, 0);
diff --git a/drivers/spi/cf_spi.c b/drivers/spi/cf_spi.c
index 8adff63edc6..298f350ef39 100644
--- a/drivers/spi/cf_spi.c
+++ b/drivers/spi/cf_spi.c
@@ -387,7 +387,7 @@ static int coldfire_spi_probe(struct udevice *bus)
 static int coldfire_dspi_of_to_plat(struct udevice *bus)
 {
 	fdt_addr_t addr;
-	struct coldfire_spi_plat *plat = bus->plat;
+	struct coldfire_spi_plat *plat = dev_get_plat(bus);
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 	int *ctar, len;
diff --git a/drivers/spi/davinci_spi.c b/drivers/spi/davinci_spi.c
index ea088ebd2cb..53a791ea292 100644
--- a/drivers/spi/davinci_spi.c
+++ b/drivers/spi/davinci_spi.c
@@ -383,7 +383,7 @@ static const struct dm_spi_ops davinci_spi_ops = {
 static int davinci_spi_probe(struct udevice *bus)
 {
 	struct davinci_spi_slave *ds = dev_get_priv(bus);
-	struct davinci_spi_plat *plat = bus->plat;
+	struct davinci_spi_plat *plat = dev_get_plat(bus);
 	ds->regs = plat->regs;
 	ds->num_cs = plat->num_cs;
 
@@ -393,7 +393,7 @@ static int davinci_spi_probe(struct udevice *bus)
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int davinci_ofdata_to_platadata(struct udevice *bus)
 {
-	struct davinci_spi_plat *plat = bus->plat;
+	struct davinci_spi_plat *plat = dev_get_plat(bus);
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(bus);
diff --git a/drivers/spi/designware_spi.c b/drivers/spi/designware_spi.c
index 4fa4585fc35..5ede00d080b 100644
--- a/drivers/spi/designware_spi.c
+++ b/drivers/spi/designware_spi.c
@@ -155,7 +155,7 @@ static int request_gpio_cs(struct udevice *bus)
 
 static int dw_spi_of_to_plat(struct udevice *bus)
 {
-	struct dw_spi_plat *plat = bus->plat;
+	struct dw_spi_plat *plat = dev_get_plat(bus);
 
 	plat->regs = dev_read_addr_ptr(bus);
 
@@ -478,7 +478,7 @@ static int dw_spi_xfer(struct udevice *dev, unsigned int bitlen,
 
 static int dw_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct dw_spi_plat *plat = bus->plat;
+	struct dw_spi_plat *plat = dev_get_plat(bus);
 	struct dw_spi_priv *priv = dev_get_priv(bus);
 	u16 clk_div;
 
diff --git a/drivers/spi/exynos_spi.c b/drivers/spi/exynos_spi.c
index e4d2bade0f0..30b1a77a732 100644
--- a/drivers/spi/exynos_spi.c
+++ b/drivers/spi/exynos_spi.c
@@ -253,7 +253,7 @@ static void spi_cs_deactivate(struct udevice *dev)
 
 static int exynos_spi_of_to_plat(struct udevice *bus)
 {
-	struct exynos_spi_plat *plat = bus->plat;
+	struct exynos_spi_plat *plat = dev_get_plat(bus);
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -368,7 +368,7 @@ static int exynos_spi_xfer(struct udevice *dev, unsigned int bitlen,
 
 static int exynos_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct exynos_spi_plat *plat = bus->plat;
+	struct exynos_spi_plat *plat = dev_get_plat(bus);
 	struct exynos_spi_priv *priv = dev_get_priv(bus);
 	int ret;
 
diff --git a/drivers/spi/fsl_dspi.c b/drivers/spi/fsl_dspi.c
index ddf4a9e413f..b8c0216b39d 100644
--- a/drivers/spi/fsl_dspi.c
+++ b/drivers/spi/fsl_dspi.c
@@ -486,7 +486,7 @@ static int fsl_dspi_probe(struct udevice *bus)
 	struct dm_spi_bus *dm_spi_bus;
 	uint mcr_cfg_val;
 
-	dm_spi_bus = bus->uclass_priv;
+	dm_spi_bus = dev_get_uclass_priv(bus);
 
 	/* cpu speical pin muxing configure */
 	cpu_dspi_port_conf();
@@ -576,7 +576,7 @@ static int fsl_dspi_bind(struct udevice *bus)
 static int fsl_dspi_of_to_plat(struct udevice *bus)
 {
 	fdt_addr_t addr;
-	struct fsl_dspi_plat *plat = bus->plat;
+	struct fsl_dspi_plat *plat = dev_get_plat(bus);
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
diff --git a/drivers/spi/fsl_espi.c b/drivers/spi/fsl_espi.c
index e9e7ffd6b53..abc28e37d2a 100644
--- a/drivers/spi/fsl_espi.c
+++ b/drivers/spi/fsl_espi.c
@@ -544,7 +544,7 @@ static const struct dm_spi_ops fsl_espi_ops = {
 static int fsl_espi_of_to_plat(struct udevice *bus)
 {
 	fdt_addr_t addr;
-	struct fsl_espi_plat   *plat = bus->plat;
+	struct fsl_espi_plat   *plat = dev_get_plat(bus);
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
diff --git a/drivers/spi/fsl_qspi.c b/drivers/spi/fsl_qspi.c
index fc3b844370c..8bc7038a82a 100644
--- a/drivers/spi/fsl_qspi.c
+++ b/drivers/spi/fsl_qspi.c
@@ -795,7 +795,7 @@ static const struct spi_controller_mem_ops fsl_qspi_mem_ops = {
 
 static int fsl_qspi_probe(struct udevice *bus)
 {
-	struct dm_spi_bus *dm_bus = bus->uclass_priv;
+	struct dm_spi_bus *dm_bus = dev_get_uclass_priv(bus);
 	struct fsl_qspi *q = dev_get_priv(bus);
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
diff --git a/drivers/spi/mxs_spi.c b/drivers/spi/mxs_spi.c
index 4fafe33af57..7f632d98bb6 100644
--- a/drivers/spi/mxs_spi.c
+++ b/drivers/spi/mxs_spi.c
@@ -443,7 +443,7 @@ static const struct dm_spi_ops mxs_spi_ops = {
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int mxs_of_to_plat(struct udevice *bus)
 {
-	struct mxs_spi_plat *plat = bus->plat;
+	struct mxs_spi_plat *plat = dev_get_plat(bus);
 	u32 prop[2];
 	int ret;
 
diff --git a/drivers/spi/pl022_spi.c b/drivers/spi/pl022_spi.c
index 179582cad7d..133363ea7d9 100644
--- a/drivers/spi/pl022_spi.c
+++ b/drivers/spi/pl022_spi.c
@@ -288,7 +288,7 @@ static const struct dm_spi_ops pl022_spi_ops = {
 #if !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int pl022_spi_of_to_plat(struct udevice *bus)
 {
-	struct pl022_spi_pdata *plat = bus->plat;
+	struct pl022_spi_pdata *plat = dev_get_plat(bus);
 	const void *fdt = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 	struct clk clkdev;
diff --git a/drivers/spi/rk_spi.c b/drivers/spi/rk_spi.c
index 44ac475c11d..51abebb9478 100644
--- a/drivers/spi/rk_spi.c
+++ b/drivers/spi/rk_spi.c
@@ -135,7 +135,7 @@ static int rkspi_wait_till_not_busy(struct rockchip_spi *regs)
 static void spi_cs_activate(struct udevice *dev, uint cs)
 {
 	struct udevice *bus = dev->parent;
-	struct rockchip_spi_plat *plat = bus->plat;
+	struct rockchip_spi_plat *plat = dev_get_plat(bus);
 	struct rockchip_spi_priv *priv = dev_get_priv(bus);
 	struct rockchip_spi *regs = priv->regs;
 
@@ -161,7 +161,7 @@ static void spi_cs_activate(struct udevice *dev, uint cs)
 static void spi_cs_deactivate(struct udevice *dev, uint cs)
 {
 	struct udevice *bus = dev->parent;
-	struct rockchip_spi_plat *plat = bus->plat;
+	struct rockchip_spi_plat *plat = dev_get_plat(bus);
 	struct rockchip_spi_priv *priv = dev_get_priv(bus);
 	struct rockchip_spi *regs = priv->regs;
 
@@ -176,7 +176,7 @@ static void spi_cs_deactivate(struct udevice *dev, uint cs)
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
 static int conv_of_plat(struct udevice *dev)
 {
-	struct rockchip_spi_plat *plat = dev->plat;
+	struct rockchip_spi_plat *plat = dev_get_plat(dev);
 	struct dtd_rockchip_rk3288_spi *dtplat = &plat->of_plat;
 	struct rockchip_spi_priv *priv = dev_get_priv(dev);
 	int ret;
diff --git a/drivers/spi/soft_spi.c b/drivers/spi/soft_spi.c
index afc98bfb663..3425d9950a8 100644
--- a/drivers/spi/soft_spi.c
+++ b/drivers/spi/soft_spi.c
@@ -228,7 +228,7 @@ static const struct dm_spi_ops soft_spi_ops = {
 
 static int soft_spi_of_to_plat(struct udevice *dev)
 {
-	struct soft_spi_plat *plat = dev->plat;
+	struct soft_spi_plat *plat = dev_get_plat(dev);
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(dev);
 
@@ -240,7 +240,7 @@ static int soft_spi_of_to_plat(struct udevice *dev)
 static int soft_spi_probe(struct udevice *dev)
 {
 	struct spi_slave *slave = dev_get_parent_priv(dev);
-	struct soft_spi_plat *plat = dev->plat;
+	struct soft_spi_plat *plat = dev_get_plat(dev);
 	int cs_flags, clk_flags;
 	int ret;
 
diff --git a/drivers/spi/tegra114_spi.c b/drivers/spi/tegra114_spi.c
index e1fd82bdfa3..f0256d8e664 100644
--- a/drivers/spi/tegra114_spi.c
+++ b/drivers/spi/tegra114_spi.c
@@ -99,7 +99,7 @@ struct tegra114_spi_priv {
 
 static int tegra114_spi_of_to_plat(struct udevice *bus)
 {
-	struct tegra_spi_plat *plat = bus->plat;
+	struct tegra_spi_plat *plat = dev_get_plat(bus);
 
 	plat->base = dev_read_addr(bus);
 	plat->periph_id = clock_decode_periph_id(bus);
@@ -352,7 +352,7 @@ static int tegra114_spi_xfer(struct udevice *dev, unsigned int bitlen,
 
 static int tegra114_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct tegra_spi_plat *plat = bus->plat;
+	struct tegra_spi_plat *plat = dev_get_plat(bus);
 	struct tegra114_spi_priv *priv = dev_get_priv(bus);
 
 	if (speed > plat->frequency)
diff --git a/drivers/spi/tegra20_sflash.c b/drivers/spi/tegra20_sflash.c
index d38606100d0..4384a48ec84 100644
--- a/drivers/spi/tegra20_sflash.c
+++ b/drivers/spi/tegra20_sflash.c
@@ -89,7 +89,7 @@ int tegra20_sflash_cs_info(struct udevice *bus, unsigned int cs,
 
 static int tegra20_sflash_of_to_plat(struct udevice *bus)
 {
-	struct tegra_spi_plat *plat = bus->plat;
+	struct tegra_spi_plat *plat = dev_get_plat(bus);
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -314,7 +314,7 @@ static int tegra20_sflash_xfer(struct udevice *dev, unsigned int bitlen,
 
 static int tegra20_sflash_set_speed(struct udevice *bus, uint speed)
 {
-	struct tegra_spi_plat *plat = bus->plat;
+	struct tegra_spi_plat *plat = dev_get_plat(bus);
 	struct tegra20_sflash_priv *priv = dev_get_priv(bus);
 
 	if (speed > plat->frequency)
diff --git a/drivers/spi/tegra20_slink.c b/drivers/spi/tegra20_slink.c
index b99ef38a143..3057fe1a222 100644
--- a/drivers/spi/tegra20_slink.c
+++ b/drivers/spi/tegra20_slink.c
@@ -95,7 +95,7 @@ struct tegra_spi_slave {
 
 static int tegra30_spi_of_to_plat(struct udevice *bus)
 {
-	struct tegra_spi_plat *plat = bus->plat;
+	struct tegra_spi_plat *plat = dev_get_plat(bus);
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -314,7 +314,7 @@ static int tegra30_spi_xfer(struct udevice *dev, unsigned int bitlen,
 
 static int tegra30_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct tegra_spi_plat *plat = bus->plat;
+	struct tegra_spi_plat *plat = dev_get_plat(bus);
 	struct tegra30_spi_priv *priv = dev_get_priv(bus);
 
 	if (speed > plat->frequency)
diff --git a/drivers/spi/tegra210_qspi.c b/drivers/spi/tegra210_qspi.c
index a2a7f4614cb..b464b9ccb0e 100644
--- a/drivers/spi/tegra210_qspi.c
+++ b/drivers/spi/tegra210_qspi.c
@@ -99,7 +99,7 @@ struct tegra210_qspi_priv {
 
 static int tegra210_qspi_of_to_plat(struct udevice *bus)
 {
-	struct tegra_spi_plat *plat = bus->plat;
+	struct tegra_spi_plat *plat = dev_get_plat(bus);
 
 	plat->base = dev_read_addr(bus);
 	plat->periph_id = clock_decode_periph_id(bus);
@@ -380,7 +380,7 @@ static int tegra210_qspi_xfer(struct udevice *dev, unsigned int bitlen,
 
 static int tegra210_qspi_set_speed(struct udevice *bus, uint speed)
 {
-	struct tegra_spi_plat *plat = bus->plat;
+	struct tegra_spi_plat *plat = dev_get_plat(bus);
 	struct tegra210_qspi_priv *priv = dev_get_priv(bus);
 
 	if (speed > plat->frequency)
diff --git a/drivers/spi/uniphier_spi.c b/drivers/spi/uniphier_spi.c
index 48b8430d3d8..e47ed5b221b 100644
--- a/drivers/spi/uniphier_spi.c
+++ b/drivers/spi/uniphier_spi.c
@@ -113,7 +113,7 @@ static void uniphier_spi_regdump(struct uniphier_spi_priv *priv)
 static void spi_cs_activate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct uniphier_spi_plat *plat = bus->plat;
+	struct uniphier_spi_plat *plat = dev_get_plat(bus);
 	struct uniphier_spi_priv *priv = dev_get_priv(bus);
 	ulong delay_us;		/* The delay completed so far */
 	u32 val;
@@ -139,7 +139,7 @@ static void spi_cs_activate(struct udevice *dev)
 static void spi_cs_deactivate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct uniphier_spi_plat *plat = bus->plat;
+	struct uniphier_spi_plat *plat = dev_get_plat(bus);
 	struct uniphier_spi_priv *priv = dev_get_priv(bus);
 	u32 val;
 
@@ -279,7 +279,7 @@ static int uniphier_spi_xfer(struct udevice *dev, unsigned int bitlen,
 
 static int uniphier_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct uniphier_spi_plat *plat = bus->plat;
+	struct uniphier_spi_plat *plat = dev_get_plat(bus);
 	struct uniphier_spi_priv *priv = dev_get_priv(bus);
 	u32 val, ckdiv;
 
@@ -364,7 +364,7 @@ static int uniphier_spi_set_mode(struct udevice *bus, uint mode)
 
 static int uniphier_spi_of_to_plat(struct udevice *bus)
 {
-	struct uniphier_spi_plat *plat = bus->plat;
+	struct uniphier_spi_plat *plat = dev_get_plat(bus);
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
diff --git a/drivers/spi/zynq_qspi.c b/drivers/spi/zynq_qspi.c
index 2fc28b6bee2..845f2d2f5f4 100644
--- a/drivers/spi/zynq_qspi.c
+++ b/drivers/spi/zynq_qspi.c
@@ -100,7 +100,7 @@ struct zynq_qspi_priv {
 
 static int zynq_qspi_of_to_plat(struct udevice *bus)
 {
-	struct zynq_qspi_plat *plat = bus->plat;
+	struct zynq_qspi_plat *plat = dev_get_plat(bus);
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -592,7 +592,7 @@ static int zynq_qspi_xfer(struct udevice *dev, unsigned int bitlen,
 
 static int zynq_qspi_set_speed(struct udevice *bus, uint speed)
 {
-	struct zynq_qspi_plat *plat = bus->plat;
+	struct zynq_qspi_plat *plat = dev_get_plat(bus);
 	struct zynq_qspi_priv *priv = dev_get_priv(bus);
 	struct zynq_qspi_regs *regs = priv->regs;
 	uint32_t confr;
diff --git a/drivers/spi/zynq_spi.c b/drivers/spi/zynq_spi.c
index a6efa4a1c83..2971e55f41b 100644
--- a/drivers/spi/zynq_spi.c
+++ b/drivers/spi/zynq_spi.c
@@ -75,7 +75,7 @@ struct zynq_spi_priv {
 
 static int zynq_spi_of_to_plat(struct udevice *bus)
 {
-	struct zynq_spi_plat *plat = bus->plat;
+	struct zynq_spi_plat *plat = dev_get_plat(bus);
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -162,7 +162,7 @@ static int zynq_spi_probe(struct udevice *bus)
 static void spi_cs_activate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct zynq_spi_plat *plat = bus->plat;
+	struct zynq_spi_plat *plat = dev_get_plat(bus);
 	struct zynq_spi_priv *priv = dev_get_priv(bus);
 	struct zynq_spi_regs *regs = priv->regs;
 	u32 cr;
@@ -193,7 +193,7 @@ static void spi_cs_activate(struct udevice *dev)
 static void spi_cs_deactivate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct zynq_spi_plat *plat = bus->plat;
+	struct zynq_spi_plat *plat = dev_get_plat(bus);
 	struct zynq_spi_priv *priv = dev_get_priv(bus);
 	struct zynq_spi_regs *regs = priv->regs;
 
@@ -296,7 +296,7 @@ static int zynq_spi_xfer(struct udevice *dev, unsigned int bitlen,
 
 static int zynq_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct zynq_spi_plat *plat = bus->plat;
+	struct zynq_spi_plat *plat = dev_get_plat(bus);
 	struct zynq_spi_priv *priv = dev_get_priv(bus);
 	struct zynq_spi_regs *regs = priv->regs;
 	uint32_t confr;
diff --git a/drivers/spi/zynqmp_gqspi.c b/drivers/spi/zynqmp_gqspi.c
index f09c50757d4..c9e476eefac 100644
--- a/drivers/spi/zynqmp_gqspi.c
+++ b/drivers/spi/zynqmp_gqspi.c
@@ -177,7 +177,7 @@ struct zynqmp_qspi_priv {
 
 static int zynqmp_qspi_of_to_plat(struct udevice *bus)
 {
-	struct zynqmp_qspi_plat *plat = bus->plat;
+	struct zynqmp_qspi_plat *plat = dev_get_plat(bus);
 
 	debug("%s\n", __func__);
 
@@ -255,7 +255,7 @@ static void zynqmp_qspi_chipselect(struct zynqmp_qspi_priv *priv, int is_on)
 
 void zynqmp_qspi_set_tapdelay(struct udevice *bus, u32 baudrateval)
 {
-	struct zynqmp_qspi_plat *plat = bus->plat;
+	struct zynqmp_qspi_plat *plat = dev_get_plat(bus);
 	struct zynqmp_qspi_priv *priv = dev_get_priv(bus);
 	struct zynqmp_qspi_regs *regs = priv->regs;
 	u32 tapdlybypass = 0, lpbkdlyadj = 0, datadlyadj = 0, clk_rate;
@@ -295,7 +295,7 @@ void zynqmp_qspi_set_tapdelay(struct udevice *bus, u32 baudrateval)
 
 static int zynqmp_qspi_set_speed(struct udevice *bus, uint speed)
 {
-	struct zynqmp_qspi_plat *plat = bus->plat;
+	struct zynqmp_qspi_plat *plat = dev_get_plat(bus);
 	struct zynqmp_qspi_priv *priv = dev_get_priv(bus);
 	struct zynqmp_qspi_regs *regs = priv->regs;
 	u32 confr;
diff --git a/drivers/timer/ag101p_timer.c b/drivers/timer/ag101p_timer.c
index 17174345e36..27cf9b02471 100644
--- a/drivers/timer/ag101p_timer.c
+++ b/drivers/timer/ag101p_timer.c
@@ -64,7 +64,7 @@ struct atftmr_timer_plat {
 
 static u64 atftmr_timer_get_count(struct udevice *dev)
 {
-	struct atftmr_timer_plat *plat = dev->plat;
+	struct atftmr_timer_plat *plat = dev_get_plat(dev);
 	struct atftmr_timer_regs *const regs = plat->regs;
 	u32 val;
 	val = readl(&regs->t3_counter);
@@ -73,7 +73,7 @@ static u64 atftmr_timer_get_count(struct udevice *dev)
 
 static int atftmr_timer_probe(struct udevice *dev)
 {
-	struct atftmr_timer_plat *plat = dev->plat;
+	struct atftmr_timer_plat *plat = dev_get_plat(dev);
 	struct atftmr_timer_regs *const regs = plat->regs;
 	u32 cr;
 	writel(0, &regs->t3_load);
diff --git a/drivers/timer/altera_timer.c b/drivers/timer/altera_timer.c
index 7e9abee0efc..040dc65f48a 100644
--- a/drivers/timer/altera_timer.c
+++ b/drivers/timer/altera_timer.c
@@ -34,7 +34,7 @@ struct altera_timer_plat {
 
 static u64 altera_timer_get_count(struct udevice *dev)
 {
-	struct altera_timer_plat *plat = dev->plat;
+	struct altera_timer_plat *plat = dev_get_plat(dev);
 	struct altera_timer_regs *const regs = plat->regs;
 	u32 val;
 
@@ -49,7 +49,7 @@ static u64 altera_timer_get_count(struct udevice *dev)
 
 static int altera_timer_probe(struct udevice *dev)
 {
-	struct altera_timer_plat *plat = dev->plat;
+	struct altera_timer_plat *plat = dev_get_plat(dev);
 	struct altera_timer_regs *const regs = plat->regs;
 
 	writel(0, &regs->status);
diff --git a/drivers/timer/andes_plmt_timer.c b/drivers/timer/andes_plmt_timer.c
index cec86718c7f..db2cf86f638 100644
--- a/drivers/timer/andes_plmt_timer.c
+++ b/drivers/timer/andes_plmt_timer.c
@@ -12,6 +12,7 @@
 #include <dm.h>
 #include <timer.h>
 #include <asm/io.h>
+#include <dm/device-internal.h>
 #include <linux/err.h>
 
 /* mtime register */
@@ -19,7 +20,7 @@
 
 static u64 andes_plmt_get_count(struct udevice *dev)
 {
-	return readq((void __iomem *)MTIME_REG(dev->priv));
+	return readq((void __iomem *)MTIME_REG(dev_get_priv(dev)));
 }
 
 static const struct timer_ops andes_plmt_ops = {
@@ -28,8 +29,8 @@ static const struct timer_ops andes_plmt_ops = {
 
 static int andes_plmt_probe(struct udevice *dev)
 {
-	dev->priv = dev_read_addr_ptr(dev);
-	if (!dev->priv)
+	dev_set_priv(dev, dev_read_addr_ptr(dev));
+	if (!dev_get_priv(dev))
 		return -EINVAL;
 
 	return timer_timebase_fallback(dev);
diff --git a/drivers/timer/mpc83xx_timer.c b/drivers/timer/mpc83xx_timer.c
index 9b1daaadebf..2f2b8be3dca 100644
--- a/drivers/timer/mpc83xx_timer.c
+++ b/drivers/timer/mpc83xx_timer.c
@@ -206,7 +206,7 @@ static u64 mpc83xx_timer_get_count(struct udevice *dev)
 
 static int mpc83xx_timer_probe(struct udevice *dev)
 {
-	struct timer_dev_priv *uc_priv = dev->uclass_priv;
+	struct timer_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct clk clock;
 	int ret;
 
diff --git a/drivers/timer/sifive_clint_timer.c b/drivers/timer/sifive_clint_timer.c
index 00ce0f08d6e..de23b85404b 100644
--- a/drivers/timer/sifive_clint_timer.c
+++ b/drivers/timer/sifive_clint_timer.c
@@ -9,6 +9,7 @@
 #include <dm.h>
 #include <timer.h>
 #include <asm/io.h>
+#include <dm/device-internal.h>
 #include <linux/err.h>
 
 /* mtime register */
@@ -16,7 +17,7 @@
 
 static u64 sifive_clint_get_count(struct udevice *dev)
 {
-	return readq((void __iomem *)MTIME_REG(dev->priv));
+	return readq((void __iomem *)MTIME_REG(dev_get_priv(dev)));
 }
 
 static const struct timer_ops sifive_clint_ops = {
@@ -25,8 +26,8 @@ static const struct timer_ops sifive_clint_ops = {
 
 static int sifive_clint_probe(struct udevice *dev)
 {
-	dev->priv = dev_read_addr_ptr(dev);
-	if (!dev->priv)
+	dev_set_priv(dev, dev_read_addr_ptr(dev));
+	if (!dev_get_priv(dev))
 		return -EINVAL;
 
 	return timer_timebase_fallback(dev);
diff --git a/drivers/timer/timer-uclass.c b/drivers/timer/timer-uclass.c
index ab535553273..8e63c17e9f3 100644
--- a/drivers/timer/timer-uclass.c
+++ b/drivers/timer/timer-uclass.c
@@ -40,7 +40,7 @@ int notrace timer_get_count(struct udevice *dev, u64 *count)
 
 unsigned long notrace timer_get_rate(struct udevice *dev)
 {
-	struct timer_dev_priv *uc_priv = dev->uclass_priv;
+	struct timer_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 
 	return uc_priv->clock_rate;
 }
diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
index 7830a4aee94..16922ff15c6 100644
--- a/drivers/usb/gadget/ether.c
+++ b/drivers/usb/gadget/ether.c
@@ -1860,10 +1860,18 @@ static int rndis_control_ack(struct eth_device *net)
 static int rndis_control_ack(struct udevice *net)
 #endif
 {
-	struct ether_priv	*priv = (struct ether_priv *)net->priv;
-	struct eth_dev		*dev = &priv->ethdev;
-	int                     length;
-	struct usb_request      *resp = dev->stat_req;
+	struct ether_priv *priv;
+	struct eth_dev *dev;
+	int length;
+	struct usb_request *resp;
+
+#ifndef CONFIG_DM_ETH
+	priv = (struct ether_priv *)net->priv;
+#else
+	priv = dev_get_priv(net);
+#endif
+	dev = &priv->ethdev;
+	resp = dev->stat_req;
 
 	/* in case RNDIS calls this after disconnect */
 	if (!dev->status) {
diff --git a/drivers/usb/host/usb-uclass.c b/drivers/usb/host/usb-uclass.c
index a2bd7436f42..17db5eb0609 100644
--- a/drivers/usb/host/usb-uclass.c
+++ b/drivers/usb/host/usb-uclass.c
@@ -60,7 +60,7 @@ int submit_control_msg(struct usb_device *udev, unsigned long pipe,
 {
 	struct udevice *bus = udev->controller_dev;
 	struct dm_usb_ops *ops = usb_get_ops(bus);
-	struct usb_uclass_priv *uc_priv = bus->uclass->priv;
+	struct usb_uclass_priv *uc_priv = uclass_get_priv(bus->uclass);
 	int err;
 
 	if (!ops->control)
@@ -184,7 +184,7 @@ int usb_stop(void)
 	if (ret)
 		return ret;
 
-	uc_priv = uc->priv;
+	uc_priv = uclass_get_priv(uc);
 
 	uclass_foreach_dev(bus, uc) {
 		ret = device_remove(bus, DM_REMOVE_NORMAL);
@@ -263,7 +263,7 @@ int usb_init(void)
 	if (ret)
 		return ret;
 
-	uc_priv = uc->priv;
+	uc_priv = uclass_get_priv(uc);
 
 	uclass_foreach_dev(bus, uc) {
 		/* init low_level USB */
diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c
index 20f6973b4b6..8883e290357 100644
--- a/drivers/video/video-uclass.c
+++ b/drivers/video/video-uclass.c
@@ -378,7 +378,7 @@ static int video_post_bind(struct udevice *dev)
 		return 0;
 
 	/* Set up the video pointer, if this is the first device */
-	uc_priv = dev->uclass->priv;
+	uc_priv = uclass_get_priv(dev->uclass);
 	if (!uc_priv->video_ptr)
 		uc_priv->video_ptr = gd->video_top;
 
diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c
index 99b50780063..c9315dd4585 100644
--- a/lib/efi_loader/efi_device_path.c
+++ b/lib/efi_loader/efi_device_path.c
@@ -531,7 +531,7 @@ __maybe_unused static void *dp_fill(void *buf, struct udevice *dev)
 	case UCLASS_ETH: {
 		struct efi_device_path_mac_addr *dp =
 			dp_fill(buf, dev->parent);
-		struct eth_pdata *pdata = dev->plat;
+		struct eth_pdata *pdata = dev_get_plat(dev);
 
 		dp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE;
 		dp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_MAC_ADDR;
diff --git a/net/eth-uclass.c b/net/eth-uclass.c
index e2d6731975a..0156324032b 100644
--- a/net/eth-uclass.c
+++ b/net/eth-uclass.c
@@ -50,7 +50,7 @@ static struct eth_uclass_priv *eth_get_uclass_priv(void)
 		return NULL;
 
 	assert(uc);
-	return uc->priv;
+	return uclass_get_priv(uc);
 }
 
 void eth_set_current_to_next(void)
@@ -146,7 +146,7 @@ unsigned char *eth_get_ethaddr(void)
 	struct eth_pdata *pdata;
 
 	if (eth_get_dev()) {
-		pdata = eth_get_dev()->plat;
+		pdata = dev_get_plat(eth_get_dev());
 		return pdata->enetaddr;
 	}
 
@@ -163,7 +163,7 @@ int eth_init_state_only(void)
 	if (!current || !device_active(current))
 		return -EINVAL;
 
-	priv = current->uclass_priv;
+	priv = dev_get_uclass_priv(current);
 	priv->state = ETH_STATE_ACTIVE;
 
 	return 0;
@@ -179,7 +179,7 @@ void eth_halt_state_only(void)
 	if (!current || !device_active(current))
 		return;
 
-	priv = current->uclass_priv;
+	priv = dev_get_uclass_priv(current);
 	priv->state = ETH_STATE_PASSIVE;
 }
 
@@ -200,7 +200,7 @@ static int eth_write_hwaddr(struct udevice *dev)
 
 	/* seq is valid since the device is active */
 	if (eth_get_ops(dev)->write_hwaddr && !eth_mac_skip(dev_seq(dev))) {
-		pdata = dev->plat;
+		pdata = dev_get_plat(dev);
 		if (!is_valid_ethaddr(pdata->enetaddr)) {
 			printf("\nError: %s address %pM illegal value\n",
 			       dev->name, pdata->enetaddr);
@@ -234,7 +234,7 @@ static int on_ethaddr(const char *name, const char *value, enum env_op op,
 
 	retval = uclass_find_device_by_seq(UCLASS_ETH, index, &dev);
 	if (!retval) {
-		struct eth_pdata *pdata = dev->plat;
+		struct eth_pdata *pdata = dev_get_plat(dev);
 		switch (op) {
 		case env_op_create:
 		case env_op_overwrite:
@@ -287,7 +287,7 @@ int eth_init(void)
 				ret = eth_get_ops(current)->start(current);
 				if (ret >= 0) {
 					struct eth_device_priv *priv =
-						current->uclass_priv;
+						dev_get_uclass_priv(current);
 
 					priv->state = ETH_STATE_ACTIVE;
 					return 0;
@@ -323,7 +323,7 @@ void eth_halt(void)
 		return;
 
 	eth_get_ops(current)->stop(current);
-	priv = current->uclass_priv;
+	priv = dev_get_uclass_priv(current);
 	if (priv)
 		priv->state = ETH_STATE_PASSIVE;
 }
@@ -502,8 +502,8 @@ static bool eth_dev_get_mac_address(struct udevice *dev, u8 mac[ARP_HLEN])
 
 static int eth_post_probe(struct udevice *dev)
 {
-	struct eth_device_priv *priv = dev->uclass_priv;
-	struct eth_pdata *pdata = dev->plat;
+	struct eth_device_priv *priv = dev_get_uclass_priv(dev);
+	struct eth_pdata *pdata = dev_get_plat(dev);
 	unsigned char env_enetaddr[ARP_HLEN];
 	char *source = "DT";
 
@@ -581,7 +581,7 @@ static int eth_post_probe(struct udevice *dev)
 
 static int eth_pre_remove(struct udevice *dev)
 {
-	struct eth_pdata *pdata = dev->plat;
+	struct eth_pdata *pdata = dev_get_plat(dev);
 
 	eth_get_ops(dev)->stop(dev);
 
diff --git a/test/dm/core.c b/test/dm/core.c
index a7c0f40b775..cf66e27db4e 100644
--- a/test/dm/core.c
+++ b/test/dm/core.c
@@ -255,7 +255,7 @@ static int dm_test_autoprobe(struct unit_test_state *uts)
 		ut_assert(priv);
 		ut_asserteq(expected_base_add, priv->base_add);
 
-		pdata = dev->plat;
+		pdata = dev_get_plat(dev);
 		expected_base_add += pdata->ping_add;
 	}
 
@@ -273,7 +273,7 @@ static int dm_test_plat(struct unit_test_state *uts)
 	for (i = 0; i < 3; i++) {
 		ut_assertok(uclass_find_device(UCLASS_TEST, i, &dev));
 		ut_assert(dev);
-		pdata = dev->plat;
+		pdata = dev_get_plat(dev);
 		ut_assert(pdata->ping_add == test_pdata[i].ping_add);
 	}
 
@@ -297,7 +297,7 @@ static int dm_test_lifecycle(struct unit_test_state *uts)
 	ut_assert(dev);
 	ut_assert(dm_testdrv_op_count[DM_TEST_OP_BIND]
 			== op_count[DM_TEST_OP_BIND] + 1);
-	ut_assert(!dev->priv);
+	ut_assert(!dev_get_priv(dev));
 
 	/* Probe the device - it should fail allocating private data */
 	dms->force_fail_alloc = 1;
@@ -305,14 +305,14 @@ static int dm_test_lifecycle(struct unit_test_state *uts)
 	ut_assert(ret == -ENOMEM);
 	ut_assert(dm_testdrv_op_count[DM_TEST_OP_PROBE]
 			== op_count[DM_TEST_OP_PROBE] + 1);
-	ut_assert(!dev->priv);
+	ut_assert(!dev_get_priv(dev));
 
 	/* Try again without the alloc failure */
 	dms->force_fail_alloc = 0;
 	ut_assertok(device_probe(dev));
 	ut_assert(dm_testdrv_op_count[DM_TEST_OP_PROBE]
 			== op_count[DM_TEST_OP_PROBE] + 2);
-	ut_assert(dev->priv);
+	ut_assert(dev_get_priv(dev));
 
 	/* This should be device 3 in the uclass */
 	ut_assertok(uclass_find_device(UCLASS_TEST, 3, &test_dev));
@@ -402,8 +402,8 @@ int dm_check_operations(struct unit_test_state *uts, struct udevice *dev,
 
 	/* Getting the child device should allocate plat / priv */
 	ut_assertok(testfdt_ping(dev, 10, &pingret));
-	ut_assert(dev->priv);
-	ut_assert(dev->plat);
+	ut_assert(dev_get_priv(dev));
+	ut_assert(dev_get_plat(dev));
 
 	expected = 10 + base;
 	ut_asserteq(expected, pingret);
@@ -414,7 +414,7 @@ int dm_check_operations(struct unit_test_state *uts, struct udevice *dev,
 	ut_asserteq(expected, pingret);
 
 	/* Now check the ping_total */
-	priv = dev->priv;
+	priv = dev_get_priv(dev);
 	ut_asserteq(DM_TEST_START_TOTAL + 10 + 20 + base * 2,
 		    priv->ping_total);
 
@@ -444,7 +444,7 @@ static int dm_test_operations(struct unit_test_state *uts)
 		base = test_pdata[i].ping_add;
 		debug("dev=%d, base=%d\n", i, base);
 
-		ut_assert(!dm_check_operations(uts, dev, base, dev->priv));
+		ut_assert(!dm_check_operations(uts, dev, base, dev_get_priv(dev)));
 	}
 
 	return 0;
@@ -466,7 +466,7 @@ static int dm_test_remove(struct unit_test_state *uts)
 		ut_assertf(!(dev->flags & DM_FLAG_ACTIVATED),
 			   "Driver %d/%s should have deactivated", i,
 			   dev->name);
-		ut_assert(!dev->priv);
+		ut_assert(!dev_get_priv(dev));
 	}
 
 	return 0;
@@ -512,7 +512,7 @@ static int dm_test_uclass(struct unit_test_state *uts)
 	ut_assertok(uclass_get(UCLASS_TEST, &uc));
 	ut_asserteq(1, dm_testdrv_op_count[DM_TEST_OP_INIT]);
 	ut_asserteq(0, dm_testdrv_op_count[DM_TEST_OP_DESTROY]);
-	ut_assert(uc->priv);
+	ut_assert(uclass_get_priv(uc));
 
 	ut_assertok(uclass_destroy(uc));
 	ut_asserteq(1, dm_testdrv_op_count[DM_TEST_OP_INIT]);
@@ -547,7 +547,7 @@ static int create_children(struct unit_test_state *uts, struct udevice *parent,
 						&driver_info_manual, &dev));
 		pdata = calloc(1, sizeof(*pdata));
 		pdata->ping_add = key + i;
-		dev->plat = pdata;
+		dev_set_plat(dev, pdata);
 		if (child)
 			child[i] = dev;
 	}
diff --git a/test/dm/test-driver.c b/test/dm/test-driver.c
index b9f49de10a6..a67f5d3f982 100644
--- a/test/dm/test-driver.c
+++ b/test/dm/test-driver.c
@@ -12,6 +12,7 @@
 #include <log.h>
 #include <malloc.h>
 #include <asm/io.h>
+#include <dm/device-internal.h>
 #include <dm/test.h>
 #include <test/test.h>
 #include <test/ut.h>
@@ -67,7 +68,7 @@ static int test_remove(struct udevice *dev)
 static int test_unbind(struct udevice *dev)
 {
 	/* Private data should not be allocated */
-	ut_assert(!dev->priv);
+	ut_assert(!dev_get_priv(dev));
 
 	dm_testdrv_op_count[DM_TEST_OP_UNBIND]++;
 	return 0;
@@ -119,8 +120,8 @@ static int test_manual_probe(struct udevice *dev)
 
 	dm_testdrv_op_count[DM_TEST_OP_PROBE]++;
 	if (!dms->force_fail_alloc)
-		dev->priv = calloc(1, sizeof(struct dm_test_priv));
-	if (!dev->priv)
+		dev_set_priv(dev, calloc(1, sizeof(struct dm_test_priv)));
+	if (!dev_get_priv(dev))
 		return -ENOMEM;
 
 	return 0;
diff --git a/test/dm/test-fdt.c b/test/dm/test-fdt.c
index eb3c2cf161b..9e8c2906e84 100644
--- a/test/dm/test-fdt.c
+++ b/test/dm/test-fdt.c
@@ -25,7 +25,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 static int testfdt_drv_ping(struct udevice *dev, int pingval, int *pingret)
 {
-	const struct dm_test_pdata *pdata = dev->plat;
+	const struct dm_test_pdata *pdata = dev_get_plat(dev);
 	struct dm_test_priv *priv = dev_get_priv(dev);
 
 	*pingret = pingval + pdata->ping_add;
@@ -288,7 +288,7 @@ static int dm_test_fdt(struct unit_test_state *uts)
 		ret = uclass_find_device(UCLASS_TEST_FDT, i, &dev);
 		ut_assert(!ret);
 		ut_assert(!dev_get_priv(dev));
-		ut_assert(dev->plat);
+		ut_assert(dev_get_plat(dev));
 	}
 
 	ut_assertok(dm_check_devices(uts, num_devices));
diff --git a/test/dm/test-uclass.c b/test/dm/test-uclass.c
index 3ab4a23649e..f1b7aaa727f 100644
--- a/test/dm/test-uclass.c
+++ b/test/dm/test-uclass.c
@@ -82,7 +82,7 @@ static int test_post_probe(struct udevice *dev)
 	if (&prev->uclass_node != &uc->dev_head) {
 		struct dm_test_uclass_perdev_priv *prev_uc_priv
 				= dev_get_uclass_priv(prev);
-		struct dm_test_pdata *pdata = prev->plat;
+		struct dm_test_pdata *pdata = dev_get_plat(prev);
 
 		ut_assert(pdata);
 		ut_assert(prev_uc_priv);
@@ -102,7 +102,7 @@ static int test_pre_remove(struct udevice *dev)
 static int test_init(struct uclass *uc)
 {
 	dm_testdrv_op_count[DM_TEST_OP_INIT]++;
-	ut_assert(uc->priv);
+	ut_assert(uclass_get_priv(uc));
 
 	return 0;
 }
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 17/18] dm: core: Use access methods for dev/uclass private data
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (15 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 16/18] dm: Use access methods for dev/uclass private data Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-23  2:30 ` [PATCH v2 18/18] dm: core: Rename the priv/plat members Simon Glass
                   ` (18 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

Use these functions in the core code as much as possible. With this, there
are only two places where each priv/plat pointer is accessed, one for read
and one for write.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v2:
- Add a warning for clk_reqister()

 drivers/core/device-remove.c |  8 ++---
 drivers/core/device.c        | 61 +++++++++++++++++++-----------------
 drivers/core/uclass.c        | 13 +++++---
 3 files changed, 45 insertions(+), 37 deletions(-)

diff --git a/drivers/core/device-remove.c b/drivers/core/device-remove.c
index 8c121697711..e15ab051be7 100644
--- a/drivers/core/device-remove.c
+++ b/drivers/core/device-remove.c
@@ -94,11 +94,11 @@ int device_unbind(struct udevice *dev)
 	}
 	if (dev->flags & DM_FLAG_ALLOC_UCLASS_PDATA) {
 		free(dev_get_uclass_plat(dev));
-		dev->uclass_plat = NULL;
+		dev_set_uclass_plat(dev, NULL);
 	}
 	if (dev->flags & DM_FLAG_ALLOC_PARENT_PDATA) {
 		free(dev_get_parent_plat(dev));
-		dev->parent_plat = NULL;
+		dev_set_parent_plat(dev, NULL);
 	}
 	ret = uclass_unbind_device(dev);
 	if (ret)
@@ -131,7 +131,7 @@ void device_free(struct udevice *dev)
 	size = dev->uclass->uc_drv->per_device_auto;
 	if (size) {
 		free(dev_get_uclass_priv(dev));
-		dev->uclass_priv = NULL;
+		dev_set_uclass_priv(dev, NULL);
 	}
 	if (dev->parent) {
 		size = dev->parent->driver->per_child_auto;
@@ -141,7 +141,7 @@ void device_free(struct udevice *dev)
 		}
 		if (size) {
 			free(dev_get_parent_priv(dev));
-			dev->parent_priv = NULL;
+			dev_set_parent_priv(dev, NULL);
 		}
 	}
 	dev->flags &= ~DM_FLAG_PLATDATA_VALID;
diff --git a/drivers/core/device.c b/drivers/core/device.c
index f2d750c8de4..261c3b27935 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -42,6 +42,7 @@ static int device_bind_common(struct udevice *parent, const struct driver *drv,
 	struct uclass *uc;
 	int size, ret = 0;
 	bool auto_seq = true;
+	void *ptr;
 
 	if (devp)
 		*devp = NULL;
@@ -64,7 +65,7 @@ static int device_bind_common(struct udevice *parent, const struct driver *drv,
 #ifdef CONFIG_DEVRES
 	INIT_LIST_HEAD(&dev->devres_head);
 #endif
-	dev->plat = plat;
+	dev_set_plat(dev, plat);
 	dev->driver_data = driver_data;
 	dev->name = name;
 	dev->node = node;
@@ -102,25 +103,26 @@ static int device_bind_common(struct udevice *parent, const struct driver *drv,
 		}
 		if (alloc) {
 			dev->flags |= DM_FLAG_ALLOC_PDATA;
-			dev->plat = calloc(1, drv->plat_auto);
-			if (!dev->plat) {
+			ptr = calloc(1, drv->plat_auto);
+			if (!ptr) {
 				ret = -ENOMEM;
 				goto fail_alloc1;
 			}
-			if (CONFIG_IS_ENABLED(OF_PLATDATA) && plat) {
-				memcpy(dev->plat, plat, of_plat_size);
-			}
+			if (CONFIG_IS_ENABLED(OF_PLATDATA) && plat)
+				memcpy(ptr, plat, of_plat_size);
+			dev_set_plat(dev, ptr);
 		}
 	}
 
 	size = uc->uc_drv->per_device_plat_auto;
 	if (size) {
 		dev->flags |= DM_FLAG_ALLOC_UCLASS_PDATA;
-		dev->uclass_plat = calloc(1, size);
-		if (!dev->uclass_plat) {
+		ptr = calloc(1, size);
+		if (!ptr) {
 			ret = -ENOMEM;
 			goto fail_alloc2;
 		}
+		dev_set_uclass_plat(dev, ptr);
 	}
 
 	if (parent) {
@@ -130,11 +132,12 @@ static int device_bind_common(struct udevice *parent, const struct driver *drv,
 		}
 		if (size) {
 			dev->flags |= DM_FLAG_ALLOC_PARENT_PDATA;
-			dev->parent_plat = calloc(1, size);
-			if (!dev->parent_plat) {
+			ptr = calloc(1, size);
+			if (!ptr) {
 				ret = -ENOMEM;
 				goto fail_alloc3;
 			}
+			dev_set_parent_plat(dev, ptr);
 		}
 		/* put dev into parent's successor list */
 		list_add_tail(&dev->sibling_node, &parent->child_head);
@@ -191,19 +194,19 @@ fail_uclass_bind:
 	if (CONFIG_IS_ENABLED(DM_DEVICE_REMOVE)) {
 		list_del(&dev->sibling_node);
 		if (dev->flags & DM_FLAG_ALLOC_PARENT_PDATA) {
-			free(dev->parent_plat);
-			dev->parent_plat = NULL;
+			free(dev_get_parent_plat(dev));
+			dev_set_parent_plat(dev, NULL);
 		}
 	}
 fail_alloc3:
 	if (dev->flags & DM_FLAG_ALLOC_UCLASS_PDATA) {
-		free(dev->uclass_plat);
-		dev->uclass_plat = NULL;
+		free(dev_get_uclass_plat(dev));
+		dev_set_uclass_plat(dev, NULL);
 	}
 fail_alloc2:
 	if (dev->flags & DM_FLAG_ALLOC_PDATA) {
-		free(dev->plat);
-		dev->plat = NULL;
+		free(dev_get_plat(dev));
+		dev_set_plat(dev, NULL);
 	}
 fail_alloc1:
 	devres_release_all(dev);
@@ -324,6 +327,7 @@ int device_of_to_plat(struct udevice *dev)
 {
 	const struct driver *drv;
 	int size = 0;
+	void *ptr;
 	int ret;
 
 	if (!dev)
@@ -352,36 +356,37 @@ int device_of_to_plat(struct udevice *dev)
 	assert(drv);
 
 	/* Allocate private data if requested and not reentered */
-	if (drv->priv_auto && !dev->priv) {
-		dev->priv = alloc_priv(drv->priv_auto, drv->flags);
-		if (!dev->priv) {
+	if (drv->priv_auto && !dev_get_priv(dev)) {
+		ptr = alloc_priv(drv->priv_auto, drv->flags);
+		if (!ptr) {
 			ret = -ENOMEM;
 			goto fail;
 		}
+		dev_set_priv(dev, ptr);
 	}
 	/* Allocate private data if requested and not reentered */
 	size = dev->uclass->uc_drv->per_device_auto;
-	if (size && !dev->uclass_priv) {
-		dev->uclass_priv = alloc_priv(size,
-					      dev->uclass->uc_drv->flags);
-		if (!dev->uclass_priv) {
+	if (size && !dev_get_uclass_priv(dev)) {
+		ptr = alloc_priv(size, dev->uclass->uc_drv->flags);
+		if (!ptr) {
 			ret = -ENOMEM;
 			goto fail;
 		}
+		dev_set_uclass_priv(dev, ptr);
 	}
 
 	/* Allocate parent data for this child */
 	if (dev->parent) {
 		size = dev->parent->driver->per_child_auto;
-		if (!size) {
+		if (!size)
 			size = dev->parent->uclass->uc_drv->per_child_auto;
-		}
-		if (size && !dev->parent_priv) {
-			dev->parent_priv = alloc_priv(size, drv->flags);
-			if (!dev->parent_priv) {
+		if (size && !dev_get_parent_priv(dev)) {
+			ptr = alloc_priv(size, drv->flags);
+			if (!ptr) {
 				ret = -ENOMEM;
 				goto fail;
 			}
+			dev_set_parent_priv(dev, ptr);
 		}
 	}
 
diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c
index 5e24927b341..e845f604724 100644
--- a/drivers/core/uclass.c
+++ b/drivers/core/uclass.c
@@ -72,11 +72,14 @@ static int uclass_add(enum uclass_id id, struct uclass **ucp)
 	if (!uc)
 		return -ENOMEM;
 	if (uc_drv->priv_auto) {
-		uc->priv = calloc(1, uc_drv->priv_auto);
-		if (!uc->priv) {
+		void *ptr;
+
+		ptr = calloc(1, uc_drv->priv_auto);
+		if (!ptr) {
 			ret = -ENOMEM;
 			goto fail_mem;
 		}
+		uclass_set_priv(uc, ptr);
 	}
 	uc->uc_drv = uc_drv;
 	INIT_LIST_HEAD(&uc->sibling_node);
@@ -94,8 +97,8 @@ static int uclass_add(enum uclass_id id, struct uclass **ucp)
 	return 0;
 fail:
 	if (uc_drv->priv_auto) {
-		free(uc->priv);
-		uc->priv = NULL;
+		free(uclass_get_priv(uc));
+		uclass_set_priv(uc, NULL);
 	}
 	list_del(&uc->sibling_node);
 fail_mem:
@@ -132,7 +135,7 @@ int uclass_destroy(struct uclass *uc)
 		uc_drv->destroy(uc);
 	list_del(&uc->sibling_node);
 	if (uc_drv->priv_auto)
-		free(uc->priv);
+		free(uclass_get_priv(uc));
 	free(uc);
 
 	return 0;
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 18/18] dm: core: Rename the priv/plat members
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (16 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 17/18] dm: core: " Simon Glass
@ 2020-12-23  2:30 ` Simon Glass
  2020-12-28 16:25 ` Simon Glass
                   ` (17 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-23  2:30 UTC (permalink / raw)
  To: u-boot

These are supposed to be private to driver model, not accessed by any code
outside. Add a trailing underscore to indicate this.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 drivers/core/device.c | 24 ++++++++++++------------
 drivers/core/uclass.c |  4 ++--
 include/dm/device.h   | 29 +++++++++++++++++------------
 include/dm/uclass.h   |  4 ++--
 4 files changed, 33 insertions(+), 28 deletions(-)

diff --git a/drivers/core/device.c b/drivers/core/device.c
index 261c3b27935..a4c8310f812 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -514,7 +514,7 @@ void *dev_get_plat(const struct udevice *dev)
 		return NULL;
 	}
 
-	return dev->plat;
+	return dev->plat_;
 }
 
 void *dev_get_parent_plat(const struct udevice *dev)
@@ -524,7 +524,7 @@ void *dev_get_parent_plat(const struct udevice *dev)
 		return NULL;
 	}
 
-	return dev->parent_plat;
+	return dev->parent_plat_;
 }
 
 void *dev_get_uclass_plat(const struct udevice *dev)
@@ -534,7 +534,7 @@ void *dev_get_uclass_plat(const struct udevice *dev)
 		return NULL;
 	}
 
-	return dev->uclass_plat;
+	return dev->uclass_plat_;
 }
 
 void *dev_get_priv(const struct udevice *dev)
@@ -544,7 +544,7 @@ void *dev_get_priv(const struct udevice *dev)
 		return NULL;
 	}
 
-	return dev->priv;
+	return dev->priv_;
 }
 
 void *dev_get_uclass_priv(const struct udevice *dev)
@@ -554,7 +554,7 @@ void *dev_get_uclass_priv(const struct udevice *dev)
 		return NULL;
 	}
 
-	return dev->uclass_priv;
+	return dev->uclass_priv_;
 }
 
 void *dev_get_parent_priv(const struct udevice *dev)
@@ -564,7 +564,7 @@ void *dev_get_parent_priv(const struct udevice *dev)
 		return NULL;
 	}
 
-	return dev->parent_priv;
+	return dev->parent_priv_;
 }
 
 static int device_get_device_tail(struct udevice *dev, int ret,
@@ -966,32 +966,32 @@ int device_set_name(struct udevice *dev, const char *name)
 
 void dev_set_priv(struct udevice *dev, void *priv)
 {
-	dev->priv = priv;
+	dev->priv_ = priv;
 }
 
 void dev_set_parent_priv(struct udevice *dev, void *parent_priv)
 {
-	dev->parent_priv = parent_priv;
+	dev->parent_priv_ = parent_priv;
 }
 
 void dev_set_uclass_priv(struct udevice *dev, void *uclass_priv)
 {
-	dev->uclass_priv = uclass_priv;
+	dev->uclass_priv_ = uclass_priv;
 }
 
 void dev_set_plat(struct udevice *dev, void *plat)
 {
-	dev->plat = plat;
+	dev->plat_ = plat;
 }
 
 void dev_set_parent_plat(struct udevice *dev, void *parent_plat)
 {
-	dev->parent_plat = parent_plat;
+	dev->parent_plat_ = parent_plat;
 }
 
 void dev_set_uclass_plat(struct udevice *dev, void *uclass_plat)
 {
-	dev->uclass_plat = uclass_plat;
+	dev->uclass_plat_ = uclass_plat;
 }
 
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c
index e845f604724..f60bc9a8504 100644
--- a/drivers/core/uclass.c
+++ b/drivers/core/uclass.c
@@ -165,12 +165,12 @@ const char *uclass_get_name(enum uclass_id id)
 
 void *uclass_get_priv(const struct uclass *uc)
 {
-	return uc->priv;
+	return uc->priv_;
 }
 
 void uclass_set_priv(struct uclass *uc, void *priv)
 {
-	uc->priv = priv;
+	uc->priv_ = priv;
 }
 
 enum uclass_id uclass_get_by_name(const char *name)
diff --git a/include/dm/device.h b/include/dm/device.h
index 30fc98dc345..daebd6eb68d 100644
--- a/include/dm/device.h
+++ b/include/dm/device.h
@@ -116,17 +116,22 @@ enum {
  *
  * @driver: The driver used by this device
  * @name: Name of device, typically the FDT node name
- * @plat: Configuration data for this device
- * @parent_plat: The parent bus's configuration data for this device
- * @uclass_plat: The uclass's configuration data for this device
+ * @plat_: Configuration data for this device (do not access outside driver
+ *	model)
+ * @parent_plat_: The parent bus's configuration data for this device (do not
+ *	access outside driver model)
+ * @uclass_plat_: The uclass's configuration data for this device (do not access
+ *	outside driver model)
  * @node: Reference to device tree node for this device
  * @driver_data: Driver data word for the entry that matched this device with
  *		its driver
  * @parent: Parent of this device, or NULL for the top level device
- * @priv: Private data for this device
+ * @priv_: Private data for this device (do not access outside driver model)
  * @uclass: Pointer to uclass for this device
- * @uclass_priv: The uclass's private data for this device
- * @parent_priv: The parent's private data for this device
+ * @uclass_priv_: The uclass's private data for this device (do not access
+ *	outside driver model)
+ * @parent_priv_: The parent's private data for this device (do not access
+ *	outside driver model)
  * @uclass_node: Used by uclass to link its devices
  * @child_head: List of children of this device
  * @sibling_node: Next device in list of all devices
@@ -144,16 +149,16 @@ enum {
 struct udevice {
 	const struct driver *driver;
 	const char *name;
-	void *plat;
-	void *parent_plat;
-	void *uclass_plat;
+	void *plat_;
+	void *parent_plat_;
+	void *uclass_plat_;
 	ofnode node;
 	ulong driver_data;
 	struct udevice *parent;
-	void *priv;
+	void *priv_;
 	struct uclass *uclass;
-	void *uclass_priv;
-	void *parent_priv;
+	void *uclass_priv_;
+	void *parent_priv_;
 	struct list_head uclass_node;
 	struct list_head child_head;
 	struct list_head sibling_node;
diff --git a/include/dm/uclass.h b/include/dm/uclass.h
index 20d4b9e6832..f06339e4d69 100644
--- a/include/dm/uclass.h
+++ b/include/dm/uclass.h
@@ -24,7 +24,7 @@
  * There may be drivers for on-chip SoC GPIO banks, I2C GPIO expanders and
  * PMIC IO lines, all made available in a unified way through the uclass.
  *
- * @priv: Private data for this uclass
+ * @priv_: Private data for this uclass (do not access outside driver model)
  * @uc_drv: The driver for the uclass itself, not to be confused with a
  * 'struct driver'
  * @dev_head: List of devices in this uclass (devices are attached to their
@@ -32,7 +32,7 @@
  * @sibling_node: Next uclass in the linked list of uclasses
  */
 struct uclass {
-	void *priv;
+	void *priv_;
 	struct uclass_driver *uc_drv;
 	struct list_head dev_head;
 	struct list_head sibling_node;
-- 
2.29.2.729.g45daf8777d-goog

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH v2 18/18] dm: core: Rename the priv/plat members
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (17 preceding siblings ...)
  2020-12-23  2:30 ` [PATCH v2 18/18] dm: core: Rename the priv/plat members Simon Glass
@ 2020-12-28 16:25 ` Simon Glass
  2020-12-28 16:25 ` [PATCH v2 17/18] dm: core: Use access methods for dev/uclass private data Simon Glass
                   ` (16 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:25 UTC (permalink / raw)
  To: u-boot

These are supposed to be private to driver model, not accessed by any code
outside. Add a trailing underscore to indicate this.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 drivers/core/device.c | 24 ++++++++++++------------
 drivers/core/uclass.c |  4 ++--
 include/dm/device.h   | 29 +++++++++++++++++------------
 include/dm/uclass.h   |  4 ++--
 4 files changed, 33 insertions(+), 28 deletions(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 17/18] dm: core: Use access methods for dev/uclass private data
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (18 preceding siblings ...)
  2020-12-28 16:25 ` Simon Glass
@ 2020-12-28 16:25 ` Simon Glass
  2020-12-28 16:25 ` [PATCH v2 16/18] dm: " Simon Glass
                   ` (15 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:25 UTC (permalink / raw)
  To: u-boot

Use these functions in the core code as much as possible. With this, there
are only two places where each priv/plat pointer is accessed, one for read
and one for write.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v2:
- Add a warning for clk_reqister()

 drivers/core/device-remove.c |  8 ++---
 drivers/core/device.c        | 61 +++++++++++++++++++-----------------
 drivers/core/uclass.c        | 13 +++++---
 3 files changed, 45 insertions(+), 37 deletions(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 16/18] dm: Use access methods for dev/uclass private data
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (19 preceding siblings ...)
  2020-12-28 16:25 ` [PATCH v2 17/18] dm: core: Use access methods for dev/uclass private data Simon Glass
@ 2020-12-28 16:25 ` Simon Glass
  2020-12-28 16:25 ` [PATCH v2 15/18] dm: core: Add functions to set priv/plat Simon Glass
                   ` (14 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:25 UTC (permalink / raw)
  To: u-boot

Most drivers use these access methods but a few do not. Update them.

In some cases the access is not permitted, so mark those with a FIXME tag
for the maintainer to check.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Pratyush Yadav <p.yadav@ti.com>
---

(no changes since v1)

 arch/arm/cpu/armv7/ls102xa/fdt.c          |  4 ++
 arch/arm/mach-stm32mp/pwr_regulator.c     |  3 +-
 arch/x86/cpu/apollolake/uart.c            |  3 +-
 arch/x86/cpu/slimbootloader/serial.c      |  2 +-
 drivers/clk/clk.c                         |  4 +-
 drivers/clk/clk_fixed_rate.c              |  4 +-
 drivers/clk/rockchip/clk_px30.c           |  3 +-
 drivers/clk/rockchip/clk_rk3036.c         |  3 +-
 drivers/clk/rockchip/clk_rk3128.c         |  3 +-
 drivers/clk/rockchip/clk_rk3188.c         |  2 +-
 drivers/clk/rockchip/clk_rk322x.c         |  3 +-
 drivers/clk/rockchip/clk_rk3288.c         |  2 +-
 drivers/clk/rockchip/clk_rk3308.c         |  3 +-
 drivers/clk/rockchip/clk_rk3328.c         |  3 +-
 drivers/clk/rockchip/clk_rk3368.c         |  3 +-
 drivers/clk/rockchip/clk_rk3399.c         |  3 +-
 drivers/clk/rockchip/clk_rv1108.c         |  3 +-
 drivers/core/device-remove.c              | 16 ++++----
 drivers/ddr/altera/sdram_agilex.c         |  2 +-
 drivers/ddr/altera/sdram_gen5.c           |  4 +-
 drivers/ddr/altera/sdram_s10.c            |  2 +-
 drivers/ddr/altera/sdram_soc64.c          |  2 +-
 drivers/gpio/dwapb_gpio.c                 |  2 +-
 drivers/gpio/gpio-uclass.c                |  2 +-
 drivers/gpio/hi6220_gpio.c                |  2 +-
 drivers/gpio/imx_rgpio2p.c                |  5 ++-
 drivers/gpio/lpc32xx_gpio.c               |  2 +-
 drivers/gpio/mt7621_gpio.c                |  2 +-
 drivers/gpio/mxs_gpio.c                   |  2 +-
 drivers/gpio/omap_gpio.c                  |  3 +-
 drivers/gpio/s5p_gpio.c                   |  6 +--
 drivers/gpio/sandbox.c                    |  6 ++-
 drivers/gpio/sunxi_gpio.c                 |  2 +-
 drivers/gpio/tegra186_gpio.c              |  6 +--
 drivers/gpio/tegra_gpio.c                 |  6 +--
 drivers/misc/altera_sysid.c               |  2 +-
 drivers/misc/cros_ec_sandbox.c            |  4 +-
 drivers/misc/fs_loader.c                  |  6 +--
 drivers/misc/vexpress_config.c            |  2 +-
 drivers/mmc/arm_pl180_mmci.c              |  6 +--
 drivers/mmc/mxsmmc.c                      |  2 +-
 drivers/mmc/octeontx_hsmmc.c              | 17 ++++++---
 drivers/mux/mmio.c                        |  3 +-
 drivers/net/eth-phy-uclass.c              |  4 +-
 drivers/net/fm/eth.c                      | 22 +++++++++--
 drivers/net/fsl_mcdmafec.c                | 10 ++---
 drivers/net/mcffec.c                      | 12 +++---
 drivers/net/mcfmii.c                      |  8 ++++
 drivers/net/pfe_eth/pfe_eth.c             |  2 +-
 drivers/net/sunxi_emac.c                  |  2 +-
 drivers/net/tsec.c                        | 46 +++++++++++++++++------
 drivers/net/xilinx_emaclite.c             |  2 +-
 drivers/pci/pci-emul-uclass.c             |  4 +-
 drivers/pci/pci-uclass.c                  |  8 ++--
 drivers/pinctrl/pinctrl-qe-io.c           |  4 +-
 drivers/pinctrl/pinctrl-single.c          |  6 +--
 drivers/power/regulator/da9063.c          | 24 ++++++------
 drivers/power/regulator/pbias_regulator.c |  3 +-
 drivers/remoteproc/rproc-uclass.c         |  4 +-
 drivers/reset/reset-mediatek.c            |  3 +-
 drivers/reset/reset-rockchip.c            |  3 +-
 drivers/reset/reset-sifive.c              |  3 +-
 drivers/reset/reset-sunxi.c               |  3 +-
 drivers/serial/altera_jtag_uart.c         |  8 ++--
 drivers/serial/altera_uart.c              |  8 ++--
 drivers/serial/atmel_usart.c              |  2 +-
 drivers/serial/ns16550.c                  |  4 +-
 drivers/serial/sandbox.c                  |  6 +--
 drivers/serial/serial_arc.c               |  8 ++--
 drivers/serial/serial_linflexuart.c       |  2 +-
 drivers/serial/serial_lpuart.c            | 10 ++---
 drivers/serial/serial_mcf.c               | 10 ++---
 drivers/serial/serial_meson.c             | 12 +++---
 drivers/serial/serial_mxc.c               | 12 +++---
 drivers/serial/serial_omap.c              |  2 +-
 drivers/serial/serial_pxa.c               | 10 ++---
 drivers/serial/serial_rockchip.c          |  3 +-
 drivers/serial/serial_s5p.c               | 12 +++---
 drivers/spi/cadence_qspi.c                | 12 +++---
 drivers/spi/cf_spi.c                      |  2 +-
 drivers/spi/davinci_spi.c                 |  4 +-
 drivers/spi/designware_spi.c              |  4 +-
 drivers/spi/exynos_spi.c                  |  4 +-
 drivers/spi/fsl_dspi.c                    |  4 +-
 drivers/spi/fsl_espi.c                    |  2 +-
 drivers/spi/fsl_qspi.c                    |  2 +-
 drivers/spi/mxs_spi.c                     |  2 +-
 drivers/spi/pl022_spi.c                   |  2 +-
 drivers/spi/rk_spi.c                      |  6 +--
 drivers/spi/soft_spi.c                    |  4 +-
 drivers/spi/tegra114_spi.c                |  4 +-
 drivers/spi/tegra20_sflash.c              |  4 +-
 drivers/spi/tegra20_slink.c               |  4 +-
 drivers/spi/tegra210_qspi.c               |  4 +-
 drivers/spi/uniphier_spi.c                |  8 ++--
 drivers/spi/zynq_qspi.c                   |  4 +-
 drivers/spi/zynq_spi.c                    |  8 ++--
 drivers/spi/zynqmp_gqspi.c                |  6 +--
 drivers/timer/ag101p_timer.c              |  4 +-
 drivers/timer/altera_timer.c              |  4 +-
 drivers/timer/andes_plmt_timer.c          |  7 ++--
 drivers/timer/mpc83xx_timer.c             |  2 +-
 drivers/timer/sifive_clint_timer.c        |  7 ++--
 drivers/timer/timer-uclass.c              |  2 +-
 drivers/usb/gadget/ether.c                | 16 ++++++--
 drivers/usb/host/usb-uclass.c             |  6 +--
 drivers/video/video-uclass.c              |  2 +-
 lib/efi_loader/efi_device_path.c          |  2 +-
 net/eth-uclass.c                          | 22 +++++------
 test/dm/core.c                            | 24 ++++++------
 test/dm/test-driver.c                     |  7 ++--
 test/dm/test-fdt.c                        |  4 +-
 test/dm/test-uclass.c                     |  4 +-
 113 files changed, 372 insertions(+), 278 deletions(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 15/18] dm: core: Add functions to set priv/plat
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (20 preceding siblings ...)
  2020-12-28 16:25 ` [PATCH v2 16/18] dm: " Simon Glass
@ 2020-12-28 16:25 ` Simon Glass
  2020-12-28 16:25 ` [PATCH v2 14/18] dm: core: Add function to access uclass priv Simon Glass
                   ` (13 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:25 UTC (permalink / raw)
  To: u-boot

This should not normally be needed in drivers, but add accessors for the
few cases that exist.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 drivers/core/device.c        | 30 +++++++++++++
 include/dm/device-internal.h | 84 ++++++++++++++++++++++++++++++++++++
 2 files changed, 114 insertions(+)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 14/18] dm: core: Add function to access uclass priv
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (21 preceding siblings ...)
  2020-12-28 16:25 ` [PATCH v2 15/18] dm: core: Add functions to set priv/plat Simon Glass
@ 2020-12-28 16:25 ` Simon Glass
  2020-12-28 16:25 ` [PATCH v2 13/18] x86: apl: Drop support for !OF_PLATDATA_PARENT Simon Glass
                   ` (12 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:25 UTC (permalink / raw)
  To: u-boot

Add functions so this information is not accessed directly. This will be
needed for of-platdata which stores it in a different place.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 drivers/core/uclass.c        | 10 ++++++++++
 include/dm/uclass-internal.h | 14 ++++++++++++++
 include/dm/uclass.h          |  8 ++++++++
 3 files changed, 32 insertions(+)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 13/18] x86: apl: Drop support for !OF_PLATDATA_PARENT
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (22 preceding siblings ...)
  2020-12-28 16:25 ` [PATCH v2 14/18] dm: core: Add function to access uclass priv Simon Glass
@ 2020-12-28 16:25 ` Simon Glass
  2020-12-28 16:25 ` [PATCH v2 12/18] dm: core: Only include simple-bus devicetree id when needed Simon Glass
                   ` (11 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:25 UTC (permalink / raw)
  To: u-boot

This code was kept around after of-platdata started supporting parent
devices. That feature seems stable now, so let's drop it.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v2:
- Remove an old comment about this in pinctrl

 arch/x86/cpu/apollolake/Kconfig     |  1 +
 arch/x86/cpu/apollolake/spl.c       | 28 ----------------------------
 drivers/misc/p2sb-uclass.c          | 15 ---------------
 drivers/pinctrl/intel/pinctrl_apl.c |  2 --
 4 files changed, 1 insertion(+), 45 deletions(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 12/18] dm: core: Only include simple-bus devicetree id when needed
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (23 preceding siblings ...)
  2020-12-28 16:25 ` [PATCH v2 13/18] x86: apl: Drop support for !OF_PLATDATA_PARENT Simon Glass
@ 2020-12-28 16:25 ` Simon Glass
  2020-12-28 16:26 ` [PATCH v2 11/18] dm: core: Use 'uclass_driver' for the uclass linker_list Simon Glass
                   ` (10 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:25 UTC (permalink / raw)
  To: u-boot

This is not needed when of-platdata is in use. Update it.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 drivers/core/simple-bus.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 11/18] dm: core: Use 'uclass_driver' for the uclass linker_list
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (24 preceding siblings ...)
  2020-12-28 16:25 ` [PATCH v2 12/18] dm: core: Only include simple-bus devicetree id when needed Simon Glass
@ 2020-12-28 16:26 ` Simon Glass
  2020-12-28 16:26 ` [PATCH v2 10/18] dm: core: Support dm_dump_all() in SPL Simon Glass
                   ` (9 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:26 UTC (permalink / raw)
  To: u-boot

At present the name 'uclass_driver' is used for the uclass linker list.
This does not follow the convention of using the struct name. Fix it.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 drivers/core/lists.c | 4 ++--
 drivers/core/root.c  | 4 ++--
 include/dm/uclass.h  | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 10/18] dm: core: Support dm_dump_all() in SPL
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (25 preceding siblings ...)
  2020-12-28 16:26 ` [PATCH v2 11/18] dm: core: Use 'uclass_driver' for the uclass linker_list Simon Glass
@ 2020-12-28 16:26 ` Simon Glass
  2020-12-28 16:26 ` [PATCH v2 09/18] spl: Drop bd_info in the data section Simon Glass
                   ` (8 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:26 UTC (permalink / raw)
  To: u-boot

At present the output from this function is hard to read in SPL, due to
(intended) limitations in SPL's printf() function. Add an SPL version so
it is clearer.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 drivers/core/dump.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 09/18] spl: Drop bd_info in the data section
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (26 preceding siblings ...)
  2020-12-28 16:26 ` [PATCH v2 10/18] dm: core: Support dm_dump_all() in SPL Simon Glass
@ 2020-12-28 16:26 ` Simon Glass
  2020-12-28 16:26 ` [PATCH v2 08/18] sandbox: Drop unnecessary test node Simon Glass
                   ` (7 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:26 UTC (permalink / raw)
  To: u-boot

This uses up space in the SPL binary but it always starts as zero. Also
some boards cannot support data in TPL (e.g. Intel Apollo Lake).

Use malloc() to allocate this structure instead, by moving the init a
little later, after malloc() is inited. Make this function optional since
it pulls in malloc().

This reduces the TPL binary size on coral by about 64 bytes

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 arch/arm/cpu/armv8/fsl-layerscape/spl.c |  5 ++++-
 common/spl/Kconfig                      |  9 +++++++++
 common/spl/spl.c                        | 20 ++++++++++++--------
 include/spl.h                           | 10 +++++++++-
 4 files changed, 34 insertions(+), 10 deletions(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 08/18] sandbox: Drop unnecessary test node
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (27 preceding siblings ...)
  2020-12-28 16:26 ` [PATCH v2 09/18] spl: Drop bd_info in the data section Simon Glass
@ 2020-12-28 16:26 ` Simon Glass
  2020-12-28 16:26 ` [PATCH v2 07/18] serial: Rename ns16550 functions to lower case Simon Glass
                   ` (6 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:26 UTC (permalink / raw)
  To: u-boot

The spl-test4 node deliberately has an invalid compatible string. This
causes a warning from dtoc and the check it does is not really necessary.
Drop it, to avoid the warning and associated confusion.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 arch/sandbox/dts/sandbox.dtsi    |  5 -----
 test/py/tests/test_ofplatdata.py |  1 -
 tools/dtoc/dtoc_test_simple.dts  |  5 -----
 tools/dtoc/test_dtoc.py          | 12 ------------
 4 files changed, 23 deletions(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 06/18] serial: Update NS16550_t and struct NS16550
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (29 preceding siblings ...)
  2020-12-28 16:26 ` [PATCH v2 07/18] serial: Rename ns16550 functions to lower case Simon Glass
@ 2020-12-28 16:26 ` Simon Glass
  2020-12-28 16:26 ` [PATCH v2 05/18] buildman: Report sizes for TPL also Simon Glass
                   ` (4 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:26 UTC (permalink / raw)
  To: u-boot

Typedefs should not be used in U-Boot and structs should be lower case.
Update the code to use struct ns16550 consistently.

Put a header guard on the file while we are here.

Signed-off-by: Simon Glass <sjg@chromium.org>

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---

(no changes since v1)

 arch/arm/mach-davinci/da850_lowlevel.c     |  4 +-
 arch/arm/mach-davinci/spl.c                |  4 +-
 arch/arm/mach-keystone/init.c              |  2 +-
 arch/x86/cpu/apollolake/uart.c             |  2 +-
 arch/x86/cpu/slimbootloader/serial.c       |  2 +-
 board/Arcturus/ucp1020/spl.c               |  2 +-
 board/Arcturus/ucp1020/spl_minimal.c       |  6 +--
 board/Synology/ds109/ds109.c               |  8 ++--
 board/freescale/mpc8313erdb/mpc8313erdb.c  |  6 +--
 board/freescale/mpc8315erdb/mpc8315erdb.c  |  6 +--
 board/freescale/p1010rdb/spl.c             |  2 +-
 board/freescale/p1010rdb/spl_minimal.c     |  8 ++--
 board/freescale/p1_p2_rdb_pc/spl.c         |  2 +-
 board/freescale/p1_p2_rdb_pc/spl_minimal.c |  8 ++--
 board/freescale/t102xrdb/spl.c             |  2 +-
 board/freescale/t104xrdb/spl.c             |  2 +-
 board/freescale/t208xqds/spl.c             |  2 +-
 board/freescale/t208xrdb/spl.c             |  2 +-
 board/freescale/t4rdb/spl.c                |  2 +-
 drivers/serial/ns16550.c                   | 44 +++++++++++-----------
 drivers/serial/serial_coreboot.c           |  2 +-
 drivers/serial/serial_intel_mid.c          |  2 +-
 drivers/serial/serial_ns16550.c            | 14 +++----
 drivers/serial/serial_omap.c               |  6 +--
 drivers/serial/serial_rockchip.c           |  4 +-
 include/ns16550.h                          | 21 ++++++-----
 lib/efi/efi_stub.c                         |  2 +-
 27 files changed, 85 insertions(+), 82 deletions(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 07/18] serial: Rename ns16550 functions to lower case
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (28 preceding siblings ...)
  2020-12-28 16:26 ` [PATCH v2 08/18] sandbox: Drop unnecessary test node Simon Glass
@ 2020-12-28 16:26 ` Simon Glass
  2020-12-28 16:26 ` [PATCH v2 06/18] serial: Update NS16550_t and struct NS16550 Simon Glass
                   ` (5 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:26 UTC (permalink / raw)
  To: u-boot

Lower case should be used for function names. Update this driver and its
callers accordingly.

Signed-off-by: Simon Glass <sjg@chromium.org>

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---

(no changes since v1)

 arch/arm/mach-davinci/da850_lowlevel.c     |  2 +-
 arch/arm/mach-davinci/spl.c                |  4 ++--
 arch/arm/mach-keystone/init.c              |  2 +-
 board/Arcturus/ucp1020/spl.c               |  2 +-
 board/Arcturus/ucp1020/spl_minimal.c       |  6 ++---
 board/Synology/ds109/ds109.c               |  5 +++--
 board/freescale/mpc8313erdb/mpc8313erdb.c  |  6 ++---
 board/freescale/mpc8315erdb/mpc8315erdb.c  |  6 ++---
 board/freescale/p1010rdb/spl.c             |  2 +-
 board/freescale/p1010rdb/spl_minimal.c     |  6 ++---
 board/freescale/p1_p2_rdb_pc/spl.c         |  2 +-
 board/freescale/p1_p2_rdb_pc/spl_minimal.c |  6 ++---
 board/freescale/t102xrdb/spl.c             |  2 +-
 board/freescale/t104xrdb/spl.c             |  2 +-
 board/freescale/t208xqds/spl.c             |  2 +-
 board/freescale/t208xrdb/spl.c             |  2 +-
 board/freescale/t4rdb/spl.c                |  2 +-
 drivers/serial/ns16550.c                   | 26 +++++++++++-----------
 drivers/serial/serial_ns16550.c            | 12 +++++-----
 include/ns16550.h                          | 10 ++++-----
 20 files changed, 54 insertions(+), 53 deletions(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 05/18] buildman: Report sizes for TPL also
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (30 preceding siblings ...)
  2020-12-28 16:26 ` [PATCH v2 06/18] serial: Update NS16550_t and struct NS16550 Simon Glass
@ 2020-12-28 16:26 ` Simon Glass
  2020-12-28 16:26 ` [PATCH v2 04/18] Makefile: Use common args for dtoc Simon Glass
                   ` (3 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:26 UTC (permalink / raw)
  To: u-boot

At present only U-Boot proper and SPL are scanned to obtain size
information. Add TPL also, to complete the picture.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 tools/buildman/builderthread.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 04/18] Makefile: Use common args for dtoc
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (31 preceding siblings ...)
  2020-12-28 16:26 ` [PATCH v2 05/18] buildman: Report sizes for TPL also Simon Glass
@ 2020-12-28 16:26 ` Simon Glass
  2020-12-28 16:26 ` [PATCH v2 03/18] Makefile: Tidy up SPL dtb production Simon Glass
                   ` (2 subsequent siblings)
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:26 UTC (permalink / raw)
  To: u-boot

At present the dtoc commmand line is repeated twice in the Makefile. Use a
variable to avoid this, so it is easier to add more conditional arguments.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 scripts/Makefile.spl | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 03/18] Makefile: Tidy up SPL dtb production
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (32 preceding siblings ...)
  2020-12-28 16:26 ` [PATCH v2 04/18] Makefile: Use common args for dtoc Simon Glass
@ 2020-12-28 16:26 ` Simon Glass
  2020-12-28 16:26 ` [PATCH v2 02/18] Makefile: Build SPL dtbs in the spl/ directory Simon Glass
  2020-12-28 16:26 ` [PATCH v2 01/18] Makefile: Build a separate .dtb for TPL Simon Glass
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:26 UTC (permalink / raw)
  To: u-boot

Use the SPL_NAME variable to simplify the rules. Drop the SPL targets
clean-files since the SPL and TPL dts/ directories are removed by
existing rules. Move the SPL rules into a new spl_dtbs to avoid the
complicated $(if) construct.

Also drop unused pieces from the 'targets' variable.

With this, SPL and TPL have separate dtbs which respect the various
u-boot,dm-spl / u-boot,dm-tpl tags.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 dts/Makefile         | 18 +++++++++---------
 scripts/Makefile.spl |  7 ++++---
 2 files changed, 13 insertions(+), 12 deletions(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 02/18] Makefile: Build SPL dtbs in the spl/ directory
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (33 preceding siblings ...)
  2020-12-28 16:26 ` [PATCH v2 03/18] Makefile: Tidy up SPL dtb production Simon Glass
@ 2020-12-28 16:26 ` Simon Glass
  2020-12-28 16:26 ` [PATCH v2 01/18] Makefile: Build a separate .dtb for TPL Simon Glass
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:26 UTC (permalink / raw)
  To: u-boot

Rather than putting these in the top-level dts/ directory (which is
intended for U-Boot proper), put them in the correct subdirectory for
SPL (either spl/ or tpl/). This is where other SPL targets are kept,
so this is more consistent.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 dts/Makefile         | 9 +++++----
 scripts/Makefile.spl | 2 +-
 2 files changed, 6 insertions(+), 5 deletions(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH v2 01/18] Makefile: Build a separate .dtb for TPL
  2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
                   ` (34 preceding siblings ...)
  2020-12-28 16:26 ` [PATCH v2 02/18] Makefile: Build SPL dtbs in the spl/ directory Simon Glass
@ 2020-12-28 16:26 ` Simon Glass
  35 siblings, 0 replies; 37+ messages in thread
From: Simon Glass @ 2020-12-28 16:26 UTC (permalink / raw)
  To: u-boot

At present both SPL and TPL use the same devicetree binary. While there
is logic to run fdtgrep separately on each one, it does not actually
happen.

Add a new TPL rule and use that instead. Make this rule conditional on
there actually being a TPL. Do the same for SPL for consistency.

Note that the SPL and TPL dtbs are build by a Makefule rule used for
U-Boot proper. This is the 'dtbs' target in dts/Makefile. So the check
for CONFIG_TPL_BUILD in cmd_fdtgrep never actually works at present.

We don't support CONFIG_OF_EMBED for TPL at present.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 dts/Makefile         | 11 ++++++++---
 scripts/Makefile.spl |  4 +++-
 2 files changed, 11 insertions(+), 4 deletions(-)

Applied to u-boot-dm/next, thanks!

^ permalink raw reply	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2020-12-28 16:26 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-23  2:30 [PATCH v2 00/18] dm: Preparation for enhanced of-platdata Simon Glass
2020-12-23  2:30 ` [PATCH v2 01/18] Makefile: Build a separate .dtb for TPL Simon Glass
2020-12-23  2:30 ` [PATCH v2 02/18] Makefile: Build SPL dtbs in the spl/ directory Simon Glass
2020-12-23  2:30 ` [PATCH v2 03/18] Makefile: Tidy up SPL dtb production Simon Glass
2020-12-23  2:30 ` [PATCH v2 04/18] Makefile: Use common args for dtoc Simon Glass
2020-12-23  2:30 ` [PATCH v2 05/18] buildman: Report sizes for TPL also Simon Glass
2020-12-23  2:30 ` [PATCH v2 06/18] serial: Update NS16550_t and struct NS16550 Simon Glass
2020-12-23  2:30 ` [PATCH v2 07/18] serial: Rename ns16550 functions to lower case Simon Glass
2020-12-23  2:30 ` [PATCH v2 08/18] sandbox: Drop unnecessary test node Simon Glass
2020-12-23  2:30 ` [PATCH v2 09/18] spl: Drop bd_info in the data section Simon Glass
2020-12-23  2:30 ` [PATCH v2 10/18] dm: core: Support dm_dump_all() in SPL Simon Glass
2020-12-23  2:30 ` [PATCH v2 11/18] dm: core: Use 'uclass_driver' for the uclass linker_list Simon Glass
2020-12-23  2:30 ` [PATCH v2 12/18] dm: core: Only include simple-bus devicetree id when needed Simon Glass
2020-12-23  2:30 ` [PATCH v2 13/18] x86: apl: Drop support for !OF_PLATDATA_PARENT Simon Glass
2020-12-23  2:30 ` [PATCH v2 14/18] dm: core: Add function to access uclass priv Simon Glass
2020-12-23  2:30 ` [PATCH v2 15/18] dm: core: Add functions to set priv/plat Simon Glass
2020-12-23  2:30 ` [PATCH v2 16/18] dm: Use access methods for dev/uclass private data Simon Glass
2020-12-23  2:30 ` [PATCH v2 17/18] dm: core: " Simon Glass
2020-12-23  2:30 ` [PATCH v2 18/18] dm: core: Rename the priv/plat members Simon Glass
2020-12-28 16:25 ` Simon Glass
2020-12-28 16:25 ` [PATCH v2 17/18] dm: core: Use access methods for dev/uclass private data Simon Glass
2020-12-28 16:25 ` [PATCH v2 16/18] dm: " Simon Glass
2020-12-28 16:25 ` [PATCH v2 15/18] dm: core: Add functions to set priv/plat Simon Glass
2020-12-28 16:25 ` [PATCH v2 14/18] dm: core: Add function to access uclass priv Simon Glass
2020-12-28 16:25 ` [PATCH v2 13/18] x86: apl: Drop support for !OF_PLATDATA_PARENT Simon Glass
2020-12-28 16:25 ` [PATCH v2 12/18] dm: core: Only include simple-bus devicetree id when needed Simon Glass
2020-12-28 16:26 ` [PATCH v2 11/18] dm: core: Use 'uclass_driver' for the uclass linker_list Simon Glass
2020-12-28 16:26 ` [PATCH v2 10/18] dm: core: Support dm_dump_all() in SPL Simon Glass
2020-12-28 16:26 ` [PATCH v2 09/18] spl: Drop bd_info in the data section Simon Glass
2020-12-28 16:26 ` [PATCH v2 08/18] sandbox: Drop unnecessary test node Simon Glass
2020-12-28 16:26 ` [PATCH v2 07/18] serial: Rename ns16550 functions to lower case Simon Glass
2020-12-28 16:26 ` [PATCH v2 06/18] serial: Update NS16550_t and struct NS16550 Simon Glass
2020-12-28 16:26 ` [PATCH v2 05/18] buildman: Report sizes for TPL also Simon Glass
2020-12-28 16:26 ` [PATCH v2 04/18] Makefile: Use common args for dtoc Simon Glass
2020-12-28 16:26 ` [PATCH v2 03/18] Makefile: Tidy up SPL dtb production Simon Glass
2020-12-28 16:26 ` [PATCH v2 02/18] Makefile: Build SPL dtbs in the spl/ directory Simon Glass
2020-12-28 16:26 ` [PATCH v2 01/18] Makefile: Build a separate .dtb for TPL Simon Glass

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.