diff options
author | Andriy Gapon <avg@FreeBSD.org> | 2025-06-23 21:30:23 +0000 |
---|---|---|
committer | Andriy Gapon <avg@FreeBSD.org> | 2025-08-06 06:04:36 +0000 |
commit | aadc10e7ce1a8bb47cd628a2111b71fac3684915 (patch) | |
tree | 616de864f3485ea3609d2557fdad44bf38a8412c /release/sysinstall/dosio.c | |
parent | 706291eddb45a9afd8e690dc8d7e2c8d6bad6084 (diff) |
cam_fill_mmcio: initialize cmd.error sub-fieldstable/13
For me, this fixes a problem with using eMMC storage in MMCCAM
configuration with dwmmc driver (on Rock64).
The problem appeared after commit 07da3bb5d56c85 "mmc: support for SPI
bus type".
The problem was caused by the said commit changing the layout of struct
mmc_ios which is embedded into struct ccb_trans_settings_mmc with the
latter being embedded into struct ccb_trans_settings, a member of
union ccb.
The layout mattered for two reasons:
1. dwmmc sets cmd.error only in case of an error;
2. mmc_da's sdda_start_init uses the same ccb for different transaction
types without explicitly clearing the object between transactions.
As a result, cmd.error could start out with a non-zero value and dwmmc
would keep that value which would then be interpreted as a failure.
Such a failure happened in mmc_set_timing resulting in incorrect timing
settings and subsequent complete failure to communicate with the eMMC
module.
Reviewed by: pkelsey
(cherry picked from commit 10db2ad8614adc544292856c693503ca8e9c9fd9)
Diffstat (limited to 'release/sysinstall/dosio.c')
0 files changed, 0 insertions, 0 deletions