Arnd Bergmann arnd@arndb.de writes:
chop chop ... removed several mail recipients to leave only the ASoC / PXA subset ...
On Mon, Apr 2, 2018 at 4:26 PM, Robert Jarzmik robert.jarzmik@free.fr wrote:
+static struct pxa_ssp_info pxa_ssp_infos[] = {
{ .dma_chan_rx_name = "ssp1_rx", .dma_chan_tx_name = "ssp1_tx", },
{ .dma_chan_rx_name = "ssp1_rx", .dma_chan_tx_name = "ssp1_tx", },
{ .dma_chan_rx_name = "ssp2_rx", .dma_chan_tx_name = "ssp2_tx", },
{ .dma_chan_rx_name = "ssp2_rx", .dma_chan_tx_name = "ssp2_tx", },
{ .dma_chan_rx_name = "ssp3_rx", .dma_chan_tx_name = "ssp3_tx", },
{ .dma_chan_rx_name = "ssp3_rx", .dma_chan_tx_name = "ssp3_tx", },
{ .dma_chan_rx_name = "ssp4_rx", .dma_chan_tx_name = "ssp4_tx", },
{ .dma_chan_rx_name = "ssp4_rx", .dma_chan_tx_name = "ssp4_tx", },
+};
This part looks odd to me, you're adding an extra level of indirection to do two stages of lookups in some form of platform data.
That's unfortunately right.
Why can't you just always use "rx" and "tx" as the names here?
Well I couldn't. I'll explain you why, and maybe you'll find a better solution.
That all is related to how ASoC and SSP interact. If I remember correctly, here is how it works : - the DMA channel is requested in sound/arm/pxa2xx-pcm-lib.c:128 return snd_dmaengine_pcm_open( substream, dma_request_slave_channel(rtd->platform->dev, The trick is that the device here is _not_ the SSP one, it's if memory serves me well the pxa-pcm-audio one.
As a consequence, the device cannot be used to differenciate which SSP exactly is providing the sound samples stream. This information is nevertheless required to choose the correct requestor line, which is a 1-to-1 match to the SSP port.
The indirection in the channel name is used to choose the correct requestor line for a given SSP port providing the samples.
It also must be underlined that this dma request serves both AC97 and SSP as sample providers.
(also, I don't see why each line is duplicated, but I'm sure there's an easy answer for that).
Ahh that is an unfortunate rebase most probably :)
Cheers.