Re: [PATCH] mmc: bcm2835: DMA mapping improvements
John Garry <[email protected]> Mon, 13 Jul 2026 13:37:07 +0100
| Newsgroups | org.kernel.vger.linux-mmc |
|---|---|
| Organization | Oracle Corporation |
| Message-ID | <[email protected]> |
On 13/07/2026 13:19, Robin Murphy wrote:
> On 13/07/2026 12:25 pm, Ulf Hansson wrote:
> [...]
>>> @@ -1281,10 +1279,8 @@ static int bcm2835_add_host(struct
>>> bcm2835_host *host)
>>>
>>> if (!host->dma_chan_rxtx) {
>>> dev_warn(dev, "unable to initialise DMA channel.
>>> Falling back to PIO\n");
>>> - host->use_dma = false;
>>> + host->dma_dev = NULL;
>>> } else {
>>> - host->use_dma = true;
>>> -
>>> host->dma_cfg_tx.src_addr_width =
>>> DMA_SLAVE_BUSWIDTH_4_BYTES;
>>> host->dma_cfg_tx.dst_addr_width =
>>> DMA_SLAVE_BUSWIDTH_4_BYTES;
>>> host->dma_cfg_tx.direction = DMA_MEM_TO_DEV;
>>> @@ -1300,12 +1296,18 @@ static int bcm2835_add_host(struct
>>> bcm2835_host *host)
>>> if (dmaengine_slave_config(host->dma_chan_rxtx,
>>> &host->dma_cfg_tx) != 0 ||
>>> dmaengine_slave_config(host->dma_chan_rxtx,
>>> - &host->dma_cfg_rx) != 0)
>>> - host->use_dma = false;
>>> + &host->dma_cfg_rx) != 0) {
>
> Hang on, doesn't this whole if condition need to be inverted? It's true
> upon dma config _failure_, thanks to the original use_dma logic being a
> bit backwards here.
Ah, yes, my mistake. It should be:
if (!dmaengine_slave_config(..., &host->dma_cfg_tx) &&
!dmaengine_slave_config(..., &host->dma_cfg_rx))
dma_dev =
And I don't think that the first dmaengine_slave_config() needs to be
undone in case of failure for the second call.
Ulf, how to handle a fix? should I send an update on top of this patch?
thanks