regmap_write(rt5663->regmap, RT5663_STO1_HPF_ADJ1, 0x3320);
regmap_write(rt5663->regmap, RT5663_HP_CALIB_2, 0x00c9);
regmap_write(rt5663->regmap, RT5663_DUMMY_1, 0x004c);
----- regmap_write(rt5663->regmap, RT5663_ANA_BIAS_CUR_1, 0x7766);
----- regmap_write(rt5663->regmap, RT5663_BIAS_CUR_8, 0x4702);
----- msleep(200);
+++++ regmap_write(rt5663->regmap, RT5663_ANA_BIAS_CUR_1, 0x1111);
+++++ regmap_write(rt5663->regmap, RT5663_BIAS_CUR_8, 0x4402);
+++++ regmap_write(rt5663->regmap, RT5663_CHARGE_PUMP_2, 0x3311);
regmap_write(rt5663->regmap, RT5663_HP_CALIB_1, 0x0069);
----- regmap_write(rt5663->regmap, RT5663_HP_CALIB_3, 0x06c2);
----- regmap_write(rt5663->regmap, RT5663_HP_CALIB_1_1, 0x7b00);
----- regmap_write(rt5663->regmap, RT5663_HP_CALIB_1_1, 0xfb00);
+++++ regmap_write(rt5663->regmap, RT5663_HP_CALIB_3, 0x06ce);
+++++ regmap_write(rt5663->regmap, RT5663_HP_CALIB_1_1, 0x6800);
+++++ regmap_write(rt5663->regmap, RT5663_CHARGE_PUMP_2, 0x1100);
+++++ regmap_write(rt5663->regmap, RT5663_HP_CALIB_7, 0x0057);
+++++ regmap_write(rt5663->regmap, RT5663_HP_CALIB_1_1, 0xe800);
+++++
+ count = 0;
+ while (true) {
+ regmap_read(rt5663->regmap, RT5663_HP_CALIB_1_1, &value);
+ if (value & 0x8000)
+ usleep_range(10000, 10005);
+ else
+ break;
+
+ if (count > 200)
+ return;
+ count++;
+ }
+++++
+++++ regmap_write(rt5663->regmap, RT5663_HP_CALIB_1_1, 0x6200);
+++++ regmap_write(rt5663->regmap, RT5663_HP_CALIB_7, 0x0059);
+++++ regmap_write(rt5663->regmap, RT5663_HP_CALIB_1_1, 0xe200);
+++++
++++ count = 0;
++++ while (true) {
++++ regmap_read(rt5663->regmap, RT5663_HP_CALIB_1_1, &value);
++++ if (value & 0x8000)
++++ usleep_range(10000, 10005);
++++ else
++++ break;
++++
++++ if (count > 200)
++++ return;
++++ count++;
++++ }
+++++
+++++ regmap_write(rt5663->regmap, RT5663_EM_JACK_TYPE_1, 0xb8e0);
+++++ usleep_range(10000, 10005);
+++++ regmap_write(rt5663->regmap, RT5663_PWR_ANLG_1, 0x003b);
+++++ usleep_range(10000, 10005);
+++++ regmap_write(rt5663->regmap, RT5663_PWR_DIG_1, 0x0000);
+++++ usleep_range(10000, 10005);
+++++ regmap_write(rt5663->regmap, RT5663_DEPOP_1, 0x000b);
+++++ usleep_range(10000, 10005);
+++++ regmap_write(rt5663->regmap, RT5663_DEPOP_1, 0x0008);
+++++ usleep_range(10000, 10005);
+++++ regmap_write(rt5663->regmap, RT5663_PWR_ANLG_2, 0x0000);
+++++ usleep_range(10000, 10005);
+++++ }
+++++
+++++ static int rt5663_parse_dp(struct rt5663_priv *rt5663, struct device *dev)
+++++ {
+++++ device_property_read_u32(dev, "realtek,dc_offset_l_manual",
+++++ &rt5663->pdata.dc_offset_l_manual);
+++++ device_property_read_u32(dev, "realtek,dc_offset_r_manual",
+++++ &rt5663->pdata.dc_offset_r_manual);
+++++ device_property_read_u32(dev, "realtek,dc_offset_l_manual_mic",
+++++ &rt5663->pdata.dc_offset_l_manual_mic);
+++++ device_property_read_u32(dev, "realtek,dc_offset_r_manual_mic",
+++++ &rt5663->pdata.dc_offset_r_manual_mic);
+++++
+++++ return 0;
}
static int rt5663_i2c_probe(struct i2c_client *i2c,