From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [PATCH v2 00/37] dm: Implement OF_PLATDATA_INST in driver model (part E)
Date: Wed, 3 Feb 2021 09:43:16 -0700 [thread overview]
Message-ID: <20210203164353.2577985-1-sjg@chromium.org> (raw)
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
Changes in v2:
- Update to deal with test refactoring series
- Use separate OF_PLATDATA_DRIVER_RT Kconfigs for driver run-time data
- Update the condition for dm_test_of_plat_dev()
- Leave the flags_ memeber in the same struct position
Simon Glass (37):
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
dm: core: Drop device_get_by_driver_info()
dm: core: Drop uclass_find_device_by_phandle() with of-platdata
sandbox: i2c: Move platdata structs to header files
dm: Rename device_get_by_driver_info_idx()
sandbox_spl: Increase SPL malloc() size
sandbox: i2c: Support i2c emulation with of-platdata
Revert "sandbox: Disable I2C emulators in SPL"
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 | 12 +-
arch/sandbox/include/asm/clk.h | 24 +++
arch/sandbox/include/asm/i2c.h | 15 ++
arch/sandbox/include/asm/rtc.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 | 3 +
drivers/clk/clk-uclass.c | 2 +-
drivers/clk/clk_fixed_rate.c | 14 +-
drivers/clk/clk_sandbox.c | 40 ++++-
drivers/clk/clk_sandbox_test.c | 6 -
drivers/core/device.c | 107 +++++++++-----
drivers/core/root.c | 85 +++++++++--
drivers/core/uclass.c | 7 +-
drivers/i2c/Makefile | 2 -
drivers/i2c/i2c-emul-uclass.c | 26 ++--
drivers/misc/irq-uclass.c | 2 +-
drivers/mmc/fsl_esdhc_imx.c | 3 +-
drivers/rtc/i2c_rtc_emul.c | 19 ---
drivers/rtc/sandbox_rtc.c | 13 ++
dts/Kconfig | 58 ++++++++
include/asm-generic/global_data.h | 26 +++-
include/asm-generic/sections.h | 3 +
include/dm/device-internal.h | 26 ++++
include/dm/device.h | 63 +++++---
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/i2c.h | 15 ++
include/linker_lists.h | 28 ++++
include/linux/clk-provider.h | 5 +
scripts/Makefile.spl | 3 +-
test/dm/of_platdata.c | 32 ++--
test/run | 4 +
test/test-main.c | 30 ++--
50 files changed, 885 insertions(+), 173 deletions(-)
create mode 100644 configs/sandbox_noinst_defconfig
--
2.30.0.365.g02bc693789-goog
next reply other threads:[~2021-02-03 16:43 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-03 16:43 Simon Glass [this message]
2021-02-03 16:43 ` [PATCH v2 01/37] sandbox: Drop debug message in os_spl_to_uboot() Simon Glass
2021-02-04 13:36 ` Heinrich Schuchardt
2021-02-03 16:43 ` [PATCH v2 02/37] linker_lists: Allow use in data structures Simon Glass
2021-02-04 13:54 ` Heinrich Schuchardt
2021-02-07 14:37 ` Simon Glass
2021-02-03 16:43 ` [PATCH v2 03/37] dm: core: Add macros to access the new linker lists Simon Glass
2021-02-04 13:46 ` Heinrich Schuchardt
2021-02-03 16:43 ` [PATCH v2 04/37] dm: core: Allow dropping run-time binding of devices Simon Glass
2021-02-04 13:57 ` Heinrich Schuchardt
2021-02-03 16:43 ` [PATCH v2 05/37] dm: core: Adjust uclass setup with of-platdata Simon Glass
2021-02-03 16:43 ` [PATCH v2 06/37] dm: core: Set up driver model for OF_PLATDATA_INST Simon Glass
2021-02-03 16:43 ` [PATCH v2 07/37] dm: core: Skip adding uclasses with OF_PLATDATA_INST Simon Glass
2021-02-03 16:43 ` [PATCH v2 08/37] dm: Add the new dtoc-generated files to the build Simon Glass
2021-02-03 16:43 ` [PATCH v2 09/37] dm: core: Include dt-decl.h automatically Simon Glass
2021-02-03 16:43 ` [PATCH v2 10/37] dm: test: Avoid destroying uclasses with of-platdata-inst Simon Glass
2021-02-03 16:43 ` [PATCH v2 11/37] clk: sandbox: Move priv/plat data to a header file Simon Glass
2021-02-03 16:43 ` [PATCH v2 12/37] clk: fixed-rate: Export driver parts for OF_PLATDATA_INST Simon Glass
2021-02-03 16:43 ` [PATCH v2 13/37] clk: sandbox: Create a special fixed-rate driver Simon Glass
2021-02-03 16:43 ` [PATCH v2 14/37] dm: core: Drop device_get_by_driver_info() Simon Glass
2021-02-03 16:43 ` [PATCH v2 15/37] dm: core: Drop uclass_find_device_by_phandle() with of-platdata Simon Glass
2021-02-03 16:43 ` [PATCH v2 16/37] sandbox: i2c: Move platdata structs to header files Simon Glass
2021-02-03 16:43 ` [PATCH v2 17/37] dm: Rename device_get_by_driver_info_idx() Simon Glass
2021-02-03 16:43 ` [PATCH v2 18/37] sandbox_spl: Increase SPL malloc() size Simon Glass
2021-02-04 14:01 ` Heinrich Schuchardt
2021-02-03 16:43 ` [PATCH v2 19/37] sandbox: i2c: Support i2c emulation with of-platdata Simon Glass
2021-02-03 16:43 ` [PATCH v2 20/37] Revert "sandbox: Disable I2C emulators in SPL" Simon Glass
2021-02-03 16:43 ` [PATCH v2 21/37] sandbox: Create a new sandbox_noinst build Simon Glass
2021-02-03 16:43 ` [PATCH v2 22/37] test: Run sandbox_spl tests on sandbox_noinst Simon Glass
2021-02-03 16:43 ` [PATCH v2 23/37] azure/gitlab: Add tests for sandbox_noinst Simon Glass
2021-02-03 16:43 ` [PATCH v2 24/37] dm: core: Add an option to support SPL in read-only memory Simon Glass
2021-02-03 16:43 ` [PATCH v2 25/37] dm: core: Create a struct for device runtime info Simon Glass
2021-02-03 16:43 ` [PATCH v2 26/37] dm: core: Move flags to device-runtime info Simon Glass
2021-02-03 16:43 ` [PATCH v2 27/37] dm: core: Allow storing priv/plat data separately Simon Glass
2021-02-03 16:43 ` [PATCH v2 28/37] sandbox: Define a region for device priv/plat data Simon Glass
2021-02-03 16:43 ` [PATCH v2 29/37] dm: core: Use separate priv/plat data region Simon Glass
2021-02-03 16:43 ` [PATCH v2 30/37] x86: Define a region for device priv/plat data Simon Glass
2021-02-03 16:43 ` [PATCH v2 31/37] x86: apl: Fix the header order in pmc Simon Glass
2021-02-03 16:43 ` [PATCH v2 32/37] x86: apl: Tell of-platdata about a required header file Simon Glass
2021-02-03 16:43 ` [PATCH v2 33/37] x86: itss: Tidy up bind() for of-platdata-inst Simon Glass
2021-02-03 16:43 ` [PATCH v2 34/37] x86: Support a fake PCI device with of-platdata-inst Simon Glass
2021-02-03 16:43 ` [PATCH v2 35/37] x86: Don't include reset driver in SPL Simon Glass
2021-02-03 16:43 ` [PATCH v2 36/37] x86: coral: Drop ACPI properties from of-platdata Simon Glass
2021-02-03 16:43 ` [PATCH v2 37/37] x86: apl: Use read-only SPL and new of-platdata Simon Glass
2021-02-04 7:48 ` [PATCH v2 00/37] dm: Implement OF_PLATDATA_INST in driver model (part E) Heinrich Schuchardt
2021-02-04 15:08 ` Simon Glass
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210203164353.2577985-1-sjg@chromium.org \
--to=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.