Thread (9 messages) 9 messages, 2 authors, 2019-07-11

Re: DW-DMA: Probe failures on broadwell

From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date: 2019-07-10 16:43:52
Also in: alsa-devel

On Tue, Jul 09, 2019 at 12:27:49PM -0700, Curtis Malainey wrote:
Hi Andy,
Please, don't top post in the public mailing lists, community doesn't like it.
Thanks for the information, we are running a 4.14 kernel so we don't
have the idma32 driver, I will see if I can backport it and report
back if the fix works.
Driver is supporting iDMA 32-bit in v4.14 AFAICS.
The missed stuff is a split and some fixes here and there.
Here is the list of patches I have in a range v4.14..v5.2
(I deliberately dropped the insignificant ones)

934891b0a16c dmaengine: dw: Don't pollute CTL_LO on iDMA 32-bit
91f0ff883e9a dmaengine: dw: Reset DRAIN bit when resume the channel
69da8be90d5e dmaengine: dw: Split DW and iDMA 32-bit operations
87fe9ae84d7b dmaengine: dw: Add missed multi-block support for iDMA 32-bit
ffe843b18211 dmaengine: dw: Fix FIFO size for Intel Merrifield
7b0c03ecc42f dmaengine: dw-dmac: implement dma protection control setting

For me sounds like fairly easy to backport.
On Tue, Jul 9, 2019 at 6:38 AM Andy Shevchenko
[off-list ref] wrote:
quoted
On Tue, Jul 09, 2019 at 04:34:48PM +0300, Andy Shevchenko wrote:
quoted
On Tue, Jul 09, 2019 at 04:29:43PM +0300, Andy Shevchenko wrote:
quoted
On Tue, Jul 09, 2019 at 04:14:01PM +0300, Andy Shevchenko wrote:
quoted
On Mon, Jul 08, 2019 at 01:50:07PM -0700, Curtis Malainey wrote:
quoted
So, the correct fix is to provide a platform data, like it's done in
drivers/dma/dw/pci.c::idma32_pdata, in the sst-firmware.c::dw_probe(), and call
idma32_dma_probe() with idma32_dma_remove() respectively on removal stage.

(It will require latest patches to be applied, which are material for v5.x)
Below completely untested patch to try
Also, it might require to set proper request lines (currently it uses 0 AFAICS).
Something like it's done in drivers/spi/spi-pxa2xx-pci.c for Intel Merrifield.
And SST_DSP_DMA_MAX_BURST seems encoded while it's should be simple number,
like 8 (bytes). Also SPI PXA is an example to look into.

I doubt it has been validated with upstream driver (I know about some internal
drivers, hacked version of dw one, you may find sources somewhere in public).
-- 
With Best Regards,
Andy Shevchenko

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help