alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* More Generic Audio Graph Sound Card idea
@ 2020-08-21  4:15 Kuninori Morimoto
  2020-08-21  5:26 ` Sameer Pujar
                   ` (4 more replies)
  0 siblings, 5 replies; 31+ messages in thread
From: Kuninori Morimoto @ 2020-08-21  4:15 UTC (permalink / raw)
  To: Mark Brown; +Cc: Sameer Pujar, Pierre-Louis Bossart, Linux-ALSA


Hi Mark
Cc Pierre-Louis, Sameer

Current audio-graph-card driver has DPCM support,
but it is limited (= Mix/Mux/TDM-split/rate-convert/channel-convert).
It was expanded forcibly expanded.

Because of it, the connection judgement for normal vs DPCM is tricky.
I know Pierre-Louis want to use it for SOF, but something is missing,
thus, can't use (?).
I know now Sameer is currently trying to expand it now.
It is OK for me, but, more expansion in the future will be difficult/buggy.
For example supporting many *generic* DPCM and normal connection in the
same time will be difficult.

I'm thinking below style as new audio-graph-card2.
It is not tricky, thus connection judgement for normal vs DSP is easy.
Then, code can be more readable (= no guaranty :P) ?

I guss "audio-graph-card" and "audio-graph-card2" can have some (= not full)
compatible for normal connection. But has no compatible for DPCM connection.

I think I need to keep as-is for current audio-graph-card,
and create new audio-graph-card2 driver.
Because there is users, and card2 implementation will have huge different.
Keeping compatible and update will be very difficult or buggy.

But what do you think ?

Note 1 is that this is just idea for now.
I'm very happy to implement it, but it will be after that
my all remaining patch was posted/accepted.

Note 2 is that I'm not full DPCM analyst.
Thus, maybe audio-graph-card2 can solve current connection issue,
but might can't for unknown connection case.
In such came we need ver3 (?).

  ------------ image ---------------------------

  | Front End PCMs    |  SoC DSP  | Back End DAIs | Audio devices |
  
                      *************
  PCM0 <------------> *           * <----DAI0-----> Codec Headset
                      *           *
  PCM1 <------------> *           * <----DAI1-----> Codec Speakers
                      *   DSP     *
  PCM2 <------------> *           * <----DAI2-----> MODEM
                      *           *
  PCM3 <------------> *           * <----DAI3-----> BT
                      *           *
                      *           * <----DAI4-----> DMIC
                      *           *
                      *           * <----DAI5-----> FM
                      *************
  ------------ DT sample ---------------------------

	sound {
		compatible = "audio-graph-card2";

		dais = <&pcm0,
			&pcm1,
			&pcm2,
			&pcm3>;
	};

	front-end {
		ports {
			pcm0: port@0 { pcm0_endpoint: endpoint { remote-endpoint = <&dsp_f0>; }; };
			pcm1: port@1 { pcm1_endpoint: endpoint { remote-endpoint = <&dsp_f1>; }; };
			pcm2: port@2 { pcm2_endpoint: endpoint { remote-endpoint = <&dsp_f2>; }; };
			pcm3: port@3 { pcm3_endpoint: endpoint { remote-endpoint = <&dsp_f3>; }; };
		};
	};

	dsp {
		compatible = "audio-graph-card2-dsp";

		ports {
			/* Front End side */
			port@0 { dsp_f0: endpoint { remote-endpoint = <&pcm0>; }; };
			port@1 { dsp_f1: endpoint { remote-endpoint = <&pcm1>; }; };
			port@2 { dsp_f2: endpoint { remote-endpoint = <&pcm2>; }; };
			port@3 { dsp_f3: endpoint { remote-endpoint = <&pcm3>; }; };

			/* Back End side */
			port@4 { dsp_b0: endpoint { remote-endpoint = <&dai0>; }; };
			port@5 { dsp_b1: endpoint { remote-endpoint = <&dai1>; }; };
			port@6 { dsp_b2: endpoint { remote-endpoint = <&dai2>; }; };
			port@7 { dsp_b3: endpoint { remote-endpoint = <&dai3>; }; };
			port@8 { dsp_b4: endpoint { remote-endpoint = <&dai4>; }; };
			port@9 { dsp_b5: endpoint { remote-endpoint = <&dai5>; }; };
		};
	};

	back-end {
		ports {
			port@0 { dai0: endpoint { remote-endpoint = <&dsp_b0>; }; };
			port@1 { dai1: endpoint { remote-endpoint = <&dsp_b1>; }; };
			port@2 { dai2: endpoint { remote-endpoint = <&dsp_b2>; }; };
			port@3 { dai3: endpoint { remote-endpoint = <&dsp_b3>; }; };
			port@4 { dai4: endpoint { remote-endpoint = <&dsp_b4>; }; };
			port@5 { dai5: endpoint { remote-endpoint = <&dsp_b5>; }; };
		};
	};


^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2020-10-15 23:05 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-21  4:15 More Generic Audio Graph Sound Card idea Kuninori Morimoto
2020-08-21  5:26 ` Sameer Pujar
2020-08-21  7:14   ` Kuninori Morimoto
2020-08-21  8:28     ` Sameer Pujar
2020-08-21 13:02       ` Mark Brown
2020-09-25  1:43     ` Kuninori Morimoto
2020-09-25 19:22       ` Mark Brown
2020-09-25 20:04         ` Pierre-Louis Bossart
2020-09-25 20:10           ` Mark Brown
2020-09-25 20:50             ` Pierre-Louis Bossart
2020-08-21  7:11 ` Daniel Baluta
2020-08-21  7:25   ` Kuninori Morimoto
2020-08-21  7:33     ` Daniel Baluta
2020-08-21 11:47     ` Mark Brown
2020-08-21 12:18 ` Mark Brown
2020-08-24  0:25   ` Kuninori Morimoto
2020-08-24  6:25     ` Sameer Pujar
2020-08-25  0:59       ` Kuninori Morimoto
2020-08-25  3:11         ` Sameer Pujar
2020-08-25  5:13           ` Kuninori Morimoto
2020-08-25  5:42             ` Sameer Pujar
2020-08-25  6:35               ` Kuninori Morimoto
2020-08-26  6:46                 ` Sameer Pujar
2020-08-27  1:18                   ` Kuninori Morimoto
2020-08-27  1:36                   ` Kuninori Morimoto
2020-09-03 23:51     ` Kuninori Morimoto
2020-09-09 11:33       ` Sameer Pujar
2020-08-21 15:49 ` Pierre-Louis Bossart
2020-10-13  4:50 ` Kuninori Morimoto
2020-10-15 14:32   ` Mark Brown
2020-10-15 23:04     ` Kuninori Morimoto

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).