Commit eeb309a8 authored by Peter Ujfalusi's avatar Peter Ujfalusi Committed by Mark Brown

ASoC: tlv320dac33: Add option for keeping the BCLK running

Platform data option for the codec to keep the BCLK clock
continuously running in FIFO modes (codec master).

OMAP3 McBSP when in slave mode needs continuous BCLK running
on the serial bus in order to operate correctly.

Since in FIFO mode the DAC33 can also shut down the BCLK clock
and enable it only when it is needed, let the platforms decide
if the CPU side needs the BCLK running or not.
Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@nokia.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent c3746a07
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
struct tlv320dac33_platform_data { struct tlv320dac33_platform_data {
int power_gpio; int power_gpio;
int keep_bclk; /* Keep the BCLK running in FIFO modes */
u8 burst_bclkdiv; u8 burst_bclkdiv;
}; };
......
...@@ -93,6 +93,8 @@ struct tlv320dac33_priv { ...@@ -93,6 +93,8 @@ struct tlv320dac33_priv {
unsigned int nsample; /* burst read amount from host */ unsigned int nsample; /* burst read amount from host */
u8 burst_bclkdiv; /* BCLK divider value in burst mode */ u8 burst_bclkdiv; /* BCLK divider value in burst mode */
int keep_bclk; /* Keep the BCLK continuously running
* in FIFO modes */
enum dac33_state state; enum dac33_state state;
}; };
...@@ -803,6 +805,9 @@ static int dac33_prepare_chip(struct snd_pcm_substream *substream) ...@@ -803,6 +805,9 @@ static int dac33_prepare_chip(struct snd_pcm_substream *substream)
*/ */
fifoctrl_a &= ~DAC33_FBYPAS; fifoctrl_a &= ~DAC33_FBYPAS;
fifoctrl_a &= ~DAC33_FAUTO; fifoctrl_a &= ~DAC33_FAUTO;
if (dac33->keep_bclk)
aictrl_b |= DAC33_BCLKON;
else
aictrl_b &= ~DAC33_BCLKON; aictrl_b &= ~DAC33_BCLKON;
break; break;
case DAC33_FIFO_MODE7: case DAC33_FIFO_MODE7:
...@@ -814,6 +819,9 @@ static int dac33_prepare_chip(struct snd_pcm_substream *substream) ...@@ -814,6 +819,9 @@ static int dac33_prepare_chip(struct snd_pcm_substream *substream)
*/ */
fifoctrl_a &= ~DAC33_FBYPAS; fifoctrl_a &= ~DAC33_FBYPAS;
fifoctrl_a |= DAC33_FAUTO; fifoctrl_a |= DAC33_FAUTO;
if (dac33->keep_bclk)
aictrl_b |= DAC33_BCLKON;
else
aictrl_b &= ~DAC33_BCLKON; aictrl_b &= ~DAC33_BCLKON;
break; break;
default: default:
...@@ -1234,6 +1242,7 @@ static int __devinit dac33_i2c_probe(struct i2c_client *client, ...@@ -1234,6 +1242,7 @@ static int __devinit dac33_i2c_probe(struct i2c_client *client,
dac33->power_gpio = pdata->power_gpio; dac33->power_gpio = pdata->power_gpio;
dac33->burst_bclkdiv = pdata->burst_bclkdiv; dac33->burst_bclkdiv = pdata->burst_bclkdiv;
dac33->keep_bclk = pdata->keep_bclk;
dac33->irq = client->irq; dac33->irq = client->irq;
dac33->nsample = NSAMPLE_MAX; dac33->nsample = NSAMPLE_MAX;
/* Disable FIFO use by default */ /* Disable FIFO use by default */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment