mb/google/zork/var/shuboz: Add fw_config probe for ALC5682-VD & VS

ALC5682-VD/ALC5682I-VS load different kernel driver by different hid
name. Update hid name and machine_dev depending on the AUDIO_CODEC_SOURCE
field of fw_config. Define FW_CONFIG bits 36 - 37 (SSFC bits 4 - 5)
for codec selection.

ALC5682-VD: _HID = "10EC5682"
ALC5682I-VS: _HID = "RTL5682"

BUG=b:198689479
BRANCH=zork
TEST=ALC5682-VD/ALC5682I-VS audio codec can work

Signed-off-by: Kane Chen <kane_chen@pegatron.corp-partner.google.com>
Change-Id: I0c78aa166010ffa4d0cacc8a11d418d5a6906749
Reviewed-on: https://review.coreboot.org/c/coreboot/+/59558
Reviewed-by: Reka Norman <rekanorman@chromium.org>
Reviewed-by: Kangheui Won <khwon@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Kane Chen 2021-11-23 12:19:39 +08:00 committed by Felix Held
parent aa709a4996
commit c71e320bae
2 changed files with 89 additions and 0 deletions

View File

@ -55,6 +55,9 @@ enum {
/* Audio AMP type */
FW_CONFIG_MASK_AUDIO_AMP = 0x1,
FW_CONFIG_SHIFT_AUDIO_AMP = 35,
/* Audio codec type */
FW_CONFIG_MASK_AUDIO_CODEC_SOURCE = 0x3,
FW_CONFIG_SHIFT_AUDIO_CODEC_SOURCE = 36,
};
static int get_fw_config(uint64_t *val)

View File

@ -1,4 +1,10 @@
# SPDX-License-Identifier: GPL-2.0-or-later
fw_config
field AUDIO_CODEC_SOURCE 36 37
option AUDIO_CODEC_ALC5682 0
option AUDIO_CODEC_ALC5682I_VS 1
end
end
chip soc/amd/picasso
@ -51,6 +57,86 @@ chip soc/amd/picasso
# See AMD 55570-B1 Table 13: PCI Device ID Assignments.
device domain 0 on
subsystemid 0x1022 0x1510 inherit
device ref internal_bridge_a on
device ref acp on
chip drivers/amd/i2s_machine_dev
register "hid" = ""AMDI5682""
# DMIC select GPIO for ACP machine device
# This GPIO is used to select DMIC0 or DMIC1 by the
# kernel driver. It does not really have a polarity
# since low and high control the selection of DMIC and
# hence does not have an active polarity.
# Kernel driver does not use the polarity field and
# instead treats the GPIO selection as follows:
# Set low (0) = Select DMIC0
# Set high (1) = Select DMIC1
register "dmic_select_gpio" = "ACPI_GPIO_OUTPUT(GPIO_67)"
device generic 0.0 on
probe AUDIO_CODEC_SOURCE AUDIO_CODEC_ALC5682
end
end
chip drivers/amd/i2s_machine_dev
register "hid" = ""10029835""
# DMIC select GPIO for ACP machine device
# This GPIO is used to select DMIC0 or DMIC1 by the
# kernel driver. It does not really have a polarity
# since low and high control the selection of DMIC and
# hence does not have an active polarity.
# Kernel driver does not use the polarity field and
# instead treats the GPIO selection as follows:
# Set low (0) = Select DMIC0
# Set high (1) = Select DMIC1
register "dmic_select_gpio" = "ACPI_GPIO_OUTPUT(GPIO_67)"
device generic 1.0 on
probe AUDIO_CODEC_SOURCE AUDIO_CODEC_ALC5682I_VS
end
end
end # Audio
end
device ref lpc_bridge on
chip ec/google/chromeec
device pnp 0c09.0 on
chip ec/google/chromeec/i2c_tunnel
device generic 0.0 on
chip drivers/i2c/generic
register "hid" = ""10EC5682""
register "name" = ""RT58""
register "uid" = "1"
register "desc" = ""Realtek RT5682""
register "irq_gpio" = "ACPI_GPIO_IRQ_EDGE_BOTH(GPIO_84)"
register "property_count" = "2"
register "property_list[0].type" = "ACPI_DP_TYPE_INTEGER"
register "property_list[0].name" = ""realtek,jd-src""
register "property_list[0].integer" = "1"
register "property_list[1].type" = "ACPI_DP_TYPE_STRING"
register "property_list[1].name" = ""realtek,mclk-name""
register "property_list[1].string" = ""oscout1""
device i2c 1a on end
end
probe AUDIO_CODEC_SOURCE AUDIO_CODEC_ALC5682
end
device generic 1.0 on
chip drivers/i2c/generic
register "hid" = ""RTL5682""
register "name" = ""RT58""
register "uid" = "1"
register "desc" = ""Realtek RT5682""
register "irq_gpio" = "ACPI_GPIO_IRQ_EDGE_BOTH(GPIO_84)"
register "property_count" = "2"
register "property_list[0].type" = "ACPI_DP_TYPE_INTEGER"
register "property_list[0].name" = ""realtek,jd-src""
register "property_list[0].integer" = "1"
register "property_list[1].type" = "ACPI_DP_TYPE_STRING"
register "property_list[1].name" = ""realtek,mclk-name""
register "property_list[1].string" = ""oscout1""
device i2c 1a on end
end
probe AUDIO_CODEC_SOURCE AUDIO_CODEC_ALC5682I_VS
end
end
end
end
end
end # domain
device ref i2c_2 on