diff --git a/src/device/Makefile.inc b/src/device/Makefile.inc
index 0b87095..a7f3364 100644
--- a/src/device/Makefile.inc
+++ b/src/device/Makefile.inc
@@ -14,6 +14,10 @@
 ramstage-$(CONFIG_PCI) += pci_early.c
 ramstage-y += smbus_ops.c
 
+ifeq ($(CONFIG_AZALIA_PLUGIN_SUPPORT),y)
+ramstage-srcs += src/mainboard/$(MAINBOARDDIR)/hda_verb.c
+endif
+
 romstage-y += device_romstage.c
 romstage-$(CONFIG_PCI) += pci_early.c
 
diff --git a/src/device/azalia_device.c b/src/device/azalia_device.c
index cbc878d9..b250f3d 100644
--- a/src/device/azalia_device.c
+++ b/src/device/azalia_device.c
@@ -110,9 +110,6 @@
 	return 0;
 }
 
-const u32 *cim_verb_data = NULL;
-u32 cim_verb_data_size = 0;
-
 static u32 find_verb(struct device *dev, u32 viddid, const u32 ** verb)
 {
 	printk(BIOS_DEBUG, "azalia_audio: dev=%s\n", dev_path(dev));
diff --git a/src/include/device/azalia_device.h b/src/include/device/azalia_device.h
index 4940cd2..0f477a3 100644
--- a/src/include/device/azalia_device.h
+++ b/src/include/device/azalia_device.h
@@ -20,15 +20,26 @@
 #ifndef DEVICE_AZALIA_H
 #define DEVICE_AZALIA_H
 
+#include <types.h>
+#include <string.h>
+#include <console/console.h>
+#include <arch/acpi.h>
+#include <arch/io.h>
+#include <arch/interrupt.h>
+#include <build.h>
+
 #include <device/device.h>
 
 void azalia_audio_init(struct device *dev);
 extern struct device_operations default_azalia_audio_ops;
 
-extern const u32 *cim_verb_data;
-extern u32 cim_verb_data_size;
-extern const u32 *pc_beep_verbs;
-extern u32 pc_beep_verbs_size;
+extern const u32 cim_verb_data[];
+extern const u32 cim_verb_data_size;
+extern const u32 pc_beep_verbs[];
+extern const u32 pc_beep_verbs_size;
+
+#define AZALIA_ARRAY_SIZES const u32 pc_beep_verbs_size = ARRAY_SIZE(pc_beep_verbs); \
+	const u32 cim_verb_data_size = sizeof(cim_verb_data)
 
 #define AZALIA_PIN_CFG(codec, pin, val)		    \
 	((codec) << 28) | ((pin) << 20) | ( 0x71c << 8) | ((val) & 0xff),	\
diff --git a/src/mainboard/apple/macbook21/hda_verb.h b/src/mainboard/apple/macbook21/hda_verb.c
similarity index 92%
rename from src/mainboard/apple/macbook21/hda_verb.h
rename to src/mainboard/apple/macbook21/hda_verb.c
index 07fa6bc..1fe188e 100644
--- a/src/mainboard/apple/macbook21/hda_verb.h
+++ b/src/mainboard/apple/macbook21/hda_verb.c
@@ -18,7 +18,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x83847680,	/* Codec Vendor / Device ID: SigmaTel STAC9221 A1 */
 	0x106b2200,	/* Subsystem ID  */
@@ -58,3 +60,7 @@
 	AZALIA_PIN_CFG(0x0, 0x1B, 0x400000FB),
 
 };
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/apple/macbook21/mainboard.c b/src/mainboard/apple/macbook21/mainboard.c
index 846914c..99527c1 100644
--- a/src/mainboard/apple/macbook21/mainboard.c
+++ b/src/mainboard/apple/macbook21/mainboard.c
@@ -34,8 +34,6 @@
 #include <arch/x86/include/arch/acpigen.h>
 #include <smbios.h>
 #include <drivers/intel/gma/int15.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 #define PANEL INT15_5F35_CL_DISPLAY_DEFAULT
 
 int get_cst_entries(acpi_cstate_t **entries)
@@ -51,8 +49,6 @@
 static void mainboard_enable(device_t dev)
 {
 	dev->ops->init = mainboard_init;
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/asus/m2n-e/hda_verb.h b/src/mainboard/asus/m2n-e/hda_verb.c
similarity index 96%
rename from src/mainboard/asus/m2n-e/hda_verb.h
rename to src/mainboard/asus/m2n-e/hda_verb.c
index 9dd3d88..2f8fe87 100644
--- a/src/mainboard/asus/m2n-e/hda_verb.h
+++ b/src/mainboard/asus/m2n-e/hda_verb.c
@@ -24,7 +24,9 @@
  * http://www.analog.com/static/imported-files/data_sheets/AD1988A_1988B.pdf
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x11d4198b,	/* Codec Vendor / Device ID: Analog Devices AD1988B */
 	0x104381f6,	/* Subsystem ID (0x1043 == ASUS) */
@@ -76,3 +78,4 @@
 	AZALIA_PIN_CFG(0x0, 0x25, 0x01012014),
 };
 
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/asus/m2n-e/mainboard.c b/src/mainboard/asus/m2n-e/mainboard.c
index 51a4419..2c18100 100644
--- a/src/mainboard/asus/m2n-e/mainboard.c
+++ b/src/mainboard/asus/m2n-e/mainboard.c
@@ -19,18 +19,10 @@
  */
 
 #include <device/device.h>
-#include <device/azalia_device.h>
-#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);
-}
 
 static void mainboard_enable(device_t dev)
 {
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/dmp/vortex86ex/hda_verb.h b/src/mainboard/dmp/vortex86ex/hda_verb.c
similarity index 94%
rename from src/mainboard/dmp/vortex86ex/hda_verb.h
rename to src/mainboard/dmp/vortex86ex/hda_verb.c
index 5402b62..79ee44e 100644
--- a/src/mainboard/dmp/vortex86ex/hda_verb.h
+++ b/src/mainboard/dmp/vortex86ex/hda_verb.c
@@ -17,7 +17,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10ec0262,     // Codec Vendor / Device ID: Realtek ALC262
 	0x10714700,     // Subsystem ID
@@ -60,3 +62,7 @@
 	/* Pin widget 0x1F - S/PDIF-IN */
 	AZALIA_PIN_CFG(0x0, 0x1f, 0x411111f0),
 };
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/dmp/vortex86ex/mainboard.c b/src/mainboard/dmp/vortex86ex/mainboard.c
index edf18c2..2761035 100644
--- a/src/mainboard/dmp/vortex86ex/mainboard.c
+++ b/src/mainboard/dmp/vortex86ex/mainboard.c
@@ -23,18 +23,10 @@
 #include <arch/io.h>
 #include <boot/tables.h>
 #include <device/pci_def.h>
-#include <device/azalia_device.h>
-#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);
-}
 
 static void mainboard_enable(device_t dev)
 {
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/emulation/qemu-q35/hda_verb.c b/src/mainboard/emulation/qemu-q35/hda_verb.c
new file mode 100644
index 0000000..072a306
--- /dev/null
+++ b/src/mainboard/emulation/qemu-q35/hda_verb.c
@@ -0,0 +1,7 @@
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[0] = {};
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/getac/p470/hda_verb.h b/src/mainboard/getac/p470/hda_verb.c
similarity index 94%
rename from src/mainboard/getac/p470/hda_verb.h
rename to src/mainboard/getac/p470/hda_verb.c
index 280d6f2..2a75342 100644
--- a/src/mainboard/getac/p470/hda_verb.h
+++ b/src/mainboard/getac/p470/hda_verb.c
@@ -17,7 +17,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10ec0262,	// Codec Vendor / Device ID: Realtek ALC262
 	0x10714700,	// Subsystem ID
@@ -64,3 +66,7 @@
 	/* Pin Complex (NID 0x1F), S/PDIF-IN */
 	AZALIA_PIN_CFG(0x0, 0x1F, 0x411111F0),
 };
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/getac/p470/mainboard.c b/src/mainboard/getac/p470/mainboard.c
index ac235d3b..5dcdb39 100644
--- a/src/mainboard/getac/p470/mainboard.c
+++ b/src/mainboard/getac/p470/mainboard.c
@@ -24,9 +24,7 @@
 #include <device/pci_def.h>
 #include <arch/io.h>
 #include <delay.h>
-#include <device/azalia_device.h>
 
-#include "hda_verb.h"
 
 #include "ec_oem.c"
 
@@ -78,11 +76,6 @@
 #endif
 }
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -95,7 +88,6 @@
 {
 	dev->ops->init = mainboard_init;
 	pcie_limit_power();
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/gigabyte/m57sli/mainboard.c b/src/mainboard/gigabyte/m57sli/mainboard.c
index 3fe4106..291d4f7 100644
--- a/src/mainboard/gigabyte/m57sli/mainboard.c
+++ b/src/mainboard/gigabyte/m57sli/mainboard.c
@@ -24,18 +24,10 @@
 #include <device/pci.h>
 #include <device/pci_ids.h>
 #include <device/pci_ops.h>
-// #include "hda_verb.h"
 
-static void verb_setup(void)
-{
-	/* TODO: Add a correct hda_verb.h file for this board. */
-	// cim_verb_data = mainboard_cim_verb_data;
-	// cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-}
 
 static void mainboard_enable(device_t dev)
 {
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/google/bolt/hda_verb.h b/src/mainboard/google/bolt/hda_verb.c
similarity index 94%
rename from src/mainboard/google/bolt/hda_verb.h
rename to src/mainboard/google/bolt/hda_verb.c
index 54f27f1..b81da6401 100644
--- a/src/mainboard/google/bolt/hda_verb.h
+++ b/src/mainboard/google/bolt/hda_verb.c
@@ -17,7 +17,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10ec0283,	// Codec Vendor / Device ID: Realtek ALC283
 	0x10ec0283,	// Subsystem ID
@@ -75,3 +77,7 @@
 	AZALIA_PIN_CFG(0x0, 0x21, 0x0321101f),
 
 };
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/google/bolt/mainboard.c b/src/mainboard/google/bolt/mainboard.c
index 961f58d..0ccf90d 100644
--- a/src/mainboard/google/bolt/mainboard.c
+++ b/src/mainboard/google/bolt/mainboard.c
@@ -32,8 +32,6 @@
 #include <arch/io.h>
 #include <arch/interrupt.h>
 #include <boot/coreboot_tables.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 #include <southbridge/intel/lynxpoint/pch.h>
 #include "ec.h"
 #include "onboard.h"
@@ -44,13 +42,7 @@
 	outb(0xcb, 0xb2);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -100,7 +92,6 @@
 	dev->ops->init = mainboard_init;
 	dev->ops->get_smbios_data = mainboard_smbios_data;
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_EDP, GMA_INT15_PANEL_FIT_CENTERING, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/google/butterfly/hda_verb.h b/src/mainboard/google/butterfly/hda_verb.c
similarity index 97%
rename from src/mainboard/google/butterfly/hda_verb.h
rename to src/mainboard/google/butterfly/hda_verb.c
index e06a1be..97ff2f6 100644
--- a/src/mainboard/google/butterfly/hda_verb.h
+++ b/src/mainboard/google/butterfly/hda_verb.c
@@ -24,7 +24,9 @@
  */
 
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x111D76E5,	// Codec Vendor / Device ID: IDT 92HD99
 	0x103C18F9,	// Subsystem ID
@@ -223,9 +225,8 @@
 	AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x02177a00, /* Digital PCBEEP Gain: 0h=-9db, 1h=-6db ... 4h=+3db, 5h=+6db */
 };
 
-static const u32 mainboard_pc_beep_verbs_size =
-	ARRAY_SIZE(mainboard_pc_beep_verbs);
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/google/butterfly/mainboard.c b/src/mainboard/google/butterfly/mainboard.c
index 909ba8c..655fc2f 100644
--- a/src/mainboard/google/butterfly/mainboard.c
+++ b/src/mainboard/google/butterfly/mainboard.c
@@ -36,8 +36,6 @@
 #include <smbios.h>
 #include <device/pci.h>
 #include <ec/quanta/ene_kb3940q/ec.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 #if CONFIG_CHROMEOS
 #include <vendorcode/google/chromeos/fmap.h>
 #else
@@ -194,16 +192,7 @@
 	outb(0xcb, 0xb2);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
-
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -294,7 +283,6 @@
 	dev->ops->init = mainboard_init;
 	dev->ops->get_smbios_data = butterfly_onboard_smbios_data;
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS, GMA_INT15_PANEL_FIT_DEFAULT, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/google/falco/hda_verb.h b/src/mainboard/google/falco/hda_verb.c
similarity index 92%
rename from src/mainboard/google/falco/hda_verb.h
rename to src/mainboard/google/falco/hda_verb.c
index 5c37f51..5ea3c7b 100644
--- a/src/mainboard/google/falco/hda_verb.h
+++ b/src/mainboard/google/falco/hda_verb.c
@@ -17,7 +17,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10ec0283,	// Codec Vendor / Device ID: Realtek ALC283
 	0x10ec0283,	// Subsystem ID
@@ -87,7 +89,7 @@
 	0x0204081b,
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x00170500,	/* power up everything (codec, dac, adc, mixers)  */
 	0x01470740,	/* enable speaker out */
 	0x01470c02,	/* set speaker EAPD pin */
@@ -96,5 +98,4 @@
 	0x00b37410,	/* unmute mixer nid 0xb beep input and set volume */
 };
 
-static const u32 mainboard_pc_beep_verbs_size =
-	sizeof(mainboard_pc_beep_verbs) / sizeof(mainboard_pc_beep_verbs[0]);
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/google/falco/mainboard.c b/src/mainboard/google/falco/mainboard.c
index acb9750..0ccf90d 100644
--- a/src/mainboard/google/falco/mainboard.c
+++ b/src/mainboard/google/falco/mainboard.c
@@ -33,8 +33,6 @@
 #include <arch/interrupt.h>
 #include <boot/coreboot_tables.h>
 #include <southbridge/intel/lynxpoint/pch.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 #include "ec.h"
 #include "onboard.h"
 
@@ -44,16 +42,7 @@
 	outb(0xcb, 0xb2);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
-
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -103,7 +92,6 @@
 	dev->ops->init = mainboard_init;
 	dev->ops->get_smbios_data = mainboard_smbios_data;
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_EDP, GMA_INT15_PANEL_FIT_CENTERING, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/google/link/hda_verb.h b/src/mainboard/google/link/hda_verb.c
similarity index 94%
rename from src/mainboard/google/link/hda_verb.h
rename to src/mainboard/google/link/hda_verb.c
index bb5ff10..87bcf30 100644
--- a/src/mainboard/google/link/hda_verb.h
+++ b/src/mainboard/google/link/hda_verb.c
@@ -17,7 +17,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x11020011,	// Codec Vendor / Device ID: Creative CA0132
 	0x144dc0c2,	// Subsystem ID
@@ -126,7 +128,7 @@
 };
 
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x00170500,			/* power up codec */
 	0x00270500,			/* power up DAC */
 	0x00b70500,			/* power up speaker */
@@ -135,5 +137,4 @@
 	0x00b70c02,			/* set EAPD pin */
 	0x0143b013,			/* beep volume */
 };
-static const u32 mainboard_pc_beep_verbs_size =
-	ARRAY_SIZE(mainboard_pc_beep_verbs);
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/google/link/mainboard.c b/src/mainboard/google/link/mainboard.c
index 9d86458..ed40f8f 100644
--- a/src/mainboard/google/link/mainboard.c
+++ b/src/mainboard/google/link/mainboard.c
@@ -39,8 +39,6 @@
 #include <smbios.h>
 #include <device/pci.h>
 #include <ec/google/chromeec/ec.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 /* placeholder for evenual link post. Not sure what we'll
  * do but it will look nice
@@ -149,15 +147,7 @@
 }
 #endif
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -222,7 +212,6 @@
 	/* Install custom int15 handler for VGA OPROM */
 	mainboard_interrupt_handlers(0x15, &int15_handler);
 #endif
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/google/panther/hda_verb.h b/src/mainboard/google/panther/hda_verb.c
similarity index 93%
rename from src/mainboard/google/panther/hda_verb.h
rename to src/mainboard/google/panther/hda_verb.c
index 47311e3..7de91d9 100644
--- a/src/mainboard/google/panther/hda_verb.h
+++ b/src/mainboard/google/panther/hda_verb.c
@@ -22,7 +22,9 @@
 
 #include <stdlib.h>
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10ec0283,	// Codec Vendor / Device ID: Realtek ALC283
 	0x10ec0283,	// Subsystem ID
@@ -83,7 +85,7 @@
 	0x0204081b,
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x00170500,	/* power up everything (codec, dac, adc, mixers)  */
 	0x01470740,	/* enable speaker out */
 	0x01470c02,	/* set speaker EAPD pin */
@@ -92,7 +94,6 @@
 	0x00b37410,	/* unmute mixer nid 0xb beep input and set volume */
 };
 
-static const u32 mainboard_pc_beep_verbs_size =
-	ARRAY_SIZE(mainboard_pc_beep_verbs);
 
 #endif /* HDA_VERB_H */
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/google/panther/mainboard.c b/src/mainboard/google/panther/mainboard.c
index 60baf99..5058eca 100644
--- a/src/mainboard/google/panther/mainboard.c
+++ b/src/mainboard/google/panther/mainboard.c
@@ -32,9 +32,7 @@
 #include <device/pci_ops.h>
 #include <pc80/mc146818rtc.h>
 #include <southbridge/intel/lynxpoint/pch.h>
-#include <device/azalia_device.h>
 #include <drivers/intel/gma/int15.h>
-#include "hda_verb.h"
 #include "onboard.h"
 
 
@@ -44,16 +42,7 @@
 	outb(0xcb, 0xb2);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
-
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -67,7 +56,6 @@
 {
 	dev->ops->init = mainboard_init;
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_EDP, GMA_INT15_PANEL_FIT_CENTERING, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/google/parrot/hda_verb.h b/src/mainboard/google/parrot/hda_verb.c
similarity index 95%
rename from src/mainboard/google/parrot/hda_verb.h
rename to src/mainboard/google/parrot/hda_verb.c
index dfa7a81..f79f69d 100644
--- a/src/mainboard/google/parrot/hda_verb.h
+++ b/src/mainboard/google/parrot/hda_verb.c
@@ -32,7 +32,9 @@
  *  HDMI PatherPoint
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10ec0269,	// Codec Vendor / Device ID: Realtek ALC269
 	0x10250742,	// Subsystem ID
@@ -131,7 +133,7 @@
 	AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x00170500,	/* power up everything (codec, dac, adc, mixers)  */
 	0x01470740,	/* enable speaker out */
 	0x01470c02,	/* set speaker EAPD pin */
@@ -140,5 +142,4 @@
 	0x00b37410,	/* unmute mixer nid 0xb beep input and set volume */
 };
 
-static const u32 mainboard_pc_beep_verbs_size =
-	ARRAY_SIZE(mainboard_pc_beep_verbs);
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/google/parrot/mainboard.c b/src/mainboard/google/parrot/mainboard.c
index 440596f..547680e 100644
--- a/src/mainboard/google/parrot/mainboard.c
+++ b/src/mainboard/google/parrot/mainboard.c
@@ -36,8 +36,6 @@
 #include <smbios.h>
 #include <device/pci.h>
 #include <ec/compal/ene932/ec.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 void mainboard_suspend_resume(void)
 {
@@ -48,16 +46,7 @@
 	outb(0xe1, 0xb2);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
-
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -101,7 +90,6 @@
 	dev->ops->init = mainboard_init;
 	dev->ops->get_smbios_data = parrot_onboard_smbios_data;
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_EDP, GMA_INT15_PANEL_FIT_DEFAULT, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/google/peppy/hda_verb.h b/src/mainboard/google/peppy/hda_verb.c
similarity index 93%
rename from src/mainboard/google/peppy/hda_verb.h
rename to src/mainboard/google/peppy/hda_verb.c
index 9203522..a88d9f8 100644
--- a/src/mainboard/google/peppy/hda_verb.h
+++ b/src/mainboard/google/peppy/hda_verb.c
@@ -17,7 +17,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10ec0283,	// Codec Vendor / Device ID: Realtek ALC283
 	0x10ec0283,	// Subsystem ID
@@ -91,7 +93,7 @@
 	0x0204081b,
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x00170500,	/* power up everything (codec, dac, adc, mixers)  */
 	0x01470740,	/* enable speaker out */
 	0x01470c02,	/* set speaker EAPD pin */
@@ -100,5 +102,4 @@
 	0x00b37410,	/* unmute mixer nid 0xb beep input and set volume */
 };
 
-static const u32 mainboard_pc_beep_verbs_size =
-	sizeof(mainboard_pc_beep_verbs) / sizeof(mainboard_pc_beep_verbs[0]);
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/google/peppy/mainboard.c b/src/mainboard/google/peppy/mainboard.c
index 3fbec40..0ccf90d 100644
--- a/src/mainboard/google/peppy/mainboard.c
+++ b/src/mainboard/google/peppy/mainboard.c
@@ -33,10 +33,8 @@
 #include <arch/interrupt.h>
 #include <boot/coreboot_tables.h>
 #include <southbridge/intel/lynxpoint/pch.h>
-#include <device/azalia_device.h>
 #include "ec.h"
 #include "onboard.h"
-#include "hda_verb.h"
 
 void mainboard_suspend_resume(void)
 {
@@ -44,16 +42,7 @@
 	outb(0xcb, 0xb2);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
-
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -103,7 +92,6 @@
 	dev->ops->init = mainboard_init;
 	dev->ops->get_smbios_data = mainboard_smbios_data;
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_EDP, GMA_INT15_PANEL_FIT_CENTERING, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/google/samus/hda_verb.c b/src/mainboard/google/samus/hda_verb.c
new file mode 100644
index 0000000..072a306
--- /dev/null
+++ b/src/mainboard/google/samus/hda_verb.c
@@ -0,0 +1,7 @@
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[0] = {};
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/google/slippy/hda_verb.h b/src/mainboard/google/slippy/hda_verb.c
similarity index 92%
rename from src/mainboard/google/slippy/hda_verb.h
rename to src/mainboard/google/slippy/hda_verb.c
index b1f1cb6..68662c6 100644
--- a/src/mainboard/google/slippy/hda_verb.h
+++ b/src/mainboard/google/slippy/hda_verb.c
@@ -17,7 +17,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10ec0283,	// Codec Vendor / Device ID: Realtek ALC283
 	0x10ec0283,	// Subsystem ID
@@ -82,7 +84,7 @@
 	0x0204081b,
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x00170500,	/* power up everything (codec, dac, adc, mixers)  */
 	0x01470740,	/* enable speaker out */
 	0x01470c02,	/* set speaker EAPD pin */
@@ -91,5 +93,4 @@
 	0x00b37410,	/* unmute mixer nid 0xb beep input and set volume */
 };
 
-static const u32 mainboard_pc_beep_verbs_size =
-	sizeof(mainboard_pc_beep_verbs) / sizeof(mainboard_pc_beep_verbs[0]);
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/google/slippy/mainboard.c b/src/mainboard/google/slippy/mainboard.c
index 4ccb5f9..0ccf90d 100644
--- a/src/mainboard/google/slippy/mainboard.c
+++ b/src/mainboard/google/slippy/mainboard.c
@@ -35,8 +35,6 @@
 #include <southbridge/intel/lynxpoint/pch.h>
 #include "ec.h"
 #include "onboard.h"
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 void mainboard_suspend_resume(void)
 {
@@ -44,16 +42,7 @@
 	outb(0xcb, 0xb2);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
-
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -103,7 +92,6 @@
 	dev->ops->init = mainboard_init;
 	dev->ops->get_smbios_data = mainboard_smbios_data;
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_EDP, GMA_INT15_PANEL_FIT_CENTERING, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/google/stout/hda_verb.h b/src/mainboard/google/stout/hda_verb.c
similarity index 93%
rename from src/mainboard/google/stout/hda_verb.h
rename to src/mainboard/google/stout/hda_verb.c
index 43dae91..3fcd4f5 100644
--- a/src/mainboard/google/stout/hda_verb.h
+++ b/src/mainboard/google/stout/hda_verb.c
@@ -17,7 +17,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10ec0269,	// Codec Vendor / Device ID: Realtek
 	0x17aa21fe,	// Subsystem ID
@@ -82,7 +84,7 @@
 	AZALIA_PIN_CFG(0x3, 0x07, 0x58560030)
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x00170500,	/* power up everything (codec, dac, adc, mixers)  */
 	0x01470740,	/* enable speaker out */
 	0x01470c02,	/* set speaker EAPD pin */
@@ -90,5 +92,4 @@
 	0x00c37100,	/* unmute mixer nid 0xc input 1 */
 	0x00b37410,	/* unmute mixer nid 0xb beep input and set volume */
 };
-static const u32 mainboard_pc_beep_verbs_size =
-	ARRAY_SIZE(mainboard_pc_beep_verbs);
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/google/stout/mainboard.c b/src/mainboard/google/stout/mainboard.c
index 7562b5f..9bcbfe4 100644
--- a/src/mainboard/google/stout/mainboard.c
+++ b/src/mainboard/google/stout/mainboard.c
@@ -36,8 +36,6 @@
 #include <smbios.h>
 #include <device/pci.h>
 #include <ec/quanta/it8518/ec.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 void mainboard_suspend_resume(void)
 {
@@ -48,15 +46,7 @@
 	ec_write_cmd(EC_CMD_NOTIFY_ACPI_ENTER);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -84,7 +74,6 @@
 {
 	dev->ops->init = mainboard_init;
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS, GMA_INT15_PANEL_FIT_DEFAULT, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/ibase/mb899/hda_verb.c b/src/mainboard/ibase/mb899/hda_verb.c
new file mode 100644
index 0000000..072a306
--- /dev/null
+++ b/src/mainboard/ibase/mb899/hda_verb.c
@@ -0,0 +1,7 @@
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[0] = {};
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/ibase/mb899/mainboard.c b/src/mainboard/ibase/mb899/mainboard.c
index 6c80b42..a2a10a1 100644
--- a/src/mainboard/ibase/mb899/mainboard.c
+++ b/src/mainboard/ibase/mb899/mainboard.c
@@ -24,17 +24,9 @@
 #include <pc80/mc146818rtc.h>
 #include <arch/io.h>
 #include <arch/interrupt.h>
-#include <device/azalia_device.h>
 #include "superio_hwm.h"
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	// Default VERB is fine on this mainboard.
-	cim_verb_data = NULL;
-	cim_verb_data_size = 0;
-}
 
 // mainboard_enable is executed as first thing after
 // enumerate_buses().
@@ -42,7 +34,6 @@
 static void mainboard_enable(device_t dev)
 {
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS, GMA_INT15_PANEL_FIT_DEFAULT, GMA_INT15_BOOT_DISPLAY_DEFAULT, 3);
-	verb_setup();
 	hwm_setup();
 }
 
diff --git a/src/mainboard/intel/baskingridge/hda_verb.h b/src/mainboard/intel/baskingridge/hda_verb.c
similarity index 94%
rename from src/mainboard/intel/baskingridge/hda_verb.h
rename to src/mainboard/intel/baskingridge/hda_verb.c
index 2796e92..96770de 100644
--- a/src/mainboard/intel/baskingridge/hda_verb.h
+++ b/src/mainboard/intel/baskingridge/hda_verb.c
@@ -17,7 +17,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10134210,	// Codec Vendor / Device ID: Cirrus Logic CS4210
 	0x10134210,	// Subsystem ID
@@ -63,3 +65,7 @@
 	/* Pin Complex (NID 0x07) Digital Out at Int HDMI */
 	AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)
 };
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/intel/baskingridge/mainboard.c b/src/mainboard/intel/baskingridge/mainboard.c
index b4982f8..a6839fc 100644
--- a/src/mainboard/intel/baskingridge/mainboard.c
+++ b/src/mainboard/intel/baskingridge/mainboard.c
@@ -32,8 +32,6 @@
 #include <arch/interrupt.h>
 #include <boot/coreboot_tables.h>
 #include <southbridge/intel/lynxpoint/pch.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 void mainboard_suspend_resume(void)
 {
@@ -41,13 +39,7 @@
 	outb(0xcb, 0xb2);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-}
 
 // mainboard_enable is executed as first thing after
 // enumerate_buses().
@@ -55,7 +47,6 @@
 static void mainboard_enable(device_t dev)
 {
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_EDP, GMA_INT15_PANEL_FIT_CENTERING, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/intel/cougar_canyon2/hda_verb.h b/src/mainboard/intel/cougar_canyon2/hda_verb.c
similarity index 93%
rename from src/mainboard/intel/cougar_canyon2/hda_verb.h
rename to src/mainboard/intel/cougar_canyon2/hda_verb.c
index 381e338..c518b78 100644
--- a/src/mainboard/intel/cougar_canyon2/hda_verb.h
+++ b/src/mainboard/intel/cougar_canyon2/hda_verb.c
@@ -17,7 +17,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x80862805,	// Codec Vendor / Device ID: Intel CougarPoint HDMI
 	0x80860101,	// Subsystem ID
@@ -35,3 +37,4 @@
 	/* Pin Complex (NID 0x07) Digital Out at Int HDMI */
 	AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)
 };
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/intel/cougar_canyon2/mainboard.c b/src/mainboard/intel/cougar_canyon2/mainboard.c
index bb4806a..0ea03d3 100644
--- a/src/mainboard/intel/cougar_canyon2/mainboard.c
+++ b/src/mainboard/intel/cougar_canyon2/mainboard.c
@@ -32,8 +32,6 @@
 #include <arch/interrupt.h>
 #include <boot/coreboot_tables.h>
 #include <southbridge/intel/fsp_bd82x6x/pch.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 #if IS_ENABLED(CONFIG_HAVE_ACPI_RESUME)
 void mainboard_suspend_resume(void)
@@ -43,13 +41,7 @@
 }
 #endif
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-}
 
 // mainboard_enable is executed as first thing after
 // enumerate_buses().
@@ -57,7 +49,6 @@
 static void mainboard_enable(device_t dev)
 {
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_EDP, GMA_INT15_PANEL_FIT_CENTERING, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/intel/d945gclf/hda_verb.c b/src/mainboard/intel/d945gclf/hda_verb.c
new file mode 100644
index 0000000..072a306
--- /dev/null
+++ b/src/mainboard/intel/d945gclf/hda_verb.c
@@ -0,0 +1,7 @@
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[0] = {};
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/intel/baskingridge/hda_verb.h b/src/mainboard/intel/emeraldlake2/hda_verb.c
similarity index 94%
copy from src/mainboard/intel/baskingridge/hda_verb.h
copy to src/mainboard/intel/emeraldlake2/hda_verb.c
index 2796e92..96770de 100644
--- a/src/mainboard/intel/baskingridge/hda_verb.h
+++ b/src/mainboard/intel/emeraldlake2/hda_verb.c
@@ -17,7 +17,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10134210,	// Codec Vendor / Device ID: Cirrus Logic CS4210
 	0x10134210,	// Subsystem ID
@@ -63,3 +65,7 @@
 	/* Pin Complex (NID 0x07) Digital Out at Int HDMI */
 	AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)
 };
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/intel/emeraldlake2/hda_verb.h b/src/mainboard/intel/emeraldlake2/hda_verb.h
deleted file mode 100644
index 2796e92..0000000
--- a/src/mainboard/intel/emeraldlake2/hda_verb.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2011 The ChromiumOS Authors.  All rights reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-static const u32 mainboard_cim_verb_data[] = {
-	/* coreboot specific header */
-	0x10134210,	// Codec Vendor / Device ID: Cirrus Logic CS4210
-	0x10134210,	// Subsystem ID
-	0x00000007,	// Number of jacks
-
-	/* NID 0x01, HDA Codec Subsystem ID Verb Table: 0x10134210 */
-	AZALIA_SUBVENDOR(0x0, 0x10134210),
-
-	/* Pin Widget Verb Table */
-
-	/* Pin Complex (NID 0x05)     1/8   Gray  HP Out at Ext Front */
-	AZALIA_PIN_CFG(0x0, 0x05, 0x022120f0),
-
-	/* Pin Complex (NID 0x06)  Analog Unknown  Speaker at Int N/A */
-	AZALIA_PIN_CFG(0x0, 0x06, 0x90170010),
-
-	/* Pin Complex (NID 0x07)     1/8    Grey  Line In at Ext Front */
-	AZALIA_PIN_CFG(0x0, 0x07, 0x02a120f0),
-
-	/* Pin Complex (NID 0x08)  Analog Unknown  Mic at Oth Mobile-In */
-	AZALIA_PIN_CFG(0x0, 0x08, 0x77a70037),
-
-	/* Pin Complex (NID 0x09) Digital Unknown  Mic at Oth Mobile-In */
-	AZALIA_PIN_CFG(0x0, 0x09, 0x77a6003e),
-
-	/* Pin Complex (NID 0x0a) Optical   Black  SPDIF Out at Ext N/A */
-	AZALIA_PIN_CFG(0x0, 0x0a, 0x434510f0),
-
-	/* coreboot specific header */
-	0x80862805,	// Codec Vendor / Device ID: Intel CougarPoint HDMI
-	0x80860101,	// Subsystem ID
-	0x00000004,	// Number of jacks
-
-	/* NID 0x01, HDA Codec Subsystem ID Verb Table: 0x80860101 */
-	AZALIA_SUBVENDOR(0x0, 0x80860101),
-
-	/* Pin Complex (NID 0x05) Digital Out at Int HDMI */
-	AZALIA_PIN_CFG(0x3, 0x05, 0x18560010),
-
-	/* Pin Complex (NID 0x06) Digital Out at Int HDMI */
-	AZALIA_PIN_CFG(0x3, 0x06, 0x18560020),
-
-	/* Pin Complex (NID 0x07) Digital Out at Int HDMI */
-	AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)
-};
diff --git a/src/mainboard/intel/emeraldlake2/mainboard.c b/src/mainboard/intel/emeraldlake2/mainboard.c
index 3dc8594..347ce8a 100644
--- a/src/mainboard/intel/emeraldlake2/mainboard.c
+++ b/src/mainboard/intel/emeraldlake2/mainboard.c
@@ -32,8 +32,6 @@
 #include <arch/interrupt.h>
 #include <boot/coreboot_tables.h>
 #include <southbridge/intel/bd82x6x/pch.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 void mainboard_suspend_resume(void)
 {
@@ -41,13 +39,7 @@
 	outb(0xcb, 0xb2);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-}
 
 // mainboard_enable is executed as first thing after
 // enumerate_buses().
@@ -55,7 +47,6 @@
 static void mainboard_enable(device_t dev)
 {
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_EDP, GMA_INT15_PANEL_FIT_CENTERING, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/intel/wtm2/hda_verb.h b/src/mainboard/intel/wtm2/hda_verb.c
similarity index 94%
rename from src/mainboard/intel/wtm2/hda_verb.h
rename to src/mainboard/intel/wtm2/hda_verb.c
index 4875035..c18e79b 100644
--- a/src/mainboard/intel/wtm2/hda_verb.h
+++ b/src/mainboard/intel/wtm2/hda_verb.c
@@ -17,7 +17,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10134210,	// Codec Vendor / Device ID: Cirrus Logic CS4210
 	0x10134210,	// Subsystem ID
@@ -63,3 +65,7 @@
 	/* Pin Complex (NID 0x07) Digital Out at Int HDMI */
 	AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)
 };
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/intel/wtm2/mainboard.c b/src/mainboard/intel/wtm2/mainboard.c
index b4982f8..a6839fc 100644
--- a/src/mainboard/intel/wtm2/mainboard.c
+++ b/src/mainboard/intel/wtm2/mainboard.c
@@ -32,8 +32,6 @@
 #include <arch/interrupt.h>
 #include <boot/coreboot_tables.h>
 #include <southbridge/intel/lynxpoint/pch.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 void mainboard_suspend_resume(void)
 {
@@ -41,13 +39,7 @@
 	outb(0xcb, 0xb2);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-}
 
 // mainboard_enable is executed as first thing after
 // enumerate_buses().
@@ -55,7 +47,6 @@
 static void mainboard_enable(device_t dev)
 {
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_EDP, GMA_INT15_PANEL_FIT_CENTERING, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/iwave/iWRainbowG6/hda_verb.h b/src/mainboard/iwave/iWRainbowG6/hda_verb.c
similarity index 98%
rename from src/mainboard/iwave/iWRainbowG6/hda_verb.h
rename to src/mainboard/iwave/iWRainbowG6/hda_verb.c
index 6799c12..4cb2c9f 100644
--- a/src/mainboard/iwave/iWRainbowG6/hda_verb.h
+++ b/src/mainboard/iwave/iWRainbowG6/hda_verb.c
@@ -89,3 +89,4 @@
 	/* BTL Gain */
 	0x017F417, /* Gain = 16.79dB */
 };
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/iwave/iWRainbowG6/mainboard.c b/src/mainboard/iwave/iWRainbowG6/mainboard.c
index 0b84f68..dfc6636 100644
--- a/src/mainboard/iwave/iWRainbowG6/mainboard.c
+++ b/src/mainboard/iwave/iWRainbowG6/mainboard.c
@@ -20,18 +20,10 @@
 
 #include <device/device.h>
 #include <console/console.h>
-#include <device/azalia_device.h>
-#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);
-}
 
 static void mainboard_enable(device_t dev)
 {
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/kontron/986lcd-m/hda_verb.c b/src/mainboard/kontron/986lcd-m/hda_verb.c
new file mode 100644
index 0000000..072a306
--- /dev/null
+++ b/src/mainboard/kontron/986lcd-m/hda_verb.c
@@ -0,0 +1,7 @@
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[0] = {};
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/kontron/986lcd-m/mainboard.c b/src/mainboard/kontron/986lcd-m/mainboard.c
index 10bba69af..afca7960 100644
--- a/src/mainboard/kontron/986lcd-m/mainboard.c
+++ b/src/mainboard/kontron/986lcd-m/mainboard.c
@@ -24,7 +24,6 @@
 #include <pc80/mc146818rtc.h>
 #include <arch/io.h>
 #include <arch/interrupt.h>
-#include <device/azalia_device.h>
 
 /* Hardware Monitor */
 
@@ -160,14 +159,7 @@
 	hwm_write(0x40, 0x01); // Init, but no SMI#
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	// Default VERB is fine on this mainboard.
-	cim_verb_data = NULL;
-	cim_verb_data_size = 0;
-}
 
 // mainboard_enable is executed as first thing after
 // enumerate_buses().
@@ -175,7 +167,6 @@
 static void mainboard_enable(device_t dev)
 {
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS, GMA_INT15_PANEL_FIT_DEFAULT, GMA_INT15_BOOT_DISPLAY_DEFAULT, 3);
-	verb_setup();
 	hwm_setup();
 }
 
diff --git a/src/mainboard/kontron/ktqm77/hda_verb.h b/src/mainboard/kontron/ktqm77/hda_verb.c
similarity index 95%
rename from src/mainboard/kontron/ktqm77/hda_verb.h
rename to src/mainboard/kontron/ktqm77/hda_verb.c
index ccec18c..c957c25 100644
--- a/src/mainboard/kontron/ktqm77/hda_verb.h
+++ b/src/mainboard/kontron/ktqm77/hda_verb.c
@@ -18,7 +18,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x11060397,	// Codec Vendor / Device ID: Via VT1708S
 	0x11060000,	// Subsystem ID
@@ -113,3 +115,7 @@
 	/* Pin Complex (NID 0x07) Digital Out at Int HDMI */
 	AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)
 };
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/kontron/ktqm77/mainboard.c b/src/mainboard/kontron/ktqm77/mainboard.c
index c09082a..715ec56 100644
--- a/src/mainboard/kontron/ktqm77/mainboard.c
+++ b/src/mainboard/kontron/ktqm77/mainboard.c
@@ -34,8 +34,6 @@
 #include <arch/interrupt.h>
 #include <boot/coreboot_tables.h>
 #include <southbridge/intel/bd82x6x/pch.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 void mainboard_suspend_resume(void)
 {
@@ -169,13 +167,7 @@
 }
 #endif
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-}
 
 // mainboard_enable is executed as first thing after
 // enumerate_buses().
@@ -186,7 +178,6 @@
 	/* Install custom int15 handler for VGA OPROM */
 	mainboard_interrupt_handlers(0x15, &int15_handler);
 #endif
-	verb_setup();
 
 	unsigned disable = 0;
 	if ((get_option(&disable, "ethernet1") == CB_SUCCESS) && disable) {
diff --git a/src/mainboard/lenovo/t520/hda_verb.h b/src/mainboard/lenovo/t520/hda_verb.c
similarity index 97%
rename from src/mainboard/lenovo/t520/hda_verb.h
rename to src/mainboard/lenovo/t520/hda_verb.c
index 19eac1b..dd776fc 100644
--- a/src/mainboard/lenovo/t520/hda_verb.h
+++ b/src/mainboard/lenovo/t520/hda_verb.c
@@ -25,7 +25,9 @@
  */
 
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x14f1506e,	// Codec Vendor / Device ID: Conexant CX20590 - Schematic shows CX20672
 	0x17aa21cf,	// Subsystem ID
@@ -181,9 +183,8 @@
 		0x00170500, /* Set power state to D0 */
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x02177a00, /* Digital PCBEEP Gain: 0h=-9db, 1h=-6db ... 4h=+3db, 5h=+6db */
 };
 
-static const u32 mainboard_pc_beep_verbs_size =
-	ARRAY_SIZE(mainboard_pc_beep_verbs);
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/lenovo/t520/mainboard.c b/src/mainboard/lenovo/t520/mainboard.c
index afa0ecf..387bbe0 100644
--- a/src/mainboard/lenovo/t520/mainboard.c
+++ b/src/mainboard/lenovo/t520/mainboard.c
@@ -37,8 +37,6 @@
 #include <cbfs.h>
 #include <pc80/keyboard.h>
 #include <ec/lenovo/h8/h8.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 void mainboard_suspend_resume(void)
 {
@@ -46,16 +44,7 @@
 	outb(0xcb, 0xb2);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
-
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -80,7 +69,6 @@
 {
 	dev->ops->init = mainboard_init;
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS, GMA_INT15_PANEL_FIT_DEFAULT, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 void h8_mainboard_init_dock (void)
diff --git a/src/mainboard/lenovo/t530/hda_verb.h b/src/mainboard/lenovo/t530/hda_verb.c
similarity index 97%
rename from src/mainboard/lenovo/t530/hda_verb.h
rename to src/mainboard/lenovo/t530/hda_verb.c
index f04eae7..29f8a45 100644
--- a/src/mainboard/lenovo/t530/hda_verb.h
+++ b/src/mainboard/lenovo/t530/hda_verb.c
@@ -25,7 +25,9 @@
  */
 
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
   	0x10ec0269,	// Codec Vendor / Device ID: Realtek ALC269VC
   	0x17aa21fa,	// Subsystem ID
@@ -243,9 +245,8 @@
 	AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x02177a00, /* Digital PCBEEP Gain: 0h=-9db, 1h=-6db ... 4h=+3db, 5h=+6db */
 };
 
-static const u32 mainboard_pc_beep_verbs_size =
-	ARRAY_SIZE(mainboard_pc_beep_verbs);
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/lenovo/t530/mainboard.c b/src/mainboard/lenovo/t530/mainboard.c
index e21dc98..f8c9dae 100644
--- a/src/mainboard/lenovo/t530/mainboard.c
+++ b/src/mainboard/lenovo/t530/mainboard.c
@@ -37,8 +37,6 @@
 #include <cbfs.h>
 #include <pc80/keyboard.h>
 #include <ec/lenovo/h8/h8.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 void mainboard_suspend_resume(void)
 {
@@ -46,16 +44,7 @@
 	outb(0xcb, 0xb2);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
-
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -85,7 +74,6 @@
 	dev->ops->init = mainboard_init;
 
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS, GMA_INT15_PANEL_FIT_DEFAULT, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 void h8_mainboard_init_dock (void)
diff --git a/src/mainboard/lenovo/t60/hda_verb.c b/src/mainboard/lenovo/t60/hda_verb.c
new file mode 100644
index 0000000..072a306
--- /dev/null
+++ b/src/mainboard/lenovo/t60/hda_verb.c
@@ -0,0 +1,7 @@
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[0] = {};
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/lenovo/x200/hda_verb.h b/src/mainboard/lenovo/x200/hda_verb.c
similarity index 93%
rename from src/mainboard/lenovo/x200/hda_verb.h
rename to src/mainboard/lenovo/x200/hda_verb.c
index 3d92258..c1cd542 100644
--- a/src/mainboard/lenovo/x200/hda_verb.h
+++ b/src/mainboard/lenovo/x200/hda_verb.c
@@ -18,7 +18,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x14f15051,	// Conexant CX20561 (Hermosa)
 	0x17aa20ff,	// Subsystem ID
@@ -36,7 +38,7 @@
 	AZALIA_PIN_CFG(0, 0x1d, 0x90a601f0)
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x00170500,	/* power up codec */
 	0x01470500,	/* power up speakers */
 	0x01470100,	/* select lout1 (input 0x0) for speakers */
@@ -46,3 +48,4 @@
 	0x00c3b015,	/* set lout1 output volume -15dB */
 	0x0143b000,	/* unmute speakers */
 };
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/lenovo/x200/mainboard.c b/src/mainboard/lenovo/x200/mainboard.c
index 6c13eed..37bd152 100644
--- a/src/mainboard/lenovo/x200/mainboard.c
+++ b/src/mainboard/lenovo/x200/mainboard.c
@@ -32,23 +32,13 @@
 #include <ec/lenovo/pmh7/pmh7.h>
 #include <ec/acpi/ec.h>
 #include <ec/lenovo/h8/h8.h>
-#include <device/azalia_device.h>
 
-#include "hda_verb.h"
 
 #if CONFIG_GENERATE_ACPI_TABLES
 #include "cstates.c" /* Include it, as the linker won't find
 			the overloaded weak function in there. */
 #endif
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = ARRAY_SIZE(mainboard_pc_beep_verbs);
-}
-
 const char *smbios_mainboard_bios_version(void)
 {
 	/* Satisfy thinkpad_acpi.  */
@@ -68,7 +58,6 @@
 
 static void mainboard_enable(device_t dev)
 {
-	verb_setup();
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS, GMA_INT15_PANEL_FIT_CENTERING, GMA_INT15_BOOT_DISPLAY_DEFAULT, 2);
 
 	dev->ops->init = mainboard_init;
diff --git a/src/mainboard/lenovo/x201/hda_verb.h b/src/mainboard/lenovo/x201/hda_verb.c
similarity index 94%
rename from src/mainboard/lenovo/x201/hda_verb.h
rename to src/mainboard/lenovo/x201/hda_verb.c
index 1706929..22634f0 100644
--- a/src/mainboard/lenovo/x201/hda_verb.h
+++ b/src/mainboard/lenovo/x201/hda_verb.c
@@ -18,7 +18,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x14F15069,	/* Codec Vendor / Device ID: Conexant CX20585 */
 	0x17AA2155,	/* Subsystem ID  */
@@ -73,3 +75,7 @@
 	/* NID 0x06.  */
 	AZALIA_PIN_CFG(0x3, 0x06, 0x58560030),
 };
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/lenovo/x201/mainboard.c b/src/mainboard/lenovo/x201/mainboard.c
index fb8c1d5..57ef86d 100644
--- a/src/mainboard/lenovo/x201/mainboard.c
+++ b/src/mainboard/lenovo/x201/mainboard.c
@@ -35,11 +35,9 @@
 #include <ec/lenovo/h8/h8.h>
 #include <northbridge/intel/nehalem/nehalem.h>
 #include <southbridge/intel/bd82x6x/pch.h>
-#include <device/azalia_device.h>
 
 #include <pc80/mc146818rtc.h>
 #include "dock.h"
-#include "hda_verb.h"
 #include <arch/x86/include/arch/acpigen.h>
 #include <drivers/intel/gma/int15.h>
 #include <arch/interrupt.h>
@@ -71,13 +69,7 @@
 		return "CBET4000 " COREBOOT_VERSION;
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -155,7 +147,6 @@
 
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS, GMA_INT15_PANEL_FIT_DEFAULT, GMA_INT15_BOOT_DISPLAY_LFP, 2);
 
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/lenovo/x220/hda_verb.h b/src/mainboard/lenovo/x220/hda_verb.c
similarity index 97%
rename from src/mainboard/lenovo/x220/hda_verb.h
rename to src/mainboard/lenovo/x220/hda_verb.c
index ce980fc..c3d1372 100644
--- a/src/mainboard/lenovo/x220/hda_verb.h
+++ b/src/mainboard/lenovo/x220/hda_verb.c
@@ -25,7 +25,9 @@
  */
 
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
   	0x14f1506e,	// Codec Vendor / Device ID: Conexant CX20590
   	0x17aa21db,	// Subsystem ID
@@ -205,9 +207,8 @@
 	AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x02177a00, /* Digital PCBEEP Gain: 0h=-9db, 1h=-6db ... 4h=+3db, 5h=+6db */
 };
 
-static const u32 mainboard_pc_beep_verbs_size =
-	ARRAY_SIZE(mainboard_pc_beep_verbs);
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/lenovo/x220/mainboard.c b/src/mainboard/lenovo/x220/mainboard.c
index ffc99bd..87fedfe 100644
--- a/src/mainboard/lenovo/x220/mainboard.c
+++ b/src/mainboard/lenovo/x220/mainboard.c
@@ -38,8 +38,6 @@
 #include <pc80/keyboard.h>
 #include <ec/lenovo/h8/h8.h>
 #include <build.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 void mainboard_suspend_resume(void)
 {
@@ -56,16 +54,7 @@
 		return "CBET4000 " COREBOOT_VERSION;
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
-
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -95,7 +84,6 @@
 	dev->ops->init = mainboard_init;
 
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS, GMA_INT15_PANEL_FIT_DEFAULT, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 void h8_mainboard_init_dock (void)
diff --git a/src/mainboard/lenovo/t530/hda_verb.h b/src/mainboard/lenovo/x230/hda_verb.c
similarity index 97%
copy from src/mainboard/lenovo/t530/hda_verb.h
copy to src/mainboard/lenovo/x230/hda_verb.c
index f04eae7..29f8a45 100644
--- a/src/mainboard/lenovo/t530/hda_verb.h
+++ b/src/mainboard/lenovo/x230/hda_verb.c
@@ -25,7 +25,9 @@
  */
 
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
   	0x10ec0269,	// Codec Vendor / Device ID: Realtek ALC269VC
   	0x17aa21fa,	// Subsystem ID
@@ -243,9 +245,8 @@
 	AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x02177a00, /* Digital PCBEEP Gain: 0h=-9db, 1h=-6db ... 4h=+3db, 5h=+6db */
 };
 
-static const u32 mainboard_pc_beep_verbs_size =
-	ARRAY_SIZE(mainboard_pc_beep_verbs);
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/lenovo/x230/hda_verb.h b/src/mainboard/lenovo/x230/hda_verb.h
deleted file mode 100644
index f04eae7..0000000
--- a/src/mainboard/lenovo/x230/hda_verb.h
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2011 The ChromiumOS Authors.  All rights reserved.
- * Copyright (C) 2014 Vladimir Serbinenko
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/*	Vendor Name    : IDT
- *	Vendor ID      : 0x10ec0269
- *	Subsystem ID   : 0x17aa21fa
- *	Revision ID    : 0x100303
- */
-
-
-static const u32 mainboard_cim_verb_data[] = {
-	/* coreboot specific header */
-  	0x10ec0269,	// Codec Vendor / Device ID: Realtek ALC269VC
-  	0x17aa21fa,	// Subsystem ID
-	0x0000007d,	// Number of 4 dword sets
-
-/* Bits 31:28 - Codec Address */
-/* Bits 27:20 - NID */
-/* Bits 19:8 - Verb ID */
-/* Bits 7:0  - Payload */
-
-/* NID 0x01 - NodeInfo */
-	AZALIA_SUBVENDOR(0x0, 0x17AA21FA),
-
-/* NID 0x0A - External Microphone Connector
- * Config=0x04A11020 (External,Right; MicIn,3.5mm; Black,JD; DA,Seq)
- */
-	AZALIA_PIN_CFG(0x0, 0x0A, 0x04A11020),
-
-/* NID 0x0B - Headphone Connector
- * Config=0x0421101F (External,Right; HP,3.5mm; Black,JD; DA,Seq)
- */
-	AZALIA_PIN_CFG(0x0, 0x0B, 0x0421101F),
-
-/* NID 0x0C - Not connected
- * Config=0x40F000F0 (N/A,N/A; Other,Unknown; Unknown,JD; DA,Seq)
- */
-	AZALIA_PIN_CFG(0x0, 0x0C, 0x40F000F0),
-
-/* NID 0x0D - Internal Speakers
- * Config=0x90170110 (Fixed,Int; Speaker,Other Analog; Unknown,nJD; DA,Seq)
- */
-	AZALIA_PIN_CFG(0x0, 0x0D, 0x90170110),
-
-/* NID 0x0F - Not connected
- * Config=0x40F000F0
- */
-	AZALIA_PIN_CFG(0x0, 0x0F, 0x40F000F0),
-
-/* NID 0x11 - Internal Microphone
- * Config=0xD5A30140 (Fixed internal,Top; Mic In,ATIPI; Unknown,nJD; DA,Seq)
- */
-	AZALIA_PIN_CFG(0x0, 0x11, 0xD5A30140),
-	AZALIA_PIN_CFG(0x0, 0x12, 0x90A60140),
-	AZALIA_PIN_CFG(0x0, 0x14, 0x90170110),
-	AZALIA_PIN_CFG(0x0, 0x15, 0x03211020),
-	AZALIA_PIN_CFG(0x0, 0x18, 0x03A11830),
-	AZALIA_PIN_CFG(0x0, 0x19, 0x411111F0),
-
-	0x01970804,
-	0x01870803,
-	0x01470740,
-	0x00970600,
-
-	0x00370600,
-	0x00270600,
-	0x00270600,
-	0x00270600,
-
-	AZALIA_PIN_CFG(0x0, 0x1A, 0x411111F0),
-	AZALIA_PIN_CFG(0x0, 0x1D, 0x40138205),
-	AZALIA_PIN_CFG(0x0, 0x1E, 0x411111F0),
-
-	/*
-	 * Hardware EQ Parameters
-	 * Sample Rate 88200
-	 */
-	0x0227A63F,	0x0227A73E,	0x0227A8EB,	0x0227A93F,
-	0x0227AA3E,	0x0227ABEB,	0x0227AC00,	0x0227AD80,
-	0x0227A681,	0x0227A782,	0x0227A829,	0x0227A981,
-	0x0227AA82,	0x0227AB29,	0x0227AC01,	0x0227AD80,
-	0x0227A63F,	0x0227A73E,	0x0227A8EB,	0x0227A93F,
-	0x0227AA3E,	0x0227ABEB,	0x0227AC02,	0x0227AD80,
-	0x0227A67E,	0x0227A77B,	0x0227A846,	0x0227A97E,
-	0x0227AA7B,	0x0227AB46,	0x0227AC03,	0x0227AD80,
-	0x0227A6C1,	0x0227A77F,	0x0227A898,	0x0227A9C1,
-	0x0227AA7F,	0x0227AB98,	0x0227AC04,	0x0227AD80,
-	0x0227A63E,	0x0227A7D1,	0x0227A84F,	0x0227A93E,
-	0x0227AAD1,	0x0227AB4F,	0x0227AC05,	0x0227AD80,
-	0x0227A683,	0x0227A7BE,	0x0227A855,	0x0227A983,
-	0x0227AABE,	0x0227AB55,	0x0227AC06,	0x0227AD80,
-	0x0227A63D,	0x0227A7B9,	0x0227A856,	0x0227A93D,
-	0x0227AAB9,	0x0227AB56,	0x0227AC07,	0x0227AD80,
-	0x0227A67C,	0x0227A741,	0x0227A8AB,	0x0227A97C,
-	0x0227AA41,	0x0227ABAB,	0x0227AC08,	0x0227AD80,
-	0x0227A6C3,	0x0227A775,	0x0227A85A,	0x0227A9C3,
-	0x0227AA75,	0x0227AB5A,	0x0227AC09,	0x0227AD80,
-	0x0227A63F,	0x0227A79E,	0x0227A829,	0x0227A93F,
-	0x0227AA9E,	0x0227AB29,	0x0227AC0A,	0x0227AD80,
-	0x0227A682,	0x0227A7E3,	0x0227A867,	0x0227A982,
-	0x0227AAE3,	0x0227AB67,	0x0227AC0B,	0x0227AD80,
-	0x0227A63E,	0x0227A74F,	0x0227A89D,	0x0227A93E,
-	0x0227AA4F,	0x0227AB9D,	0x0227AC0C,	0x0227AD80,
-	0x0227A67D,	0x0227A71C,	0x0227A899,	0x0227A97D,
-	0x0227AA1C,	0x0227AB99,	0x0227AC0D,	0x0227AD80,
-	0x0227A6C2,	0x0227A712,	0x0227A839,	0x0227A9C2,
-	0x0227AA12,	0x0227AB39,	0x0227AC0E,	0x0227AD80,
-	0x0227A63F,	0x0227A708,	0x0227A856,	0x0227A93F,
-	0x0227AA08,	0x0227AB56,	0x0227AC0F,	0x0227AD80,
-	0x0227A68E,	0x0227A7ED,	0x0227A89D,	0x0227A98E,
-	0x0227AAED,	0x0227AB9D,	0x0227AC10,	0x0227AD80,
-	0x0227A637,	0x0227A78F,	0x0227A853,	0x0227A937,
-	0x0227AA8F,	0x0227AB53,	0x0227AC11,	0x0227AD80,
-	0x0227A671,	0x0227A712,	0x0227A863,	0x0227A971,
-	0x0227AA12,	0x0227AB63,	0x0227AC12,	0x0227AD80,
-	0x0227A6C9,	0x0227A768,	0x0227A856,	0x0227A9C9,
-	0x0227AA68,	0x0227AB56,	0x0227AC13,	0x0227AD80,
-	0x0227A642,	0x0227A709,	0x0227A838,	0x0227A942,
-	0x0227AA09,	0x0227AB38,	0x0227AC14,	0x0227AD80,
-	0x0227A69C,	0x0227A78A,	0x0227A867,	0x0227A99C,
-	0x0227AA8A,	0x0227AB67,	0x0227AC15,	0x0227AD80,
-	0x0227A634,	0x0227A717,	0x0227A8E3,	0x0227A934,
-	0x0227AA17,	0x0227ABE3,	0x0227AC16,	0x0227AD80,
-	0x0227A663,	0x0227A775,	0x0227A899,	0x0227A963,
-	0x0227AA75,	0x0227AB99,	0x0227AC17,	0x0227AD80,
-	0x0227A6C9,	0x0227A7DE,	0x0227A8E5,	0x0227A9C9,
-	0x0227AADE,	0x0227ABE5,	0x0227AC18,	0x0227AD80,
-	0x0227A640,	0x0227A700,	0x0227A800,	0x0227A940,
-	0x0227AA00,	0x0227AB00,	0x0227AC19,	0x0227AD80,
-
-	/*
-	 * Hardware EQ Parameters
-	 * Sample Rate 96000
-	 */
-	0x0227A63F,	0x0227A74E,	0x0227A888,	0x0227A93F,
-	0x0227AA4E,	0x0227AB88,	0x0227AC1A,	0x0227AD80,
-	0x0227A681,	0x0227A762,	0x0227A8EE,	0x0227A981,
-	0x0227AA62,	0x0227ABEE,	0x0227AC1B,	0x0227AD80,
-	0x0227A63F,	0x0227A74E,	0x0227A888,	0x0227A93F,
-	0x0227AA4E,	0x0227AB88,	0x0227AC1C,	0x0227AD80,
-	0x0227A67E,	0x0227A79A,	0x0227A8E7,	0x0227A97E,
-	0x0227AA9A,	0x0227ABE7,	0x0227AC1D,	0x0227AD80,
-	0x0227A6C1,	0x0227A760,	0x0227A8C3,	0x0227A9C1,
-	0x0227AA60,	0x0227ABC3,	0x0227AC1E,	0x0227AD80,
-	0x0227A63E,	0x0227A7E9,	0x0227A84B,	0x0227A93E,
-	0x0227AAE9,	0x0227AB4B,	0x0227AC1F,	0x0227AD80,
-	0x0227A683,	0x0227A76C,	0x0227A8F2,	0x0227A983,
-	0x0227AA6C,	0x0227ABF2,	0x0227AC20,	0x0227AD80,
-	0x0227A63D,	0x0227A7E7,	0x0227A880,	0x0227A93D,
-	0x0227AAE7,	0x0227AB80,	0x0227AC21,	0x0227AD80,
-	0x0227A67C,	0x0227A793,	0x0227A80E,	0x0227A97C,
-	0x0227AA93,	0x0227AB0E,	0x0227AC22,	0x0227AD80,
-	0x0227A6C3,	0x0227A72F,	0x0227A835,	0x0227A9C3,
-	0x0227AA2F,	0x0227AB35,	0x0227AC23,	0x0227AD80,
-	0x0227A63F,	0x0227A7A5,	0x0227A8FE,	0x0227A93F,
-	0x0227AAA5,	0x0227ABFE,	0x0227AC24,	0x0227AD80,
-	0x0227A682,	0x0227A798,	0x0227A89D,	0x0227A982,
-	0x0227AA98,	0x0227AB9D,	0x0227AC25,	0x0227AD80,
-	0x0227A63E,	0x0227A772,	0x0227A839,	0x0227A93E,
-	0x0227AA72,	0x0227AB39,	0x0227AC26,	0x0227AD80,
-	0x0227A67D,	0x0227A767,	0x0227A863,	0x0227A97D,
-	0x0227AA67,	0x0227AB63,	0x0227AC27,	0x0227AD80,
-	0x0227A6C1,	0x0227A7E7,	0x0227A8C8,	0x0227A9C1,
-	0x0227AAE7,	0x0227ABC8,	0x0227AC28,	0x0227AD80,
-	0x0227A63F,	0x0227A71B,	0x0227A81A,	0x0227A93F,
-	0x0227AA1B,	0x0227AB1A,	0x0227AC29,	0x0227AD80,
-	0x0227A68D,	0x0227A763,	0x0227A872,	0x0227A98D,
-	0x0227AA63,	0x0227AB72,	0x0227AC2A,	0x0227AD80,
-	0x0227A638,	0x0227A733,	0x0227A809,	0x0227A938,
-	0x0227AA33,	0x0227AB09,	0x0227AC2B,	0x0227AD80,
-	0x0227A672,	0x0227A79C,	0x0227A88E,	0x0227A972,
-	0x0227AA9C,	0x0227AB8E,	0x0227AC2C,	0x0227AD80,
-	0x0227A6C8,	0x0227A7B1,	0x0227A8DD,	0x0227A9C8,
-	0x0227AAB1,	0x0227ABDD,	0x0227AC2D,	0x0227AD80,
-	0x0227A641,	0x0227A7E1,	0x0227A8D8,	0x0227A941,
-	0x0227AAE1,	0x0227ABD8,	0x0227AC2E,	0x0227AD80,
-	0x0227A699,	0x0227A70D,	0x0227A820,	0x0227A999,
-	0x0227AA0D,	0x0227AB20,	0x0227AC2F,	0x0227AD80,
-	0x0227A634,	0x0227A7FE,	0x0227A823,	0x0227A934,
-	0x0227AAFE,	0x0227AB23,	0x0227AC30,	0x0227AD80,
-	0x0227A666,	0x0227A7F2,	0x0227A8E0,	0x0227A966,
-	0x0227AAF2,	0x0227ABE0,	0x0227AC31,	0x0227AD80,
-	0x0227A6C9,	0x0227A720,	0x0227A804,	0x0227A9C9,
-	0x0227AA20,	0x0227AB04,	0x0227AC32,	0x0227AD80,
-	0x0227A640,	0x0227A700,	0x0227A800,	0x0227A940,
-	0x0227AA00,	0x0227AB00,	0x0227AC33,	0x0227AD80,
-
-	/* SAFEDSP Parameters */
-	0x022782C1,	0x02277127,	0x02277227,	0x02278801,
-	0x02278C58,	0x02278E90,	0x0227890A,	0x02278A14,
-	0x02278B0F,	0x0017B008,
-
-	/* Misc entries */
-		0x00B707C0, /* Enable PortB as Output with HP amp */
-		0x00D70740, /* Enable PortD as Output */
-		0x0017A200, /* Disable ClkEn of PortSenseTst */
-		0x0017C621, /* Slave Port - Port A used as microphone input for
-		                            combo Jack
-		               Master Port - Port B used for Jack Presence Detect
-		               Enable Combo Jack Detection */
-		0x0017A208, /* Enable ClkEn of PortSenseTst */
-		0x00170500, /* Set power state to D0 */
-
-	/* --- Next Codec --- */
-
-/*	Vendor Name    : Intel
- *	Vendor ID      : 0x80862806
- *	Subsystem ID   : 0x80860101
- *	Revision ID    : 0x100000
- */
-	/* coreboot specific header */
-	0x80862806,	// Codec Vendor / Device ID: Intel PantherPoint HDMI
-	0x80860101,	// Subsystem ID
-	0x00000004,	// Number of IDs
-
-	/* NID 0x01, HDA Codec Subsystem ID Verb Table: 0x80860101 */
-	AZALIA_SUBVENDOR(0x3, 0x80860101),
-
-	/* Pin Complex (NID 0x05) Digital Out at Int HDMI */
-	AZALIA_PIN_CFG(0x3, 0x05, 0x18560010),
-
-	/* Pin Complex (NID 0x06) Digital Out at Int HDMI */
-	AZALIA_PIN_CFG(0x3, 0x06, 0x18560020),
-
-	/* Pin Complex (NID 0x07) Digital Out at Int HDMI */
-	AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)
-};
-
-static const u32 mainboard_pc_beep_verbs[] = {
-	0x02177a00, /* Digital PCBEEP Gain: 0h=-9db, 1h=-6db ... 4h=+3db, 5h=+6db */
-};
-
-static const u32 mainboard_pc_beep_verbs_size =
-	ARRAY_SIZE(mainboard_pc_beep_verbs);
diff --git a/src/mainboard/lenovo/x230/mainboard.c b/src/mainboard/lenovo/x230/mainboard.c
index 5da7480..7d9c456 100644
--- a/src/mainboard/lenovo/x230/mainboard.c
+++ b/src/mainboard/lenovo/x230/mainboard.c
@@ -38,8 +38,6 @@
 #include <pc80/keyboard.h>
 #include <ec/lenovo/h8/h8.h>
 #include <build.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 void mainboard_suspend_resume(void)
 {
@@ -56,16 +54,7 @@
 		return "CBET4000 " COREBOOT_VERSION;
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
-
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -95,7 +84,6 @@
 	dev->ops->init = mainboard_init;
 
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS, GMA_INT15_PANEL_FIT_DEFAULT, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 void h8_mainboard_init_dock (void)
diff --git a/src/mainboard/lenovo/x60/hda_verb.c b/src/mainboard/lenovo/x60/hda_verb.c
new file mode 100644
index 0000000..072a306
--- /dev/null
+++ b/src/mainboard/lenovo/x60/hda_verb.c
@@ -0,0 +1,7 @@
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[0] = {};
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/msi/ms7260/mainboard.c b/src/mainboard/msi/ms7260/mainboard.c
index 226925f..492693a 100644
--- a/src/mainboard/msi/ms7260/mainboard.c
+++ b/src/mainboard/msi/ms7260/mainboard.c
@@ -19,20 +19,12 @@
  */
 
 #include <device/device.h>
-#include <device/azalia_device.h>
 
 #if 0
-#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);
-}
 
 static void mainboard_enable(device_t dev)
 {
-	verb_setup();
 }
 #endif
 
diff --git a/src/mainboard/msi/ms9282/mainboard.c b/src/mainboard/msi/ms9282/mainboard.c
index 5d80b8a..c7e459a 100644
--- a/src/mainboard/msi/ms9282/mainboard.c
+++ b/src/mainboard/msi/ms9282/mainboard.c
@@ -24,18 +24,10 @@
 #include <device/pci.h>
 #include <device/pci_ids.h>
 #include <device/pci_ops.h>
-// #include "hda_verb.h"
 
-static void verb_setup(void)
-{
-	/* TODO: Add a correct hda_verb.h file for this board. */
-	// cim_verb_data = mainboard_cim_verb_data;
-	// cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-}
 
 static void mainboard_enable(device_t dev)
 {
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/msi/ms9652_fam10/mainboard.c b/src/mainboard/msi/ms9652_fam10/mainboard.c
index 316a962..96760d6 100644
--- a/src/mainboard/msi/ms9652_fam10/mainboard.c
+++ b/src/mainboard/msi/ms9652_fam10/mainboard.c
@@ -24,19 +24,10 @@
 #include <device/pci.h>
 #include <device/pci_ids.h>
 #include <device/pci_ops.h>
-#include <device/azalia_device.h>
-// #include "hda_verb.h"
 
-static void verb_setup(void)
-{
-	/* TODO: Add a correct hda_verb.h file for this board. */
-	// cim_verb_data = mainboard_cim_verb_data;
-	// cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-}
 
 static void mainboard_enable(device_t dev)
 {
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/nvidia/l1_2pvv/hda_verb.h b/src/mainboard/nvidia/l1_2pvv/hda_verb.c
similarity index 98%
rename from src/mainboard/nvidia/l1_2pvv/hda_verb.h
rename to src/mainboard/nvidia/l1_2pvv/hda_verb.c
index ea3159e..780167a 100644
--- a/src/mainboard/nvidia/l1_2pvv/hda_verb.h
+++ b/src/mainboard/nvidia/l1_2pvv/hda_verb.c
@@ -64,3 +64,4 @@
 	/* NID 0x1f, S/PDIF-IN */
 	AZALIA_PIN_CFG(0x0, 0x1f, 0x01c59150),
 };
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/nvidia/l1_2pvv/mainboard.c b/src/mainboard/nvidia/l1_2pvv/mainboard.c
index fb7317b..291d4f7 100644
--- a/src/mainboard/nvidia/l1_2pvv/mainboard.c
+++ b/src/mainboard/nvidia/l1_2pvv/mainboard.c
@@ -24,18 +24,10 @@
 #include <device/pci.h>
 #include <device/pci_ids.h>
 #include <device/pci_ops.h>
-#include <device/azalia_device.h>
-#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);
-}
 
 static void mainboard_enable(device_t dev)
 {
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/packardbell/ms2290/hda_verb.h b/src/mainboard/packardbell/ms2290/hda_verb.c
similarity index 93%
rename from src/mainboard/packardbell/ms2290/hda_verb.h
rename to src/mainboard/packardbell/ms2290/hda_verb.c
index 3cc00db..4ec3b36 100644
--- a/src/mainboard/packardbell/ms2290/hda_verb.h
+++ b/src/mainboard/packardbell/ms2290/hda_verb.c
@@ -18,7 +18,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10ec0272,	/* Codec Vendor / Device ID: Realtek ALC272X */
 	0x10250379,	/* Subsystem ID  */
@@ -58,3 +60,7 @@
 	/* NID 0x06.  */
 	AZALIA_PIN_CFG(0x3, 0x06, 0x58560030),
 };
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/packardbell/ms2290/mainboard.c b/src/mainboard/packardbell/ms2290/mainboard.c
index 5fff98d..c14e9b7 100644
--- a/src/mainboard/packardbell/ms2290/mainboard.c
+++ b/src/mainboard/packardbell/ms2290/mainboard.c
@@ -43,8 +43,6 @@
 #include <cpu/x86/lapic.h>
 #include <device/pci.h>
 #include <smbios.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 static acpi_cstate_t cst_entries[] = {
 	{1, 1, 1000, {0x7f, 1, 2, {0}, 1, 0}},
@@ -58,13 +56,7 @@
 	return ARRAY_SIZE(cst_entries);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-}
 
 static void mainboard_enable(device_t dev)
 {
@@ -137,7 +129,6 @@
 	/* This sneaked in here, because EasyNote has no SuperIO chip.
 	 */
 	pc_keyboard_init();
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/roda/rk886ex/hda_verb.c b/src/mainboard/roda/rk886ex/hda_verb.c
new file mode 100644
index 0000000..072a306
--- /dev/null
+++ b/src/mainboard/roda/rk886ex/hda_verb.c
@@ -0,0 +1,7 @@
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[0] = {};
+
+const u32 pc_beep_verbs[0] = {};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/roda/rk9/hda_verb.h b/src/mainboard/roda/rk9/hda_verb.c
similarity index 95%
rename from src/mainboard/roda/rk9/hda_verb.h
rename to src/mainboard/roda/rk9/hda_verb.c
index 64a3c8e..8960232 100644
--- a/src/mainboard/roda/rk9/hda_verb.h
+++ b/src/mainboard/roda/rk9/hda_verb.c
@@ -18,7 +18,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10ec0262,	// Codec Vendor / Device ID: Realtek ALC262
 	0x43528986,	// Subsystem ID
@@ -52,7 +54,7 @@
 	AZALIA_PIN_CFG(0, 0x1f, 0x411111f0)
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x00170500,	/* power up codec */
 	0x01470500,	/* power up speakers */
 	0x01470100,	/* select lout1 (input 0x0) for speakers */
@@ -62,3 +64,4 @@
 	0x00c3b015,	/* set lout1 output volume -15dB */
 	0x0143b000,	/* unmute speakers */
 };
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/roda/rk9/mainboard.c b/src/mainboard/roda/rk9/mainboard.c
index 49db15f..d5d02bf 100644
--- a/src/mainboard/roda/rk9/mainboard.c
+++ b/src/mainboard/roda/rk9/mainboard.c
@@ -26,22 +26,12 @@
 #include <drivers/intel/gma/int15.h>
 #include <pc80/keyboard.h>
 #include <ec/acpi/ec.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 #if CONFIG_GENERATE_ACPI_TABLES
 #include "cstates.c" /* Include it, as the linker won't find
 			the overloaded weak function in there. */
 #endif
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = ARRAY_SIZE(mainboard_pc_beep_verbs);
-}
-
 static void ec_setup(void)
 {
 	/* Thermal limits?  Values are from ectool's ram dump. */
@@ -59,7 +49,6 @@
 static void mainboard_enable(device_t dev)
 {
 	ec_setup();
-	verb_setup();
 	/* LCD panel type is SIO GPIO40-43.
 	   It's controlled by a DIP switch but was always
 	   set to 4 while only values of 5 and 6 worked. */
diff --git a/src/mainboard/samsung/lumpy/hda_verb.h b/src/mainboard/samsung/lumpy/hda_verb.c
similarity index 90%
rename from src/mainboard/samsung/lumpy/hda_verb.h
rename to src/mainboard/samsung/lumpy/hda_verb.c
index 4806b75..7ee254b 100644
--- a/src/mainboard/samsung/lumpy/hda_verb.h
+++ b/src/mainboard/samsung/lumpy/hda_verb.c
@@ -17,7 +17,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10134210,	// Codec Vendor / Device ID: Realtek ALC262
 	0x144db082,	// Subsystem ID
@@ -49,12 +51,11 @@
 	AZALIA_PIN_CFG(0x0, 0x0a, 0x434510f0)
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x00170500,			/* power up codec */
 	0x00270500,			/* power up DAC */
 	0x00670500,			/* power up speaker */
 	0x00670740,			/* enable speaker output */
 	0x0023B04B,			/* set DAC gain */
 };
-static const u32 mainboard_pc_beep_verbs_size =
-	ARRAY_SIZE(mainboard_pc_beep_verbs);
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/samsung/lumpy/mainboard.c b/src/mainboard/samsung/lumpy/mainboard.c
index 803761c..3bdd4d9 100644
--- a/src/mainboard/samsung/lumpy/mainboard.c
+++ b/src/mainboard/samsung/lumpy/mainboard.c
@@ -35,8 +35,6 @@
 #include "onboard.h"
 #include <southbridge/intel/bd82x6x/pch.h>
 #include <smbios.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 void mainboard_suspend_resume(void)
 {
@@ -48,15 +46,7 @@
 	send_ec_command(EC_ACPI_ENABLE);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
-}
 
 static void mainboard_init(device_t dev)
 {
@@ -116,7 +106,6 @@
 	dev->ops->init = mainboard_init;
 	dev->ops->get_smbios_data = lumpy_onboard_smbios_data;
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS, GMA_INT15_PANEL_FIT_DEFAULT, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/samsung/stumpy/hda_verb.h b/src/mainboard/samsung/stumpy/hda_verb.c
similarity index 92%
rename from src/mainboard/samsung/stumpy/hda_verb.h
rename to src/mainboard/samsung/stumpy/hda_verb.c
index 3992eee..1949aaa 100644
--- a/src/mainboard/samsung/stumpy/hda_verb.h
+++ b/src/mainboard/samsung/stumpy/hda_verb.c
@@ -17,7 +17,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-static const u32 mainboard_cim_verb_data[] = {
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
 	/* coreboot specific header */
 	0x10134210,	// Codec Vendor / Device ID: Cirrus Logic CS4210
 	0x10134210,	// Subsystem ID
@@ -64,12 +66,11 @@
 	AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)
 };
 
-static const u32 mainboard_pc_beep_verbs[] = {
+const u32 pc_beep_verbs[] = {
 	0x00170500,			/* power up codec */
 	0x00270500,			/* power up DAC */
 	0x00670500,			/* power up speaker */
 	0x00670740,			/* enable speaker output */
 	0x0023B04B,			/* set DAC gain */
 };
-static const u32 mainboard_pc_beep_verbs_size =
-	ARRAY_SIZE(mainboard_pc_beep_verbs);
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/samsung/stumpy/mainboard.c b/src/mainboard/samsung/stumpy/mainboard.c
index d61b808..347ce8a 100644
--- a/src/mainboard/samsung/stumpy/mainboard.c
+++ b/src/mainboard/samsung/stumpy/mainboard.c
@@ -32,8 +32,6 @@
 #include <arch/interrupt.h>
 #include <boot/coreboot_tables.h>
 #include <southbridge/intel/bd82x6x/pch.h>
-#include <device/azalia_device.h>
-#include "hda_verb.h"
 
 void mainboard_suspend_resume(void)
 {
@@ -41,15 +39,7 @@
 	outb(0xcb, 0xb2);
 }
 
-/* Audio Setup */
 
-static void verb_setup(void)
-{
-	cim_verb_data = mainboard_cim_verb_data;
-	cim_verb_data_size = sizeof(mainboard_cim_verb_data);
-	pc_beep_verbs = mainboard_pc_beep_verbs;
-	pc_beep_verbs_size = mainboard_pc_beep_verbs_size;
-}
 
 // mainboard_enable is executed as first thing after
 // enumerate_buses().
@@ -57,7 +47,6 @@
 static void mainboard_enable(device_t dev)
 {
 	install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_EDP, GMA_INT15_PANEL_FIT_CENTERING, GMA_INT15_BOOT_DISPLAY_DEFAULT, 0);
-	verb_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/southbridge/intel/bd82x6x/Makefile.inc b/src/southbridge/intel/bd82x6x/Makefile.inc
index def9cd2..b79b85a 100644
--- a/src/southbridge/intel/bd82x6x/Makefile.inc
+++ b/src/southbridge/intel/bd82x6x/Makefile.inc
@@ -34,6 +34,8 @@
 ramstage-y += me_8.x.c
 ramstage-y += smbus.c
 
+ramstage-srcs += src/mainboard/$(MAINBOARDDIR)/hda_verb.c
+
 ramstage-y += me_status.c
 ramstage-y += reset.c
 ramstage-y += watchdog.c
diff --git a/src/southbridge/intel/bd82x6x/azalia.c b/src/southbridge/intel/bd82x6x/azalia.c
index fed6f74..bef88ab 100644
--- a/src/southbridge/intel/bd82x6x/azalia.c
+++ b/src/southbridge/intel/bd82x6x/azalia.c
@@ -26,6 +26,7 @@
 #include <device/pci_ops.h>
 #include <arch/io.h>
 #include <delay.h>
+#include <device/azalia_device.h>
 #include "pch.h"
 
 #define HDA_ICII_REG 0x68
@@ -90,11 +91,6 @@
 	return 0;
 }
 
-const u32 * cim_verb_data = NULL;
-u32 cim_verb_data_size = 0;
-const u32 * pc_beep_verbs = NULL;
-u32 pc_beep_verbs_size = 0;
-
 static u32 find_verb(struct device *dev, u32 viddid, const u32 ** verb)
 {
 	int idx=0;
diff --git a/src/southbridge/intel/i82801gx/Makefile.inc b/src/southbridge/intel/i82801gx/Makefile.inc
index 94c84ed..6e4d42e 100644
--- a/src/southbridge/intel/i82801gx/Makefile.inc
+++ b/src/southbridge/intel/i82801gx/Makefile.inc
@@ -30,6 +30,8 @@
 ramstage-y += usb.c
 ramstage-y += usb_ehci.c
 
+ramstage-srcs += src/mainboard/$(MAINBOARDDIR)/hda_verb.c
+
 ramstage-y += reset.c
 ramstage-y += watchdog.c
 
diff --git a/src/southbridge/intel/i82801gx/azalia.c b/src/southbridge/intel/i82801gx/azalia.c
index 59d8123..f6628e7 100644
--- a/src/southbridge/intel/i82801gx/azalia.c
+++ b/src/southbridge/intel/i82801gx/azalia.c
@@ -25,6 +25,7 @@
 #include <device/pci_ops.h>
 #include <arch/io.h>
 #include <delay.h>
+#include <device/azalia_device.h>
 #include "i82801gx.h"
 
 #define HDA_ICII_REG 0x68
@@ -90,9 +91,6 @@
 	return 0;
 }
 
-const u32 * cim_verb_data = NULL;
-u32 cim_verb_data_size = 0;
-
 static u32 find_verb(struct device *dev, u32 viddid, const u32 ** verb)
 {
 	int idx=0;
diff --git a/src/southbridge/intel/i82801ix/Makefile.inc b/src/southbridge/intel/i82801ix/Makefile.inc
index 096533c..4117263 100644
--- a/src/southbridge/intel/i82801ix/Makefile.inc
+++ b/src/southbridge/intel/i82801ix/Makefile.inc
@@ -28,6 +28,8 @@
 ramstage-y += thermal.c
 ramstage-y += smbus.c
 
+ramstage-srcs += src/mainboard/$(MAINBOARDDIR)/hda_verb.c
+
 ramstage-y += ../i82801gx/reset.c
 ramstage-y += ../i82801gx/watchdog.c
 
diff --git a/src/southbridge/intel/i82801ix/hdaudio.c b/src/southbridge/intel/i82801ix/hdaudio.c
index 407c0a7..dd817b9 100644
--- a/src/southbridge/intel/i82801ix/hdaudio.c
+++ b/src/southbridge/intel/i82801ix/hdaudio.c
@@ -26,6 +26,7 @@
 #include <device/pci_ops.h>
 #include <arch/io.h>
 #include <delay.h>
+#include <device/azalia_device.h>
 #include "i82801ix.h"
 
 #define HDA_ICII_REG 0x68
@@ -91,11 +92,6 @@
 	return 0;
 }
 
-const u32 * cim_verb_data = NULL;
-u32 cim_verb_data_size = 0;
-const u32 * pc_beep_verbs = NULL;
-u32 pc_beep_verbs_size = 0;
-
 static u32 find_verb(struct device *dev, u32 viddid, const u32 ** verb)
 {
 	int idx=0;
diff --git a/src/southbridge/intel/ibexpeak/Makefile.inc b/src/southbridge/intel/ibexpeak/Makefile.inc
index da9f34a..24cbe45 100644
--- a/src/southbridge/intel/ibexpeak/Makefile.inc
+++ b/src/southbridge/intel/ibexpeak/Makefile.inc
@@ -34,6 +34,8 @@
 ramstage-y += smbus.c
 ramstage-y += thermal.c
 
+ramstage-srcs += src/mainboard/$(MAINBOARDDIR)/hda_verb.c
+
 ramstage-y += ../bd82x6x/me_status.c
 ramstage-y += ../bd82x6x/reset.c
 ramstage-y += ../bd82x6x/watchdog.c
diff --git a/src/southbridge/intel/ibexpeak/azalia.c b/src/southbridge/intel/ibexpeak/azalia.c
index 046d2b6..314a1b1 100644
--- a/src/southbridge/intel/ibexpeak/azalia.c
+++ b/src/southbridge/intel/ibexpeak/azalia.c
@@ -26,6 +26,7 @@
 #include <device/pci_ops.h>
 #include <arch/io.h>
 #include <delay.h>
+#include <device/azalia_device.h>
 #include "pch.h"
 
 #define HDA_ICII_REG 0x68
@@ -88,11 +89,6 @@
 	return 0;
 }
 
-const u32 * cim_verb_data = NULL;
-u32 cim_verb_data_size = 0;
-const u32 * pc_beep_verbs = NULL;
-u32 pc_beep_verbs_size = 0;
-
 static u32 find_verb(struct device *dev, u32 viddid, const u32 ** verb)
 {
 	int idx=0;
diff --git a/src/southbridge/intel/lynxpoint/Makefile.inc b/src/southbridge/intel/lynxpoint/Makefile.inc
index e504db0..3b7663e 100644
--- a/src/southbridge/intel/lynxpoint/Makefile.inc
+++ b/src/southbridge/intel/lynxpoint/Makefile.inc
@@ -35,6 +35,8 @@
 ramstage-y += hda_verb.c
 ramstage-$(CONFIG_INTEL_LYNXPOINT_LP) += serialio.c
 
+ramstage-srcs += src/mainboard/$(MAINBOARDDIR)/hda_verb.c
+
 ramstage-y += rcba.c
 ramstage-y += me_status.c
 ramstage-y += reset.c
diff --git a/src/southbridge/intel/lynxpoint/azalia.c b/src/southbridge/intel/lynxpoint/azalia.c
index 24c6702..be056be 100644
--- a/src/southbridge/intel/lynxpoint/azalia.c
+++ b/src/southbridge/intel/lynxpoint/azalia.c
@@ -26,14 +26,10 @@
 #include <device/pci_ops.h>
 #include <arch/io.h>
 #include <delay.h>
+#include <device/azalia_device.h>
 #include "pch.h"
 #include "hda_verb.h"
 
-const u32 * cim_verb_data = NULL;
-u32 cim_verb_data_size = 0;
-const u32 * pc_beep_verbs = NULL;
-u32 pc_beep_verbs_size = 0;
-
 static void codecs_init(u32 base, u32 codec_mask)
 {
 	int i;
@@ -46,7 +42,7 @@
 				       cim_verb_data);
 	}
 
-	if (pc_beep_verbs_size && pc_beep_verbs)
+	if (pc_beep_verbs_size)
 		hda_codec_write(base, pc_beep_verbs_size, pc_beep_verbs);
 }
 
