[PATCH v2 2/2] mmc: dw_mmc: support transfer mode auto detection
Johan Jonker
jbx6244 at gmail.com
Sat Mar 12 10:44:01 CET 2022
On 3/12/22 10:23, Jagan Teki wrote:
> On Wed, Feb 23, 2022 at 6:37 PM Johan Jonker <jbx6244 at gmail.com> wrote:
>>
>> From: Paweł Jarosz <paweljarosz3691 at gmail.com>
>>
>> dw_mmc supports two transfer modes in u-boot: IDMA and FIFO.
>> This patch adds auto detection of transfer mode and
>> eliminates the need to set this in host config struct.
>> Allow handling for a u-boot,spl-fifo-mode host property in the
>> logic to not put the MMC controllers into FIFO mode for all time.
>
> Does it mean fifo-mode property is not useful in SPI and U-Boot
> proper? If yes better drop that change as part of this patch.
This is about setting the fifo-mode for rk3066/rk3188 without DT as
these early models don't seem to have IDMA.
Handling of the fifo_mode variable is still needed for the Rockchip
exception that needs to be included in the logic.
rockchip: dwmmc: add handling for u-boot, spl-fifo-mode
https://source.denx.de/u-boot/custodians/u-boot-rockchip/-/commit/c8dd0e42d709c9734f313c547d0707e27ca0de51
We could remove normal fifo-mode parsing, but as this is a generic file
for multiple SoC families I'm a little bit reluctant to change that for
other drivers then Rockchip.
Otherwise patch V1 does the job without changing dw_mmc.c
Please advise what direction we should go or what changes should be made.
Kind regards,
Johan Jonker
>>
>> Signed-off-by: Paweł Jarosz <paweljarosz3691 at gmail.com>
>> Signed-off-by: Johan Jonker <jbx6244 at gmail.com>
>> ---
>>
>> Changed V2:
>> use bitfield_extract
>> remove use_dma variable
>> include fifo_mode from host in logic
>> ---
>> drivers/mmc/dw_mmc.c | 6 ++++++
>> include/dwmmc.h | 5 +++++
>> 2 files changed, 11 insertions(+)
>>
>> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
>> index a949dad5..7e2cd5ed 100644
>> --- a/drivers/mmc/dw_mmc.c
>> +++ b/drivers/mmc/dw_mmc.c
>> @@ -536,6 +536,12 @@ static int dwmci_init(struct mmc *mmc)
>> return -EIO;
>> }
>>
>> + if (!host->fifo_mode &&
>> + SDMMC_GET_TRANS_MODE(dwmci_readl(host, DWMCI_HCON)) == DMA_INTERFACE_IDMA)
>> + host->fifo_mode = 0;
>> + else
>> + host->fifo_mode = 1;
>
> fifo_mode is bool so use true/false.
>
> Jagan.
More information about the U-Boot
mailing list