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 andriy.shevchenko@linux.intel.com wrote:
On Tue, Jul 09, 2019 at 04:34:48PM +0300, Andy Shevchenko wrote:
On Tue, Jul 09, 2019 at 04:29:43PM +0300, Andy Shevchenko wrote:
On Tue, Jul 09, 2019 at 04:14:01PM +0300, Andy Shevchenko wrote:
On Mon, Jul 08, 2019 at 01:50:07PM -0700, Curtis Malainey wrote:
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).