
Now that driver model operations prior to relocation, the remaining area where it does not work is SPL. This series enables this.
Since SPL is quite memory-constrained, code and data size need to be kept as small as possible. This series includes a few changes to help with this:
- Small and simple malloc() implementation - Dropping device removal features - Dropping stdio features - Dropping driver model warnings
With these the code size impact of driver model is small, around 2-3KB on ARMv7. Data usage is typically 200-300 bytes. In many cases this can squeeze into the available SPL RAM space.
Note this is an RFC mainly because of the SPL global_data revert (commit 1ee30ae) since we need that revert undone to be able to support the simple malloc in SPL on ARM.
This series is available at u-boot-dm branch 'spl-working'.
Simon Glass (14): dm: dts: Move omap device tree includes to correct place dm: Split the simple malloc() implementation into its own file dm: arm: spl: Allow simple malloc() in SPL dm: spl: Make simple malloc() available when enabled dm: spl: Allow driver model to be used dm: Allow device removal features to be dropped dm: Allow stdio registration to be dropped dm: Disable dm_warn() in SPL dm: tegra: Add platform data for the SPL uart dm: tegra: Add platform data for the GPIO driver dm: arm: spl: Make driver model linker lists available dm: tegra: Don't used named GPIOs in SPL dm: tegra: Enable driver model in SPL and adjust the GPIO driver dm: Update documentation to include CONFIG_DM... options
README | 119 +++++++++++++ arch/arm/cpu/u-boot-spl.lds | 7 + arch/arm/dts/dt-bindings/gpio/gpio.h | 15 -- arch/arm/lib/crt0.S | 2 +- board/nvidia/common/board.c | 8 + board/nvidia/seaboard/seaboard.c | 4 +- common/Makefile | 1 + common/board_r.c | 3 +- common/dlmalloc.c | 19 +-- common/malloc_simple.c | 38 +++++ common/spl/spl.c | 16 +- doc/driver-model/README.txt | 44 +++-- drivers/core/Makefile | 3 +- drivers/core/device-remove.c | 187 +++++++++++++++++++++ drivers/core/device.c | 168 ------------------ drivers/gpio/Makefile | 4 + drivers/gpio/tegra_gpio.c | 67 +++++--- drivers/serial/serial-uclass.c | 8 +- drivers/serial/serial_tegra.c | 16 ++ include/asm-generic/global_data.h | 1 + include/config_defaults.h | 6 + include/configs/tegra-common.h | 12 +- include/dm/device-internal.h | 10 ++ include/dm/util.h | 6 + .../dts => include}/dt-bindings/pinctrl/am33xx.h | 0 .../arm/dts => include}/dt-bindings/pinctrl/omap.h | 0 include/malloc.h | 60 ++++--- scripts/Makefile.spl | 1 + 28 files changed, 555 insertions(+), 270 deletions(-) delete mode 100644 arch/arm/dts/dt-bindings/gpio/gpio.h create mode 100644 common/malloc_simple.c create mode 100644 drivers/core/device-remove.c rename {arch/arm/dts => include}/dt-bindings/pinctrl/am33xx.h (100%) rename {arch/arm/dts => include}/dt-bindings/pinctrl/omap.h (100%)