[U-Boot] [PATCHv3] arm: socfpga: Enable saveenv for SD/MMC

From: Dinh Nguyen dinguyen@opensource.altera.com
Enable the able to save the environment variables when SD/MMC is used.
Signed-off-by: Dinh Nguyen dinguyen@opensource.altera.com --- v3: Only define ENV_IS_NOWHERE if env is not in MMC, NAND, FAT, and SPI_FLASH v2: Move this option to be on a per-board basis Add config for socfpga_cyclone5 and socfpga_arria5 --- include/configs/socfpga_arria5_socdk.h | 4 ++++ include/configs/socfpga_common.h | 5 +++++ include/configs/socfpga_cyclone5_socdk.h | 4 ++++ include/configs/socfpga_de0_nano_soc.h | 4 ++++ include/configs/socfpga_sockit.h | 4 ++++ 5 files changed, 21 insertions(+)
diff --git a/include/configs/socfpga_arria5_socdk.h b/include/configs/socfpga_arria5_socdk.h index 3193684..b75b0a2 100644 --- a/include/configs/socfpga_arria5_socdk.h +++ b/include/configs/socfpga_arria5_socdk.h @@ -59,6 +59,10 @@
#endif
+#define CONFIG_ENV_IS_IN_MMC +#define CONFIG_SYS_MMC_ENV_DEV 0 /* device 0 */ +#define CONFIG_ENV_OFFSET 512 /* just after the MBR */ + /* USB */ #ifdef CONFIG_CMD_USB #define CONFIG_USB_DWC2_REG_ADDR SOCFPGA_USB1_ADDRESS diff --git a/include/configs/socfpga_common.h b/include/configs/socfpga_common.h index a2811ba..b3fba5b 100644 --- a/include/configs/socfpga_common.h +++ b/include/configs/socfpga_common.h @@ -281,7 +281,12 @@ unsigned int cm_get_qspi_controller_clk_hz(void); #define CONFIG_SYS_CONSOLE_IS_IN_ENV #define CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE #define CONFIG_SYS_CONSOLE_ENV_OVERWRITE +#if !defined CONFIG_ENV_IS_IN_MMC && \ + !defined CONFIG_ENV_IS_IN_NAND && \ + !defined CONFIG_ENV_IS_IN_FAT && \ + !defined CONFIG_ENV_IS_IN_SPI_FLASH #define CONFIG_ENV_IS_NOWHERE +#endif #define CONFIG_ENV_SIZE 4096
/* diff --git a/include/configs/socfpga_cyclone5_socdk.h b/include/configs/socfpga_cyclone5_socdk.h index 9e733e5..fa67b25 100644 --- a/include/configs/socfpga_cyclone5_socdk.h +++ b/include/configs/socfpga_cyclone5_socdk.h @@ -59,6 +59,10 @@
#endif
+#define CONFIG_ENV_IS_IN_MMC +#define CONFIG_SYS_MMC_ENV_DEV 0 /* device 0 */ +#define CONFIG_ENV_OFFSET 512 /* just after the MBR */ + /* USB */ #ifdef CONFIG_CMD_USB #define CONFIG_USB_DWC2_REG_ADDR SOCFPGA_USB1_ADDRESS diff --git a/include/configs/socfpga_de0_nano_soc.h b/include/configs/socfpga_de0_nano_soc.h index 2508d03..191e1f7 100644 --- a/include/configs/socfpga_de0_nano_soc.h +++ b/include/configs/socfpga_de0_nano_soc.h @@ -55,6 +55,10 @@
#endif
+#define CONFIG_ENV_IS_IN_MMC +#define CONFIG_SYS_MMC_ENV_DEV 0 /* device 0 */ +#define CONFIG_ENV_OFFSET 512 /* just after the MBR */ + /* USB */ #ifdef CONFIG_CMD_USB #define CONFIG_USB_DWC2_REG_ADDR SOCFPGA_USB1_ADDRESS diff --git a/include/configs/socfpga_sockit.h b/include/configs/socfpga_sockit.h index 747e988..6c71ef4 100644 --- a/include/configs/socfpga_sockit.h +++ b/include/configs/socfpga_sockit.h @@ -59,6 +59,10 @@
#endif
+#define CONFIG_ENV_IS_IN_MMC +#define CONFIG_SYS_MMC_ENV_DEV 0 /* device 0 */ +#define CONFIG_ENV_OFFSET 512 /* just after the MBR */ + /* USB */ #ifdef CONFIG_CMD_USB #define CONFIG_USB_DWC2_REG_ADDR SOCFPGA_USB1_ADDRESS

On Wednesday, September 23, 2015 at 09:21:48 PM, dinguyen@opensource.altera.com wrote:
From: Dinh Nguyen dinguyen@opensource.altera.com
Enable the able to save the environment variables when SD/MMC is used.
Signed-off-by: Dinh Nguyen dinguyen@opensource.altera.com
v3: Only define ENV_IS_NOWHERE if env is not in MMC, NAND, FAT, and SPI_FLASH v2: Move this option to be on a per-board basis Add config for socfpga_cyclone5 and socfpga_arria5
[...]
Hi!
--- a/include/configs/socfpga_common.h +++ b/include/configs/socfpga_common.h @@ -281,7 +281,12 @@ unsigned int cm_get_qspi_controller_clk_hz(void); #define CONFIG_SYS_CONSOLE_IS_IN_ENV #define CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE #define CONFIG_SYS_CONSOLE_ENV_OVERWRITE +#if !defined CONFIG_ENV_IS_IN_MMC && \
- !defined CONFIG_ENV_IS_IN_NAND && \
- !defined CONFIG_ENV_IS_IN_FAT && \
- !defined CONFIG_ENV_IS_IN_SPI_FLASH
This really doesn't scale, I can have env in UBI for example, or on EEPROM and this condition would trigger and cause a problem. Just move the CONFIG_ENV_IS_NOWHERE into the respective board files and be done with it. This bit of duplication is pretty OK I'd say.
#define CONFIG_ENV_IS_NOWHERE +#endif #define CONFIG_ENV_SIZE 4096
/*
[...]
Sorry to pester you this way, the rest is great of course :)
Best regards, Marek Vasut

Hi!
From: Dinh Nguyen dinguyen@opensource.altera.com
Enable the able to save the environment variables when SD/MMC is used.
Signed-off-by: Dinh Nguyen dinguyen@opensource.altera.com
v3: Only define ENV_IS_NOWHERE if env is not in MMC, NAND, FAT, and SPI_FLASH v2: Move this option to be on a per-board basis Add config for socfpga_cyclone5 and socfpga_arria5
include/configs/socfpga_arria5_socdk.h | 4 ++++ include/configs/socfpga_common.h | 5 +++++ include/configs/socfpga_cyclone5_socdk.h | 4 ++++ include/configs/socfpga_de0_nano_soc.h | 4 ++++ include/configs/socfpga_sockit.h | 4 ++++ 5 files changed, 21 insertions(+)
diff --git a/include/configs/socfpga_arria5_socdk.h b/include/configs/socfpga_arria5_socdk.h index 3193684..b75b0a2 100644 --- a/include/configs/socfpga_arria5_socdk.h +++ b/include/configs/socfpga_arria5_socdk.h @@ -59,6 +59,10 @@
#endif
+#define CONFIG_ENV_IS_IN_MMC +#define CONFIG_SYS_MMC_ENV_DEV 0 /* device 0 */ +#define CONFIG_ENV_OFFSET 512 /* just after the MBR */
/* USB */ #ifdef CONFIG_CMD_USB #define CONFIG_USB_DWC2_REG_ADDR SOCFPGA_USB1_ADDRESS diff --git a/include/configs/socfpga_common.h b/include/configs/socfpga_common.h index a2811ba..b3fba5b 100644 --- a/include/configs/socfpga_common.h +++ b/include/configs/socfpga_common.h @@ -281,7 +281,12 @@ unsigned int cm_get_qspi_controller_clk_hz(void); #define CONFIG_SYS_CONSOLE_IS_IN_ENV #define CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE #define CONFIG_SYS_CONSOLE_ENV_OVERWRITE +#if !defined CONFIG_ENV_IS_IN_MMC && \
- !defined CONFIG_ENV_IS_IN_NAND && \
- !defined CONFIG_ENV_IS_IN_FAT && \
- !defined CONFIG_ENV_IS_IN_SPI_FLASH
#define CONFIG_ENV_IS_NOWHERE +#endif #define CONFIG_ENV_SIZE 4096
Actually... if we decided that position of u-boot environment is board-specific, size should be board-specific, too.
But it might be better to just define
#define ENV_IN_MMC_SECTOR_1
in each board, and have the common code in socfpga_common.h... so that we can change environment size for all boards using "after mmc" layout, for example.
Ouch and 4K is way too small. Pavel

On Thursday, September 24, 2015 at 07:47:46 PM, Pavel Machek wrote:
Hi!
From: Dinh Nguyen dinguyen@opensource.altera.com
Enable the able to save the environment variables when SD/MMC is used.
Signed-off-by: Dinh Nguyen dinguyen@opensource.altera.com
v3: Only define ENV_IS_NOWHERE if env is not in MMC, NAND, FAT, and SPI_FLASH v2: Move this option to be on a per-board basis
Add config for socfpga_cyclone5 and socfpga_arria5
include/configs/socfpga_arria5_socdk.h | 4 ++++ include/configs/socfpga_common.h | 5 +++++ include/configs/socfpga_cyclone5_socdk.h | 4 ++++ include/configs/socfpga_de0_nano_soc.h | 4 ++++ include/configs/socfpga_sockit.h | 4 ++++ 5 files changed, 21 insertions(+)
diff --git a/include/configs/socfpga_arria5_socdk.h b/include/configs/socfpga_arria5_socdk.h index 3193684..b75b0a2 100644 --- a/include/configs/socfpga_arria5_socdk.h +++ b/include/configs/socfpga_arria5_socdk.h @@ -59,6 +59,10 @@
#endif
+#define CONFIG_ENV_IS_IN_MMC +#define CONFIG_SYS_MMC_ENV_DEV 0 /* device 0 */ +#define CONFIG_ENV_OFFSET 512 /* just after the MBR */
/* USB */ #ifdef CONFIG_CMD_USB #define CONFIG_USB_DWC2_REG_ADDR SOCFPGA_USB1_ADDRESS
diff --git a/include/configs/socfpga_common.h b/include/configs/socfpga_common.h index a2811ba..b3fba5b 100644 --- a/include/configs/socfpga_common.h +++ b/include/configs/socfpga_common.h @@ -281,7 +281,12 @@ unsigned int cm_get_qspi_controller_clk_hz(void);
#define CONFIG_SYS_CONSOLE_IS_IN_ENV #define CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE #define CONFIG_SYS_CONSOLE_ENV_OVERWRITE
+#if !defined CONFIG_ENV_IS_IN_MMC && \
- !defined CONFIG_ENV_IS_IN_NAND && \
- !defined CONFIG_ENV_IS_IN_FAT && \
- !defined CONFIG_ENV_IS_IN_SPI_FLASH
#define CONFIG_ENV_IS_NOWHERE
+#endif
#define CONFIG_ENV_SIZE 4096
Actually... if we decided that position of u-boot environment is board-specific, size should be board-specific, too.
But it might be better to just define
#define ENV_IN_MMC_SECTOR_1
in each board, and have the common code in socfpga_common.h... so that we can change environment size for all boards using "after mmc" layout, for example.
Ouch and 4K is way too small.
Patch is welcome :-)
participants (3)
-
dinguyenï¼ opensource.altera.com
-
Marek Vasut
-
Pavel Machek