[alsa-devel] [PATCH 8/8] ASoC: Ux500: Add machine-driver
Ola Lilja
ola.o.lilja at stericsson.com
Fri Apr 27 12:59:06 CEST 2012
On 04/23/2012 09:05 PM, Mark Brown wrote:
> On Fri, Apr 20, 2012 at 11:33:29AM +0200, Ola Lilja wrote:
>
>> +snd-soc-ux500-mach-objs := u8500.o ux500_ab8500.o
>> +obj-$(CONFIG_SND_SOC_UX500_AB8500) += snd-soc-ux500-mach.o
>
> This split into multiple files *really* doesn't seem like it adds
> anything but complexity, the small amount of reuse just doesn't seem
> worth it.
We will add more codecs to be matched up the same machine-driver and I found it
useful to have this split. It just separates the callbacks related to each codec
added in the dai-link-struct. I would like to keep this division if that is OK.
>
>> + /* Setup codec depending on driver-mode */
>> + driver_mode = (channels == 8) ?
>> + DRIVERMODE_CODEC_ONLY : DRIVERMODE_NORMAL;
>> + dev_dbg(dev, "%s: Driver-mode: %s.\n", __func__,
>> + (driver_mode == DRIVERMODE_NORMAL) ? "NORMAL" : "CODEC_ONLY");
>> +
>> + ab8500_audio_set_bit_delay(codec_dai, 1);
>
> What's this configuring? I didn't notice it on the CODEC driver as the
> function wasn't exported IIRC.
The bit delay is the number of bit-clocks from the framesync to the first data-bit.
For the AB8500-chip it is set by the bit AB8500_DIGIFCONF2_IF0DEL.
I would have put this in the set_dai_fmt but I have not found a bit that is
controlling this.
>
>> + } else {
>> + ab8500_audio_set_word_length(codec_dai, 20);
>
> This should be done by using the TDM slot API - the slot length is one
> of the parameters.
>
>> + status = snd_soc_add_codec_controls(codec, ux500_ab8500_ctrls,
>> + ARRAY_SIZE(ux500_ab8500_ctrls));
>
> Do this from the driver.
OK.
>
>> + status = snd_soc_dapm_enable_pin(&codec->dapm, "Headset Left");
>> + status |= snd_soc_dapm_enable_pin(&codec->dapm, "Headset Right");
>
> No need to do this, everything defaults on.
Ah, then I have to put back all the disables instead, which I removed before
sending the patch =)
More information about the Alsa-devel
mailing list