On Wed, Feb 25, 2009 at 7:37 AM, Daniel Mack <daniel@xxxxxxxx> wrote: > Added support for scenarios where the Cirrus CS4270 audio codec is slave > to the bitclk and lrclk. Mixed setups are unsupported. > > Signed-off-by: Daniel Mack <daniel@xxxxxxxx> FYI, it's customary to CC: the author of a driver when posting patches for it. > + /* 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; > + } > + > > 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. -- Timur Tabi Linux kernel developer at Freescale _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel