Commit 5783994b authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown

ASoC: 88pm860x: replace codec to component

Now we can replace Codec to Component. Let's do it.

Note:
	xxx_codec_xxx()		->	xxx_component_xxx()
	.idle_bias_off = 0	->	.idle_bias_on = 1
	.ignore_pmdown_time = 0	->	.use_pmdown_time = 1
	-			->	.endianness = 1
	-			->	.non_legacy_dai_naming = 1
Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 7928b2cb
...@@ -139,7 +139,7 @@ struct pm860x_priv { ...@@ -139,7 +139,7 @@ struct pm860x_priv {
unsigned int pcmclk; unsigned int pcmclk;
unsigned int dir; unsigned int dir;
unsigned int filter; unsigned int filter;
struct snd_soc_codec *codec; struct snd_soc_component *component;
struct i2c_client *i2c; struct i2c_client *i2c;
struct regmap *regmap; struct regmap *regmap;
struct pm860x_chip *chip; struct pm860x_chip *chip;
...@@ -272,15 +272,15 @@ static int snd_soc_get_volsw_2r_st(struct snd_kcontrol *kcontrol, ...@@ -272,15 +272,15 @@ static int snd_soc_get_volsw_2r_st(struct snd_kcontrol *kcontrol,
{ {
struct soc_mixer_control *mc = struct soc_mixer_control *mc =
(struct soc_mixer_control *)kcontrol->private_value; (struct soc_mixer_control *)kcontrol->private_value;
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
unsigned int reg = mc->reg; unsigned int reg = mc->reg;
unsigned int reg2 = mc->rreg; unsigned int reg2 = mc->rreg;
int val[2], val2[2], i; int val[2], val2[2], i;
val[0] = snd_soc_read(codec, reg) & 0x3f; val[0] = snd_soc_component_read32(component, reg) & 0x3f;
val[1] = (snd_soc_read(codec, PM860X_SIDETONE_SHIFT) >> 4) & 0xf; val[1] = (snd_soc_component_read32(component, PM860X_SIDETONE_SHIFT) >> 4) & 0xf;
val2[0] = snd_soc_read(codec, reg2) & 0x3f; val2[0] = snd_soc_component_read32(component, reg2) & 0x3f;
val2[1] = (snd_soc_read(codec, PM860X_SIDETONE_SHIFT)) & 0xf; val2[1] = (snd_soc_component_read32(component, PM860X_SIDETONE_SHIFT)) & 0xf;
for (i = 0; i < ARRAY_SIZE(st_table); i++) { for (i = 0; i < ARRAY_SIZE(st_table); i++) {
if ((st_table[i].m == val[0]) && (st_table[i].n == val[1])) if ((st_table[i].m == val[0]) && (st_table[i].n == val[1]))
...@@ -296,7 +296,7 @@ static int snd_soc_put_volsw_2r_st(struct snd_kcontrol *kcontrol, ...@@ -296,7 +296,7 @@ static int snd_soc_put_volsw_2r_st(struct snd_kcontrol *kcontrol,
{ {
struct soc_mixer_control *mc = struct soc_mixer_control *mc =
(struct soc_mixer_control *)kcontrol->private_value; (struct soc_mixer_control *)kcontrol->private_value;
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
unsigned int reg = mc->reg; unsigned int reg = mc->reg;
unsigned int reg2 = mc->rreg; unsigned int reg2 = mc->rreg;
int err; int err;
...@@ -308,18 +308,18 @@ static int snd_soc_put_volsw_2r_st(struct snd_kcontrol *kcontrol, ...@@ -308,18 +308,18 @@ static int snd_soc_put_volsw_2r_st(struct snd_kcontrol *kcontrol,
if (val >= ARRAY_SIZE(st_table) || val2 >= ARRAY_SIZE(st_table)) if (val >= ARRAY_SIZE(st_table) || val2 >= ARRAY_SIZE(st_table))
return -EINVAL; return -EINVAL;
err = snd_soc_update_bits(codec, reg, 0x3f, st_table[val].m); err = snd_soc_component_update_bits(component, reg, 0x3f, st_table[val].m);
if (err < 0) if (err < 0)
return err; return err;
err = snd_soc_update_bits(codec, PM860X_SIDETONE_SHIFT, 0xf0, err = snd_soc_component_update_bits(component, PM860X_SIDETONE_SHIFT, 0xf0,
st_table[val].n << 4); st_table[val].n << 4);
if (err < 0) if (err < 0)
return err; return err;
err = snd_soc_update_bits(codec, reg2, 0x3f, st_table[val2].m); err = snd_soc_component_update_bits(component, reg2, 0x3f, st_table[val2].m);
if (err < 0) if (err < 0)
return err; return err;
err = snd_soc_update_bits(codec, PM860X_SIDETONE_SHIFT, 0x0f, err = snd_soc_component_update_bits(component, PM860X_SIDETONE_SHIFT, 0x0f,
st_table[val2].n); st_table[val2].n);
return err; return err;
} }
...@@ -329,15 +329,15 @@ static int snd_soc_get_volsw_2r_out(struct snd_kcontrol *kcontrol, ...@@ -329,15 +329,15 @@ static int snd_soc_get_volsw_2r_out(struct snd_kcontrol *kcontrol,
{ {
struct soc_mixer_control *mc = struct soc_mixer_control *mc =
(struct soc_mixer_control *)kcontrol->private_value; (struct soc_mixer_control *)kcontrol->private_value;
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
unsigned int reg = mc->reg; unsigned int reg = mc->reg;
unsigned int reg2 = mc->rreg; unsigned int reg2 = mc->rreg;
unsigned int shift = mc->shift; unsigned int shift = mc->shift;
int max = mc->max, val, val2; int max = mc->max, val, val2;
unsigned int mask = (1 << fls(max)) - 1; unsigned int mask = (1 << fls(max)) - 1;
val = snd_soc_read(codec, reg) >> shift; val = snd_soc_component_read32(component, reg) >> shift;
val2 = snd_soc_read(codec, reg2) >> shift; val2 = snd_soc_component_read32(component, reg2) >> shift;
ucontrol->value.integer.value[0] = (max - val) & mask; ucontrol->value.integer.value[0] = (max - val) & mask;
ucontrol->value.integer.value[1] = (max - val2) & mask; ucontrol->value.integer.value[1] = (max - val2) & mask;
...@@ -349,7 +349,7 @@ static int snd_soc_put_volsw_2r_out(struct snd_kcontrol *kcontrol, ...@@ -349,7 +349,7 @@ static int snd_soc_put_volsw_2r_out(struct snd_kcontrol *kcontrol,
{ {
struct soc_mixer_control *mc = struct soc_mixer_control *mc =
(struct soc_mixer_control *)kcontrol->private_value; (struct soc_mixer_control *)kcontrol->private_value;
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
unsigned int reg = mc->reg; unsigned int reg = mc->reg;
unsigned int reg2 = mc->rreg; unsigned int reg2 = mc->rreg;
unsigned int shift = mc->shift; unsigned int shift = mc->shift;
...@@ -365,11 +365,11 @@ static int snd_soc_put_volsw_2r_out(struct snd_kcontrol *kcontrol, ...@@ -365,11 +365,11 @@ static int snd_soc_put_volsw_2r_out(struct snd_kcontrol *kcontrol,
val = val << shift; val = val << shift;
val2 = val2 << shift; val2 = val2 << shift;
err = snd_soc_update_bits(codec, reg, val_mask, val); err = snd_soc_component_update_bits(component, reg, val_mask, val);
if (err < 0) if (err < 0)
return err; return err;
err = snd_soc_update_bits(codec, reg2, val_mask, val2); err = snd_soc_component_update_bits(component, reg2, val_mask, val2);
return err; return err;
} }
...@@ -382,7 +382,7 @@ static int snd_soc_put_volsw_2r_out(struct snd_kcontrol *kcontrol, ...@@ -382,7 +382,7 @@ static int snd_soc_put_volsw_2r_out(struct snd_kcontrol *kcontrol,
static int pm860x_rsync_event(struct snd_soc_dapm_widget *w, static int pm860x_rsync_event(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol, int event) struct snd_kcontrol *kcontrol, int event)
{ {
struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
/* /*
* In order to avoid current on the load, mute power-on and power-off * In order to avoid current on the load, mute power-on and power-off
...@@ -390,8 +390,8 @@ static int pm860x_rsync_event(struct snd_soc_dapm_widget *w, ...@@ -390,8 +390,8 @@ static int pm860x_rsync_event(struct snd_soc_dapm_widget *w,
* Unmute by DAC_MUTE. It should be unmuted when DAPM sequence is * Unmute by DAC_MUTE. It should be unmuted when DAPM sequence is
* finished. * finished.
*/ */
snd_soc_update_bits(codec, PM860X_DAC_OFFSET, DAC_MUTE, 0); snd_soc_component_update_bits(component, PM860X_DAC_OFFSET, DAC_MUTE, 0);
snd_soc_update_bits(codec, PM860X_EAR_CTRL_2, snd_soc_component_update_bits(component, PM860X_EAR_CTRL_2,
RSYNC_CHANGE, RSYNC_CHANGE); RSYNC_CHANGE, RSYNC_CHANGE);
return 0; return 0;
} }
...@@ -399,7 +399,7 @@ static int pm860x_rsync_event(struct snd_soc_dapm_widget *w, ...@@ -399,7 +399,7 @@ static int pm860x_rsync_event(struct snd_soc_dapm_widget *w,
static int pm860x_dac_event(struct snd_soc_dapm_widget *w, static int pm860x_dac_event(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol, int event) struct snd_kcontrol *kcontrol, int event)
{ {
struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
unsigned int dac = 0; unsigned int dac = 0;
int data; int data;
...@@ -412,28 +412,28 @@ static int pm860x_dac_event(struct snd_soc_dapm_widget *w, ...@@ -412,28 +412,28 @@ static int pm860x_dac_event(struct snd_soc_dapm_widget *w,
if (dac) { if (dac) {
/* Auto mute in power-on sequence. */ /* Auto mute in power-on sequence. */
dac |= MODULATOR; dac |= MODULATOR;
snd_soc_update_bits(codec, PM860X_DAC_OFFSET, snd_soc_component_update_bits(component, PM860X_DAC_OFFSET,
DAC_MUTE, DAC_MUTE); DAC_MUTE, DAC_MUTE);
snd_soc_update_bits(codec, PM860X_EAR_CTRL_2, snd_soc_component_update_bits(component, PM860X_EAR_CTRL_2,
RSYNC_CHANGE, RSYNC_CHANGE); RSYNC_CHANGE, RSYNC_CHANGE);
/* update dac */ /* update dac */
snd_soc_update_bits(codec, PM860X_DAC_EN_2, snd_soc_component_update_bits(component, PM860X_DAC_EN_2,
dac, dac); dac, dac);
} }
break; break;
case SND_SOC_DAPM_PRE_PMD: case SND_SOC_DAPM_PRE_PMD:
if (dac) { if (dac) {
/* Auto mute in power-off sequence. */ /* Auto mute in power-off sequence. */
snd_soc_update_bits(codec, PM860X_DAC_OFFSET, snd_soc_component_update_bits(component, PM860X_DAC_OFFSET,
DAC_MUTE, DAC_MUTE); DAC_MUTE, DAC_MUTE);
snd_soc_update_bits(codec, PM860X_EAR_CTRL_2, snd_soc_component_update_bits(component, PM860X_EAR_CTRL_2,
RSYNC_CHANGE, RSYNC_CHANGE); RSYNC_CHANGE, RSYNC_CHANGE);
/* update dac */ /* update dac */
data = snd_soc_read(codec, PM860X_DAC_EN_2); data = snd_soc_component_read32(component, PM860X_DAC_EN_2);
data &= ~dac; data &= ~dac;
if (!(data & (DAC_LEFT | DAC_RIGHT))) if (!(data & (DAC_LEFT | DAC_RIGHT)))
data &= ~MODULATOR; data &= ~MODULATOR;
snd_soc_write(codec, PM860X_DAC_EN_2, data); snd_soc_component_write(component, PM860X_DAC_EN_2, data);
} }
break; break;
} }
...@@ -922,13 +922,13 @@ static const struct snd_soc_dapm_route pm860x_dapm_routes[] = { ...@@ -922,13 +922,13 @@ static const struct snd_soc_dapm_route pm860x_dapm_routes[] = {
*/ */
static int pm860x_digital_mute(struct snd_soc_dai *codec_dai, int mute) static int pm860x_digital_mute(struct snd_soc_dai *codec_dai, int mute)
{ {
struct snd_soc_codec *codec = codec_dai->codec; struct snd_soc_component *component = codec_dai->component;
int data = 0, mask = MUTE_LEFT | MUTE_RIGHT; int data = 0, mask = MUTE_LEFT | MUTE_RIGHT;
if (mute) if (mute)
data = mask; data = mask;
snd_soc_update_bits(codec, PM860X_DAC_OFFSET, mask, data); snd_soc_component_update_bits(component, PM860X_DAC_OFFSET, mask, data);
snd_soc_update_bits(codec, PM860X_EAR_CTRL_2, snd_soc_component_update_bits(component, PM860X_EAR_CTRL_2,
RSYNC_CHANGE, RSYNC_CHANGE); RSYNC_CHANGE, RSYNC_CHANGE);
return 0; return 0;
} }
...@@ -937,7 +937,7 @@ static int pm860x_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -937,7 +937,7 @@ static int pm860x_pcm_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params, struct snd_pcm_hw_params *params,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct snd_soc_codec *codec = dai->codec; struct snd_soc_component *component = dai->component;
unsigned char inf = 0, mask = 0; unsigned char inf = 0, mask = 0;
/* bit size */ /* bit size */
...@@ -952,7 +952,7 @@ static int pm860x_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -952,7 +952,7 @@ static int pm860x_pcm_hw_params(struct snd_pcm_substream *substream,
return -EINVAL; return -EINVAL;
} }
mask |= PCM_INF2_18WL; mask |= PCM_INF2_18WL;
snd_soc_update_bits(codec, PM860X_PCM_IFACE_2, mask, inf); snd_soc_component_update_bits(component, PM860X_PCM_IFACE_2, mask, inf);
/* sample rate */ /* sample rate */
switch (params_rate(params)) { switch (params_rate(params)) {
...@@ -971,7 +971,7 @@ static int pm860x_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -971,7 +971,7 @@ static int pm860x_pcm_hw_params(struct snd_pcm_substream *substream,
default: default:
return -EINVAL; return -EINVAL;
} }
snd_soc_update_bits(codec, PM860X_PCM_RATE, 0x0f, inf); snd_soc_component_update_bits(component, PM860X_PCM_RATE, 0x0f, inf);
return 0; return 0;
} }
...@@ -979,8 +979,8 @@ static int pm860x_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -979,8 +979,8 @@ static int pm860x_pcm_hw_params(struct snd_pcm_substream *substream,
static int pm860x_pcm_set_dai_fmt(struct snd_soc_dai *codec_dai, static int pm860x_pcm_set_dai_fmt(struct snd_soc_dai *codec_dai,
unsigned int fmt) unsigned int fmt)
{ {
struct snd_soc_codec *codec = codec_dai->codec; struct snd_soc_component *component = codec_dai->component;
struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec); struct pm860x_priv *pm860x = snd_soc_component_get_drvdata(component);
unsigned char inf = 0, mask = 0; unsigned char inf = 0, mask = 0;
int ret = -EINVAL; int ret = -EINVAL;
...@@ -1012,15 +1012,15 @@ static int pm860x_pcm_set_dai_fmt(struct snd_soc_dai *codec_dai, ...@@ -1012,15 +1012,15 @@ static int pm860x_pcm_set_dai_fmt(struct snd_soc_dai *codec_dai,
mask |= PCM_MODE_MASK; mask |= PCM_MODE_MASK;
if (ret) if (ret)
return ret; return ret;
snd_soc_update_bits(codec, PM860X_PCM_IFACE_2, mask, inf); snd_soc_component_update_bits(component, PM860X_PCM_IFACE_2, mask, inf);
return 0; return 0;
} }
static int pm860x_set_dai_sysclk(struct snd_soc_dai *codec_dai, static int pm860x_set_dai_sysclk(struct snd_soc_dai *codec_dai,
int clk_id, unsigned int freq, int dir) int clk_id, unsigned int freq, int dir)
{ {
struct snd_soc_codec *codec = codec_dai->codec; struct snd_soc_component *component = codec_dai->component;
struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec); struct pm860x_priv *pm860x = snd_soc_component_get_drvdata(component);
if (dir == PM860X_CLK_DIR_OUT) if (dir == PM860X_CLK_DIR_OUT)
pm860x->dir = PM860X_CLK_DIR_OUT; pm860x->dir = PM860X_CLK_DIR_OUT;
...@@ -1034,7 +1034,7 @@ static int pm860x_i2s_hw_params(struct snd_pcm_substream *substream, ...@@ -1034,7 +1034,7 @@ static int pm860x_i2s_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params, struct snd_pcm_hw_params *params,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct snd_soc_codec *codec = dai->codec; struct snd_soc_component *component = dai->component;
unsigned char inf; unsigned char inf;
/* bit size */ /* bit size */
...@@ -1048,7 +1048,7 @@ static int pm860x_i2s_hw_params(struct snd_pcm_substream *substream, ...@@ -1048,7 +1048,7 @@ static int pm860x_i2s_hw_params(struct snd_pcm_substream *substream,
default: default:
return -EINVAL; return -EINVAL;
} }
snd_soc_update_bits(codec, PM860X_I2S_IFACE_2, PCM_INF2_18WL, inf); snd_soc_component_update_bits(component, PM860X_I2S_IFACE_2, PCM_INF2_18WL, inf);
/* sample rate */ /* sample rate */
switch (params_rate(params)) { switch (params_rate(params)) {
...@@ -1076,7 +1076,7 @@ static int pm860x_i2s_hw_params(struct snd_pcm_substream *substream, ...@@ -1076,7 +1076,7 @@ static int pm860x_i2s_hw_params(struct snd_pcm_substream *substream,
default: default:
return -EINVAL; return -EINVAL;
} }
snd_soc_update_bits(codec, PM860X_I2S_IFACE_4, 0xf, inf); snd_soc_component_update_bits(component, PM860X_I2S_IFACE_4, 0xf, inf);
return 0; return 0;
} }
...@@ -1084,8 +1084,8 @@ static int pm860x_i2s_hw_params(struct snd_pcm_substream *substream, ...@@ -1084,8 +1084,8 @@ static int pm860x_i2s_hw_params(struct snd_pcm_substream *substream,
static int pm860x_i2s_set_dai_fmt(struct snd_soc_dai *codec_dai, static int pm860x_i2s_set_dai_fmt(struct snd_soc_dai *codec_dai,
unsigned int fmt) unsigned int fmt)
{ {
struct snd_soc_codec *codec = codec_dai->codec; struct snd_soc_component *component = codec_dai->component;
struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec); struct pm860x_priv *pm860x = snd_soc_component_get_drvdata(component);
unsigned char inf = 0, mask = 0; unsigned char inf = 0, mask = 0;
mask |= PCM_INF2_BCLK | PCM_INF2_FS | PCM_INF2_MASTER; mask |= PCM_INF2_BCLK | PCM_INF2_FS | PCM_INF2_MASTER;
...@@ -1116,14 +1116,14 @@ static int pm860x_i2s_set_dai_fmt(struct snd_soc_dai *codec_dai, ...@@ -1116,14 +1116,14 @@ static int pm860x_i2s_set_dai_fmt(struct snd_soc_dai *codec_dai,
return -EINVAL; return -EINVAL;
} }
mask |= PCM_MODE_MASK; mask |= PCM_MODE_MASK;
snd_soc_update_bits(codec, PM860X_I2S_IFACE_2, mask, inf); snd_soc_component_update_bits(component, PM860X_I2S_IFACE_2, mask, inf);
return 0; return 0;
} }
static int pm860x_set_bias_level(struct snd_soc_codec *codec, static int pm860x_set_bias_level(struct snd_soc_component *component,
enum snd_soc_bias_level level) enum snd_soc_bias_level level)
{ {
struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec); struct pm860x_priv *pm860x = snd_soc_component_get_drvdata(component);
int data; int data;
switch (level) { switch (level) {
...@@ -1134,7 +1134,7 @@ static int pm860x_set_bias_level(struct snd_soc_codec *codec, ...@@ -1134,7 +1134,7 @@ static int pm860x_set_bias_level(struct snd_soc_codec *codec,
break; break;
case SND_SOC_BIAS_STANDBY: case SND_SOC_BIAS_STANDBY:
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) { if (snd_soc_component_get_bias_level(component) == SND_SOC_BIAS_OFF) {
/* Enable Audio PLL & Audio section */ /* Enable Audio PLL & Audio section */
data = AUDIO_PLL | AUDIO_SECTION_ON; data = AUDIO_PLL | AUDIO_SECTION_ON;
pm860x_reg_write(pm860x->i2c, REG_MISC2, data); pm860x_reg_write(pm860x->i2c, REG_MISC2, data);
...@@ -1216,7 +1216,7 @@ static struct snd_soc_dai_driver pm860x_dai[] = { ...@@ -1216,7 +1216,7 @@ static struct snd_soc_dai_driver pm860x_dai[] = {
}, },
}; };
static irqreturn_t pm860x_codec_handler(int irq, void *data) static irqreturn_t pm860x_component_handler(int irq, void *data)
{ {
struct pm860x_priv *pm860x = data; struct pm860x_priv *pm860x = data;
int status, shrt, report = 0, mic_report = 0; int status, shrt, report = 0, mic_report = 0;
...@@ -1230,7 +1230,7 @@ static irqreturn_t pm860x_codec_handler(int irq, void *data) ...@@ -1230,7 +1230,7 @@ static irqreturn_t pm860x_codec_handler(int irq, void *data)
#ifndef CONFIG_SND_SOC_88PM860X_MODULE #ifndef CONFIG_SND_SOC_88PM860X_MODULE
if (status & (HEADSET_STATUS | MIC_STATUS | SHORT_HS1 | SHORT_HS2 | if (status & (HEADSET_STATUS | MIC_STATUS | SHORT_HS1 | SHORT_HS2 |
SHORT_LO1 | SHORT_LO2)) SHORT_LO1 | SHORT_LO2))
trace_snd_soc_jack_irq(dev_name(pm860x->codec->dev)); trace_snd_soc_jack_irq(dev_name(pm860x->component->dev));
#endif #endif
if ((pm860x->det.hp_det & SND_JACK_HEADPHONE) if ((pm860x->det.hp_det & SND_JACK_HEADPHONE)
...@@ -1256,17 +1256,17 @@ static irqreturn_t pm860x_codec_handler(int irq, void *data) ...@@ -1256,17 +1256,17 @@ static irqreturn_t pm860x_codec_handler(int irq, void *data)
snd_soc_jack_report(pm860x->det.mic_jack, SND_JACK_MICROPHONE, snd_soc_jack_report(pm860x->det.mic_jack, SND_JACK_MICROPHONE,
SND_JACK_MICROPHONE); SND_JACK_MICROPHONE);
dev_dbg(pm860x->codec->dev, "headphone report:0x%x, mask:%x\n", dev_dbg(pm860x->component->dev, "headphone report:0x%x, mask:%x\n",
report, mask); report, mask);
dev_dbg(pm860x->codec->dev, "microphone report:0x%x\n", mic_report); dev_dbg(pm860x->component->dev, "microphone report:0x%x\n", mic_report);
return IRQ_HANDLED; return IRQ_HANDLED;
} }
int pm860x_hs_jack_detect(struct snd_soc_codec *codec, int pm860x_hs_jack_detect(struct snd_soc_component *component,
struct snd_soc_jack *jack, struct snd_soc_jack *jack,
int det, int hook, int hs_shrt, int lo_shrt) int det, int hook, int hs_shrt, int lo_shrt)
{ {
struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec); struct pm860x_priv *pm860x = snd_soc_component_get_drvdata(component);
int data; int data;
pm860x->det.hp_jack = jack; pm860x->det.hp_jack = jack;
...@@ -1290,15 +1290,15 @@ int pm860x_hs_jack_detect(struct snd_soc_codec *codec, ...@@ -1290,15 +1290,15 @@ int pm860x_hs_jack_detect(struct snd_soc_codec *codec,
} }
/* sync status */ /* sync status */
pm860x_codec_handler(0, pm860x); pm860x_component_handler(0, pm860x);
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(pm860x_hs_jack_detect); EXPORT_SYMBOL_GPL(pm860x_hs_jack_detect);
int pm860x_mic_jack_detect(struct snd_soc_codec *codec, int pm860x_mic_jack_detect(struct snd_soc_component *component,
struct snd_soc_jack *jack, int det) struct snd_soc_jack *jack, int det)
{ {
struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec); struct pm860x_priv *pm860x = snd_soc_component_get_drvdata(component);
pm860x->det.mic_jack = jack; pm860x->det.mic_jack = jack;
pm860x->det.mic_det = det; pm860x->det.mic_det = det;
...@@ -1308,25 +1308,25 @@ int pm860x_mic_jack_detect(struct snd_soc_codec *codec, ...@@ -1308,25 +1308,25 @@ int pm860x_mic_jack_detect(struct snd_soc_codec *codec,
MICDET_MASK, MICDET_MASK); MICDET_MASK, MICDET_MASK);
/* sync status */ /* sync status */
pm860x_codec_handler(0, pm860x); pm860x_component_handler(0, pm860x);
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(pm860x_mic_jack_detect); EXPORT_SYMBOL_GPL(pm860x_mic_jack_detect);
static int pm860x_probe(struct snd_soc_codec *codec) static int pm860x_probe(struct snd_soc_component *component)
{ {
struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec); struct pm860x_priv *pm860x = snd_soc_component_get_drvdata(component);
int i, ret; int i, ret;
pm860x->codec = codec; pm860x->component = component;
snd_soc_codec_init_regmap(codec, pm860x->regmap); snd_soc_component_init_regmap(component, pm860x->regmap);
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
ret = request_threaded_irq(pm860x->irq[i], NULL, ret = request_threaded_irq(pm860x->irq[i], NULL,
pm860x_codec_handler, IRQF_ONESHOT, pm860x_component_handler, IRQF_ONESHOT,
pm860x->name[i], pm860x); pm860x->name[i], pm860x);
if (ret < 0) { if (ret < 0) {
dev_err(codec->dev, "Failed to request IRQ!\n"); dev_err(component->dev, "Failed to request IRQ!\n");
goto out; goto out;
} }
} }
...@@ -1339,29 +1339,29 @@ static int pm860x_probe(struct snd_soc_codec *codec) ...@@ -1339,29 +1339,29 @@ static int pm860x_probe(struct snd_soc_codec *codec)
return ret; return ret;
} }
static int pm860x_remove(struct snd_soc_codec *codec) static void pm860x_remove(struct snd_soc_component *component)
{ {
struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec); struct pm860x_priv *pm860x = snd_soc_component_get_drvdata(component);
int i; int i;
for (i = 3; i >= 0; i--) for (i = 3; i >= 0; i--)
free_irq(pm860x->irq[i], pm860x); free_irq(pm860x->irq[i], pm860x);
return 0;
} }
static const struct snd_soc_codec_driver soc_codec_dev_pm860x = { static const struct snd_soc_component_driver soc_component_dev_pm860x = {
.probe = pm860x_probe, .probe = pm860x_probe,
.remove = pm860x_remove, .remove = pm860x_remove,
.set_bias_level = pm860x_set_bias_level, .set_bias_level = pm860x_set_bias_level,
.component_driver = {
.controls = pm860x_snd_controls, .controls = pm860x_snd_controls,
.num_controls = ARRAY_SIZE(pm860x_snd_controls), .num_controls = ARRAY_SIZE(pm860x_snd_controls),
.dapm_widgets = pm860x_dapm_widgets, .dapm_widgets = pm860x_dapm_widgets,
.num_dapm_widgets = ARRAY_SIZE(pm860x_dapm_widgets), .num_dapm_widgets = ARRAY_SIZE(pm860x_dapm_widgets),
.dapm_routes = pm860x_dapm_routes, .dapm_routes = pm860x_dapm_routes,
.num_dapm_routes = ARRAY_SIZE(pm860x_dapm_routes), .num_dapm_routes = ARRAY_SIZE(pm860x_dapm_routes),
}, .idle_bias_on = 1,
.use_pmdown_time = 1,
.endianness = 1,
.non_legacy_dai_naming = 1,
}; };
static int pm860x_codec_probe(struct platform_device *pdev) static int pm860x_codec_probe(struct platform_device *pdev)
...@@ -1393,10 +1393,11 @@ static int pm860x_codec_probe(struct platform_device *pdev) ...@@ -1393,10 +1393,11 @@ static int pm860x_codec_probe(struct platform_device *pdev)
strncpy(pm860x->name[i], res->name, MAX_NAME_LEN); strncpy(pm860x->name[i], res->name, MAX_NAME_LEN);
} }
ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_pm860x, ret = devm_snd_soc_register_component(&pdev->dev,
&soc_component_dev_pm860x,
pm860x_dai, ARRAY_SIZE(pm860x_dai)); pm860x_dai, ARRAY_SIZE(pm860x_dai));
if (ret) { if (ret) {
dev_err(&pdev->dev, "Failed to register codec\n"); dev_err(&pdev->dev, "Failed to register component\n");
return -EINVAL; return -EINVAL;
} }
return ret; return ret;
...@@ -1404,7 +1405,6 @@ static int pm860x_codec_probe(struct platform_device *pdev) ...@@ -1404,7 +1405,6 @@ static int pm860x_codec_probe(struct platform_device *pdev)
static int pm860x_codec_remove(struct platform_device *pdev) static int pm860x_codec_remove(struct platform_device *pdev)
{ {
snd_soc_unregister_codec(&pdev->dev);
return 0; return 0;
} }
......
...@@ -88,9 +88,9 @@ ...@@ -88,9 +88,9 @@
#define PM860X_SHORT_LINEOUT (1 << 4) #define PM860X_SHORT_LINEOUT (1 << 4)
#define PM860X_DET_MASK 0x1F #define PM860X_DET_MASK 0x1F
extern int pm860x_hs_jack_detect(struct snd_soc_codec *, struct snd_soc_jack *, extern int pm860x_hs_jack_detect(struct snd_soc_component *, struct snd_soc_jack *,
int, int, int, int); int, int, int, int);
extern int pm860x_mic_jack_detect(struct snd_soc_codec *, struct snd_soc_jack *, extern int pm860x_mic_jack_detect(struct snd_soc_component *, struct snd_soc_jack *,
int); int);
#endif /* __88PM860X_H */ #endif /* __88PM860X_H */
...@@ -75,7 +75,7 @@ static const struct snd_soc_dapm_route ttc_audio_map[] = { ...@@ -75,7 +75,7 @@ static const struct snd_soc_dapm_route ttc_audio_map[] = {
static int ttc_pm860x_init(struct snd_soc_pcm_runtime *rtd) static int ttc_pm860x_init(struct snd_soc_pcm_runtime *rtd)
{ {
struct snd_soc_codec *codec = rtd->codec; struct snd_soc_component *component = rtd->codec_dai->component;
/* Headset jack detection */ /* Headset jack detection */
snd_soc_card_jack_new(rtd->card, "Headphone Jack", SND_JACK_HEADPHONE | snd_soc_card_jack_new(rtd->card, "Headphone Jack", SND_JACK_HEADPHONE |
...@@ -86,9 +86,9 @@ static int ttc_pm860x_init(struct snd_soc_pcm_runtime *rtd) ...@@ -86,9 +86,9 @@ static int ttc_pm860x_init(struct snd_soc_pcm_runtime *rtd)
ARRAY_SIZE(mic_jack_pins)); ARRAY_SIZE(mic_jack_pins));
/* headphone, microphone detection & headset short detection */ /* headphone, microphone detection & headset short detection */
pm860x_hs_jack_detect(codec, &hs_jack, SND_JACK_HEADPHONE, pm860x_hs_jack_detect(component, &hs_jack, SND_JACK_HEADPHONE,
SND_JACK_BTN_0, SND_JACK_BTN_1, SND_JACK_BTN_2); SND_JACK_BTN_0, SND_JACK_BTN_1, SND_JACK_BTN_2);
pm860x_mic_jack_detect(codec, &hs_jack, SND_JACK_MICROPHONE); pm860x_mic_jack_detect(component, &hs_jack, SND_JACK_MICROPHONE);
return 0; return 0;
} }
......
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