Skip to content

Commit b3cb7f2

Browse files
Jack Yubroonie
authored andcommitted
ASoC: rt721-sdca: change interrupt mask from XU to GE
Change interrupt mask from XU to GE to fix jack detection interrupt issue. Signed-off-by: Jack Yu <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent ed4bcfb commit b3cb7f2

File tree

3 files changed

+9
-11
lines changed

3 files changed

+9
-11
lines changed

sound/soc/codecs/rt721-sdca-sdw.c

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ static int rt721_sdca_update_status(struct sdw_slave *slave,
203203
* This also could sync with the cache value as the rt721_sdca_jack_init set.
204204
*/
205205
sdw_write_no_pm(rt721->slave, SDW_SCP_SDCA_INTMASK1,
206-
SDW_SCP_SDCA_INTMASK_SDCA_6);
206+
SDW_SCP_SDCA_INTMASK_SDCA_0);
207207
sdw_write_no_pm(rt721->slave, SDW_SCP_SDCA_INTMASK2,
208208
SDW_SCP_SDCA_INTMASK_SDCA_8);
209209
}
@@ -280,7 +280,7 @@ static int rt721_sdca_read_prop(struct sdw_slave *slave)
280280
}
281281

282282
/* set the timeout values */
283-
prop->clk_stop_timeout = 900;
283+
prop->clk_stop_timeout = 1380;
284284

285285
/* wake-up event */
286286
prop->wake_capable = 1;
@@ -337,11 +337,6 @@ static int rt721_sdca_interrupt_callback(struct sdw_slave *slave,
337337
SDW_SCP_SDCA_INT_SDCA_0, SDW_SCP_SDCA_INT_SDCA_0);
338338
if (ret < 0)
339339
goto io_error;
340-
} else if (ret & SDW_SCP_SDCA_INTMASK_SDCA_6) {
341-
ret = sdw_update_no_pm(rt721->slave, SDW_SCP_SDCA_INT1,
342-
SDW_SCP_SDCA_INT_SDCA_6, SDW_SCP_SDCA_INT_SDCA_6);
343-
if (ret < 0)
344-
goto io_error;
345340
}
346341
ret = sdw_read_no_pm(rt721->slave, SDW_SCP_SDCA_INT2);
347342
if (ret < 0)
@@ -475,7 +470,7 @@ static int __maybe_unused rt721_sdca_dev_system_suspend(struct device *dev)
475470
mutex_lock(&rt721_sdca->disable_irq_lock);
476471
rt721_sdca->disable_irq = true;
477472
ret1 = sdw_update_no_pm(slave, SDW_SCP_SDCA_INTMASK1,
478-
SDW_SCP_SDCA_INTMASK_SDCA_0 | SDW_SCP_SDCA_INTMASK_SDCA_6, 0);
473+
SDW_SCP_SDCA_INTMASK_SDCA_0, 0);
479474
ret2 = sdw_update_no_pm(slave, SDW_SCP_SDCA_INTMASK2,
480475
SDW_SCP_SDCA_INTMASK_SDCA_8, 0);
481476
mutex_unlock(&rt721_sdca->disable_irq_lock);
@@ -502,7 +497,7 @@ static int __maybe_unused rt721_sdca_dev_resume(struct device *dev)
502497
if (!slave->unattach_request) {
503498
mutex_lock(&rt721->disable_irq_lock);
504499
if (rt721->disable_irq == true) {
505-
sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK1, SDW_SCP_SDCA_INTMASK_SDCA_6);
500+
sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK1, SDW_SCP_SDCA_INTMASK_SDCA_0);
506501
sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK2, SDW_SCP_SDCA_INTMASK_SDCA_8);
507502
rt721->disable_irq = false;
508503
}

sound/soc/codecs/rt721-sdca.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ static void rt721_sdca_jack_detect_handler(struct work_struct *work)
3939
return;
4040

4141
/* SDW_SCP_SDCA_INT_SDCA_6 is used for jack detection */
42-
if (rt721->scp_sdca_stat1 & SDW_SCP_SDCA_INT_SDCA_6) {
42+
if (rt721->scp_sdca_stat1 & SDW_SCP_SDCA_INT_SDCA_0) {
4343
rt721->jack_type = rt_sdca_headset_detect(rt721->regmap,
4444
RT721_SDCA_ENT_GE49);
4545
if (rt721->jack_type < 0)
@@ -286,7 +286,7 @@ static void rt721_sdca_jack_init(struct rt721_sdca_priv *rt721)
286286
mutex_lock(&rt721->calibrate_mutex);
287287
if (rt721->hs_jack) {
288288
sdw_write_no_pm(rt721->slave, SDW_SCP_SDCA_INTMASK1,
289-
SDW_SCP_SDCA_INTMASK_SDCA_0 | SDW_SCP_SDCA_INTMASK_SDCA_6);
289+
SDW_SCP_SDCA_INTMASK_SDCA_0);
290290
sdw_write_no_pm(rt721->slave, SDW_SCP_SDCA_INTMASK2,
291291
SDW_SCP_SDCA_INTMASK_SDCA_8);
292292
dev_dbg(&rt721->slave->dev, "in %s enable\n", __func__);
@@ -298,6 +298,8 @@ static void rt721_sdca_jack_init(struct rt721_sdca_priv *rt721)
298298
regmap_write(rt721->regmap,
299299
SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_XU0D,
300300
RT721_SDCA_CTL_SELECTED_MODE, 0), 0);
301+
rt_sdca_index_write(rt721->mbq_regmap, RT721_HDA_SDCA_FLOAT,
302+
RT721_XU_REL_CTRL, 0x0000);
301303
rt_sdca_index_update_bits(rt721->mbq_regmap, RT721_HDA_SDCA_FLOAT,
302304
RT721_GE_REL_CTRL1, 0x4000, 0x4000);
303305
}

sound/soc/codecs/rt721-sdca.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ struct rt721_sdca_dmic_kctrl_priv {
133133
#define RT721_HDA_LEGACY_UAJ_CTL 0x02
134134
#define RT721_HDA_LEGACY_CTL1 0x05
135135
#define RT721_HDA_LEGACY_RESET_CTL 0x06
136+
#define RT721_XU_REL_CTRL 0x0c
136137
#define RT721_GE_REL_CTRL1 0x0d
137138
#define RT721_HDA_LEGACY_GPIO_WAKE_EN_CTL 0x0e
138139
#define RT721_GE_SDCA_RST_CTRL 0x10

0 commit comments

Comments
 (0)