diff --git a/src/device/azalia_device.c b/src/device/azalia_device.c index 5a3a5ded04..1a57be1181 100644 --- a/src/device/azalia_device.c +++ b/src/device/azalia_device.c @@ -210,6 +210,10 @@ int azalia_program_verb_table(u8 *base, const u32 *verbs, u32 verb_size) return 0; } +__weak void mainboard_azalia_program_runtime_verbs(u8 *base, u32 viddid) +{ +} + static void codec_init(struct device *dev, u8 *base, int addr) { u32 reg32; @@ -246,6 +250,8 @@ static void codec_init(struct device *dev, u8 *base, int addr) /* 3 */ azalia_program_verb_table(base, verb, verb_size); printk(BIOS_DEBUG, "azalia_audio: verb loaded.\n"); + + mainboard_azalia_program_runtime_verbs(base, reg32); } static void codecs_init(struct device *dev, u8 *base, u32 codec_mask) diff --git a/src/include/device/azalia_device.h b/src/include/device/azalia_device.h index ce8c0d193e..9010507aee 100644 --- a/src/include/device/azalia_device.h +++ b/src/include/device/azalia_device.h @@ -26,6 +26,9 @@ int azalia_program_verb_table(u8 *base, const u32 *verbs, u32 verb_size); void azalia_audio_init(struct device *dev); extern struct device_operations default_azalia_audio_ops; +/* Optional hook to program codec settings that are only known at runtime */ +void mainboard_azalia_program_runtime_verbs(u8 *base, u32 viddid); + extern const u32 cim_verb_data[]; extern const u32 cim_verb_data_size; extern const u32 pc_beep_verbs[];