Message ID | 20201231041000.660925-1-sjg@chromium.org |
---|---|
Headers | show |
Series | dm: Implement OF_PLATDATA_INST in driver model (part E) | expand |
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 >