[PATCH v2 0/6] arm64: synquacer: DeveloperBox updates

Hi,
Here is the 2nd version of the series to update the DeveloperBox support. This version is just fixing coding style and typo. So no functional changes.
[1/6] board: synquacer: Initialize SCBM SMMU at board_init() - This is a driver cleanup, split the SMMU setup from the driver.
[2/6] configs: synquacer: Make U-Boot binary position independent - This makes U-Boot position independent for usability.
[3/6] dts: synquacer: Add partition information to the spi-nor [4/6] configs: synquacer: Remove mtdparts settings and update DFU setting - These are the fixes according to the MTD subsystem update. (Thanks Marek!)
[5/6] configs: synquacer: Drop Ext2/4 support by default [6/6] configs: synquacer: Enable UEFI secure boot - These are making U-Boot more likely to EDK2 behaviors.
Thank you,
---
Masami Hiramatsu (6): 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
.../dts/synquacer-sc2a11-developerbox-u-boot.dtsi | 49 ++++++++++++++++++++ board/socionext/developerbox/developerbox.c | 15 ++++++ configs/synquacer_developerbox_defconfig | 9 ++-- drivers/net/sni_netsec.c | 7 --- include/configs/synquacer.h | 2 - 5 files changed, 69 insertions(+), 13 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);

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 v2: - Fix a typo in the changelog. --- configs/synquacer_developerbox_defconfig | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/configs/synquacer_developerbox_defconfig b/configs/synquacer_developerbox_defconfig index d42db9a1d6..fe30f0169f 100644 --- a/configs/synquacer_developerbox_defconfig +++ b/configs/synquacer_developerbox_defconfig @@ -1,11 +1,13 @@ CONFIG_ARM=y CONFIG_ARCH_SYNQUACER=y -CONFIG_SYS_TEXT_BASE=0x08200000 +CONFIG_SYS_TEXT_BASE=0x00000000 CONFIG_ENV_SIZE=0x30000 CONFIG_ENV_OFFSET=0x300000 CONFIG_DEBUG_UART_BASE=0x2a400000 CONFIG_DEBUG_UART_CLOCK=62500000 CONFIG_ENV_SECT_SIZE=0x10000 +CONFIG_POSITION_INDEPENDENT=y +CONFIG_INIT_SP_RELATIVE=y CONFIG_DM_GPIO=y CONFIG_TARGET_DEVELOPERBOX=y CONFIG_DEFAULT_DEVICE_TREE="synquacer-sc2a11-developerbox"

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 --- 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 Sun, 11 Jul 2021 09:46:19 +0900 Masami Hiramatsu masami.hiramatsu@linaro.org 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
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>;
};
}; };};
Reviewed-by: Marek Behún marek.behun@nic.cz

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 --- 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 fe30f0169f..bea13be874 100644 --- a/configs/synquacer_developerbox_defconfig +++ b/configs/synquacer_developerbox_defconfig @@ -45,8 +45,6 @@ CONFIG_CMD_EXT2=y CONFIG_CMD_EXT4=y CONFIG_CMD_FAT=y CONFIG_CMD_MTDPARTS=y -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_MTDIDS_DEFAULT="nor1=nor1" CONFIG_CMD_LOG=y CONFIG_PARTITION_TYPE_GUID=y CONFIG_EFI_PARTITION=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"

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 --- configs/synquacer_developerbox_defconfig | 2 -- 1 file changed, 2 deletions(-)
diff --git a/configs/synquacer_developerbox_defconfig b/configs/synquacer_developerbox_defconfig index bea13be874..208c939412 100644 --- a/configs/synquacer_developerbox_defconfig +++ b/configs/synquacer_developerbox_defconfig @@ -41,8 +41,6 @@ CONFIG_CMD_SATA=y CONFIG_CMD_NVME=y CONFIG_CMD_USB=y CONFIG_CMD_FS_GENERIC=y -CONFIG_CMD_EXT2=y -CONFIG_CMD_EXT4=y CONFIG_CMD_FAT=y CONFIG_CMD_MTDPARTS=y CONFIG_CMD_LOG=y

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 --- configs/synquacer_developerbox_defconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/configs/synquacer_developerbox_defconfig b/configs/synquacer_developerbox_defconfig index 208c939412..fba8fa2deb 100644 --- a/configs/synquacer_developerbox_defconfig +++ b/configs/synquacer_developerbox_defconfig @@ -115,6 +115,7 @@ CONFIG_EFI_CAPSULE_FIRMWARE=y CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y CONFIG_EFI_CAPSULE_FIRMWARE_FIT=y CONFIG_EFI_CAPSULE_FMP_HEADER=y +CONFIG_EFI_SECURE_BOOT=y CONFIG_FLASH_CFI_MTD=y CONFIG_CMD_DFU=y CONFIG_DFU_TFTP=y

Hi,
I found that the latest master had defconfig cleanup by commit 2bba78076b03 ("configs: Resync with savedefconfig") including configs/synquacer_developerbox_defconfig. So the configs patch must be updated.
Also, when testing capsule update on U-Boot, I need to change some options, so I will add new patches on this series in the next version.
Thank you,
2021年7月11日(日) 9:45 Masami Hiramatsu masami.hiramatsu@linaro.org:
Hi,
Here is the 2nd version of the series to update the DeveloperBox support. This version is just fixing coding style and typo. So no functional changes.
[1/6] board: synquacer: Initialize SCBM SMMU at board_init()
- This is a driver cleanup, split the SMMU setup from the driver.
[2/6] configs: synquacer: Make U-Boot binary position independent
- This makes U-Boot position independent for usability.
[3/6] dts: synquacer: Add partition information to the spi-nor [4/6] configs: synquacer: Remove mtdparts settings and update DFU setting
- These are the fixes according to the MTD subsystem update. (Thanks Marek!)
[5/6] configs: synquacer: Drop Ext2/4 support by default [6/6] configs: synquacer: Enable UEFI secure boot
- These are making U-Boot more likely to EDK2 behaviors.
Thank you,
Masami Hiramatsu (6): 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
.../dts/synquacer-sc2a11-developerbox-u-boot.dtsi | 49 ++++++++++++++++++++ board/socionext/developerbox/developerbox.c | 15 ++++++ configs/synquacer_developerbox_defconfig | 9 ++-- drivers/net/sni_netsec.c | 7 --- include/configs/synquacer.h | 2 - 5 files changed, 69 insertions(+), 13 deletions(-)
-- Masami Hiramatsu masami.hiramatsu@linaro.org
participants (2)
-
Marek Behun
-
Masami Hiramatsu