summaryrefslogtreecommitdiff
path: root/src/mainboard/prodrive/hermes/hda_verb.c
diff options
context:
space:
mode:
authorPatrick Rudolph <patrick.rudolph@9elements.com>2020-08-25 12:00:06 +0200
committerPatrick Georgi <pgeorgi@google.com>2021-02-24 11:32:41 +0000
commit560eab7de516f964ed0d1902a811be3be4996d46 (patch)
tree2cc7228ab073d5064b7a968e3a02a66d7503f529 /src/mainboard/prodrive/hermes/hda_verb.c
parent4084702567f60ac6e1c6e81e13d05a2a0beaf3c0 (diff)
mb/prodrive/hermes/hda_verb: Update verb table for latest board revision
Use different verb tables depending on board revision. For board revision R03 and older use the existing verb tables. For revisions newer than R03 use the new verb tables and also apply the dynamic audio configuration recently added. Also do the following: * Use correct NID port mapping * Fix verb count in ALC888 header * Fix NID in Intel codec verbs Change-Id: I24ea9149eb2cddb815ff82744a351c926a94aaef Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/44772 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Diffstat (limited to 'src/mainboard/prodrive/hermes/hda_verb.c')
-rw-r--r--src/mainboard/prodrive/hermes/hda_verb.c229
1 files changed, 7 insertions, 222 deletions
diff --git a/src/mainboard/prodrive/hermes/hda_verb.c b/src/mainboard/prodrive/hermes/hda_verb.c
index be7dbb4ec6..23c542c478 100644
--- a/src/mainboard/prodrive/hermes/hda_verb.c
+++ b/src/mainboard/prodrive/hermes/hda_verb.c
@@ -2,232 +2,17 @@
#include <device/azalia_device.h>
#include <types.h>
+#include <console/console.h>
#include "variants/baseboard/include/eeprom.h"
-
-const u32 cim_verb_data[] = {
- 0x10ec0888, /* Codec Vendor / Device ID: Realtek ALC888 */
- 0x10ec0888, /* Subsystem ID */
- 10, /* Number of 4 dword sets */
- AZALIA_SUBVENDOR(0, 0x10ec0888),
-
- /* Port A: Front, Audio Header #1 */
- AZALIA_PIN_CFG(0, 0x14, AZALIA_PIN_DESC(
- INTEGRATED,
- INTERNAL,
- SPECIAL7,
- LINE_OUT,
- OTHER_ANALOG,
- COLOR_UNKNOWN,
- false,
- 0xf,
- 0
- )),
- /* Port B: Mic1, Line input (pink) */
- AZALIA_PIN_CFG(0, 0x15, AZALIA_PIN_DESC(
- JACK,
- EXTERNAL_PRIMARY_CHASSIS,
- REAR, //FIXME
- LINE_IN,
- STEREO_MONO_1_8,
- PINK,
- false,
- 0xf,
- 0
- )),
- /* Port C: Line, Speaker (only L) */
- AZALIA_PIN_CFG(0, 0x16, AZALIA_PIN_DESC(
- INTEGRATED,
- INTERNAL,
- NA,
- SPEAKER,
- TYPE_UNKNOWN,
- COLOR_UNKNOWN,
- false,
- 0xf,
- 0
- )),
- /* Port D: Sidesurr, Line out (green) */
- AZALIA_PIN_CFG(0, 0x17, AZALIA_PIN_DESC(
- //JACK,
- LINE_OUT,
- EXTERNAL_PRIMARY_CHASSIS,
- REAR, //FIXME
- LINE_OUT,
- STEREO_MONO_1_8,
- GREEN,
- false,
- 0xf,
- 0
- )),
- /* Port E: Line2, Line input (blue) */
- AZALIA_PIN_CFG(0, 0x18, AZALIA_PIN_DESC(
- JACK,
- EXTERNAL_PRIMARY_CHASSIS,
- REAR, //FIXME
- LINE_IN,
- STEREO_MONO_1_8,
- BLUE,
- false,
- 0xf,
- 0
- )),
- /* Port F: Mic2, Audio Header #2 */
- AZALIA_PIN_CFG(0, 0x19, AZALIA_PIN_DESC(
- INTEGRATED,
- INTERNAL,
- SPECIAL7,
- LINE_IN,
- OTHER_ANALOG,
- COLOR_UNKNOWN,
- false,
- 0xf,
- 0
- )),
- /* Port G: Not connected */
- AZALIA_PIN_CFG(0, 0x1a, AZALIA_PIN_DESC(
- NC,
- LOCATION_OTHER,
- NA,
- DEVICE_OTHER,
- TYPE_OTHER,
- COLOR_OTHER,
- true,
- 0,
- 0
- )),
- /* Port H: Not connected */
- AZALIA_PIN_CFG(0, 0x1b, AZALIA_PIN_DESC(
- NC,
- LOCATION_OTHER,
- NA,
- DEVICE_OTHER,
- TYPE_OTHER,
- COLOR_OTHER,
- true,
- 0,
- 0
- )),
-
- /* S/PDIF-OUT */
- AZALIA_PIN_CFG(0, 0x1e, AZALIA_PIN_DESC(
- INTEGRATED,
- INTERNAL,
- NA,
- SPDIF_OUT,
- OTHER_DIGITAL,
- COLOR_UNKNOWN,
- true,
- 0xf,
- 0
- )),
- /* S/PDIF-IN */
- AZALIA_PIN_CFG(0, 0x1f, AZALIA_PIN_DESC(
- INTEGRATED,
- INTERNAL,
- NA,
- SPDIF_IN,
- OTHER_DIGITAL,
- COLOR_UNKNOWN,
- true,
- 0xf,
- 0
- )),
-
- //FIXME COdec ID
- /*
- * VerbTable: CFL Display Audio Codec
- * Revision ID = 0xFF
- * Codec Vendor: 0x8086280B
- */
-
- 0x8086280B,
- 0xFFFFFFFF,
- 5, /* Number of 4 dword sets */
-
- /*
- * Display Audio Verb Table
- * For GEN9, the Vendor Node ID is 08h
- * Port to be exposed to the inbox driver in the vanilla mode
- * PORT C - BIT[7:6] = 01b
- */
- 0x00878140,
- 0x00878140,
- 0x00878140,
- 0x00878140,
- /* Pin Widget 5 - PORT B - Configuration Default: 0x18560010 */
- AZALIA_PIN_CFG(2, 0x05, 0x18560010),
- /* Pin Widget 6 - PORT C - Configuration Default: 0x18560020 */
- AZALIA_PIN_CFG(2, 0x06, 0x18560020),
- /* Pin Widget 7 - PORT D - Configuration Default: 0x18560030 */
- AZALIA_PIN_CFG(2, 0x07, 0x18560030),
- /* Disable the third converter and third Pin (NID 08h) */
- 0x00878140,
- 0x00878140,
- 0x00878140,
- 0x00878140,
-};
-
-const u32 pc_beep_verbs[0] = {};
-
-AZALIA_ARRAY_SIZES;
-
-static u32 get_port_c_vref_cfg(uint8_t blue_rear_vref)
-{
- switch (blue_rear_vref) {
- default:
- case 0:
- return 0x02040000;
- case 1:
- return 0x02041000;
- case 2:
- return 0x02044000;
- case 3:
- return 0x02045000;
- case 4:
- return 0x02046000;
- }
-}
-
-static u32 get_internal_audio_cfg(uint8_t internal_audio_connection)
-{
- switch (internal_audio_connection) {
- default:
- case 0:
- return AZALIA_PIN_CFG_NC(0);
- case 1:
- return 0x022a4c40;
- case 2:
- return AZALIA_PIN_DESC(
- INTEGRATED,
- INTERNAL,
- NA,
- SPEAKER,
- TYPE_UNKNOWN,
- COLOR_UNKNOWN,
- false,
- 0xf,
- 0);
- }
-}
+#include "variants/baseboard/include/variant/variants.h"
void mainboard_azalia_program_runtime_verbs(u8 *base, u32 viddid)
{
- if (viddid != 0x10ec0888)
- return;
+ if (viddid == 0x10ec0888) {
+ u8 hsi = get_bmc_hsi();
- const struct eeprom_board_settings *const board_cfg = get_board_settings();
-
- if (!board_cfg)
- return;
-
- const u32 config = get_internal_audio_cfg(board_cfg->internal_audio_connection);
-
- const u32 verbs[] = {
- AZALIA_PIN_CFG(0, 0x1b, config),
- 0x0205000d,
- get_port_c_vref_cfg(board_cfg->blue_rear_vref),
- };
-
- azalia_program_verb_table(base, verbs, ARRAY_SIZE(verbs));
+ if (hsi >= 4)
+ mainboard_r0x_configure_alc888(base, viddid);
+ }
}