[PATCH 00/30] dm: Implement OF_PLATDATA_INST in driver model (part E)

Walter Lozano walter.lozano at collabora.com
Wed Jan 6 03:58:25 CET 2021


Hi Simon,

On 12/31/20 1:09 AM, Simon Glass wrote:
> This series builds on the recent dtoc implementation of build-time device
> instantiation.
>
> It adds the required driver model support, which is basically a few more
> data structures.
>
> With this, sandbox_spl and chromebook_coral both use the new feature.
>
> For coral TPL there is a 1.5KB code-size reduction and a 1.75KB data-size
> increase:
>
>     text   data     bss     dec     hex
>    18836   3080      12   21928    55a8    original
>    17229   4896      12   22137    5679    with OF_PLATDATA_INST
>    17277   4896      12   22185    56a9    with OF_PLATDATA_RT
>
> The extra data size is due to the build-time devices which are now
> included in the image instead of being built at runtime. Also the private
> data for each device is allocated in the data region at present, even
> through much of it is just zeroes.
>
> The reduction in code size is due to not needing to bind devices at
> runtime, as a well as a simplified probe() function. Coral requires that
> data be copied out to RAM before being updated, so that adds a small
> amount to size (shown in the third line).
>
> Quite a lot of future work is possible, including reducing the size of
> data structures. See [1] for more ideas. But this series implements the
> basic feature.
>
> To try this out on your board, define CONFIG_SPL_OF_PLATDATA_INST and see
> what you get.
>
> Note: SPL tests do not yet pass with this series. The driver_rt struct
> is not set up so device_get_by_driver_info_idx() does not work. This means
> that looking up phandles will fail. This will be addressed in a v2
> series, along with documentation updates and a little more information on
> code-size impact.
>
> This series is available at u-boot-dm/tin-working
>
> [1]  https://lists.denx.de/pipermail/u-boot/2020-July/418433.html

Thanks for this series. I have done a quick review, but I plan to do a 
deeper one and some testing during the following days.

Regards,

Walter


>
> Simon Glass (30):
>    sandbox: Drop debug message in os_spl_to_uboot()
>    linker_lists: Allow use in data structures
>    dm: core: Add macros to access the new linker lists
>    dm: core: Allow dropping run-time binding of devices
>    dm: core: Adjust uclass setup with of-platdata
>    dm: core: Set up driver model for OF_PLATDATA_INST
>    dm: core: Skip adding uclasses with OF_PLATDATA_INST
>    dm: Add the new dtoc-generated files to the build
>    dm: core: Include dt-decl.h automatically
>    dm: test: Avoid destroying uclasses with of-platdata-inst
>    clk: sandbox: Move priv/plat data to a header file
>    clk: fixed-rate: Export driver parts for OF_PLATDATA_INST
>    clk: sandbox: Create a special fixed-rate driver
>    sandbox: Create a new sandbox_noinst build
>    test: Run sandbox_spl tests on sandbox_noinst
>    azure/gitlab: Add tests for sandbox_noinst
>    dm: core: Add an option to support SPL in read-only memory
>    dm: core: Create a struct for device runtime info
>    dm: core: Move flags to device-runtime info
>    dm: core: Allow storing priv/plat data separately
>    sandbox: Define a region for device priv/plat data
>    dm: core: Use separate priv/plat data region
>    x86: Define a region for device priv/plat data
>    x86: apl: Fix the header order in pmc
>    x86: apl: Tell of-platdata about a required header file
>    x86: itss: Tidy up bind() for of-platdata-inst
>    x86: Support a fake PCI device with of-platdata-inst
>    x86: Don't include reset driver in SPL
>    x86: coral: Drop ACPI properties from of-platdata
>    x86: apl: Use read-only SPL and new of-platdata
>
>   .azure-pipelines.yml               |   3 +
>   .gitlab-ci.yml                     |  10 +-
>   arch/sandbox/cpu/os.c              |   1 -
>   arch/sandbox/cpu/u-boot-spl.lds    |   8 +
>   arch/sandbox/dts/sandbox.dtsi      |   2 +-
>   arch/sandbox/include/asm/clk.h     |  24 +++
>   arch/x86/cpu/apollolake/Kconfig    |   2 +
>   arch/x86/cpu/apollolake/pmc.c      |   2 +-
>   arch/x86/cpu/apollolake/punit.c    |   1 +
>   arch/x86/cpu/intel_common/itss.c   |   5 +-
>   arch/x86/cpu/u-boot-spl.lds        |   8 +
>   arch/x86/dts/reset.dtsi            |   2 +-
>   arch/x86/lib/tpl.c                 |   1 +
>   board/sandbox/MAINTAINERS          |   7 +
>   common/spl/Kconfig                 |  24 +++
>   configs/chromebook_coral_defconfig |   1 +
>   configs/sandbox_noinst_defconfig   | 229 +++++++++++++++++++++++++++++
>   configs/sandbox_spl_defconfig      |   1 +
>   drivers/clk/clk_fixed_rate.c       |  14 +-
>   drivers/clk/clk_sandbox.c          |  40 ++++-
>   drivers/clk/clk_sandbox_test.c     |   6 -
>   drivers/core/device.c              |  83 ++++++++---
>   drivers/core/root.c                |  83 +++++++++--
>   drivers/core/uclass.c              |   5 +-
>   dts/Kconfig                        |  38 +++++
>   include/asm-generic/global_data.h  |  22 +++
>   include/asm-generic/sections.h     |   3 +
>   include/dm/device-internal.h       |  26 ++++
>   include/dm/device.h                |  38 ++++-
>   include/dm/root.h                  |   3 +
>   include/dm/uclass-internal.h       |  23 +++
>   include/dm/uclass.h                |  20 +++
>   include/dm/util.h                  |   9 ++
>   include/dt-structs.h               |   2 +
>   include/linker_lists.h             |  28 ++++
>   include/linux/clk-provider.h       |   5 +
>   scripts/Makefile.spl               |   3 +-
>   test/dm/of_platdata.c              |   2 +-
>   test/dm/test-main.c                |   3 +-
>   test/run                           |   4 +
>   40 files changed, 724 insertions(+), 67 deletions(-)
>   create mode 100644 configs/sandbox_noinst_defconfig
>


More information about the U-Boot mailing list