<feed xmlns='http://www.w3.org/2005/Atom'>
<title>u-boot.git/drivers/mmc, branch next</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/u-boot.git/atom/drivers/mmc?h=next</id>
<link rel='self' href='http://cgit.235523.xyz/u-boot.git/atom/drivers/mmc?h=next'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/'/>
<updated>2026-08-19T15:07:05Z</updated>
<entry>
<title>mmc: socfpga_dw_mmc: Exclude S10 from legacy clkmgr address retrieval</title>
<updated>2026-08-19T15:07:05Z</updated>
<author>
<name>Alif Zakuan Yuslaimi</name>
<email>alif.zakuan.yuslaimi@altera.com</email>
</author>
<published>2026-06-05T01:55:02Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=51a41c735b45f0af272faf46917165d52e5a9f32'/>
<id>urn:sha1:51a41c735b45f0af272faf46917165d52e5a9f32</id>
<content type='text'>
Excluding Stratix10 from legacy implementation of retrieving clkmgr base
address as Stratix10's clock driver is already following clock driver model
and is supporting enable/disable APIs.

The legacy devices' clock driver will continue to be refactored to support
driver model which enables us to support enable/disable APIs for all these
devices.

Signed-off-by: Alif Zakuan Yuslaimi &lt;alif.zakuan.yuslaimi@altera.com&gt;
</content>
</entry>
<entry>
<title>Merge patch series "Add eMMC support for Axiado SCM3005 board"</title>
<updated>2026-08-11T20:55:40Z</updated>
<author>
<name>Tom Rini</name>
<email>trini@konsulko.com</email>
</author>
<published>2026-08-11T18:57:12Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=5a92645e1f9020d24d19e03fff2ae63f30080770'/>
<id>urn:sha1:5a92645e1f9020d24d19e03fff2ae63f30080770</id>
<content type='text'>
Siu Ming Tong &lt;smtong@axiado.com&gt; says:

This series adds eMMC support for the Axiado SCM3005 board, based on the
AX3005 SoC, which uses an Arasan SDHCI controller paired with a dedicated
eMMC PHY.

The series is split as follows:

  - Patch 1 adds the eMMC PHY driver (PHY_AXIADO_EMMC). The PHY provides
    signal conditioning and DLL functionality required for high-speed
    operation with data rates beyond 52MHz, and is based on the Arasan
    PHY.

  - Patch 2 adds the SDHCI host controller driver (MMC_SDHCI_AXIADO) for
    the Arasan controller. It builds on the generic SDHCI framework and
    adds SoC-specific signal voltage switching, HS200 tuning and eMMC PHY
    power sequencing through the generic PHY API.

  - Patch 3 adds the device tree nodes for the SDHCI controller, the eMMC
    PHY and their supporting fixed clock (clk_xin) to
    ax3005.dtsi, and enables the SDHCI node in ax3005-scm3005.dts.

  - Patch 4 enables the new drivers in ax3005_scm3005_defconfig, stores
    the environment in MMC and bumps CONFIG_SYS_MALLOC_LEN to 0x400000 to
    accommodate MMC operations.

Tested on the Axiado SCM3005 board: the eMMC is detected and enumerated,
and read/write access through the MMC subsystem works, including
high-speed modes exercised by the PHY tuning path.

Link: https://lore.kernel.org/r/20260731-dev-scm3005-v1-0-30bea90ac5f7@axiado.com
</content>
</entry>
<entry>
<title>mmc: Add Axiado SDHCI driver</title>
<updated>2026-08-11T20:55:39Z</updated>
<author>
<name>Siu Ming Tong</name>
<email>smtong@axiado.com</email>
</author>
<published>2026-07-31T18:10:50Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=f79df8488647a381f972d6e4c71daffa0ecc3a63'/>
<id>urn:sha1:f79df8488647a381f972d6e4c71daffa0ecc3a63</id>
<content type='text'>
Add an SDHCI host controller driver (MMC_SDHCI_AXIADO) for the Arasan
SDHCI controller found on the Axiado AX3005 SoC. The driver builds on
the generic SDHCI framework and adds SoC-specific handling for signal
voltage switching, HS200 tuning and eMMC PHY power sequencing through
the generic PHY API.

Signed-off-by: Siu Ming Tong &lt;smtong@axiado.com&gt;
</content>
</entry>
<entry>
<title>mmc: enable CMD23 for multi-block transfers</title>
<updated>2026-07-29T03:15:56Z</updated>
<author>
<name>Eric Chung</name>
<email>eric.chung@riscstar.com</email>
</author>
<published>2026-07-22T15:21:16Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=7e613de952e7e407a14d7110d6697457a53a68bc'/>
<id>urn:sha1:7e613de952e7e407a14d7110d6697457a53a68bc</id>
<content type='text'>
Enable the support for the CMD23 (SET_BLOCK_COUNT) command to
manage multi-block read/write operations. This allows the MMC
core to use CMD23 in preference to the legacy CMD18/CMD25 plus
CMD12 sequence, reducing command overhead and improving I/O
performance on multi-block transfers.

Signed-off-by: Eric Chung &lt;eric.chung@riscstar.com&gt;
Signed-off-by: Tanmay Kathpalia &lt;tanmay.kathpalia@altera.com&gt;
[ Drop MMC_CAP_CMD32 from mvebu_mmc.h ]
Signed-off-by: Peng Fan &lt;peng.fan@nxp.com&gt;
</content>
</entry>
<entry>
<title>mmc: fix mmc_deinit regression when card is at 1.8V signaling</title>
<updated>2026-07-29T03:15:55Z</updated>
<author>
<name>Peng Fan</name>
<email>peng.fan@nxp.com</email>
</author>
<published>2026-07-13T13:32:56Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=4f5f30e77c69ccb981978365fdabe0825f041f88'/>
<id>urn:sha1:4f5f30e77c69ccb981978365fdabe0825f041f88</id>
<content type='text'>
Commit 906ee6785b1c ("mmc: sd: Handle UHS-I voltage signaling without
power cycle") added detection of cards already operating at 1.8V
signaling via mmc_sd_card_using_v18(). This correctly handles the
warm-reboot scenario in mmc_startup().

However, mmc_deinit() strips ALL UHS capabilities from the card caps
and calls sd_select_mode_and_width() to downgrade the card before
kernel handoff. For a card that has switched to 1.8V, uhs_en is
already true (via OCR_S18R in mmc-&gt;ocr), so sd_select_mode_and_width()
attempts UHS mode selection -- but no UHS modes remain in the filtered
caps. The non-UHS fallbacks (SD_HS, MMC_LEGACY) are 3.3V speed modes
which, when selected while signaling at 1.8V, leave the card in an
inconsistent state it cannot recover from without a power cycle.

Per SD Physical Layer Specification: "Once the card enters 1.8V
signaling mode, the card cannot be switched to 3.3V signaling without
power cycle. If the card receives CMD0, card returns to Idle state but
still works with SDR12 timing."

Fix by using a UHS capability mask that preserves UHS_SDR12 when the
card is operating at 1.8V. SDR12 is the minimum valid UHS-I mode and
is always available at 1.8V signaling per the SD specification, so the
card is left in a consistent (1.8V) state at a low, safe speed.

Fixes: 906ee6785b1c ("mmc: sd: Handle UHS-I voltage signaling without power cycle")
Reviewed-by: Tanmay Kathpalia &lt;tanmay.kathpalia@altera.com&gt;
Signed-off-by: Peng Fan &lt;peng.fan@nxp.com&gt;
</content>
</entry>
<entry>
<title>mmc: fix mmc_bwrite() ignoring host get_b_max() callback</title>
<updated>2026-07-29T03:15:55Z</updated>
<author>
<name>Peng Fan</name>
<email>peng.fan@nxp.com</email>
</author>
<published>2026-07-13T13:32:55Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=648263b69c329d157d2a28f6b74172640e611533'/>
<id>urn:sha1:648263b69c329d157d2a28f6b74172640e611533</id>
<content type='text'>
mmc_bwrite() uses mmc-&gt;cfg-&gt;b_max directly to limit per-transfer block
count. The read path (mmc_bread()) correctly calls mmc_get_b_max()
which dispatches to the host driver get_b_max() callback. This callback
allows host drivers to enforce DMA boundary constraints based on the
buffer address.

Fix mmc_bwrite() to use mmc_get_b_max() to match the read path. This
requires removing the static qualifier from the non-DM mmc_get_b_max()
and adding its declaration to mmc_private.h.

Reviewed-by: Tanmay Kathpalia &lt;tanmay.kathpalia@altera.com&gt;
Signed-off-by: Peng Fan &lt;peng.fan@nxp.com&gt;
</content>
</entry>
<entry>
<title>mmc: sdhci: fix align_buffer memory leak on re-initialization</title>
<updated>2026-07-29T03:15:55Z</updated>
<author>
<name>Peng Fan</name>
<email>peng.fan@nxp.com</email>
</author>
<published>2026-07-13T13:32:54Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=b95ce3f0945cac05c09a1837ea2401df78d766d4'/>
<id>urn:sha1:b95ce3f0945cac05c09a1837ea2401df78d766d4</id>
<content type='text'>
sdhci_init() allocates a 512KB aligned bounce buffer for controllers
with SDHCI_QUIRK_32BIT_DMA_ADDR. In the non-DM code path, sdhci_init()
is registered as ops-&gt;init and called on every mmc_init(). Each call
allocates a new buffer without checking or freeing the previous one,
leaking 512KB per re-initialization.

Fix by guarding the allocation with !host-&gt;align_buffer so it only
allocates on the first call.

Reviewed-by: Tanmay Kathpalia &lt;tanmay.kathpalia@altera.com&gt;
Signed-off-by: Tanmay Kathpalia &lt;tanmay.kathpalia@altera.com&gt;
Signed-off-by: Peng Fan &lt;peng.fan@nxp.com&gt;
</content>
</entry>
<entry>
<title>mmc: rpmb: fix tautological condition in RPMB_REQ_READ_DATA validation</title>
<updated>2026-07-29T03:15:55Z</updated>
<author>
<name>Peng Fan</name>
<email>peng.fan@nxp.com</email>
</author>
<published>2026-07-13T13:32:53Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=67d06fe102712dc07e05bbdf893fc48ba73c86a6'/>
<id>urn:sha1:67d06fe102712dc07e05bbdf893fc48ba73c86a6</id>
<content type='text'>
In rpmb_route_frames(), the RPMB_REQ_READ_DATA case checks
"req_cnt != 1 || !req_cnt" which is tautological -- !req_cnt (req_cnt
== 0) is always a subset of req_cnt != 1. The second operand is dead
code.

Based on the pattern of all other cases in the switch (RPMB_REQ_KEY,
RPMB_REQ_WRITE_DATA, RPMB_REQ_WCOUNTER) which validate rsp_cnt, this
was meant to be "req_cnt != 1 || !rsp_cnt". Without this fix, a caller
could pass rsp_cnt=0 for a read request without validation.

Signed-off-by: Peng Fan &lt;peng.fan@nxp.com&gt;
</content>
</entry>
<entry>
<title>mmc: fix mmc_poll_for_busy() false timeout when card is ready</title>
<updated>2026-07-29T03:15:55Z</updated>
<author>
<name>Peng Fan</name>
<email>peng.fan@nxp.com</email>
</author>
<published>2026-07-13T13:32:52Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=f23b5e079a93245c01f618022fd76d189070d190'/>
<id>urn:sha1:f23b5e079a93245c01f618022fd76d189070d190</id>
<content type='text'>
mmc_poll_for_busy() returns a false -ETIMEDOUT if the card becomes
ready on the exact iteration where timeout_ms reaches 0. The card-ready
check breaks out of the loop, but then the post-loop check
"if (timeout_ms &lt;= 0)" fires and returns -ETIMEDOUT despite the card
being ready.

Fix by returning 0 directly when the card is ready instead of breaking
out of the loop. The only exit from the loop is now the timeout path,
so the post-loop code unconditionally returns -ETIMEDOUT.

Reviewed-by: Tanmay Kathpalia &lt;tanmay.kathpalia@altera.com&gt;
Signed-off-by: Peng Fan &lt;peng.fan@nxp.com&gt;
</content>
</entry>
<entry>
<title>mmc: sunxi: fix MACH_SUN9I typo in get_mclk_offset()</title>
<updated>2026-07-26T20:31:22Z</updated>
<author>
<name>Omar Ivan Fardjoume</name>
<email>ivan.fardjoume@gmail.com</email>
</author>
<published>2026-05-26T21:28:59Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=c83594e844931ac2db1da19597119c2309b88f2c'/>
<id>urn:sha1:c83594e844931ac2db1da19597119c2309b88f2c</id>
<content type='text'>
The get_mclk_offset() function used the non-existent Kconfig symbol
CONFIG_MACH_SUN9I_A80 instead of CONFIG_MACH_SUN9I, causing the
MMC2 clock register to be written at 0x06000090 instead of
0x06000418. This corrupted the CMD2 response and made eMMC
completely unresponsive.
Also the legacy (SPL) sunxi_mmc_init() did not include CONFIG_MACH_SUN9I
in the 8-bit bus width condition, so MMC2 (eMMC) would only use
4-bit mode in the SPL, which is insufficient for reliable boot.

Tested on a Cubieboard4 A80: with both fixes, SPL loads U-Boot proper
and boots Debian 12 from eMMC with no SD card present.

Signed-off-by: Omar Ivan Fardjoume &lt;ivan.fardjoume@email.com&gt;
[Andre: fix mangled patch, trim commit message]
Signed-off-by: Andre Przywara &lt;andre.przywara@arm.com&gt;
</content>
</entry>
</feed>
