[PATCH 29/34] configs: sama7g5: add mmc config for sdmmc0

Jaehoon Chung jh80.chung at samsung.com
Sun Dec 6 23:15:00 CET 2020


On 12/4/20 4:00 PM, Eugen.Hristev at microchip.com wrote:
> On 03.12.2020 23:45, Jaehoon Chung wrote:
>> Hi,
>>
>> On 12/3/20 8:20 PM, Eugen.Hristev at microchip.com wrote:
>>> On 03.12.2020 13:11, Jaehoon Chung wrote:
>>>> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>>>>
>>>> On 12/3/20 7:47 PM, Eugen.Hristev at microchip.com wrote:
>>>>> On 03.12.2020 12:38, Jaehoon Chung wrote:
>>>>>> Hi,
>>>>>>
>>>>>> On 12/3/20 6:28 PM, Eugen Hristev wrote:
>>>>>>> Add new config for storing environment from sdmmc0.
>>>>>>> Also clean-up sama7g5ek_emmc1 to point to the proper mmc device.
>>>>>>
>>>>>> Just one question, Sorry, i didn't check entire patchset.
>>>>>>
>>>>>> What is different between sama7g5ek_mmc1 and sama7g5ek_mmc?
>>>>>
>>>>> Sama7g5ek_mmc is set to store the environment in the eMMC device
>>>>> soldered on the board which is connected on the SDMMC0 hardware block.
>>>>>
>>>>> sama7g5ek_mmc1 is set to store the environment on the SD-Card which can
>>>>> be inserted in the SD slot on the board which is connected on the SDMMC1
>>>>> hardware block.
>>>>>
>>>>> So basically we have two possible boot/env store configurations, one on
>>>>> eMMC and one on SD-Card .
>>>>
>>>> If device can know which device is used to boot, then i think that it doesn't need to add one more config.
>>>> It can know where env is stored at runtime.
>>>> (with CONFIG_ENV_FAT_DEVICE_AND_PART ":<partition>" and implement mmc_get_env_dev())
>>>>
>>>
>>> Can you explain a little more ? I do not understand how.
>>> How will u-boot know if it should read the env from SD or eMMC ?
>>
>> I don't have any knowledge of your SoC. Maybe you know more exactly.
>> If its SoC has some registers to get boot device, it's possible to get which device is used to boot device.
> 
> It does, but U-boot is not the first stage bootloader. We have a second 
> stage that initializes the external RAM first.
> U-boot is in fact the third stage.

It doesn't matter which stage is used. It's dependent with your register.
If your bl0 is checking which device is used, it can be set to register.
- I don't know how to implement your bl0..so it's just guessing.

> 
>> Then you can implement mmc_get_env_dev() in its board specific file.
>> Then it can be got with below sequence.
>> In env/f
>> env_fat_devc_and_part()
>> -> part_str[0] += mmc_get_env_dev()
>> -> mmc_get_env_dev() will be returned to proper device after read register relevant to checking device.
>>
>> If there is no register to get boot device, it may be impossible.
> 
> Even if we know the boot device, we do not wish do enforce u-boot to 
> store the env on the same boot device. This would mean hard rules on 
> storing the env, which is something we wish to avoid.

I understood what you want. 
As i already mentioned, i didn't check this patchset fully. 
Just it seemed taht your configuration is duplicated, except env location.
I don't have any objection about your patch. :)
Just had a question whether it can be used one config or not.

Thanks for explanation kindly.

Best Regards,
Jaehoon Chung

> We would like to be able to select at compile time where to store the 
> env and the default boot device. This would allow for example to have a 
> very fast and small QSPI memory for storing the initial stages , but 
> have u-boot load linux and store the env from/on eMMCs or SD-Cards.
>>
>> Best Regards,
>> Jaehoon Chung
>>
>>
>>>
>>>>
>>>> commit 6731bef6966ea2b26cdcfe0109ff5a950003fd03
>>>> Refs: v2020.07-1080-g6731bef696
>>>> Author:     David Woodhouse <dwmw2 at infradead.org>
>>>> AuthorDate: Fri Jun 19 23:07:17 2020 +0100
>>>> Commit:     Tom Rini <trini at konsulko.com>
>>>> CommitDate: Sun Jul 26 14:35:12 2020 -0400
>>>>
>>>>       env/fat.c: allow loading from a FAT partition on the MMC boot device
>>>>
>>>>       I don't want to have to specify the device; only the partition.
>>>>
>>>>       This allows me to use the same image on internal eMMC or SD card for
>>>>       Banana Pi R2, and it finds its own environment either way.
>>>>
>>>>       Signed-off-by: David Woodhouse <dwmw2 at infradead.org>
>>>>       [trini: Add #if/#else/#endif logic around CONFIG_SYS_MMC_ENV_DEV usage,
>>>>               whitespace changes]
>>>>       Signed-off-by: Tom Rini <trini at konsulko.com>
>>>>
>>>>
>>>> Best Regards,
>>>> Jaehoon Chung
>>>>
>>>>>
>>>>> Eugen
>>>>>>
>>>>>> Best Regards,
>>>>>> Jaehoon Chung
>>>>>>
>>>>>>>
>>>>>>> Signed-off-by: Eugen Hristev <eugen.hristev at microchip.com>
>>>>>>> ---
>>>>>>>     board/atmel/sama7g5ek/MAINTAINERS |  1 +
>>>>>>>     configs/sama7g5ek_mmc1_defconfig  |  7 ++--
>>>>>>>     configs/sama7g5ek_mmc_defconfig   | 67 +++++++++++++++++++++++++++++++
>>>>>>>     3 files changed, 72 insertions(+), 3 deletions(-)
>>>>>>>     create mode 100644 configs/sama7g5ek_mmc_defconfig
>>>>>>>
>>>>>>> diff --git a/board/atmel/sama7g5ek/MAINTAINERS b/board/atmel/sama7g5ek/MAINTAINERS
>>>>>>> index f66953ac4e..eac972968d 100644
>>>>>>> --- a/board/atmel/sama7g5ek/MAINTAINERS
>>>>>>> +++ b/board/atmel/sama7g5ek/MAINTAINERS
>>>>>>> @@ -4,4 +4,5 @@ S:     Maintained
>>>>>>>     F:     board/atmel/sama7g5ek.c
>>>>>>>     F:     include/configs/sama7g5ek.h
>>>>>>>     F:     configs/sama7g5ek_mmc1_defconfig
>>>>>>> +F:     configs/sama7g5ek_mmc_defconfig
>>>>>>>
>>>>>>> diff --git a/configs/sama7g5ek_mmc1_defconfig b/configs/sama7g5ek_mmc1_defconfig
>>>>>>> index fa4c88ffa6..b6d2f4dd05 100644
>>>>>>> --- a/configs/sama7g5ek_mmc1_defconfig
>>>>>>> +++ b/configs/sama7g5ek_mmc1_defconfig
>>>>>>> @@ -2,9 +2,10 @@ CONFIG_ARM=y
>>>>>>>     CONFIG_ARCH_AT91=y
>>>>>>>     CONFIG_SYS_TEXT_BASE=0x66f00000
>>>>>>>     CONFIG_TARGET_SAMA7G5EK=y
>>>>>>> -CONFIG_NR_DRAM_BANKS=1
>>>>>>>     CONFIG_SYS_MALLOC_F_LEN=0x11000
>>>>>>> +CONFIG_NR_DRAM_BANKS=1
>>>>>>>     CONFIG_ENV_SIZE=0x4000
>>>>>>> +CONFIG_DM_GPIO=y
>>>>>>>     CONFIG_DEBUG_UART_BOARD_INIT=y
>>>>>>>     CONFIG_DEBUG_UART_BASE=0xe1824200
>>>>>>>     CONFIG_DEBUG_UART_CLOCK=200000000
>>>>>>> @@ -14,6 +15,7 @@ CONFIG_ENV_VARS_UBOOT_CONFIG=y
>>>>>>>     CONFIG_FIT=y
>>>>>>>     CONFIG_SD_BOOT=y
>>>>>>>     CONFIG_USE_BOOTARGS=y
>>>>>>> +CONFIG_BOOTARGS="console=ttyS0,115200 root=/dev/mmcblk1p2 rw rootwait"
>>>>>>>     CONFIG_MISC_INIT_R=y
>>>>>>>     CONFIG_HUSH_PARSER=y
>>>>>>>     CONFIG_CMD_BOOTZ=y
>>>>>>> @@ -35,6 +37,7 @@ CONFIG_CMD_EXT4=y
>>>>>>>     CONFIG_CMD_FAT=y
>>>>>>>     CONFIG_OF_CONTROL=y
>>>>>>>     CONFIG_ENV_IS_IN_FAT=y
>>>>>>> +CONFIG_ENV_FAT_DEVICE_AND_PART="1:1"
>>>>>>>     CONFIG_SYS_RELOC_GD_ENV_ADDR=y
>>>>>>>     CONFIG_DM=y
>>>>>>>     CONFIG_CLK=y
>>>>>>> @@ -44,7 +47,6 @@ CONFIG_AT91_UTMI=y
>>>>>>>     CONFIG_AT91_GENERIC_CLK=y
>>>>>>>     CONFIG_AT91_SAM9X60_PLL=y
>>>>>>>     CONFIG_CPU=y
>>>>>>> -CONFIG_DM_GPIO=y
>>>>>>>     CONFIG_ATMEL_PIO4=y
>>>>>>>     CONFIG_DM_I2C=y
>>>>>>>     CONFIG_DM_MMC=y
>>>>>>> @@ -56,7 +58,6 @@ CONFIG_DM_ETH=y
>>>>>>>     CONFIG_MACB=y
>>>>>>>     CONFIG_PINCTRL=y
>>>>>>>     CONFIG_PINCTRL_AT91PIO4=y
>>>>>>> -# CONFIG_RAM_ROCKCHIP_DEBUG is not set
>>>>>>>     CONFIG_DM_SERIAL=y
>>>>>>>     CONFIG_DEBUG_UART_ANNOUNCE=y
>>>>>>>     CONFIG_ATMEL_USART=y
>>>>>>> diff --git a/configs/sama7g5ek_mmc_defconfig b/configs/sama7g5ek_mmc_defconfig
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..894a64983f
>>>>>>> --- /dev/null
>>>>>>> +++ b/configs/sama7g5ek_mmc_defconfig
>>>>>>> @@ -0,0 +1,67 @@
>>>>>>> +CONFIG_ARM=y
>>>>>>> +CONFIG_ARCH_AT91=y
>>>>>>> +CONFIG_SYS_TEXT_BASE=0x66f00000
>>>>>>> +CONFIG_TARGET_SAMA7G5EK=y
>>>>>>> +CONFIG_SYS_MALLOC_F_LEN=0x11000
>>>>>>> +CONFIG_NR_DRAM_BANKS=1
>>>>>>> +CONFIG_ENV_SIZE=0x4000
>>>>>>> +CONFIG_DM_GPIO=y
>>>>>>> +CONFIG_DEBUG_UART_BOARD_INIT=y
>>>>>>> +CONFIG_DEBUG_UART_BASE=0xe1824200
>>>>>>> +CONFIG_DEBUG_UART_CLOCK=200000000
>>>>>>> +CONFIG_DEFAULT_DEVICE_TREE="sama7g5ek"
>>>>>>> +CONFIG_DEBUG_UART=y
>>>>>>> +CONFIG_ENV_VARS_UBOOT_CONFIG=y
>>>>>>> +CONFIG_FIT=y
>>>>>>> +CONFIG_SD_BOOT=y
>>>>>>> +CONFIG_USE_BOOTARGS=y
>>>>>>> +CONFIG_BOOTARGS="console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootwait"
>>>>>>> +CONFIG_MISC_INIT_R=y
>>>>>>> +CONFIG_HUSH_PARSER=y
>>>>>>> +CONFIG_CMD_BOOTZ=y
>>>>>>> +# CONFIG_CMD_IMI is not set
>>>>>>> +CONFIG_CMD_MD5SUM=y
>>>>>>> +CONFIG_CMD_MEMTEST=y
>>>>>>> +CONFIG_SYS_MEMTEST_START=0x60000000
>>>>>>> +CONFIG_SYS_MEMTEST_END=0x70000000
>>>>>>> +CONFIG_CMD_STRINGS=y
>>>>>>> +CONFIG_CMD_DM=y
>>>>>>> +CONFIG_CMD_GPIO=y
>>>>>>> +CONFIG_CMD_I2C=y
>>>>>>> +# CONFIG_CMD_LOADS is not set
>>>>>>> +CONFIG_CMD_MMC=y
>>>>>>> +CONFIG_CMD_DHCP=y
>>>>>>> +CONFIG_CMD_MII=y
>>>>>>> +CONFIG_CMD_PING=y
>>>>>>> +CONFIG_CMD_EXT4=y
>>>>>>> +CONFIG_CMD_FAT=y
>>>>>>> +CONFIG_OF_CONTROL=y
>>>>>>> +CONFIG_ENV_IS_IN_FAT=y
>>>>>>> +CONFIG_ENV_FAT_DEVICE_AND_PART="0:1"
>>>>>>> +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
>>>>>>> +CONFIG_DM=y
>>>>>>> +CONFIG_CLK=y
>>>>>>> +CONFIG_CLK_CCF=y
>>>>>>> +CONFIG_CLK_AT91=y
>>>>>>> +CONFIG_AT91_UTMI=y
>>>>>>> +CONFIG_AT91_GENERIC_CLK=y
>>>>>>> +CONFIG_AT91_SAM9X60_PLL=y
>>>>>>> +CONFIG_CPU=y
>>>>>>> +CONFIG_ATMEL_PIO4=y
>>>>>>> +CONFIG_DM_I2C=y
>>>>>>> +CONFIG_DM_MMC=y
>>>>>>> +CONFIG_MMC_SDHCI=y
>>>>>>> +CONFIG_MMC_SDHCI_ATMEL=y
>>>>>>> +CONFIG_PHY_MICREL=y
>>>>>>> +CONFIG_PHY_MICREL_KSZ90X1=y
>>>>>>> +CONFIG_DM_ETH=y
>>>>>>> +CONFIG_MACB=y
>>>>>>> +CONFIG_PINCTRL=y
>>>>>>> +CONFIG_PINCTRL_AT91PIO4=y
>>>>>>> +CONFIG_DM_SERIAL=y
>>>>>>> +CONFIG_DEBUG_UART_ANNOUNCE=y
>>>>>>> +CONFIG_ATMEL_USART=y
>>>>>>> +CONFIG_TIMER=y
>>>>>>> +CONFIG_MCHP_PIT64B_TIMER=y
>>>>>>> +CONFIG_OF_LIBFDT_OVERLAY=y
>>>>>>> +# CONFIG_EFI_LOADER_HII is not set
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
> 



More information about the U-Boot mailing list