azalia: Replace `hda_find_verb` uses

This function is equivalent to `azalia_find_verb` in its current form,
so replace them. Also, adapt and move the function description comment.

Change-Id: I40d1e634c31b00bd7808a651990d9bd6f0d054e9
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/48351
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
This commit is contained in:
Angel Pons 2020-12-05 18:28:33 +01:00 committed by Hung-Te Lin
parent d425ddd105
commit d3f7028993
3 changed files with 27 additions and 92 deletions

View File

@ -85,6 +85,31 @@ no_codec:
return 0;
}
/*
* Find a specific entry within a verb table
*
* @param verb_table: verb table data
* @param verb_table_bytes: verb table size in bytes
* @param viddid: vendor/device to search for
* @param verb: pointer to entry within table
*
* Returns size of the entry within the verb table,
* Returns 0 if the entry is not found
*
* The HDA verb table is composed of dwords. A set of 4 dwords is
* grouped together to form a "jack" descriptor.
* Bits 31:28 - Codec Address
* Bits 27:20 - NID
* Bits 19:8 - Verb ID
* Bits 7:0 - Payload
*
* coreboot groups different codec verb tables into a single table
* and prefixes each with a specific header consisting of 3
* dword entries:
* 1 - Codec Vendor/Device ID
* 2 - Subsystem ID
* 3 - Number of jacks (groups of 4 dwords) for this codec
*/
u32 azalia_find_verb(const u32 *verb_table, u32 verb_table_bytes, u32 viddid, const u32 **verb)
{
int idx = 0;

View File

@ -91,51 +91,6 @@ static int hda_wait_for_valid(u8 *base)
return -1;
}
/*
* Find a specific entry within a verb table
*
* @param verb_table_bytes: verb table size in bytes
* @param verb_table_data: verb table data
* @param viddid: vendor/device to search for
* @param verb: pointer to entry within table
*
* Returns size of the entry within the verb table,
* Returns 0 if the entry is not found
*
* The HDA verb table is composed of dwords. A set of 4 dwords is
* grouped together to form a "jack" descriptor.
* Bits 31:28 - Codec Address
* Bits 27:20 - NID
* Bits 19:8 - Verb ID
* Bits 7:0 - Payload
*
* coreboot groups different codec verb tables into a single table
* and prefixes each with a specific header consisting of 3
* dword entries:
* 1 - Codec Vendor/Device ID
* 2 - Subsystem ID
* 3 - Number of jacks (groups of 4 dwords) for this codec
*/
static u32 hda_find_verb(u32 verb_table_bytes,
const u32 *verb_table_data,
u32 viddid, const u32 **verb)
{
int idx = 0;
while (idx < (verb_table_bytes / sizeof(u32))) {
u32 verb_size = 4 * verb_table_data[idx+2]; // in u32
if (verb_table_data[idx] != viddid) {
idx += verb_size + 3; // skip verb + header
continue;
}
*verb = &verb_table_data[idx+3];
return verb_size;
}
/* Not all codecs need to load another verb */
return 0;
}
int hda_codec_write(u8 *base, u32 size, const u32 *data)
{
int i;
@ -184,7 +139,7 @@ int hda_codec_init(u8 *base, int addr, int verb_size, const u32 *verb_data)
reg32 = read32(base + HDA_IR_REG);
printk(BIOS_DEBUG, "HDA: codec viddid: %08x\n", reg32);
size = hda_find_verb(verb_size, verb_data, reg32, &verb);
size = azalia_find_verb(verb_data, verb_size, reg32, &verb);
if (!size) {
printk(BIOS_DEBUG, "HDA: No verb table entry found\n");
return -1;

View File

@ -79,51 +79,6 @@ static int hda_wait_for_valid(u8 *base)
return -1;
}
/*
* Find a specific entry within a verb table
*
* @param verb_table_bytes: verb table size in bytes
* @param verb_table_data: verb table data
* @param viddid: vendor/device to search for
* @param **verb: pointer to entry within table
*
* Returns size of the entry within the verb table,
* Returns 0 if the entry is not found
*
* The HDA verb table is composed of dwords. A set of 4 dwords is
* grouped together to form a "jack" descriptor.
* Bits 31:28 - Codec Address
* Bits 27:20 - NID
* Bits 19:8 - Verb ID
* Bits 7:0 - Payload
*
* coreboot groups different codec verb tables into a single table
* and prefixes each with a specific header consisting of 3
* dword entries:
* 1 - Codec Vendor/Device ID
* 2 - Subsystem ID
* 3 - Number of jacks (groups of 4 dwords) for this codec
*/
static u32 hda_find_verb(u32 verb_table_bytes,
const u32 *verb_table_data,
u32 viddid, const u32 **verb)
{
int idx = 0;
while (idx < (verb_table_bytes / sizeof(u32))) {
u32 verb_size = 4 * verb_table_data[idx+2]; // in u32
if (verb_table_data[idx] != viddid) {
idx += verb_size + 3; // skip verb + header
continue;
}
*verb = &verb_table_data[idx+3];
return verb_size;
}
/* Not all codecs need to load another verb */
return 0;
}
int hda_codec_write(u8 *base, u32 size, const u32 *data)
{
int i;
@ -172,7 +127,7 @@ int hda_codec_init(u8 *base, int addr, int verb_size, const u32 *verb_data)
reg32 = read32(base + HDA_IR_REG);
printk(BIOS_DEBUG, "HDA: codec viddid: %08x\n", reg32);
size = hda_find_verb(verb_size, verb_data, reg32, &verb);
size = azalia_find_verb(verb_data, verb_size, reg32, &verb);
if (!size) {
printk(BIOS_DEBUG, "HDA: No verb table entry found\n");
return -1;