[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