[alsa-devel] [PATCH 3/5] SOUND: SOC: CODECS: Add support for the TWL4030 audio codec

Steve Sakoman sakoman at gmail.com
Thu Sep 4 16:32:28 CEST 2008


On Thu, Sep 4, 2008 at 3:26 AM, Jarkko Nikula <jarkko.nikula at nokia.com> wrote:
> On Wed,  3 Sep 2008 22:01:58 -0700
> "ext sakoman at gmail.com" <sakoman at gmail.com> wrote:

>> +static void twl4030_dump_registers(void)
>> +{
> This is not needed since there is already nice function
> for it: sound/soc/soc-core.c: codec_reg_show.

I could probably get rid of this function.  It was quite useful during
debugging and I was not aware of codec_reg_show.  IIRC, most of the
other codec drivers also have the equivalent of this function, so we
might want to clean them up too if there is a standard function to
replace them.

>> +     /* wait for offset cancellation to complete */
>> +     twl4030_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE, &byte,
>> REG_ANAMICL);
>> +     while ((byte & CNCL_OFFSET_START) == CNCL_OFFSET_START)
>> +             twl4030_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE,
>> +                                     &byte, REG_ANAMICL);
>> +
> Probably some timeout escape here.

Right you are!  This is a pet peeve of mine and I am humiliated I let
this sneak in :-)

>
>> +static void twl4030_power_down(struct snd_soc_codec *codec)
>> +{
> ...
>> +     udelay(10);
>> +}
> REVISIT comment for these kind of magic delays if doesn't work without.

It *seems* to work without them, but every historic TI driver seemed
to have them.  I figured that they might know something not reflected
in the documentation.  I will add a REVIST comment.

>> +static int twl4030_hw_params(struct snd_pcm_substream *substream,
>> +                        struct snd_pcm_hw_params *params)
>> +{
> ...
>> +     switch (params_rate(params)) {
>> +     case 44100:
>> +             mode |= APLL_RATE_44100;
>> +             break;
>> +     case 48000:
>> +             mode |= APLL_RATE_48000;
>> +             break;
>> +     default:
>> +             printk(KERN_ERR "TWL4030 hw params: unknown rate %d
>> \n",
>> +                     params_rate(params));
>> +             return -EINVAL;
>> +     }
> I checked that chip supports also other standard rates from 8 kHz,
> 11.025 kHz, etc. However I didn't find from quick look how this relates
> to interface rate. I would say that small TODO comment to whom who has
> platform to try these combinations would be nice.

It would be trivial to add support for the other data rates.  IIRC, I
just matched the data rates that were supported by mcbsp.

>> +static int twl4030_set_dai_sysclk(struct snd_soc_dai *codec_dai,
>> +             int clk_id, unsigned int freq, int dir)
>> +{
> ...
>> +
>> +     infreq |= APLL_EN;
>> +     twl4030_write(codec, REG_APLL_CTL, infreq);
>> +
>> +     return 0;
>> +}
> If this actually place for set_pll callback if one wants to manage PLL
> (APLL_EN bit) dynamically?

I can add a TODO comment for this.  I'm under delivery pressure for
the next few weeks and won't get time to work on this.

Steve


More information about the Alsa-devel mailing list