[PATCH 0/6] mmc: exynos_dw_mmc: Disable FMP for Exynos850
    Sam Protsenko 
    semen.protsenko at linaro.org
       
    Sun Oct 26 02:10:52 CET 2025
    
    
  
On Sat, Oct 25, 2025 at 8:06 PM Sam Protsenko
<semen.protsenko at linaro.org> wrote:
>
> When doing USB boot [1,2] on E850-96 board (based on Exynos850 SoC) it
> was found the eMMC becomes non-functional. The reason why it happens is
> that the FMP (Flash Memory Protector) is enabled in FMPSECURITY register
> (eMMC block) during USB boot.
>
> In regular boot from eMMC the FMP is disabled by some early bootloader:
>
>     FMPSECURITY[31:0] = 0xcfe2_e492
>
> But when performing USB boot, this register keeps its reset value:
>
>     FMPSECURITY[31:0] = 0xffe2_e492
>
> which leads to non-functional eMMC, because the next two bits are
> enabled in this case:
>
>     - FMP_ON[29] = 1: FMP encryption is enabled for eMMC
>     - MMC_SFR_PROT_ON = 1: SFR memory region (peripheral registers)
>                            protection is enabled for eMMC block
>
> That makes eMMC inaccessible from U-Boot.
>
> This patch series implements disabling FMP on Exynos850 to make eMMC
> functional when U-Boot is executed during USB boot. The per-patch
> breakdown:
>
>   - patches 1-3: cleanup
>   - patches 4-6: adding FMP disabling quirk and enabling it on E850
>
> Patches are supposed to be applied in the same order as they appear in
> the series, to keep the dependencies straight. The series is expected to
> go either through Minkyu's (Samsung) tree, or Peng Fan's MMC tree.
>
> [1] https://gitlab.com/LinaroLtd/e850-96/tools/dltool
> [2] https://docs.u-boot.org/en/latest/board/samsung/e850-96.html#flashing-overview
>
> Sam Protsenko (6):
>   mmc: exynos_dw_mmc: Extend dm_dwmci_ops without code duplication
>   mmc: dw_mmc: Do not export dwmci_send_cmd() and dwmci_set_ios()
>   mmc: exynos_dw_mmc: Improve coding style
>   mmc: exynos_dw_mmc: Add quirk for disabling FMP
>   mmc: exynos_dw_mmc: Add exynos850 compatible
>   mmc: exynos_dw_mmc: Disable FMP for Exynos850 chip
>
>  arch/arm/mach-exynos/include/mach/dwmmc.h |  6 ++
>  drivers/mmc/dw_mmc.c                      |  6 +-
>  drivers/mmc/exynos_dw_mmc.c               | 78 ++++++++++++++++-------
>  include/dwmmc.h                           |  3 -
>  4 files changed, 65 insertions(+), 28 deletions(-)
>
>
> base-commit: 1071cc85bc4d1416fd93a063ba4abdd2d17ae0db
> --
> 2.39.5
>
Clarification: the series is based on mmc/next tree [1], so it
probably should go through the same tree, to avoid possible
collisions.
[1] https://source.denx.de/u-boot/custodians/u-boot-mmc/-/tree/next
    
    
More information about the U-Boot
mailing list