Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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 <jack.yu@realtek.com>
Link: https://patch.msgid.link/cbc81e324673467a96b70e4e219766b5@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Jack Yu and committed by
Mark Brown
b3cb7f2a ed4bcfbc

+9 -11
+4 -9
sound/soc/codecs/rt721-sdca-sdw.c
··· 203 203 * This also could sync with the cache value as the rt721_sdca_jack_init set. 204 204 */ 205 205 sdw_write_no_pm(rt721->slave, SDW_SCP_SDCA_INTMASK1, 206 - SDW_SCP_SDCA_INTMASK_SDCA_6); 206 + SDW_SCP_SDCA_INTMASK_SDCA_0); 207 207 sdw_write_no_pm(rt721->slave, SDW_SCP_SDCA_INTMASK2, 208 208 SDW_SCP_SDCA_INTMASK_SDCA_8); 209 209 } ··· 280 280 } 281 281 282 282 /* set the timeout values */ 283 - prop->clk_stop_timeout = 900; 283 + prop->clk_stop_timeout = 1380; 284 284 285 285 /* wake-up event */ 286 286 prop->wake_capable = 1; ··· 335 335 if (ret & SDW_SCP_SDCA_INTMASK_SDCA_0) { 336 336 ret = sdw_update_no_pm(rt721->slave, SDW_SCP_SDCA_INT1, 337 337 SDW_SCP_SDCA_INT_SDCA_0, SDW_SCP_SDCA_INT_SDCA_0); 338 - if (ret < 0) 339 - 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 338 if (ret < 0) 344 339 goto io_error; 345 340 } ··· 470 475 mutex_lock(&rt721_sdca->disable_irq_lock); 471 476 rt721_sdca->disable_irq = true; 472 477 ret1 = sdw_update_no_pm(slave, SDW_SCP_SDCA_INTMASK1, 473 - SDW_SCP_SDCA_INTMASK_SDCA_0 | SDW_SCP_SDCA_INTMASK_SDCA_6, 0); 478 + SDW_SCP_SDCA_INTMASK_SDCA_0, 0); 474 479 ret2 = sdw_update_no_pm(slave, SDW_SCP_SDCA_INTMASK2, 475 480 SDW_SCP_SDCA_INTMASK_SDCA_8, 0); 476 481 mutex_unlock(&rt721_sdca->disable_irq_lock); ··· 497 502 if (!slave->unattach_request) { 498 503 mutex_lock(&rt721->disable_irq_lock); 499 504 if (rt721->disable_irq == true) { 500 - sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK1, SDW_SCP_SDCA_INTMASK_SDCA_6); 505 + sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK1, SDW_SCP_SDCA_INTMASK_SDCA_0); 501 506 sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK2, SDW_SCP_SDCA_INTMASK_SDCA_8); 502 507 rt721->disable_irq = false; 503 508 }
+4 -2
sound/soc/codecs/rt721-sdca.c
··· 39 39 return; 40 40 41 41 /* 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) { 43 43 rt721->jack_type = rt_sdca_headset_detect(rt721->regmap, 44 44 RT721_SDCA_ENT_GE49); 45 45 if (rt721->jack_type < 0) ··· 286 286 mutex_lock(&rt721->calibrate_mutex); 287 287 if (rt721->hs_jack) { 288 288 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); 290 290 sdw_write_no_pm(rt721->slave, SDW_SCP_SDCA_INTMASK2, 291 291 SDW_SCP_SDCA_INTMASK_SDCA_8); 292 292 dev_dbg(&rt721->slave->dev, "in %s enable\n", __func__); ··· 298 298 regmap_write(rt721->regmap, 299 299 SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT721_SDCA_ENT_XU0D, 300 300 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); 301 303 rt_sdca_index_update_bits(rt721->mbq_regmap, RT721_HDA_SDCA_FLOAT, 302 304 RT721_GE_REL_CTRL1, 0x4000, 0x4000); 303 305 }
+1
sound/soc/codecs/rt721-sdca.h
··· 133 133 #define RT721_HDA_LEGACY_UAJ_CTL 0x02 134 134 #define RT721_HDA_LEGACY_CTL1 0x05 135 135 #define RT721_HDA_LEGACY_RESET_CTL 0x06 136 + #define RT721_XU_REL_CTRL 0x0c 136 137 #define RT721_GE_REL_CTRL1 0x0d 137 138 #define RT721_HDA_LEGACY_GPIO_WAKE_EN_CTL 0x0e 138 139 #define RT721_GE_SDCA_RST_CTRL 0x10