On 3/5/10 10:29 AM, Bao, Zheng wrote:
Don't load verb in BIOS stage. It is not BIOS's responsibility.
Who is responsible for that, then?
On i945 I definitely don't get sound on most systems if I don't load the verb in coreboot. I also don't think the Linux drivers do it.
And we can not have verb for every single codec.
Have a look at the i82801gx southbridge; I think it was based on the sb600 code, but I changed it so I can have a per mainboard verb table. In mainboard_enable() in mainboard.c, call verb_setup() which does:
#include "hda_verb.h"
static void verb_setup(void) { cim_verb_data = mainboard_cim_verb_data; cim_verb_data_size = sizeof(mainboard_cim_verb_data); }
and hda_verb.c looks like this:
static u32 mainboard_cim_verb_data[] = { /* coreboot specific header */ 0x10ec0262, // Codec Vendor ID / Device ID 0x10714700, // Subsystem ID 0x0000000d, // Number of jacks
/* HDA Codec Subsystem ID Verb Table: 0x10ec0000 */ 0x00172000, 0x00172100, 0x001722EC, 0x00172310,
/* Pin Widget Verb Table */
/* Pin Complex (NID 0x12) */ 0x01271CF0, 0x01271D11, 0x01271E11, ... };
extern u32 * cim_verb_data; extern u32 cim_verb_data_size;