* Re: [PATCH] ASoC:kirkwood: Don't raise an error when no DAI format [not found] <20140928150342.CC21B786A1D@smtpfb1-g21.free.fr> @ 2014-09-28 15:12 ` Russell King - ARM Linux 2014-09-28 16:05 ` Jean-Francois Moine 0 siblings, 1 reply; 4+ messages in thread From: Russell King - ARM Linux @ 2014-09-28 15:12 UTC (permalink / raw) To: Jean-Francois Moine; +Cc: Mark Brown, alsa-devel, linux-kernel On Sun, Sep 28, 2014 at 04:19:27PM +0200, Jean-Francois Moine wrote: > The two DAIs of the kirkwood controller have a unique PCM format. > > The simple-card sets the audio hardware definitions of all CPU DAIs. > The PCM format is defined only when it is present in the DT. > > This patch prevents the controller to raise an error when > the DT audio card definition by the simple card contains the PCM > format of one CPU DAI only. I think this is a silly idea - why should every driver have additional code to detect when it's called to do thing. Why doesn't the simple card code always pass the required format? Looking at other drivers, no one else does this; they all appear to require the proper format to be specified. What some drivers do (eg, omap-mcbsp.c) is to block set_fmt when the DAI is already in use - setting a flag "configured" in hw_params, and clearing it in shutdown. Maybe following this will solve your problem. In any case, random drivers doing stuff differently without reason is really not a good idea. -- FTTC broadband for 0.8mile line: currently at 9.5Mbps down 400kbps up according to speedtest.net. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] ASoC:kirkwood: Don't raise an error when no DAI format 2014-09-28 15:12 ` [PATCH] ASoC:kirkwood: Don't raise an error when no DAI format Russell King - ARM Linux @ 2014-09-28 16:05 ` Jean-Francois Moine 2014-09-30 18:19 ` Mark Brown 0 siblings, 1 reply; 4+ messages in thread From: Jean-Francois Moine @ 2014-09-28 16:05 UTC (permalink / raw) To: Russell King - ARM Linux; +Cc: Mark Brown, alsa-devel, linux-kernel On Sun, 28 Sep 2014 16:12:07 +0100 Russell King - ARM Linux <linux@arm.linux.org.uk> wrote: > On Sun, Sep 28, 2014 at 04:19:27PM +0200, Jean-Francois Moine wrote: > > The two DAIs of the kirkwood controller have a unique PCM format. > > > > The simple-card sets the audio hardware definitions of all CPU DAIs. > > The PCM format is defined only when it is present in the DT. > > > > This patch prevents the controller to raise an error when > > the DT audio card definition by the simple card contains the PCM > > format of one CPU DAI only. > > I think this is a silly idea - why should every driver have additional code > to detect when it's called to do thing. Why doesn't the simple card code > always pass the required format? > > Looking at other drivers, no one else does this; they all appear to require > the proper format to be specified. > > What some drivers do (eg, omap-mcbsp.c) is to block set_fmt when the > DAI is already in use - setting a flag "configured" in hw_params, and > clearing it in shutdown. Maybe following this will solve your problem. > > In any case, random drivers doing stuff differently without reason is > really not a good idea. As the simple card is done, the audio hardware definitions of the platform and all the CPU DAIS are always set in the audio controller. When the PCM format is globally defined (platform), the function set_fmt() is called for all CPU DAIs (then, twice for the kirkwood controller) with the same value. The DT is: sound { compatible = "simple-audio-card"; simple-audio-card,name = "Cubox Audio"; simple-audio-card,format = "i2s"; simple-audio-card,dai-link@0 { /* S/PDIF - HDMI & S/PDIF */ ... }; simple-audio-card,dai-link@1 { /* I2S - HDMI */ ... }; }; The PCM format may also be defined per DAI link. The following DT works the same as setting globally the format, i.e. there are two calls to set_fmt() with 'i2s': sound { compatible = "simple-audio-card"; simple-audio-card,name = "Cubox Audio"; simple-audio-card,dai-link@0 { /* S/PDIF - HDMI & S/PDIF */ format = "i2s"; ... }; simple-audio-card,dai-link@1 { /* I2S - HDMI */ format = "i2s"; ... }; }; The problem appears when the format is defined in only one DAI link: sound { compatible = "simple-audio-card"; simple-audio-card,name = "Cubox Audio"; simple-audio-card,dai-link@0 { /* S/PDIF - HDMI & S/PDIF */ format = "i2s"; ... }; simple-audio-card,dai-link@1 { /* I2S - HDMI */ /* no format */ ... }; }; Then, audio does not work. -- Ken ar c'hentañ | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/ ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] ASoC:kirkwood: Don't raise an error when no DAI format 2014-09-28 16:05 ` Jean-Francois Moine @ 2014-09-30 18:19 ` Mark Brown 2014-10-01 8:59 ` Jean-Francois Moine 0 siblings, 1 reply; 4+ messages in thread From: Mark Brown @ 2014-09-30 18:19 UTC (permalink / raw) To: Jean-Francois Moine; +Cc: Russell King - ARM Linux, alsa-devel, linux-kernel [-- Attachment #1: Type: text/plain, Size: 2262 bytes --] On Sun, Sep 28, 2014 at 06:05:50PM +0200, Jean-Francois Moine wrote: > Russell King - ARM Linux <linux@arm.linux.org.uk> wrote: > > On Sun, Sep 28, 2014 at 04:19:27PM +0200, Jean-Francois Moine wrote: > > > This patch prevents the controller to raise an error when > > > the DT audio card definition by the simple card contains the PCM > > > format of one CPU DAI only. > > I think this is a silly idea - why should every driver have additional code > > to detect when it's called to do thing. Why doesn't the simple card code > > always pass the required format? > > Looking at other drivers, no one else does this; they all appear to require > > the proper format to be specified. > > What some drivers do (eg, omap-mcbsp.c) is to block set_fmt when the > > DAI is already in use - setting a flag "configured" in hw_params, and > > clearing it in shutdown. Maybe following this will solve your problem. > > In any case, random drivers doing stuff differently without reason is > > really not a good idea. > As the simple card is done, the audio hardware definitions of the > platform and all the CPU DAIS are always set in the audio controller. > When the PCM format is globally defined (platform), the function > set_fmt() is called for all CPU DAIs (then, twice for the kirkwood > controller) with the same value. The DT is: ... > The PCM format may also be defined per DAI link. The following DT works > the same as setting globally the format, i.e. there are two calls to > set_fmt() with 'i2s': > The problem appears when the format is defined in only one DAI link: > Then, audio does not work. So this is still a generic rather than driver issue and should be solved outside of the driver - exactly the same issue is going to apply to any other device with a similar shared configuration. We could either say that the DT is buggy here or we could say that the generic card ought to assume that if only one link specifies a format then it should use that format for other links if possible (since clearly the user doesn't care what it chooses). Please also try to use subject lines matching the style for the subsystem. You've been working with upstream for a while, you really ought to be familiar with this sort of basic process stuff. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 473 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] ASoC:kirkwood: Don't raise an error when no DAI format 2014-09-30 18:19 ` Mark Brown @ 2014-10-01 8:59 ` Jean-Francois Moine 0 siblings, 0 replies; 4+ messages in thread From: Jean-Francois Moine @ 2014-10-01 8:59 UTC (permalink / raw) To: Mark Brown; +Cc: Russell King - ARM Linux, alsa-devel, linux-kernel On Tue, 30 Sep 2014 19:19:10 +0100 Mark Brown <broonie@kernel.org> wrote: > On Sun, Sep 28, 2014 at 06:05:50PM +0200, Jean-Francois Moine wrote: > > Russell King - ARM Linux <linux@arm.linux.org.uk> wrote: > > > On Sun, Sep 28, 2014 at 04:19:27PM +0200, Jean-Francois Moine wrote: > > > > > This patch prevents the controller to raise an error when > > > > the DT audio card definition by the simple card contains the PCM > > > > format of one CPU DAI only. > > > > I think this is a silly idea - why should every driver have additional code > > > to detect when it's called to do thing. Why doesn't the simple card code > > > always pass the required format? > > > > Looking at other drivers, no one else does this; they all appear to require > > > the proper format to be specified. > > > > What some drivers do (eg, omap-mcbsp.c) is to block set_fmt when the > > > DAI is already in use - setting a flag "configured" in hw_params, and > > > clearing it in shutdown. Maybe following this will solve your problem. > > > > In any case, random drivers doing stuff differently without reason is > > > really not a good idea. > > > As the simple card is done, the audio hardware definitions of the > > platform and all the CPU DAIS are always set in the audio controller. > > > When the PCM format is globally defined (platform), the function > > set_fmt() is called for all CPU DAIs (then, twice for the kirkwood > > controller) with the same value. The DT is: > > ... > > > The PCM format may also be defined per DAI link. The following DT works > > the same as setting globally the format, i.e. there are two calls to > > set_fmt() with 'i2s': > > > The problem appears when the format is defined in only one DAI link: > > > Then, audio does not work. > > So this is still a generic rather than driver issue and should be solved > outside of the driver - exactly the same issue is going to apply to any > other device with a similar shared configuration. We could either say > that the DT is buggy here or we could say that the generic card ought to > assume that if only one link specifies a format then it should use that > format for other links if possible (since clearly the user doesn't care > what it chooses). The 'daifmt' of the callback function set_fmt (snd_soc_dai_set_fmt) contains 4 parts: - the physical format, - the clock gating, - the signal inversions, - the master clock definitions. As the value '0' is not used in the physical format nor in the master clock, this value would have say 'don't change', permitting the parameters to be set independently. But, as you and Russell say 'no', I will let the format definition at the platform level in the DT. Setting twice the hardware registers is not a problem. Thanks. > Please also try to use subject lines matching the style for the > subsystem. You've been working with upstream for a while, you really > ought to be familiar with this sort of basic process stuff. Sorry. -- Ken ar c'hentañ | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/ ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-10-01 8:59 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20140928150342.CC21B786A1D@smtpfb1-g21.free.fr>
2014-09-28 15:12 ` [PATCH] ASoC:kirkwood: Don't raise an error when no DAI format Russell King - ARM Linux
2014-09-28 16:05 ` Jean-Francois Moine
2014-09-30 18:19 ` Mark Brown
2014-10-01 8:59 ` Jean-Francois Moine
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox