mfd: mc13xxx: Move SPI erratum workaround into SPI I/O function
Move the workaround for double sending AUDIO_CODEC and AUDIO_DAC writes into the SPI core, aiding refactoring to eliminate the ASoC custom I/O functions and avoiding the extra writes for I2C. Signed-off-by: Mark Brown <broonie@linaro.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
This commit is contained in:
parent
c29c2d4e6b
commit
fd792f8fbc
|
@ -94,10 +94,15 @@ static int mc13xxx_spi_write(void *context, const void *data, size_t count)
|
|||
{
|
||||
struct device *dev = context;
|
||||
struct spi_device *spi = to_spi_device(dev);
|
||||
const char *reg = data;
|
||||
|
||||
if (count != 4)
|
||||
return -ENOTSUPP;
|
||||
|
||||
/* include errata fix for spi audio problems */
|
||||
if (*reg == MC13783_AUDIO_CODEC || *reg == MC13783_AUDIO_DAC)
|
||||
spi_write(spi, data, count);
|
||||
|
||||
return spi_write(spi, data, count);
|
||||
}
|
||||
|
||||
|
|
|
@ -41,6 +41,13 @@ int mc13xxx_adc_do_conversion(struct mc13xxx *mc13xxx,
|
|||
unsigned int mode, unsigned int channel,
|
||||
u8 ato, bool atox, unsigned int *sample);
|
||||
|
||||
#define MC13783_AUDIO_RX0 36
|
||||
#define MC13783_AUDIO_RX1 37
|
||||
#define MC13783_AUDIO_TX 38
|
||||
#define MC13783_SSI_NETWORK 39
|
||||
#define MC13783_AUDIO_CODEC 40
|
||||
#define MC13783_AUDIO_DAC 41
|
||||
|
||||
#define MC13XXX_IRQ_ADCDONE 0
|
||||
#define MC13XXX_IRQ_ADCBISDONE 1
|
||||
#define MC13XXX_IRQ_TS 2
|
||||
|
|
|
@ -125,10 +125,6 @@ static int mc13783_write(struct snd_soc_codec *codec,
|
|||
|
||||
ret = mc13xxx_reg_write(priv->mc13xxx, reg, value);
|
||||
|
||||
/* include errata fix for spi audio problems */
|
||||
if (reg == MC13783_AUDIO_CODEC || reg == MC13783_AUDIO_DAC)
|
||||
ret = mc13xxx_reg_write(priv->mc13xxx, reg, value);
|
||||
|
||||
mc13xxx_unlock(priv->mc13xxx);
|
||||
|
||||
return ret;
|
||||
|
|
Loading…
Reference in New Issue