Re: [PATCH v1] ARM: imx_v6_v7_defconfig: enable SND_SOC_SPDIF

Elinor Montmasson
2024-11-05T14:32:51Z

Hi Stefan,

On Monday, 4 November, 2024 17:20:38, Stefan Eichenberger wrote:
> Hi Stefan,
>
> On Mon, Nov 04, 2024 at 12:39:40PM +0100, Stefan Wahren wrote:
>> Hi Stefan,
>>
>> Am 04.11.24 um 09:05 schrieb Stefan Eichenberger:
>> > Hi Stefan,
>> >
>> > On Sat, Nov 02, 2024 at 04:35:19PM +0100, Stefan Wahren wrote:
>> > > Hi Stefan,
>> > >
>> > > Am 02.11.24 um 15:36 schrieb Stefan Eichenberger:
>> > > > Hi Shawn,
>> > > >
>> > > > On Sat, Nov 02, 2024 at 03:21:58PM +0800, Shawn Guo wrote:
>> > > > > On Wed, Oct 30, 2024 at 01:21:12PM +0100, Stefan Eichenberger wrote:
>> > > > > > From: Stefan Eichenberger <stefan.eichenberger@toradex.com>
>> > > > > >
>> > > > > > Enable SND_SOC_SPDIF in imx_v6_v7_defconfig to support SPDIF audio. This
>> > > > > > change will fix commit d469b771afe1 ("ARM: dts: imx6: update spdif sound
>> > > > > > card node properties") which moves away from the old "spdif-controller"
>> > > > > > property to the new "audio-codec" property.
>> > > > > >
>> > > > > > Fixes: d469b771afe1 ("ARM: dts: imx6: update spdif sound card node properties")
>> > > > > It doesn't look a fix to me.
>> > > > I agree somehow, it was just that before the referenced commit our test
>> > > > succeeds with the imx_v6_v7_defconfig and after that we get the
>> > > > following error:
>> > > > [ 24.165534] platform sound-spdif: deferred probe pending: fsl-asoc-card:
>> > > > snd_soc_register_card failed
>> > > this error should have been in the commit message including the
>> > > information which platform/board is affected.
>> > Okay, I will add this information to the next version. We see this error
>> > on an Apalis iMX6 which has in my variant an NXP i.MX6Q SoC.
>> >
>> > > > So maybe it is not a fix in the sense of a bug, but it fixes the error
>> > > > message. However, I'm also fine with removing the Fixes tag.
>> > > But this patch doesn't look like the real approach.
>> > >
>> > > Could you please clarify the impact of the regression?
>> > So the problem is that before commit d469b771afe1 ("ARM: dts: imx6:
>> > update spdif sound card node properties") the audio driver was
>> > using an implementation of linux,spdif-dit and linux,spdif-dir which was
>> > directly inside the fsl,imx-audio-spdif compatible driver. Now with the
>> > referenced commit the idea is to use the more generic linux,spdif-dir
>> > and linux,spdif-dit compatible drivers. That's why this driver must be
>> > enabled in the kernel configuration.
>> >
>> > > Is it just this error message and audio works fine or is audio also broken?
>> > It is not just the error message, audio is not working because the
>> > driver deferes and because it is not enabled it will never succeed to
>> > load. I don't know if this is called a regression, because the driver is
>> > there it is just not enabled in the imx6_v7_defconfig. I thought because
>> > a lot of the i.MX6 based board use the generic driver, it makes sense to
>> > enable it in the imx_v6_v7_defconfig.
>> okay, thanks for the clarification. From my understanding
>> imx6_v7_defconfig is just an example config for testing. All possible
>> users of these boards might have their own configs and stumble across
>> the same issue. So I thought it would be better to add the dependency in
>> the Kconfig of the FSL audio driver.
>>
>> I'm not that audio driver expert and don't know how the dependency
>> handling between the FSL audio driver and the required codecs like
>> SND_SOC_SPDIF. So it's possible that I'm completely wrong here and your
>> approach is the best we can do.
>
> That might be a good point. I don't know how this is usually handled.
> @Shawn and @Elinor, do you think this could be an approach to make
> SND_SOC_FSL_ASOC_CARD select SND_SOC_SPDIF? It already seems to do this
> for SND_SOC_WM8994 and SND_SOC_FSL_SPDIF.

SND_SOC_FSL_ASOC_CARD will compile the machine driver fsl-asoc-card,
SND_SOC_FSL_SPDIF the CPU DAI driver fsl_spdif for the SPDIF
and SND_SOC_SPDIF the codec drivers spdif-rx and spdif-tx.

In my commit series I made SND_SOC_FSL_ASOC_CARD select SND_SOC_FSL_SPDIF
because the old machine driver previously compiled with SND_SOC_IMX_SPDIF
selected SND_SOC_FSL_SPDIF.
But because fsl-asoc-card is a generic driver, it could be used on a system
that doesn't have an SPDIF device, and therefore should not require
SND_SOC_SPDIF nor SND_SOC_FSL_SPDIF.
So maybe it is not a good idea to automatically select SND_SOC_FSL_SPDIF or SND_SOC_SPDIF.

On the other hand, if every imx6 or imx7 boards have an SPDIF device, then
I suppose SND_SOC_SPDIF can be put in imx_v6_v7_defconfig.

Regards,
Elinor