summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/sound/tlv320dac33-plat.h1
-rw-r--r--sound/soc/codecs/tlv320dac33.c13
2 files changed, 12 insertions, 2 deletions
diff --git a/include/sound/tlv320dac33-plat.h b/include/sound/tlv320dac33-plat.h
index ac0665264bdf..3f428d53195b 100644
--- a/include/sound/tlv320dac33-plat.h
+++ b/include/sound/tlv320dac33-plat.h
@@ -15,6 +15,7 @@
15 15
16struct tlv320dac33_platform_data { 16struct tlv320dac33_platform_data {
17 int power_gpio; 17 int power_gpio;
18 int keep_bclk; /* Keep the BCLK running in FIFO modes */
18 u8 burst_bclkdiv; 19 u8 burst_bclkdiv;
19}; 20};
20 21
diff --git a/sound/soc/codecs/tlv320dac33.c b/sound/soc/codecs/tlv320dac33.c
index e845c4b9066e..a6f19271aaea 100644
--- a/sound/soc/codecs/tlv320dac33.c
+++ b/sound/soc/codecs/tlv320dac33.c
@@ -93,6 +93,8 @@ struct tlv320dac33_priv {
93 unsigned int nsample; /* burst read amount from host */ 93 unsigned int nsample; /* burst read amount from host */
94 u8 burst_bclkdiv; /* BCLK divider value in burst mode */ 94 u8 burst_bclkdiv; /* BCLK divider value in burst mode */
95 95
96 int keep_bclk; /* Keep the BCLK continuously running
97 * in FIFO modes */
96 enum dac33_state state; 98 enum dac33_state state;
97}; 99};
98 100
@@ -803,7 +805,10 @@ static int dac33_prepare_chip(struct snd_pcm_substream *substream)
803 */ 805 */
804 fifoctrl_a &= ~DAC33_FBYPAS; 806 fifoctrl_a &= ~DAC33_FBYPAS;
805 fifoctrl_a &= ~DAC33_FAUTO; 807 fifoctrl_a &= ~DAC33_FAUTO;
806 aictrl_b &= ~DAC33_BCLKON; 808 if (dac33->keep_bclk)
809 aictrl_b |= DAC33_BCLKON;
810 else
811 aictrl_b &= ~DAC33_BCLKON;
807 break; 812 break;
808 case DAC33_FIFO_MODE7: 813 case DAC33_FIFO_MODE7:
809 /* 814 /*
@@ -814,7 +819,10 @@ static int dac33_prepare_chip(struct snd_pcm_substream *substream)
814 */ 819 */
815 fifoctrl_a &= ~DAC33_FBYPAS; 820 fifoctrl_a &= ~DAC33_FBYPAS;
816 fifoctrl_a |= DAC33_FAUTO; 821 fifoctrl_a |= DAC33_FAUTO;
817 aictrl_b &= ~DAC33_BCLKON; 822 if (dac33->keep_bclk)
823 aictrl_b |= DAC33_BCLKON;
824 else
825 aictrl_b &= ~DAC33_BCLKON;
818 break; 826 break;
819 default: 827 default:
820 /* 828 /*
@@ -1234,6 +1242,7 @@ static int __devinit dac33_i2c_probe(struct i2c_client *client,
1234 1242
1235 dac33->power_gpio = pdata->power_gpio; 1243 dac33->power_gpio = pdata->power_gpio;
1236 dac33->burst_bclkdiv = pdata->burst_bclkdiv; 1244 dac33->burst_bclkdiv = pdata->burst_bclkdiv;
1245 dac33->keep_bclk = pdata->keep_bclk;
1237 dac33->irq = client->irq; 1246 dac33->irq = client->irq;
1238 dac33->nsample = NSAMPLE_MAX; 1247 dac33->nsample = NSAMPLE_MAX;
1239 /* Disable FIFO use by default */ 1248 /* Disable FIFO use by default */