rt5645.c (786aa09b27be7916c1281d7a29a394bd1ae7a4dc) rt5645.c (ac4fc3eeb79e06499779db99937522526e863ab6)
1/*
2 * rt5645.c -- RT5645 ALSA SoC audio codec driver
3 *
4 * Copyright 2013 Realtek Semiconductor Corp.
5 * Author: Bard Liao <bardliao@realtek.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as

--- 2954 unchanged lines hidden (view full) ---

2963 break;
2964 }
2965
2966 rt5645_set_bias_level(codec, SND_SOC_BIAS_OFF);
2967
2968 snd_soc_update_bits(codec, RT5645_CHARGE_PUMP, 0x0300, 0x0200);
2969
2970 /* for JD function */
1/*
2 * rt5645.c -- RT5645 ALSA SoC audio codec driver
3 *
4 * Copyright 2013 Realtek Semiconductor Corp.
5 * Author: Bard Liao <bardliao@realtek.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as

--- 2954 unchanged lines hidden (view full) ---

2963 break;
2964 }
2965
2966 rt5645_set_bias_level(codec, SND_SOC_BIAS_OFF);
2967
2968 snd_soc_update_bits(codec, RT5645_CHARGE_PUMP, 0x0300, 0x0200);
2969
2970 /* for JD function */
2971 if (rt5645->pdata.en_jd_func) {
2971 if (rt5645->pdata.jd_mode) {
2972 snd_soc_dapm_force_enable_pin(&codec->dapm, "JD Power");
2973 snd_soc_dapm_force_enable_pin(&codec->dapm, "LDO2");
2974 snd_soc_dapm_sync(&codec->dapm);
2975 }
2976
2977 return 0;
2978}
2979

--- 126 unchanged lines hidden (view full) ---

3106 {},
3107};
3108MODULE_DEVICE_TABLE(acpi, rt5645_acpi_match);
3109#endif
3110
3111static struct rt5645_platform_data *rt5645_pdata;
3112
3113static struct rt5645_platform_data strago_platform_data = {
2972 snd_soc_dapm_force_enable_pin(&codec->dapm, "JD Power");
2973 snd_soc_dapm_force_enable_pin(&codec->dapm, "LDO2");
2974 snd_soc_dapm_sync(&codec->dapm);
2975 }
2976
2977 return 0;
2978}
2979

--- 126 unchanged lines hidden (view full) ---

3106 {},
3107};
3108MODULE_DEVICE_TABLE(acpi, rt5645_acpi_match);
3109#endif
3110
3111static struct rt5645_platform_data *rt5645_pdata;
3112
3113static struct rt5645_platform_data strago_platform_data = {
3114 .dmic_en = true,
3115 .dmic1_data_pin = -1,
3114 .dmic1_data_pin = RT5645_DMIC1_DISABLE,
3116 .dmic2_data_pin = RT5645_DMIC_DATA_IN2P,
3115 .dmic2_data_pin = RT5645_DMIC_DATA_IN2P,
3117 .en_jd_func = true,
3118 .jd_mode = 3,
3119};
3120
3121static int strago_quirk_cb(const struct dmi_system_id *id)
3122{
3123 rt5645_pdata = &strago_platform_data;
3124
3125 return 1;

--- 83 unchanged lines hidden (view full) ---

3209 dev_warn(&i2c->dev, "Apply rt5650 patch failed: %d\n",
3210 ret);
3211 }
3212
3213 if (rt5645->pdata.in2_diff)
3214 regmap_update_bits(rt5645->regmap, RT5645_IN2_CTRL,
3215 RT5645_IN_DF2, RT5645_IN_DF2);
3216
3116 .jd_mode = 3,
3117};
3118
3119static int strago_quirk_cb(const struct dmi_system_id *id)
3120{
3121 rt5645_pdata = &strago_platform_data;
3122
3123 return 1;

--- 83 unchanged lines hidden (view full) ---

3207 dev_warn(&i2c->dev, "Apply rt5650 patch failed: %d\n",
3208 ret);
3209 }
3210
3211 if (rt5645->pdata.in2_diff)
3212 regmap_update_bits(rt5645->regmap, RT5645_IN2_CTRL,
3213 RT5645_IN_DF2, RT5645_IN_DF2);
3214
3217 if (rt5645->pdata.dmic_en) {
3215 if (rt5645->pdata.dmic1_data_pin || rt5645->pdata.dmic2_data_pin) {
3218 regmap_update_bits(rt5645->regmap, RT5645_GPIO_CTRL1,
3219 RT5645_GP2_PIN_MASK, RT5645_GP2_PIN_DMIC1_SCL);
3216 regmap_update_bits(rt5645->regmap, RT5645_GPIO_CTRL1,
3217 RT5645_GP2_PIN_MASK, RT5645_GP2_PIN_DMIC1_SCL);
3218 }
3219 switch (rt5645->pdata.dmic1_data_pin) {
3220 case RT5645_DMIC_DATA_IN2N:
3221 regmap_update_bits(rt5645->regmap, RT5645_DMIC_CTRL1,
3222 RT5645_DMIC_1_DP_MASK, RT5645_DMIC_1_DP_IN2N);
3223 break;
3220
3224
3221 switch (rt5645->pdata.dmic1_data_pin) {
3222 case RT5645_DMIC_DATA_IN2N:
3223 regmap_update_bits(rt5645->regmap, RT5645_DMIC_CTRL1,
3224 RT5645_DMIC_1_DP_MASK, RT5645_DMIC_1_DP_IN2N);
3225 break;
3225 case RT5645_DMIC_DATA_GPIO5:
3226 regmap_update_bits(rt5645->regmap, RT5645_DMIC_CTRL1,
3227 RT5645_DMIC_1_DP_MASK, RT5645_DMIC_1_DP_GPIO5);
3228 regmap_update_bits(rt5645->regmap, RT5645_GPIO_CTRL1,
3229 RT5645_GP5_PIN_MASK, RT5645_GP5_PIN_DMIC1_SDA);
3230 break;
3226
3231
3227 case RT5645_DMIC_DATA_GPIO5:
3228 regmap_update_bits(rt5645->regmap, RT5645_DMIC_CTRL1,
3229 RT5645_DMIC_1_DP_MASK, RT5645_DMIC_1_DP_GPIO5);
3230 regmap_update_bits(rt5645->regmap, RT5645_GPIO_CTRL1,
3231 RT5645_GP5_PIN_MASK, RT5645_GP5_PIN_DMIC1_SDA);
3232 break;
3232 case RT5645_DMIC_DATA_GPIO11:
3233 regmap_update_bits(rt5645->regmap, RT5645_DMIC_CTRL1,
3234 RT5645_DMIC_1_DP_MASK, RT5645_DMIC_1_DP_GPIO11);
3235 regmap_update_bits(rt5645->regmap, RT5645_GPIO_CTRL1,
3236 RT5645_GP11_PIN_MASK,
3237 RT5645_GP11_PIN_DMIC1_SDA);
3238 break;
3233
3239
3234 case RT5645_DMIC_DATA_GPIO11:
3235 regmap_update_bits(rt5645->regmap, RT5645_DMIC_CTRL1,
3236 RT5645_DMIC_1_DP_MASK, RT5645_DMIC_1_DP_GPIO11);
3237 regmap_update_bits(rt5645->regmap, RT5645_GPIO_CTRL1,
3238 RT5645_GP11_PIN_MASK,
3239 RT5645_GP11_PIN_DMIC1_SDA);
3240 break;
3240 default:
3241 break;
3242 }
3241
3243
3242 default:
3243 break;
3244 }
3244 switch (rt5645->pdata.dmic2_data_pin) {
3245 case RT5645_DMIC_DATA_IN2P:
3246 regmap_update_bits(rt5645->regmap, RT5645_DMIC_CTRL1,
3247 RT5645_DMIC_2_DP_MASK, RT5645_DMIC_2_DP_IN2P);
3248 break;
3245
3249
3246 switch (rt5645->pdata.dmic2_data_pin) {
3247 case RT5645_DMIC_DATA_IN2P:
3248 regmap_update_bits(rt5645->regmap, RT5645_DMIC_CTRL1,
3249 RT5645_DMIC_2_DP_MASK, RT5645_DMIC_2_DP_IN2P);
3250 break;
3250 case RT5645_DMIC_DATA_GPIO6:
3251 regmap_update_bits(rt5645->regmap, RT5645_DMIC_CTRL1,
3252 RT5645_DMIC_2_DP_MASK, RT5645_DMIC_2_DP_GPIO6);
3253 regmap_update_bits(rt5645->regmap, RT5645_GPIO_CTRL1,
3254 RT5645_GP6_PIN_MASK, RT5645_GP6_PIN_DMIC2_SDA);
3255 break;
3251
3256
3252 case RT5645_DMIC_DATA_GPIO6:
3253 regmap_update_bits(rt5645->regmap, RT5645_DMIC_CTRL1,
3254 RT5645_DMIC_2_DP_MASK, RT5645_DMIC_2_DP_GPIO6);
3255 regmap_update_bits(rt5645->regmap, RT5645_GPIO_CTRL1,
3256 RT5645_GP6_PIN_MASK, RT5645_GP6_PIN_DMIC2_SDA);
3257 break;
3257 case RT5645_DMIC_DATA_GPIO10:
3258 regmap_update_bits(rt5645->regmap, RT5645_DMIC_CTRL1,
3259 RT5645_DMIC_2_DP_MASK, RT5645_DMIC_2_DP_GPIO10);
3260 regmap_update_bits(rt5645->regmap, RT5645_GPIO_CTRL1,
3261 RT5645_GP10_PIN_MASK,
3262 RT5645_GP10_PIN_DMIC2_SDA);
3263 break;
3258
3264
3259 case RT5645_DMIC_DATA_GPIO10:
3260 regmap_update_bits(rt5645->regmap, RT5645_DMIC_CTRL1,
3261 RT5645_DMIC_2_DP_MASK, RT5645_DMIC_2_DP_GPIO10);
3262 regmap_update_bits(rt5645->regmap, RT5645_GPIO_CTRL1,
3263 RT5645_GP10_PIN_MASK,
3264 RT5645_GP10_PIN_DMIC2_SDA);
3265 break;
3265 case RT5645_DMIC_DATA_GPIO12:
3266 regmap_update_bits(rt5645->regmap, RT5645_DMIC_CTRL1,
3267 RT5645_DMIC_2_DP_MASK, RT5645_DMIC_2_DP_GPIO12);
3268 regmap_update_bits(rt5645->regmap, RT5645_GPIO_CTRL1,
3269 RT5645_GP12_PIN_MASK,
3270 RT5645_GP12_PIN_DMIC2_SDA);
3271 break;
3266
3272
3267 case RT5645_DMIC_DATA_GPIO12:
3268 regmap_update_bits(rt5645->regmap, RT5645_DMIC_CTRL1,
3269 RT5645_DMIC_2_DP_MASK, RT5645_DMIC_2_DP_GPIO12);
3270 regmap_update_bits(rt5645->regmap, RT5645_GPIO_CTRL1,
3271 RT5645_GP12_PIN_MASK,
3272 RT5645_GP12_PIN_DMIC2_SDA);
3273 break;
3274
3275 default:
3276 break;
3277 }
3278
3273 default:
3274 break;
3279 }
3280
3275 }
3276
3281 if (rt5645->pdata.en_jd_func) {
3277 if (rt5645->pdata.jd_mode) {
3282 regmap_update_bits(rt5645->regmap, RT5645_GEN_CTRL3,
3278 regmap_update_bits(rt5645->regmap, RT5645_GEN_CTRL3,
3283 RT5645_IRQ_CLK_GATE_CTRL, RT5645_IRQ_CLK_GATE_CTRL);
3279 RT5645_IRQ_CLK_GATE_CTRL,
3280 RT5645_IRQ_CLK_GATE_CTRL);
3284 regmap_update_bits(rt5645->regmap, RT5645_IN1_CTRL1,
3281 regmap_update_bits(rt5645->regmap, RT5645_IN1_CTRL1,
3285 RT5645_CBJ_BST1_EN, RT5645_CBJ_BST1_EN);
3282 RT5645_CBJ_BST1_EN, RT5645_CBJ_BST1_EN);
3286 regmap_update_bits(rt5645->regmap, RT5645_JD_CTRL3,
3283 regmap_update_bits(rt5645->regmap, RT5645_JD_CTRL3,
3287 RT5645_JD_CBJ_EN | RT5645_JD_CBJ_POL,
3288 RT5645_JD_CBJ_EN | RT5645_JD_CBJ_POL);
3284 RT5645_JD_CBJ_EN | RT5645_JD_CBJ_POL,
3285 RT5645_JD_CBJ_EN | RT5645_JD_CBJ_POL);
3289 regmap_update_bits(rt5645->regmap, RT5645_MICBIAS,
3286 regmap_update_bits(rt5645->regmap, RT5645_MICBIAS,
3290 RT5645_IRQ_CLK_INT, RT5645_IRQ_CLK_INT);
3291 }
3292
3293 if (rt5645->pdata.jd_mode) {
3287 RT5645_IRQ_CLK_INT, RT5645_IRQ_CLK_INT);
3294 regmap_update_bits(rt5645->regmap, RT5645_IRQ_CTRL2,
3295 RT5645_IRQ_JD_1_1_EN, RT5645_IRQ_JD_1_1_EN);
3296 regmap_update_bits(rt5645->regmap, RT5645_GEN_CTRL3,
3297 RT5645_JD_PSV_MODE, RT5645_JD_PSV_MODE);
3298 regmap_update_bits(rt5645->regmap, RT5645_HPO_MIXER,
3299 RT5645_IRQ_PSV_MODE, RT5645_IRQ_PSV_MODE);
3300 regmap_update_bits(rt5645->regmap, RT5645_MICBIAS,
3301 RT5645_MIC2_OVCD_EN, RT5645_MIC2_OVCD_EN);

--- 79 unchanged lines hidden ---
3288 regmap_update_bits(rt5645->regmap, RT5645_IRQ_CTRL2,
3289 RT5645_IRQ_JD_1_1_EN, RT5645_IRQ_JD_1_1_EN);
3290 regmap_update_bits(rt5645->regmap, RT5645_GEN_CTRL3,
3291 RT5645_JD_PSV_MODE, RT5645_JD_PSV_MODE);
3292 regmap_update_bits(rt5645->regmap, RT5645_HPO_MIXER,
3293 RT5645_IRQ_PSV_MODE, RT5645_IRQ_PSV_MODE);
3294 regmap_update_bits(rt5645->regmap, RT5645_MICBIAS,
3295 RT5645_MIC2_OVCD_EN, RT5645_MIC2_OVCD_EN);

--- 79 unchanged lines hidden ---