Commit 4b871df52edd89811ff122060ab783e9de740664
Exists in
ti-lsk-linux-4.1.y
and in
10 other branches
Merge remote-tracking branch 'asoc/fix/sgtl5000' into asoc-linus
Showing 1 changed file Side-by-side Diff
sound/soc/codecs/sgtl5000.c
... | ... | @@ -483,21 +483,21 @@ |
483 | 483 | /* setting i2s data format */ |
484 | 484 | switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { |
485 | 485 | case SND_SOC_DAIFMT_DSP_A: |
486 | - i2sctl |= SGTL5000_I2S_MODE_PCM; | |
486 | + i2sctl |= SGTL5000_I2S_MODE_PCM << SGTL5000_I2S_MODE_SHIFT; | |
487 | 487 | break; |
488 | 488 | case SND_SOC_DAIFMT_DSP_B: |
489 | - i2sctl |= SGTL5000_I2S_MODE_PCM; | |
489 | + i2sctl |= SGTL5000_I2S_MODE_PCM << SGTL5000_I2S_MODE_SHIFT; | |
490 | 490 | i2sctl |= SGTL5000_I2S_LRALIGN; |
491 | 491 | break; |
492 | 492 | case SND_SOC_DAIFMT_I2S: |
493 | - i2sctl |= SGTL5000_I2S_MODE_I2S_LJ; | |
493 | + i2sctl |= SGTL5000_I2S_MODE_I2S_LJ << SGTL5000_I2S_MODE_SHIFT; | |
494 | 494 | break; |
495 | 495 | case SND_SOC_DAIFMT_RIGHT_J: |
496 | - i2sctl |= SGTL5000_I2S_MODE_RJ; | |
496 | + i2sctl |= SGTL5000_I2S_MODE_RJ << SGTL5000_I2S_MODE_SHIFT; | |
497 | 497 | i2sctl |= SGTL5000_I2S_LRPOL; |
498 | 498 | break; |
499 | 499 | case SND_SOC_DAIFMT_LEFT_J: |
500 | - i2sctl |= SGTL5000_I2S_MODE_I2S_LJ; | |
500 | + i2sctl |= SGTL5000_I2S_MODE_I2S_LJ << SGTL5000_I2S_MODE_SHIFT; | |
501 | 501 | i2sctl |= SGTL5000_I2S_LRALIGN; |
502 | 502 | break; |
503 | 503 | default: |
... | ... | @@ -1461,6 +1461,9 @@ |
1461 | 1461 | ret = clk_prepare_enable(sgtl5000->mclk); |
1462 | 1462 | if (ret) |
1463 | 1463 | return ret; |
1464 | + | |
1465 | + /* Need 8 clocks before I2C accesses */ | |
1466 | + udelay(1); | |
1464 | 1467 | |
1465 | 1468 | /* read chip information */ |
1466 | 1469 | ret = regmap_read(sgtl5000->regmap, SGTL5000_CHIP_ID, ®); |