Commit 83cbe35b authored by Mark Brown's avatar Mark Brown

ASoC: sn95031: Convert to regmap

This moves us towards being able to remove the duplicated register I/O
functionality in ASoC.
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 4a10c2ac
...@@ -164,30 +164,28 @@ static unsigned int sn95031_get_mic_bias(struct snd_soc_codec *codec) ...@@ -164,30 +164,28 @@ static unsigned int sn95031_get_mic_bias(struct snd_soc_codec *codec)
} }
/*end - adc helper functions */ /*end - adc helper functions */
static inline unsigned int sn95031_read(struct snd_soc_codec *codec, static int sn95031_read(void *ctx, unsigned int reg, unsigned int *val)
unsigned int reg)
{ {
u8 value = 0; u8 value = 0;
int ret; int ret;
ret = intel_scu_ipc_ioread8(reg, &value); ret = intel_scu_ipc_ioread8(reg, &value);
if (ret) if (ret == 0)
pr_err("read of %x failed, err %d\n", reg, ret); *val = value;
return value;
return ret;
} }
static inline int sn95031_write(struct snd_soc_codec *codec, static int sn95031_write(void *ctx, unsigned int reg, unsigned int value)
unsigned int reg, unsigned int value)
{ {
int ret; return intel_scu_ipc_iowrite8(reg, value);
ret = intel_scu_ipc_iowrite8(reg, value);
if (ret)
pr_err("write of %x failed, err %d\n", reg, ret);
return ret;
} }
static const struct regmap_config sn95031_regmap = {
.reg_read = sn95031_read,
.reg_write = sn95031_write,
};
static int sn95031_set_vaud_bias(struct snd_soc_codec *codec, static int sn95031_set_vaud_bias(struct snd_soc_codec *codec,
enum snd_soc_bias_level level) enum snd_soc_bias_level level)
{ {
...@@ -827,6 +825,8 @@ static int sn95031_codec_probe(struct snd_soc_codec *codec) ...@@ -827,6 +825,8 @@ static int sn95031_codec_probe(struct snd_soc_codec *codec)
{ {
pr_debug("codec_probe called\n"); pr_debug("codec_probe called\n");
snd_soc_codec_set_cache_io(codec, 0, 0, SND_SOC_REGMAP);
/* PCM interface config /* PCM interface config
* This sets the pcm rx slot conguration to max 6 slots * This sets the pcm rx slot conguration to max 6 slots
* for max 4 dais (2 stereo and 2 mono) * for max 4 dais (2 stereo and 2 mono)
...@@ -886,8 +886,6 @@ static int sn95031_codec_remove(struct snd_soc_codec *codec) ...@@ -886,8 +886,6 @@ static int sn95031_codec_remove(struct snd_soc_codec *codec)
static struct snd_soc_codec_driver sn95031_codec = { static struct snd_soc_codec_driver sn95031_codec = {
.probe = sn95031_codec_probe, .probe = sn95031_codec_probe,
.remove = sn95031_codec_remove, .remove = sn95031_codec_remove,
.read = sn95031_read,
.write = sn95031_write,
.set_bias_level = sn95031_set_vaud_bias, .set_bias_level = sn95031_set_vaud_bias,
.idle_bias_off = true, .idle_bias_off = true,
.dapm_widgets = sn95031_dapm_widgets, .dapm_widgets = sn95031_dapm_widgets,
...@@ -898,7 +896,14 @@ static struct snd_soc_codec_driver sn95031_codec = { ...@@ -898,7 +896,14 @@ static struct snd_soc_codec_driver sn95031_codec = {
static int sn95031_device_probe(struct platform_device *pdev) static int sn95031_device_probe(struct platform_device *pdev)
{ {
struct regmap *regmap;
pr_debug("codec device probe called for %s\n", dev_name(&pdev->dev)); pr_debug("codec device probe called for %s\n", dev_name(&pdev->dev));
regmap = devm_regmap_init(&pdev->dev, NULL, NULL, &sn95031_regmap);
if (IS_ERR(regmap))
return PTR_ERR(regmap);
return snd_soc_register_codec(&pdev->dev, &sn95031_codec, return snd_soc_register_codec(&pdev->dev, &sn95031_codec,
sn95031_dais, ARRAY_SIZE(sn95031_dais)); sn95031_dais, ARRAY_SIZE(sn95031_dais));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment