Skip to content

Commit 6b64112

Browse files
Tydik42broonie
authored andcommitted
ASoC: Intel: sof_es8336: Add DMI quirk for Huawei BOD-WXX9
Add DMI entry for Huawei Matebook D (BOD-WXX9) with HEADPHONE_GPIO and DMIC quirks. This device has ES8336 codec with: - GPIO 16 (headphone-enable) for headphone amplifier control - GPIO 17 (speakers-enable) for speaker amplifier control - GPIO 269 for jack detection IRQ - 2-channel DMIC Hardware investigation shows that both GPIO 16 and 17 are required for proper audio routing, as headphones and speakers share the same physical output (HPOL/HPOR) and are separated only via amplifier enable signals. RFC: Seeking advice on GPIO control issue: GPIO values change in driver (gpiod_get_value() shows logical value changes) but not physically (debugfs gpio shows no change). The same gpiod_set_value_cansleep() calls work correctly in probe context with msleep(), but fail when called from DAPM event callbacks. Context information from diagnostics: - in_atomic=0, in_interrupt=0, irqs_disabled=0 - Process context: pipewire - GPIO 17 (speakers): changes in driver, no physical change - GPIO 16 (headphone): changes in driver, no physical change In Windows, audio switching works without visible GPIO changes, suggesting possible ACPI/firmware involvement. Any suggestions on how to properly control these GPIOs from DAPM events would be appreciated. Signed-off-by: Tagir Garaev <tgaraev653@gmail.com> Link: https://patch.msgid.link/20260201121728.16597-1-tgaraev653@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 1425900 commit 6b64112

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

sound/soc/intel/boards/sof_es8336.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,15 @@ static int sof_es8336_quirk_cb(const struct dmi_system_id *id)
334334
* if the topology file is modified as well.
335335
*/
336336
static const struct dmi_system_id sof_es8336_quirk_table[] = {
337+
{
338+
.callback = sof_es8336_quirk_cb,
339+
.matches = {
340+
DMI_MATCH(DMI_SYS_VENDOR, "HUAWEI"),
341+
DMI_MATCH(DMI_PRODUCT_NAME, "BOD-WXX9"),
342+
},
343+
.driver_data = (void *)(SOF_ES8336_HEADPHONE_GPIO |
344+
SOF_ES8336_ENABLE_DMIC)
345+
},
337346
{
338347
.callback = sof_es8336_quirk_cb,
339348
.matches = {

0 commit comments

Comments
 (0)