Hi,

On 10/12/24 05:01, Marek Vasut wrote:
On 10/11/24 5:30 PM, Patrick DELAUNAY wrote:
Hi,

Hi,

On 9/30/24 21:23, Marek Vasut wrote:
Make the dh_update_sd_to_sf script generic, rename it to dh_update_sdmmc_to_sf and implement two specific dh_update_sd_to_sf and dh_update_emmc_to_sf scripts
which load U-Boot from either SD or eMMC and install it into SPI NOR.

Signed-off-by: Marek Vasut <ma...@denx.de>
---
Cc: Patrice Chotard <patrice.chot...@foss.st.com>
Cc: Patrick Delaunay <patrick.delau...@foss.st.com>
Cc: Tom Rini <tr...@konsulko.com>
Cc: u-b...@dh-electronics.com
Cc: u-boot@lists.denx.de
Cc: uboot-st...@st-md-mailman.stormreply.com
---
  include/configs/stm32mp15_dh_dhsom.h | 16 +++++++++++++---
  1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/include/configs/stm32mp15_dh_dhsom.h b/include/configs/ stm32mp15_dh_dhsom.h
index de39b19219d..fa759c938b3 100644
--- a/include/configs/stm32mp15_dh_dhsom.h
+++ b/include/configs/stm32mp15_dh_dhsom.h
@@ -38,16 +38,26 @@
          "setenv loadaddr1 && "                    \
          "setenv sblkcnt && "                    \
          "setenv ublkcnt\0"                    \
-    "dh_update_sd_to_sf=" /* Erase SPI NOR and install U-Boot from SD */ \ +    "dh_update_sdmmc_to_sf=" /* Erase SPI NOR and install U-Boot from SD/eMMC */ \
          "setexpr loadaddr1 ${loadaddr} + 0x1000000 && "        \
-        "load mmc 0:4 ${loadaddr1} /boot/u-boot-spl.stm32 && "    \
+        "load ${dh_update_iface} ${dh_update_dev} "        \
+            "${loadaddr1} /boot/u-boot-spl.stm32 && "    \
          "env set filesize1 ${filesize} && "            \
-        "load mmc 0:4 ${loadaddr} /boot/u-boot.itb && "        \
+        "load ${dh_update_iface} ${dh_update_dev} "        \
+            "${loadaddr} /boot/u-boot.itb && " \
          "sf probe && sf erase 0 0x200000 && "            \
          "sf update ${loadaddr1} 0 ${filesize1} && "        \
          "sf update ${loadaddr1} 0x40000 ${filesize1} && "    \
          "sf update ${loadaddr} 0x80000 ${filesize} && "        \
          "env set filesize1 && env set loadaddr1\0"        \
+    "dh_update_sd_to_sf=" /* Erase SPI NOR and install U-Boot from SD */ \
+        "setenv dh_update_iface mmc && "            \
+        "setenv dh_update_dev 0:4 && " \
+        "run dh_update_sdmmc_to_sf\0"                \
+    "dh_update_emmc_to_sf=" /* Erase SPI NOR and install U-Boot from eMMC */ \
+        "setenv dh_update_iface mmc && "            \
+        "setenv dh_update_dev 1:4 && " \
+        "run dh_update_sdmmc_to_sf\0"                \
      "stdin=serial\0"                        \
      "stdout=serial\0"                        \
      "stderr=serial\0"                        \


ok I will merge it as it

with 2 minor question

a)  it is strange to define interface variable for macro
     but use only with "mmc" device with

setenv dh_update_iface mmc

it can be simplified with

"load mmc ${dh_update_dev}

or it is to prepare other device then "mmc" .....

The later, I now also renamed the script in V2 to make it more obvious.


ok



b) you are using "sf" command and not "mtd" to udpate SPI NOR ?


the MTD command allows to use the MTD partition name, defined in DT,
so no need to know offset in script (and avoid "sf probe")

mtd erase fsbl1; mtd write fsbl1 ${loadaddr1} 0 ${filesize1} \
mtd erase fsbl2; mtd write fsbl2 ${loadaddr1} 0 ${filesize1} \
mtd erase uboot; mtd write uboot ${loadaddr} 0 ${filesize}
Can you also do 'sf update' alike operation with 'mtd' command? I don't think you can. The 'sf update' often does significantly speed up the SPI NOR update process, because SPI NOR erase operation is very slow, while SPI NOR read operation is fast, so if the update can read and then skip many blocks which are already in the SPI NOR and erase and write only the changed blocks, the update is often very fast too.


Good point....

an improve place for MTD command

I will try to propose something for mtd command


and for the patch


Applied to u-boot-stm/master, thanks!

Regards
Patrick


Reply via email to