[PATCH v3 0/8] arm64: synquacer: DeveloperBox updates

Hi,
Here is the 3rd version of the series to update the DeveloperBox support. I found that the latest master branch update defconfigs with savedefconfig by;
commit 2bba78076b03 ("configs: Resync with savedefconfig")
So I decided to update the patches for the defconfig so that those can be applied cleanly and use defconfig to sync it up.
And in this version, I also add 2 patches to support capsule update correctly.
[1/8] board: synquacer: Initialize SCBM SMMU at board_init() - This is a driver cleanup, split the SMMU setup from the driver.
[2/8] configs: synquacer: Make U-Boot binary position independent - This makes U-Boot position independent for usability.
[3/8] dts: synquacer: Add partition information to the spi-nor [4/8] configs: synquacer: Remove mtdparts settings and update DFU setting - These are the fixes according to the MTD subsystem update. (Thanks Marek!)
[5/8] configs: synquacer: Drop Ext2/4 support by default [6/8] configs: synquacer: Enable UEFI secure boot - These are making U-Boot more likely to EDK2 behaviors.
[7/8] configs: synquacer: Use RAW capsule image instead of FIT [8/8] configs: synquacer: Ignore OsIndications on DeveloperBox - These are for supporting capsule update on DeveloperBox.
Thank you,
---
Masami Hiramatsu (8): board: synquacer: Initialize SCBM SMMU at board_init() configs: synquacer: Make U-Boot binary position independent dts: synquacer: Add partition information to the spi-nor configs: synquacer: Remove mtdparts settings and update DFU setting configs: synquacer: Drop Ext2/4 support by default configs: synquacer: Enable UEFI secure boot configs: synquacer: Use RAW capsule image instead of FIT configs: synquacer: Ignore OsIndications on DeveloperBox
.../dts/synquacer-sc2a11-developerbox-u-boot.dtsi | 49 ++++++++++++++++++++ board/socionext/developerbox/developerbox.c | 15 ++++++ configs/synquacer_developerbox_defconfig | 11 ++-- drivers/net/sni_netsec.c | 7 --- include/configs/synquacer.h | 2 - 5 files changed, 70 insertions(+), 14 deletions(-)
-- Masami Hiramatsu masami.hiramatsu@linaro.org

Since the SCBM SMMU is not only connected to the NETSEC but also shared with the F_SDH30 (eMMC controller), that should be initialized at board level instead of NETSEC.
Move the SMMU initialization code into board support and call it from board_init().
Without this fix, if the NETSEC is disabled, the Linux eMMC ADMA cause an error because SMMU is not initialized.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org --- board/socionext/developerbox/developerbox.c | 15 +++++++++++++++ drivers/net/sni_netsec.c | 7 ------- 2 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/board/socionext/developerbox/developerbox.c b/board/socionext/developerbox/developerbox.c index 34335baec3..9552bfcdc3 100644 --- a/board/socionext/developerbox/developerbox.c +++ b/board/socionext/developerbox/developerbox.c @@ -62,6 +62,19 @@ DECLARE_GLOBAL_DATA_PTR;
#define LOAD_OFFSET 0x100
+/* SCBM System MMU is used for eMMC and NETSEC */ +#define SCBM_SMMU_ADDR (0x52e00000UL) +#define SMMU_SCR0_OFFS (0x0) +#define SMMU_SCR0_SHCFG_INNER (0x2 << 22) +#define SMMU_SCR0_MTCFG (0x1 << 20) +#define SMMU_SCR0_MEMATTR_INNER_OUTER_WB (0xf << 16) + +static void synquacer_setup_scbm_smmu(void) +{ + writel(SMMU_SCR0_SHCFG_INNER | SMMU_SCR0_MTCFG | SMMU_SCR0_MEMATTR_INNER_OUTER_WB, + SCBM_SMMU_ADDR + SMMU_SCR0_OFFS); +} + /* * Miscellaneous platform dependent initialisations */ @@ -71,6 +84,8 @@ int board_init(void)
gd->env_addr = (ulong)&default_environment[0];
+ synquacer_setup_scbm_smmu(); + return 0; }
diff --git a/drivers/net/sni_netsec.c b/drivers/net/sni_netsec.c index a9ebf6af9c..4901321d0c 100644 --- a/drivers/net/sni_netsec.c +++ b/drivers/net/sni_netsec.c @@ -1059,18 +1059,11 @@ static int netsec_of_to_plat(struct udevice *dev) return 0; }
-#define SMMU_SCR0_SHCFG_INNER (0x2 << 22) -#define SMMU_SCR0_MTCFG (0x1 << 20) -#define SMMU_SCR0_MEMATTR_INNER_OUTER_WB (0xf << 16) - static int netsec_probe(struct udevice *dev) { struct netsec_priv *priv = dev_get_priv(dev); int ret;
- writel(SMMU_SCR0_SHCFG_INNER | SMMU_SCR0_MTCFG | SMMU_SCR0_MEMATTR_INNER_OUTER_WB, - (phys_addr_t)0x52E00000); - netsec_reset_hardware(priv, true);
ret = netsec_mdiobus_init(priv, dev->name);

On Mon, Jul 12, 2021 at 07:35:44PM +0900, Masami Hiramatsu wrote:
Since the SCBM SMMU is not only connected to the NETSEC but also shared with the F_SDH30 (eMMC controller), that should be initialized at board level instead of NETSEC.
Move the SMMU initialization code into board support and call it from board_init().
Without this fix, if the NETSEC is disabled, the Linux eMMC ADMA cause an error because SMMU is not initialized.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org
Applied to u-boot/master, thanks!

Make the U-Boot binary for SynQuacer position independent so that the previous bootloader (SCP firmware or BL2) can load the U-Boot anywhere.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org --- Changes in v3: - Fix configs with savedefconfig. Changes in v2: - Fix a typo in the changelog. --- configs/synquacer_developerbox_defconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/configs/synquacer_developerbox_defconfig b/configs/synquacer_developerbox_defconfig index 090bc47524..92be72d1d0 100644 --- a/configs/synquacer_developerbox_defconfig +++ b/configs/synquacer_developerbox_defconfig @@ -1,6 +1,7 @@ CONFIG_ARM=y +CONFIG_POSITION_INDEPENDENT=y CONFIG_ARCH_SYNQUACER=y -CONFIG_SYS_TEXT_BASE=0x08200000 +CONFIG_SYS_TEXT_BASE=0x00000000 CONFIG_ENV_SIZE=0x30000 CONFIG_ENV_OFFSET=0x300000 CONFIG_ENV_SECT_SIZE=0x10000

On Mon, Jul 12, 2021 at 07:35:54PM +0900, Masami Hiramatsu wrote:
Make the U-Boot binary for SynQuacer position independent so that the previous bootloader (SCP firmware or BL2) can load the U-Boot anywhere.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org
Applied to u-boot/master, thanks!

Add partition information to the spi-nor flash. This is required for accessing NOR flash via mtdparts.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org Reviewed-by: Marek Behún marek.behun@nic.cz --- Changes in v3: - Add Marek's Reviewed-by. Changes in v2: - Add new lines to separate the partitions. --- .../dts/synquacer-sc2a11-developerbox-u-boot.dtsi | 49 ++++++++++++++++++++ 1 file changed, 49 insertions(+)
diff --git a/arch/arm/dts/synquacer-sc2a11-developerbox-u-boot.dtsi b/arch/arm/dts/synquacer-sc2a11-developerbox-u-boot.dtsi index 2f13a42235..7a56116d6f 100644 --- a/arch/arm/dts/synquacer-sc2a11-developerbox-u-boot.dtsi +++ b/arch/arm/dts/synquacer-sc2a11-developerbox-u-boot.dtsi @@ -31,6 +31,55 @@ spi-max-frequency = <31250000>; spi-rx-bus-width = <0x1>; spi-tx-bus-width = <0x1>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "BootStrap-BL1"; + reg = <0x0 0x70000>; + read-only; + }; + + partition@70000 { + label = "Flash-Writer"; + reg = <0x70000 0x90000>; + read-only; + }; + + partition@100000 { + label = "SCP-BL2"; + reg = <0x100000 0x80000>; + read-only; + }; + + partition@180000 { + label = "FIP-TFA"; + reg = <0x180000 0x78000>; + }; + + partition@1f8000 { + label = "Stage2Tables"; + reg = <0x1f8000 0x8000>; + }; + + partition@200000 { + label = "U-Boot"; + reg = <0x200000 0x100000>; + }; + + partition@300000 { + label = "UBoot-Env"; + reg = <0x300000 0x100000>; + }; + + partition@500000 { + label = "Ex-OPTEE"; + reg = <0x500000 0x200000>; + }; + }; }; };

On Mon, Jul 12, 2021 at 07:36:03PM +0900, Masami Hiramatsu wrote:
Add partition information to the spi-nor flash. This is required for accessing NOR flash via mtdparts.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org Reviewed-by: Marek Behún marek.behun@nic.cz
Applied to u-boot/master, thanks!

Since MTD partitions are based on the devicetree name, remove unneeded mtdparts settings and update DFU setting.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org --- Changes in v3: - Fix configs with savedefconfig. --- configs/synquacer_developerbox_defconfig | 2 -- include/configs/synquacer.h | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/configs/synquacer_developerbox_defconfig b/configs/synquacer_developerbox_defconfig index 92be72d1d0..16976b3c3d 100644 --- a/configs/synquacer_developerbox_defconfig +++ b/configs/synquacer_developerbox_defconfig @@ -37,8 +37,6 @@ CONFIG_CMD_EXT4=y CONFIG_CMD_FAT=y CONFIG_CMD_FS_GENERIC=y CONFIG_CMD_MTDPARTS=y -CONFIG_MTDIDS_DEFAULT="nor1=nor1" -CONFIG_MTDPARTS_DEFAULT="nor1:448k(BootStrap-BL1),576k(Flash-Writer),512k(SCP-BL2),480k(FIP-TFA),32k(Stg2-Tables),1m@2m(U-Boot),1m@3m(UBoot-Env),2m@5m(Ex-OPTEE)" CONFIG_CMD_LOG=y CONFIG_PARTITION_TYPE_GUID=y CONFIG_ENV_IS_IN_SPI_FLASH=y diff --git a/include/configs/synquacer.h b/include/configs/synquacer.h index 8fe10d7485..4503cf3f6d 100644 --- a/include/configs/synquacer.h +++ b/include/configs/synquacer.h @@ -62,7 +62,7 @@ /* #define CONFIG_SYS_PCI_64BIT 1 */
#define DEFAULT_DFU_ALT_INFO "dfu_alt_info=" \ - "mtd nor1=u-boot.bin raw 200000 100000;" \ + "mtd mx66u51235f=u-boot.bin raw 200000 100000;" \ "fip.bin raw 180000 78000;" \ "optee.bin raw 500000 100000\0"

On Mon, Jul 12, 2021 at 07:36:12PM +0900, Masami Hiramatsu wrote:
Since MTD partitions are based on the devicetree name, remove unneeded mtdparts settings and update DFU setting.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org
Applied to u-boot/master, thanks!

Since the U-Boot for the SynQuacer DeveloperBox is designed for compatible with EDK2 boot, we don't need to support Ext2/4 fs support by default. Drop it.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org --- Changes in v3: - Fix configs with savedefconfig. --- configs/synquacer_developerbox_defconfig | 2 -- 1 file changed, 2 deletions(-)
diff --git a/configs/synquacer_developerbox_defconfig b/configs/synquacer_developerbox_defconfig index 16976b3c3d..3aa507fbe5 100644 --- a/configs/synquacer_developerbox_defconfig +++ b/configs/synquacer_developerbox_defconfig @@ -32,8 +32,6 @@ CONFIG_CMD_MII=y CONFIG_CMD_PING=y CONFIG_CMD_EFIDEBUG=y CONFIG_CMD_RTC=y -CONFIG_CMD_EXT2=y -CONFIG_CMD_EXT4=y CONFIG_CMD_FAT=y CONFIG_CMD_FS_GENERIC=y CONFIG_CMD_MTDPARTS=y

On Mon, Jul 12, 2021 at 07:36:21PM +0900, Masami Hiramatsu wrote:
Since the U-Boot for the SynQuacer DeveloperBox is designed for compatible with EDK2 boot, we don't need to support Ext2/4 fs support by default. Drop it.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org
Applied to u-boot/master, thanks!

Enable UEFI secure boot on synquacer. Note that unless user setup their keys, the secure boot will not work.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org --- Changes in v3: - Fix configs with savedefconfig. --- configs/synquacer_developerbox_defconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/configs/synquacer_developerbox_defconfig b/configs/synquacer_developerbox_defconfig index 3aa507fbe5..da5714de61 100644 --- a/configs/synquacer_developerbox_defconfig +++ b/configs/synquacer_developerbox_defconfig @@ -92,3 +92,4 @@ CONFIG_EFI_SET_TIME=y CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y CONFIG_EFI_CAPSULE_ON_DISK=y CONFIG_EFI_CAPSULE_FIRMWARE_FIT=y +CONFIG_EFI_SECURE_BOOT=y

On Mon, Jul 12, 2021 at 07:36:30PM +0900, Masami Hiramatsu wrote:
Enable UEFI secure boot on synquacer. Note that unless user setup their keys, the secure boot will not work.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org
Applied to u-boot/master, thanks!

Since the recent commit;
commit b891ff18f899 ("efi_loader: Force a single FMP instance per hardware store")
forces a single FMP instances for a storage, we can not enable both RAW and FIT capsule image support at once. Since RAW capsule image support is simpler than FIT, enable RAW capsule image instead of FIT by default.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org --- configs/synquacer_developerbox_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configs/synquacer_developerbox_defconfig b/configs/synquacer_developerbox_defconfig index da5714de61..c4de622314 100644 --- a/configs/synquacer_developerbox_defconfig +++ b/configs/synquacer_developerbox_defconfig @@ -91,5 +91,5 @@ CONFIG_USB_STORAGE=y CONFIG_EFI_SET_TIME=y CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y CONFIG_EFI_CAPSULE_ON_DISK=y -CONFIG_EFI_CAPSULE_FIRMWARE_FIT=y +CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y CONFIG_EFI_SECURE_BOOT=y

On Mon, Jul 12, 2021 at 07:36:39PM +0900, Masami Hiramatsu wrote:
Since the recent commit;
commit b891ff18f899 ("efi_loader: Force a single FMP instance per hardware store")
forces a single FMP instances for a storage, we can not enable both RAW and FIT capsule image support at once. Since RAW capsule image support is simpler than FIT, enable RAW capsule image instead of FIT by default.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org
Applied to u-boot/master, thanks!

Since we can not set OsIndications from Runtime Services SetVariables at this moment, it is better to ignore the OsIndications if there is any capsule file in the correct place.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org --- configs/synquacer_developerbox_defconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/configs/synquacer_developerbox_defconfig b/configs/synquacer_developerbox_defconfig index c4de622314..ed372f7df9 100644 --- a/configs/synquacer_developerbox_defconfig +++ b/configs/synquacer_developerbox_defconfig @@ -91,5 +91,6 @@ CONFIG_USB_STORAGE=y CONFIG_EFI_SET_TIME=y CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y CONFIG_EFI_CAPSULE_ON_DISK=y +CONFIG_EFI_IGNORE_OSINDICATIONS=y CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y CONFIG_EFI_SECURE_BOOT=y

On Mon, Jul 12, 2021 at 07:36:49PM +0900, Masami Hiramatsu wrote:
Since we can not set OsIndications from Runtime Services SetVariables at this moment, it is better to ignore the OsIndications if there is any capsule file in the correct place.
Signed-off-by: Masami Hiramatsu masami.hiramatsu@linaro.org
Applied to u-boot/master, thanks!
participants (2)
-
Masami Hiramatsu
-
Tom Rini