[alsa-devel] [PATCH] cs4270: add support for slave mode configurations
Daniel Mack
daniel at caiaq.de
Sat Feb 28 13:13:43 CET 2009
On Fri, Feb 27, 2009 at 03:51:58PM -0600, Timur Tabi wrote:
> > + /* set master/slave audio interface */
> > + switch (format & SND_SOC_DAIFMT_MASTER_MASK) {
> > + case SND_SOC_DAIFMT_CBS_CFS:
> > + cs4270->slave_mode = 1;
> > + break;
> > + case SND_SOC_DAIFMT_CBM_CFM:
> > + cs4270->slave_mode = 0;
> > + break;
> > + case SND_SOC_DAIFMT_CBM_CFS:
> > + /* unsupported - cs4270 can eigther be slave or master to
>
> Typo. However, I suggest you get rid of the "case
> SND_SOC_DAIFMT_CBM_CFS" and in the "default:", just have this:
>
> > + default:
> /* all other modes are unsupported by the hardware */
> > + ret = -EINVAL;
> > + }
> > +
Ok, I'll post a patch for this.
> > reg = snd_soc_read(codec, CS4270_MODE);
> > reg &= ~(CS4270_MODE_SPEED_MASK | CS4270_MODE_DIV_MASK);
> > - reg |= cs4270_mode_ratios[i].speed_mode | cs4270_mode_ratios[i].mclk;
> > + reg |= cs4270_mode_ratios[i].mclk;
> > +
> > + if (cs4270->slave_mode)
> > + reg |= CS4270_MODE_SLAVE;
> > + else
> > + reg |= cs4270_mode_ratios[i].speed_mode;
>
> Are you sure that the mclk bits are still correct in slave mode? I'm
> looking at table 5 in the CS4270 manual, and it lists settings for
> 1x,2x,4x speed even though the register is set to slave mode instead.
Hmm - mclk bits are set with 'reg |= cs4270_mode_ratios[i].mclk;'
unconditionally, and both speed flags are used when in slave mode. Don't
see where you suspect a flaw here?
Daniel
More information about the Alsa-devel
mailing list