Re: [PATCH 1/1] ASoC: codecs: max98090: Allow dsp_a mode

From: Maxim Kochetkov
Date: Wed Jun 21 2023 - 10:29:30 EST




On 21.06.2023 17:01, Mark Brown wrote:
On Wed, Jun 21, 2023 at 04:55:18PM +0300, Maxim Kochetkov wrote:
On 21.06.2023 16:18, Mark Brown wrote:

I'm saying there should be some interlock between these two settings, if
nothing else setting DSP A mode should force TDM mode with automatically
configured slot sizes.

At this time there is no any interlock for TDM mode in MAX98090 driver. We

Yes, that's the problem I am identifying. The driver allows TDM mode to
be configured independently of the DAI format but the two are related.

But DSP_A mode is just bit/frame format. It is just compatible with TDM.


can specify dai-tdm-slot-* properties in DT and .set_tdm_slot() will be
called to setup TDM mode. And SND_SOC_DAIFMT cannot affect it. I checked
other codecs drivers: most of them performs TDM setup this way. So why do we
need such interlock right now?

A lot of devices support TDM modes with other DAI formats, or allow the
mode that is required for TDM to be configured even without doing TDM
setup. Some always configure TDM like I'm suggesting, with the explicit
TDM configuration just being an override. Some are just buggy and
nobody noticed. The issue is that the driver will claim to have
configured DSP A mode but actually done something else unless the user
also configures TDM.

Yep. But we have to specify TDM parameters (slot masks, slot width, etc) any way. Because there is no default TDM configuration like I2S and so. And pure DSP_A/B mode just have no sense.

Anyway. What do you suggest? Should I perform some refactoring for the driver? Should I move M98090_REG_TDM_FORMAT/M98090_REG_TDM_CONTROL registers setup to the max98090_dai_set_fmt()?