[PATCH 0/2] Add sf SPI flash support to distro boot

This patchset adds support for booting from SPI flash via the SPI flash subsystem commands to distro boot. This addition is useful for allowing small embedded devices that support booting from various storage media (USB thumb drives, SD cards, eMMC) to boot from SPI flash, too using a common framework.
I'll use this feature for supporting the Pine64 Pinebook Pro, an 14" RK3399 ARM based laptop. I'll send a patchset for that device, soon.
Cc-ing some of the latest commit signers since there does not seem to be a dedicated maintainer for distro boot.
Tobias
Tobias Schramm (2): distro_bootcmd: make BOOTENV_DEV_NAME and BOOTENV_DEV macro variadic distro_bootcmd: add sf SPI flash boot support
include/config_distro_bootcmd.h | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-)

Using a variadic macro allows boot device macros to take additional arguments
Signed-off-by: Tobias Schramm t.schramm@manjaro.org Cc: Patrick Wildt patrick@blueri.se Cc: AKASHI Takahiro takahiro.akashi@linaro.org --- include/config_distro_bootcmd.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h index fc0935fa21..aacfb309da 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -398,13 +398,13 @@ BOOT_TARGET_DEVICES_references_PXE_without_CONFIG_CMD_DHCP_or_PXE #endif
-#define BOOTENV_DEV_NAME(devtypeu, devtypel, instance) \ - BOOTENV_DEV_NAME_##devtypeu(devtypeu, devtypel, instance) +#define BOOTENV_DEV_NAME(devtypeu, devtypel, instance, ...) \ + BOOTENV_DEV_NAME_##devtypeu(devtypeu, devtypel, instance, ##__VA_ARGS__) #define BOOTENV_BOOT_TARGETS \ "boot_targets=" BOOT_TARGET_DEVICES(BOOTENV_DEV_NAME) "\0"
-#define BOOTENV_DEV(devtypeu, devtypel, instance) \ - BOOTENV_DEV_##devtypeu(devtypeu, devtypel, instance) +#define BOOTENV_DEV(devtypeu, devtypel, instance, ...) \ + BOOTENV_DEV_##devtypeu(devtypeu, devtypel, instance, ##__VA_ARGS__) #define BOOTENV \ BOOTENV_SHARED_HOST \ BOOTENV_SHARED_MMC \

This commit adds generic boot support for SPI flash. Adding SPI flash support to a device can be achieved by adding following declaration to the BOOT_TARGET_DEVICES
func(SF, sf, <spibus>[:<cs>], <mtd partition>)
Signed-off-by: Tobias Schramm t.schramm@manjaro.org Cc: Patrick Wildt patrick@blueri.se Cc: AKASHI Takahiro takahiro.akashi@linaro.org --- include/config_distro_bootcmd.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+)
diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h index aacfb309da..02b70dd271 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -67,6 +67,27 @@ BOOT_TARGET_DEVICES_references_MMC_without_CONFIG_CMD_MMC #endif
+#ifdef CONFIG_CMD_SF +#define BOOTENV_SHARED_SF \ + "sf_boot=if sf probe ${devnum}; then " \ + "sf read ${scriptaddr} ${distro_bootpart} && "\ + "source ${scriptaddr}; " \ + "fi\0" +#define BOOTENV_DEV_SF(devtypeu, devtypel, instance, bootpart) \ + "bootcmd_" #devtypel #instance "=" \ + "devnum=" #instance "; " \ + "distro_bootpart=" #bootpart "; " \ + "run " #devtypel "_boot\0" +#define BOOTENV_DEV_NAME_SF(devtypeu, devtypel, instance, bootpart) \ + #devtypel #instance " " +#else +#define BOOTENV_SHARED_MMC +#define BOOTENV_DEV_SF \ + BOOT_TARGET_DEVICES_references_SF_without_CONFIG_CMD_SF +#define BOOTENV_DEV_NAME_SF \ + BOOT_TARGET_DEVICES_references_SF_without_CONFIG_CMD_SF +#endif + #ifdef CONFIG_CMD_UBIFS #define BOOTENV_SHARED_UBIFS \ "ubifs_boot=" \ @@ -408,6 +429,7 @@ #define BOOTENV \ BOOTENV_SHARED_HOST \ BOOTENV_SHARED_MMC \ + BOOTENV_SHARED_SF \ BOOTENV_SHARED_PCI \ BOOTENV_SHARED_USB \ BOOTENV_SHARED_SATA \

On Tue, Apr 21, 2020 at 09:26:35PM +0200, Tobias Schramm wrote:
This commit adds generic boot support for SPI flash. Adding SPI flash support to a device can be achieved by adding following declaration to the BOOT_TARGET_DEVICES
func(SF, sf, <spibus>[:<cs>], <mtd partition>)
Signed-off-by: Tobias Schramm t.schramm@manjaro.org Cc: Patrick Wildt patrick@blueri.se Cc: AKASHI Takahiro takahiro.akashi@linaro.org
include/config_distro_bootcmd.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+)
diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h index aacfb309da..02b70dd271 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -67,6 +67,27 @@ BOOT_TARGET_DEVICES_references_MMC_without_CONFIG_CMD_MMC #endif
+#ifdef CONFIG_CMD_SF +#define BOOTENV_SHARED_SF \
"sf_boot=if sf probe ${devnum}; then " \
"sf read ${scriptaddr} ${distro_bootpart} && "\
"source ${scriptaddr}; " \
"fi\0"
+#define BOOTENV_DEV_SF(devtypeu, devtypel, instance, bootpart) \
- "bootcmd_" #devtypel #instance "=" \
"devnum=" #instance "; " \
"distro_bootpart=" #bootpart "; " \
"run " #devtypel "_boot\0"
+#define BOOTENV_DEV_NAME_SF(devtypeu, devtypel, instance, bootpart) \
- #devtypel #instance " "
+#else +#define BOOTENV_SHARED_MMC +#define BOOTENV_DEV_SF \
- BOOT_TARGET_DEVICES_references_SF_without_CONFIG_CMD_SF
+#define BOOTENV_DEV_NAME_SF \
- BOOT_TARGET_DEVICES_references_SF_without_CONFIG_CMD_SF
+#endif
#ifdef CONFIG_CMD_UBIFS #define BOOTENV_SHARED_UBIFS \ "ubifs_boot=" \ @@ -408,6 +429,7 @@ #define BOOTENV \ BOOTENV_SHARED_HOST \ BOOTENV_SHARED_MMC \
- BOOTENV_SHARED_SF \ BOOTENV_SHARED_PCI \ BOOTENV_SHARED_USB \ BOOTENV_SHARED_SATA \
I'm adding Jagan here as he's been working on something similar and includes moving the new logic to a new include file. Thanks!
participants (2)
-
Tobias Schramm
-
Tom Rini