[PATCH] ARM: dts: stm32: Add DFU support for DHCOM recovery

Marek Vasut marex at denx.de
Tue Mar 15 10:55:50 CET 2022


On 3/15/22 10:52, Patrice CHOTARD wrote:
> 
> 
> On 3/15/22 10:49, Marek Vasut wrote:
>> On 3/15/22 10:02, Patrice CHOTARD wrote:
>>> Hi Marek
>>>
>>> On 3/15/22 09:51, Marek Vasut wrote:
>>>> On 3/15/22 09:19, Patrice CHOTARD wrote:
>>>>> Hi Marek
>>>>>
>>>>> On 3/15/22 08:48, Patrice CHOTARD wrote:
>>>>>> Hi Marek
>>>>>>
>>>>>> On 3/14/22 13:35, Marek Vasut wrote:
>>>>>>> This patch configures U-Boot SPL for DHCOM SoM to permit DFU upload of
>>>>>>> SPL and subsequent u-boot.itb for recovery or commissioning purposes.
>>>>>>>
>>>>>>> The DFU usage procedure is identical to STM32MP1 DHCOR SoM, see commit
>>>>>>> 3919aa1722a ("ARM: dts: stm32: Add DFU support for DHCOR recovery") ,
>>>>>>> except for switching the SoM into DFU mode. By default, the DHCOM SoM
>>>>>>> has no dedicated mechanism for setting BOOTn straps into UART/USB mode,
>>>>>>> therefore to enter DFU mode, the SoC must fail to boot from boot media
>>>>>>> which can be selected by the BOOTn strap override mechanism first and
>>>>>>> then fall back to DFU mode.
>>>>>>>
>>>>>>> In case of a SoM with pre-populated BOOTn strap override button, power
>>>>>>> the system off, remove microSD card (if applicable), hold down the BOOTn
>>>>>>> strap override button located between eMMC and SoM edge connector, power
>>>>>>> on the SoM. The SoC will fail to boot from SD card and fall back into
>>>>>>> DFU mode.
>>>>>>>
>>>>>>> Signed-off-by: Marek Vasut <marex at denx.de>
>>>>>>> Cc: Patrice Chotard <patrice.chotard at foss.st.com>
>>>>>>> Cc: Patrick Delaunay <patrick.delaunay at foss.st.com>
>>>>>>> ---
>>>>>>>     arch/arm/dts/stm32mp15xx-dhcom-u-boot.dtsi | 42 ++++++++++++++++++++++
>>>>>>>     configs/stm32mp15_dhcom_basic_defconfig    | 15 ++++++--
>>>>>>>     2 files changed, 54 insertions(+), 3 deletions(-)
>>>>>>>
>>>>>>> diff --git a/arch/arm/dts/stm32mp15xx-dhcom-u-boot.dtsi b/arch/arm/dts/stm32mp15xx-dhcom-u-boot.dtsi
>>>>>>> index f09f4290f62..d73967ac1b5 100644
>>>>>>> --- a/arch/arm/dts/stm32mp15xx-dhcom-u-boot.dtsi
>>>>>>> +++ b/arch/arm/dts/stm32mp15xx-dhcom-u-boot.dtsi
>>>>>>> @@ -58,6 +58,7 @@
>>>>>>>       &i2c4 {
>>>>>>>         u-boot,dm-pre-reloc;
>>>>>>> +    u-boot,dm-spl;
>>>>>>>           eeprom0: eeprom at 50 {
>>>>>>>         };
>>>>>>> @@ -98,6 +99,11 @@
>>>>>>>       &pmic {
>>>>>>>         u-boot,dm-pre-reloc;
>>>>>>> +    u-boot,dm-spl;
>>>>>>> +
>>>>>>> +    regulators {
>>>>>>> +        u-boot,dm-spl;
>>>>>>> +    };
>>>>>>>     };
>>>>>>>       &flash0 {
>>>>>>> @@ -288,3 +294,39 @@
>>>>>>>             bias-pull-up;
>>>>>>>         };
>>>>>>>     };
>>>>>>> +
>>>>>>> +&reg11 {
>>>>>>> +    u-boot,dm-spl;
>>>>>>> +};
>>>>>>> +
>>>>>>> +&reg18 {
>>>>>>> +    u-boot,dm-spl;
>>>>>>> +};
>>>>>>> +
>>>>>>> +&usb33 {
>>>>>>> +    u-boot,dm-spl;
>>>>>>> +};
>>>>>>> +
>>>>>>> +&usbotg_hs_pins_a {
>>>>>>> +    u-boot,dm-spl;
>>>>>>> +};
>>>>>>> +
>>>>>>> +&usbotg_hs {
>>>>>>> +    u-boot,dm-spl;
>>>>>>> +};
>>>>>>> +
>>>>>>> +&usbphyc {
>>>>>>> +    u-boot,dm-spl;
>>>>>>> +};
>>>>>>> +
>>>>>>> +&usbphyc_port0 {
>>>>>>> +    u-boot,dm-spl;
>>>>>>> +};
>>>>>>> +
>>>>>>> +&usbphyc_port1 {
>>>>>>> +    u-boot,dm-spl;
>>>>>>> +};
>>>>>>> +
>>>>>>> +&vdd_usb {
>>>>>>> +    u-boot,dm-spl;
>>>>>>> +};
>>>>>>> diff --git a/configs/stm32mp15_dhcom_basic_defconfig b/configs/stm32mp15_dhcom_basic_defconfig
>>>>>>> index c422c47775e..438bba37dee 100644
>>>>>>> --- a/configs/stm32mp15_dhcom_basic_defconfig
>>>>>>> +++ b/configs/stm32mp15_dhcom_basic_defconfig
>>>>>>> @@ -18,6 +18,7 @@ CONFIG_DISTRO_DEFAULTS=y
>>>>>>>     CONFIG_SYS_LOAD_ADDR=0xc2000000
>>>>>>>     CONFIG_FIT=y
>>>>>>>     CONFIG_SPL_LOAD_FIT=y
>>>>>>> +CONFIG_SPL_LOAD_FIT_ADDRESS=0xc1000000
>>>>>>>     CONFIG_SPL_FIT_SOURCE="board/dhelectronics/dh_stm32mp1/u-boot-dhcom.its"
>>>>>>>     # CONFIG_USE_SPL_FIT_GENERATOR is not set
>>>>>>>     CONFIG_BOOTDELAY=1
>>>>>>> @@ -27,12 +28,17 @@ CONFIG_BOARD_EARLY_INIT_F=y
>>>>>>>     CONFIG_SPL_LEGACY_IMAGE_SUPPORT=y
>>>>>>>     CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
>>>>>>>     CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=3
>>>>>>> +CONFIG_SPL_ENV_SUPPORT=y
>>>>>>>     CONFIG_SPL_I2C=y
>>>>>>>     CONFIG_SPL_MTD_SUPPORT=y
>>>>>>>     CONFIG_SPL_DM_SPI_FLASH=y
>>>>>>>     CONFIG_SPL_POWER=y
>>>>>>> +CONFIG_SPL_RAM_SUPPORT=y
>>>>>>> +CONFIG_SPL_RAM_DEVICE=y
>>>>>>>     CONFIG_SPL_SPI_FLASH_MTD=y
>>>>>>>     CONFIG_SYS_SPI_U_BOOT_OFFS=0x80000
>>>>>>> +CONFIG_SPL_USB_GADGET=y
>>>>>>> +CONFIG_SPL_DFU=y
>>>>>>>     CONFIG_SYS_PROMPT="STM32MP> "
>>>>>>>     # CONFIG_CMD_ELF is not set
>>>>>>>     # CONFIG_CMD_EXPORTENV is not set
>>>>>>> @@ -71,6 +77,7 @@ CONFIG_OF_SPL_REMOVE_PROPS="interrupts interrupt-names interrupts-extended inter
>>>>>>>     CONFIG_ENV_IS_IN_SPI_FLASH=y
>>>>>>>     CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
>>>>>>>     CONFIG_SYS_RELOC_GD_ENV_ADDR=y
>>>>>>> +CONFIG_SPL_ENV_IS_NOWHERE=y
>>>>>>>     CONFIG_NET_RANDOM_ETHADDR=y
>>>>>>>     CONFIG_IP_DEFRAG=y
>>>>>>>     CONFIG_TFTP_BLOCKSIZE=1536
>>>>>>> @@ -79,8 +86,6 @@ CONFIG_SPL_BLOCK_CACHE=y
>>>>>>>     CONFIG_DFU_MMC=y
>>>>>>>     CONFIG_DFU_MTD=y
>>>>>>>     CONFIG_DFU_RAM=y
>>>>>>> -CONFIG_DFU_VIRT=y
>>>>>>> -CONFIG_SET_DFU_ALT_INFO=y
>>>>>>>     CONFIG_GPIO_HOG=y
>>>>>>>     CONFIG_DM_HWSPINLOCK=y
>>>>>>>     CONFIG_HWSPINLOCK_STM32=y
>>>>>>> @@ -106,18 +111,20 @@ CONFIG_DM_ETH=y
>>>>>>>     CONFIG_DWC_ETH_QOS=y
>>>>>>>     CONFIG_KS8851_MLL=y
>>>>>>>     CONFIG_PHY=y
>>>>>>> +CONFIG_SPL_PHY=y
>>>>>>>     CONFIG_PHY_STM32_USBPHYC=y
>>>>>>>     CONFIG_PINCONF=y
>>>>>>>     # CONFIG_SPL_PINCTRL_FULL is not set
>>>>>>>     CONFIG_PINCTRL_STMFX=y
>>>>>>>     CONFIG_DM_PMIC=y
>>>>>>> -# CONFIG_SPL_PMIC_CHILDREN is not set
>>>>>>>     CONFIG_PMIC_STPMIC1=y
>>>>>>>     CONFIG_DM_REGULATOR=y
>>>>>>> +CONFIG_SPL_DM_REGULATOR=y
>>>>>>>     CONFIG_DM_REGULATOR_FIXED=y
>>>>>>>     CONFIG_DM_REGULATOR_GPIO=y
>>>>>>>     CONFIG_DM_REGULATOR_STM32_VREFBUF=y
>>>>>>>     CONFIG_DM_REGULATOR_STPMIC1=y
>>>>>>> +CONFIG_SPL_DM_REGULATOR_STPMIC1=y
>>>>>>>     CONFIG_REMOTEPROC_STM32_COPRO=y
>>>>>>>     CONFIG_DM_RTC=y
>>>>>>>     CONFIG_RTC_STM32=y
>>>>>>> @@ -129,8 +136,10 @@ CONFIG_STM32_SPI=y
>>>>>>>     CONFIG_SYSRESET_SYSCON=y
>>>>>>>     CONFIG_USB=y
>>>>>>>     CONFIG_DM_USB_GADGET=y
>>>>>>> +CONFIG_SPL_DM_USB_GADGET=y
>>>>>>>     CONFIG_USB_EHCI_HCD=y
>>>>>>>     CONFIG_USB_EHCI_GENERIC=y
>>>>>>> +CONFIG_USB_DWC2=y
>>>>>>>     CONFIG_USB_HOST_ETHER=y
>>>>>>>     CONFIG_USB_ETHER_ASIX=y
>>>>>>>     CONFIG_USB_GADGET=y
>>>>>>
>>>>>>
>>>>>> Reviewed-by: Patrice Chotard <patrice.chotard at foss.st.com>
>>>>>>
>>>>>> Thanks
>>>>>> Patrice
>>>>>
>>>>> Applied to u-boot-stm32
>>>>
>>>> This is also for next release.
>>> you mean for v2022.04 or v2022.07 ?
>>
>> If it was up to me, I would plan this patch for 2022.07 , since we are already in -rc4 . But since this is board specific, and board specific stuff can go in all the way until release, if you want to avoid having to do -next PR, then feel free to include it for v2022.04 , it's not like it wasn't tested.
> 
> Yes that what i think also, patch's perimeter is limited to STM32MP SoC based board,
> we have no doubt about test ;-)

All right then.


More information about the U-Boot mailing list