Discussion:
How to select input from muxer in front of SSI on i.MX6
Jean-Michel Hautbois
2014-09-19 15:18:08 UTC
Permalink
Hi,

I am now working on making my audio path working completely.
And I get some difficulties to write a DT for my needs.
I join a picture which is not the reality but a simplified version of the board.

I have a FPGA between my codecs and my i.MX6. This FPGA is responsible
of lots of things, and in particular of muxing signals.
I can program it in order to get the audio signal I want on the SSI I
want (so sgtl5000 can ben on SSI1 or SSI2 or both). This path is not a
single codec, but a multiple codec one.
So I can have on SSI1 LineIn from sgtl5000 or audio from hdmi (adv7611).

I don't know how to write it in DT, regarding audmux for instance, and
the sound{} node...
And I don't know how to drive all these peripherals (from arecord, I
wish I have hw:0,0 is LineIn, hw:0;1 is HDMI, etc.).

Any help would be appreciated :).
Thanks,
JM
Nicolin Chen
2014-09-19 17:52:06 UTC
Permalink
CCed Mark and Liam.
Post by Jean-Michel Hautbois
Hi,
I am now working on making my audio path working completely.
And I get some difficulties to write a DT for my needs.
I join a picture which is not the reality but a simplified version of the board.
I have a FPGA between my codecs and my i.MX6. This FPGA is responsible
of lots of things, and in particular of muxing signals.
I can program it in order to get the audio signal I want on the SSI I
want (so sgtl5000 can ben on SSI1 or SSI2 or both). This path is not a
single codec, but a multiple codec one.
So I can have on SSI1 LineIn from sgtl5000 or audio from hdmi (adv7611).
I don't know how to write it in DT, regarding audmux for instance, and
the sound{} node...
And I don't know how to drive all these peripherals (from arecord, I
wish I have hw:0,0 is LineIn, hw:0;1 is HDMI, etc.).
This looks like a DPCM (Documentation/sound/alsa/soc/DPCM.txt) to me.

I'm not sure how to write a DT for DPCM either. But it seems that you
might need a specific machine driver (guessing).

I saw Morimoto-san plans to add DPCM into Simple Card, but not sure
when they will finish it. Otherwise, you may use Simple Card while
following their defined DT formats.

Nicolin
Jean-Michel Hautbois
2014-09-22 09:08:08 UTC
Permalink
Hi,
Post by Nicolin Chen
CCed Mark and Liam.
Post by Jean-Michel Hautbois
Hi,
I am now working on making my audio path working completely.
And I get some difficulties to write a DT for my needs.
I join a picture which is not the reality but a simplified version of the board.
I have a FPGA between my codecs and my i.MX6. This FPGA is responsible
of lots of things, and in particular of muxing signals.
I can program it in order to get the audio signal I want on the SSI I
want (so sgtl5000 can ben on SSI1 or SSI2 or both). This path is not a
single codec, but a multiple codec one.
So I can have on SSI1 LineIn from sgtl5000 or audio from hdmi (adv7611).
I don't know how to write it in DT, regarding audmux for instance, and
the sound{} node...
And I don't know how to drive all these peripherals (from arecord, I
wish I have hw:0,0 is LineIn, hw:0;1 is HDMI, etc.).
This looks like a DPCM (Documentation/sound/alsa/soc/DPCM.txt) to me.
I'm not sure how to write a DT for DPCM either. But it seems that you
might need a specific machine driver (guessing).
I saw Morimoto-san plans to add DPCM into Simple Card, but not sure
when they will finish it. Otherwise, you may use Simple Card while
following their defined DT formats.
Thanks, that's interesting. It looks like a DPCM, but in the other
order (from FE to BE). I probably need a new driver, you are right.
But I still don't know how/what I should declare in the DT...

Thanks,
JM
Mark Brown
2014-09-23 01:51:34 UTC
Permalink
Post by Nicolin Chen
This looks like a DPCM (Documentation/sound/alsa/soc/DPCM.txt) to me.
I'm not sure how to write a DT for DPCM either. But it seems that you
might need a specific machine driver (guessing).
I saw Morimoto-san plans to add DPCM into Simple Card, but not sure
when they will finish it. Otherwise, you may use Simple Card while
following their defined DT formats.
Depending on what the system looks like it's not at all clear that there
should be any visibility at all of DPCM in the DT - it's a detail of how
Linux is implemented at the end of the day.
Jean-Michel Hautbois
2014-09-23 06:11:27 UTC
Permalink
Post by Mark Brown
Post by Nicolin Chen
This looks like a DPCM (Documentation/sound/alsa/soc/DPCM.txt) to me.
I'm not sure how to write a DT for DPCM either. But it seems that you
might need a specific machine driver (guessing).
I saw Morimoto-san plans to add DPCM into Simple Card, but not sure
when they will finish it. Otherwise, you may use Simple Card while
following their defined DT formats.
Depending on what the system looks like it's not at all clear that there
should be any visibility at all of DPCM in the DT - it's a detail of how
Linux is implemented at the end of the day.
So this should definitely be implemented directly in a specific driver for
my FPGA which is a DPCM right ?

Thanks,
JM
Mark Brown
2014-09-24 08:21:46 UTC
Permalink
Post by Jean-Michel Hautbois
Post by Mark Brown
Depending on what the system looks like it's not at all clear that there
should be any visibility at all of DPCM in the DT - it's a detail of how
Linux is implemented at the end of the day.
So this should definitely be implemented directly in a specific driver for
my FPGA which is a DPCM right ?
No, that's really not what DPCM is all about... if this is a physically
separate device that's not got direct memory access it's probably more
appropriate to represent as a CODEC. I was CCed in part way so don't
entirely know.
Jean-Michel Hautbois
2014-10-08 15:24:49 UTC
Permalink
Hi Mark,
Post by Mark Brown
Post by Jean-Michel Hautbois
Post by Mark Brown
Depending on what the system looks like it's not at all clear that there
should be any visibility at all of DPCM in the DT - it's a detail of how
Linux is implemented at the end of the day.
So this should definitely be implemented directly in a specific driver for
my FPGA which is a DPCM right ?
No, that's really not what DPCM is all about... if this is a physically
separate device that's not got direct memory access it's probably more
appropriate to represent as a CODEC. I was CCed in part way so don't
entirely know.
OK, sorry for my late answer, but I was on a lot of things at the same time :/.
Well, here is a tentative to explain what I want to do :
http://paste.kde.org/pwijzty2p
The objective is to develop the "Mux I²S" part, as this is in fact a
FPGA with I²C registers which tell which input should go on which
output.

I am reading Alsa docs, in order to fully understand what should be
done, but it seems that this is nothing more than a simple codec with
no effect on audio parameters... It should be visible in alsa mixer
though, in order to drive the inputs from user space easily.

I hope this is clearer...
Thanks !
JM
Mark Brown
2014-10-13 14:18:35 UTC
Permalink
Post by Jean-Michel Hautbois
Post by Mark Brown
No, that's really not what DPCM is all about... if this is a physically
separate device that's not got direct memory access it's probably more
appropriate to represent as a CODEC. I was CCed in part way so don't
entirely know.
OK, sorry for my late answer, but I was on a lot of things at the same time :/.
http://paste.kde.org/pwijzty2p
The objective is to develop the "Mux I²S" part, as this is in fact a
FPGA with I²C registers which tell which input should go on which
output.
OK, this probably does fit best with DPCM at this point of view as it is
such a simple straight through connection. At least it's probably the
lowest impedence way of doing things right now, it's not really what we
want to do longer term though.
Post by Jean-Michel Hautbois
I am reading Alsa docs, in order to fully understand what should be
done, but it seems that this is nothing more than a simple codec with
no effect on audio parameters... It should be visible in alsa mixer
though, in order to drive the inputs from user space easily.
Even a dumb CODEC at least has the effect of limitng the configurations
that can be used.

Loading...