On 10/15/21 8:34 AM, Chris Chiu wrote:
The jd_src of RT711 which is initialized in rt711/rt711_sdca_init will be overridden by rt711/rt711_sdca_add_codec_device_props when the sof_sdw_quirk is not RT711_JD_NULL. It will force the JD mode to RT711_JD1 and cause confusion while debugging the JD mode of the boards without quirk. Initialize sof_sdw_quirk with RT711_JD_NULL to honor the jd_src value in rt711/rt711_sdca init.
Not able to follow what the "confusion while debugging the JD mode of the boards without quirk" is. You need a DMI quirk or need to override the default quirk with the kernel module parameter.
The JD mode will be set by rt711/rt711_sdca_init first (which is JD2 as https://github.com/torvalds/linux/blob/master/sound/soc/codecs/rt711.c#L1209. Then it will be overridden by rt711_add_codec_device_props() while doing rt711_parse_dt(), which is now always JD1 since the current sof_sdw_quirk init value. I'm afraid that JD2 is a more preferable mode rather than JD1. Then we will have to maintain a bigger DMI quirk table for more and more coming alderlake machines.
Given the rt711 codec has initialized the jd_src to JD2, The sof_sdw_quirk should only override it unless necessary? But now it's forced to override. Or can we have a more generic solution for it?
I don't mind changing the default if the majority of devices uses JD2. But your patch doesn't do this cleanly, it breaks all usages of JD1 that relied on the previous default.
Changing the default for jack detection also doesn't really decrease the need for quirks in itself, for this we would need to handle the RT715 quirk and also fix the amplifier link id, and also set the HDMI quirk depending on the platform setting. Bard's working on this, see https://github.com/thesofproject/linux/pull/3203