Commit 4b871df52edd89811ff122060ab783e9de740664

Authored by Mark Brown

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, &reg);