diff options
| author | Bard Liao <bardliao@realtek.com> | 2014-07-07 04:48:38 -0400 |
|---|---|---|
| committer | Mark Brown <broonie@linaro.org> | 2014-07-07 06:26:40 -0400 |
| commit | 61a414c412886bdb98c8842c00b2f0a3d4436b12 (patch) | |
| tree | 51f92b5af7563711735b88c5bcfc4aa4338e3088 | |
| parent | 4b21768a95d68fe26a6a9f08ca93a7c59c13fcac (diff) | |
ASoC: RT286: move initial settings to _i2c_probe
Move codec initial settings from asoc probe to i2c probe.
Signed-off-by: Bard Liao <bardliao@realtek.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
| -rw-r--r-- | sound/soc/codecs/rt286.c | 99 |
1 files changed, 49 insertions, 50 deletions
diff --git a/sound/soc/codecs/rt286.c b/sound/soc/codecs/rt286.c index 53eb7f37bb73..e6f33ab78954 100644 --- a/sound/soc/codecs/rt286.c +++ b/sound/soc/codecs/rt286.c | |||
| @@ -950,59 +950,10 @@ static irqreturn_t rt286_irq(int irq, void *data) | |||
| 950 | static int rt286_probe(struct snd_soc_codec *codec) | 950 | static int rt286_probe(struct snd_soc_codec *codec) |
| 951 | { | 951 | { |
| 952 | struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec); | 952 | struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec); |
| 953 | int i, ret; | ||
| 954 | |||
| 955 | snd_soc_write(codec, RT286_SET_AUDIO_POWER, AC_PWRST_D3); | ||
| 956 | |||
| 957 | for (i = 0; i < RT286_POWER_REG_LEN; i++) | ||
| 958 | snd_soc_write(codec, | ||
| 959 | RT286_SET_POWER(rt286_support_power_controls[i]), | ||
| 960 | AC_PWRST_D1); | ||
| 961 | |||
| 962 | if (!rt286->pdata.cbj_en) { | ||
| 963 | snd_soc_write(codec, RT286_CBJ_CTRL2, 0x0000); | ||
| 964 | snd_soc_write(codec, RT286_MIC1_DET_CTRL, 0x0816); | ||
| 965 | snd_soc_write(codec, RT286_MISC_CTRL1, 0x0000); | ||
| 966 | snd_soc_update_bits(codec, | ||
| 967 | RT286_CBJ_CTRL1, 0xf000, 0xb000); | ||
| 968 | } else { | ||
| 969 | snd_soc_update_bits(codec, | ||
| 970 | RT286_CBJ_CTRL1, 0xf000, 0x5000); | ||
| 971 | } | ||
| 972 | |||
| 973 | mdelay(10); | ||
| 974 | |||
| 975 | if (!rt286->pdata.gpio2_en) | ||
| 976 | snd_soc_write(codec, RT286_SET_DMIC2_DEFAULT, 0x4000); | ||
| 977 | else | ||
| 978 | snd_soc_write(codec, RT286_SET_DMIC2_DEFAULT, 0); | ||
| 979 | |||
| 980 | mdelay(10); | ||
| 981 | |||
| 982 | /*Power down LDO2*/ | ||
| 983 | snd_soc_update_bits(codec, RT286_POWER_CTRL2, 0x8, 0x0); | ||
| 984 | 953 | ||
| 985 | codec->dapm.bias_level = SND_SOC_BIAS_OFF; | 954 | codec->dapm.bias_level = SND_SOC_BIAS_OFF; |
| 986 | rt286->codec = codec; | 955 | rt286->codec = codec; |
| 987 | 956 | ||
| 988 | if (rt286->i2c->irq) { | ||
| 989 | snd_soc_update_bits(codec, | ||
| 990 | RT286_IRQ_CTRL, 0x2, 0x2); | ||
| 991 | |||
| 992 | INIT_DELAYED_WORK(&rt286->jack_detect_work, | ||
| 993 | rt286_jack_detect_work); | ||
| 994 | schedule_delayed_work(&rt286->jack_detect_work, | ||
| 995 | msecs_to_jiffies(1250)); | ||
| 996 | |||
| 997 | ret = request_threaded_irq(rt286->i2c->irq, NULL, rt286_irq, | ||
| 998 | IRQF_TRIGGER_HIGH | IRQF_ONESHOT, "rt286", rt286); | ||
| 999 | if (ret != 0) { | ||
| 1000 | dev_err(codec->dev, | ||
| 1001 | "Failed to reguest IRQ: %d\n", ret); | ||
| 1002 | return ret; | ||
| 1003 | } | ||
| 1004 | } | ||
| 1005 | |||
| 1006 | return 0; | 957 | return 0; |
| 1007 | } | 958 | } |
| 1008 | 959 | ||
| @@ -1141,7 +1092,7 @@ static int rt286_i2c_probe(struct i2c_client *i2c, | |||
| 1141 | { | 1092 | { |
| 1142 | struct rt286_platform_data *pdata = dev_get_platdata(&i2c->dev); | 1093 | struct rt286_platform_data *pdata = dev_get_platdata(&i2c->dev); |
| 1143 | struct rt286_priv *rt286; | 1094 | struct rt286_priv *rt286; |
| 1144 | int ret; | 1095 | int i, ret; |
| 1145 | 1096 | ||
| 1146 | rt286 = devm_kzalloc(&i2c->dev, sizeof(*rt286), | 1097 | rt286 = devm_kzalloc(&i2c->dev, sizeof(*rt286), |
| 1147 | GFP_KERNEL); | 1098 | GFP_KERNEL); |
| @@ -1171,6 +1122,54 @@ static int rt286_i2c_probe(struct i2c_client *i2c, | |||
| 1171 | if (pdata) | 1122 | if (pdata) |
| 1172 | rt286->pdata = *pdata; | 1123 | rt286->pdata = *pdata; |
| 1173 | 1124 | ||
| 1125 | regmap_write(rt286->regmap, RT286_SET_AUDIO_POWER, AC_PWRST_D3); | ||
| 1126 | |||
| 1127 | for (i = 0; i < RT286_POWER_REG_LEN; i++) | ||
| 1128 | regmap_write(rt286->regmap, | ||
| 1129 | RT286_SET_POWER(rt286_support_power_controls[i]), | ||
| 1130 | AC_PWRST_D1); | ||
| 1131 | |||
| 1132 | if (!rt286->pdata.cbj_en) { | ||
| 1133 | regmap_write(rt286->regmap, RT286_CBJ_CTRL2, 0x0000); | ||
| 1134 | regmap_write(rt286->regmap, RT286_MIC1_DET_CTRL, 0x0816); | ||
| 1135 | regmap_write(rt286->regmap, RT286_MISC_CTRL1, 0x0000); | ||
| 1136 | regmap_update_bits(rt286->regmap, | ||
| 1137 | RT286_CBJ_CTRL1, 0xf000, 0xb000); | ||
| 1138 | } else { | ||
| 1139 | regmap_update_bits(rt286->regmap, | ||
| 1140 | RT286_CBJ_CTRL1, 0xf000, 0x5000); | ||
| 1141 | } | ||
| 1142 | |||
| 1143 | mdelay(10); | ||
| 1144 | |||
| 1145 | if (!rt286->pdata.gpio2_en) | ||
| 1146 | regmap_write(rt286->regmap, RT286_SET_DMIC2_DEFAULT, 0x4000); | ||
| 1147 | else | ||
| 1148 | regmap_write(rt286->regmap, RT286_SET_DMIC2_DEFAULT, 0); | ||
| 1149 | |||
| 1150 | mdelay(10); | ||
| 1151 | |||
| 1152 | /*Power down LDO2*/ | ||
| 1153 | regmap_update_bits(rt286->regmap, RT286_POWER_CTRL2, 0x8, 0x0); | ||
| 1154 | |||
| 1155 | if (rt286->i2c->irq) { | ||
| 1156 | regmap_update_bits(rt286->regmap, | ||
| 1157 | RT286_IRQ_CTRL, 0x2, 0x2); | ||
| 1158 | |||
| 1159 | INIT_DELAYED_WORK(&rt286->jack_detect_work, | ||
| 1160 | rt286_jack_detect_work); | ||
| 1161 | schedule_delayed_work(&rt286->jack_detect_work, | ||
| 1162 | msecs_to_jiffies(1250)); | ||
| 1163 | |||
| 1164 | ret = request_threaded_irq(rt286->i2c->irq, NULL, rt286_irq, | ||
| 1165 | IRQF_TRIGGER_HIGH | IRQF_ONESHOT, "rt286", rt286); | ||
| 1166 | if (ret != 0) { | ||
| 1167 | dev_err(&i2c->dev, | ||
| 1168 | "Failed to reguest IRQ: %d\n", ret); | ||
| 1169 | return ret; | ||
| 1170 | } | ||
| 1171 | } | ||
| 1172 | |||
| 1174 | ret = snd_soc_register_codec(&i2c->dev, &soc_codec_dev_rt286, | 1173 | ret = snd_soc_register_codec(&i2c->dev, &soc_codec_dev_rt286, |
| 1175 | rt286_dai, ARRAY_SIZE(rt286_dai)); | 1174 | rt286_dai, ARRAY_SIZE(rt286_dai)); |
| 1176 | 1175 | ||
