Skip to content

Commit

Permalink
ASoC: wm8960: Support shared LRCLK
Browse files Browse the repository at this point in the history
If the LRCLK is shared and the WM8960 is clock master then we should
enable the LRCM bit to tell the device that it should drive LRCLK when
either ADC or DAC is enabled rather than separately driving the two
LRCLKs.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Mark Brown committed Sep 19, 2012
1 parent 2cbde7a commit 3706163
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
2 changes: 2 additions & 0 deletions include/sound/wm8960.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ struct wm8960_data {
bool capless; /* Headphone outputs configured in capless mode */

int dres; /* Discharge resistance for headphone outputs */

bool shared_lrclk; /* DAC and ADC LRCLKs are wired together */
};

#endif
11 changes: 11 additions & 0 deletions sound/soc/codecs/wm8960.c
Original file line number Diff line number Diff line change
Expand Up @@ -1036,6 +1036,7 @@ static const struct regmap_config wm8960_regmap = {
static __devinit int wm8960_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id)
{
struct wm8960_data *pdata = dev_get_platdata(&i2c->dev);
struct wm8960_priv *wm8960;
int ret;

Expand All @@ -1048,6 +1049,16 @@ static __devinit int wm8960_i2c_probe(struct i2c_client *i2c,
if (IS_ERR(wm8960->regmap))
return PTR_ERR(wm8960->regmap);

if (pdata && pdata->shared_lrclk) {
ret = regmap_update_bits(wm8960->regmap, WM8960_ADDCTL2,
0x4, 0x4);
if (ret != 0) {
dev_err(&i2c->dev, "Failed to enable LRCM: %d\n",
ret);
return ret;
}
}

i2c_set_clientdata(i2c, wm8960);

ret = snd_soc_register_codec(&i2c->dev,
Expand Down

0 comments on commit 3706163

Please sign in to comment.