diff --git a/src/northbridge/intel/haswell/minihd.c b/src/northbridge/intel/haswell/minihd.c
index 6896464..558f41f 100644
--- a/src/northbridge/intel/haswell/minihd.c
+++ b/src/northbridge/intel/haswell/minihd.c
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
 #include <console/console.h>
+#include <device/azalia_device.h>
 #include <device/device.h>
 #include <device/pci.h>
 #include <device/pci_ids.h>
@@ -78,8 +79,8 @@
 	if (codec_mask) {
 		for (i = 3; i >= 0; i--) {
 			if (codec_mask & (1 << i))
-				hda_codec_init(base, i, sizeof(minihd_verb_table),
-					       minihd_verb_table);
+				azalia_codec_init(base, i, minihd_verb_table,
+						  sizeof(minihd_verb_table));
 		}
 	}
 }
diff --git a/src/soc/intel/broadwell/minihd.c b/src/soc/intel/broadwell/minihd.c
index a07d9b1..396c283 100644
--- a/src/soc/intel/broadwell/minihd.c
+++ b/src/soc/intel/broadwell/minihd.c
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
 #include <console/console.h>
+#include <device/azalia_device.h>
 #include <device/device.h>
 #include <device/pci.h>
 #include <device/pci_ids.h>
@@ -79,8 +80,8 @@
 	if (codec_mask) {
 		for (i = 3; i >= 0; i--) {
 			if (codec_mask & (1 << i))
-				hda_codec_init(base, i, sizeof(minihd_verb_table),
-					       minihd_verb_table);
+				azalia_codec_init(base, i, minihd_verb_table,
+						  sizeof(minihd_verb_table));
 		}
 	}
 
diff --git a/src/soc/intel/broadwell/pch/hda.c b/src/soc/intel/broadwell/pch/hda.c
index 2230614..5c5e08f 100644
--- a/src/soc/intel/broadwell/pch/hda.c
+++ b/src/soc/intel/broadwell/pch/hda.c
@@ -18,9 +18,7 @@
 	/* Can support up to 4 codecs */
 	for (i = 3; i >= 0; i--) {
 		if (codec_mask & (1 << i))
-			hda_codec_init(base, i,
-				       cim_verb_data_size,
-				       cim_verb_data);
+			azalia_codec_init(base, i, cim_verb_data, cim_verb_data_size);
 	}
 
 	if (pc_beep_verbs_size)
diff --git a/src/southbridge/intel/lynxpoint/azalia.c b/src/southbridge/intel/lynxpoint/azalia.c
index 8e138f1..9201caa 100644
--- a/src/southbridge/intel/lynxpoint/azalia.c
+++ b/src/southbridge/intel/lynxpoint/azalia.c
@@ -18,9 +18,7 @@
 	/* Can support up to 4 codecs */
 	for (i = 3; i >= 0; i--) {
 		if (codec_mask & (1 << i))
-			hda_codec_init(base, i,
-				       cim_verb_data_size,
-				       cim_verb_data);
+			azalia_codec_init(base, i, cim_verb_data, cim_verb_data_size);
 	}
 
 	if (pc_beep_verbs_size)
diff --git a/src/southbridge/intel/lynxpoint/hda_verb.c b/src/southbridge/intel/lynxpoint/hda_verb.c
index ba30f1d..809ab3b 100644
--- a/src/southbridge/intel/lynxpoint/hda_verb.c
+++ b/src/southbridge/intel/lynxpoint/hda_verb.c
@@ -46,95 +46,3 @@
 	printk(BIOS_DEBUG, "HDA: No codec!\n");
 	return 0;
 }
-
-/*
- * Wait 50usec for the codec to indicate it is ready.
- * No response would imply that the codec is non-operative.
- */
-static int hda_wait_for_ready(u8 *base)
-{
-	/* Use a 50 usec timeout - the Linux kernel uses the same duration */
-	int timeout = 50;
-
-	while (timeout--) {
-		u32 reg32 = read32(base + HDA_ICII_REG);
-		if (!(reg32 & HDA_ICII_BUSY))
-			return 0;
-		udelay(1);
-	}
-
-	return -1;
-}
-
-/*
- * Wait 50usec for the codec to indicate that it accepted the previous command.
- * No response would imply that the code is non-operative.
- */
-static int hda_wait_for_valid(u8 *base)
-{
-	u32 reg32;
-	/* Use a 50 usec timeout - the Linux kernel uses the same duration */
-	int timeout = 50;
-
-	/* Send the verb to the codec */
-	reg32 = read32(base + HDA_ICII_REG);
-	reg32 |= HDA_ICII_BUSY | HDA_ICII_VALID;
-	write32(base + HDA_ICII_REG, reg32);
-
-	while (timeout--) {
-		reg32 = read32(base + HDA_ICII_REG);
-		if ((reg32 & (HDA_ICII_VALID | HDA_ICII_BUSY)) == HDA_ICII_VALID)
-			return 0;
-		udelay(1);
-	}
-
-	return -1;
-}
-
-int hda_codec_init(u8 *base, int addr, int verb_size, const u32 *verb_data)
-{
-	const u32 *verb;
-	u32 reg32, size;
-	int rc;
-
-	printk(BIOS_DEBUG, "HDA: Initializing codec #%d\n", addr);
-
-	if (!verb_size || !verb_data) {
-		printk(BIOS_DEBUG, "HDA: No verb list!\n");
-		return -1;
-	}
-
-	/* 1 */
-	if (hda_wait_for_ready(base) < 0) {
-		printk(BIOS_DEBUG, "  codec not ready.\n");
-		return -1;
-	}
-
-	reg32 = (addr << 28) | 0x000f0000;
-	write32(base + HDA_IC_REG, reg32);
-
-	if (hda_wait_for_valid(base) < 0) {
-		printk(BIOS_DEBUG, "  codec not valid.\n");
-		return -1;
-	}
-
-	/* 2 */
-	reg32 = read32(base + HDA_IR_REG);
-	printk(BIOS_DEBUG, "HDA: codec viddid: %08x\n", reg32);
-
-	size = azalia_find_verb(verb_data, verb_size, reg32, &verb);
-	if (!size) {
-		printk(BIOS_DEBUG, "HDA: No verb table entry found\n");
-		return -1;
-	}
-
-	/* 3 */
-	rc = azalia_program_verb_table(base, verb, size);
-
-	if (rc < 0)
-		printk(BIOS_DEBUG, "HDA: verb not loaded\n");
-	else
-		printk(BIOS_DEBUG, "HDA: verb loaded.\n");
-
-	return rc;
-}
diff --git a/src/southbridge/intel/lynxpoint/hda_verb.h b/src/southbridge/intel/lynxpoint/hda_verb.h
index 327811f..1d6ef39 100644
--- a/src/southbridge/intel/lynxpoint/hda_verb.h
+++ b/src/southbridge/intel/lynxpoint/hda_verb.h
@@ -6,6 +6,5 @@
 #include <stdint.h>
 
 int hda_codec_detect(u8 *base);
-int hda_codec_init(u8 *base, int addr, int verb_size, const u32 *verb_data);
 
 #endif
