mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-27 06:34:11 +08:00
ASoC: ak4104: Use snd_soc_update_bits() for read/modify/write
Don't use the internal I/O functions directly. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Daniel Mack <zonque@gmail.com>
This commit is contained in:
parent
95a771ca16
commit
afad95f825
@ -110,12 +110,6 @@ static int ak4104_set_dai_fmt(struct snd_soc_dai *codec_dai,
|
|||||||
struct snd_soc_codec *codec = codec_dai->codec;
|
struct snd_soc_codec *codec = codec_dai->codec;
|
||||||
int val = 0;
|
int val = 0;
|
||||||
|
|
||||||
val = ak4104_read_reg_cache(codec, AK4104_REG_CONTROL1);
|
|
||||||
if (val < 0)
|
|
||||||
return val;
|
|
||||||
|
|
||||||
val &= ~(AK4104_CONTROL1_DIF0 | AK4104_CONTROL1_DIF1);
|
|
||||||
|
|
||||||
/* set DAI format */
|
/* set DAI format */
|
||||||
switch (format & SND_SOC_DAIFMT_FORMAT_MASK) {
|
switch (format & SND_SOC_DAIFMT_FORMAT_MASK) {
|
||||||
case SND_SOC_DAIFMT_RIGHT_J:
|
case SND_SOC_DAIFMT_RIGHT_J:
|
||||||
@ -135,7 +129,13 @@ static int ak4104_set_dai_fmt(struct snd_soc_dai *codec_dai,
|
|||||||
if ((format & SND_SOC_DAIFMT_MASTER_MASK) != SND_SOC_DAIFMT_CBS_CFS)
|
if ((format & SND_SOC_DAIFMT_MASTER_MASK) != SND_SOC_DAIFMT_CBS_CFS)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
return ak4104_spi_write(codec, AK4104_REG_CONTROL1, val);
|
ret = snd_soc_update_bits(codec, AK4104_REG_CONTROL1,
|
||||||
|
AK4104_CONTROL1_DIF0 | AK4104_CONTROL1_DIF1,
|
||||||
|
val);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ak4104_hw_params(struct snd_pcm_substream *substream,
|
static int ak4104_hw_params(struct snd_pcm_substream *substream,
|
||||||
@ -211,16 +211,15 @@ static int ak4104_probe(struct snd_soc_codec *codec)
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
/* set power-up and non-reset bits */
|
/* set power-up and non-reset bits */
|
||||||
val = ak4104_read_reg_cache(codec, AK4104_REG_CONTROL1);
|
ret = snd_soc_update_bits(codec, AK4104_REG_CONTROL1,
|
||||||
val |= AK4104_CONTROL1_PW | AK4104_CONTROL1_RSTN;
|
AK4104_CONTROL1_PW | AK4104_CONTROL1_RSTN,
|
||||||
ret = ak4104_spi_write(codec, AK4104_REG_CONTROL1, val);
|
AK4104_CONTROL1_PW | AK4104_CONTROL1_RSTN);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
/* enable transmitter */
|
/* enable transmitter */
|
||||||
val = ak4104_read_reg_cache(codec, AK4104_REG_TX);
|
ret = snd_soc_update_bits(codec, AK4104_REG_TX,
|
||||||
val |= AK4104_TX_TXE;
|
AK4104_TX_TXE, AK4104_TX_TXE);
|
||||||
ret = ak4104_spi_write(codec, AK4104_REG_TX, val);
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@ -229,17 +228,10 @@ static int ak4104_probe(struct snd_soc_codec *codec)
|
|||||||
|
|
||||||
static int ak4104_remove(struct snd_soc_codec *codec)
|
static int ak4104_remove(struct snd_soc_codec *codec)
|
||||||
{
|
{
|
||||||
int val, ret;
|
snd_soc_update_bits(codec, AK4104_REG_CONTROL1,
|
||||||
|
AK4104_CONTROL1_PW | AK4104_CONTROL1_RSTN, 0);
|
||||||
|
|
||||||
val = ak4104_read_reg_cache(codec, AK4104_REG_CONTROL1);
|
return 0;
|
||||||
if (val < 0)
|
|
||||||
return val;
|
|
||||||
|
|
||||||
/* clear power-up and non-reset bits */
|
|
||||||
val &= ~(AK4104_CONTROL1_PW | AK4104_CONTROL1_RSTN);
|
|
||||||
ret = ak4104_spi_write(codec, AK4104_REG_CONTROL1, val);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct snd_soc_codec_driver soc_codec_device_ak4104 = {
|
static struct snd_soc_codec_driver soc_codec_device_ak4104 = {
|
||||||
|
Loading…
Reference in New Issue
Block a user