Merge branch 'for-2.6.36' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into topic/asoc
diff --git a/arch/arm/mach-davinci/devices.c b/arch/arm/mach-davinci/devices.c
index 8b7201e..de40e9c 100644
--- a/arch/arm/mach-davinci/devices.c
+++ b/arch/arm/mach-davinci/devices.c
@@ -295,6 +295,18 @@
 
 /*-------------------------------------------------------------------------*/
 
+struct platform_device davinci_pcm_device = {
+	.name		= "davinci-pcm-audio",
+	.id		= -1,
+};
+
+static void davinci_init_pcm(void)
+{
+	platform_device_register(&davinci_pcm_device);
+}
+
+/*-------------------------------------------------------------------------*/
+
 struct davinci_timer_instance davinci_timer_instance[2] = {
 	{
 		.base		= DAVINCI_TIMER0_BASE,
@@ -315,6 +327,7 @@
 	/* please keep these calls, and their implementations above,
 	 * in alphabetical order so they're easier to sort through.
 	 */
+	davinci_init_pcm();
 	davinci_init_wdt();
 
 	return 0;
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index 4cb55d3..1990e22 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -776,9 +776,15 @@
 	.resource	= ep93xx_i2s_resource,
 };
 
+static struct platform_device ep93xx_pcm_device = {
+	.name		= "ep93xx-pcm-audio",
+	.id		= -1,
+};
+
 void __init ep93xx_register_i2s(void)
 {
 	platform_device_register(&ep93xx_i2s_device);
+	platform_device_register(&ep93xx_pcm_device);
 }
 
 #define EP93XX_SYSCON_DEVCFG_I2S_MASK	(EP93XX_SYSCON_DEVCFG_I2SONSSP | \
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
index 1c82d42..51ff23b 100644
--- a/arch/arm/mach-kirkwood/common.c
+++ b/arch/arm/mach-kirkwood/common.c
@@ -903,10 +903,16 @@
 	},
 };
 
+static struct platform_device kirkwood_pcm_device = {
+	.name		= "kirkwood-pcm-audio",
+	.id		= -1,
+};
+
 void __init kirkwood_audio_init(void)
 {
 	kirkwood_clk_ctrl |= CGC_AUDIO;
 	platform_device_register(&kirkwood_i2s_device);
+	platform_device_register(&kirkwood_pcm_device);
 }
 
 /*****************************************************************************
diff --git a/arch/arm/mach-mx3/clock-imx31.c b/arch/arm/mach-mx3/clock-imx31.c
index 9a9eb6d..9b52a67 100644
--- a/arch/arm/mach-mx3/clock-imx31.c
+++ b/arch/arm/mach-mx3/clock-imx31.c
@@ -558,8 +558,8 @@
 	_REGISTER_CLOCK("mxc_w1.0", NULL, owire_clk)
 	_REGISTER_CLOCK("mxc-mmc.0", NULL, sdhc1_clk)
 	_REGISTER_CLOCK("mxc-mmc.1", NULL, sdhc2_clk)
-	_REGISTER_CLOCK("imx-ssi.0", NULL, ssi1_clk)
-	_REGISTER_CLOCK("imx-ssi.1", NULL, ssi2_clk)
+	_REGISTER_CLOCK("imx-ssi-dai.0", NULL, ssi1_clk)
+	_REGISTER_CLOCK("imx-ssi-dai.1", NULL, ssi2_clk)
 	_REGISTER_CLOCK(NULL, "firi", firi_clk)
 	_REGISTER_CLOCK(NULL, "ata", ata_clk)
 	_REGISTER_CLOCK(NULL, "rtic", rtic_clk)
diff --git a/arch/arm/mach-mx3/clock-imx35.c b/arch/arm/mach-mx3/clock-imx35.c
index d3af0fd..f29c3e9 100644
--- a/arch/arm/mach-mx3/clock-imx35.c
+++ b/arch/arm/mach-mx3/clock-imx35.c
@@ -464,8 +464,8 @@
 	_REGISTER_CLOCK(NULL, "sdma", sdma_clk)
 	_REGISTER_CLOCK(NULL, "spba", spba_clk)
 	_REGISTER_CLOCK(NULL, "spdif", spdif_clk)
-	_REGISTER_CLOCK("imx-ssi.0", NULL, ssi1_clk)
-	_REGISTER_CLOCK("imx-ssi.1", NULL, ssi2_clk)
+	_REGISTER_CLOCK("imx-ssi-dai.0", NULL, ssi1_clk)
+	_REGISTER_CLOCK("imx-ssi-dai.1", NULL, ssi2_clk)
 	_REGISTER_CLOCK("imx-uart.0", NULL, uart1_clk)
 	_REGISTER_CLOCK("imx-uart.1", NULL, uart2_clk)
 	_REGISTER_CLOCK("imx-uart.2", NULL, uart3_clk)
diff --git a/arch/arm/mach-mx3/devices.c b/arch/arm/mach-mx3/devices.c
index a4fd1a2..90eccba 100644
--- a/arch/arm/mach-mx3/devices.c
+++ b/arch/arm/mach-mx3/devices.c
@@ -327,14 +327,14 @@
 };
 
 struct platform_device imx_ssi_device0 = {
-	.name = "imx-ssi",
+	.name = "imx-ssi-dai",
 	.id = 0,
 	.num_resources = ARRAY_SIZE(imx_ssi_resources0),
 	.resource = imx_ssi_resources0,
 };
 
 struct platform_device imx_ssi_device1 = {
-	.name = "imx-ssi",
+	.name = "imx-ssi-dai",
 	.id = 1,
 	.num_resources = ARRAY_SIZE(imx_ssi_resources1),
 	.resource = imx_ssi_resources1,
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c
index aa07256..b583121 100644
--- a/arch/arm/mach-omap1/devices.c
+++ b/arch/arm/mach-omap1/devices.c
@@ -25,6 +25,7 @@
 #include <mach/gpio.h>
 #include <plat/mmc.h>
 #include <plat/omap7xx.h>
+#include <plat/mcbsp.h>
 
 /*-------------------------------------------------------------------------*/
 
@@ -195,6 +196,30 @@
 
 static inline void omap_init_sti(void) {}
 
+#if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE)
+
+static struct platform_device omap_pcm = {
+	.name	= "omap-pcm-audio",
+	.id	= -1,
+};
+
+OMAP_MCBSP_PLATFORM_DEVICE(1);
+OMAP_MCBSP_PLATFORM_DEVICE(2);
+OMAP_MCBSP_PLATFORM_DEVICE(3);
+
+static void omap_init_audio(void)
+{
+	platform_device_register(&omap_mcbsp1);
+	platform_device_register(&omap_mcbsp2);
+	if (!cpu_is_omap7xx())
+		platform_device_register(&omap_mcbsp3);
+	platform_device_register(&omap_pcm);
+}
+
+#else
+static inline void omap_init_audio(void) {}
+#endif
+
 /*-------------------------------------------------------------------------*/
 
 /*
@@ -227,6 +252,7 @@
 	omap_init_rtc();
 	omap_init_spi100k();
 	omap_init_sti();
+	omap_init_audio();
 
 	return 0;
 }
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c
index 9a5eb87..11ce4b2 100644
--- a/arch/arm/mach-omap2/board-rx51-peripherals.c
+++ b/arch/arm/mach-omap2/board-rx51-peripherals.c
@@ -23,6 +23,7 @@
 #include <linux/gpio.h>
 #include <linux/gpio_keys.h>
 #include <linux/mmc/host.h>
+#include <sound/tlv320aic3x.h>
 
 #include <plat/mcspi.h>
 #include <plat/board.h>
@@ -689,7 +690,6 @@
 };
 
 
-
 static struct twl4030_platform_data rx51_twldata __initdata = {
 	.irq_base		= TWL4030_IRQ_BASE,
 	.irq_end		= TWL4030_IRQ_END,
@@ -710,10 +710,6 @@
 	.vio			= &rx51_vio,
 };
 
-static struct aic3x_pdata rx51_aic3x_data __initdata = {
-	.gpio_reset		= 60,
-};
-
 static struct tpa6130a2_platform_data rx51_tpa6130a2_data __initdata = {
 	.id			= TPA6130A2,
 	.power_gpio		= 98,
@@ -728,6 +724,17 @@
 	},
 };
 
+/* Audio setup data */
+static struct aic3x_setup_data rx51_aic34_setup = {
+	.gpio_func[0] = AIC3X_GPIO1_FUNC_DISABLED,
+	.gpio_func[1] = AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT,
+};
+
+static struct aic3x_pdata rx51_aic3x_data = {
+	.setup = &rx51_aic34_setup,
+	.gpio_reset = 60,
+};
+
 static struct i2c_board_info __initdata rx51_peripherals_i2c_board_info_2[] = {
 	{
 		I2C_BOARD_INFO("tlv320aic3x", 0x18),
diff --git a/arch/arm/mach-omap2/board-zoom2.c b/arch/arm/mach-omap2/board-zoom2.c
index 3ad9ecf..efbcd8f 100644
--- a/arch/arm/mach-omap2/board-zoom2.c
+++ b/arch/arm/mach-omap2/board-zoom2.c
@@ -14,6 +14,7 @@
 #include <linux/platform_device.h>
 #include <linux/input.h>
 #include <linux/gpio.h>
+#include <linux/i2c/twl.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -34,8 +35,11 @@
 	omap_gpio_init();
 }
 
-/* REVISIT: These audio entries can be removed once MFD code is merged */
-#if 0
+/* EXTMUTE callback function */
+void zoom2_set_hs_extmute(int mute)
+{
+	gpio_set_value(ZOOM2_HEADSET_EXTMUTE_GPIO, mute);
+}
 
 static struct twl4030_madc_platform_data zoom2_madc_data = {
 	.irq_line	= 1,
@@ -43,6 +47,9 @@
 
 static struct twl4030_codec_audio_data zoom2_audio_data = {
 	.audio_mclk = 26000000,
+	.ramp_delay_value = 3,	/* 161 ms */
+	.hs_extmute = 1,
+	.set_hs_extmute = zoom2_set_hs_extmute,
 };
 
 static struct twl4030_codec_data zoom2_codec_data = {
@@ -64,10 +71,24 @@
 	.vmmc1          = &zoom2_vmmc1,
 	.vmmc2          = &zoom2_vmmc2,
 	.vsim           = &zoom2_vsim,
-
 };
 
-#endif
+static struct i2c_board_info __initdata zoom2_i2c_boardinfo[] = {
+	{
+		I2C_BOARD_INFO("twl4030", 0x48),
+		.flags = I2C_CLIENT_WAKE,
+		.irq = INT_34XX_SYS_NIRQ,
+		.platform_data = &zoom2_twldata,
+	},
+};
+
+static int __init omap3_zoom2_i2c_init(void)
+{
+	omap_register_i2c_bus(1, 2600, zoom2_i2c_boardinfo,
+			ARRAY_SIZE(zoom2_i2c_boardinfo));
+	return 0;
+}
+
 
 #ifdef CONFIG_OMAP_MUX
 static struct omap_board_mux board_mux[] __initdata = {
@@ -135,6 +156,7 @@
 {
 	omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
 	zoom_peripherals_init();
+	omap3_zoom2_i2c_init();
 	board_nand_init(zoom_nand_partitions,
 			ARRAY_SIZE(zoom_nand_partitions), ZOOM_NAND_CS);
 	zoom_debugboard_init();
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 2dbb265..08e1ad5 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -28,6 +28,7 @@
 #include <mach/gpio.h>
 #include <plat/mmc.h>
 #include <plat/dma.h>
+#include <plat/mcbsp.h>
 
 #include "mux.h"
 
@@ -235,6 +236,43 @@
 
 static inline void omap_init_sti(void) {}
 
+#if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE)
+
+static struct platform_device omap_pcm = {
+	.name	= "omap-pcm-audio",
+	.id	= -1,
+};
+
+/*
+ * OMAP2420 has 2 McBSP ports
+ * OMAP2430 has 5 McBSP ports
+ * OMAP3 has 5 McBSP ports
+ * OMAP4 has 4 McBSP ports
+ */
+OMAP_MCBSP_PLATFORM_DEVICE(1);
+OMAP_MCBSP_PLATFORM_DEVICE(2);
+OMAP_MCBSP_PLATFORM_DEVICE(3);
+OMAP_MCBSP_PLATFORM_DEVICE(4);
+OMAP_MCBSP_PLATFORM_DEVICE(5);
+
+static void omap_init_audio(void)
+{
+	platform_device_register(&omap_mcbsp1);
+	platform_device_register(&omap_mcbsp2);
+	if (cpu_is_omap243x() || cpu_is_omap34xx() || cpu_is_omap44xx()) {
+		platform_device_register(&omap_mcbsp3);
+		platform_device_register(&omap_mcbsp4);
+	}
+	if (cpu_is_omap243x() || cpu_is_omap34xx())
+		platform_device_register(&omap_mcbsp5);
+
+	platform_device_register(&omap_pcm);
+}
+
+#else
+static inline void omap_init_audio(void) {}
+#endif
+
 #if defined(CONFIG_SPI_OMAP24XX) || defined(CONFIG_SPI_OMAP24XX_MODULE)
 
 #include <plat/mcspi.h>
@@ -847,6 +885,7 @@
 	 * in alphabetical order so they're easier to sort through.
 	 */
 	omap_hsmmc_reset();
+	omap_init_audio();
 	omap_init_camera();
 	omap_init_mbox();
 	omap_init_mcspi();
diff --git a/arch/arm/mach-omap2/include/mach/board-zoom.h b/arch/arm/mach-omap2/include/mach/board-zoom.h
index 3af69d2..80591fd 100644
--- a/arch/arm/mach-omap2/include/mach/board-zoom.h
+++ b/arch/arm/mach-omap2/include/mach/board-zoom.h
@@ -9,3 +9,5 @@
 extern void __init board_nand_init(struct mtd_partition *, u8 nr_parts, u8 cs);
 extern int __init zoom_debugboard_init(void);
 extern void __init zoom_peripherals_init(void);
+
+#define ZOOM2_HEADSET_EXTMUTE_GPIO	153
diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
index 65447dc..6d84544 100644
--- a/arch/arm/mach-pxa/devices.c
+++ b/arch/arm/mach-pxa/devices.c
@@ -354,6 +354,31 @@
 	.num_resources	= ARRAY_SIZE(pxai2s_resources),
 };
 
+struct platform_device pxa_device_asoc_ssp1 = {
+	.name		= "pxa-ssp-dai",
+	.id		= 0,
+};
+
+struct platform_device pxa_device_asoc_ssp2= {
+	.name		= "pxa-ssp-dai",
+	.id		= 1,
+};
+
+struct platform_device pxa_device_asoc_ssp3 = {
+	.name		= "pxa-ssp-dai",
+	.id		= 2,
+};
+
+struct platform_device pxa_device_asoc_ssp4 = {
+	.name		= "pxa-ssp-dai",
+	.id		= 3,
+};
+
+struct platform_device pxa_device_asoc_platform = {
+	.name		= "pxa-pcm-audio",
+	.id		= -1,
+};
+
 static u64 pxaficp_dmamask = ~(u32)0;
 
 struct platform_device pxa_device_ficp = {
diff --git a/arch/arm/mach-pxa/devices.h b/arch/arm/mach-pxa/devices.h
index 50353ea..491a27a 100644
--- a/arch/arm/mach-pxa/devices.h
+++ b/arch/arm/mach-pxa/devices.h
@@ -38,4 +38,10 @@
 
 extern struct platform_device pxa3xx_device_gcu;
 
+extern struct platform_device pxa_device_asoc_platform;
+extern struct platform_device pxa_device_asoc_ssp1;
+extern struct platform_device pxa_device_asoc_ssp2;
+extern struct platform_device pxa_device_asoc_ssp3;
+extern struct platform_device pxa_device_asoc_ssp4;
+
 void __init pxa_register_device(struct platform_device *dev, void *data);
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c
index 12e5b9f..d1fbf29 100644
--- a/arch/arm/mach-pxa/pxa27x.c
+++ b/arch/arm/mach-pxa/pxa27x.c
@@ -385,6 +385,10 @@
 	&pxa27x_device_udc,
 	&pxa_device_pmu,
 	&pxa_device_i2s,
+	&pxa_device_asoc_ssp1,
+	&pxa_device_asoc_ssp2,
+	&pxa_device_asoc_ssp3,
+	&pxa_device_asoc_platform,
 	&sa1100_device_rtc,
 	&pxa_device_rtc,
 	&pxa27x_device_ssp1,
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
index fa00148..90974e6 100644
--- a/arch/arm/mach-pxa/pxa3xx.c
+++ b/arch/arm/mach-pxa/pxa3xx.c
@@ -610,6 +610,11 @@
 	&pxa27x_device_udc,
 	&pxa_device_pmu,
 	&pxa_device_i2s,
+	&pxa_device_asoc_ssp1,
+	&pxa_device_asoc_ssp2,
+	&pxa_device_asoc_ssp3,
+	&pxa_device_asoc_ssp4,
+	&pxa_device_asoc_platform,
 	&sa1100_device_rtc,
 	&pxa_device_rtc,
 	&pxa27x_device_ssp1,
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c
index c479cbe..5ba9d99 100644
--- a/arch/arm/mach-pxa/zylonite.c
+++ b/arch/arm/mach-pxa/zylonite.c
@@ -45,6 +45,16 @@
 int lcd_id;
 int lcd_orientation;
 
+struct platform_device pxa_device_wm9713_audio = {
+	.name		= "wm9713-codec",
+	.id		= -1,
+};
+
+static void __init zylonite_init_wm9713_audio(void)
+{
+	platform_device_register(&pxa_device_wm9713_audio);
+}
+
 static struct resource smc91x_resources[] = {
 	[0] = {
 		.start	= ZYLONITE_ETH_PHYS + 0x300,
@@ -408,6 +418,7 @@
 	zylonite_init_nand();
 	zylonite_init_leds();
 	zylonite_init_ohci();
+	zylonite_init_wm9713_audio();
 }
 
 MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)")
diff --git a/arch/arm/mach-s3c64xx/dev-audio.c b/arch/arm/mach-s3c64xx/dev-audio.c
index 9648fbc..3838335 100644
--- a/arch/arm/mach-s3c64xx/dev-audio.c
+++ b/arch/arm/mach-s3c64xx/dev-audio.c
@@ -43,8 +43,10 @@
 		s3c_gpio_cfgpin(S3C64XX_GPE(2), S3C64XX_GPE2_I2S1_LRCLK);
 		s3c_gpio_cfgpin(S3C64XX_GPE(3), S3C64XX_GPE3_I2S1_DI);
 		s3c_gpio_cfgpin(S3C64XX_GPE(4), S3C64XX_GPE4_I2S1_D0);
+		break;
 	default:
-		printk(KERN_DEBUG "Invalid I2S Controller number!");
+		printk(KERN_DEBUG "Invalid I2S Controller number: %d\n",
+			pdev->id);
 		return -EINVAL;
 	}
 
@@ -184,7 +186,8 @@
 		s3c_gpio_cfgpin(S3C64XX_GPE(4), S3C64XX_GPE4_PCM1_SOUT);
 		break;
 	default:
-		printk(KERN_DEBUG "Invalid PCM Controller number!");
+		printk(KERN_DEBUG "Invalid PCM Controller number: %d\n",
+			pdev->id);
 		return -EINVAL;
 	}
 
@@ -333,3 +336,16 @@
 	else
 		s3c_ac97_pdata.cfg_gpio = s3c64xx_ac97_cfg_gpe;
 }
+
+static u64 s3c_device_audio_dmamask = 0xffffffffUL;
+
+struct platform_device s3c_device_pcm = {
+	.name		  = "s3c24xx-pcm-audio",
+	.id		  = -1,
+	.dev              = {
+		.dma_mask = &s3c_device_audio_dmamask,
+		.coherent_dma_mask = 0xffffffffUL
+	}
+};
+EXPORT_SYMBOL(s3c_device_pcm);
+
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c
index d498219..ecbddd3 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
@@ -283,6 +283,7 @@
 	&s3c_device_fb,
 	&s3c_device_ohci,
 	&s3c_device_usb_hsotg,
+	&s3c_device_pcm,
 	&s3c64xx_device_iisv4,
 	&samsung_device_keypad,
 
diff --git a/arch/arm/plat-mxc/audmux-v2.c b/arch/arm/plat-mxc/audmux-v2.c
index f9e7cdb..910374d 100644
--- a/arch/arm/plat-mxc/audmux-v2.c
+++ b/arch/arm/plat-mxc/audmux-v2.c
@@ -45,9 +45,9 @@
 {
 	switch (port) {
 	case MX31_AUDMUX_PORT1_SSI0:
-		return "imx-ssi.0";
+		return "imx-ssi-dai.0";
 	case MX31_AUDMUX_PORT2_SSI1:
-		return "imx-ssi.1";
+		return "imx-ssi-dai.1";
 	case MX31_AUDMUX_PORT3_SSI_PINS_3:
 		return "SSI3";
 	case MX31_AUDMUX_PORT4_SSI_PINS_4:
diff --git a/arch/arm/plat-omap/include/plat/mcbsp.h b/arch/arm/plat-omap/include/plat/mcbsp.h
index b4ff6a1..5b20103 100644
--- a/arch/arm/plat-omap/include/plat/mcbsp.h
+++ b/arch/arm/plat-omap/include/plat/mcbsp.h
@@ -30,6 +30,13 @@
 #include <mach/hardware.h>
 #include <plat/clock.h>
 
+/* macro for building platform_device for McBSP ports */
+#define OMAP_MCBSP_PLATFORM_DEVICE(port_nr)		\
+static struct platform_device omap_mcbsp##port_nr = {	\
+	.name	= "omap-mcbsp-dai",			\
+	.id	= OMAP_MCBSP##port_nr,			\
+}
+
 #define OMAP7XX_MCBSP1_BASE	0xfffb1000
 #define OMAP7XX_MCBSP2_BASE	0xfffb1800
 
diff --git a/arch/arm/plat-s3c24xx/devs.c b/arch/arm/plat-s3c24xx/devs.c
index 452e184..2f91057 100644
--- a/arch/arm/plat-s3c24xx/devs.c
+++ b/arch/arm/plat-s3c24xx/devs.c
@@ -247,7 +247,7 @@
 static u64 s3c_device_iis_dmamask = 0xffffffffUL;
 
 struct platform_device s3c_device_iis = {
-	.name		  = "s3c2410-iis",
+	.name		  = "s3c24xx-iis",
 	.id		  = -1,
 	.num_resources	  = ARRAY_SIZE(s3c_iis_resource),
 	.resource	  = s3c_iis_resource,
@@ -259,6 +259,21 @@
 
 EXPORT_SYMBOL(s3c_device_iis);
 
+/* ASoC PCM DMA */
+
+static u64 s3c_device_audio_dmamask = 0xffffffffUL;
+
+struct platform_device s3c_device_pcm = {
+	.name		  = "s3c24xx-pcm-audio",
+	.id		  = -1,
+	.dev              = {
+		.dma_mask = &s3c_device_audio_dmamask,
+		.coherent_dma_mask = 0xffffffffUL
+	}
+};
+
+EXPORT_SYMBOL(s3c_device_pcm);
+
 /* RTC */
 
 static struct resource s3c_rtc_resource[] = {
@@ -481,19 +496,30 @@
 	},
 };
 
-static u64 s3c_device_ac97_dmamask = 0xffffffffUL;
-
 struct platform_device s3c_device_ac97 = {
 	.name		  = "s3c-ac97",
 	.id		  = -1,
 	.num_resources	  = ARRAY_SIZE(s3c_ac97_resource),
 	.resource	  = s3c_ac97_resource,
 	.dev              = {
-		.dma_mask = &s3c_device_ac97_dmamask,
+		.dma_mask = &s3c_device_audio_dmamask,
 		.coherent_dma_mask = 0xffffffffUL
 	}
 };
 
 EXPORT_SYMBOL(s3c_device_ac97);
 
+/* ASoC I2S */
+
+struct platform_device s3c2412_device_iis = {
+	.name		  = "s3c2412-iis",
+	.id		  = -1,
+	.dev              = {
+		.dma_mask = &s3c_device_audio_dmamask,
+		.coherent_dma_mask = 0xffffffffUL
+	}
+};
+
+EXPORT_SYMBOL(s3c2412_device_iis);
+
 #endif // CONFIG_CPU_S32440
diff --git a/arch/arm/plat-samsung/include/plat/devs.h b/arch/arm/plat-samsung/include/plat/devs.h
index 85f6f23..a9fecd6 100644
--- a/arch/arm/plat-samsung/include/plat/devs.h
+++ b/arch/arm/plat-samsung/include/plat/devs.h
@@ -32,6 +32,8 @@
 extern struct platform_device s3c64xx_device_spi0;
 extern struct platform_device s3c64xx_device_spi1;
 
+extern struct platform_device s3c_device_pcm;
+
 extern struct platform_device s3c64xx_device_pcm0;
 extern struct platform_device s3c64xx_device_pcm1;
 
diff --git a/arch/mips/alchemy/devboards/db1200/platform.c b/arch/mips/alchemy/devboards/db1200/platform.c
index 3fa34c3..fbb5593 100644
--- a/arch/mips/alchemy/devboards/db1200/platform.c
+++ b/arch/mips/alchemy/devboards/db1200/platform.c
@@ -429,6 +429,11 @@
 	.resource	= au1200_psc1_res,
 };
 
+static struct platform_device db1200_stac_dev = {
+	.name		= "ac97-codec",
+	.id		= 1,	/* on PSC1 */
+};
+
 static struct platform_device *db1200_devs[] __initdata = {
 	NULL,		/* PSC0, selected by S6.8 */
 	&db1200_ide_dev,
@@ -436,6 +441,7 @@
 	&db1200_rtc_dev,
 	&db1200_nand_dev,
 	&db1200_audio_dev,
+	&db1200_stac_dev,
 };
 
 static int __init db1200_dev_init(void)
diff --git a/arch/powerpc/boot/dts/mpc8610_hpcd.dts b/arch/powerpc/boot/dts/mpc8610_hpcd.dts
index 9535ce6..83c3218 100644
--- a/arch/powerpc/boot/dts/mpc8610_hpcd.dts
+++ b/arch/powerpc/boot/dts/mpc8610_hpcd.dts
@@ -286,6 +286,7 @@
 
 		ssi@16100 {
 			compatible = "fsl,mpc8610-ssi";
+			status = "disabled";
 			cell-index = <1>;
 			reg = <0x16100 0x100>;
 			interrupt-parent = <&mpic>;
diff --git a/arch/powerpc/include/asm/immap_86xx.h b/arch/powerpc/include/asm/fsl_guts.h
similarity index 66%
rename from arch/powerpc/include/asm/immap_86xx.h
rename to arch/powerpc/include/asm/fsl_guts.h
index 0f165e5..bebd124 100644
--- a/arch/powerpc/include/asm/immap_86xx.h
+++ b/arch/powerpc/include/asm/fsl_guts.h
@@ -1,5 +1,5 @@
 /**
- * MPC86xx Internal Memory Map
+ * Freecale 85xx and 86xx Global Utilties register set
  *
  * Authors: Jeff Brown
  *          Timur Tabi <timur@freescale.com>
@@ -10,73 +10,112 @@
  * under  the terms of  the GNU General  Public License as published by the
  * Free Software Foundation;  either version 2 of the  License, or (at your
  * option) any later version.
- *
- * This header file defines structures for various 86xx SOC devices that are
- * used by multiple source files.
  */
 
-#ifndef __ASM_POWERPC_IMMAP_86XX_H__
-#define __ASM_POWERPC_IMMAP_86XX_H__
+#ifndef __ASM_POWERPC_FSL_GUTS_H__
+#define __ASM_POWERPC_FSL_GUTS_H__
 #ifdef __KERNEL__
 
-/* Global Utility Registers */
-struct ccsr_guts {
+/*
+ * These #ifdefs are safe because it's not possible to build a kernel that
+ * runs on e500 and e600 cores.
+ */
+
+#if !defined(CONFIG_PPC_85xx) && !defined(CONFIG_PPC_86xx)
+#error Only 85xx and 86xx SOCs are supported
+#endif
+
+/**
+ * Global Utility Registers.
+ *
+ * Not all registers defined in this structure are available on all chips, so
+ * you are expected to know whether a given register actually exists on your
+ * chip before you access it.
+ *
+ * Also, some registers are similar on different chips but have slightly
+ * different names.  In these cases, one name is chosen to avoid extraneous
+ * #ifdefs.
+ */
+#ifdef CONFIG_PPC_85xx
+struct ccsr_guts_85xx {
+#else
+struct ccsr_guts_86xx {
+#endif
 	__be32	porpllsr;	/* 0x.0000 - POR PLL Ratio Status Register */
 	__be32	porbmsr;	/* 0x.0004 - POR Boot Mode Status Register */
 	__be32	porimpscr;	/* 0x.0008 - POR I/O Impedance Status and Control Register */
 	__be32	pordevsr;	/* 0x.000c - POR I/O Device Status Register */
 	__be32	pordbgmsr;	/* 0x.0010 - POR Debug Mode Status Register */
-	u8	res1[0x20 - 0x14];
+	__be32	pordevsr2;	/* 0x.0014 - POR device status register 2 */
+	u8	res018[0x20 - 0x18];
 	__be32	porcir;		/* 0x.0020 - POR Configuration Information Register */
-	u8	res2[0x30 - 0x24];
+	u8	res024[0x30 - 0x24];
 	__be32	gpiocr;		/* 0x.0030 - GPIO Control Register */
-	u8	res3[0x40 - 0x34];
+	u8	res034[0x40 - 0x34];
 	__be32	gpoutdr;	/* 0x.0040 - General-Purpose Output Data Register */
-	u8	res4[0x50 - 0x44];
+	u8	res044[0x50 - 0x44];
 	__be32	gpindr;		/* 0x.0050 - General-Purpose Input Data Register */
-	u8	res5[0x60 - 0x54];
+	u8	res054[0x60 - 0x54];
 	__be32	pmuxcr;		/* 0x.0060 - Alternate Function Signal Multiplex Control */
-	u8	res6[0x70 - 0x64];
+        __be32  pmuxcr2;	/* 0x.0064 - Alternate function signal multiplex control 2 */
+        __be32  dmuxcr;		/* 0x.0068 - DMA Mux Control Register */
+        u8	res06c[0x70 - 0x6c];
 	__be32	devdisr;	/* 0x.0070 - Device Disable Control */
 	__be32	devdisr2;	/* 0x.0074 - Device Disable Control 2 */
-	u8	res7[0x80 - 0x78];
+	u8	res078[0x7c - 0x78];
+	__be32  pmjcr;		/* 0x.007c - 4 Power Management Jog Control Register */
 	__be32	powmgtcsr;	/* 0x.0080 - Power Management Status and Control Register */
-	u8	res8[0x90 - 0x84];
+	__be32  pmrccr;		/* 0x.0084 - Power Management Reset Counter Configuration Register */
+	__be32  pmpdccr;	/* 0x.0088 - Power Management Power Down Counter Configuration Register */
+	__be32  pmcdr;		/* 0x.008c - 4Power management clock disable register */
 	__be32	mcpsumr;	/* 0x.0090 - Machine Check Summary Register */
 	__be32	rstrscr;	/* 0x.0094 - Reset Request Status and Control Register */
-	u8	res9[0xA0 - 0x98];
+	__be32  ectrstcr;	/* 0x.0098 - Exception reset control register */
+	__be32  autorstsr;	/* 0x.009c - Automatic reset status register */
 	__be32	pvr;		/* 0x.00a0 - Processor Version Register */
 	__be32	svr;		/* 0x.00a4 - System Version Register */
-	u8	res10[0xB0 - 0xA8];
+	u8	res0a8[0xb0 - 0xa8];
 	__be32	rstcr;		/* 0x.00b0 - Reset Control Register */
-	u8	res11[0xC0 - 0xB4];
+	u8	res0b4[0xc0 - 0xb4];
+#ifdef CONFIG_PPC_85xx
+	__be32  iovselsr;	/* 0x.00c0 - I/O voltage select status register */
+#else
 	__be32	elbcvselcr;	/* 0x.00c0 - eLBC Voltage Select Ctrl Reg */
-	u8	res12[0x800 - 0xC4];
+#endif
+	u8	res0c4[0x224 - 0xc4];
+	__be32  iodelay1;	/* 0x.0224 - IO delay control register 1 */
+	__be32  iodelay2;	/* 0x.0228 - IO delay control register 2 */
+	u8	res22c[0x800 - 0x22c];
 	__be32	clkdvdr;	/* 0x.0800 - Clock Divide Register */
-	u8	res13[0x900 - 0x804];
+	u8	res804[0x900 - 0x804];
 	__be32	ircr;		/* 0x.0900 - Infrared Control Register */
-	u8	res14[0x908 - 0x904];
+	u8	res904[0x908 - 0x904];
 	__be32	dmacr;		/* 0x.0908 - DMA Control Register */
-	u8	res15[0x914 - 0x90C];
+	u8	res90c[0x914 - 0x90c];
 	__be32	elbccr;		/* 0x.0914 - eLBC Control Register */
-	u8	res16[0xB20 - 0x918];
+	u8	res918[0xb20 - 0x918];
 	__be32	ddr1clkdr;	/* 0x.0b20 - DDR1 Clock Disable Register */
 	__be32	ddr2clkdr;	/* 0x.0b24 - DDR2 Clock Disable Register */
 	__be32	ddrclkdr;	/* 0x.0b28 - DDR Clock Disable Register */
-	u8	res17[0xE00 - 0xB2C];
+	u8	resb2c[0xe00 - 0xb2c];
 	__be32	clkocr;		/* 0x.0e00 - Clock Out Select Register */
-	u8	res18[0xE10 - 0xE04];
+	u8	rese04[0xe10 - 0xe04];
 	__be32	ddrdllcr;	/* 0x.0e10 - DDR DLL Control Register */
-	u8	res19[0xE20 - 0xE14];
+	u8	rese14[0xe20 - 0xe14];
 	__be32	lbcdllcr;	/* 0x.0e20 - LBC DLL Control Register */
-	u8	res20[0xF04 - 0xE24];
+	__be32  cpfor;		/* 0x.0e24 - L2 charge pump fuse override register */
+	u8	rese28[0xf04 - 0xe28];
 	__be32	srds1cr0;	/* 0x.0f04 - SerDes1 Control Register 0 */
 	__be32	srds1cr1;	/* 0x.0f08 - SerDes1 Control Register 0 */
-	u8	res21[0xF40 - 0xF0C];
-	__be32	srds2cr0;	/* 0x.0f40 - SerDes1 Control Register 0 */
-	__be32	srds2cr1;	/* 0x.0f44 - SerDes1 Control Register 0 */
+	u8	resf0c[0xf2c - 0xf0c];
+	__be32  itcr;		/* 0x.0f2c - Internal transaction control register */
+	u8	resf30[0xf40 - 0xf30];
+	__be32	srds2cr0;	/* 0x.0f40 - SerDes2 Control Register 0 */
+	__be32	srds2cr1;	/* 0x.0f44 - SerDes2 Control Register 0 */
 } __attribute__ ((packed));
 
+#ifdef CONFIG_PPC_86xx
+
 #define CCSR_GUTS_DMACR_DEV_SSI	0	/* DMA controller/channel set to SSI */
 #define CCSR_GUTS_DMACR_DEV_IR	1	/* DMA controller/channel set to IR */
 
@@ -93,7 +132,7 @@
  * ch: The channel on the DMA controller (0, 1, 2, or 3)
  * device: The device to set as the source (CCSR_GUTS_DMACR_DEV_xx)
  */
-static inline void guts_set_dmacr(struct ccsr_guts __iomem *guts,
+static inline void guts_set_dmacr(struct ccsr_guts_86xx __iomem *guts,
 	unsigned int co, unsigned int ch, unsigned int device)
 {
 	unsigned int shift = 16 + (8 * (1 - co) + 2 * (3 - ch));
@@ -129,7 +168,7 @@
  * ch: The channel on the DMA controller (0, 1, 2, or 3)
  * value: the new value for the bit (0 or 1)
  */
-static inline void guts_set_pmuxcr_dma(struct ccsr_guts __iomem *guts,
+static inline void guts_set_pmuxcr_dma(struct ccsr_guts_86xx __iomem *guts,
 	unsigned int co, unsigned int ch, unsigned int value)
 {
 	if ((ch == 0) || (ch == 3)) {
@@ -152,5 +191,7 @@
 #define CCSR_GUTS_CLKDVDR_SSICLK_MASK	0x000000FF
 #define CCSR_GUTS_CLKDVDR_SSICLK(x) ((x) & CCSR_GUTS_CLKDVDR_SSICLK_MASK)
 
-#endif /* __ASM_POWERPC_IMMAP_86XX_H__ */
-#endif /* __KERNEL__ */
+#endif
+
+#endif
+#endif
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
index 156ccc9..d551ed8 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
@@ -551,7 +551,7 @@
 };
 
 static struct platform_device siu_device = {
-	.name		= "sh_siu",
+	.name		= "siu-pcm-audio",
 	.id		= -1,
 	.dev = {
 		.platform_data	= &siu_platform_data,
diff --git a/drivers/input/misc/twl4030-vibra.c b/drivers/input/misc/twl4030-vibra.c
index 4f9b2af..014dd4a 100644
--- a/drivers/input/misc/twl4030-vibra.c
+++ b/drivers/input/misc/twl4030-vibra.c
@@ -271,7 +271,7 @@
 	.probe		= twl4030_vibra_probe,
 	.remove		= __devexit_p(twl4030_vibra_remove),
 	.driver		= {
-		.name	= "twl4030_codec_vibra",
+		.name	= "twl4030-vibra",
 		.owner	= THIS_MODULE,
 #ifdef CONFIG_PM
 		.pm	= &twl4030_vibra_pm_ops,
@@ -291,7 +291,7 @@
 }
 module_exit(twl4030_vibra_exit);
 
-MODULE_ALIAS("platform:twl4030_codec_vibra");
+MODULE_ALIAS("platform:twl4030-vibra");
 
 MODULE_DESCRIPTION("TWL4030 Vibra driver");
 MODULE_LICENSE("GPL");
diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c
index 720e099..5d0fb60 100644
--- a/drivers/mfd/twl-core.c
+++ b/drivers/mfd/twl-core.c
@@ -698,17 +698,17 @@
 
 	if (twl_has_codec() && pdata->codec && twl_class_is_4030()) {
 		sub_chip_id = twl_map[TWL_MODULE_AUDIO_VOICE].sid;
-		child = add_child(sub_chip_id, "twl4030_codec",
+		child = add_child(sub_chip_id, "twl4030-audio",
 				pdata->codec, sizeof(*pdata->codec),
 				false, 0, 0);
 		if (IS_ERR(child))
 			return PTR_ERR(child);
 	}
 
-	/* Phoenix*/
+	/* Phoenix codec driver is probed directly atm */
 	if (twl_has_codec() && pdata->codec && twl_class_is_6030()) {
 		sub_chip_id = twl_map[TWL_MODULE_AUDIO_VOICE].sid;
-		child = add_child(sub_chip_id, "twl6040_codec",
+		child = add_child(sub_chip_id, "twl6040-codec",
 				pdata->codec, sizeof(*pdata->codec),
 				false, 0, 0);
 		if (IS_ERR(child))
diff --git a/drivers/mfd/twl4030-codec.c b/drivers/mfd/twl4030-codec.c
index add6f67..9a4b196 100644
--- a/drivers/mfd/twl4030-codec.c
+++ b/drivers/mfd/twl4030-codec.c
@@ -207,14 +207,14 @@
 
 	if (pdata->audio) {
 		cell = &codec->cells[childs];
-		cell->name = "twl4030_codec_audio";
+		cell->name = "twl4030-codec";
 		cell->platform_data = pdata->audio;
 		cell->data_size = sizeof(*pdata->audio);
 		childs++;
 	}
 	if (pdata->vibra) {
 		cell = &codec->cells[childs];
-		cell->name = "twl4030_codec_vibra";
+		cell->name = "twl4030-vibra";
 		cell->platform_data = pdata->vibra;
 		cell->data_size = sizeof(*pdata->vibra);
 		childs++;
@@ -249,14 +249,14 @@
 	return 0;
 }
 
-MODULE_ALIAS("platform:twl4030_codec");
+MODULE_ALIAS("platform:twl4030-audio");
 
 static struct platform_driver twl4030_codec_driver = {
 	.probe		= twl4030_codec_probe,
 	.remove		= __devexit_p(twl4030_codec_remove),
 	.driver		= {
 		.owner	= THIS_MODULE,
-		.name	= "twl4030_codec",
+		.name	= "twl4030-audio",
 	},
 };
 
diff --git a/drivers/staging/xgifb/TODO b/drivers/staging/xgifb/TODO
index 7d71019..c85ff5e 100644
--- a/drivers/staging/xgifb/TODO
+++ b/drivers/staging/xgifb/TODO
@@ -12,4 +12,4 @@
 - get rid of non-linux related stuff
 
 Please send patches to:
-Arnaud Patard <apatard@mandriva.com>
+Arnaud Patard <arnaud.patard@rtp-net.org>
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 8b31fdf..43e90b8 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -1919,6 +1919,7 @@
 	tristate "SuperH Mobile HDMI controller support"
 	depends on FB_SH_MOBILE_LCDC
 	select FB_MODE_HELPERS
+	select SND_SOC
 	---help---
 	  Driver for the on-chip SH-Mobile HDMI controller.
 
diff --git a/drivers/video/sh_mobile_hdmi.c b/drivers/video/sh_mobile_hdmi.c
index 2fde08c..ef989d9 100644
--- a/drivers/video/sh_mobile_hdmi.c
+++ b/drivers/video/sh_mobile_hdmi.c
@@ -22,6 +22,8 @@
 #include <linux/slab.h>
 #include <linux/types.h>
 #include <linux/workqueue.h>
+#include <sound/soc-dapm.h>
+#include <sound/initval.h>
 
 #include <video/sh_mobile_hdmi.h>
 #include <video/sh_mobile_lcdc.h>
@@ -222,6 +224,58 @@
 	return ioread8(hdmi->base + reg);
 }
 
+/*
+ *	HDMI sound
+ */
+static unsigned int sh_hdmi_snd_read(struct snd_soc_codec *codec,
+				     unsigned int reg)
+{
+	struct sh_hdmi *hdmi = snd_soc_codec_get_drvdata(codec);
+
+	return hdmi_read(hdmi, reg);
+}
+
+static int sh_hdmi_snd_write(struct snd_soc_codec *codec,
+			     unsigned int reg,
+			     unsigned int value)
+{
+	struct sh_hdmi *hdmi = snd_soc_codec_get_drvdata(codec);
+
+	hdmi_write(hdmi, value, reg);
+	return 0;
+}
+
+static struct snd_soc_dai_driver sh_hdmi_dai = {
+	.name = "sh_mobile_hdmi-hifi",
+	.playback = {
+		.stream_name = "Playback",
+		.channels_min = 2,
+		.channels_max = 8,
+		.rates = SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100  |
+			 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200  |
+			 SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
+			 SNDRV_PCM_RATE_192000,
+		.formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE,
+	},
+};
+
+static int sh_hdmi_snd_probe(struct snd_soc_codec *codec)
+{
+	dev_info(codec->dev, "SH Mobile HDMI Audio Codec");
+
+	return 0;
+}
+
+static struct snd_soc_codec_driver soc_codec_dev_sh_hdmi = {
+	.probe		= sh_hdmi_snd_probe,
+	.read		= sh_hdmi_snd_read,
+	.write		= sh_hdmi_snd_write,
+};
+
+/*
+ *	HDMI video
+ */
+
 /* External video parameter settings */
 static void hdmi_external_video_param(struct sh_hdmi *hdmi)
 {
@@ -318,6 +372,9 @@
  */
 static void sh_hdmi_audio_config(struct sh_hdmi *hdmi)
 {
+	u8 data;
+	struct sh_mobile_hdmi_info *pdata = hdmi->dev->platform_data;
+
 	/*
 	 * [7:4] L/R data swap control
 	 * [3:0] appropriate N[19:16]
@@ -335,7 +392,23 @@
 	 * [6:5] set required down sampling rate if required
 	 * [4:3] set required audio source
 	 */
-	hdmi_write(hdmi, 0x00, HDMI_AUDIO_SETTING_1);
+	switch (pdata->flags & HDMI_SND_SRC_MASK) {
+	default:
+		/* fall through */
+	case HDMI_SND_SRC_I2S:
+		data = 0x0 << 3;
+		break;
+	case HDMI_SND_SRC_SPDIF:
+		data = 0x1 << 3;
+		break;
+	case HDMI_SND_SRC_DSD:
+		data = 0x2 << 3;
+		break;
+	case HDMI_SND_SRC_HBR:
+		data = 0x3 << 3;
+		break;
+	}
+	hdmi_write(hdmi, data, HDMI_AUDIO_SETTING_1);
 
 	/* [3:0] set sending channel number for channel status */
 	hdmi_write(hdmi, 0x40, HDMI_AUDIO_SETTING_2);
@@ -891,6 +964,11 @@
 		return -ENOMEM;
 	}
 
+	ret =  snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_sh_hdmi, &sh_hdmi_dai, 1);
+	if (ret < 0)
+		goto esndreg;
+
 	hdmi->dev = &pdev->dev;
 
 	hdmi->hdmi_clk = clk_get(&pdev->dev, "ick");
@@ -976,6 +1054,8 @@
 erate:
 	clk_put(hdmi->hdmi_clk);
 egetclk:
+	snd_soc_unregister_codec(&pdev->dev);
+esndreg:
 	kfree(hdmi);
 
 	return ret;
@@ -988,6 +1068,8 @@
 	struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	int irq = platform_get_irq(pdev, 0);
 
+	snd_soc_unregister_codec(&pdev->dev);
+
 	pdata->lcd_chan->board_cfg.display_on = NULL;
 	pdata->lcd_chan->board_cfg.display_off = NULL;
 	pdata->lcd_chan->board_cfg.board_data = NULL;
diff --git a/include/linux/i2c/twl.h b/include/linux/i2c/twl.h
index 6de90bf..4793d8a 100644
--- a/include/linux/i2c/twl.h
+++ b/include/linux/i2c/twl.h
@@ -553,8 +553,12 @@
 extern int twl4030_remove_script(u8 flags);
 
 struct twl4030_codec_audio_data {
-	unsigned int	audio_mclk;
+	unsigned int audio_mclk; /* not used, will be removed */
+	unsigned int digimic_delay; /* in ms */
 	unsigned int ramp_delay_value;
+	unsigned int offset_cncl_path;
+	unsigned int check_defaults:1;
+	unsigned int reset_registers:1;
 	unsigned int hs_extmute:1;
 	void (*set_hs_extmute)(int mute);
 };
diff --git a/include/sound/sh_fsi.h b/include/sound/sh_fsi.h
index 9d51d6f3..fa60cbd 100644
--- a/include/sound/sh_fsi.h
+++ b/include/sound/sh_fsi.h
@@ -114,7 +114,4 @@
 	int (*set_rate)(int is_porta, int rate); /* for master mode */
 };
 
-extern struct snd_soc_dai fsi_soc_dai[2];
-extern struct snd_soc_platform fsi_soc_platform;
-
 #endif /* __SOUND_FSI_H */
diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h
index 377693a..e7b6802 100644
--- a/include/sound/soc-dai.h
+++ b/include/sound/soc-dai.h
@@ -91,15 +91,17 @@
                                SNDRV_PCM_FMTBIT_S32_LE |\
                                SNDRV_PCM_FMTBIT_S32_BE)
 
-struct snd_soc_dai_ops;
+struct snd_soc_dai_driver;
 struct snd_soc_dai;
 struct snd_ac97_bus_ops;
 
 /* Digital Audio Interface registration */
-int snd_soc_register_dai(struct snd_soc_dai *dai);
-void snd_soc_unregister_dai(struct snd_soc_dai *dai);
-int snd_soc_register_dais(struct snd_soc_dai *dai, size_t count);
-void snd_soc_unregister_dais(struct snd_soc_dai *dai, size_t count);
+int snd_soc_register_dai(struct device *dev,
+		struct snd_soc_dai_driver *dai_drv);
+void snd_soc_unregister_dai(struct device *dev);
+int snd_soc_register_dais(struct device *dev,
+		struct snd_soc_dai_driver *dai_drv, size_t count);
+void snd_soc_unregister_dais(struct device *dev, size_t count);
 
 /* Digital Audio Interface clocking API.*/
 int snd_soc_dai_set_sysclk(struct snd_soc_dai *dai, int clk_id,
@@ -126,16 +128,6 @@
 /* Digital Audio Interface mute */
 int snd_soc_dai_digital_mute(struct snd_soc_dai *dai, int mute);
 
-/*
- * Digital Audio Interface.
- *
- * Describes the Digital Audio Interface in terms of its ALSA, DAI and AC97
- * operations and capabilities. Codec and platform drivers will register this
- * structure for every DAI they have.
- *
- * This structure covers the clocking, formating and ALSA operations for each
- * interface.
- */
 struct snd_soc_dai_ops {
 	/*
 	 * DAI clocking configuration, all optional.
@@ -191,24 +183,24 @@
 };
 
 /*
- * Digital Audio Interface runtime data.
+ * Digital Audio Interface Driver.
  *
- * Holds runtime data for a DAI.
+ * Describes the Digital Audio Interface in terms of its ALSA, DAI and AC97
+ * operations and capabilities. Codec and platform drivers will register this
+ * structure for every DAI they have.
+ *
+ * This structure covers the clocking, formating and ALSA operations for each
+ * interface.
  */
-struct snd_soc_dai {
+struct snd_soc_dai_driver {
 	/* DAI description */
-	char *name;
+	const char *name;
 	unsigned int id;
 	int ac97_control;
 
-	struct device *dev;
-	void *ac97_pdata;	/* platform_data for the ac97 codec */
-
-	/* DAI callbacks */
-	int (*probe)(struct platform_device *pdev,
-		     struct snd_soc_dai *dai);
-	void (*remove)(struct platform_device *pdev,
-		       struct snd_soc_dai *dai);
+	/* DAI driver callbacks */
+	int (*probe)(struct snd_soc_dai *dai);
+	int (*remove)(struct snd_soc_dai *dai);
 	int (*suspend)(struct snd_soc_dai *dai);
 	int (*resume)(struct snd_soc_dai *dai);
 
@@ -219,26 +211,51 @@
 	struct snd_soc_pcm_stream capture;
 	struct snd_soc_pcm_stream playback;
 	unsigned int symmetric_rates:1;
+};
+
+/*
+ * Digital Audio Interface runtime data.
+ *
+ * Holds runtime data for a DAI.
+ */
+struct snd_soc_dai {
+	const char *name;
+	int id;
+	struct device *dev;
+	void *ac97_pdata;	/* platform_data for the ac97 codec */
+
+	/* driver ops */
+	struct snd_soc_dai_driver *driver;
 
 	/* DAI runtime info */
-	struct snd_soc_codec *codec;
+	unsigned int capture_active:1;		/* stream is in use */
+	unsigned int playback_active:1;		/* stream is in use */
+	unsigned int symmetric_rates:1;
+	struct snd_pcm_runtime *runtime;
 	unsigned int active;
 	unsigned char pop_wait:1;
+	unsigned char probed:1;
 
-	/* DAI private data */
-	void *private_data;
+	/* DAI DMA data */
+	void *playback_dma_data;
+	void *capture_dma_data;
 
-	/* parent platform */
-	struct snd_soc_platform *platform;
+	/* parent platform/codec */
+	union {
+		struct snd_soc_platform *platform;
+		struct snd_soc_codec *codec;
+	};
+	struct snd_soc_card *card;
 
 	struct list_head list;
+	struct list_head card_list;
 };
 
 static inline void *snd_soc_dai_get_dma_data(const struct snd_soc_dai *dai,
 					     const struct snd_pcm_substream *ss)
 {
 	return (ss->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
-		dai->playback.dma_data : dai->capture.dma_data;
+		dai->playback_dma_data : dai->capture_dma_data;
 }
 
 static inline void snd_soc_dai_set_dma_data(struct snd_soc_dai *dai,
@@ -246,9 +263,20 @@
 					    void *data)
 {
 	if (ss->stream == SNDRV_PCM_STREAM_PLAYBACK)
-		dai->playback.dma_data = data;
+		dai->playback_dma_data = data;
 	else
-		dai->capture.dma_data = data;
+		dai->capture_dma_data = data;
+}
+
+static inline void snd_soc_dai_set_drvdata(struct snd_soc_dai *dai,
+		void *data)
+{
+	dev_set_drvdata(dai->dev, data);
+}
+
+static inline void *snd_soc_dai_get_drvdata(struct snd_soc_dai *dai)
+{
+	return dev_get_drvdata(dai->dev);
 }
 
 #endif
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
index c5d9987..8fd3b41 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
@@ -172,9 +172,19 @@
 #define SND_SOC_DAPM_AIF_IN(wname, stname, wslot, wreg, wshift, winvert) \
 {	.id = snd_soc_dapm_aif_in, .name = wname, .sname = stname, \
 	.reg = wreg, .shift = wshift, .invert = winvert }
+#define SND_SOC_DAPM_AIF_IN_E(wname, stname, wslot, wreg, wshift, winvert, \
+			      wevent, wflags)				\
+{	.id = snd_soc_dapm_aif_in, .name = wname, .sname = stname, \
+	.reg = wreg, .shift = wshift, .invert = winvert, \
+	.event = wevent, .event_flags = wflags }
 #define SND_SOC_DAPM_AIF_OUT(wname, stname, wslot, wreg, wshift, winvert) \
 {	.id = snd_soc_dapm_aif_out, .name = wname, .sname = stname, \
 	.reg = wreg, .shift = wshift, .invert = winvert }
+#define SND_SOC_DAPM_AIF_OUT_E(wname, stname, wslot, wreg, wshift, winvert, \
+			     wevent, wflags)				\
+{	.id = snd_soc_dapm_aif_out, .name = wname, .sname = stname, \
+	.reg = wreg, .shift = wshift, .invert = winvert, \
+	.event = wevent, .event_flags = wflags }
 #define SND_SOC_DAPM_DAC(wname, stname, wreg, wshift, winvert) \
 {	.id = snd_soc_dapm_dac, .name = wname, .sname = stname, .reg = wreg, \
 	.shift = wshift, .invert = winvert}
@@ -322,14 +332,14 @@
 
 /* dapm path setup */
 int snd_soc_dapm_new_widgets(struct snd_soc_codec *codec);
-void snd_soc_dapm_free(struct snd_soc_device *socdev);
+void snd_soc_dapm_free(struct snd_soc_codec *codec);
 int snd_soc_dapm_add_routes(struct snd_soc_codec *codec,
 			    const struct snd_soc_dapm_route *route, int num);
 
 /* dapm events */
-int snd_soc_dapm_stream_event(struct snd_soc_codec *codec, char *stream,
-	int event);
-void snd_soc_dapm_shutdown(struct snd_soc_device *socdev);
+int snd_soc_dapm_stream_event(struct snd_soc_pcm_runtime *rtd,
+	const char *stream, int event);
+void snd_soc_dapm_shutdown(struct snd_soc_card *card);
 
 /* dapm sys fs - used by the core */
 int snd_soc_dapm_sys_add(struct device *dev);
diff --git a/include/sound/soc-of-simple.h b/include/sound/soc-of-simple.h
deleted file mode 100644
index a064e19..0000000
--- a/include/sound/soc-of-simple.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * OF helpers for ALSA SoC
- *
- * Copyright (C) 2008, Secret Lab Technologies Ltd.
- */
-
-#ifndef _INCLUDE_SOC_OF_H_
-#define _INCLUDE_SOC_OF_H_
-
-#if defined(CONFIG_SND_SOC_OF_SIMPLE) || defined(CONFIG_SND_SOC_OF_SIMPLE_MODULE)
-
-#include <linux/of.h>
-#include <sound/soc.h>
-
-int of_snd_soc_register_codec(struct snd_soc_codec_device *codec_dev,
-			      void *codec_data, struct snd_soc_dai *dai,
-			      struct device_node *node);
-
-int of_snd_soc_register_platform(struct snd_soc_platform *platform,
-				 struct device_node *node,
-				 struct snd_soc_dai *cpu_dai);
-
-#endif
-
-#endif /* _INCLUDE_SOC_OF_H_ */
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 65e9d03..493b3a4 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -214,10 +214,10 @@
  * @OFF:     Power Off. No restrictions on transition times.
  */
 enum snd_soc_bias_level {
-	SND_SOC_BIAS_ON,
-	SND_SOC_BIAS_PREPARE,
-	SND_SOC_BIAS_STANDBY,
 	SND_SOC_BIAS_OFF,
+	SND_SOC_BIAS_STANDBY,
+	SND_SOC_BIAS_PREPARE,
+	SND_SOC_BIAS_ON,
 };
 
 struct snd_jack;
@@ -228,13 +228,17 @@
 struct snd_soc_dai_mode;
 struct snd_soc_pcm_runtime;
 struct snd_soc_dai;
+struct snd_soc_dai_driver;
 struct snd_soc_platform;
 struct snd_soc_dai_link;
+struct snd_soc_platform_driver;
 struct snd_soc_codec;
+struct snd_soc_codec_driver;
 struct soc_enum;
 struct snd_soc_ac97_ops;
 struct snd_soc_jack;
 struct snd_soc_jack_pin;
+
 #ifdef CONFIG_GPIOLIB
 struct snd_soc_jack_gpio;
 #endif
@@ -249,19 +253,18 @@
 	SND_SOC_SPI,
 };
 
-int snd_soc_register_platform(struct snd_soc_platform *platform);
-void snd_soc_unregister_platform(struct snd_soc_platform *platform);
-int snd_soc_register_codec(struct snd_soc_codec *codec);
-void snd_soc_unregister_codec(struct snd_soc_codec *codec);
+int snd_soc_register_platform(struct device *dev,
+		struct snd_soc_platform_driver *platform_drv);
+void snd_soc_unregister_platform(struct device *dev);
+int snd_soc_register_codec(struct device *dev,
+		struct snd_soc_codec_driver *codec_drv,
+		struct snd_soc_dai_driver *dai_drv, int num_dai);
+void snd_soc_unregister_codec(struct device *dev);
 int snd_soc_codec_volatile_register(struct snd_soc_codec *codec, int reg);
 int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec,
 			       int addr_bits, int data_bits,
 			       enum snd_soc_control_type control);
 
-/* pcm <-> DAI connect */
-void snd_soc_free_pcms(struct snd_soc_device *socdev);
-int snd_soc_new_pcms(struct snd_soc_device *socdev, int idx, const char *xid);
-
 /* Utility functions to get clock rates from various things */
 int snd_soc_calc_frame_size(int sample_size, int channels, int tdm_slots);
 int snd_soc_params_to_frame_size(struct snd_pcm_hw_params *params);
@@ -273,7 +276,7 @@
 	const struct snd_pcm_hardware *hw);
 
 /* Jack reporting */
-int snd_soc_jack_new(struct snd_soc_card *card, const char *id, int type,
+int snd_soc_jack_new(struct snd_soc_codec *codec, const char *id, int type,
 		     struct snd_soc_jack *jack);
 void snd_soc_jack_report(struct snd_soc_jack *jack, int status, int mask);
 int snd_soc_jack_add_pins(struct snd_soc_jack *jack, int count,
@@ -390,7 +393,7 @@
 
 struct snd_soc_jack {
 	struct snd_jack *jack;
-	struct snd_soc_card *card;
+	struct snd_soc_codec *codec;
 	struct list_head pins;
 	int status;
 	struct blocking_notifier_head notifier;
@@ -398,15 +401,13 @@
 
 /* SoC PCM stream information */
 struct snd_soc_pcm_stream {
-	char *stream_name;
+	const char *stream_name;
 	u64 formats;			/* SNDRV_PCM_FMTBIT_* */
 	unsigned int rates;		/* SNDRV_PCM_RATE_* */
 	unsigned int rate_min;		/* min rate */
 	unsigned int rate_max;		/* max rate */
 	unsigned int channels_min;	/* min channels */
 	unsigned int channels_max;	/* max channels */
-	unsigned int active;		/* stream is in use */
-	void *dma_data;			/* used by platform code */
 };
 
 /* SoC audio ops */
@@ -419,44 +420,35 @@
 	int (*trigger)(struct snd_pcm_substream *, int);
 };
 
-/* SoC Audio Codec */
+/* SoC Audio Codec device */
 struct snd_soc_codec {
-	char *name;
-	struct module *owner;
-	struct mutex mutex;
+	const char *name;
+	int id;
 	struct device *dev;
-	struct snd_soc_device *socdev;
+	struct snd_soc_codec_driver *driver;
 
+	struct mutex mutex;
+	struct snd_soc_card *card;
 	struct list_head list;
-
-	/* callbacks */
-	int (*set_bias_level)(struct snd_soc_codec *,
-			      enum snd_soc_bias_level level);
+	struct list_head card_list;
+	int num_dai;
 
 	/* runtime */
-	struct snd_card *card;
 	struct snd_ac97 *ac97;  /* for ad-hoc ac97 devices */
 	unsigned int active;
-	unsigned int pcm_devs;
-	void *drvdata;
-
-	/* codec IO */
-	void *control_data; /* codec control (i2c/3wire) data */
-	unsigned int (*read)(struct snd_soc_codec *, unsigned int);
-	int (*write)(struct snd_soc_codec *, unsigned int, unsigned int);
-	int (*display_register)(struct snd_soc_codec *, char *,
-				size_t, unsigned int);
-	int (*volatile_register)(unsigned int);
-	int (*readable_register)(unsigned int);
-	hw_write_t hw_write;
-	unsigned int (*hw_read)(struct snd_soc_codec *, unsigned int);
-	void *reg_cache;
-	short reg_cache_size;
-	short reg_cache_step;
-
 	unsigned int idle_bias_off:1; /* Use BIAS_OFF instead of STANDBY */
 	unsigned int cache_only:1;  /* Suppress writes to hardware */
 	unsigned int cache_sync:1; /* Cache needs to be synced to hardware */
+	unsigned int suspended:1; /* Codec is in suspend PM state */
+	unsigned int probed:1; /* Codec has been probed */
+	unsigned int ac97_registered:1; /* Codec has been AC97 registered */
+	unsigned int sysfs_registered:1; /* codec has been sysfs registered */
+
+	/* codec IO */
+	void *control_data; /* codec control (i2c/3wire) data */
+	hw_write_t hw_write;
+	unsigned int (*hw_read)(struct snd_soc_codec *, unsigned int);
+	void *reg_cache;
 
 	/* dapm */
 	u32 pop_time;
@@ -466,10 +458,6 @@
 	enum snd_soc_bias_level suspend_bias_level;
 	struct delayed_work delayed_work;
 
-	/* codec DAI's */
-	struct snd_soc_dai *dai;
-	unsigned int num_dai;
-
 #ifdef CONFIG_DEBUG_FS
 	struct dentry *debugfs_codec_root;
 	struct dentry *debugfs_reg;
@@ -478,23 +466,40 @@
 #endif
 };
 
-/* codec device */
-struct snd_soc_codec_device {
-	int (*probe)(struct platform_device *pdev);
-	int (*remove)(struct platform_device *pdev);
-	int (*suspend)(struct platform_device *pdev, pm_message_t state);
-	int (*resume)(struct platform_device *pdev);
+/* codec driver */
+struct snd_soc_codec_driver {
+
+	/* driver ops */
+	int (*probe)(struct snd_soc_codec *);
+	int (*remove)(struct snd_soc_codec *);
+	int (*suspend)(struct snd_soc_codec *,
+			pm_message_t state);
+	int (*resume)(struct snd_soc_codec *);
+
+	/* codec IO */
+	unsigned int (*read)(struct snd_soc_codec *, unsigned int);
+	int (*write)(struct snd_soc_codec *, unsigned int, unsigned int);
+	int (*display_register)(struct snd_soc_codec *, char *,
+				size_t, unsigned int);
+	int (*volatile_register)(unsigned int);
+	int (*readable_register)(unsigned int);
+	short reg_cache_size;
+	short reg_cache_step;
+	short reg_word_size;
+	const void *reg_cache_default;
+
+	/* codec bias level */
+	int (*set_bias_level)(struct snd_soc_codec *,
+			      enum snd_soc_bias_level level);
 };
 
 /* SoC platform interface */
-struct snd_soc_platform {
-	char *name;
-	struct list_head list;
+struct snd_soc_platform_driver {
 
-	int (*probe)(struct platform_device *pdev);
-	int (*remove)(struct platform_device *pdev);
-	int (*suspend)(struct snd_soc_dai_link *dai_link);
-	int (*resume)(struct snd_soc_dai_link *dai_link);
+	int (*probe)(struct snd_soc_platform *);
+	int (*remove)(struct snd_soc_platform *);
+	int (*suspend)(struct snd_soc_dai *dai);
+	int (*resume)(struct snd_soc_dai *dai);
 
 	/* pcm creation and destruction */
 	int (*pcm_new)(struct snd_card *, struct snd_soc_dai *,
@@ -509,23 +514,31 @@
 		struct snd_soc_dai *);
 
 	/* platform stream ops */
-	struct snd_pcm_ops *pcm_ops;
+	struct snd_pcm_ops *ops;
 };
 
-/* SoC machine DAI configuration, glues a codec and cpu DAI together */
-struct snd_soc_dai_link  {
-	char *name;			/* Codec name */
-	char *stream_name;		/* Stream name */
+struct snd_soc_platform {
+	const char *name;
+	int id;
+	struct device *dev;
+	struct snd_soc_platform_driver *driver;
 
-	/* DAI */
-	struct snd_soc_dai *codec_dai;
-	struct snd_soc_dai *cpu_dai;
+	unsigned int suspended:1; /* platform is suspended */
+	unsigned int probed:1;
 
-	/* machine stream operations */
-	struct snd_soc_ops *ops;
+	struct snd_soc_card *card;
+	struct list_head list;
+	struct list_head card_list;
+};
 
-	/* codec/machine specific init - e.g. add machine controls */
-	int (*init)(struct snd_soc_codec *codec);
+struct snd_soc_dai_link {
+	/* config - must be set by machine driver */
+	const char *name;			/* Codec name */
+	const char *stream_name;		/* Stream name */
+	const char *codec_name;		/* for multi-codec */
+	const char *platform_name;	/* for multi-platform */
+	const char *cpu_dai_name;
+	const char *codec_dai_name;
 
 	/* Keep DAI active over suspend */
 	unsigned int ignore_suspend:1;
@@ -533,21 +546,24 @@
 	/* Symmetry requirements */
 	unsigned int symmetric_rates:1;
 
-	/* Symmetry data - only valid if symmetry is being enforced */
-	unsigned int rate;
+	/* codec/machine specific init - e.g. add machine controls */
+	int (*init)(struct snd_soc_pcm_runtime *rtd);
 
-	/* DAI pcm */
-	struct snd_pcm *pcm;
+	/* machine stream operations */
+	struct snd_soc_ops *ops;
 };
 
 /* SoC card */
 struct snd_soc_card {
-	char *name;
+	const char *name;
 	struct device *dev;
+	struct snd_card *snd_card;
+	struct module *owner;
 
 	struct list_head list;
+	struct mutex mutex;
 
-	int instantiated;
+	bool instantiated;
 
 	int (*probe)(struct platform_device *pdev);
 	int (*remove)(struct platform_device *pdev);
@@ -568,28 +584,38 @@
 	/* CPU <--> Codec DAI links  */
 	struct snd_soc_dai_link *dai_link;
 	int num_links;
+	struct snd_soc_pcm_runtime *rtd;
+	int num_rtd;
 
-	struct snd_soc_device *socdev;
-
-	struct snd_soc_codec *codec;
-
-	struct snd_soc_platform *platform;
-	struct delayed_work delayed_work;
 	struct work_struct deferred_resume_work;
+
+	/* lists of probed devices belonging to this card */
+	struct list_head codec_dev_list;
+	struct list_head platform_dev_list;
+	struct list_head dai_dev_list;
 };
 
-/* SoC Device - the audio subsystem */
-struct snd_soc_device {
-	struct device *dev;
+/* SoC machine DAI configuration, glues a codec and cpu DAI together */
+struct snd_soc_pcm_runtime  {
+	struct device dev;
 	struct snd_soc_card *card;
-	struct snd_soc_codec_device *codec_dev;
-	void *codec_data;
-};
+	struct snd_soc_dai_link *dai_link;
 
-/* runtime channel data */
-struct snd_soc_pcm_runtime {
-	struct snd_soc_dai_link *dai;
-	struct snd_soc_device *socdev;
+	unsigned int complete:1;
+	unsigned int dev_registered:1;
+
+	/* Symmetry data - only valid if symmetry is being enforced */
+	unsigned int rate;
+	long pmdown_time;
+
+	/* runtime devices */
+	struct snd_pcm *pcm;
+	struct snd_soc_codec *codec;
+	struct snd_soc_platform *platform;
+	struct snd_soc_dai *codec_dai;
+	struct snd_soc_dai *cpu_dai;
+
+	struct delayed_work delayed_work;
 };
 
 /* mixer control */
@@ -615,24 +641,48 @@
 static inline unsigned int snd_soc_read(struct snd_soc_codec *codec,
 					unsigned int reg)
 {
-	return codec->read(codec, reg);
+	return codec->driver->read(codec, reg);
 }
 
 static inline unsigned int snd_soc_write(struct snd_soc_codec *codec,
 					 unsigned int reg, unsigned int val)
 {
-	return codec->write(codec, reg, val);
+	return codec->driver->write(codec, reg, val);
 }
 
+/* device driver data */
+
 static inline void snd_soc_codec_set_drvdata(struct snd_soc_codec *codec,
-					     void *data)
+		void *data)
 {
-	codec->drvdata = data;
+	dev_set_drvdata(codec->dev, data);
 }
 
 static inline void *snd_soc_codec_get_drvdata(struct snd_soc_codec *codec)
 {
-	return codec->drvdata;
+	return dev_get_drvdata(codec->dev);
+}
+
+static inline void snd_soc_platform_set_drvdata(struct snd_soc_platform *platform,
+		void *data)
+{
+	dev_set_drvdata(platform->dev, data);
+}
+
+static inline void *snd_soc_platform_get_drvdata(struct snd_soc_platform *platform)
+{
+	return dev_get_drvdata(platform->dev);
+}
+
+static inline void snd_soc_pcm_set_drvdata(struct snd_soc_pcm_runtime *rtd,
+		void *data)
+{
+	dev_set_drvdata(&rtd->dev, data);
+}
+
+static inline void *snd_soc_pcm_get_drvdata(struct snd_soc_pcm_runtime *rtd)
+{
+	return dev_get_drvdata(&rtd->dev);
 }
 
 #include <sound/soc-dai.h>
diff --git a/include/sound/tlv320aic3x.h b/include/sound/tlv320aic3x.h
index b1a5f34..99e0308b 100644
--- a/include/sound/tlv320aic3x.h
+++ b/include/sound/tlv320aic3x.h
@@ -10,8 +10,49 @@
 #ifndef __TLV320AIC3x_H__
 #define __TLV320AIC3x_H__
 
-struct aic3x_pdata {
-	int gpio_reset; /* < 0 if not used */
+/* GPIO API */
+enum {
+	AIC3X_GPIO1_FUNC_DISABLED		= 0,
+	AIC3X_GPIO1_FUNC_AUDIO_WORDCLK_ADC	= 1,
+	AIC3X_GPIO1_FUNC_CLOCK_MUX		= 2,
+	AIC3X_GPIO1_FUNC_CLOCK_MUX_DIV2		= 3,
+	AIC3X_GPIO1_FUNC_CLOCK_MUX_DIV4		= 4,
+	AIC3X_GPIO1_FUNC_CLOCK_MUX_DIV8		= 5,
+	AIC3X_GPIO1_FUNC_SHORT_CIRCUIT_IRQ	= 6,
+	AIC3X_GPIO1_FUNC_AGC_NOISE_IRQ		= 7,
+	AIC3X_GPIO1_FUNC_INPUT			= 8,
+	AIC3X_GPIO1_FUNC_OUTPUT			= 9,
+	AIC3X_GPIO1_FUNC_DIGITAL_MIC_MODCLK	= 10,
+	AIC3X_GPIO1_FUNC_AUDIO_WORDCLK		= 11,
+	AIC3X_GPIO1_FUNC_BUTTON_IRQ		= 12,
+	AIC3X_GPIO1_FUNC_HEADSET_DETECT_IRQ	= 13,
+	AIC3X_GPIO1_FUNC_HEADSET_DETECT_OR_BUTTON_IRQ	= 14,
+	AIC3X_GPIO1_FUNC_ALL_IRQ		= 16
 };
 
-#endif
\ No newline at end of file
+enum {
+	AIC3X_GPIO2_FUNC_DISABLED		= 0,
+	AIC3X_GPIO2_FUNC_HEADSET_DETECT_IRQ	= 2,
+	AIC3X_GPIO2_FUNC_INPUT			= 3,
+	AIC3X_GPIO2_FUNC_OUTPUT			= 4,
+	AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT	= 5,
+	AIC3X_GPIO2_FUNC_AUDIO_BITCLK		= 8,
+	AIC3X_GPIO2_FUNC_HEADSET_DETECT_OR_BUTTON_IRQ = 9,
+	AIC3X_GPIO2_FUNC_ALL_IRQ		= 10,
+	AIC3X_GPIO2_FUNC_SHORT_CIRCUIT_OR_AGC_IRQ = 11,
+	AIC3X_GPIO2_FUNC_HEADSET_OR_BUTTON_PRESS_OR_SHORT_CIRCUIT_IRQ = 12,
+	AIC3X_GPIO2_FUNC_SHORT_CIRCUIT_IRQ	= 13,
+	AIC3X_GPIO2_FUNC_AGC_NOISE_IRQ		= 14,
+	AIC3X_GPIO2_FUNC_BUTTON_PRESS_IRQ	= 15
+};
+
+struct aic3x_setup_data {
+	unsigned int gpio_func[2];
+};
+
+struct aic3x_pdata {
+	int gpio_reset; /* < 0 if not used */
+	struct aic3x_setup_data *setup;
+};
+
+#endif
diff --git a/include/sound/wm8962.h b/include/sound/wm8962.h
new file mode 100644
index 0000000..f70258e
--- /dev/null
+++ b/include/sound/wm8962.h
@@ -0,0 +1,23 @@
+/*
+ * wm8962.h  --  WM8962 Soc Audio driver platform data
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _WM8962_PDATA_H
+#define _WM8962_PDATA_H
+
+#define WM8962_MAX_GPIO 6
+
+/* Use to set GPIO default values to zero */
+#define WM8962_GPIO_SET 0x10000
+
+struct wm8962_pdata {
+	u32 gpio_init[WM8962_MAX_GPIO];
+
+	bool spk_mono;   /* Speaker outputs tied together as mono */
+};
+
+#endif
diff --git a/include/video/sh_mobile_hdmi.h b/include/video/sh_mobile_hdmi.h
index 577cf18..1e1aa54 100644
--- a/include/video/sh_mobile_hdmi.h
+++ b/include/video/sh_mobile_hdmi.h
@@ -14,9 +14,25 @@
 struct sh_mobile_lcdc_chan_cfg;
 struct device;
 
+/*
+ * flags format
+ *
+ * 0x0000000A
+ *
+ * A: Audio source select
+ */
+
+/* Audio source select */
+#define HDMI_SND_SRC_MASK	(0xF << 0)
+#define HDMI_SND_SRC_I2S	(0 << 0) /* default */
+#define HDMI_SND_SRC_SPDIF	(1 << 0)
+#define HDMI_SND_SRC_DSD	(2 << 0)
+#define HDMI_SND_SRC_HBR	(3 << 0)
+
 struct sh_mobile_hdmi_info {
 	struct sh_mobile_lcdc_chan_cfg	*lcd_chan;
 	struct device			*lcd_dev;
+	unsigned int			 flags;
 };
 
 #endif
diff --git a/sound/soc/atmel/atmel-pcm.c b/sound/soc/atmel/atmel-pcm.c
index dc5249f..d0e7532 100644
--- a/sound/soc/atmel/atmel-pcm.c
+++ b/sound/soc/atmel/atmel-pcm.c
@@ -179,7 +179,7 @@
 	snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
 	runtime->dma_bytes = params_buffer_bytes(params);
 
-	prtd->params = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
+	prtd->params = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 	prtd->params->dma_intr_handler = atmel_pcm_dma_irq;
 
 	prtd->dma_buffer = runtime->dma_addr;
@@ -374,14 +374,14 @@
 	if (!card->dev->coherent_dma_mask)
 		card->dev->coherent_dma_mask = 0xffffffff;
 
-	if (dai->playback.channels_min) {
+	if (dai->driver->playback.channels_min) {
 		ret = atmel_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_PLAYBACK);
 		if (ret)
 			goto out;
 	}
 
-	if (dai->capture.channels_min) {
+	if (dai->driver->capture.channels_min) {
 		pr_debug("at32-pcm:"
 				"Allocating PCM capture DMA buffer\n");
 		ret = atmel_pcm_preallocate_dma_buffer(pcm,
@@ -414,12 +414,9 @@
 }
 
 #ifdef CONFIG_PM
-static int atmel_pcm_suspend(struct snd_soc_dai_link *dai_link)
+static int atmel_pcm_suspend(struct snd_soc_dai *dai)
 {
-	struct snd_pcm *pcm = dai_link->pcm;
-	struct snd_pcm_str *stream = &pcm->streams[0];
-	struct snd_pcm_substream *substream = stream->substream;
-	struct snd_pcm_runtime *runtime = substream->runtime;
+	struct snd_pcm_runtime *runtime = dai->runtime;
 	struct atmel_runtime_data *prtd;
 	struct atmel_pcm_dma_params *params;
 
@@ -441,12 +438,9 @@
 	return 0;
 }
 
-static int atmel_pcm_resume(struct snd_soc_dai_link *dai_link)
+static int atmel_pcm_resume(struct snd_soc_dai *dai)
 {
-	struct snd_pcm *pcm = dai_link->pcm;
-	struct snd_pcm_str *stream = &pcm->streams[0];
-	struct snd_pcm_substream *substream = stream->substream;
-	struct snd_pcm_runtime *runtime = substream->runtime;
+	struct snd_pcm_runtime *runtime = dai->runtime;
 	struct atmel_runtime_data *prtd;
 	struct atmel_pcm_dma_params *params;
 
@@ -470,27 +464,46 @@
 #define atmel_pcm_resume	NULL
 #endif
 
-struct snd_soc_platform atmel_soc_platform = {
-	.name		= "atmel-audio",
-	.pcm_ops 	= &atmel_pcm_ops,
+static struct snd_soc_platform_driver atmel_soc_platform = {
+	.ops		= &atmel_pcm_ops,
 	.pcm_new	= atmel_pcm_new,
 	.pcm_free	= atmel_pcm_free_dma_buffers,
 	.suspend	= atmel_pcm_suspend,
 	.resume		= atmel_pcm_resume,
 };
-EXPORT_SYMBOL_GPL(atmel_soc_platform);
 
-static int __init atmel_pcm_modinit(void)
+static int __devinit atmel_soc_platform_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_platform(&atmel_soc_platform);
+	return snd_soc_register_platform(&pdev->dev, &atmel_soc_platform);
 }
-module_init(atmel_pcm_modinit);
 
-static void __exit atmel_pcm_modexit(void)
+static int __devexit atmel_soc_platform_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_platform(&atmel_soc_platform);
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
 }
-module_exit(atmel_pcm_modexit);
+
+static struct platform_driver atmel_pcm_driver = {
+	.driver = {
+			.name = "atmel-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = atmel_soc_platform_probe,
+	.remove = __devexit_p(atmel_soc_platform_remove),
+};
+
+static int __init snd_atmel_pcm_init(void)
+{
+	return platform_driver_register(&atmel_pcm_driver);
+}
+module_init(snd_atmel_pcm_init);
+
+static void __exit snd_atmel_pcm_exit(void)
+{
+	platform_driver_unregister(&atmel_pcm_driver);
+}
+module_exit(snd_atmel_pcm_exit);
 
 MODULE_AUTHOR("Sedji Gaouaou <sedji.gaouaou@atmel.com>");
 MODULE_DESCRIPTION("Atmel PCM module");
diff --git a/sound/soc/atmel/atmel-pcm.h b/sound/soc/atmel/atmel-pcm.h
index ec9b282..2597329 100644
--- a/sound/soc/atmel/atmel-pcm.h
+++ b/sound/soc/atmel/atmel-pcm.h
@@ -74,9 +74,6 @@
 	void (*dma_intr_handler)(u32, struct snd_pcm_substream *);
 };
 
-extern struct snd_soc_platform atmel_soc_platform;
-
-
 /*
  * SSC register access (since ssc_writel() / ssc_readl() require literal name)
  */
diff --git a/sound/soc/atmel/atmel_ssc_dai.c b/sound/soc/atmel/atmel_ssc_dai.c
index c85844d..5d230ce 100644
--- a/sound/soc/atmel/atmel_ssc_dai.c
+++ b/sound/soc/atmel/atmel_ssc_dai.c
@@ -205,8 +205,7 @@
 static int atmel_ssc_startup(struct snd_pcm_substream *substream,
 			     struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
-	struct atmel_ssc_info *ssc_p = &ssc_info[rtd->dai->cpu_dai->id];
+	struct atmel_ssc_info *ssc_p = &ssc_info[dai->id];
 	int dir_mask;
 
 	pr_debug("atmel_ssc_startup: SSC_SR=0x%u\n",
@@ -235,8 +234,7 @@
 static void atmel_ssc_shutdown(struct snd_pcm_substream *substream,
 			       struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
-	struct atmel_ssc_info *ssc_p = &ssc_info[rtd->dai->cpu_dai->id];
+	struct atmel_ssc_info *ssc_p = &ssc_info[dai->id];
 	struct atmel_pcm_dma_params *dma_params;
 	int dir, dir_mask;
 
@@ -338,7 +336,7 @@
 	struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
-	int id = rtd->dai->cpu_dai->id;
+	int id = dai->id;
 	struct atmel_ssc_info *ssc_p = &ssc_info[id];
 	struct atmel_pcm_dma_params *dma_params;
 	int dir, channels, bits;
@@ -368,7 +366,7 @@
 	 * function.  It should not be used for other purposes
 	 * as it is common to all substreams.
 	 */
-	snd_soc_dai_set_dma_data(rtd->dai->cpu_dai, substream, dma_params);
+	snd_soc_dai_set_dma_data(rtd->cpu_dai, substream, dma_params);
 
 	channels = params_channels(params);
 
@@ -605,8 +603,7 @@
 static int atmel_ssc_prepare(struct snd_pcm_substream *substream,
 			     struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
-	struct atmel_ssc_info *ssc_p = &ssc_info[rtd->dai->cpu_dai->id];
+	struct atmel_ssc_info *ssc_p = &ssc_info[dai->id];
 	struct atmel_pcm_dma_params *dma_params;
 	int dir;
 
@@ -690,6 +687,32 @@
 #  define atmel_ssc_resume	NULL
 #endif /* CONFIG_PM */
 
+static int atmel_ssc_probe(struct snd_soc_dai *dai)
+{
+	struct atmel_ssc_info *ssc_p = &ssc_info[dai->id];
+	int ret = 0;
+
+	snd_soc_dai_set_drvdata(dai, ssc_p);
+
+	/*
+	 * Request SSC device
+	 */
+	ssc_p->ssc = ssc_request(dai->id);
+	if (IS_ERR(ssc_p->ssc)) {
+		printk(KERN_ERR "ASoC: Failed to request SSC %d\n", dai->id);
+		ret = PTR_ERR(ssc_p->ssc);
+	}
+
+	return ret;
+}
+
+static int atmel_ssc_remove(struct snd_soc_dai *dai)
+{
+	struct atmel_ssc_info *ssc_p = snd_soc_dai_get_drvdata(dai);
+
+	ssc_free(ssc_p->ssc);
+	return 0;
+}
 
 #define ATMEL_SSC_RATES (SNDRV_PCM_RATE_8000_96000)
 
@@ -705,9 +728,11 @@
 	.set_clkdiv	= atmel_ssc_set_dai_clkdiv,
 };
 
-struct snd_soc_dai atmel_ssc_dai[NUM_SSC_DEVICES] = {
-	{	.name = "atmel-ssc0",
-		.id = 0,
+static struct snd_soc_dai_driver atmel_ssc_dai[NUM_SSC_DEVICES] = {
+	{
+		.name = "atmel-ssc-dai.0",
+		.probe = atmel_ssc_probe,
+		.remove = atmel_ssc_remove,
 		.suspend = atmel_ssc_suspend,
 		.resume = atmel_ssc_resume,
 		.playback = {
@@ -721,11 +746,12 @@
 			.rates = ATMEL_SSC_RATES,
 			.formats = ATMEL_SSC_FORMATS,},
 		.ops = &atmel_ssc_dai_ops,
-		.private_data = &ssc_info[0],
 	},
 #if NUM_SSC_DEVICES == 3
-	{	.name = "atmel-ssc1",
-		.id = 1,
+	{
+		.name = "atmel-ssc-dai.1",
+		.probe = atmel_ssc_probe,
+		.remove = atmel_ssc_remove,
 		.suspend = atmel_ssc_suspend,
 		.resume = atmel_ssc_resume,
 		.playback = {
@@ -739,10 +765,11 @@
 			.rates = ATMEL_SSC_RATES,
 			.formats = ATMEL_SSC_FORMATS,},
 		.ops = &atmel_ssc_dai_ops,
-		.private_data = &ssc_info[1],
 	},
-	{	.name = "atmel-ssc2",
-		.id = 2,
+	{
+		.name = "atmel-ssc-dai.2",
+		.probe = atmel_ssc_probe,
+		.remove = atmel_ssc_remove,
 		.suspend = atmel_ssc_suspend,
 		.resume = atmel_ssc_resume,
 		.playback = {
@@ -756,23 +783,94 @@
 			.rates = ATMEL_SSC_RATES,
 			.formats = ATMEL_SSC_FORMATS,},
 		.ops = &atmel_ssc_dai_ops,
-		.private_data = &ssc_info[2],
 	},
 #endif
 };
-EXPORT_SYMBOL_GPL(atmel_ssc_dai);
 
-static int __init atmel_ssc_modinit(void)
+static __devinit int asoc_ssc_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_dais(atmel_ssc_dai, ARRAY_SIZE(atmel_ssc_dai));
+	BUG_ON(pdev->id < 0);
+	BUG_ON(pdev->id >= ARRAY_SIZE(atmel_ssc_dai));
+	return snd_soc_register_dai(&pdev->dev, &atmel_ssc_dai[pdev->id]);
 }
-module_init(atmel_ssc_modinit);
 
-static void __exit atmel_ssc_modexit(void)
+static int __devexit asoc_ssc_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_dais(atmel_ssc_dai, ARRAY_SIZE(atmel_ssc_dai));
+	snd_soc_unregister_dai(&pdev->dev);
+	return 0;
 }
-module_exit(atmel_ssc_modexit);
+
+static struct platform_driver asoc_ssc_driver = {
+	.driver = {
+			.name = "atmel-ssc-dai",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = asoc_ssc_probe,
+	.remove = __devexit_p(asoc_ssc_remove),
+};
+
+/**
+ * atmel_ssc_set_audio - Allocate the specified SSC for audio use.
+ */
+int atmel_ssc_set_audio(int ssc_id)
+{
+	struct ssc_device *ssc;
+	static struct platform_device *dma_pdev;
+	struct platform_device *ssc_pdev;
+	int ret;
+
+	if (ssc_id < 0 || ssc_id >= ARRAY_SIZE(atmel_ssc_dai))
+		return -EINVAL;
+
+	/* Allocate a dummy device for DMA if we don't have one already */
+	if (!dma_pdev) {
+		dma_pdev = platform_device_alloc("atmel-pcm-audio", -1);
+		if (!dma_pdev)
+			return -ENOMEM;
+
+		ret = platform_device_add(dma_pdev);
+		if (ret < 0) {
+			platform_device_put(dma_pdev);
+			dma_pdev = NULL;
+			return ret;
+		}
+	}
+
+	ssc_pdev = platform_device_alloc("atmel-ssc-dai", ssc_id);
+	if (!ssc_pdev) {
+		ssc_free(ssc);
+		return -ENOMEM;
+	}
+
+	/* If we can grab the SSC briefly to parent the DAI device off it */
+	ssc = ssc_request(ssc_id);
+	if (IS_ERR(ssc))
+		pr_warn("Unable to parent ASoC SSC DAI on SSC: %ld\n",
+			PTR_ERR(ssc));
+	else
+		ssc_pdev->dev.parent = &(ssc->pdev->dev);
+	ssc_free(ssc);
+
+	ret = platform_device_add(ssc_pdev);
+	if (ret < 0)
+		platform_device_put(ssc_pdev);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(atmel_ssc_set_audio);
+
+static int __init snd_atmel_ssc_init(void)
+{
+	return platform_driver_register(&asoc_ssc_driver);
+}
+module_init(snd_atmel_ssc_init);
+
+static void __exit snd_atmel_ssc_exit(void)
+{
+	platform_driver_unregister(&asoc_ssc_driver);
+}
+module_exit(snd_atmel_ssc_exit);
 
 /* Module information */
 MODULE_AUTHOR("Sedji Gaouaou, sedji.gaouaou@atmel.com, www.atmel.com");
diff --git a/sound/soc/atmel/atmel_ssc_dai.h b/sound/soc/atmel/atmel_ssc_dai.h
index 391135f..5d4f0f9 100644
--- a/sound/soc/atmel/atmel_ssc_dai.h
+++ b/sound/soc/atmel/atmel_ssc_dai.h
@@ -116,6 +116,7 @@
 	struct atmel_pcm_dma_params *dma_params[2];
 	struct atmel_ssc_state ssc_state;
 };
-extern struct snd_soc_dai atmel_ssc_dai[];
+
+int atmel_ssc_set_audio(int ssc);
 
 #endif /* _AT91_SSC_DAI_H */
diff --git a/sound/soc/atmel/playpaq_wm8510.c b/sound/soc/atmel/playpaq_wm8510.c
index 9df4c68..5f4e59f 100644
--- a/sound/soc/atmel/playpaq_wm8510.c
+++ b/sound/soc/atmel/playpaq_wm8510.c
@@ -83,7 +83,7 @@
 	struct snd_pcm_hw_params *params,
 	struct snd_soc_dai *cpu_dai)
 {
-	struct at32_ssc_info *ssc_p = cpu_dai->private_data;
+	struct at32_ssc_info *ssc_p = snd_soc_dai_get_drvdata(cpu_dai);
 	struct ssc_device *ssc = ssc_p->ssc;
 	struct ssc_clock_data cd;
 	unsigned int rate, width_bits, channels;
@@ -131,9 +131,9 @@
 				    struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct at32_ssc_info *ssc_p = cpu_dai->private_data;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct at32_ssc_info *ssc_p = snd_soc_dai_get_drvdata(cpu_dai);
 	struct ssc_device *ssc = ssc_p->ssc;
 	unsigned int pll_out = 0, bclk = 0, mclk_div = 0;
 	int ret;
@@ -315,8 +315,9 @@
 
 
 
-static int playpaq_wm8510_init(struct snd_soc_codec *codec)
+static int playpaq_wm8510_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int i;
 
 	/*
@@ -342,7 +343,7 @@
 
 
 	/* Make CSB show PLL rate */
-	snd_soc_dai_set_clkdiv(codec->dai, WM8510_OPCLKDIV,
+	snd_soc_dai_set_clkdiv(rtd->codec_dai, WM8510_OPCLKDIV,
 				       WM8510_OPCLKDIV_1 | 4);
 
 	return 0;
@@ -353,8 +354,10 @@
 static struct snd_soc_dai_link playpaq_wm8510_dai = {
 	.name = "WM8510",
 	.stream_name = "WM8510 PCM",
-	.cpu_dai = &at32_ssc_dai[0],
-	.codec_dai = &wm8510_dai,
+	.cpu_dai_name= "atmel-ssc-dai.0",
+	.platform_name = "atmel-pcm-audio",
+	.codec_name = "wm8510-codec.0-0x1a",
+	.codec_dai_name = "wm8510-hifi",
 	.init = playpaq_wm8510_init,
 	.ops = &playpaq_wm8510_ops,
 };
@@ -363,46 +366,16 @@
 
 static struct snd_soc_card snd_soc_playpaq = {
 	.name = "LRS_PlayPaq_WM8510",
-	.platform = &at32_soc_platform,
 	.dai_link = &playpaq_wm8510_dai,
 	.num_links = 1,
 };
 
-
-
-static struct wm8510_setup_data playpaq_wm8510_setup = {
-	.i2c_bus = 0,
-	.i2c_address = 0x1a,
-};
-
-
-
-static struct snd_soc_device playpaq_wm8510_snd_devdata = {
-	.card = &snd_soc_playpaq,
-	.codec_dev = &soc_codec_dev_wm8510,
-	.codec_data = &playpaq_wm8510_setup,
-};
-
 static struct platform_device *playpaq_snd_device;
 
 
 static int __init playpaq_asoc_init(void)
 {
 	int ret = 0;
-	struct at32_ssc_info *ssc_p = playpaq_wm8510_dai.cpu_dai->private_data;
-	struct ssc_device *ssc = NULL;
-
-
-	/*
-	 * Request SSC device
-	 */
-	ssc = ssc_request(0);
-	if (IS_ERR(ssc)) {
-		ret = PTR_ERR(ssc);
-		goto err_ssc;
-	}
-	ssc_p->ssc = ssc;
-
 
 	/*
 	 * Configure MCLK for WM8510
@@ -439,8 +412,7 @@
 		goto err_device_alloc;
 	}
 
-	platform_set_drvdata(playpaq_snd_device, &playpaq_wm8510_snd_devdata);
-	playpaq_wm8510_snd_devdata.dev = &playpaq_snd_device->dev;
+	platform_set_drvdata(playpaq_snd_device, &snd_soc_playpaq);
 
 	ret = platform_device_add(playpaq_snd_device);
 	if (ret) {
@@ -468,25 +440,12 @@
 		clk_put(_gclk0);
 		_gclk0 = NULL;
 	}
-err_gclk0:
-	ssc_free(ssc);
-err_ssc:
 	return ret;
 }
 
 
 static void __exit playpaq_asoc_exit(void)
 {
-	struct at32_ssc_info *ssc_p = playpaq_wm8510_dai.cpu_dai->private_data;
-	struct ssc_device *ssc;
-
-	if (ssc_p != NULL) {
-		ssc = ssc_p->ssc;
-		if (ssc != NULL)
-			ssc_free(ssc);
-		ssc_p->ssc = NULL;
-	}
-
 	if (_gclk0 != NULL) {
 		clk_put(_gclk0);
 		_gclk0 = NULL;
diff --git a/sound/soc/atmel/sam9g20_wm8731.c b/sound/soc/atmel/sam9g20_wm8731.c
index e028744..293569d 100644
--- a/sound/soc/atmel/sam9g20_wm8731.c
+++ b/sound/soc/atmel/sam9g20_wm8731.c
@@ -69,8 +69,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret;
 
 	/* set codec DAI configuration */
@@ -136,16 +136,17 @@
 /*
  * Logic for a wm8731 as connected on a at91sam9g20ek board.
  */
-static int at91sam9g20ek_wm8731_init(struct snd_soc_codec *codec)
+static int at91sam9g20ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
 {
-	struct snd_soc_dai *codec_dai = &codec->dai[0];
+	struct snd_soc_codec *codec = rtd->codec;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 	int ret;
 
 	printk(KERN_DEBUG
 			"at91sam9g20ek_wm8731 "
 			": at91sam9g20ek_wm8731_init() called\n");
 
-	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK,
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
 		MCLK_RATE, SND_SOC_CLOCK_IN);
 	if (ret < 0) {
 		printk(KERN_ERR "Failed to set WM8731 SYSCLK: %d\n", ret);
@@ -179,37 +180,37 @@
 static struct snd_soc_dai_link at91sam9g20ek_dai = {
 	.name = "WM8731",
 	.stream_name = "WM8731 PCM",
-	.cpu_dai = &atmel_ssc_dai[0],
-	.codec_dai = &wm8731_dai,
+	.cpu_dai_name = "atmel-ssc-dai.0",
+	.codec_dai_name = "wm8731-hifi",
 	.init = at91sam9g20ek_wm8731_init,
+	.platform_name = "atmel-pcm-audio",
+	.codec_name = "wm8731-codec.0-001b",
 	.ops = &at91sam9g20ek_ops,
 };
 
 static struct snd_soc_card snd_soc_at91sam9g20ek = {
 	.name = "AT91SAMG20-EK",
-	.platform = &atmel_soc_platform,
 	.dai_link = &at91sam9g20ek_dai,
 	.num_links = 1,
 	.set_bias_level = at91sam9g20ek_set_bias_level,
 };
 
-static struct snd_soc_device at91sam9g20ek_snd_devdata = {
-	.card = &snd_soc_at91sam9g20ek,
-	.codec_dev = &soc_codec_dev_wm8731,
-};
-
 static struct platform_device *at91sam9g20ek_snd_device;
 
 static int __init at91sam9g20ek_init(void)
 {
-	struct atmel_ssc_info *ssc_p = at91sam9g20ek_dai.cpu_dai->private_data;
-	struct ssc_device *ssc = NULL;
 	struct clk *pllb;
 	int ret;
 
 	if (!(machine_is_at91sam9g20ek() || machine_is_at91sam9g20ek_2mmc()))
 		return -ENODEV;
 
+	ret = atmel_ssc_set_audio(0);
+	if (ret != 0) {
+		pr_err("Failed to set SSC 0 for audio: %d\n", ret);
+		return ret;
+	}
+
 	/*
 	 * Codec MCLK is supplied by PCK0 - set it up.
 	 */
@@ -235,18 +236,6 @@
 
 	clk_set_rate(mclk, MCLK_RATE);
 
-	/*
-	 * Request SSC device
-	 */
-	ssc = ssc_request(0);
-	if (IS_ERR(ssc)) {
-		printk(KERN_ERR "ASoC: Failed to request SSC 0\n");
-		ret = PTR_ERR(ssc);
-		ssc = NULL;
-		goto err_ssc;
-	}
-	ssc_p->ssc = ssc;
-
 	at91sam9g20ek_snd_device = platform_device_alloc("soc-audio", -1);
 	if (!at91sam9g20ek_snd_device) {
 		printk(KERN_ERR "ASoC: Platform device allocation failed\n");
@@ -254,8 +243,7 @@
 	}
 
 	platform_set_drvdata(at91sam9g20ek_snd_device,
-			&at91sam9g20ek_snd_devdata);
-	at91sam9g20ek_snd_devdata.dev = &at91sam9g20ek_snd_device->dev;
+			&snd_soc_at91sam9g20ek);
 
 	ret = platform_device_add(at91sam9g20ek_snd_device);
 	if (ret) {
@@ -265,9 +253,6 @@
 
 	return ret;
 
-err_ssc:
-	ssc_free(ssc);
-	ssc_p->ssc = NULL;
 err_mclk:
 	clk_put(mclk);
 	mclk = NULL;
@@ -277,16 +262,6 @@
 
 static void __exit at91sam9g20ek_exit(void)
 {
-	struct atmel_ssc_info *ssc_p = at91sam9g20ek_dai.cpu_dai->private_data;
-	struct ssc_device *ssc;
-
-	if (ssc_p != NULL) {
-		ssc = ssc_p->ssc;
-		if (ssc != NULL)
-			ssc_free(ssc);
-		ssc_p->ssc = NULL;
-	}
-
 	platform_device_unregister(at91sam9g20ek_snd_device);
 	at91sam9g20ek_snd_device = NULL;
 	clk_put(mclk);
diff --git a/sound/soc/atmel/snd-soc-afeb9260.c b/sound/soc/atmel/snd-soc-afeb9260.c
index 23349de..e3d2835 100644
--- a/sound/soc/atmel/snd-soc-afeb9260.c
+++ b/sound/soc/atmel/snd-soc-afeb9260.c
@@ -46,8 +46,8 @@
 			 struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int err;
 
 	/* Set codec DAI configuration */
@@ -102,8 +102,9 @@
 	{"MICIN", NULL, "Mic Jack"},
 };
 
-static int afeb9260_tlv320aic23_init(struct snd_soc_codec *codec)
+static int afeb9260_tlv320aic23_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 
 	/* Add afeb9260 specific widgets */
 	snd_soc_dapm_new_controls(codec, tlv320aic23_dapm_widgets,
@@ -125,8 +126,10 @@
 static struct snd_soc_dai_link afeb9260_dai = {
 	.name = "TLV320AIC23",
 	.stream_name = "AIC23",
-	.cpu_dai = &atmel_ssc_dai[0],
-	.codec_dai = &tlv320aic23_dai,
+	.cpu_dai_name = "atmel-ssc-dai.0",
+	.codec_dai_name = "tlv320aic23-hifi",
+	.platform_name = "atmel_pcm-audio",
+	.codec_name = "tlv320aic23-codec.0-0x1a",
 	.init = afeb9260_tlv320aic23_init,
 	.ops = &afeb9260_ops,
 };
@@ -134,37 +137,20 @@
 /* Audio machine driver */
 static struct snd_soc_card snd_soc_machine_afeb9260 = {
 	.name = "AFEB9260",
-	.platform = &atmel_soc_platform,
 	.dai_link = &afeb9260_dai,
 	.num_links = 1,
 };
 
-/* Audio subsystem */
-static struct snd_soc_device afeb9260_snd_devdata = {
-	.card = &snd_soc_machine_afeb9260,
-	.codec_dev = &soc_codec_dev_tlv320aic23,
-};
-
 static struct platform_device *afeb9260_snd_device;
 
 static int __init afeb9260_soc_init(void)
 {
 	int err;
 	struct device *dev;
-	struct atmel_ssc_info *ssc_p = afeb9260_dai.cpu_dai->private_data;
-	struct ssc_device *ssc = NULL;
 
 	if (!(machine_is_afeb9260()))
 		return -ENODEV;
 
-	ssc = ssc_request(0);
-	if (IS_ERR(ssc)) {
-		printk(KERN_ERR "ASoC: Failed to request SSC 0\n");
-		err = PTR_ERR(ssc);
-		ssc = NULL;
-		goto err_ssc;
-	}
-	ssc_p->ssc = ssc;
 
 	afeb9260_snd_device = platform_device_alloc("soc-audio", -1);
 	if (!afeb9260_snd_device) {
@@ -172,8 +158,7 @@
 		return -ENOMEM;
 	}
 
-	platform_set_drvdata(afeb9260_snd_device, &afeb9260_snd_devdata);
-	afeb9260_snd_devdata.dev = &afeb9260_snd_device->dev;
+	platform_set_drvdata(afeb9260_snd_device, &snd_soc_machine_afeb9260);
 	err = platform_device_add(afeb9260_snd_device);
 	if (err)
 		goto err1;
@@ -184,9 +169,7 @@
 err1:
 	platform_device_del(afeb9260_snd_device);
 	platform_device_put(afeb9260_snd_device);
-err_ssc:
 	return err;
-
 }
 
 static void __exit afeb9260_soc_exit(void)
diff --git a/sound/soc/au1x/db1200.c b/sound/soc/au1x/db1200.c
index cdf7be1..b62fcd3 100644
--- a/sound/soc/au1x/db1200.c
+++ b/sound/soc/au1x/db1200.c
@@ -19,7 +19,6 @@
 #include <asm/mach-au1x00/au1xxx_dbdma.h>
 #include <asm/mach-db1x00/bcsr.h>
 
-#include "../codecs/ac97.h"
 #include "../codecs/wm8731.h"
 #include "psc.h"
 
@@ -28,20 +27,16 @@
 static struct snd_soc_dai_link db1200_ac97_dai = {
 	.name		= "AC97",
 	.stream_name	= "AC97 HiFi",
-	.cpu_dai	= &au1xpsc_ac97_dai,
-	.codec_dai	= &ac97_dai,
+	.codec_dai_name	= "ac97-hifi",
+	.cpu_dai_name	= "au1xpsc_ac97.1",
+	.platform_name	= "au1xpsc-pcm.1",
+	.codec_name	= "ac97-codec.1",
 };
 
 static struct snd_soc_card db1200_ac97_machine = {
 	.name		= "DB1200_AC97",
 	.dai_link	= &db1200_ac97_dai,
 	.num_links	= 1,
-	.platform	= &au1xpsc_soc_platform,
-};
-
-static struct snd_soc_device db1200_ac97_devdata = {
-	.card		= &db1200_ac97_machine,
-	.codec_dev	= &soc_codec_dev_ac97,
 };
 
 /*-------------------------  I2S PART  ---------------------------*/
@@ -49,12 +44,12 @@
 static int db1200_i2s_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret;
 
 	/* WM8731 has its own 12MHz crystal */
-	snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK,
+	snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
 				12000000, SND_SOC_CLOCK_IN);
 
 	/* codec is bitclock and lrclk master */
@@ -80,8 +75,10 @@
 static struct snd_soc_dai_link db1200_i2s_dai = {
 	.name		= "WM8731",
 	.stream_name	= "WM8731 PCM",
-	.cpu_dai	= &au1xpsc_i2s_dai,
-	.codec_dai	= &wm8731_dai,
+	.codec_dai_name	= "wm8731-hifi",
+	.cpu_dai_name	= "au1xpsc_i2s.1",
+	.platform_name	= "au1xpsc-pcm.1",
+	.codec_name	= "wm8731-codec.0-001b",
 	.ops		= &db1200_i2s_wm8731_ops,
 };
 
@@ -89,12 +86,6 @@
 	.name		= "DB1200_I2S",
 	.dai_link	= &db1200_i2s_dai,
 	.num_links	= 1,
-	.platform	= &au1xpsc_soc_platform,
-};
-
-static struct snd_soc_device db1200_i2s_devdata = {
-	.card		= &db1200_i2s_machine,
-	.codec_dev	= &soc_codec_dev_wm8731,
 };
 
 /*-------------------------  COMMON PART  ---------------------------*/
@@ -106,18 +97,16 @@
 	int ret;
 
 	ret = -ENOMEM;
-	db1200_asoc_dev = platform_device_alloc("soc-audio", -1);
+	db1200_asoc_dev = platform_device_alloc("soc-audio", 1); /* PSC1 */
 	if (!db1200_asoc_dev)
 		goto out;
 
 	/* DB1200 board setup set PSC1MUX to preferred audio device */
 	if (bcsr_read(BCSR_RESETS) & BCSR_RESETS_PSC1MUX)
-		platform_set_drvdata(db1200_asoc_dev, &db1200_i2s_devdata);
+		platform_set_drvdata(db1200_asoc_dev, &db1200_i2s_machine);
 	else
-		platform_set_drvdata(db1200_asoc_dev, &db1200_ac97_devdata);
+		platform_set_drvdata(db1200_asoc_dev, &db1200_ac97_machine);
 
-	db1200_ac97_devdata.dev = &db1200_asoc_dev->dev;
-	db1200_i2s_devdata.dev = &db1200_asoc_dev->dev;
 	ret = platform_device_add(db1200_asoc_dev);
 
 	if (ret) {
diff --git a/sound/soc/au1x/dbdma2.c b/sound/soc/au1x/dbdma2.c
index 6d9f4c6..10fdd28 100644
--- a/sound/soc/au1x/dbdma2.c
+++ b/sound/soc/au1x/dbdma2.c
@@ -10,9 +10,6 @@
  *
  * DMA glue for Au1x-PSC audio.
  *
- * NOTE: all of these drivers can only work with a SINGLE instance
- *	 of a PSC. Multiple independent audio devices are impossible
- *	 with ASoC v1.
  */
 
 
@@ -61,9 +58,6 @@
 	int msbits;
 };
 
-/* instance data. There can be only one, MacLeod!!!! */
-static struct au1xpsc_audio_dmadata *au1xpsc_audio_pcmdma[2];
-
 /*
  * These settings are somewhat okay, at least on my machine audio plays
  * almost skip-free. Especially the 64kB buffer seems to help a LOT.
@@ -199,6 +193,14 @@
 	return 0;
 }
 
+static inline struct au1xpsc_audio_dmadata *to_dmadata(struct snd_pcm_substream *ss)
+{
+	struct snd_soc_pcm_runtime *rtd = ss->private_data;
+	struct au1xpsc_audio_dmadata *pcd =
+				snd_soc_platform_get_drvdata(rtd->platform);
+	return &pcd[SUBSTREAM_TYPE(ss)];
+}
+
 static int au1xpsc_pcm_hw_params(struct snd_pcm_substream *substream,
 				 struct snd_pcm_hw_params *params)
 {
@@ -211,7 +213,7 @@
 		goto out;
 
 	stype = SUBSTREAM_TYPE(substream);
-	pcd = au1xpsc_audio_pcmdma[stype];
+	pcd = to_dmadata(substream);
 
 	DBG("runtime->dma_area = 0x%08lx dma_addr_t = 0x%08lx dma_size = %d "
 	    "runtime->min_align %d\n",
@@ -249,8 +251,7 @@
 
 static int au1xpsc_pcm_prepare(struct snd_pcm_substream *substream)
 {
-	struct au1xpsc_audio_dmadata *pcd =
-			au1xpsc_audio_pcmdma[SUBSTREAM_TYPE(substream)];
+	struct au1xpsc_audio_dmadata *pcd = to_dmadata(substream);
 
 	au1xxx_dbdma_reset(pcd->ddma_chan);
 
@@ -267,7 +268,7 @@
 
 static int au1xpsc_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
 {
-	u32 c = au1xpsc_audio_pcmdma[SUBSTREAM_TYPE(substream)]->ddma_chan;
+	u32 c = to_dmadata(substream)->ddma_chan;
 
 	switch (cmd) {
 	case SNDRV_PCM_TRIGGER_START:
@@ -287,8 +288,7 @@
 static snd_pcm_uframes_t
 au1xpsc_pcm_pointer(struct snd_pcm_substream *substream)
 {
-	return bytes_to_frames(substream->runtime,
-		au1xpsc_audio_pcmdma[SUBSTREAM_TYPE(substream)]->pos);
+	return bytes_to_frames(substream->runtime, to_dmadata(substream)->pos);
 }
 
 static int au1xpsc_pcm_open(struct snd_pcm_substream *substream)
@@ -299,7 +299,7 @@
 
 static int au1xpsc_pcm_close(struct snd_pcm_substream *substream)
 {
-	au1x_pcm_dbdma_free(au1xpsc_audio_pcmdma[SUBSTREAM_TYPE(substream)]);
+	au1x_pcm_dbdma_free(to_dmadata(substream));
 	return 0;
 }
 
@@ -329,42 +329,21 @@
 	return 0;
 }
 
-static int au1xpsc_pcm_probe(struct platform_device *pdev)
-{
-	if (!au1xpsc_audio_pcmdma[PCM_TX] || !au1xpsc_audio_pcmdma[PCM_RX])
-		return -ENODEV;
-
-	return 0;
-}
-
-static int au1xpsc_pcm_remove(struct platform_device *pdev)
-{
-	return 0;
-}
-
 /* au1xpsc audio platform */
-struct snd_soc_platform au1xpsc_soc_platform = {
-	.name		= "au1xpsc-pcm-dbdma",
-	.probe		= au1xpsc_pcm_probe,
-	.remove		= au1xpsc_pcm_remove,
-	.pcm_ops 	= &au1xpsc_pcm_ops,
+struct snd_soc_platform_driver au1xpsc_soc_platform = {
+	.ops		= &au1xpsc_pcm_ops,
 	.pcm_new	= au1xpsc_pcm_new,
 	.pcm_free	= au1xpsc_pcm_free_dma_buffers,
 };
-EXPORT_SYMBOL_GPL(au1xpsc_soc_platform);
 
 static int __devinit au1xpsc_pcm_drvprobe(struct platform_device *pdev)
 {
+	struct au1xpsc_audio_dmadata *dmadata;
 	struct resource *r;
 	int ret;
 
-	if (au1xpsc_audio_pcmdma[PCM_TX] || au1xpsc_audio_pcmdma[PCM_RX])
-		return -EBUSY;
-
-	/* TX DMA */
-	au1xpsc_audio_pcmdma[PCM_TX]
-		= kzalloc(sizeof(struct au1xpsc_audio_dmadata), GFP_KERNEL);
-	if (!au1xpsc_audio_pcmdma[PCM_TX])
+	dmadata = kzalloc(2 * sizeof(struct au1xpsc_audio_dmadata), GFP_KERNEL);
+	if (!dmadata)
 		return -ENOMEM;
 
 	r = platform_get_resource(pdev, IORESOURCE_DMA, 0);
@@ -372,47 +351,33 @@
 		ret = -ENODEV;
 		goto out1;
 	}
-	(au1xpsc_audio_pcmdma[PCM_TX])->ddma_id = r->start;
+	dmadata[PCM_TX].ddma_id = r->start;
 
 	/* RX DMA */
-	au1xpsc_audio_pcmdma[PCM_RX]
-		= kzalloc(sizeof(struct au1xpsc_audio_dmadata), GFP_KERNEL);
-	if (!au1xpsc_audio_pcmdma[PCM_RX])
-		return -ENOMEM;
-
 	r = platform_get_resource(pdev, IORESOURCE_DMA, 1);
 	if (!r) {
 		ret = -ENODEV;
-		goto out2;
+		goto out1;
 	}
-	(au1xpsc_audio_pcmdma[PCM_RX])->ddma_id = r->start;
+	dmadata[PCM_RX].ddma_id = r->start;
 
-	ret = snd_soc_register_platform(&au1xpsc_soc_platform);
+	platform_set_drvdata(pdev, dmadata);
+
+	ret = snd_soc_register_platform(&pdev->dev, &au1xpsc_soc_platform);
 	if (!ret)
 		return ret;
 
-out2:
-	kfree(au1xpsc_audio_pcmdma[PCM_RX]);
-	au1xpsc_audio_pcmdma[PCM_RX] = NULL;
 out1:
-	kfree(au1xpsc_audio_pcmdma[PCM_TX]);
-	au1xpsc_audio_pcmdma[PCM_TX] = NULL;
+	kfree(dmadata);
 	return ret;
 }
 
 static int __devexit au1xpsc_pcm_drvremove(struct platform_device *pdev)
 {
-	int i;
+	struct au1xpsc_audio_dmadata *dmadata = platform_get_drvdata(pdev);
 
-	snd_soc_unregister_platform(&au1xpsc_soc_platform);
-
-	for (i = 0; i < 2; i++) {
-		if (au1xpsc_audio_pcmdma[i]) {
-			au1x_pcm_dbdma_free(au1xpsc_audio_pcmdma[i]);
-			kfree(au1xpsc_audio_pcmdma[i]);
-			au1xpsc_audio_pcmdma[i] = NULL;
-		}
-	}
+	snd_soc_unregister_platform(&pdev->dev);
+	kfree(dmadata);
 
 	return 0;
 }
@@ -428,8 +393,6 @@
 
 static int __init au1xpsc_audio_dbdma_load(void)
 {
-	au1xpsc_audio_pcmdma[PCM_TX] = NULL;
-	au1xpsc_audio_pcmdma[PCM_RX] = NULL;
 	return platform_driver_register(&au1xpsc_pcm_driver);
 }
 
@@ -467,7 +430,7 @@
 	res[1].start = res[1].end = id[1];
 	res[0].flags = res[1].flags = IORESOURCE_DMA;
 
-	pd = platform_device_alloc("au1xpsc-pcm", -1);
+	pd = platform_device_alloc("au1xpsc-pcm", pdev->id);
 	if (!pd)
 		goto out;
 
diff --git a/sound/soc/au1x/psc-ac97.c b/sound/soc/au1x/psc-ac97.c
index d14a5a9..d0db66f 100644
--- a/sound/soc/au1x/psc-ac97.c
+++ b/sound/soc/au1x/psc-ac97.c
@@ -10,9 +10,6 @@
  *
  * Au1xxx-PSC AC97 glue.
  *
- * NOTE: all of these drivers can only work with a SINGLE instance
- *	 of a PSC. Multiple independent audio devices are impossible
- *	 with ASoC v1.
  */
 
 #include <linux/init.h>
@@ -56,12 +53,29 @@
 /* instance data. There can be only one, MacLeod!!!! */
 static struct au1xpsc_audio_data *au1xpsc_ac97_workdata;
 
+#if 0
+
+/* this could theoretically work, but ac97->bus->card->private_data can be NULL
+ * when snd_ac97_mixer() is called; I don't know if the rest further down the
+ * chain are always valid either.
+ */
+static inline struct au1xpsc_audio_data *ac97_to_pscdata(struct snd_ac97 *x)
+{
+	struct snd_soc_card *c = x->bus->card->private_data;
+	return snd_soc_dai_get_drvdata(c->rtd->cpu_dai);
+}
+
+#else
+
+#define ac97_to_pscdata(x)	au1xpsc_ac97_workdata
+
+#endif
+
 /* AC97 controller reads codec register */
 static unsigned short au1xpsc_ac97_read(struct snd_ac97 *ac97,
 					unsigned short reg)
 {
-	/* FIXME */
-	struct au1xpsc_audio_data *pscdata = au1xpsc_ac97_workdata;
+	struct au1xpsc_audio_data *pscdata = ac97_to_pscdata(ac97);
 	unsigned short retry, tmo;
 	unsigned long data;
 
@@ -102,8 +116,7 @@
 static void au1xpsc_ac97_write(struct snd_ac97 *ac97, unsigned short reg,
 				unsigned short val)
 {
-	/* FIXME */
-	struct au1xpsc_audio_data *pscdata = au1xpsc_ac97_workdata;
+	struct au1xpsc_audio_data *pscdata = ac97_to_pscdata(ac97);
 	unsigned int tmo, retry;
 
 	au_writel(PSC_AC97EVNT_CD, AC97_EVNT(pscdata));
@@ -134,8 +147,7 @@
 /* AC97 controller asserts a warm reset */
 static void au1xpsc_ac97_warm_reset(struct snd_ac97 *ac97)
 {
-	/* FIXME */
-	struct au1xpsc_audio_data *pscdata = au1xpsc_ac97_workdata;
+	struct au1xpsc_audio_data *pscdata = ac97_to_pscdata(ac97);
 
 	au_writel(PSC_AC97RST_SNC, AC97_RST(pscdata));
 	au_sync();
@@ -146,8 +158,7 @@
 
 static void au1xpsc_ac97_cold_reset(struct snd_ac97 *ac97)
 {
-	/* FIXME */
-	struct au1xpsc_audio_data *pscdata = au1xpsc_ac97_workdata;
+	struct au1xpsc_audio_data *pscdata = ac97_to_pscdata(ac97);
 	int i;
 
 	/* disable PSC during cold reset */
@@ -202,8 +213,7 @@
 				  struct snd_pcm_hw_params *params,
 				  struct snd_soc_dai *dai)
 {
-	/* FIXME */
-	struct au1xpsc_audio_data *pscdata = au1xpsc_ac97_workdata;
+	struct au1xpsc_audio_data *pscdata = snd_soc_dai_get_drvdata(dai);
 	unsigned long r, ro, stat;
 	int chans, t, stype = SUBSTREAM_TYPE(substream);
 
@@ -283,8 +293,7 @@
 static int au1xpsc_ac97_trigger(struct snd_pcm_substream *substream,
 				int cmd, struct snd_soc_dai *dai)
 {
-	/* FIXME */
-	struct au1xpsc_audio_data *pscdata = au1xpsc_ac97_workdata;
+	struct au1xpsc_audio_data *pscdata = snd_soc_dai_get_drvdata(dai);
 	int ret, stype = SUBSTREAM_TYPE(substream);
 
 	ret = 0;
@@ -315,27 +324,19 @@
 	return ret;
 }
 
-static int au1xpsc_ac97_probe(struct platform_device *pdev,
-			      struct snd_soc_dai *dai)
+static int au1xpsc_ac97_probe(struct snd_soc_dai *dai)
 {
 	return au1xpsc_ac97_workdata ? 0 : -ENODEV;
 }
 
-static void au1xpsc_ac97_remove(struct platform_device *pdev,
-				struct snd_soc_dai *dai)
-{
-}
-
 static struct snd_soc_dai_ops au1xpsc_ac97_dai_ops = {
 	.trigger	= au1xpsc_ac97_trigger,
 	.hw_params	= au1xpsc_ac97_hw_params,
 };
 
-struct snd_soc_dai au1xpsc_ac97_dai = {
-	.name			= "au1xpsc_ac97",
+static const struct snd_soc_dai_driver au1xpsc_ac97_dai_template = {
 	.ac97_control		= 1,
 	.probe			= au1xpsc_ac97_probe,
-	.remove			= au1xpsc_ac97_remove,
 	.playback = {
 		.rates		= AC97_RATES,
 		.formats	= AC97_FMTS,
@@ -350,7 +351,6 @@
 	},
 	.ops = &au1xpsc_ac97_dai_ops,
 };
-EXPORT_SYMBOL_GPL(au1xpsc_ac97_dai);
 
 static int __devinit au1xpsc_ac97_drvprobe(struct platform_device *pdev)
 {
@@ -359,9 +359,6 @@
 	unsigned long sel;
 	struct au1xpsc_audio_data *wd;
 
-	if (au1xpsc_ac97_workdata)
-		return -EBUSY;
-
 	wd = kzalloc(sizeof(struct au1xpsc_audio_data), GFP_KERNEL);
 	if (!wd)
 		return -ENOMEM;
@@ -395,18 +392,24 @@
 	au_writel(PSC_SEL_PS_AC97MODE | sel, PSC_SEL(wd));
 	au_sync();
 
-	ret = snd_soc_register_dai(&au1xpsc_ac97_dai);
+	/* name the DAI like this device instance ("au1xpsc-ac97.PSCINDEX") */
+	memcpy(&wd->dai_drv, &au1xpsc_ac97_dai_template,
+	       sizeof(struct snd_soc_dai_driver));
+	wd->dai_drv.name = dev_name(&pdev->dev);
+
+	platform_set_drvdata(pdev, wd);
+
+	ret = snd_soc_register_dai(&pdev->dev, &wd->dai_drv);
 	if (ret)
 		goto out1;
 
 	wd->dmapd = au1xpsc_pcm_add(pdev);
 	if (wd->dmapd) {
-		platform_set_drvdata(pdev, wd);
-		au1xpsc_ac97_workdata = wd;	/* MDEV */
+		au1xpsc_ac97_workdata = wd;
 		return 0;
 	}
 
-	snd_soc_unregister_dai(&au1xpsc_ac97_dai);
+	snd_soc_unregister_dai(&pdev->dev);
 out1:
 	release_mem_region(r->start, resource_size(r));
 out0:
@@ -422,7 +425,7 @@
 	if (wd->dmapd)
 		au1xpsc_pcm_destroy(wd->dmapd);
 
-	snd_soc_unregister_dai(&au1xpsc_ac97_dai);
+	snd_soc_unregister_dai(&pdev->dev);
 
 	/* disable PSC completely */
 	au_writel(0, AC97_CFG(wd));
diff --git a/sound/soc/au1x/psc-i2s.c b/sound/soc/au1x/psc-i2s.c
index 6083fe77..fca0912 100644
--- a/sound/soc/au1x/psc-i2s.c
+++ b/sound/soc/au1x/psc-i2s.c
@@ -10,9 +10,6 @@
  *
  * Au1xxx-PSC I2S glue.
  *
- * NOTE: all of these drivers can only work with a SINGLE instance
- *	 of a PSC. Multiple independent audio devices are impossible
- *	 with ASoC v1.
  * NOTE: so far only PSC slave mode (bit- and frameclock) is supported.
  */
 
@@ -54,13 +51,10 @@
 	((stype) == PCM_TX ? PSC_I2SPCR_TC : PSC_I2SPCR_RC)
 
 
-/* instance data. There can be only one, MacLeod!!!! */
-static struct au1xpsc_audio_data *au1xpsc_i2s_workdata;
-
 static int au1xpsc_i2s_set_fmt(struct snd_soc_dai *cpu_dai,
 			       unsigned int fmt)
 {
-	struct au1xpsc_audio_data *pscdata = au1xpsc_i2s_workdata;
+	struct au1xpsc_audio_data *pscdata = snd_soc_dai_get_drvdata(cpu_dai);
 	unsigned long ct;
 	int ret;
 
@@ -120,7 +114,7 @@
 				 struct snd_pcm_hw_params *params,
 				 struct snd_soc_dai *dai)
 {
-	struct au1xpsc_audio_data *pscdata = au1xpsc_i2s_workdata;
+	struct au1xpsc_audio_data *pscdata = snd_soc_dai_get_drvdata(dai);
 
 	int cfgbits;
 	unsigned long stat;
@@ -245,7 +239,7 @@
 static int au1xpsc_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
 			       struct snd_soc_dai *dai)
 {
-	struct au1xpsc_audio_data *pscdata = au1xpsc_i2s_workdata;
+	struct au1xpsc_audio_data *pscdata = snd_soc_dai_get_drvdata(dai);
 	int ret, stype = SUBSTREAM_TYPE(substream);
 
 	switch (cmd) {
@@ -263,27 +257,13 @@
 	return ret;
 }
 
-static int au1xpsc_i2s_probe(struct platform_device *pdev,
-			     struct snd_soc_dai *dai)
-{
-	return 	au1xpsc_i2s_workdata ? 0 : -ENODEV;
-}
-
-static void au1xpsc_i2s_remove(struct platform_device *pdev,
-			       struct snd_soc_dai *dai)
-{
-}
-
 static struct snd_soc_dai_ops au1xpsc_i2s_dai_ops = {
 	.trigger	= au1xpsc_i2s_trigger,
 	.hw_params	= au1xpsc_i2s_hw_params,
 	.set_fmt	= au1xpsc_i2s_set_fmt,
 };
 
-struct snd_soc_dai au1xpsc_i2s_dai = {
-	.name			= "au1xpsc_i2s",
-	.probe			= au1xpsc_i2s_probe,
-	.remove			= au1xpsc_i2s_remove,
+static const struct snd_soc_dai_driver au1xpsc_i2s_dai_template = {
 	.playback = {
 		.rates		= AU1XPSC_I2S_RATES,
 		.formats	= AU1XPSC_I2S_FMTS,
@@ -298,7 +278,6 @@
 	},
 	.ops = &au1xpsc_i2s_dai_ops,
 };
-EXPORT_SYMBOL(au1xpsc_i2s_dai);
 
 static int __devinit au1xpsc_i2s_drvprobe(struct platform_device *pdev)
 {
@@ -307,9 +286,6 @@
 	int ret;
 	struct au1xpsc_audio_data *wd;
 
-	if (au1xpsc_i2s_workdata)
-		return -EBUSY;
-
 	wd = kzalloc(sizeof(struct au1xpsc_audio_data), GFP_KERNEL);
 	if (!wd)
 		return -ENOMEM;
@@ -346,19 +322,23 @@
 	 * time out.
 	 */
 
-	ret = snd_soc_register_dai(&au1xpsc_i2s_dai);
+	/* name the DAI like this device instance ("au1xpsc-i2s.PSCINDEX") */
+	memcpy(&wd->dai_drv, &au1xpsc_i2s_dai_template,
+	       sizeof(struct snd_soc_dai_driver));
+	wd->dai_drv.name = dev_name(&pdev->dev);
+
+	platform_set_drvdata(pdev, wd);
+
+	ret = snd_soc_register_dai(&pdev->dev, &wd->dai_drv);
 	if (ret)
 		goto out1;
 
 	/* finally add the DMA device for this PSC */
 	wd->dmapd = au1xpsc_pcm_add(pdev);
-	if (wd->dmapd) {
-		platform_set_drvdata(pdev, wd);
-		au1xpsc_i2s_workdata = wd;
+	if (wd->dmapd)
 		return 0;
-	}
 
-	snd_soc_unregister_dai(&au1xpsc_i2s_dai);
+	snd_soc_unregister_dai(&pdev->dev);
 out1:
 	release_mem_region(r->start, resource_size(r));
 out0:
@@ -374,7 +354,7 @@
 	if (wd->dmapd)
 		au1xpsc_pcm_destroy(wd->dmapd);
 
-	snd_soc_unregister_dai(&au1xpsc_i2s_dai);
+	snd_soc_unregister_dai(&pdev->dev);
 
 	au_writel(0, I2S_CFG(wd));
 	au_sync();
@@ -385,8 +365,6 @@
 	release_mem_region(r->start, resource_size(r));
 	kfree(wd);
 
-	au1xpsc_i2s_workdata = NULL;	/* MDEV */
-
 	return 0;
 }
 
@@ -446,7 +424,6 @@
 
 static int __init au1xpsc_i2s_load(void)
 {
-	au1xpsc_i2s_workdata = NULL;
 	return platform_driver_register(&au1xpsc_i2s_driver);
 }
 
diff --git a/sound/soc/au1x/psc.h b/sound/soc/au1x/psc.h
index 093775d..b30eadd 100644
--- a/sound/soc/au1x/psc.h
+++ b/sound/soc/au1x/psc.h
@@ -8,19 +8,11 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  *
- * NOTE: all of these drivers can only work with a SINGLE instance
- *	 of a PSC. Multiple independent audio devices are impossible
- *	 with ASoC v1.
  */
 
 #ifndef _AU1X_PCM_H
 #define _AU1X_PCM_H
 
-extern struct snd_soc_dai au1xpsc_ac97_dai;
-extern struct snd_soc_dai au1xpsc_i2s_dai;
-extern struct snd_soc_platform au1xpsc_soc_platform;
-extern struct snd_ac97_bus_ops soc_ac97_ops;
-
 /* DBDMA helpers */
 extern struct platform_device *au1xpsc_pcm_add(struct platform_device *pdev);
 extern void au1xpsc_pcm_destroy(struct platform_device *dmapd);
@@ -31,6 +23,8 @@
 	unsigned long cfg;
 	unsigned long rate;
 
+	struct snd_soc_dai_driver dai_drv;
+
 	unsigned long pm[2];
 	struct mutex lock;
 	struct platform_device *dmapd;
diff --git a/sound/soc/blackfin/bf5xx-ac97-pcm.c b/sound/soc/blackfin/bf5xx-ac97-pcm.c
index 5e7aacf..5a2fd8aba 100644
--- a/sound/soc/blackfin/bf5xx-ac97-pcm.c
+++ b/sound/soc/blackfin/bf5xx-ac97-pcm.c
@@ -422,14 +422,14 @@
 	if (!card->dev->coherent_dma_mask)
 		card->dev->coherent_dma_mask = DMA_BIT_MASK(32);
 
-	if (dai->playback.channels_min) {
+	if (dai->driver->playback.channels_min) {
 		ret = bf5xx_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_PLAYBACK);
 		if (ret)
 			goto out;
 	}
 
-	if (dai->capture.channels_min) {
+	if (dai->driver->capture.channels_min) {
 		ret = bf5xx_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_CAPTURE);
 		if (ret)
@@ -439,25 +439,44 @@
 	return ret;
 }
 
-struct snd_soc_platform bf5xx_ac97_soc_platform = {
-	.name		= "bf5xx-audio",
-	.pcm_ops 	= &bf5xx_pcm_ac97_ops,
+static struct snd_soc_platform_driver bf5xx_ac97_soc_platform = {
+	.ops			= &bf5xx_pcm_ac97_ops,
 	.pcm_new	= bf5xx_pcm_ac97_new,
 	.pcm_free	= bf5xx_pcm_free_dma_buffers,
 };
-EXPORT_SYMBOL_GPL(bf5xx_ac97_soc_platform);
 
-static int __init bfin_ac97_init(void)
+static int __devinit bf5xx_soc_platform_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_platform(&bf5xx_ac97_soc_platform);
+	return snd_soc_register_platform(&pdev->dev, &bf5xx_ac97_soc_platform);
 }
-module_init(bfin_ac97_init);
 
-static void __exit bfin_ac97_exit(void)
+static int __devexit bf5xx_soc_platform_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_platform(&bf5xx_ac97_soc_platform);
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
 }
-module_exit(bfin_ac97_exit);
+
+static struct platform_driver bf5xx_pcm_driver = {
+	.driver = {
+			.name = "bf5xx-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = bf5xx_soc_platform_probe,
+	.remove = __devexit_p(bf5xx_soc_platform_remove),
+};
+
+static int __init snd_bf5xx_pcm_init(void)
+{
+	return platform_driver_register(&bf5xx_pcm_driver);
+}
+module_init(snd_bf5xx_pcm_init);
+
+static void __exit snd_bf5xx_pcm_exit(void)
+{
+	platform_driver_unregister(&bf5xx_pcm_driver);
+}
+module_exit(snd_bf5xx_pcm_exit);
 
 MODULE_AUTHOR("Cliff Cai");
 MODULE_DESCRIPTION("ADI Blackfin AC97 PCM DMA module");
diff --git a/sound/soc/blackfin/bf5xx-ac97-pcm.h b/sound/soc/blackfin/bf5xx-ac97-pcm.h
index 350125a..d324d58 100644
--- a/sound/soc/blackfin/bf5xx-ac97-pcm.h
+++ b/sound/soc/blackfin/bf5xx-ac97-pcm.h
@@ -23,7 +23,4 @@
 	u32 frm;
 };
 
-/* platform data */
-extern struct snd_soc_platform bf5xx_ac97_soc_platform;
-
 #endif
diff --git a/sound/soc/blackfin/bf5xx-ac97.c b/sound/soc/blackfin/bf5xx-ac97.c
index c0eba51..c5f856ec 100644
--- a/sound/soc/blackfin/bf5xx-ac97.c
+++ b/sound/soc/blackfin/bf5xx-ac97.c
@@ -255,7 +255,7 @@
 #ifdef CONFIG_PM
 static int bf5xx_ac97_suspend(struct snd_soc_dai *dai)
 {
-	struct sport_device *sport = dai->private_data;
+	struct sport_device *sport = snd_soc_dai_get_drvdata(dai);
 
 	pr_debug("%s : sport %d\n", __func__, dai->id);
 	if (!dai->active)
@@ -270,7 +270,7 @@
 static int bf5xx_ac97_resume(struct snd_soc_dai *dai)
 {
 	int ret;
-	struct sport_device *sport = dai->private_data;
+	struct sport_device *sport = snd_soc_dai_get_drvdata(dai);
 
 	pr_debug("%s : sport %d\n", __func__, dai->id);
 	if (!dai->active)
@@ -306,8 +306,7 @@
 #define bf5xx_ac97_resume	NULL
 #endif
 
-static int bf5xx_ac97_probe(struct platform_device *pdev,
-			    struct snd_soc_dai *dai)
+static int bf5xx_ac97_probe(struct snd_soc_dai *dai)
 {
 	int ret = 0;
 	cmd_count = (int *)get_zeroed_page(GFP_KERNEL);
@@ -379,8 +378,7 @@
 	return ret;
 }
 
-static void bf5xx_ac97_remove(struct platform_device *pdev,
-			      struct snd_soc_dai *dai)
+static int bf5xx_ac97_remove(struct snd_soc_dai *dai)
 {
 	free_page((unsigned long)cmd_count);
 	cmd_count = NULL;
@@ -388,11 +386,10 @@
 #ifdef CONFIG_SND_BF5XX_HAVE_COLD_RESET
 	gpio_free(CONFIG_SND_BF5XX_RESET_GPIO_NUM);
 #endif
+	return 0;
 }
 
-struct snd_soc_dai bfin_ac97_dai = {
-	.name = "bf5xx-ac97",
-	.id = 0,
+struct snd_soc_dai_driver bfin_ac97_dai = {
 	.ac97_control = 1,
 	.probe = bf5xx_ac97_probe,
 	.remove = bf5xx_ac97_remove,
@@ -417,18 +414,40 @@
 };
 EXPORT_SYMBOL_GPL(bfin_ac97_dai);
 
+static __devinit int asoc_bfin_ac97_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_dai(&pdev->dev, &bfin_ac97_dai);
+}
+
+static int __devexit asoc_bfin_ac97_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_dai(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver asoc_bfin_ac97_driver = {
+	.driver = {
+			.name = "bfin-ac97",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = asoc_bfin_ac97_probe,
+	.remove = __devexit_p(asoc_bfin_ac97_remove),
+};
+
 static int __init bfin_ac97_init(void)
 {
-	return snd_soc_register_dai(&bfin_ac97_dai);
+	return platform_driver_register(&asoc_bfin_ac97_driver);
 }
 module_init(bfin_ac97_init);
 
 static void __exit bfin_ac97_exit(void)
 {
-	snd_soc_unregister_dai(&bfin_ac97_dai);
+	platform_driver_unregister(&asoc_bfin_ac97_driver);
 }
 module_exit(bfin_ac97_exit);
 
+
 MODULE_AUTHOR("Roy Huang");
 MODULE_DESCRIPTION("AC97 driver for ADI Blackfin");
 MODULE_LICENSE("GPL");
diff --git a/sound/soc/blackfin/bf5xx-ac97.h b/sound/soc/blackfin/bf5xx-ac97.h
index a1f97dd..15c635e 100644
--- a/sound/soc/blackfin/bf5xx-ac97.h
+++ b/sound/soc/blackfin/bf5xx-ac97.h
@@ -50,8 +50,6 @@
 #define TAG_PCM_SR		0x0080
 #define TAG_PCM_LFE		0x0040
 
-extern struct snd_soc_dai bfin_ac97_dai;
-
 void bf5xx_pcm_to_ac97(struct ac97_frame *dst, const __u16 *src, \
 		size_t count, unsigned int chan_mask);
 
diff --git a/sound/soc/blackfin/bf5xx-ad1836.c b/sound/soc/blackfin/bf5xx-ad1836.c
index 0f45a3f..2394bff 100644
--- a/sound/soc/blackfin/bf5xx-ad1836.c
+++ b/sound/soc/blackfin/bf5xx-ad1836.c
@@ -40,9 +40,9 @@
 static int bf5xx_ad1836_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 
-	cpu_dai->private_data = sport_handle;
+	snd_soc_dai_set_drvdata(cpu_dai, sport_handle);
 	return 0;
 }
 
@@ -50,8 +50,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 	unsigned int channel_map[] = {0, 4, 1, 5, 2, 6, 3, 7};
 	int ret = 0;
 	/* set cpu DAI configuration */
@@ -83,23 +83,19 @@
 static struct snd_soc_dai_link bf5xx_ad1836_dai = {
 	.name = "ad1836",
 	.stream_name = "AD1836",
-	.cpu_dai = &bf5xx_tdm_dai,
-	.codec_dai = &ad1836_dai,
+	.cpu_dai_name = "bf5xx-tdm",
+	.codec_dai_name = "ad1836-hifi",
+	.platform_name = "bf5xx-tdm-pcm-audio",
+	.codec_name = "ad1836-codec.0",
 	.ops = &bf5xx_ad1836_ops,
 };
 
 static struct snd_soc_card bf5xx_ad1836 = {
 	.name = "bf5xx_ad1836",
-	.platform = &bf5xx_tdm_soc_platform,
 	.dai_link = &bf5xx_ad1836_dai,
 	.num_links = 1,
 };
 
-static struct snd_soc_device bf5xx_ad1836_snd_devdata = {
-	.card = &bf5xx_ad1836,
-	.codec_dev = &soc_codec_dev_ad1836,
-};
-
 static struct platform_device *bfxx_ad1836_snd_device;
 
 static int __init bf5xx_ad1836_init(void)
@@ -110,8 +106,7 @@
 	if (!bfxx_ad1836_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(bfxx_ad1836_snd_device, &bf5xx_ad1836_snd_devdata);
-	bf5xx_ad1836_snd_devdata.dev = &bfxx_ad1836_snd_device->dev;
+	platform_set_drvdata(bfxx_ad1836_snd_device, &bf5xx_ad1836);
 	ret = platform_device_add(bfxx_ad1836_snd_device);
 
 	if (ret)
diff --git a/sound/soc/blackfin/bf5xx-ad193x.c b/sound/soc/blackfin/bf5xx-ad193x.c
index b8c9060..e4a6253 100644
--- a/sound/soc/blackfin/bf5xx-ad193x.c
+++ b/sound/soc/blackfin/bf5xx-ad193x.c
@@ -49,9 +49,9 @@
 static int bf5xx_ad193x_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 
-	cpu_dai->private_data = sport_handle;
+	snd_soc_dai_set_drvdata(cpu_dai, sport_handle);
 	return 0;
 }
 
@@ -59,8 +59,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 	unsigned int channel_map[] = {0, 1, 2, 3, 4, 5, 6, 7};
 	int ret = 0;
 	/* set cpu DAI configuration */
@@ -97,23 +97,19 @@
 static struct snd_soc_dai_link bf5xx_ad193x_dai = {
 	.name = "ad193x",
 	.stream_name = "AD193X",
-	.cpu_dai = &bf5xx_tdm_dai,
-	.codec_dai = &ad193x_dai,
+	.cpu_dai_name = "bf5xx-tdm",
+	.codec_dai_name ="ad193x-hifi",
+	.platform_name = "bf5xx-tdm-pcm-audio",
+	.codec_name = "ad193x-codec.5",
 	.ops = &bf5xx_ad193x_ops,
 };
 
 static struct snd_soc_card bf5xx_ad193x = {
 	.name = "bf5xx_ad193x",
-	.platform = &bf5xx_tdm_soc_platform,
 	.dai_link = &bf5xx_ad193x_dai,
 	.num_links = 1,
 };
 
-static struct snd_soc_device bf5xx_ad193x_snd_devdata = {
-	.card = &bf5xx_ad193x,
-	.codec_dev = &soc_codec_dev_ad193x,
-};
-
 static struct platform_device *bfxx_ad193x_snd_device;
 
 static int __init bf5xx_ad193x_init(void)
@@ -124,8 +120,7 @@
 	if (!bfxx_ad193x_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(bfxx_ad193x_snd_device, &bf5xx_ad193x_snd_devdata);
-	bf5xx_ad193x_snd_devdata.dev = &bfxx_ad193x_snd_device->dev;
+	platform_set_drvdata(bfxx_ad193x_snd_device, &bf5xx_ad193x);
 	ret = platform_device_add(bfxx_ad193x_snd_device);
 
 	if (ret)
diff --git a/sound/soc/blackfin/bf5xx-ad1980.c b/sound/soc/blackfin/bf5xx-ad1980.c
index 92f7c32..d57c9c9 100644
--- a/sound/soc/blackfin/bf5xx-ad1980.c
+++ b/sound/soc/blackfin/bf5xx-ad1980.c
@@ -56,10 +56,10 @@
 static int bf5xx_board_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 
 	pr_debug("%s enter\n", __func__);
-	cpu_dai->private_data = sport_handle;
+	snd_soc_dai_set_drvdata(cpu_dai, sport_handle);
 	return 0;
 }
 
@@ -70,23 +70,19 @@
 static struct snd_soc_dai_link bf5xx_board_dai = {
 	.name = "AC97",
 	.stream_name = "AC97 HiFi",
-	.cpu_dai = &bfin_ac97_dai,
-	.codec_dai = &ad1980_dai,
+	.cpu_dai_name = "bfin-ac97",
+	.codec_dai_name = "ad1980-hifi",
+	.platform_name = "bfin-pcm-audio",
+	.codec_name = "ad1980-codec",
 	.ops = &bf5xx_board_ops,
 };
 
 static struct snd_soc_card bf5xx_board = {
 	.name = "bf5xx-board",
-	.platform = &bf5xx_ac97_soc_platform,
 	.dai_link = &bf5xx_board_dai,
 	.num_links = 1,
 };
 
-static struct snd_soc_device bf5xx_board_snd_devdata = {
-	.card = &bf5xx_board,
-	.codec_dev = &soc_codec_dev_ad1980,
-};
-
 static struct platform_device *bf5xx_board_snd_device;
 
 static int __init bf5xx_board_init(void)
@@ -97,8 +93,7 @@
 	if (!bf5xx_board_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(bf5xx_board_snd_device, &bf5xx_board_snd_devdata);
-	bf5xx_board_snd_devdata.dev = &bf5xx_board_snd_device->dev;
+	platform_set_drvdata(bf5xx_board_snd_device, &bf5xx_board);
 	ret = platform_device_add(bf5xx_board_snd_device);
 
 	if (ret)
diff --git a/sound/soc/blackfin/bf5xx-ad73311.c b/sound/soc/blackfin/bf5xx-ad73311.c
index 9825b71..900ced5 100644
--- a/sound/soc/blackfin/bf5xx-ad73311.c
+++ b/sound/soc/blackfin/bf5xx-ad73311.c
@@ -47,7 +47,6 @@
 #include "../codecs/ad73311.h"
 #include "bf5xx-sport.h"
 #include "bf5xx-i2s-pcm.h"
-#include "bf5xx-i2s.h"
 
 #if CONFIG_SND_BF5XX_SPORT_NUM == 0
 #define bfin_write_SPORT_TCR1	bfin_write_SPORT0_TCR1
@@ -150,10 +149,10 @@
 static int bf5xx_ad73311_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 
 	pr_debug("%s enter\n", __func__);
-	cpu_dai->private_data = sport_handle;
+	snd_soc_dai_set_drvdata(cpu_dai, sport_handle);
 	return 0;
 }
 
@@ -161,7 +160,7 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret = 0;
 
 	pr_debug("%s rate %d format %x\n", __func__, params_rate(params),
@@ -185,24 +184,20 @@
 static struct snd_soc_dai_link bf5xx_ad73311_dai = {
 	.name = "ad73311",
 	.stream_name = "AD73311",
-	.cpu_dai = &bf5xx_i2s_dai,
-	.codec_dai = &ad73311_dai,
+	.cpu_dai_name = "bf5xx-i2s",
+	.codec_dai_name = "ad73311-hifi",
+	.platform_name = "bfin-pcm-audio",
+	.codec_name = "ad73311-codec",
 	.ops = &bf5xx_ad73311_ops,
 };
 
 static struct snd_soc_card bf5xx_ad73311 = {
 	.name = "bf5xx_ad73311",
-	.platform = &bf5xx_i2s_soc_platform,
 	.probe = bf5xx_probe,
 	.dai_link = &bf5xx_ad73311_dai,
 	.num_links = 1,
 };
 
-static struct snd_soc_device bf5xx_ad73311_snd_devdata = {
-	.card = &bf5xx_ad73311,
-	.codec_dev = &soc_codec_dev_ad73311,
-};
-
 static struct platform_device *bf5xx_ad73311_snd_device;
 
 static int __init bf5xx_ad73311_init(void)
@@ -214,8 +209,7 @@
 	if (!bf5xx_ad73311_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(bf5xx_ad73311_snd_device, &bf5xx_ad73311_snd_devdata);
-	bf5xx_ad73311_snd_devdata.dev = &bf5xx_ad73311_snd_device->dev;
+	platform_set_drvdata(bf5xx_ad73311_snd_device, &bf5xx_ad73311);
 	ret = platform_device_add(bf5xx_ad73311_snd_device);
 
 	if (ret)
diff --git a/sound/soc/blackfin/bf5xx-i2s-pcm.c b/sound/soc/blackfin/bf5xx-i2s-pcm.c
index 1d2a1ad..890a0dc 100644
--- a/sound/soc/blackfin/bf5xx-i2s-pcm.c
+++ b/sound/soc/blackfin/bf5xx-i2s-pcm.c
@@ -40,7 +40,6 @@
 #include <asm/dma.h>
 
 #include "bf5xx-i2s-pcm.h"
-#include "bf5xx-i2s.h"
 #include "bf5xx-sport.h"
 
 static void bf5xx_dma_irq(void *data)
@@ -257,14 +256,14 @@
 	if (!card->dev->coherent_dma_mask)
 		card->dev->coherent_dma_mask = DMA_BIT_MASK(32);
 
-	if (dai->playback.channels_min) {
+	if (dai->driver->playback.channels_min) {
 		ret = bf5xx_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_PLAYBACK);
 		if (ret)
 			goto out;
 	}
 
-	if (dai->capture.channels_min) {
+	if (dai->driver->capture.channels_min) {
 		ret = bf5xx_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_CAPTURE);
 		if (ret)
@@ -274,25 +273,44 @@
 	return ret;
 }
 
-struct snd_soc_platform bf5xx_i2s_soc_platform = {
-	.name		= "bf5xx-audio",
-	.pcm_ops 	= &bf5xx_pcm_i2s_ops,
+static struct snd_soc_platform_driver bf5xx_i2s_soc_platform = {
+	.ops		= &bf5xx_pcm_i2s_ops,
 	.pcm_new	= bf5xx_pcm_i2s_new,
 	.pcm_free	= bf5xx_pcm_free_dma_buffers,
 };
-EXPORT_SYMBOL_GPL(bf5xx_i2s_soc_platform);
 
-static int __init bfin_i2s_init(void)
+static int __devinit bfin_i2s_soc_platform_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_platform(&bf5xx_i2s_soc_platform);
+	return snd_soc_register_platform(&pdev->dev, &bf5xx_i2s_soc_platform);
 }
-module_init(bfin_i2s_init);
 
-static void __exit bfin_i2s_exit(void)
+static int __devexit bfin_i2s_soc_platform_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_platform(&bf5xx_i2s_soc_platform);
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
 }
-module_exit(bfin_i2s_exit);
+
+static struct platform_driver bfin_i2s_pcm_driver = {
+	.driver = {
+			.name = "bfin-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = bfin_i2s_soc_platform_probe,
+	.remove = __devexit_p(bfin_i2s_soc_platform_remove),
+};
+
+static int __init snd_bfin_i2s_pcm_init(void)
+{
+	return platform_driver_register(&bfin_i2s_pcm_driver);
+}
+module_init(snd_bfin_i2s_pcm_init);
+
+static void __exit snd_bfin_i2s_pcm_exit(void)
+{
+	platform_driver_unregister(&bfin_i2s_pcm_driver);
+}
+module_exit(snd_bfin_i2s_pcm_exit);
 
 MODULE_AUTHOR("Cliff Cai");
 MODULE_DESCRIPTION("ADI Blackfin I2S PCM DMA module");
diff --git a/sound/soc/blackfin/bf5xx-i2s-pcm.h b/sound/soc/blackfin/bf5xx-i2s-pcm.h
index 4d4609a..0c2c5a6 100644
--- a/sound/soc/blackfin/bf5xx-i2s-pcm.h
+++ b/sound/soc/blackfin/bf5xx-i2s-pcm.h
@@ -23,7 +23,4 @@
 	u32 frm;
 };
 
-/* platform data */
-extern struct snd_soc_platform bf5xx_i2s_soc_platform;
-
 #endif
diff --git a/sound/soc/blackfin/bf5xx-i2s.c b/sound/soc/blackfin/bf5xx-i2s.c
index 3e6ada0..d453b1e 100644
--- a/sound/soc/blackfin/bf5xx-i2s.c
+++ b/sound/soc/blackfin/bf5xx-i2s.c
@@ -42,7 +42,6 @@
 #include <linux/gpio.h>
 
 #include "bf5xx-sport.h"
-#include "bf5xx-i2s.h"
 
 struct bf5xx_i2s_port {
 	u16 tcr1;
@@ -195,8 +194,7 @@
 		bf5xx_i2s.configured = 0;
 }
 
-static int bf5xx_i2s_probe(struct platform_device *pdev,
-			   struct snd_soc_dai *dai)
+static int bf5xx_i2s_probe(struct snd_soc_dai *dai)
 {
 	pr_debug("%s enter\n", __func__);
 	if (peripheral_request_list(&sport_req[sport_num][0], "soc-audio")) {
@@ -215,11 +213,11 @@
 	return 0;
 }
 
-static void bf5xx_i2s_remove(struct platform_device *pdev,
-			struct snd_soc_dai *dai)
+static int bf5xx_i2s_remove(struct snd_soc_dai *dai)
 {
 	pr_debug("%s enter\n", __func__);
 	peripheral_free_list(&sport_req[sport_num][0]);
+	return 0;
 }
 
 #ifdef CONFIG_PM
@@ -228,9 +226,9 @@
 
 	pr_debug("%s : sport %d\n", __func__, dai->id);
 
-	if (dai->capture.active)
+	if (dai->capture_active)
 		sport_rx_stop(sport_handle);
-	if (dai->playback.active)
+	if (dai->playback_active)
 		sport_tx_stop(sport_handle);
 	return 0;
 }
@@ -277,9 +275,7 @@
 	.set_fmt	= bf5xx_i2s_set_dai_fmt,
 };
 
-struct snd_soc_dai bf5xx_i2s_dai = {
-	.name = "bf5xx-i2s",
-	.id = 0,
+static struct snd_soc_dai_driver bf5xx_i2s_dai = {
 	.probe = bf5xx_i2s_probe,
 	.remove = bf5xx_i2s_remove,
 	.suspend = bf5xx_i2s_suspend,
@@ -296,18 +292,39 @@
 		.formats = BF5XX_I2S_FORMATS,},
 	.ops = &bf5xx_i2s_dai_ops,
 };
-EXPORT_SYMBOL_GPL(bf5xx_i2s_dai);
+
+static int bfin_i2s_drv_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_dai(&pdev->dev, &bf5xx_i2s_dai);
+}
+
+static int __devexit bfin_i2s_drv_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_dai(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver bfin_i2s_driver = {
+	.probe = bfin_i2s_drv_probe,
+	.remove = __devexit_p(bfin_i2s_drv_remove),
+
+	.driver = {
+		.name = "bf5xx-i2s",
+		.owner = THIS_MODULE,
+	},
+};
 
 static int __init bfin_i2s_init(void)
 {
-	return snd_soc_register_dai(&bf5xx_i2s_dai);
+	return platform_driver_register(&bfin_i2s_driver);
 }
-module_init(bfin_i2s_init);
 
 static void __exit bfin_i2s_exit(void)
 {
-	snd_soc_unregister_dai(&bf5xx_i2s_dai);
+	platform_driver_unregister(&bfin_i2s_driver);
 }
+
+module_init(bfin_i2s_init);
 module_exit(bfin_i2s_exit);
 
 /* Module information */
diff --git a/sound/soc/blackfin/bf5xx-i2s.h b/sound/soc/blackfin/bf5xx-i2s.h
deleted file mode 100644
index 264ecdc..0000000
--- a/sound/soc/blackfin/bf5xx-i2s.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * sound/soc/blackfin/bf5xx-i2s.h
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef _BF5XX_I2S_H
-#define _BF5XX_I2S_H
-
-extern struct snd_soc_dai bf5xx_i2s_dai;
-
-#endif
diff --git a/sound/soc/blackfin/bf5xx-ssm2602.c b/sound/soc/blackfin/bf5xx-ssm2602.c
index 3a00fa4..36f2769 100644
--- a/sound/soc/blackfin/bf5xx-ssm2602.c
+++ b/sound/soc/blackfin/bf5xx-ssm2602.c
@@ -42,17 +42,16 @@
 #include "../codecs/ssm2602.h"
 #include "bf5xx-sport.h"
 #include "bf5xx-i2s-pcm.h"
-#include "bf5xx-i2s.h"
 
 static struct snd_soc_card bf5xx_ssm2602;
 
 static int bf5xx_ssm2602_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 
 	pr_debug("%s enter\n", __func__);
-	cpu_dai->private_data = sport_handle;
+	snd_soc_dai_set_drvdata(cpu_dai, sport_handle);
 	return 0;
 }
 
@@ -60,8 +59,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	unsigned int clk = 0;
 	int ret = 0;
 
@@ -118,36 +117,19 @@
 static struct snd_soc_dai_link bf5xx_ssm2602_dai = {
 	.name = "ssm2602",
 	.stream_name = "SSM2602",
-	.cpu_dai = &bf5xx_i2s_dai,
-	.codec_dai = &ssm2602_dai,
+	.cpu_dai_name = "bf5xx-i2s",
+	.codec_dai_name = "ssm2602-hifi",
+	.platform_name = "bf5xx-pcm-audio",
+	.codec_name = "ssm2602-codec.0-0x1b",
 	.ops = &bf5xx_ssm2602_ops,
 };
 
-/*
- * SSM2602 2 wire address is determined by CSB
- * state during powerup.
- *    low  = 0x1a
- *    high = 0x1b
- */
-
-static struct ssm2602_setup_data bf5xx_ssm2602_setup = {
-	.i2c_bus = 0,
-	.i2c_address = 0x1b,
-};
-
 static struct snd_soc_card bf5xx_ssm2602 = {
 	.name = "bf5xx_ssm2602",
-	.platform = &bf5xx_i2s_soc_platform,
 	.dai_link = &bf5xx_ssm2602_dai,
 	.num_links = 1,
 };
 
-static struct snd_soc_device bf5xx_ssm2602_snd_devdata = {
-	.card = &bf5xx_ssm2602,
-	.codec_dev = &soc_codec_dev_ssm2602,
-	.codec_data = &bf5xx_ssm2602_setup,
-};
-
 static struct platform_device *bf5xx_ssm2602_snd_device;
 
 static int __init bf5xx_ssm2602_init(void)
@@ -159,9 +141,7 @@
 	if (!bf5xx_ssm2602_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(bf5xx_ssm2602_snd_device,
-				&bf5xx_ssm2602_snd_devdata);
-	bf5xx_ssm2602_snd_devdata.dev = &bf5xx_ssm2602_snd_device->dev;
+	platform_set_drvdata(bf5xx_ssm2602_snd_device, &bf5xx_ssm2602);
 	ret = platform_device_add(bf5xx_ssm2602_snd_device);
 
 	if (ret)
diff --git a/sound/soc/blackfin/bf5xx-tdm-pcm.c b/sound/soc/blackfin/bf5xx-tdm-pcm.c
index 6bac1ac..74cf759 100644
--- a/sound/soc/blackfin/bf5xx-tdm-pcm.c
+++ b/sound/soc/blackfin/bf5xx-tdm-pcm.c
@@ -290,14 +290,14 @@
 	if (!card->dev->coherent_dma_mask)
 		card->dev->coherent_dma_mask = DMA_BIT_MASK(32);
 
-	if (dai->playback.channels_min) {
+	if (dai->driver->playback.channels_min) {
 		ret = bf5xx_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_PLAYBACK);
 		if (ret)
 			goto out;
 	}
 
-	if (dai->capture.channels_min) {
+	if (dai->driver->capture.channels_min) {
 		ret = bf5xx_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_CAPTURE);
 		if (ret)
@@ -307,25 +307,44 @@
 	return ret;
 }
 
-struct snd_soc_platform bf5xx_tdm_soc_platform = {
-	.name           = "bf5xx-audio",
-	.pcm_ops        = &bf5xx_pcm_tdm_ops,
+static struct snd_soc_platform_driver bf5xx_tdm_soc_platform = {
+	.ops        = &bf5xx_pcm_tdm_ops,
 	.pcm_new        = bf5xx_pcm_tdm_new,
 	.pcm_free       = bf5xx_pcm_free_dma_buffers,
 };
-EXPORT_SYMBOL_GPL(bf5xx_tdm_soc_platform);
 
-static int __init bfin_pcm_tdm_init(void)
+static int __devinit bf5xx_soc_platform_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_platform(&bf5xx_tdm_soc_platform);
+	return snd_soc_register_platform(&pdev->dev, &bf5xx_tdm_soc_platform);
 }
-module_init(bfin_pcm_tdm_init);
 
-static void __exit bfin_pcm_tdm_exit(void)
+static int __devexit bf5xx_soc_platform_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_platform(&bf5xx_tdm_soc_platform);
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
 }
-module_exit(bfin_pcm_tdm_exit);
+
+static struct platform_driver bfin_tdm_driver = {
+	.driver = {
+			.name = "bf5xx-tdm-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = bf5xx_soc_platform_probe,
+	.remove = __devexit_p(bf5xx_soc_platform_remove),
+};
+
+static int __init snd_bfin_tdm_init(void)
+{
+	return platform_driver_register(&bfin_tdm_driver);
+}
+module_init(snd_bfin_tdm_init);
+
+static void __exit snd_bfin_tdm_exit(void)
+{
+	platform_driver_unregister(&bfin_tdm_driver);
+}
+module_exit(snd_bfin_tdm_exit);
 
 MODULE_AUTHOR("Barry Song");
 MODULE_DESCRIPTION("ADI Blackfin TDM PCM DMA module");
diff --git a/sound/soc/blackfin/bf5xx-tdm-pcm.h b/sound/soc/blackfin/bf5xx-tdm-pcm.h
index ddc5047..7f8cc01 100644
--- a/sound/soc/blackfin/bf5xx-tdm-pcm.h
+++ b/sound/soc/blackfin/bf5xx-tdm-pcm.h
@@ -15,7 +15,4 @@
 	char *name;                     /* stream identifier */
 };
 
-/* platform data */
-extern struct snd_soc_platform bf5xx_tdm_soc_platform;
-
 #endif
diff --git a/sound/soc/blackfin/bf5xx-tdm.c b/sound/soc/blackfin/bf5xx-tdm.c
index 24c1426..1251239 100644
--- a/sound/soc/blackfin/bf5xx-tdm.c
+++ b/sound/soc/blackfin/bf5xx-tdm.c
@@ -214,9 +214,9 @@
 
 	if (!dai->active)
 		return 0;
-	if (dai->capture.active)
+	if (dai->capture_active)
 		sport_rx_stop(sport);
-	if (dai->playback.active)
+	if (dai->playback_active)
 		sport_tx_stop(sport);
 	return 0;
 }
@@ -224,7 +224,7 @@
 static int bf5xx_tdm_resume(struct snd_soc_dai *dai)
 {
 	int ret;
-	struct sport_device *sport = dai->private_data;
+	struct sport_device *sport = snd_soc_dai_get_drvdata(dai);
 
 	if (!dai->active)
 		return 0;
@@ -262,9 +262,7 @@
 	.set_channel_map   = bf5xx_tdm_set_channel_map,
 };
 
-struct snd_soc_dai bf5xx_tdm_dai = {
-	.name = "bf5xx-tdm",
-	.id = 0,
+static struct snd_soc_dai_driver bf5xx_tdm_dai = {
 	.suspend = bf5xx_tdm_suspend,
 	.resume = bf5xx_tdm_resume,
 	.playback = {
@@ -279,7 +277,6 @@
 		.formats = SNDRV_PCM_FMTBIT_S32_LE,},
 	.ops = &bf5xx_tdm_dai_ops,
 };
-EXPORT_SYMBOL_GPL(bf5xx_tdm_dai);
 
 static int __devinit bfin_tdm_probe(struct platform_device *pdev)
 {
@@ -320,7 +317,7 @@
 		goto sport_config_err;
 	}
 
-	ret = snd_soc_register_dai(&bf5xx_tdm_dai);
+	ret = snd_soc_register_dai(&pdev->dev, &bf5xx_tdm_dai);
 	if (ret) {
 		pr_err("Failed to register DAI: %d\n", ret);
 		goto sport_config_err;
@@ -337,7 +334,7 @@
 static int __devexit bfin_tdm_remove(struct platform_device *pdev)
 {
 	peripheral_free_list(&sport_req[sport_num][0]);
-	snd_soc_unregister_dai(&bf5xx_tdm_dai);
+	snd_soc_unregister_dai(&pdev->dev);
 
 	return 0;
 }
diff --git a/sound/soc/blackfin/bf5xx-tdm.h b/sound/soc/blackfin/bf5xx-tdm.h
index 04189a1..e986a3e 100644
--- a/sound/soc/blackfin/bf5xx-tdm.h
+++ b/sound/soc/blackfin/bf5xx-tdm.h
@@ -20,6 +20,4 @@
 	int configured;
 };
 
-extern struct snd_soc_dai bf5xx_tdm_dai;
-
 #endif
diff --git a/sound/soc/codecs/88pm860x-codec.c b/sound/soc/codecs/88pm860x-codec.c
new file mode 100644
index 0000000..01d19e9
--- /dev/null
+++ b/sound/soc/codecs/88pm860x-codec.c
@@ -0,0 +1,1486 @@
+/*
+ * 88pm860x-codec.c -- 88PM860x ALSA SoC Audio Driver
+ *
+ * Copyright 2010 Marvell International Ltd.
+ * Author: Haojian Zhuang <haojian.zhuang@marvell.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/i2c.h>
+#include <linux/platform_device.h>
+#include <linux/mfd/88pm860x.h>
+#include <linux/slab.h>
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+#include <sound/soc-dapm.h>
+#include <sound/tlv.h>
+#include <sound/initval.h>
+#include <sound/jack.h>
+
+#include "88pm860x-codec.h"
+
+#define MAX_NAME_LEN		20
+#define REG_CACHE_SIZE		0x40
+#define REG_CACHE_BASE		0xb0
+
+/* Status Register 1 (0x01) */
+#define REG_STATUS_1		0x01
+#define MIC_STATUS		(1 << 7)
+#define HOOK_STATUS		(1 << 6)
+#define HEADSET_STATUS		(1 << 5)
+
+/* Mic Detection Register (0x37) */
+#define REG_MIC_DET		0x37
+#define CONTINUOUS_POLLING	(3 << 1)
+#define EN_MIC_DET		(1 << 0)
+#define MICDET_MASK		0x07
+
+/* Headset Detection Register (0x38) */
+#define REG_HS_DET		0x38
+#define EN_HS_DET		(1 << 0)
+
+/* Misc2 Register (0x42) */
+#define REG_MISC2		0x42
+#define AUDIO_PLL		(1 << 5)
+#define AUDIO_SECTION_RESET	(1 << 4)
+#define AUDIO_SECTION_ON	(1 << 3)
+
+/* PCM Interface Register 2 (0xb1) */
+#define PCM_INF2_BCLK		(1 << 6)	/* Bit clock polarity */
+#define PCM_INF2_FS		(1 << 5)	/* Frame Sync polarity */
+#define PCM_INF2_MASTER		(1 << 4)	/* Master / Slave */
+#define PCM_INF2_18WL		(1 << 3)	/* 18 / 16 bits */
+#define PCM_GENERAL_I2S		0
+#define PCM_EXACT_I2S		1
+#define PCM_LEFT_I2S		2
+#define PCM_RIGHT_I2S		3
+#define PCM_SHORT_FS		4
+#define PCM_LONG_FS		5
+#define PCM_MODE_MASK		7
+
+/* I2S Interface Register 4 (0xbe) */
+#define I2S_EQU_BYP		(1 << 6)
+
+/* DAC Offset Register (0xcb) */
+#define DAC_MUTE		(1 << 7)
+#define MUTE_LEFT		(1 << 6)
+#define MUTE_RIGHT		(1 << 2)
+
+/* ADC Analog Register 1 (0xd0) */
+#define REG_ADC_ANA_1		0xd0
+#define MIC1BIAS_MASK		0x60
+
+/* Earpiece/Speaker Control Register 2 (0xda) */
+#define REG_EAR2		0xda
+#define RSYNC_CHANGE		(1 << 2)
+
+/* Audio Supplies Register 2 (0xdc) */
+#define REG_SUPPLIES2		0xdc
+#define LDO15_READY		(1 << 4)
+#define LDO15_EN		(1 << 3)
+#define CPUMP_READY		(1 << 2)
+#define CPUMP_EN		(1 << 1)
+#define AUDIO_EN		(1 << 0)
+#define SUPPLY_MASK		(LDO15_EN | CPUMP_EN | AUDIO_EN)
+
+/* Audio Enable Register 1 (0xdd) */
+#define ADC_MOD_RIGHT		(1 << 1)
+#define ADC_MOD_LEFT		(1 << 0)
+
+/* Audio Enable Register 2 (0xde) */
+#define ADC_LEFT		(1 << 5)
+#define ADC_RIGHT		(1 << 4)
+
+/* DAC Enable Register 2 (0xe1) */
+#define DAC_LEFT		(1 << 5)
+#define DAC_RIGHT		(1 << 4)
+#define MODULATOR		(1 << 3)
+
+/* Shorts Register (0xeb) */
+#define REG_SHORTS		0xeb
+#define CLR_SHORT_LO2		(1 << 7)
+#define SHORT_LO2		(1 << 6)
+#define CLR_SHORT_LO1		(1 << 5)
+#define SHORT_LO1		(1 << 4)
+#define CLR_SHORT_HS2		(1 << 3)
+#define SHORT_HS2		(1 << 2)
+#define CLR_SHORT_HS1		(1 << 1)
+#define SHORT_HS1		(1 << 0)
+
+/*
+ * This widget should be just after DAC & PGA in DAPM power-on sequence and
+ * before DAC & PGA in DAPM power-off sequence.
+ */
+#define PM860X_DAPM_OUTPUT(wname, wevent)	\
+{	.id = snd_soc_dapm_pga, .name = wname, .reg = SND_SOC_NOPM, \
+	.shift = 0, .invert = 0, .kcontrols = NULL, \
+	.num_kcontrols = 0, .event = wevent, \
+	.event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD, }
+
+struct pm860x_det {
+	struct snd_soc_jack	*hp_jack;
+	struct snd_soc_jack	*mic_jack;
+	int			hp_det;
+	int			mic_det;
+	int			hook_det;
+	int			hs_shrt;
+	int			lo_shrt;
+};
+
+struct pm860x_priv {
+	unsigned int		sysclk;
+	unsigned int		pcmclk;
+	unsigned int		dir;
+	unsigned int		filter;
+	struct snd_soc_codec	*codec;
+	struct i2c_client	*i2c;
+	struct pm860x_chip	*chip;
+	struct pm860x_det	det;
+
+	int			irq[4];
+	unsigned char		name[4][MAX_NAME_LEN];
+	unsigned char		reg_cache[REG_CACHE_SIZE];
+};
+
+/* -9450dB to 0dB in 150dB steps ( mute instead of -9450dB) */
+static const DECLARE_TLV_DB_SCALE(dpga_tlv, -9450, 150, 1);
+
+/* -9dB to 0db in 3dB steps */
+static const DECLARE_TLV_DB_SCALE(adc_tlv, -900, 300, 0);
+
+/* {-23, -17, -13.5, -11, -9, -6, -3, 0}dB */
+static const unsigned int mic_tlv[] = {
+	TLV_DB_RANGE_HEAD(5),
+	0, 0, TLV_DB_SCALE_ITEM(-2300, 0, 0),
+	1, 1, TLV_DB_SCALE_ITEM(-1700, 0, 0),
+	2, 2, TLV_DB_SCALE_ITEM(-1350, 0, 0),
+	3, 3, TLV_DB_SCALE_ITEM(-1100, 0, 0),
+	4, 7, TLV_DB_SCALE_ITEM(-900, 300, 0),
+};
+
+/* {0, 0, 0, -6, 0, 6, 12, 18}dB */
+static const unsigned int aux_tlv[] = {
+	TLV_DB_RANGE_HEAD(2),
+	0, 2, TLV_DB_SCALE_ITEM(0, 0, 0),
+	3, 7, TLV_DB_SCALE_ITEM(-600, 600, 0),
+};
+
+/* {-16, -13, -10, -7, -5.2, -3,3, -2.2, 0}dB, mute instead of -16dB */
+static const unsigned int out_tlv[] = {
+	TLV_DB_RANGE_HEAD(4),
+	0, 3, TLV_DB_SCALE_ITEM(-1600, 300, 1),
+	4, 4, TLV_DB_SCALE_ITEM(-520, 0, 0),
+	5, 5, TLV_DB_SCALE_ITEM(-330, 0, 0),
+	6, 7, TLV_DB_SCALE_ITEM(-220, 220, 0),
+};
+
+static const unsigned int st_tlv[] = {
+	TLV_DB_RANGE_HEAD(8),
+	0, 1, TLV_DB_SCALE_ITEM(-12041, 602, 0),
+	2, 3, TLV_DB_SCALE_ITEM(-11087, 250, 0),
+	4, 5, TLV_DB_SCALE_ITEM(-10643, 158, 0),
+	6, 7, TLV_DB_SCALE_ITEM(-10351, 116, 0),
+	8, 9, TLV_DB_SCALE_ITEM(-10133, 92, 0),
+	10, 13, TLV_DB_SCALE_ITEM(-9958, 70, 0),
+	14, 17, TLV_DB_SCALE_ITEM(-9689, 53, 0),
+	18, 271, TLV_DB_SCALE_ITEM(-9484, 37, 0),
+};
+
+/* Sidetone Gain = M * 2^(-5-N) */
+struct st_gain {
+	unsigned int	db;
+	unsigned int	m;
+	unsigned int	n;
+};
+
+static struct st_gain st_table[] = {
+	{-12041,  1, 15}, {-11439,  1, 14}, {-11087,  3, 15}, {-10837,  1, 13},
+	{-10643,  5, 15}, {-10485,  3, 14}, {-10351,  7, 15}, {-10235,  1, 12},
+	{-10133,  9, 15}, {-10041,  5, 14}, { -9958, 11, 15}, { -9883,  3, 13},
+	{ -9813, 13, 15}, { -9749,  7, 14}, { -9689, 15, 15}, { -9633,  1, 11},
+	{ -9580, 17, 15}, { -9531,  9, 14}, { -9484, 19, 15}, { -9439,  5, 13},
+	{ -9397, 21, 15}, { -9356, 11, 14}, { -9318, 23, 15}, { -9281,  3, 12},
+	{ -9245, 25, 15}, { -9211, 13, 14}, { -9178, 27, 15}, { -9147,  7, 13},
+	{ -9116, 29, 15}, { -9087, 15, 14}, { -9058, 31, 15}, { -9031,  1, 10},
+	{ -8978, 17, 14}, { -8929,  9, 13}, { -8882, 19, 14}, { -8837,  5, 12},
+	{ -8795, 21, 14}, { -8754, 11, 13}, { -8716, 23, 14}, { -8679,  3, 11},
+	{ -8643, 25, 14}, { -8609, 13, 13}, { -8576, 27, 14}, { -8545,  7, 12},
+	{ -8514, 29, 14}, { -8485, 15, 13}, { -8456, 31, 14}, { -8429,  1,  9},
+	{ -8376, 17, 13}, { -8327,  9, 12}, { -8280, 19, 13}, { -8235,  5, 11},
+	{ -8193, 21, 13}, { -8152, 11, 12}, { -8114, 23, 13}, { -8077,  3, 10},
+	{ -8041, 25, 13}, { -8007, 13, 12}, { -7974, 27, 13}, { -7943,  7, 11},
+	{ -7912, 29, 13}, { -7883, 15, 12}, { -7854, 31, 13}, { -7827,  1,  8},
+	{ -7774, 17, 12}, { -7724,  9, 11}, { -7678, 19, 12}, { -7633,  5, 10},
+	{ -7591, 21, 12}, { -7550, 11, 11}, { -7512, 23, 12}, { -7475,  3,  9},
+	{ -7439, 25, 12}, { -7405, 13, 11}, { -7372, 27, 12}, { -7341,  7, 10},
+	{ -7310, 29, 12}, { -7281, 15, 11}, { -7252, 31, 12}, { -7225,  1,  7},
+	{ -7172, 17, 11}, { -7122,  9, 10}, { -7075, 19, 11}, { -7031,  5,  9},
+	{ -6989, 21, 11}, { -6948, 11, 10}, { -6910, 23, 11}, { -6873,  3,  8},
+	{ -6837, 25, 11}, { -6803, 13, 10}, { -6770, 27, 11}, { -6739,  7,  9},
+	{ -6708, 29, 11}, { -6679, 15, 10}, { -6650, 31, 11}, { -6623,  1,  6},
+	{ -6570, 17, 10}, { -6520,  9,  9}, { -6473, 19, 10}, { -6429,  5,  8},
+	{ -6386, 21, 10}, { -6346, 11,  9}, { -6307, 23, 10}, { -6270,  3,  7},
+	{ -6235, 25, 10}, { -6201, 13,  9}, { -6168, 27, 10}, { -6137,  7,  8},
+	{ -6106, 29, 10}, { -6077, 15,  9}, { -6048, 31, 10}, { -6021,  1,  5},
+	{ -5968, 17,  9}, { -5918,  9,  8}, { -5871, 19,  9}, { -5827,  5,  7},
+	{ -5784, 21,  9}, { -5744, 11,  8}, { -5705, 23,  9}, { -5668,  3,  6},
+	{ -5633, 25,  9}, { -5599, 13,  8}, { -5566, 27,  9}, { -5535,  7,  7},
+	{ -5504, 29,  9}, { -5475, 15,  8}, { -5446, 31,  9}, { -5419,  1,  4},
+	{ -5366, 17,  8}, { -5316,  9,  7}, { -5269, 19,  8}, { -5225,  5,  6},
+	{ -5182, 21,  8}, { -5142, 11,  7}, { -5103, 23,  8}, { -5066,  3,  5},
+	{ -5031, 25,  8}, { -4997, 13,  7}, { -4964, 27,  8}, { -4932,  7,  6},
+	{ -4902, 29,  8}, { -4873, 15,  7}, { -4844, 31,  8}, { -4816,  1,  3},
+	{ -4764, 17,  7}, { -4714,  9,  6}, { -4667, 19,  7}, { -4623,  5,  5},
+	{ -4580, 21,  7}, { -4540, 11,  6}, { -4501, 23,  7}, { -4464,  3,  4},
+	{ -4429, 25,  7}, { -4395, 13,  6}, { -4362, 27,  7}, { -4330,  7,  5},
+	{ -4300, 29,  7}, { -4270, 15,  6}, { -4242, 31,  7}, { -4214,  1,  2},
+	{ -4162, 17,  6}, { -4112,  9,  5}, { -4065, 19,  6}, { -4021,  5,  4},
+	{ -3978, 21,  6}, { -3938, 11,  5}, { -3899, 23,  6}, { -3862,  3,  3},
+	{ -3827, 25,  6}, { -3793, 13,  5}, { -3760, 27,  6}, { -3728,  7,  4},
+	{ -3698, 29,  6}, { -3668, 15,  5}, { -3640, 31,  6}, { -3612,  1,  1},
+	{ -3560, 17,  5}, { -3510,  9,  4}, { -3463, 19,  5}, { -3419,  5,  3},
+	{ -3376, 21,  5}, { -3336, 11,  4}, { -3297, 23,  5}, { -3260,  3,  2},
+	{ -3225, 25,  5}, { -3191, 13,  4}, { -3158, 27,  5}, { -3126,  7,  3},
+	{ -3096, 29,  5}, { -3066, 15,  4}, { -3038, 31,  5}, { -3010,  1,  0},
+	{ -2958, 17,  4}, { -2908,  9,  3}, { -2861, 19,  4}, { -2816,  5,  2},
+	{ -2774, 21,  4}, { -2734, 11,  3}, { -2695, 23,  4}, { -2658,  3,  1},
+	{ -2623, 25,  4}, { -2589, 13,  3}, { -2556, 27,  4}, { -2524,  7,  2},
+	{ -2494, 29,  4}, { -2464, 15,  3}, { -2436, 31,  4}, { -2408,  2,  0},
+	{ -2356, 17,  3}, { -2306,  9,  2}, { -2259, 19,  3}, { -2214,  5,  1},
+	{ -2172, 21,  3}, { -2132, 11,  2}, { -2093, 23,  3}, { -2056,  3,  0},
+	{ -2021, 25,  3}, { -1987, 13,  2}, { -1954, 27,  3}, { -1922,  7,  1},
+	{ -1892, 29,  3}, { -1862, 15,  2}, { -1834, 31,  3}, { -1806,  4,  0},
+	{ -1754, 17,  2}, { -1704,  9,  1}, { -1657, 19,  2}, { -1612,  5,  0},
+	{ -1570, 21,  2}, { -1530, 11,  1}, { -1491, 23,  2}, { -1454,  6,  0},
+	{ -1419, 25,  2}, { -1384, 13,  1}, { -1352, 27,  2}, { -1320,  7,  0},
+	{ -1290, 29,  2}, { -1260, 15,  1}, { -1232, 31,  2}, { -1204,  8,  0},
+	{ -1151, 17,  1}, { -1102,  9,  0}, { -1055, 19,  1}, { -1010, 10,  0},
+	{  -968, 21,  1}, {  -928, 11,  0}, {  -889, 23,  1}, {  -852, 12,  0},
+	{  -816, 25,  1}, {  -782, 13,  0}, {  -750, 27,  1}, {  -718, 14,  0},
+	{  -688, 29,  1}, {  -658, 15,  0}, {  -630, 31,  1}, {  -602, 16,  0},
+	{  -549, 17,  0}, {  -500, 18,  0}, {  -453, 19,  0}, {  -408, 20,  0},
+	{  -366, 21,  0}, {  -325, 22,  0}, {  -287, 23,  0}, {  -250, 24,  0},
+	{  -214, 25,  0}, {  -180, 26,  0}, {  -148, 27,  0}, {  -116, 28,  0},
+	{   -86, 29,  0}, {   -56, 30,  0}, {   -28, 31,  0}, {     0,  0,  0},
+};
+
+static int pm860x_volatile(unsigned int reg)
+{
+	BUG_ON(reg >= REG_CACHE_SIZE);
+
+	switch (reg) {
+	case PM860X_AUDIO_SUPPLIES_2:
+		return 1;
+	}
+
+	return 0;
+}
+
+static unsigned int pm860x_read_reg_cache(struct snd_soc_codec *codec,
+					  unsigned int reg)
+{
+	unsigned char *cache = codec->reg_cache;
+
+	BUG_ON(reg >= REG_CACHE_SIZE);
+
+	if (pm860x_volatile(reg))
+		return cache[reg];
+
+	reg += REG_CACHE_BASE;
+
+	return pm860x_reg_read(codec->control_data, reg);
+}
+
+static int pm860x_write_reg_cache(struct snd_soc_codec *codec,
+				  unsigned int reg, unsigned int value)
+{
+	unsigned char *cache = codec->reg_cache;
+
+	BUG_ON(reg >= REG_CACHE_SIZE);
+
+	if (!pm860x_volatile(reg))
+		cache[reg] = (unsigned char)value;
+
+	reg += REG_CACHE_BASE;
+
+	return pm860x_reg_write(codec->control_data, reg, value);
+}
+
+static int snd_soc_get_volsw_2r_st(struct snd_kcontrol *kcontrol,
+				   struct snd_ctl_elem_value *ucontrol)
+{
+	struct soc_mixer_control *mc =
+		(struct soc_mixer_control *)kcontrol->private_value;
+	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	unsigned int reg = mc->reg;
+	unsigned int reg2 = mc->rreg;
+	int val[2], val2[2], i;
+
+	val[0] = snd_soc_read(codec, reg) & 0x3f;
+	val[1] = (snd_soc_read(codec, PM860X_SIDETONE_SHIFT) >> 4) & 0xf;
+	val2[0] = snd_soc_read(codec, reg2) & 0x3f;
+	val2[1] = (snd_soc_read(codec, PM860X_SIDETONE_SHIFT)) & 0xf;
+
+	for (i = 0; i < ARRAY_SIZE(st_table); i++) {
+		if ((st_table[i].m == val[0]) && (st_table[i].n == val[1]))
+			ucontrol->value.integer.value[0] = i;
+		if ((st_table[i].m == val2[0]) && (st_table[i].n == val2[1]))
+			ucontrol->value.integer.value[1] = i;
+	}
+	return 0;
+}
+
+static int snd_soc_put_volsw_2r_st(struct snd_kcontrol *kcontrol,
+				   struct snd_ctl_elem_value *ucontrol)
+{
+	struct soc_mixer_control *mc =
+		(struct soc_mixer_control *)kcontrol->private_value;
+	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	unsigned int reg = mc->reg;
+	unsigned int reg2 = mc->rreg;
+	int err;
+	unsigned int val, val2;
+
+	val = ucontrol->value.integer.value[0];
+	val2 = ucontrol->value.integer.value[1];
+
+	err = snd_soc_update_bits(codec, reg, 0x3f, st_table[val].m);
+	if (err < 0)
+		return err;
+	err = snd_soc_update_bits(codec, PM860X_SIDETONE_SHIFT, 0xf0,
+				  st_table[val].n << 4);
+	if (err < 0)
+		return err;
+
+	err = snd_soc_update_bits(codec, reg2, 0x3f, st_table[val2].m);
+	if (err < 0)
+		return err;
+	err = snd_soc_update_bits(codec, PM860X_SIDETONE_SHIFT, 0x0f,
+				  st_table[val2].n);
+	return err;
+}
+
+static int snd_soc_get_volsw_2r_out(struct snd_kcontrol *kcontrol,
+				    struct snd_ctl_elem_value *ucontrol)
+{
+	struct soc_mixer_control *mc =
+		(struct soc_mixer_control *)kcontrol->private_value;
+	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	unsigned int reg = mc->reg;
+	unsigned int reg2 = mc->rreg;
+	unsigned int shift = mc->shift;
+	int max = mc->max, val, val2;
+	unsigned int mask = (1 << fls(max)) - 1;
+
+	val = snd_soc_read(codec, reg) >> shift;
+	val2 = snd_soc_read(codec, reg2) >> shift;
+	ucontrol->value.integer.value[0] = (max - val) & mask;
+	ucontrol->value.integer.value[1] = (max - val2) & mask;
+
+	return 0;
+}
+
+static int snd_soc_put_volsw_2r_out(struct snd_kcontrol *kcontrol,
+				    struct snd_ctl_elem_value *ucontrol)
+{
+	struct soc_mixer_control *mc =
+		(struct soc_mixer_control *)kcontrol->private_value;
+	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	unsigned int reg = mc->reg;
+	unsigned int reg2 = mc->rreg;
+	unsigned int shift = mc->shift;
+	int max = mc->max;
+	unsigned int mask = (1 << fls(max)) - 1;
+	int err;
+	unsigned int val, val2, val_mask;
+
+	val_mask = mask << shift;
+	val = ((max - ucontrol->value.integer.value[0]) & mask);
+	val2 = ((max - ucontrol->value.integer.value[1]) & mask);
+
+	val = val << shift;
+	val2 = val2 << shift;
+
+	err = snd_soc_update_bits(codec, reg, val_mask, val);
+	if (err < 0)
+		return err;
+
+	err = snd_soc_update_bits(codec, reg2, val_mask, val2);
+	return err;
+}
+
+/* DAPM Widget Events */
+/*
+ * A lot registers are belong to RSYNC domain. It requires enabling RSYNC bit
+ * after updating these registers. Otherwise, these updated registers won't
+ * be effective.
+ */
+static int pm860x_rsync_event(struct snd_soc_dapm_widget *w,
+			      struct snd_kcontrol *kcontrol, int event)
+{
+	struct snd_soc_codec *codec = w->codec;
+
+	/*
+	 * In order to avoid current on the load, mute power-on and power-off
+	 * should be transients.
+	 * Unmute by DAC_MUTE. It should be unmuted when DAPM sequence is
+	 * finished.
+	 */
+	snd_soc_update_bits(codec, PM860X_DAC_OFFSET, DAC_MUTE, 0);
+	snd_soc_update_bits(codec, PM860X_EAR_CTRL_2,
+			    RSYNC_CHANGE, RSYNC_CHANGE);
+	return 0;
+}
+
+static int pm860x_dac_event(struct snd_soc_dapm_widget *w,
+			    struct snd_kcontrol *kcontrol, int event)
+{
+	struct snd_soc_codec *codec = w->codec;
+	unsigned int dac = 0;
+	int data;
+
+	if (!strcmp(w->name, "Left DAC"))
+		dac = DAC_LEFT;
+	if (!strcmp(w->name, "Right DAC"))
+		dac = DAC_RIGHT;
+	switch (event) {
+	case SND_SOC_DAPM_PRE_PMU:
+		if (dac) {
+			/* Auto mute in power-on sequence. */
+			dac |= MODULATOR;
+			snd_soc_update_bits(codec, PM860X_DAC_OFFSET,
+					    DAC_MUTE, DAC_MUTE);
+			snd_soc_update_bits(codec, PM860X_EAR_CTRL_2,
+					    RSYNC_CHANGE, RSYNC_CHANGE);
+			/* update dac */
+			snd_soc_update_bits(codec, PM860X_DAC_EN_2,
+					    dac, dac);
+		}
+		break;
+	case SND_SOC_DAPM_PRE_PMD:
+		if (dac) {
+			/* Auto mute in power-off sequence. */
+			snd_soc_update_bits(codec, PM860X_DAC_OFFSET,
+					    DAC_MUTE, DAC_MUTE);
+			snd_soc_update_bits(codec, PM860X_EAR_CTRL_2,
+					    RSYNC_CHANGE, RSYNC_CHANGE);
+			/* update dac */
+			data = snd_soc_read(codec, PM860X_DAC_EN_2);
+			data &= ~dac;
+			if (!(data & (DAC_LEFT | DAC_RIGHT)))
+				data &= ~MODULATOR;
+			snd_soc_write(codec, PM860X_DAC_EN_2, data);
+		}
+		break;
+	}
+	return 0;
+}
+
+static const char *pm860x_opamp_texts[] = {"-50%", "-25%", "0%", "75%"};
+
+static const char *pm860x_pa_texts[] = {"-33%", "0%", "33%", "66%"};
+
+static const struct soc_enum pm860x_hs1_opamp_enum =
+	SOC_ENUM_SINGLE(PM860X_HS1_CTRL, 5, 4, pm860x_opamp_texts);
+
+static const struct soc_enum pm860x_hs2_opamp_enum =
+	SOC_ENUM_SINGLE(PM860X_HS2_CTRL, 5, 4, pm860x_opamp_texts);
+
+static const struct soc_enum pm860x_hs1_pa_enum =
+	SOC_ENUM_SINGLE(PM860X_HS1_CTRL, 3, 4, pm860x_pa_texts);
+
+static const struct soc_enum pm860x_hs2_pa_enum =
+	SOC_ENUM_SINGLE(PM860X_HS2_CTRL, 3, 4, pm860x_pa_texts);
+
+static const struct soc_enum pm860x_lo1_opamp_enum =
+	SOC_ENUM_SINGLE(PM860X_LO1_CTRL, 5, 4, pm860x_opamp_texts);
+
+static const struct soc_enum pm860x_lo2_opamp_enum =
+	SOC_ENUM_SINGLE(PM860X_LO2_CTRL, 5, 4, pm860x_opamp_texts);
+
+static const struct soc_enum pm860x_lo1_pa_enum =
+	SOC_ENUM_SINGLE(PM860X_LO1_CTRL, 3, 4, pm860x_pa_texts);
+
+static const struct soc_enum pm860x_lo2_pa_enum =
+	SOC_ENUM_SINGLE(PM860X_LO2_CTRL, 3, 4, pm860x_pa_texts);
+
+static const struct soc_enum pm860x_spk_pa_enum =
+	SOC_ENUM_SINGLE(PM860X_EAR_CTRL_1, 5, 4, pm860x_pa_texts);
+
+static const struct soc_enum pm860x_ear_pa_enum =
+	SOC_ENUM_SINGLE(PM860X_EAR_CTRL_2, 0, 4, pm860x_pa_texts);
+
+static const struct soc_enum pm860x_spk_ear_opamp_enum =
+	SOC_ENUM_SINGLE(PM860X_EAR_CTRL_1, 3, 4, pm860x_opamp_texts);
+
+static const struct snd_kcontrol_new pm860x_snd_controls[] = {
+	SOC_DOUBLE_R_TLV("ADC Capture Volume", PM860X_ADC_ANA_2,
+			PM860X_ADC_ANA_3, 6, 3, 0, adc_tlv),
+	SOC_DOUBLE_TLV("AUX Capture Volume", PM860X_ADC_ANA_3, 0, 3, 7, 0,
+			aux_tlv),
+	SOC_SINGLE_TLV("MIC1 Capture Volume", PM860X_ADC_ANA_2, 0, 7, 0,
+			mic_tlv),
+	SOC_SINGLE_TLV("MIC3 Capture Volume", PM860X_ADC_ANA_2, 3, 7, 0,
+			mic_tlv),
+	SOC_DOUBLE_R_EXT_TLV("Sidetone Volume", PM860X_SIDETONE_L_GAIN,
+			     PM860X_SIDETONE_R_GAIN, 0, ARRAY_SIZE(st_table)-1,
+			     0, snd_soc_get_volsw_2r_st,
+			     snd_soc_put_volsw_2r_st, st_tlv),
+	SOC_SINGLE_TLV("Speaker Playback Volume", PM860X_EAR_CTRL_1,
+			0, 7, 0, out_tlv),
+	SOC_DOUBLE_R_TLV("Line Playback Volume", PM860X_LO1_CTRL,
+			 PM860X_LO2_CTRL, 0, 7, 0, out_tlv),
+	SOC_DOUBLE_R_TLV("Headset Playback Volume", PM860X_HS1_CTRL,
+			 PM860X_HS2_CTRL, 0, 7, 0, out_tlv),
+	SOC_DOUBLE_R_EXT_TLV("Hifi Left Playback Volume",
+			     PM860X_HIFIL_GAIN_LEFT,
+			     PM860X_HIFIL_GAIN_RIGHT, 0, 63, 0,
+			     snd_soc_get_volsw_2r_out,
+			     snd_soc_put_volsw_2r_out, dpga_tlv),
+	SOC_DOUBLE_R_EXT_TLV("Hifi Right Playback Volume",
+			     PM860X_HIFIR_GAIN_LEFT,
+			     PM860X_HIFIR_GAIN_RIGHT, 0, 63, 0,
+			     snd_soc_get_volsw_2r_out,
+			     snd_soc_put_volsw_2r_out, dpga_tlv),
+	SOC_DOUBLE_R_EXT_TLV("Lofi Playback Volume", PM860X_LOFI_GAIN_LEFT,
+			     PM860X_LOFI_GAIN_RIGHT, 0, 63, 0,
+			     snd_soc_get_volsw_2r_out,
+			     snd_soc_put_volsw_2r_out, dpga_tlv),
+	SOC_ENUM("Headset1 Operational Amplifier Current",
+		 pm860x_hs1_opamp_enum),
+	SOC_ENUM("Headset2 Operational Amplifier Current",
+		 pm860x_hs2_opamp_enum),
+	SOC_ENUM("Headset1 Amplifier Current", pm860x_hs1_pa_enum),
+	SOC_ENUM("Headset2 Amplifier Current", pm860x_hs2_pa_enum),
+	SOC_ENUM("Lineout1 Operational Amplifier Current",
+		 pm860x_lo1_opamp_enum),
+	SOC_ENUM("Lineout2 Operational Amplifier Current",
+		 pm860x_lo2_opamp_enum),
+	SOC_ENUM("Lineout1 Amplifier Current", pm860x_lo1_pa_enum),
+	SOC_ENUM("Lineout2 Amplifier Current", pm860x_lo2_pa_enum),
+	SOC_ENUM("Speaker Operational Amplifier Current",
+		 pm860x_spk_ear_opamp_enum),
+	SOC_ENUM("Speaker Amplifier Current", pm860x_spk_pa_enum),
+	SOC_ENUM("Earpiece Amplifier Current", pm860x_ear_pa_enum),
+};
+
+/*
+ * DAPM Controls
+ */
+
+/* PCM Switch / PCM Interface */
+static const struct snd_kcontrol_new pcm_switch_controls =
+	SOC_DAPM_SINGLE("Switch", PM860X_ADC_EN_2, 0, 1, 0);
+
+/* AUX1 Switch */
+static const struct snd_kcontrol_new aux1_switch_controls =
+	SOC_DAPM_SINGLE("Switch", PM860X_ANA_TO_ANA, 4, 1, 0);
+
+/* AUX2 Switch */
+static const struct snd_kcontrol_new aux2_switch_controls =
+	SOC_DAPM_SINGLE("Switch", PM860X_ANA_TO_ANA, 5, 1, 0);
+
+/* Left Ex. PA Switch */
+static const struct snd_kcontrol_new lepa_switch_controls =
+	SOC_DAPM_SINGLE("Switch", PM860X_DAC_EN_2, 2, 1, 0);
+
+/* Right Ex. PA Switch */
+static const struct snd_kcontrol_new repa_switch_controls =
+	SOC_DAPM_SINGLE("Switch", PM860X_DAC_EN_2, 1, 1, 0);
+
+/* PCM Mux / Mux7 */
+static const char *aif1_text[] = {
+	"PCM L", "PCM R",
+};
+
+static const struct soc_enum aif1_enum =
+	SOC_ENUM_SINGLE(PM860X_PCM_IFACE_3, 6, 2, aif1_text);
+
+static const struct snd_kcontrol_new aif1_mux =
+	SOC_DAPM_ENUM("PCM Mux", aif1_enum);
+
+/* I2S Mux / Mux9 */
+static const char *i2s_din_text[] = {
+	"DIN", "DIN1",
+};
+
+static const struct soc_enum i2s_din_enum =
+	SOC_ENUM_SINGLE(PM860X_I2S_IFACE_3, 1, 2, i2s_din_text);
+
+static const struct snd_kcontrol_new i2s_din_mux =
+	SOC_DAPM_ENUM("I2S DIN Mux", i2s_din_enum);
+
+/* I2S Mic Mux / Mux8 */
+static const char *i2s_mic_text[] = {
+	"Ex PA", "ADC",
+};
+
+static const struct soc_enum i2s_mic_enum =
+	SOC_ENUM_SINGLE(PM860X_I2S_IFACE_3, 4, 2, i2s_mic_text);
+
+static const struct snd_kcontrol_new i2s_mic_mux =
+	SOC_DAPM_ENUM("I2S Mic Mux", i2s_mic_enum);
+
+/* ADCL Mux / Mux2 */
+static const char *adcl_text[] = {
+	"ADCR", "ADCL",
+};
+
+static const struct soc_enum adcl_enum =
+	SOC_ENUM_SINGLE(PM860X_PCM_IFACE_3, 4, 2, adcl_text);
+
+static const struct snd_kcontrol_new adcl_mux =
+	SOC_DAPM_ENUM("ADC Left Mux", adcl_enum);
+
+/* ADCR Mux / Mux3 */
+static const char *adcr_text[] = {
+	"ADCL", "ADCR",
+};
+
+static const struct soc_enum adcr_enum =
+	SOC_ENUM_SINGLE(PM860X_PCM_IFACE_3, 2, 2, adcr_text);
+
+static const struct snd_kcontrol_new adcr_mux =
+	SOC_DAPM_ENUM("ADC Right Mux", adcr_enum);
+
+/* ADCR EC Mux / Mux6 */
+static const char *adcr_ec_text[] = {
+	"ADCR", "EC",
+};
+
+static const struct soc_enum adcr_ec_enum =
+	SOC_ENUM_SINGLE(PM860X_ADC_EN_2, 3, 2, adcr_ec_text);
+
+static const struct snd_kcontrol_new adcr_ec_mux =
+	SOC_DAPM_ENUM("ADCR EC Mux", adcr_ec_enum);
+
+/* EC Mux / Mux4 */
+static const char *ec_text[] = {
+	"Left", "Right", "Left + Right",
+};
+
+static const struct soc_enum ec_enum =
+	SOC_ENUM_SINGLE(PM860X_EC_PATH, 1, 3, ec_text);
+
+static const struct snd_kcontrol_new ec_mux =
+	SOC_DAPM_ENUM("EC Mux", ec_enum);
+
+static const char *dac_text[] = {
+	"No input", "Right", "Left", "No input",
+};
+
+/* DAC Headset 1 Mux / Mux10 */
+static const struct soc_enum dac_hs1_enum =
+	SOC_ENUM_SINGLE(PM860X_ANA_INPUT_SEL_1, 0, 4, dac_text);
+
+static const struct snd_kcontrol_new dac_hs1_mux =
+	SOC_DAPM_ENUM("DAC HS1 Mux", dac_hs1_enum);
+
+/* DAC Headset 2 Mux / Mux11 */
+static const struct soc_enum dac_hs2_enum =
+	SOC_ENUM_SINGLE(PM860X_ANA_INPUT_SEL_1, 2, 4, dac_text);
+
+static const struct snd_kcontrol_new dac_hs2_mux =
+	SOC_DAPM_ENUM("DAC HS2 Mux", dac_hs2_enum);
+
+/* DAC Lineout 1 Mux / Mux12 */
+static const struct soc_enum dac_lo1_enum =
+	SOC_ENUM_SINGLE(PM860X_ANA_INPUT_SEL_1, 4, 4, dac_text);
+
+static const struct snd_kcontrol_new dac_lo1_mux =
+	SOC_DAPM_ENUM("DAC LO1 Mux", dac_lo1_enum);
+
+/* DAC Lineout 2 Mux / Mux13 */
+static const struct soc_enum dac_lo2_enum =
+	SOC_ENUM_SINGLE(PM860X_ANA_INPUT_SEL_1, 6, 4, dac_text);
+
+static const struct snd_kcontrol_new dac_lo2_mux =
+	SOC_DAPM_ENUM("DAC LO2 Mux", dac_lo2_enum);
+
+/* DAC Spearker Earphone Mux / Mux14 */
+static const struct soc_enum dac_spk_ear_enum =
+	SOC_ENUM_SINGLE(PM860X_ANA_INPUT_SEL_2, 0, 4, dac_text);
+
+static const struct snd_kcontrol_new dac_spk_ear_mux =
+	SOC_DAPM_ENUM("DAC SP Mux", dac_spk_ear_enum);
+
+/* Headset 1 Mux / Mux15 */
+static const char *in_text[] = {
+	"Digital", "Analog",
+};
+
+static const struct soc_enum hs1_enum =
+	SOC_ENUM_SINGLE(PM860X_ANA_TO_ANA, 0, 2, in_text);
+
+static const struct snd_kcontrol_new hs1_mux =
+	SOC_DAPM_ENUM("Headset1 Mux", hs1_enum);
+
+/* Headset 2 Mux / Mux16 */
+static const struct soc_enum hs2_enum =
+	SOC_ENUM_SINGLE(PM860X_ANA_TO_ANA, 1, 2, in_text);
+
+static const struct snd_kcontrol_new hs2_mux =
+	SOC_DAPM_ENUM("Headset2 Mux", hs2_enum);
+
+/* Lineout 1 Mux / Mux17 */
+static const struct soc_enum lo1_enum =
+	SOC_ENUM_SINGLE(PM860X_ANA_TO_ANA, 2, 2, in_text);
+
+static const struct snd_kcontrol_new lo1_mux =
+	SOC_DAPM_ENUM("Lineout1 Mux", lo1_enum);
+
+/* Lineout 2 Mux / Mux18 */
+static const struct soc_enum lo2_enum =
+	SOC_ENUM_SINGLE(PM860X_ANA_TO_ANA, 3, 2, in_text);
+
+static const struct snd_kcontrol_new lo2_mux =
+	SOC_DAPM_ENUM("Lineout2 Mux", lo2_enum);
+
+/* Speaker Earpiece Demux */
+static const char *spk_text[] = {
+	"Earpiece", "Speaker",
+};
+
+static const struct soc_enum spk_enum =
+	SOC_ENUM_SINGLE(PM860X_ANA_TO_ANA, 6, 2, spk_text);
+
+static const struct snd_kcontrol_new spk_demux =
+	SOC_DAPM_ENUM("Speaker Earpiece Demux", spk_enum);
+
+/* MIC Mux / Mux1 */
+static const char *mic_text[] = {
+	"Mic 1", "Mic 2",
+};
+
+static const struct soc_enum mic_enum =
+	SOC_ENUM_SINGLE(PM860X_ADC_ANA_4, 4, 2, mic_text);
+
+static const struct snd_kcontrol_new mic_mux =
+	SOC_DAPM_ENUM("MIC Mux", mic_enum);
+
+static const struct snd_soc_dapm_widget pm860x_dapm_widgets[] = {
+	SND_SOC_DAPM_AIF_IN("PCM SDI", "PCM Playback", 0,
+			    PM860X_ADC_EN_2, 0, 0),
+	SND_SOC_DAPM_AIF_OUT("PCM SDO", "PCM Capture", 0,
+			     PM860X_PCM_IFACE_3, 1, 1),
+
+
+	SND_SOC_DAPM_AIF_IN("I2S DIN", "I2S Playback", 0,
+			    PM860X_DAC_EN_2, 0, 0),
+	SND_SOC_DAPM_AIF_IN("I2S DIN1", "I2S Playback", 0,
+			    PM860X_DAC_EN_2, 0, 0),
+	SND_SOC_DAPM_AIF_OUT("I2S DOUT", "I2S Capture", 0,
+			     PM860X_I2S_IFACE_3, 5, 1),
+	SND_SOC_DAPM_MUX("I2S Mic Mux", SND_SOC_NOPM, 0, 0, &i2s_mic_mux),
+	SND_SOC_DAPM_MUX("ADC Left Mux", SND_SOC_NOPM, 0, 0, &adcl_mux),
+	SND_SOC_DAPM_MUX("ADC Right Mux", SND_SOC_NOPM, 0, 0, &adcr_mux),
+	SND_SOC_DAPM_MUX("EC Mux", SND_SOC_NOPM, 0, 0, &ec_mux),
+	SND_SOC_DAPM_MUX("ADCR EC Mux", SND_SOC_NOPM, 0, 0, &adcr_ec_mux),
+	SND_SOC_DAPM_SWITCH("Left EPA", SND_SOC_NOPM, 0, 0,
+			    &lepa_switch_controls),
+	SND_SOC_DAPM_SWITCH("Right EPA", SND_SOC_NOPM, 0, 0,
+			    &repa_switch_controls),
+
+	SND_SOC_DAPM_REG(snd_soc_dapm_supply, "Left ADC MOD", PM860X_ADC_EN_1,
+			 0, 1, 1, 0),
+	SND_SOC_DAPM_REG(snd_soc_dapm_supply, "Right ADC MOD", PM860X_ADC_EN_1,
+			 1, 1, 1, 0),
+	SND_SOC_DAPM_ADC("Left ADC", NULL, PM860X_ADC_EN_2, 5, 0),
+	SND_SOC_DAPM_ADC("Right ADC", NULL, PM860X_ADC_EN_2, 4, 0),
+
+	SND_SOC_DAPM_SWITCH("AUX1 Switch", SND_SOC_NOPM, 0, 0,
+			    &aux1_switch_controls),
+	SND_SOC_DAPM_SWITCH("AUX2 Switch", SND_SOC_NOPM, 0, 0,
+			    &aux2_switch_controls),
+
+	SND_SOC_DAPM_MUX("MIC Mux", SND_SOC_NOPM, 0, 0, &mic_mux),
+	SND_SOC_DAPM_MICBIAS("Mic1 Bias", PM860X_ADC_ANA_1, 2, 0),
+	SND_SOC_DAPM_MICBIAS("Mic3 Bias", PM860X_ADC_ANA_1, 7, 0),
+	SND_SOC_DAPM_PGA("MIC1 Volume", PM860X_ADC_EN_1, 2, 0, NULL, 0),
+	SND_SOC_DAPM_PGA("MIC3 Volume", PM860X_ADC_EN_1, 3, 0, NULL, 0),
+	SND_SOC_DAPM_PGA("AUX1 Volume", PM860X_ADC_EN_1, 4, 0, NULL, 0),
+	SND_SOC_DAPM_PGA("AUX2 Volume", PM860X_ADC_EN_1, 5, 0, NULL, 0),
+	SND_SOC_DAPM_PGA("Sidetone PGA", PM860X_ADC_EN_2, 1, 0, NULL, 0),
+	SND_SOC_DAPM_PGA("Lofi PGA", PM860X_ADC_EN_2, 2, 0, NULL, 0),
+
+	SND_SOC_DAPM_INPUT("AUX1"),
+	SND_SOC_DAPM_INPUT("AUX2"),
+	SND_SOC_DAPM_INPUT("MIC1P"),
+	SND_SOC_DAPM_INPUT("MIC1N"),
+	SND_SOC_DAPM_INPUT("MIC2P"),
+	SND_SOC_DAPM_INPUT("MIC2N"),
+	SND_SOC_DAPM_INPUT("MIC3P"),
+	SND_SOC_DAPM_INPUT("MIC3N"),
+
+	SND_SOC_DAPM_DAC_E("Left DAC", NULL, SND_SOC_NOPM, 0, 0,
+			   pm860x_dac_event,
+			   SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD),
+	SND_SOC_DAPM_DAC_E("Right DAC", NULL, SND_SOC_NOPM, 0, 0,
+			   pm860x_dac_event,
+			   SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD),
+
+	SND_SOC_DAPM_MUX("I2S DIN Mux", SND_SOC_NOPM, 0, 0, &i2s_din_mux),
+	SND_SOC_DAPM_MUX("DAC HS1 Mux", SND_SOC_NOPM, 0, 0, &dac_hs1_mux),
+	SND_SOC_DAPM_MUX("DAC HS2 Mux", SND_SOC_NOPM, 0, 0, &dac_hs2_mux),
+	SND_SOC_DAPM_MUX("DAC LO1 Mux", SND_SOC_NOPM, 0, 0, &dac_lo1_mux),
+	SND_SOC_DAPM_MUX("DAC LO2 Mux", SND_SOC_NOPM, 0, 0, &dac_lo2_mux),
+	SND_SOC_DAPM_MUX("DAC SP Mux", SND_SOC_NOPM, 0, 0, &dac_spk_ear_mux),
+	SND_SOC_DAPM_MUX("Headset1 Mux", SND_SOC_NOPM, 0, 0, &hs1_mux),
+	SND_SOC_DAPM_MUX("Headset2 Mux", SND_SOC_NOPM, 0, 0, &hs2_mux),
+	SND_SOC_DAPM_MUX("Lineout1 Mux", SND_SOC_NOPM, 0, 0, &lo1_mux),
+	SND_SOC_DAPM_MUX("Lineout2 Mux", SND_SOC_NOPM, 0, 0, &lo2_mux),
+	SND_SOC_DAPM_MUX("Speaker Earpiece Demux", SND_SOC_NOPM, 0, 0,
+			 &spk_demux),
+
+
+	SND_SOC_DAPM_PGA("Headset1 PGA", PM860X_DAC_EN_1, 0, 0, NULL, 0),
+	SND_SOC_DAPM_PGA("Headset2 PGA", PM860X_DAC_EN_1, 1, 0, NULL, 0),
+	SND_SOC_DAPM_OUTPUT("HS1"),
+	SND_SOC_DAPM_OUTPUT("HS2"),
+	SND_SOC_DAPM_PGA("Lineout1 PGA", PM860X_DAC_EN_1, 2, 0, NULL, 0),
+	SND_SOC_DAPM_PGA("Lineout2 PGA", PM860X_DAC_EN_1, 3, 0, NULL, 0),
+	SND_SOC_DAPM_OUTPUT("LINEOUT1"),
+	SND_SOC_DAPM_OUTPUT("LINEOUT2"),
+	SND_SOC_DAPM_PGA("Earpiece PGA", PM860X_DAC_EN_1, 4, 0, NULL, 0),
+	SND_SOC_DAPM_OUTPUT("EARP"),
+	SND_SOC_DAPM_OUTPUT("EARN"),
+	SND_SOC_DAPM_PGA("Speaker PGA", PM860X_DAC_EN_1, 5, 0, NULL, 0),
+	SND_SOC_DAPM_OUTPUT("LSP"),
+	SND_SOC_DAPM_OUTPUT("LSN"),
+	SND_SOC_DAPM_REG(snd_soc_dapm_supply, "VCODEC", PM860X_AUDIO_SUPPLIES_2,
+			 0, SUPPLY_MASK, SUPPLY_MASK, 0),
+
+	PM860X_DAPM_OUTPUT("RSYNC", pm860x_rsync_event),
+};
+
+static const struct snd_soc_dapm_route audio_map[] = {
+	/* supply */
+	{"Left DAC", NULL, "VCODEC"},
+	{"Right DAC", NULL, "VCODEC"},
+	{"Left ADC", NULL, "VCODEC"},
+	{"Right ADC", NULL, "VCODEC"},
+	{"Left ADC", NULL, "Left ADC MOD"},
+	{"Right ADC", NULL, "Right ADC MOD"},
+
+	/* PCM/AIF1 Inputs */
+	{"PCM SDO", NULL, "ADC Left Mux"},
+	{"PCM SDO", NULL, "ADCR EC Mux"},
+
+	/* PCM/AFI2 Outputs */
+	{"Lofi PGA", NULL, "PCM SDI"},
+	{"Lofi PGA", NULL, "Sidetone PGA"},
+	{"Left DAC", NULL, "Lofi PGA"},
+	{"Right DAC", NULL, "Lofi PGA"},
+
+	/* I2S/AIF2 Inputs */
+	{"MIC Mux", "Mic 1", "MIC1P"},
+	{"MIC Mux", "Mic 1", "MIC1N"},
+	{"MIC Mux", "Mic 2", "MIC2P"},
+	{"MIC Mux", "Mic 2", "MIC2N"},
+	{"MIC1 Volume", NULL, "MIC Mux"},
+	{"MIC3 Volume", NULL, "MIC3P"},
+	{"MIC3 Volume", NULL, "MIC3N"},
+	{"Left ADC", NULL, "MIC1 Volume"},
+	{"Right ADC", NULL, "MIC3 Volume"},
+	{"ADC Left Mux", "ADCR", "Right ADC"},
+	{"ADC Left Mux", "ADCL", "Left ADC"},
+	{"ADC Right Mux", "ADCL", "Left ADC"},
+	{"ADC Right Mux", "ADCR", "Right ADC"},
+	{"Left EPA", "Switch", "Left DAC"},
+	{"Right EPA", "Switch", "Right DAC"},
+	{"EC Mux", "Left", "Left DAC"},
+	{"EC Mux", "Right", "Right DAC"},
+	{"EC Mux", "Left + Right", "Left DAC"},
+	{"EC Mux", "Left + Right", "Right DAC"},
+	{"ADCR EC Mux", "ADCR", "ADC Right Mux"},
+	{"ADCR EC Mux", "EC", "EC Mux"},
+	{"I2S Mic Mux", "Ex PA", "Left EPA"},
+	{"I2S Mic Mux", "Ex PA", "Right EPA"},
+	{"I2S Mic Mux", "ADC", "ADC Left Mux"},
+	{"I2S Mic Mux", "ADC", "ADCR EC Mux"},
+	{"I2S DOUT", NULL, "I2S Mic Mux"},
+
+	/* I2S/AIF2 Outputs */
+	{"I2S DIN Mux", "DIN", "I2S DIN"},
+	{"I2S DIN Mux", "DIN1", "I2S DIN1"},
+	{"Left DAC", NULL, "I2S DIN Mux"},
+	{"Right DAC", NULL, "I2S DIN Mux"},
+	{"DAC HS1 Mux", "Left", "Left DAC"},
+	{"DAC HS1 Mux", "Right", "Right DAC"},
+	{"DAC HS2 Mux", "Left", "Left DAC"},
+	{"DAC HS2 Mux", "Right", "Right DAC"},
+	{"DAC LO1 Mux", "Left", "Left DAC"},
+	{"DAC LO1 Mux", "Right", "Right DAC"},
+	{"DAC LO2 Mux", "Left", "Left DAC"},
+	{"DAC LO2 Mux", "Right", "Right DAC"},
+	{"Headset1 Mux", "Digital", "DAC HS1 Mux"},
+	{"Headset2 Mux", "Digital", "DAC HS2 Mux"},
+	{"Lineout1 Mux", "Digital", "DAC LO1 Mux"},
+	{"Lineout2 Mux", "Digital", "DAC LO2 Mux"},
+	{"Headset1 PGA", NULL, "Headset1 Mux"},
+	{"Headset2 PGA", NULL, "Headset2 Mux"},
+	{"Lineout1 PGA", NULL, "Lineout1 Mux"},
+	{"Lineout2 PGA", NULL, "Lineout2 Mux"},
+	{"DAC SP Mux", "Left", "Left DAC"},
+	{"DAC SP Mux", "Right", "Right DAC"},
+	{"Speaker Earpiece Demux", "Speaker", "DAC SP Mux"},
+	{"Speaker PGA", NULL, "Speaker Earpiece Demux"},
+	{"Earpiece PGA", NULL, "Speaker Earpiece Demux"},
+
+	{"RSYNC", NULL, "Headset1 PGA"},
+	{"RSYNC", NULL, "Headset2 PGA"},
+	{"RSYNC", NULL, "Lineout1 PGA"},
+	{"RSYNC", NULL, "Lineout2 PGA"},
+	{"RSYNC", NULL, "Speaker PGA"},
+	{"RSYNC", NULL, "Speaker PGA"},
+	{"RSYNC", NULL, "Earpiece PGA"},
+	{"RSYNC", NULL, "Earpiece PGA"},
+
+	{"HS1", NULL, "RSYNC"},
+	{"HS2", NULL, "RSYNC"},
+	{"LINEOUT1", NULL, "RSYNC"},
+	{"LINEOUT2", NULL, "RSYNC"},
+	{"LSP", NULL, "RSYNC"},
+	{"LSN", NULL, "RSYNC"},
+	{"EARP", NULL, "RSYNC"},
+	{"EARN", NULL, "RSYNC"},
+};
+
+/*
+ * Use MUTE_LEFT & MUTE_RIGHT to implement digital mute.
+ * These bits can also be used to mute.
+ */
+static int pm860x_digital_mute(struct snd_soc_dai *codec_dai, int mute)
+{
+	struct snd_soc_codec *codec = codec_dai->codec;
+	int data = 0, mask = MUTE_LEFT | MUTE_RIGHT;
+
+	if (mute)
+		data = mask;
+	snd_soc_update_bits(codec, PM860X_DAC_OFFSET, mask, data);
+	snd_soc_update_bits(codec, PM860X_EAR_CTRL_2,
+			    RSYNC_CHANGE, RSYNC_CHANGE);
+	return 0;
+}
+
+static int pm860x_pcm_hw_params(struct snd_pcm_substream *substream,
+				struct snd_pcm_hw_params *params,
+				struct snd_soc_dai *dai)
+{
+	struct snd_soc_codec *codec = dai->codec;
+	unsigned char inf = 0, mask = 0;
+
+	/* bit size */
+	switch (params_format(params)) {
+	case SNDRV_PCM_FORMAT_S16_LE:
+		inf &= ~PCM_INF2_18WL;
+		break;
+	case SNDRV_PCM_FORMAT_S18_3LE:
+		inf |= PCM_INF2_18WL;
+		break;
+	default:
+		return -EINVAL;
+	}
+	mask |= PCM_INF2_18WL;
+	snd_soc_update_bits(codec, PM860X_PCM_IFACE_2, mask, inf);
+
+	/* sample rate */
+	switch (params_rate(params)) {
+	case 8000:
+		inf = 0;
+		break;
+	case 16000:
+		inf = 3;
+		break;
+	case 32000:
+		inf = 6;
+		break;
+	case 48000:
+		inf = 8;
+		break;
+	default:
+		return -EINVAL;
+	}
+	snd_soc_update_bits(codec, PM860X_PCM_RATE, 0x0f, inf);
+
+	return 0;
+}
+
+static int pm860x_pcm_set_dai_fmt(struct snd_soc_dai *codec_dai,
+				  unsigned int fmt)
+{
+	struct snd_soc_codec *codec = codec_dai->codec;
+	struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec);
+	unsigned char inf = 0, mask = 0;
+	int ret = -EINVAL;
+
+	mask |= PCM_INF2_BCLK | PCM_INF2_FS | PCM_INF2_MASTER;
+
+	/* set master/slave audio interface */
+	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
+	case SND_SOC_DAIFMT_CBM_CFM:
+	case SND_SOC_DAIFMT_CBM_CFS:
+		if (pm860x->dir == PM860X_CLK_DIR_OUT) {
+			inf |= PCM_INF2_MASTER;
+			ret = 0;
+		}
+		break;
+	case SND_SOC_DAIFMT_CBS_CFS:
+		if (pm860x->dir == PM860X_CLK_DIR_IN) {
+			inf &= ~PCM_INF2_MASTER;
+			ret = 0;
+		}
+		break;
+	}
+
+	switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
+	case SND_SOC_DAIFMT_I2S:
+		inf |= PCM_EXACT_I2S;
+		ret = 0;
+		break;
+	}
+	mask |= PCM_MODE_MASK;
+	if (ret)
+		return ret;
+	snd_soc_update_bits(codec, PM860X_PCM_IFACE_2, mask, inf);
+	return 0;
+}
+
+static int pm860x_set_dai_sysclk(struct snd_soc_dai *codec_dai,
+				 int clk_id, unsigned int freq, int dir)
+{
+	struct snd_soc_codec *codec = codec_dai->codec;
+	struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec);
+
+	if (dir == PM860X_CLK_DIR_OUT)
+		pm860x->dir = PM860X_CLK_DIR_OUT;
+	else {
+		pm860x->dir = PM860X_CLK_DIR_IN;
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+static int pm860x_i2s_hw_params(struct snd_pcm_substream *substream,
+				struct snd_pcm_hw_params *params,
+				struct snd_soc_dai *dai)
+{
+	struct snd_soc_codec *codec = dai->codec;
+	unsigned char inf;
+
+	/* bit size */
+	switch (params_format(params)) {
+	case SNDRV_PCM_FORMAT_S16_LE:
+		inf = 0;
+		break;
+	case SNDRV_PCM_FORMAT_S18_3LE:
+		inf = PCM_INF2_18WL;
+		break;
+	default:
+		return -EINVAL;
+	}
+	snd_soc_update_bits(codec, PM860X_I2S_IFACE_2, PCM_INF2_18WL, inf);
+
+	/* sample rate */
+	switch (params_rate(params)) {
+	case 8000:
+		inf = 0;
+		break;
+	case 11025:
+		inf = 1;
+		break;
+	case 16000:
+		inf = 3;
+		break;
+	case 22050:
+		inf = 4;
+		break;
+	case 32000:
+		inf = 6;
+		break;
+	case 44100:
+		inf = 7;
+		break;
+	case 48000:
+		inf = 8;
+		break;
+	default:
+		return -EINVAL;
+	}
+	snd_soc_update_bits(codec, PM860X_I2S_IFACE_4, 0xf, inf);
+
+	return 0;
+}
+
+static int pm860x_i2s_set_dai_fmt(struct snd_soc_dai *codec_dai,
+				  unsigned int fmt)
+{
+	struct snd_soc_codec *codec = codec_dai->codec;
+	struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec);
+	unsigned char inf = 0, mask = 0;
+
+	mask |= PCM_INF2_BCLK | PCM_INF2_FS | PCM_INF2_MASTER;
+
+	/* set master/slave audio interface */
+	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
+	case SND_SOC_DAIFMT_CBM_CFM:
+		if (pm860x->dir == PM860X_CLK_DIR_OUT)
+			inf |= PCM_INF2_MASTER;
+		else
+			return -EINVAL;
+		break;
+	case SND_SOC_DAIFMT_CBS_CFS:
+		if (pm860x->dir == PM860X_CLK_DIR_IN)
+			inf &= ~PCM_INF2_MASTER;
+		else
+			return -EINVAL;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
+	case SND_SOC_DAIFMT_I2S:
+		inf |= PCM_EXACT_I2S;
+		break;
+	default:
+		return -EINVAL;
+	}
+	mask |= PCM_MODE_MASK;
+	snd_soc_update_bits(codec, PM860X_I2S_IFACE_2, mask, inf);
+	return 0;
+}
+
+static int pm860x_set_bias_level(struct snd_soc_codec *codec,
+				 enum snd_soc_bias_level level)
+{
+	int data;
+
+	switch (level) {
+	case SND_SOC_BIAS_ON:
+		break;
+
+	case SND_SOC_BIAS_PREPARE:
+		break;
+
+	case SND_SOC_BIAS_STANDBY:
+		if (codec->bias_level == SND_SOC_BIAS_OFF) {
+			/* Enable Audio PLL & Audio section */
+			data = AUDIO_PLL | AUDIO_SECTION_RESET
+				| AUDIO_SECTION_ON;
+			pm860x_reg_write(codec->control_data, REG_MISC2, data);
+		}
+		break;
+
+	case SND_SOC_BIAS_OFF:
+		data = AUDIO_PLL | AUDIO_SECTION_RESET | AUDIO_SECTION_ON;
+		pm860x_set_bits(codec->control_data, REG_MISC2, data, 0);
+		break;
+	}
+	codec->bias_level = level;
+	return 0;
+}
+
+static struct snd_soc_dai_ops pm860x_pcm_dai_ops = {
+	.digital_mute	= pm860x_digital_mute,
+	.hw_params	= pm860x_pcm_hw_params,
+	.set_fmt	= pm860x_pcm_set_dai_fmt,
+	.set_sysclk	= pm860x_set_dai_sysclk,
+};
+
+static struct snd_soc_dai_ops pm860x_i2s_dai_ops = {
+	.digital_mute	= pm860x_digital_mute,
+	.hw_params	= pm860x_i2s_hw_params,
+	.set_fmt	= pm860x_i2s_set_dai_fmt,
+	.set_sysclk	= pm860x_set_dai_sysclk,
+};
+
+#define PM860X_RATES	(SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |	\
+			 SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000)
+
+static struct snd_soc_dai_driver pm860x_dai[] = {
+	{
+		/* DAI PCM */
+		.name	= "88pm860x-pcm",
+		.id	= 1,
+		.playback = {
+			.stream_name	= "PCM Playback",
+			.channels_min	= 2,
+			.channels_max	= 2,
+			.rates		= PM860X_RATES,
+			.formats	= SNDRV_PCM_FORMAT_S16_LE | \
+					  SNDRV_PCM_FORMAT_S18_3LE,
+		},
+		.capture = {
+			.stream_name	= "PCM Capture",
+			.channels_min	= 2,
+			.channels_max	= 2,
+			.rates		= PM860X_RATES,
+			.formats	= SNDRV_PCM_FORMAT_S16_LE | \
+					  SNDRV_PCM_FORMAT_S18_3LE,
+		},
+		.ops	= &pm860x_pcm_dai_ops,
+	}, {
+		/* DAI I2S */
+		.name	= "88pm860x-i2s",
+		.id	= 2,
+		.playback = {
+			.stream_name	= "I2S Playback",
+			.channels_min	= 2,
+			.channels_max	= 2,
+			.rates		= SNDRV_PCM_RATE_8000_48000,
+			.formats	= SNDRV_PCM_FORMAT_S16_LE | \
+					  SNDRV_PCM_FORMAT_S18_3LE,
+		},
+		.capture = {
+			.stream_name	= "I2S Capture",
+			.channels_min	= 2,
+			.channels_max	= 2,
+			.rates		= SNDRV_PCM_RATE_8000_48000,
+			.formats	= SNDRV_PCM_FORMAT_S16_LE | \
+					  SNDRV_PCM_FORMAT_S18_3LE,
+		},
+		.ops	= &pm860x_i2s_dai_ops,
+	},
+};
+
+static irqreturn_t pm860x_codec_handler(int irq, void *data)
+{
+	struct pm860x_priv *pm860x = data;
+	int status, shrt, report = 0, mic_report = 0;
+	int mask;
+
+	status = pm860x_reg_read(pm860x->i2c, REG_STATUS_1);
+	shrt = pm860x_reg_read(pm860x->i2c, REG_SHORTS);
+	mask = pm860x->det.hs_shrt | pm860x->det.hook_det | pm860x->det.lo_shrt
+		| pm860x->det.hp_det;
+
+	if ((pm860x->det.hp_det & SND_JACK_HEADPHONE)
+		&& (status & HEADSET_STATUS))
+		report |= SND_JACK_HEADPHONE;
+
+	if ((pm860x->det.mic_det & SND_JACK_MICROPHONE)
+		&& (status & MIC_STATUS))
+		mic_report |= SND_JACK_MICROPHONE;
+
+	if (pm860x->det.hs_shrt && (shrt & (SHORT_HS1 | SHORT_HS2)))
+		report |= pm860x->det.hs_shrt;
+
+	if (pm860x->det.hook_det && (status & HOOK_STATUS))
+		report |= pm860x->det.hook_det;
+
+	if (pm860x->det.lo_shrt && (shrt & (SHORT_LO1 | SHORT_LO2)))
+		report |= pm860x->det.lo_shrt;
+
+	if (report)
+		snd_soc_jack_report(pm860x->det.hp_jack, report, mask);
+	if (mic_report)
+		snd_soc_jack_report(pm860x->det.mic_jack, SND_JACK_MICROPHONE,
+				    SND_JACK_MICROPHONE);
+
+	dev_dbg(pm860x->codec->dev, "headphone report:0x%x, mask:%x\n",
+		report, mask);
+	dev_dbg(pm860x->codec->dev, "microphone report:0x%x\n", mic_report);
+	return IRQ_HANDLED;
+}
+
+int pm860x_hs_jack_detect(struct snd_soc_codec *codec,
+			  struct snd_soc_jack *jack,
+			  int det, int hook, int hs_shrt, int lo_shrt)
+{
+	struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec);
+	int data;
+
+	pm860x->det.hp_jack = jack;
+	pm860x->det.hp_det = det;
+	pm860x->det.hook_det = hook;
+	pm860x->det.hs_shrt = hs_shrt;
+	pm860x->det.lo_shrt = lo_shrt;
+
+	if (det & SND_JACK_HEADPHONE)
+		pm860x_set_bits(codec->control_data, REG_HS_DET,
+				EN_HS_DET, EN_HS_DET);
+	/* headset short detect */
+	if (hs_shrt) {
+		data = CLR_SHORT_HS2 | CLR_SHORT_HS1;
+		pm860x_set_bits(codec->control_data, REG_SHORTS, data, data);
+	}
+	/* Lineout short detect */
+	if (lo_shrt) {
+		data = CLR_SHORT_LO2 | CLR_SHORT_LO1;
+		pm860x_set_bits(codec->control_data, REG_SHORTS, data, data);
+	}
+
+	/* sync status */
+	pm860x_codec_handler(0, pm860x);
+	return 0;
+}
+EXPORT_SYMBOL_GPL(pm860x_hs_jack_detect);
+
+int pm860x_mic_jack_detect(struct snd_soc_codec *codec,
+			   struct snd_soc_jack *jack, int det)
+{
+	struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec);
+
+	pm860x->det.mic_jack = jack;
+	pm860x->det.mic_det = det;
+
+	if (det & SND_JACK_MICROPHONE)
+		pm860x_set_bits(codec->control_data, REG_MIC_DET,
+				MICDET_MASK, MICDET_MASK);
+
+	/* sync status */
+	pm860x_codec_handler(0, pm860x);
+	return 0;
+}
+EXPORT_SYMBOL_GPL(pm860x_mic_jack_detect);
+
+static int pm860x_probe(struct snd_soc_codec *codec)
+{
+	struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec);
+	int i, ret;
+
+	pm860x->codec = codec;
+
+	codec->control_data = pm860x->i2c;
+
+	for (i = 0; i < 4; i++) {
+		ret = request_threaded_irq(pm860x->irq[i], NULL,
+					   pm860x_codec_handler, IRQF_ONESHOT,
+					   pm860x->name[i], pm860x);
+		if (ret < 0) {
+			dev_err(codec->dev, "Failed to request IRQ!\n");
+			goto out_irq;
+		}
+	}
+
+	pm860x_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
+
+	ret = pm860x_bulk_read(codec->control_data, REG_CACHE_BASE,
+			       REG_CACHE_SIZE, codec->reg_cache);
+	if (ret < 0) {
+		dev_err(codec->dev, "Failed to fill register cache: %d\n",
+			ret);
+		goto out_codec;
+	}
+
+	snd_soc_add_controls(codec, pm860x_snd_controls,
+			     ARRAY_SIZE(pm860x_snd_controls));
+	snd_soc_dapm_new_controls(codec, pm860x_dapm_widgets,
+				  ARRAY_SIZE(pm860x_dapm_widgets));
+	snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
+	return 0;
+
+out_codec:
+	i = 3;
+out_irq:
+	for (; i >= 0; i--)
+		free_irq(pm860x->irq[i], pm860x);
+	return -EINVAL;
+}
+
+static int pm860x_remove(struct snd_soc_codec *codec)
+{
+	struct pm860x_priv *pm860x = snd_soc_codec_get_drvdata(codec);
+	int i;
+
+	for (i = 3; i >= 0; i--)
+		free_irq(pm860x->irq[i], pm860x);
+	pm860x_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
+}
+
+static struct snd_soc_codec_driver soc_codec_dev_pm860x = {
+	.probe		= pm860x_probe,
+	.remove		= pm860x_remove,
+	.read		= pm860x_read_reg_cache,
+	.write		= pm860x_write_reg_cache,
+	.reg_cache_size	= REG_CACHE_SIZE,
+	.reg_word_size	= sizeof(u8),
+	.set_bias_level	= pm860x_set_bias_level,
+};
+
+static int __devinit pm860x_codec_probe(struct platform_device *pdev)
+{
+	struct pm860x_chip *chip = dev_get_drvdata(pdev->dev.parent);
+	struct pm860x_priv *pm860x;
+	struct resource *res;
+	int i, ret;
+
+	pm860x = kzalloc(sizeof(struct pm860x_priv), GFP_KERNEL);
+	if (pm860x == NULL)
+		return -ENOMEM;
+
+	pm860x->chip = chip;
+	pm860x->i2c = (chip->id == CHIP_PM8607) ? chip->client
+			: chip->companion;
+	platform_set_drvdata(pdev, pm860x);
+
+	for (i = 0; i < 4; i++) {
+		res = platform_get_resource(pdev, IORESOURCE_IRQ, i);
+		if (!res) {
+			dev_err(&pdev->dev, "Failed to get IRQ resources\n");
+			goto out;
+		}
+		pm860x->irq[i] = res->start + chip->irq_base;
+		strncpy(pm860x->name[i], res->name, MAX_NAME_LEN);
+	}
+
+	ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_pm860x,
+				     pm860x_dai, ARRAY_SIZE(pm860x_dai));
+	if (ret) {
+		dev_err(&pdev->dev, "Failed to register codec\n");
+		goto out;
+	}
+	return ret;
+
+out:
+	platform_set_drvdata(pdev, NULL);
+	kfree(pm860x);
+	return -EINVAL;
+}
+
+static int __devexit pm860x_codec_remove(struct platform_device *pdev)
+{
+	struct pm860x_priv *pm860x = platform_get_drvdata(pdev);
+
+	snd_soc_unregister_codec(&pdev->dev);
+	platform_set_drvdata(pdev, NULL);
+	kfree(pm860x);
+	return 0;
+}
+
+static struct platform_driver pm860x_codec_driver = {
+	.driver	= {
+		.name	= "88pm860x-codec",
+		.owner	= THIS_MODULE,
+	},
+	.probe	= pm860x_codec_probe,
+	.remove	= __devexit_p(pm860x_codec_remove),
+};
+
+static __init int pm860x_init(void)
+{
+	return platform_driver_register(&pm860x_codec_driver);
+}
+module_init(pm860x_init);
+
+static __exit void pm860x_exit(void)
+{
+	platform_driver_unregister(&pm860x_codec_driver);
+}
+module_exit(pm860x_exit);
+
+MODULE_DESCRIPTION("ASoC 88PM860x driver");
+MODULE_AUTHOR("Haojian Zhuang <haojian.zhuang@marvell.com>");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:88pm860x-codec");
+
diff --git a/sound/soc/codecs/88pm860x-codec.h b/sound/soc/codecs/88pm860x-codec.h
new file mode 100644
index 0000000..3364ba4
--- /dev/null
+++ b/sound/soc/codecs/88pm860x-codec.h
@@ -0,0 +1,97 @@
+/*
+ * 88pm860x-codec.h -- 88PM860x ALSA SoC Audio Driver
+ *
+ * Copyright 2010 Marvell International Ltd.
+ *	Haojian Zhuang <haojian.zhuang@marvell.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef __88PM860X_H
+#define __88PM860X_H
+
+/* The offset of these registers are 0xb0 */
+#define PM860X_PCM_IFACE_1		0x00
+#define PM860X_PCM_IFACE_2		0x01
+#define PM860X_PCM_IFACE_3		0x02
+#define PM860X_PCM_RATE			0x03
+#define PM860X_EC_PATH			0x04
+#define PM860X_SIDETONE_L_GAIN		0x05
+#define PM860X_SIDETONE_R_GAIN		0x06
+#define PM860X_SIDETONE_SHIFT		0x07
+#define PM860X_ADC_OFFSET_1		0x08
+#define PM860X_ADC_OFFSET_2		0x09
+#define PM860X_DMIC_DELAY		0x0a
+
+#define PM860X_I2S_IFACE_1		0x0b
+#define PM860X_I2S_IFACE_2		0x0c
+#define PM860X_I2S_IFACE_3		0x0d
+#define PM860X_I2S_IFACE_4		0x0e
+#define PM860X_EQUALIZER_N0_1		0x0f
+#define PM860X_EQUALIZER_N0_2		0x10
+#define PM860X_EQUALIZER_N1_1		0x11
+#define PM860X_EQUALIZER_N1_2		0x12
+#define PM860X_EQUALIZER_D1_1		0x13
+#define PM860X_EQUALIZER_D1_2		0x14
+#define PM860X_LOFI_GAIN_LEFT		0x15
+#define PM860X_LOFI_GAIN_RIGHT		0x16
+#define PM860X_HIFIL_GAIN_LEFT		0x17
+#define PM860X_HIFIL_GAIN_RIGHT		0x18
+#define PM860X_HIFIR_GAIN_LEFT		0x19
+#define PM860X_HIFIR_GAIN_RIGHT		0x1a
+#define PM860X_DAC_OFFSET		0x1b
+#define PM860X_OFFSET_LEFT_1		0x1c
+#define PM860X_OFFSET_LEFT_2		0x1d
+#define PM860X_OFFSET_RIGHT_1		0x1e
+#define PM860X_OFFSET_RIGHT_2		0x1f
+#define PM860X_ADC_ANA_1		0x20
+#define PM860X_ADC_ANA_2		0x21
+#define PM860X_ADC_ANA_3		0x22
+#define PM860X_ADC_ANA_4		0x23
+#define PM860X_ANA_TO_ANA		0x24
+#define PM860X_HS1_CTRL			0x25
+#define PM860X_HS2_CTRL			0x26
+#define PM860X_LO1_CTRL			0x27
+#define PM860X_LO2_CTRL			0x28
+#define PM860X_EAR_CTRL_1		0x29
+#define PM860X_EAR_CTRL_2		0x2a
+#define PM860X_AUDIO_SUPPLIES_1		0x2b
+#define PM860X_AUDIO_SUPPLIES_2		0x2c
+#define PM860X_ADC_EN_1			0x2d
+#define PM860X_ADC_EN_2			0x2e
+#define PM860X_DAC_EN_1			0x2f
+#define PM860X_DAC_EN_2			0x31
+#define PM860X_AUDIO_CAL_1		0x32
+#define PM860X_AUDIO_CAL_2		0x33
+#define PM860X_AUDIO_CAL_3		0x34
+#define PM860X_AUDIO_CAL_4		0x35
+#define PM860X_AUDIO_CAL_5		0x36
+#define PM860X_ANA_INPUT_SEL_1		0x37
+#define PM860X_ANA_INPUT_SEL_2		0x38
+
+#define PM860X_PCM_IFACE_4		0x39
+#define PM860X_I2S_IFACE_5		0x3a
+
+#define PM860X_SHORTS			0x3b
+#define PM860X_PLL_ADJ_1		0x3c
+#define PM860X_PLL_ADJ_2		0x3d
+
+/* bits definition */
+#define PM860X_CLK_DIR_IN		0
+#define PM860X_CLK_DIR_OUT		1
+
+#define PM860X_DET_HEADSET		(1 << 0)
+#define PM860X_DET_MIC			(1 << 1)
+#define PM860X_DET_HOOK			(1 << 2)
+#define PM860X_SHORT_HEADSET		(1 << 3)
+#define PM860X_SHORT_LINEOUT		(1 << 4)
+#define PM860X_DET_MASK			0x1F
+
+extern int pm860x_hs_jack_detect(struct snd_soc_codec *, struct snd_soc_jack *,
+				 int, int, int, int);
+extern int pm860x_mic_jack_detect(struct snd_soc_codec *, struct snd_soc_jack *,
+				  int);
+
+#endif	/* __88PM860X_H */
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
index 83f5c67..4ccc2b7 100644
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
@@ -10,6 +10,7 @@
 
 config SND_SOC_ALL_CODECS
 	tristate "Build all ASoC CODEC drivers"
+	select SND_SOC_88PM860X if MFD_88PM860X
 	select SND_SOC_L3
 	select SND_SOC_AC97_CODEC if SND_SOC_AC97_BUS
 	select SND_SOC_AD1836 if SPI_MASTER
@@ -40,6 +41,7 @@
 	select SND_SOC_TWL6040 if TWL4030_CORE
 	select SND_SOC_UDA134X
 	select SND_SOC_UDA1380 if I2C
+	select SND_SOC_WL1273 if WL1273_CORE
 	select SND_SOC_WM2000 if I2C
 	select SND_SOC_WM8350 if MFD_WM8350
 	select SND_SOC_WM8400 if MFD_WM8400
@@ -61,9 +63,11 @@
 	select SND_SOC_WM8955 if I2C
 	select SND_SOC_WM8960 if I2C
 	select SND_SOC_WM8961 if I2C
+	select SND_SOC_WM8962 if I2C
 	select SND_SOC_WM8971 if I2C
 	select SND_SOC_WM8974 if I2C
 	select SND_SOC_WM8978 if I2C
+	select SND_SOC_WM8985 if SND_SOC_I2C_AND_SPI
 	select SND_SOC_WM8988 if SND_SOC_I2C_AND_SPI
 	select SND_SOC_WM8990 if I2C
 	select SND_SOC_WM8993 if I2C
@@ -84,6 +88,9 @@
 
           If unsure select "N".
 
+config SND_SOC_88PM860X
+	tristate
+
 config SND_SOC_WM_HUBS
 	tristate
 	default y if SND_SOC_WM8993=y || SND_SOC_WM8994=y
@@ -188,6 +195,9 @@
 config SND_SOC_UDA1380
         tristate
 
+config SND_SOC_WL1273
+	tristate
+
 config SND_SOC_WM8350
 	tristate
 
@@ -248,6 +258,9 @@
 config SND_SOC_WM8961
 	tristate
 
+config SND_SOC_WM8962
+	tristate
+
 config SND_SOC_WM8971
 	tristate
 
@@ -257,6 +270,9 @@
 config SND_SOC_WM8978
 	tristate
 
+config SND_SOC_WM8985
+	tristate
+
 config SND_SOC_WM8988
 	tristate
 
diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
index 5352409..23e7e2c 100644
--- a/sound/soc/codecs/Makefile
+++ b/sound/soc/codecs/Makefile
@@ -1,3 +1,4 @@
+snd-soc-88pm860x-objs := 88pm860x-codec.o
 snd-soc-ac97-objs := ac97.o
 snd-soc-ad1836-objs := ad1836.o
 snd-soc-ad193x-objs := ad193x.o
@@ -26,6 +27,7 @@
 snd-soc-twl6040-objs := twl6040.o
 snd-soc-uda134x-objs := uda134x.o
 snd-soc-uda1380-objs := uda1380.o
+snd-soc-wl1273-objs := wl1273.o
 snd-soc-wm8350-objs := wm8350.o
 snd-soc-wm8400-objs := wm8400.o
 snd-soc-wm8510-objs := wm8510.o
@@ -46,9 +48,11 @@
 snd-soc-wm8955-objs := wm8955.o
 snd-soc-wm8960-objs := wm8960.o
 snd-soc-wm8961-objs := wm8961.o
+snd-soc-wm8962-objs := wm8962.o wm8962-tables.o
 snd-soc-wm8971-objs := wm8971.o
 snd-soc-wm8974-objs := wm8974.o
 snd-soc-wm8978-objs := wm8978.o
+snd-soc-wm8985-objs := wm8985.o
 snd-soc-wm8988-objs := wm8988.o
 snd-soc-wm8990-objs := wm8990.o
 snd-soc-wm8993-objs := wm8993.o
@@ -66,6 +70,7 @@
 snd-soc-wm2000-objs := wm2000.o
 snd-soc-wm9090-objs := wm9090.o
 
+obj-$(CONFIG_SND_SOC_88PM860X)	+= snd-soc-88pm860x.o
 obj-$(CONFIG_SND_SOC_AC97_CODEC)	+= snd-soc-ac97.o
 obj-$(CONFIG_SND_SOC_AD1836)	+= snd-soc-ad1836.o
 obj-$(CONFIG_SND_SOC_AD193X)	+= snd-soc-ad193x.o
@@ -95,6 +100,7 @@
 obj-$(CONFIG_SND_SOC_TWL6040)	+= snd-soc-twl6040.o
 obj-$(CONFIG_SND_SOC_UDA134X)	+= snd-soc-uda134x.o
 obj-$(CONFIG_SND_SOC_UDA1380)	+= snd-soc-uda1380.o
+obj-$(CONFIG_SND_SOC_WL1273)	+= snd-soc-wl1273.o
 obj-$(CONFIG_SND_SOC_WM8350)	+= snd-soc-wm8350.o
 obj-$(CONFIG_SND_SOC_WM8400)	+= snd-soc-wm8400.o
 obj-$(CONFIG_SND_SOC_WM8510)	+= snd-soc-wm8510.o
@@ -115,9 +121,11 @@
 obj-$(CONFIG_SND_SOC_WM8955)	+= snd-soc-wm8955.o
 obj-$(CONFIG_SND_SOC_WM8960)	+= snd-soc-wm8960.o
 obj-$(CONFIG_SND_SOC_WM8961)	+= snd-soc-wm8961.o
+obj-$(CONFIG_SND_SOC_WM8962)	+= snd-soc-wm8962.o
 obj-$(CONFIG_SND_SOC_WM8971)	+= snd-soc-wm8971.o
 obj-$(CONFIG_SND_SOC_WM8974)	+= snd-soc-wm8974.o
 obj-$(CONFIG_SND_SOC_WM8978)	+= snd-soc-wm8978.o
+obj-$(CONFIG_SND_SOC_WM8985)	+= snd-soc-wm8985.o
 obj-$(CONFIG_SND_SOC_WM8988)	+= snd-soc-wm8988.o
 obj-$(CONFIG_SND_SOC_WM8990)	+= snd-soc-wm8990.o
 obj-$(CONFIG_SND_SOC_WM8993)	+= snd-soc-wm8993.o
diff --git a/sound/soc/codecs/ac97.c b/sound/soc/codecs/ac97.c
index 1f5e57a..12c87d3 100644
--- a/sound/soc/codecs/ac97.c
+++ b/sound/soc/codecs/ac97.c
@@ -21,7 +21,6 @@
 #include <sound/ac97_codec.h>
 #include <sound/initval.h>
 #include <sound/soc.h>
-#include "ac97.h"
 
 #define AC97_VERSION "0.6"
 
@@ -30,8 +29,7 @@
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 
 	int reg = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
 		  AC97_PCM_FRONT_DAC_RATE : AC97_PCM_LR_ADC_RATE;
@@ -46,8 +44,8 @@
 	.prepare	= ac97_prepare,
 };
 
-struct snd_soc_dai ac97_dai = {
-	.name = "AC97 HiFi",
+static struct snd_soc_dai_driver ac97_dai = {
+	.name = "ac97-hifi",
 	.ac97_control = 1,
 	.playback = {
 		.stream_name = "AC97 Playback",
@@ -63,7 +61,6 @@
 		.formats = SND_SOC_STD_AC97_FMTS,},
 	.ops = &ac97_dai_ops,
 };
-EXPORT_SYMBOL_GPL(ac97_dai);
 
 static unsigned int ac97_read(struct snd_soc_codec *codec,
 	unsigned int reg)
@@ -78,95 +75,49 @@
 	return 0;
 }
 
-static int ac97_soc_probe(struct platform_device *pdev)
+static int ac97_soc_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_card *card = socdev->card;
-	struct snd_soc_codec *codec;
 	struct snd_ac97_bus *ac97_bus;
 	struct snd_ac97_template ac97_template;
-	int i;
-	int ret = 0;
+	int ret;
 
 	printk(KERN_INFO "AC97 SoC Audio Codec %s\n", AC97_VERSION);
 
-	socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (!socdev->card->codec)
-		return -ENOMEM;
-	codec = socdev->card->codec;
-	mutex_init(&codec->mutex);
-
-	codec->name = "AC97";
-	codec->owner = THIS_MODULE;
-	codec->dai = &ac97_dai;
-	codec->num_dai = 1;
-	codec->write = ac97_write;
-	codec->read = ac97_read;
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0)
-		goto err;
+	ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0);
+	if (ret < 0) {
+		printk(KERN_ERR "ASoC: failed to init gen ac97 glue\n");
+		return ret;
+	}
 
 	/* add codec as bus device for standard ac97 */
-	ret = snd_ac97_bus(codec->card, 0, &soc_ac97_ops, NULL, &ac97_bus);
+	ret = snd_ac97_bus(codec->card->snd_card, 0, &soc_ac97_ops, NULL, &ac97_bus);
 	if (ret < 0)
-		goto bus_err;
+		return ret;
 
 	memset(&ac97_template, 0, sizeof(struct snd_ac97_template));
 	ret = snd_ac97_mixer(ac97_bus, &ac97_template, &codec->ac97);
 	if (ret < 0)
-		goto bus_err;
-
-	for (i = 0; i < card->num_links; i++) {
-		if (card->dai_link[i].codec_dai->ac97_control) {
-			snd_ac97_dev_add_pdata(codec->ac97,
-				card->dai_link[i].cpu_dai->ac97_pdata);
-		}
-	}
+		return ret;
 
 	return 0;
-
-bus_err:
-	snd_soc_free_pcms(socdev);
-
-err:
-	kfree(socdev->card->codec);
-	socdev->card->codec = NULL;
-	return ret;
 }
 
-static int ac97_soc_remove(struct platform_device *pdev)
+static int ac97_soc_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (!codec)
-		return 0;
-
-	snd_soc_free_pcms(socdev);
-	kfree(socdev->card->codec);
-
 	return 0;
 }
 
 #ifdef CONFIG_PM
-static int ac97_soc_suspend(struct platform_device *pdev, pm_message_t msg)
+static int ac97_soc_suspend(struct snd_soc_codec *codec, pm_message_t msg)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_ac97_suspend(socdev->card->codec->ac97);
+	snd_ac97_suspend(codec->ac97);
 
 	return 0;
 }
 
-static int ac97_soc_resume(struct platform_device *pdev)
+static int ac97_soc_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_ac97_resume(socdev->card->codec->ac97);
+	snd_ac97_resume(codec->ac97);
 
 	return 0;
 }
@@ -175,13 +126,48 @@
 #define ac97_soc_resume NULL
 #endif
 
-struct snd_soc_codec_device soc_codec_dev_ac97 = {
+static struct snd_soc_codec_driver soc_codec_dev_ac97 = {
+	.write = ac97_write,
+	.read = ac97_read,
 	.probe = 	ac97_soc_probe,
 	.remove = 	ac97_soc_remove,
 	.suspend =	ac97_soc_suspend,
 	.resume =	ac97_soc_resume,
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_ac97);
+
+static __devinit int ac97_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_ac97, &ac97_dai, 1);
+}
+
+static int __devexit ac97_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_codec(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver ac97_codec_driver = {
+	.driver = {
+			.name = "ac97-codec",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = ac97_probe,
+	.remove = __devexit_p(ac97_remove),
+};
+
+static int __init ac97_init(void)
+{
+	return platform_driver_register(&ac97_codec_driver);
+}
+module_init(ac97_init);
+
+static void __exit ac97_exit(void)
+{
+	platform_driver_unregister(&ac97_codec_driver);
+}
+module_exit(ac97_exit);
 
 MODULE_DESCRIPTION("Soc Generic AC97 driver");
 MODULE_AUTHOR("Liam Girdwood");
diff --git a/sound/soc/codecs/ac97.h b/sound/soc/codecs/ac97.h
deleted file mode 100644
index 281aa42..0000000
--- a/sound/soc/codecs/ac97.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * linux/sound/codecs/ac97.h -- ALSA SoC Layer
- *
- * Author:		Liam Girdwood
- * Created:		Dec 1st 2005
- * Copyright:	Wolfson Microelectronics. PLC.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef __LINUX_SND_SOC_AC97_H
-#define __LINUX_SND_SOC_AC97_H
-
-extern struct snd_soc_codec_device soc_codec_dev_ac97;
-extern struct snd_soc_dai ac97_dai;
-
-#endif
diff --git a/sound/soc/codecs/ad1836.c b/sound/soc/codecs/ad1836.c
index a01006c..d272534 100644
--- a/sound/soc/codecs/ad1836.c
+++ b/sound/soc/codecs/ad1836.c
@@ -33,15 +33,10 @@
 
 /* codec private data */
 struct ad1836_priv {
-	struct snd_soc_codec codec;
-	u16 reg_cache[AD1836_NUM_REGS];
+	enum snd_soc_control_type control_type;
+	void *control_data;
 };
 
-static struct snd_soc_codec *ad1836_codec;
-struct snd_soc_codec_device soc_codec_dev_ad1836;
-static int ad1836_register(struct ad1836_priv *ad1836);
-static void ad1836_unregister(struct ad1836_priv *ad1836);
-
 /*
  * AD1836 volume/mute/de-emphasis etc. controls
  */
@@ -146,8 +141,7 @@
 	int word_len = 0;
 
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 
 	/* bit size */
 	switch (params_format(params)) {
@@ -173,12 +167,9 @@
 }
 
 #ifdef CONFIG_PM
-static int ad1836_soc_suspend(struct platform_device *pdev,
+static int ad1836_soc_suspend(struct snd_soc_codec *codec,
 		pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	/* reset clock control mode */
 	u16 adc_ctrl2 = snd_soc_read(codec, AD1836_ADC_CTRL2);
 	adc_ctrl2 &= ~AD1836_ADC_SERFMT_MASK;
@@ -186,11 +177,8 @@
 	return snd_soc_write(codec, AD1836_ADC_CTRL2, adc_ctrl2);
 }
 
-static int ad1836_soc_resume(struct platform_device *pdev)
+static int ad1836_soc_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	/* restore clock control mode */
 	u16 adc_ctrl2 = snd_soc_read(codec, AD1836_ADC_CTRL2);
 	adc_ctrl2 |= AD1836_ADC_AUX;
@@ -202,49 +190,14 @@
 #define ad1836_soc_resume  NULL
 #endif
 
-static int __devinit ad1836_spi_probe(struct spi_device *spi)
-{
-	struct snd_soc_codec *codec;
-	struct ad1836_priv *ad1836;
-
-	ad1836 = kzalloc(sizeof(struct ad1836_priv), GFP_KERNEL);
-	if (ad1836 == NULL)
-		return -ENOMEM;
-
-	codec = &ad1836->codec;
-	codec->control_data = spi;
-	codec->dev = &spi->dev;
-
-	dev_set_drvdata(&spi->dev, ad1836);
-
-	return ad1836_register(ad1836);
-}
-
-static int __devexit ad1836_spi_remove(struct spi_device *spi)
-{
-	struct ad1836_priv *ad1836 = dev_get_drvdata(&spi->dev);
-
-	ad1836_unregister(ad1836);
-	return 0;
-}
-
-static struct spi_driver ad1836_spi_driver = {
-	.driver = {
-		.name	= "ad1836",
-		.owner	= THIS_MODULE,
-	},
-	.probe		= ad1836_spi_probe,
-	.remove		= __devexit_p(ad1836_spi_remove),
-};
-
 static struct snd_soc_dai_ops ad1836_dai_ops = {
 	.hw_params = ad1836_hw_params,
 	.set_fmt = ad1836_set_dai_fmt,
 };
 
 /* codec DAI instance */
-struct snd_soc_dai ad1836_dai = {
-	.name = "AD1836",
+static struct snd_soc_dai_driver ad1836_dai = {
+	.name = "ad1836-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 2,
@@ -263,35 +216,13 @@
 	},
 	.ops = &ad1836_dai_ops,
 };
-EXPORT_SYMBOL_GPL(ad1836_dai);
 
-static int ad1836_register(struct ad1836_priv *ad1836)
+static int ad1836_probe(struct snd_soc_codec *codec)
 {
-	int ret;
-	struct snd_soc_codec *codec = &ad1836->codec;
+	struct ad1836_priv *ad1836 = snd_soc_codec_get_drvdata(codec);
+	int ret = 0;
 
-	if (ad1836_codec) {
-		dev_err(codec->dev, "Another ad1836 is registered\n");
-		kfree(ad1836);
-		return -EINVAL;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-	snd_soc_codec_set_drvdata(codec, ad1836);
-	codec->reg_cache = ad1836->reg_cache;
-	codec->reg_cache_size = AD1836_NUM_REGS;
-	codec->name = "AD1836";
-	codec->owner = THIS_MODULE;
-	codec->dai = &ad1836_dai;
-	codec->num_dai = 1;
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	ad1836_dai.dev = codec->dev;
-	ad1836_codec = codec;
-
+	codec->control_data = ad1836->control_data;
 	ret = snd_soc_codec_set_cache_io(codec, 4, 12, SND_SOC_SPI);
 	if (ret < 0) {
 		dev_err(codec->dev, "failed to set cache I/O: %d\n",
@@ -319,81 +250,69 @@
 	snd_soc_write(codec, AD1836_DAC_L3_VOL, 0x3FF);
 	snd_soc_write(codec, AD1836_DAC_R3_VOL, 0x3FF);
 
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		kfree(ad1836);
-		return ret;
-	}
-
-	ret = snd_soc_register_dai(&ad1836_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		snd_soc_unregister_codec(codec);
-		kfree(ad1836);
-		return ret;
-	}
-
-	return 0;
-}
-
-static void ad1836_unregister(struct ad1836_priv *ad1836)
-{
-	snd_soc_unregister_dai(&ad1836_dai);
-	snd_soc_unregister_codec(&ad1836->codec);
-	kfree(ad1836);
-	ad1836_codec = NULL;
-}
-
-static int ad1836_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
-
-	if (ad1836_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = ad1836_codec;
-	codec = ad1836_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
 	snd_soc_add_controls(codec, ad1836_snd_controls,
 			     ARRAY_SIZE(ad1836_snd_controls));
 	snd_soc_dapm_new_controls(codec, ad1836_dapm_widgets,
 				  ARRAY_SIZE(ad1836_dapm_widgets));
 	snd_soc_dapm_add_routes(codec, audio_paths, ARRAY_SIZE(audio_paths));
 
-pcm_err:
 	return ret;
 }
 
 /* power down chip */
-static int ad1836_remove(struct platform_device *pdev)
+static int ad1836_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
+	/* reset clock control mode */
+	u16 adc_ctrl2 = snd_soc_read(codec, AD1836_ADC_CTRL2);
+	adc_ctrl2 &= ~AD1836_ADC_SERFMT_MASK;
 
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
+	return snd_soc_write(codec, AD1836_ADC_CTRL2, adc_ctrl2);
 }
 
-struct snd_soc_codec_device soc_codec_dev_ad1836 = {
+static struct snd_soc_codec_driver soc_codec_dev_ad1836 = {
 	.probe = 	ad1836_probe,
 	.remove = 	ad1836_remove,
 	.suspend =      ad1836_soc_suspend,
 	.resume =       ad1836_soc_resume,
+	.reg_cache_size = AD1836_NUM_REGS,
+	.reg_word_size = sizeof(u16),
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_ad1836);
+
+static int __devinit ad1836_spi_probe(struct spi_device *spi)
+{
+	struct ad1836_priv *ad1836;
+	int ret;
+
+	ad1836 = kzalloc(sizeof(struct ad1836_priv), GFP_KERNEL);
+	if (ad1836 == NULL)
+		return -ENOMEM;
+
+	spi_set_drvdata(spi, ad1836);
+	ad1836->control_data = spi;
+	ad1836->control_type = SND_SOC_SPI;
+
+	ret = snd_soc_register_codec(&spi->dev,
+			&soc_codec_dev_ad1836, &ad1836_dai, 1);
+	if (ret < 0)
+		kfree(ad1836);
+	return ret;
+}
+
+static int __devexit ad1836_spi_remove(struct spi_device *spi)
+{
+	snd_soc_unregister_codec(&spi->dev);
+	kfree(spi_get_drvdata(spi));
+	return 0;
+}
+
+static struct spi_driver ad1836_spi_driver = {
+	.driver = {
+		.name	= "ad1836-codec",
+		.owner	= THIS_MODULE,
+	},
+	.probe		= ad1836_spi_probe,
+	.remove		= __devexit_p(ad1836_spi_remove),
+};
 
 static int __init ad1836_init(void)
 {
diff --git a/sound/soc/codecs/ad1836.h b/sound/soc/codecs/ad1836.h
index e9d90d3..8455967 100644
--- a/sound/soc/codecs/ad1836.h
+++ b/sound/soc/codecs/ad1836.h
@@ -60,6 +60,4 @@
 
 #define AD1836_NUM_REGS                16
 
-extern struct snd_soc_dai ad1836_dai;
-extern struct snd_soc_codec_device soc_codec_dev_ad1836;
 #endif
diff --git a/sound/soc/codecs/ad193x.c b/sound/soc/codecs/ad193x.c
index 1def75e..fa2834c 100644
--- a/sound/soc/codecs/ad193x.c
+++ b/sound/soc/codecs/ad193x.c
@@ -24,9 +24,10 @@
 
 /* codec private data */
 struct ad193x_priv {
-	unsigned int sysclk;
-	struct snd_soc_codec codec;
 	u8 reg_cache[AD193X_NUM_REGS];
+	enum snd_soc_control_type bus_type;
+	void *control_data;
+	int sysclk;
 };
 
 /* ad193x register cache & default register settings */
@@ -34,9 +35,6 @@
 	0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0, 0,
 };
 
-static struct snd_soc_codec *ad193x_codec;
-struct snd_soc_codec_device soc_codec_dev_ad193x;
-
 /*
  * AD193X volume/mute/de-emphasis etc. controls
  */
@@ -275,8 +273,7 @@
 	int word_len = 0, reg = 0, master_rate = 0;
 
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct ad193x_priv *ad193x = snd_soc_codec_get_drvdata(codec);
 
 	/* bit size */
@@ -323,46 +320,46 @@
 	return 0;
 }
 
-static int ad193x_bus_probe(struct device *dev, void *ctrl_data, int bus_type)
+static struct snd_soc_dai_ops ad193x_dai_ops = {
+	.hw_params = ad193x_hw_params,
+	.digital_mute = ad193x_mute,
+	.set_tdm_slot = ad193x_set_tdm_slot,
+	.set_sysclk	= ad193x_set_dai_sysclk,
+	.set_fmt = ad193x_set_dai_fmt,
+};
+
+/* codec DAI instance */
+static struct snd_soc_dai_driver ad193x_dai = {
+	.name = "ad193x-hifi",
+	.playback = {
+		.stream_name = "Playback",
+		.channels_min = 2,
+		.channels_max = 8,
+		.rates = SNDRV_PCM_RATE_48000,
+		.formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S16_LE |
+			SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S24_LE,
+	},
+	.capture = {
+		.stream_name = "Capture",
+		.channels_min = 2,
+		.channels_max = 4,
+		.rates = SNDRV_PCM_RATE_48000,
+		.formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S16_LE |
+			SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S24_LE,
+	},
+	.ops = &ad193x_dai_ops,
+};
+
+static int ad193x_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec;
-	struct ad193x_priv *ad193x;
+	struct ad193x_priv *ad193x = snd_soc_codec_get_drvdata(codec);
 	int ret;
 
-	if (ad193x_codec) {
-		dev_err(dev, "Another ad193x is registered\n");
-		return -EINVAL;
-	}
-
-	ad193x = kzalloc(sizeof(struct ad193x_priv), GFP_KERNEL);
-	if (ad193x == NULL)
-		return -ENOMEM;
-
-	dev_set_drvdata(dev, ad193x);
-
-	codec = &ad193x->codec;
-	mutex_init(&codec->mutex);
-	codec->control_data = ctrl_data;
-	codec->dev = dev;
-	snd_soc_codec_set_drvdata(codec, ad193x);
-	codec->reg_cache = ad193x->reg_cache;
-	codec->reg_cache_size = AD193X_NUM_REGS;
-	codec->name = "AD193X";
-	codec->owner = THIS_MODULE;
-	codec->dai = &ad193x_dai;
-	codec->num_dai = 1;
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	ad193x_dai.dev = codec->dev;
-	ad193x_codec = codec;
-
-	memcpy(codec->reg_cache, ad193x_reg, AD193X_NUM_REGS);
-
-	if (bus_type == SND_SOC_I2C)
-		ret = snd_soc_codec_set_cache_io(codec, 8, 8, bus_type);
+	codec->control_data = ad193x->control_data;
+	if (ad193x->bus_type == SND_SOC_I2C)
+		ret = snd_soc_codec_set_cache_io(codec, 8, 8, ad193x->bus_type);
 	else
-		ret = snd_soc_codec_set_cache_io(codec, 16, 8, bus_type);
+		ret = snd_soc_codec_set_cache_io(codec, 16, 8, ad193x->bus_type);
 	if (ret < 0) {
 		dev_err(codec->dev, "failed to set cache I/O: %d\n",
 				ret);
@@ -385,89 +382,6 @@
 	/* pll input: mclki/xi */
 	snd_soc_write(codec, AD193X_PLL_CLK_CTRL0, 0x99); /* mclk=24.576Mhz: 0x9D; mclk=12.288Mhz: 0x99 */
 	snd_soc_write(codec, AD193X_PLL_CLK_CTRL1, 0x04);
-	ad193x->sysclk = 12288000;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		kfree(ad193x);
-		return ret;
-	}
-
-	ret = snd_soc_register_dai(&ad193x_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		snd_soc_unregister_codec(codec);
-		kfree(ad193x);
-		return ret;
-	}
-
-	return 0;
-}
-
-static int ad193x_bus_remove(struct device *dev)
-{
-	struct ad193x_priv *ad193x = dev_get_drvdata(dev);
-
-	snd_soc_unregister_dai(&ad193x_dai);
-	snd_soc_unregister_codec(&ad193x->codec);
-	kfree(ad193x);
-	ad193x_codec = NULL;
-
-	return 0;
-}
-
-static struct snd_soc_dai_ops ad193x_dai_ops = {
-	.hw_params = ad193x_hw_params,
-	.digital_mute = ad193x_mute,
-	.set_tdm_slot = ad193x_set_tdm_slot,
-	.set_sysclk	= ad193x_set_dai_sysclk,
-	.set_fmt = ad193x_set_dai_fmt,
-};
-
-/* codec DAI instance */
-struct snd_soc_dai ad193x_dai = {
-	.name = "AD193X",
-	.playback = {
-		.stream_name = "Playback",
-		.channels_min = 2,
-		.channels_max = 8,
-		.rates = SNDRV_PCM_RATE_48000,
-		.formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S16_LE |
-			SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S24_LE,
-	},
-	.capture = {
-		.stream_name = "Capture",
-		.channels_min = 2,
-		.channels_max = 4,
-		.rates = SNDRV_PCM_RATE_48000,
-		.formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S16_LE |
-			SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S24_LE,
-	},
-	.ops = &ad193x_dai_ops,
-};
-EXPORT_SYMBOL_GPL(ad193x_dai);
-
-static int ad193x_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
-
-	if (ad193x_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = ad193x_codec;
-	codec = ad193x_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
 
 	snd_soc_add_controls(codec, ad193x_snd_controls,
 			     ARRAY_SIZE(ad193x_snd_controls));
@@ -475,41 +389,47 @@
 				  ARRAY_SIZE(ad193x_dapm_widgets));
 	snd_soc_dapm_add_routes(codec, audio_paths, ARRAY_SIZE(audio_paths));
 
-pcm_err:
 	return ret;
 }
 
-/* power down chip */
-static int ad193x_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_ad193x = {
+static struct snd_soc_codec_driver soc_codec_dev_ad193x = {
 	.probe = 	ad193x_probe,
-	.remove = 	ad193x_remove,
+	.reg_cache_default = ad193x_reg,
+	.reg_cache_size = AD193X_NUM_REGS,
+	.reg_word_size = sizeof(u16),
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_ad193x);
 
 #if defined(CONFIG_SPI_MASTER)
 static int __devinit ad193x_spi_probe(struct spi_device *spi)
 {
-	return ad193x_bus_probe(&spi->dev, spi, SND_SOC_SPI);
+	struct ad193x_priv *ad193x;
+	int ret;
+
+	ad193x = kzalloc(sizeof(struct ad193x_priv), GFP_KERNEL);
+	if (ad193x == NULL)
+		return -ENOMEM;
+
+	spi_set_drvdata(spi, ad193x);
+	ad193x->control_data = spi;
+	ad193x->bus_type = SND_SOC_SPI;
+
+	ret = snd_soc_register_codec(&spi->dev,
+			&soc_codec_dev_ad193x, &ad193x_dai, 1);
+	if (ret < 0)
+		kfree(ad193x);
+	return ret;
 }
 
 static int __devexit ad193x_spi_remove(struct spi_device *spi)
 {
-	return ad193x_bus_remove(&spi->dev);
+	snd_soc_unregister_codec(&spi->dev);
+	kfree(spi_get_drvdata(spi));
+	return 0;
 }
 
 static struct spi_driver ad193x_spi_driver = {
 	.driver = {
-		.name	= "ad193x",
+		.name	= "ad193x-codec",
 		.owner	= THIS_MODULE,
 	},
 	.probe		= ad193x_spi_probe,
@@ -528,17 +448,34 @@
 static int __devinit ad193x_i2c_probe(struct i2c_client *client,
 		const struct i2c_device_id *id)
 {
-	return ad193x_bus_probe(&client->dev, client, SND_SOC_I2C);
+	struct ad193x_priv *ad193x;
+	int ret;
+
+	ad193x = kzalloc(sizeof(struct ad193x_priv), GFP_KERNEL);
+	if (ad193x == NULL)
+		return -ENOMEM;
+
+	i2c_set_clientdata(client, ad193x);
+	ad193x->control_data = client;
+	ad193x->bus_type = SND_SOC_I2C;
+
+	ret =  snd_soc_register_codec(&client->dev,
+			&soc_codec_dev_ad193x, &ad193x_dai, 1);
+	if (ret < 0)
+		kfree(ad193x);
+	return ret;
 }
 
 static int __devexit ad193x_i2c_remove(struct i2c_client *client)
 {
-	return ad193x_bus_remove(&client->dev);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
+	return 0;
 }
 
 static struct i2c_driver ad193x_i2c_driver = {
 	.driver = {
-		.name = "ad193x",
+		.name = "ad193x-codec",
 	},
 	.probe    = ad193x_i2c_probe,
 	.remove   = __devexit_p(ad193x_i2c_remove),
diff --git a/sound/soc/codecs/ad193x.h b/sound/soc/codecs/ad193x.h
index 654ba64..9747b54 100644
--- a/sound/soc/codecs/ad193x.h
+++ b/sound/soc/codecs/ad193x.h
@@ -80,7 +80,4 @@
 
 #define AD193X_NUM_REGS          17
 
-extern struct snd_soc_dai ad193x_dai;
-extern struct snd_soc_codec_device soc_codec_dev_ad193x;
-
 #endif
diff --git a/sound/soc/codecs/ad1980.c b/sound/soc/codecs/ad1980.c
index 70cfaec..d36bd1c 100644
--- a/sound/soc/codecs/ad1980.c
+++ b/sound/soc/codecs/ad1980.c
@@ -33,11 +33,6 @@
 
 #include "ad1980.h"
 
-static unsigned int ac97_read(struct snd_soc_codec *codec,
-	unsigned int reg);
-static int ac97_write(struct snd_soc_codec *codec,
-	unsigned int reg, unsigned int val);
-
 /*
  * AD1980 register cache
  */
@@ -138,8 +133,8 @@
 	return 0;
 }
 
-struct snd_soc_dai ad1980_dai = {
-	.name = "AC97",
+struct snd_soc_dai_driver ad1980_dai = {
+	.name = "ad1980-hifi",
 	.ac97_control = 1,
 	.playback = {
 		.stream_name = "Playback",
@@ -185,53 +180,20 @@
 	return -EIO;
 }
 
-static int ad1980_soc_probe(struct platform_device *pdev)
+static int ad1980_soc_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
+	int ret;
 	u16 vendor_id2;
 	u16 ext_status;
 
 	printk(KERN_INFO "AD1980 SoC Audio Codec\n");
 
-	socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (socdev->card->codec == NULL)
-		return -ENOMEM;
-	codec = socdev->card->codec;
-	mutex_init(&codec->mutex);
-
-	codec->reg_cache =
-		kzalloc(sizeof(u16) * ARRAY_SIZE(ad1980_reg), GFP_KERNEL);
-	if (codec->reg_cache == NULL) {
-		ret = -ENOMEM;
-		goto cache_err;
-	}
-	memcpy(codec->reg_cache, ad1980_reg, sizeof(u16) * \
-			ARRAY_SIZE(ad1980_reg));
-	codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(ad1980_reg);
-	codec->reg_cache_step = 2;
-	codec->name = "AD1980";
-	codec->owner = THIS_MODULE;
-	codec->dai = &ad1980_dai;
-	codec->num_dai = 1;
-	codec->write = ac97_write;
-	codec->read = ac97_read;
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
 	ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0);
 	if (ret < 0) {
 		printk(KERN_ERR "ad1980: failed to register AC97 codec\n");
-		goto codec_err;
+		return ret;
 	}
 
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0)
-		goto pcm_err;
-
-
 	ret = ad1980_reset(codec, 0);
 	if (ret < 0) {
 		printk(KERN_ERR "Failed to reset AD1980: AC97 link error\n");
@@ -270,41 +232,60 @@
 	return 0;
 
 reset_err:
-	snd_soc_free_pcms(socdev);
-
-pcm_err:
 	snd_soc_free_ac97_codec(codec);
-
-codec_err:
-	kfree(codec->reg_cache);
-
-cache_err:
-	kfree(socdev->card->codec);
-	socdev->card->codec = NULL;
 	return ret;
 }
 
-static int ad1980_soc_remove(struct platform_device *pdev)
+static int ad1980_soc_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (codec == NULL)
-		return 0;
-
-	snd_soc_dapm_free(socdev);
-	snd_soc_free_pcms(socdev);
 	snd_soc_free_ac97_codec(codec);
-	kfree(codec->reg_cache);
-	kfree(codec);
 	return 0;
 }
 
-struct snd_soc_codec_device soc_codec_dev_ad1980 = {
+static struct snd_soc_codec_driver soc_codec_dev_ad1980 = {
 	.probe = 	ad1980_soc_probe,
 	.remove = 	ad1980_soc_remove,
+	.reg_cache_size = ARRAY_SIZE(ad1980_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = ad1980_reg,
+	.reg_cache_step = 2,
+	.write = ac97_write,
+	.read = ac97_read,
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_ad1980);
+
+static __devinit int ad1980_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_ad1980, &ad1980_dai, 1);
+}
+
+static int __devexit ad1980_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_codec(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver ad1980_codec_driver = {
+	.driver = {
+			.name = "ad1980-codec",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = ad1980_probe,
+	.remove = __devexit_p(ad1980_remove),
+};
+
+static int __init ad1980_init(void)
+{
+	return platform_driver_register(&ad1980_codec_driver);
+}
+module_init(ad1980_init);
+
+static void __exit ad1980_exit(void)
+{
+	platform_driver_unregister(&ad1980_codec_driver);
+}
+module_exit(ad1980_exit);
 
 MODULE_DESCRIPTION("ASoC ad1980 driver (Obsolete)");
 MODULE_AUTHOR("Roy Huang, Cliff Cai");
diff --git a/sound/soc/codecs/ad1980.h b/sound/soc/codecs/ad1980.h
index 538f37c..eb0af44 100644
--- a/sound/soc/codecs/ad1980.h
+++ b/sound/soc/codecs/ad1980.h
@@ -23,7 +23,4 @@
 #define PR5		0x2000
 #define PR6		0x4000
 
-extern struct snd_soc_dai ad1980_dai;
-extern struct snd_soc_codec_device soc_codec_dev_ad1980;
-
 #endif
diff --git a/sound/soc/codecs/ad73311.c b/sound/soc/codecs/ad73311.c
index 475807b..c53955f 100644
--- a/sound/soc/codecs/ad73311.c
+++ b/sound/soc/codecs/ad73311.c
@@ -23,8 +23,8 @@
 
 #include "ad73311.h"
 
-struct snd_soc_dai ad73311_dai = {
-	.name = "AD73311",
+static struct snd_soc_dai_driver ad73311_dai = {
+	.name = "ad73311-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -38,68 +38,40 @@
 		.rates = SNDRV_PCM_RATE_8000,
 		.formats = SNDRV_PCM_FMTBIT_S16_LE, },
 };
-EXPORT_SYMBOL_GPL(ad73311_dai);
 
-static int ad73311_soc_probe(struct platform_device *pdev)
+static struct snd_soc_codec_driver soc_codec_dev_ad73311;
+
+static int ad73311_probe(struct platform_device *pdev)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
-
-	codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (codec == NULL)
-		return -ENOMEM;
-	mutex_init(&codec->mutex);
-	codec->name = "AD73311";
-	codec->owner = THIS_MODULE;
-	codec->dai = &ad73311_dai;
-	codec->num_dai = 1;
-	socdev->card->codec = codec;
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "ad73311: failed to create pcms\n");
-		goto pcm_err;
-	}
-
-	return ret;
-
-pcm_err:
-	kfree(socdev->card->codec);
-	socdev->card->codec = NULL;
-	return ret;
+	return snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_ad73311, &ad73311_dai, 1);
 }
 
-static int ad73311_soc_remove(struct platform_device *pdev)
+static int ad73311_remove(struct platform_device *pdev)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (codec == NULL)
-		return 0;
-	snd_soc_free_pcms(socdev);
-	kfree(codec);
+	snd_soc_unregister_codec(&pdev->dev);
 	return 0;
 }
 
-struct snd_soc_codec_device soc_codec_dev_ad73311 = {
-	.probe = 	ad73311_soc_probe,
-	.remove = 	ad73311_soc_remove,
+static struct platform_driver ad73311_codec_driver = {
+	.driver = {
+			.name = "ad73311-codec",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = ad73311_probe,
+	.remove = __devexit_p(ad73311_remove),
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_ad73311);
 
 static int __init ad73311_init(void)
 {
-	return snd_soc_register_dai(&ad73311_dai);
+	return platform_driver_register(&ad73311_codec_driver);
 }
 module_init(ad73311_init);
 
 static void __exit ad73311_exit(void)
 {
-	snd_soc_unregister_dai(&ad73311_dai);
+	platform_driver_unregister(&ad73311_codec_driver);
 }
 module_exit(ad73311_exit);
 
diff --git a/sound/soc/codecs/ad73311.h b/sound/soc/codecs/ad73311.h
index 569573d..4b353ee 100644
--- a/sound/soc/codecs/ad73311.h
+++ b/sound/soc/codecs/ad73311.h
@@ -85,6 +85,4 @@
 #define REGF_INV		(1 << 6)
 #define REGF_ALB		(1 << 7)
 
-extern struct snd_soc_dai ad73311_dai;
-extern struct snd_soc_codec_device soc_codec_dev_ad73311;
 #endif
diff --git a/sound/soc/codecs/ads117x.c b/sound/soc/codecs/ads117x.c
index f8e75ed..8402854 100644
--- a/sound/soc/codecs/ads117x.c
+++ b/sound/soc/codecs/ads117x.c
@@ -19,16 +19,12 @@
 #include <sound/initval.h>
 #include <sound/soc.h>
 
-#include "ads117x.h"
-
 #define ADS117X_RATES (SNDRV_PCM_RATE_8000_48000)
-
 #define ADS117X_FORMATS (SNDRV_PCM_FMTBIT_S16_LE)
 
-struct snd_soc_dai ads117x_dai = {
+static struct snd_soc_dai_driver ads117x_dai = {
 /* ADC */
-	.name = "ADS117X ADC",
-	.id = 1,
+	.name = "ads117x-hifi",
 	.capture = {
 		.stream_name = "Capture",
 		.channels_min = 1,
@@ -36,75 +32,29 @@
 		.rates = ADS117X_RATES,
 		.formats = ADS117X_FORMATS,},
 };
-EXPORT_SYMBOL_GPL(ads117x_dai);
 
-static int ads117x_probe(struct platform_device *pdev)
+static struct snd_soc_codec_driver soc_codec_dev_ads117x;
+
+static __devinit int ads117x_probe(struct platform_device *pdev)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret;
-
-	codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (codec == NULL)
-		return -ENOMEM;
-
-	socdev->card->codec = codec;
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-	codec->name = "ADS117X";
-	codec->owner = THIS_MODULE;
-	codec->dai = &ads117x_dai;
-	codec->num_dai = 1;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "ads117x: failed to create pcms\n");
-		kfree(codec);
-		return ret;
-	}
-
-	return 0;
+	return snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_ads117x, &ads117x_dai, 1);
 }
 
-static int ads117x_remove(struct platform_device *pdev)
+static int __devexit ads117x_remove(struct platform_device *pdev)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	snd_soc_free_pcms(socdev);
-	kfree(codec);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_ads117x = {
-	.probe =	ads117x_probe,
-	.remove =	ads117x_remove,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_ads117x);
-
-static __devinit int ads117x_platform_probe(struct platform_device *pdev)
-{
-	ads117x_dai.dev = &pdev->dev;
-	return snd_soc_register_dai(&ads117x_dai);
-}
-
-static int __devexit ads117x_platform_remove(struct platform_device *pdev)
-{
-	snd_soc_unregister_dai(&ads117x_dai);
+	snd_soc_unregister_codec(&pdev->dev);
 	return 0;
 }
 
 static struct platform_driver ads117x_codec_driver = {
 	.driver = {
-			.name = "ads117x",
+			.name = "ads117x-codec",
 			.owner = THIS_MODULE,
 	},
 
-	.probe = ads117x_platform_probe,
-	.remove = __devexit_p(ads117x_platform_remove),
+	.probe = ads117x_probe,
+	.remove = __devexit_p(ads117x_remove),
 };
 
 static int __init ads117x_init(void)
diff --git a/sound/soc/codecs/ads117x.h b/sound/soc/codecs/ads117x.h
index dbcf50e..3ce0286 100644
--- a/sound/soc/codecs/ads117x.h
+++ b/sound/soc/codecs/ads117x.h
@@ -9,5 +9,5 @@
  *  Free Software Foundation;  either version 2 of the  License, or (at your
  *  option) any later version.
  */
-extern struct snd_soc_dai ads117x_dai;
-extern struct snd_soc_codec_device soc_codec_dev_ads117x;
+extern struct snd_soc_dai_driver ads117x_dai;
+extern struct snd_soc_codec_driver soc_codec_dev_ads117x;
diff --git a/sound/soc/codecs/ak4104.c b/sound/soc/codecs/ak4104.c
index 192aebda..c27f8f5 100644
--- a/sound/soc/codecs/ak4104.c
+++ b/sound/soc/codecs/ak4104.c
@@ -17,8 +17,6 @@
 #include <linux/spi/spi.h>
 #include <sound/asoundef.h>
 
-#include "ak4104.h"
-
 /* AK4104 registers addresses */
 #define AK4104_REG_CONTROL1		0x00
 #define AK4104_REG_RESERVED		0x01
@@ -45,11 +43,11 @@
 #define AK4104_TX_TXE			(1 << 0)
 #define AK4104_TX_V			(1 << 1)
 
-#define DRV_NAME "ak4104"
+#define DRV_NAME "ak4104-codec"
 
 struct ak4104_private {
-	struct snd_soc_codec codec;
-	u8 reg_cache[AK4104_NUM_REGS];
+	enum snd_soc_control_type control_type;
+	void *control_data;
 };
 
 static int ak4104_fill_cache(struct snd_soc_codec *codec)
@@ -58,7 +56,7 @@
 	u8 *reg_cache = codec->reg_cache;
 	struct spi_device *spi = codec->control_data;
 
-	for (i = 0; i < codec->reg_cache_size; i++) {
+	for (i = 0; i < codec->driver->reg_cache_size; i++) {
 		int ret = spi_w8r8(spi, i | AK4104_READ);
 		if (ret < 0) {
 			dev_err(&spi->dev, "SPI write failure\n");
@@ -76,7 +74,7 @@
 {
 	u8 *reg_cache = codec->reg_cache;
 
-	if (reg >= codec->reg_cache_size)
+	if (reg >= codec->driver->reg_cache_size)
 		return -EINVAL;
 
 	return reg_cache[reg];
@@ -88,7 +86,7 @@
 	u8 *cache = codec->reg_cache;
 	struct spi_device *spi = codec->control_data;
 
-	if (reg >= codec->reg_cache_size)
+	if (reg >= codec->driver->reg_cache_size)
 		return -EINVAL;
 
 	/* only write to the hardware if value has changed */
@@ -145,8 +143,7 @@
 			    struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	int val = 0;
 
 	/* set the IEC958 bits: consumer mode, no copyright bit */
@@ -178,8 +175,8 @@
 	.set_fmt = ak4104_set_dai_fmt,
 };
 
-struct snd_soc_dai ak4104_dai = {
-	.name = DRV_NAME,
+static struct snd_soc_dai_driver ak4104_dai = {
+	.name = "ak4104-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 2,
@@ -192,13 +189,71 @@
 	.ops = &ak4101_dai_ops,
 };
 
-static struct snd_soc_codec *ak4104_codec;
+static int ak4104_probe(struct snd_soc_codec *codec)
+{
+	struct ak4104_private *ak4104 = snd_soc_codec_get_drvdata(codec);
+	int ret, val;
+
+	codec->control_data = ak4104->control_data;
+
+	/* read all regs and fill the cache */
+	ret = ak4104_fill_cache(codec);
+	if (ret < 0) {
+		dev_err(codec->dev, "failed to fill register cache\n");
+		return ret;
+	}
+
+	/* read the 'reserved' register - according to the datasheet, it
+	 * should contain 0x5b. Not a good way to verify the presence of
+	 * the device, but there is no hardware ID register. */
+	if (ak4104_read_reg_cache(codec, AK4104_REG_RESERVED) !=
+					 AK4104_RESERVED_VAL)
+		return -ENODEV;
+
+	/* set power-up and non-reset bits */
+	val = ak4104_read_reg_cache(codec, AK4104_REG_CONTROL1);
+	val |= AK4104_CONTROL1_PW | AK4104_CONTROL1_RSTN;
+	ret = ak4104_spi_write(codec, AK4104_REG_CONTROL1, val);
+	if (ret < 0)
+		return ret;
+
+	/* enable transmitter */
+	val = ak4104_read_reg_cache(codec, AK4104_REG_TX);
+	val |= AK4104_TX_TXE;
+	ret = ak4104_spi_write(codec, AK4104_REG_TX, val);
+	if (ret < 0)
+		return ret;
+
+	dev_info(codec->dev, "SPI device initialized\n");
+	return 0;
+}
+
+static int ak4104_remove(struct snd_soc_codec *codec)
+{
+	int val, ret;
+
+	val = ak4104_read_reg_cache(codec, AK4104_REG_CONTROL1);
+	if (val < 0)
+		return val;
+
+	/* clear power-up and non-reset bits */
+	val &= ~(AK4104_CONTROL1_PW | AK4104_CONTROL1_RSTN);
+	ret = ak4104_spi_write(codec, AK4104_REG_CONTROL1, val);
+
+	return ret;
+}
+
+static struct snd_soc_codec_driver soc_codec_device_ak4104 = {
+	.probe =	ak4104_probe,
+	.remove =	ak4104_remove,
+	.reg_cache_size = AK4104_NUM_REGS,
+	.reg_word_size = sizeof(u16),
+};
 
 static int ak4104_spi_probe(struct spi_device *spi)
 {
-	struct snd_soc_codec *codec;
 	struct ak4104_private *ak4104;
-	int ret, val;
+	int ret;
 
 	spi->bits_per_word = 8;
 	spi->mode = SPI_MODE_0;
@@ -207,125 +262,27 @@
 		return ret;
 
 	ak4104 = kzalloc(sizeof(struct ak4104_private), GFP_KERNEL);
-	if (!ak4104) {
-		dev_err(&spi->dev, "could not allocate codec\n");
+	if (ak4104 == NULL)
 		return -ENOMEM;
-	}
 
-	codec = &ak4104->codec;
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->dev = &spi->dev;
-	codec->name = DRV_NAME;
-	codec->owner = THIS_MODULE;
-	codec->dai = &ak4104_dai;
-	codec->num_dai = 1;
-	snd_soc_codec_set_drvdata(codec, ak4104);
-	codec->control_data = spi;
-	codec->reg_cache = ak4104->reg_cache;
-	codec->reg_cache_size = AK4104_NUM_REGS;
-
-	/* read all regs and fill the cache */
-	ret = ak4104_fill_cache(codec);
-	if (ret < 0) {
-		dev_err(&spi->dev, "failed to fill register cache\n");
-		return ret;
-	}
-
-	/* read the 'reserved' register - according to the datasheet, it
-	 * should contain 0x5b. Not a good way to verify the presence of
-	 * the device, but there is no hardware ID register. */
-	if (ak4104_read_reg_cache(codec, AK4104_REG_RESERVED) !=
-					 AK4104_RESERVED_VAL) {
-		ret = -ENODEV;
-		goto error_free_codec;
-	}
-
-	/* set power-up and non-reset bits */
-	val = ak4104_read_reg_cache(codec, AK4104_REG_CONTROL1);
-	val |= AK4104_CONTROL1_PW | AK4104_CONTROL1_RSTN;
-	ret = ak4104_spi_write(codec, AK4104_REG_CONTROL1, val);
-	if (ret < 0)
-		goto error_free_codec;
-
-	/* enable transmitter */
-	val = ak4104_read_reg_cache(codec, AK4104_REG_TX);
-	val |= AK4104_TX_TXE;
-	ret = ak4104_spi_write(codec, AK4104_REG_TX, val);
-	if (ret < 0)
-		goto error_free_codec;
-
-	ak4104_codec = codec;
-	ret = snd_soc_register_dai(&ak4104_dai);
-	if (ret < 0) {
-		dev_err(&spi->dev, "failed to register DAI\n");
-		goto error_free_codec;
-	}
-
+	ak4104->control_data = spi;
+	ak4104->control_type = SND_SOC_SPI;
 	spi_set_drvdata(spi, ak4104);
-	dev_info(&spi->dev, "SPI device initialized\n");
-	return 0;
 
-error_free_codec:
-	kfree(ak4104);
-	ak4104_dai.dev = NULL;
+	ret = snd_soc_register_codec(&spi->dev,
+			&soc_codec_device_ak4104, &ak4104_dai, 1);
+	if (ret < 0)
+		kfree(ak4104);
 	return ret;
 }
 
 static int __devexit ak4104_spi_remove(struct spi_device *spi)
 {
-	int ret, val;
-	struct ak4104_private *ak4104 = spi_get_drvdata(spi);
-
-	val = ak4104_read_reg_cache(&ak4104->codec, AK4104_REG_CONTROL1);
-	if (val < 0)
-		return val;
-
-	/* clear power-up and non-reset bits */
-	val &= ~(AK4104_CONTROL1_PW | AK4104_CONTROL1_RSTN);
-	ret = ak4104_spi_write(&ak4104->codec, AK4104_REG_CONTROL1, val);
-	if (ret < 0)
-		return ret;
-
-	ak4104_codec = NULL;
-	kfree(ak4104);
+	snd_soc_unregister_codec(&spi->dev);
+	kfree(spi_get_drvdata(spi));
 	return 0;
 }
 
-static int ak4104_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = ak4104_codec;
-	int ret;
-
-	/* Connect the codec to the socdev.  snd_soc_new_pcms() needs this. */
-	socdev->card->codec = codec;
-
-	/* Register PCMs */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms\n");
-		return ret;
-	}
-
-	return 0;
-}
-
-static int ak4104_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	snd_soc_free_pcms(socdev);
-	return 0;
-};
-
-struct snd_soc_codec_device soc_codec_device_ak4104 = {
-	.probe = 	ak4104_probe,
-	.remove = 	ak4104_remove
-};
-EXPORT_SYMBOL_GPL(soc_codec_device_ak4104);
-
 static struct spi_driver ak4104_spi_driver = {
 	.driver  = {
 		.name   = DRV_NAME,
diff --git a/sound/soc/codecs/ak4104.h b/sound/soc/codecs/ak4104.h
deleted file mode 100644
index eb88fe7..0000000
--- a/sound/soc/codecs/ak4104.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _AK4104_H
-#define _AK4104_H
-
-extern struct snd_soc_dai ak4104_dai;
-extern struct snd_soc_codec_device soc_codec_device_ak4104;
-
-#endif
diff --git a/sound/soc/codecs/ak4535.c b/sound/soc/codecs/ak4535.c
index d425367..cd88c8f 100644
--- a/sound/soc/codecs/ak4535.c
+++ b/sound/soc/codecs/ak4535.c
@@ -31,11 +31,11 @@
 
 #define AK4535_VERSION "0.3"
 
-struct snd_soc_codec_device soc_codec_dev_ak4535;
-
 /* codec private data */
 struct ak4535_priv {
 	unsigned int sysclk;
+	enum snd_soc_control_type control_type;
+	void *control_data;
 };
 
 /*
@@ -313,8 +313,7 @@
 			    struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct ak4535_priv *ak4535 = snd_soc_codec_get_drvdata(codec);
 	u8 mode2 = ak4535_read_reg_cache(codec, AK4535_MODE2) & ~(0x3 << 5);
 	int rate = params_rate(params), fs = 256;
@@ -378,14 +377,16 @@
 static int ak4535_set_bias_level(struct snd_soc_codec *codec,
 	enum snd_soc_bias_level level)
 {
-	u16 i;
+	u16 i, mute_reg;
 
 	switch (level) {
 	case SND_SOC_BIAS_ON:
-		ak4535_mute(codec->dai, 0);
+		mute_reg = ak4535_read_reg_cache(codec, AK4535_DAC) & 0xffdf;
+		ak4535_write(codec, AK4535_DAC, mute_reg);
 		break;
 	case SND_SOC_BIAS_PREPARE:
-		ak4535_mute(codec->dai, 1);
+		mute_reg = ak4535_read_reg_cache(codec, AK4535_DAC) & 0xffdf;
+		ak4535_write(codec, AK4535_DAC, mute_reg | 0x20);
 		break;
 	case SND_SOC_BIAS_STANDBY:
 		i = ak4535_read_reg_cache(codec, AK4535_PM1);
@@ -413,8 +414,8 @@
 	.set_sysclk	= ak4535_set_dai_sysclk,
 };
 
-struct snd_soc_dai ak4535_dai = {
-	.name = "AK4535",
+static struct snd_soc_dai_driver ak4535_dai = {
+	.name = "ak4535-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -429,54 +430,27 @@
 		.formats = SNDRV_PCM_FMTBIT_S16_LE,},
 	.ops = &ak4535_dai_ops,
 };
-EXPORT_SYMBOL_GPL(ak4535_dai);
 
-static int ak4535_suspend(struct platform_device *pdev, pm_message_t state)
+static int ak4535_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	ak4535_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int ak4535_resume(struct platform_device *pdev)
+static int ak4535_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	ak4535_sync(codec);
 	ak4535_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 	return 0;
 }
 
-/*
- * initialise the AK4535 driver
- * register the mixer and dsp interfaces with the kernel
- */
-static int ak4535_init(struct snd_soc_device *socdev)
+static int ak4535_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = socdev->card->codec;
-	int ret = 0;
+	struct ak4535_priv *ak4535 = snd_soc_codec_get_drvdata(codec);
 
-	codec->name = "AK4535";
-	codec->owner = THIS_MODULE;
-	codec->read = ak4535_read_reg_cache;
-	codec->write = ak4535_write;
-	codec->set_bias_level = ak4535_set_bias_level;
-	codec->dai = &ak4535_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = ARRAY_SIZE(ak4535_reg);
-	codec->reg_cache = kmemdup(ak4535_reg, sizeof(ak4535_reg), GFP_KERNEL);
+	printk(KERN_INFO "AK4535 Audio Codec %s", AK4535_VERSION);
 
-	if (codec->reg_cache == NULL)
-		return -ENOMEM;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "ak4535: failed to create pcms\n");
-		goto pcm_err;
-	}
+	codec->control_data = ak4535->control_data;
 
 	/* power on device */
 	ak4535_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
@@ -485,39 +459,55 @@
 				ARRAY_SIZE(ak4535_snd_controls));
 	ak4535_add_widgets(codec);
 
-	return ret;
-
-pcm_err:
-	kfree(codec->reg_cache);
-
-	return ret;
+	return 0;
 }
 
-static struct snd_soc_device *ak4535_socdev;
+/* power down chip */
+static int ak4535_remove(struct snd_soc_codec *codec)
+{
+	ak4535_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
+}
+
+static struct snd_soc_codec_driver soc_codec_dev_ak4535 = {
+	.probe =	ak4535_probe,
+	.remove =	ak4535_remove,
+	.suspend =	ak4535_suspend,
+	.resume =	ak4535_resume,
+	.read = ak4535_read_reg_cache,
+	.write = ak4535_write,
+	.set_bias_level = ak4535_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(ak4535_reg),
+	.reg_word_size = sizeof(u8),
+	.reg_cache_default = ak4535_reg,
+};
 
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-
-static int ak4535_i2c_probe(struct i2c_client *i2c,
-			    const struct i2c_device_id *id)
+static __devinit int ak4535_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
 {
-	struct snd_soc_device *socdev = ak4535_socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct ak4535_priv *ak4535;
 	int ret;
 
-	i2c_set_clientdata(i2c, codec);
-	codec->control_data = i2c;
+	ak4535 = kzalloc(sizeof(struct ak4535_priv), GFP_KERNEL);
+	if (ak4535 == NULL)
+		return -ENOMEM;
 
-	ret = ak4535_init(socdev);
+	i2c_set_clientdata(i2c, ak4535);
+	ak4535->control_data = i2c;
+	ak4535->control_type = SND_SOC_I2C;
+
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_ak4535, &ak4535_dai, 1);
 	if (ret < 0)
-		printk(KERN_ERR "failed to initialise AK4535\n");
-
+		kfree(ak4535);
 	return ret;
 }
 
-static int ak4535_i2c_remove(struct i2c_client *client)
+static __devexit int ak4535_i2c_remove(struct i2c_client *client)
 {
-	struct snd_soc_codec *codec = i2c_get_clientdata(client);
-	kfree(codec->reg_cache);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -529,138 +519,34 @@
 
 static struct i2c_driver ak4535_i2c_driver = {
 	.driver = {
-		.name = "AK4535 I2C Codec",
+		.name = "ak4535-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    ak4535_i2c_probe,
-	.remove =   ak4535_i2c_remove,
+	.remove =   __devexit_p(ak4535_i2c_remove),
 	.id_table = ak4535_i2c_id,
 };
-
-static int ak4535_add_i2c_device(struct platform_device *pdev,
-				 const struct ak4535_setup_data *setup)
-{
-	struct i2c_board_info info;
-	struct i2c_adapter *adapter;
-	struct i2c_client *client;
-	int ret;
-
-	ret = i2c_add_driver(&ak4535_i2c_driver);
-	if (ret != 0) {
-		dev_err(&pdev->dev, "can't add i2c driver\n");
-		return ret;
-	}
-
-	memset(&info, 0, sizeof(struct i2c_board_info));
-	info.addr = setup->i2c_address;
-	strlcpy(info.type, "ak4535", I2C_NAME_SIZE);
-
-	adapter = i2c_get_adapter(setup->i2c_bus);
-	if (!adapter) {
-		dev_err(&pdev->dev, "can't get i2c adapter %d\n",
-			setup->i2c_bus);
-		goto err_driver;
-	}
-
-	client = i2c_new_device(adapter, &info);
-	i2c_put_adapter(adapter);
-	if (!client) {
-		dev_err(&pdev->dev, "can't add i2c device at 0x%x\n",
-			(unsigned int)info.addr);
-		goto err_driver;
-	}
-
-	return 0;
-
-err_driver:
-	i2c_del_driver(&ak4535_i2c_driver);
-	return -ENODEV;
-}
 #endif
 
-static int ak4535_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct ak4535_setup_data *setup;
-	struct snd_soc_codec *codec;
-	struct ak4535_priv *ak4535;
-	int ret;
-
-	printk(KERN_INFO "AK4535 Audio Codec %s", AK4535_VERSION);
-
-	setup = socdev->codec_data;
-	codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (codec == NULL)
-		return -ENOMEM;
-
-	ak4535 = kzalloc(sizeof(struct ak4535_priv), GFP_KERNEL);
-	if (ak4535 == NULL) {
-		kfree(codec);
-		return -ENOMEM;
-	}
-
-	snd_soc_codec_set_drvdata(codec, ak4535);
-	socdev->card->codec = codec;
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	ak4535_socdev = socdev;
-	ret = -ENODEV;
-
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-	if (setup->i2c_address) {
-		codec->hw_write = (hw_write_t)i2c_master_send;
-		ret = ak4535_add_i2c_device(pdev, setup);
-	}
-#endif
-
-	if (ret != 0) {
-		kfree(snd_soc_codec_get_drvdata(codec));
-		kfree(codec);
-	}
-	return ret;
-}
-
-/* power down chip */
-static int ak4535_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (codec->control_data)
-		ak4535_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-	if (codec->control_data)
-		i2c_unregister_device(codec->control_data);
-	i2c_del_driver(&ak4535_i2c_driver);
-#endif
-	kfree(snd_soc_codec_get_drvdata(codec));
-	kfree(codec);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_ak4535 = {
-	.probe = 	ak4535_probe,
-	.remove = 	ak4535_remove,
-	.suspend = 	ak4535_suspend,
-	.resume =	ak4535_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_ak4535);
-
 static int __init ak4535_modinit(void)
 {
-	return snd_soc_register_dai(&ak4535_dai);
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	ret = i2c_add_driver(&ak4535_i2c_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register AK4535 I2C driver: %d\n",
+		       ret);
+	}
+#endif
+	return ret;
 }
 module_init(ak4535_modinit);
 
 static void __exit ak4535_exit(void)
 {
-	snd_soc_unregister_dai(&ak4535_dai);
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	i2c_del_driver(&ak4535_i2c_driver);
+#endif
 }
 module_exit(ak4535_exit);
 
diff --git a/sound/soc/codecs/ak4535.h b/sound/soc/codecs/ak4535.h
index c7a5870..0431e5f 100644
--- a/sound/soc/codecs/ak4535.h
+++ b/sound/soc/codecs/ak4535.h
@@ -36,12 +36,4 @@
 
 #define AK4535_CACHEREGNUM 	0x10
 
-struct ak4535_setup_data {
-	int            i2c_bus;
-	unsigned short i2c_address;
-};
-
-extern struct snd_soc_dai ak4535_dai;
-extern struct snd_soc_codec_device soc_codec_dev_ak4535;
-
 #endif
diff --git a/sound/soc/codecs/ak4642.c b/sound/soc/codecs/ak4642.c
index 3d7dc55..a95ff4f 100644
--- a/sound/soc/codecs/ak4642.c
+++ b/sound/soc/codecs/ak4642.c
@@ -30,8 +30,6 @@
 #include <sound/initval.h>
 #include <sound/tlv.h>
 
-#include "ak4642.h"
-
 #define AK4642_VERSION "0.0.1"
 
 #define PW_MGMT1	0x00
@@ -102,7 +100,6 @@
 #define FS3		(1 << 5)
 #define FS_MASK		(FS0 | FS1 | FS2 | FS3)
 
-struct snd_soc_codec_device soc_codec_dev_ak4642;
 
 /*
  * Playback Volume (table 39)
@@ -123,11 +120,11 @@
 
 /* codec private data */
 struct ak4642_priv {
-	struct snd_soc_codec codec;
+	unsigned int sysclk;
+	enum snd_soc_control_type control_type;
+	void *control_data;
 };
 
-static struct snd_soc_codec *ak4642_codec;
-
 /*
  * ak4642 register cache
  */
@@ -393,8 +390,8 @@
 	.hw_params	= ak4642_dai_hw_params,
 };
 
-struct snd_soc_dai ak4642_dai = {
-	.name = "AK4642",
+static struct snd_soc_dai_driver ak4642_dai = {
+	.name = "ak4642-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -410,112 +407,65 @@
 	.ops = &ak4642_dai_ops,
 	.symmetric_rates = 1,
 };
-EXPORT_SYMBOL_GPL(ak4642_dai);
 
-static int ak4642_resume(struct platform_device *pdev)
+static int ak4642_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	ak4642_sync(codec);
 	return 0;
 }
 
-/*
- * initialise the AK4642 driver
- * register the mixer and dsp interfaces with the kernel
- */
-static int ak4642_init(struct ak4642_priv *ak4642)
+
+static int ak4642_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = &ak4642->codec;
-	int ret = 0;
+	struct ak4642_priv *ak4642 = snd_soc_codec_get_drvdata(codec);
 
-	if (ak4642_codec) {
-		dev_err(codec->dev, "Another ak4642 is registered\n");
-		return -EINVAL;
-	}
+	dev_info(codec->dev, "AK4642 Audio Codec %s", AK4642_VERSION);
 
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, ak4642);
-	codec->name		= "AK4642";
-	codec->owner		= THIS_MODULE;
-	codec->read		= ak4642_read_reg_cache;
-	codec->write		= ak4642_write;
-	codec->dai		= &ak4642_dai;
-	codec->num_dai		= 1;
 	codec->hw_write		= (hw_write_t)i2c_master_send;
-	codec->reg_cache_size	= ARRAY_SIZE(ak4642_reg);
-	codec->reg_cache	= kmemdup(ak4642_reg,
-					  sizeof(ak4642_reg), GFP_KERNEL);
+	codec->control_data	= ak4642->control_data;
 
-	if (!codec->reg_cache)
-		return -ENOMEM;
+	snd_soc_add_controls(codec, ak4642_snd_controls,
+			     ARRAY_SIZE(ak4642_snd_controls));
 
-	ak4642_dai.dev = codec->dev;
-	ak4642_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto reg_cache_err;
-	}
-
-	ret = snd_soc_register_dai(&ak4642_dai);
-	if (ret) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		snd_soc_unregister_codec(codec);
-		goto reg_cache_err;
-	}
-
-	return ret;
-
-reg_cache_err:
-	kfree(codec->reg_cache);
-	codec->reg_cache = NULL;
-
-	return ret;
+	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_ak4642 = {
+	.probe			= ak4642_probe,
+	.resume			= ak4642_resume,
+	.read			= ak4642_read_reg_cache,
+	.write			= ak4642_write,
+	.reg_cache_size		= ARRAY_SIZE(ak4642_reg),
+	.reg_word_size		= sizeof(u8),
+	.reg_cache_default	= ak4642_reg,
+};
+
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-static int ak4642_i2c_probe(struct i2c_client *i2c,
-			    const struct i2c_device_id *id)
+static __devinit int ak4642_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
 {
 	struct ak4642_priv *ak4642;
-	struct snd_soc_codec *codec;
 	int ret;
 
 	ak4642 = kzalloc(sizeof(struct ak4642_priv), GFP_KERNEL);
 	if (!ak4642)
 		return -ENOMEM;
 
-	codec = &ak4642->codec;
-	codec->dev = &i2c->dev;
-
 	i2c_set_clientdata(i2c, ak4642);
-	codec->control_data = i2c;
+	ak4642->control_data = i2c;
+	ak4642->control_type = SND_SOC_I2C;
 
-	ret = ak4642_init(ak4642);
-	if (ret < 0) {
-		printk(KERN_ERR "failed to initialise AK4642\n");
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_ak4642, &ak4642_dai, 1);
+	if (ret < 0)
 		kfree(ak4642);
-	}
-
 	return ret;
 }
 
-static int ak4642_i2c_remove(struct i2c_client *client)
+static __devexit int ak4642_i2c_remove(struct i2c_client *client)
 {
-	struct ak4642_priv *ak4642 = i2c_get_clientdata(client);
-
-	snd_soc_unregister_dai(&ak4642_dai);
-	snd_soc_unregister_codec(&ak4642->codec);
-	kfree(ak4642->codec.reg_cache);
-	kfree(ak4642);
-	ak4642_codec = NULL;
-
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -528,64 +478,15 @@
 
 static struct i2c_driver ak4642_i2c_driver = {
 	.driver = {
-		.name = "AK4642 I2C Codec",
+		.name = "ak4642-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe		= ak4642_i2c_probe,
-	.remove		= ak4642_i2c_remove,
+	.remove		= __devexit_p(ak4642_i2c_remove),
 	.id_table	= ak4642_i2c_id,
 };
-
 #endif
 
-static int ak4642_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	int ret;
-
-	if (!ak4642_codec) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = ak4642_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "ak4642: failed to create pcms\n");
-		goto pcm_err;
-	}
-
-	snd_soc_add_controls(ak4642_codec, ak4642_snd_controls,
-			     ARRAY_SIZE(ak4642_snd_controls));
-
-	dev_info(&pdev->dev, "AK4642 Audio Codec %s", AK4642_VERSION);
-	return ret;
-
-pcm_err:
-	return ret;
-
-}
-
-/* power down chip */
-static int ak4642_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_ak4642 = {
-	.probe =	ak4642_probe,
-	.remove =	ak4642_remove,
-	.resume =	ak4642_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_ak4642);
-
 static int __init ak4642_modinit(void)
 {
 	int ret = 0;
diff --git a/sound/soc/codecs/ak4642.h b/sound/soc/codecs/ak4642.h
deleted file mode 100644
index e476833..0000000
--- a/sound/soc/codecs/ak4642.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * ak4642.h  --  AK4642 Soc Audio driver
- *
- * Copyright (C) 2009 Renesas Solutions Corp.
- * Kuninori Morimoto <morimoto.kuninori@renesas.com>
- *
- * Based on ak4535.c
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef _AK4642_H
-#define _AK4642_H
-
-extern struct snd_soc_dai ak4642_dai;
-extern struct snd_soc_codec_device soc_codec_dev_ak4642;
-
-#endif
diff --git a/sound/soc/codecs/ak4671.c b/sound/soc/codecs/ak4671.c
index 8756693..24f5f49 100644
--- a/sound/soc/codecs/ak4671.c
+++ b/sound/soc/codecs/ak4671.c
@@ -23,11 +23,11 @@
 
 #include "ak4671.h"
 
-static struct snd_soc_codec *ak4671_codec;
 
 /* codec private data */
 struct ak4671_priv {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
+	void *control_data;
 	u8 reg_cache[AK4671_CACHEREGNUM];
 };
 
@@ -619,8 +619,8 @@
 	.set_fmt	= ak4671_set_dai_fmt,
 };
 
-struct snd_soc_dai ak4671_dai = {
-	.name = "AK4671",
+static struct snd_soc_dai_driver ak4671_dai = {
+	.name = "ak4671-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -635,27 +635,18 @@
 		.formats = AK4671_FORMATS,},
 	.ops = &ak4671_dai_ops,
 };
-EXPORT_SYMBOL_GPL(ak4671_dai);
 
-static int ak4671_probe(struct platform_device *pdev)
+static int ak4671_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
+	struct ak4671_priv *ak4671 = snd_soc_codec_get_drvdata(codec);
+	int ret;
 
-	if (ak4671_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
+	codec->hw_write = (hw_write_t)i2c_master_send;
 
-	socdev->card->codec = ak4671_codec;
-	codec = ak4671_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
+	ret = snd_soc_codec_set_cache_io(codec, 8, 8, ak4671->control_type);
 	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
+		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
+		return ret;
 	}
 
 	snd_soc_add_controls(codec, ak4671_snd_controls,
@@ -665,121 +656,48 @@
 	ak4671_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	return ret;
-
-pcm_err:
-	return ret;
 }
 
-static int ak4671_remove(struct platform_device *pdev)
+static int ak4671_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
+	ak4671_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-struct snd_soc_codec_device soc_codec_dev_ak4671 = {
+static struct snd_soc_codec_driver soc_codec_dev_ak4671 = {
 	.probe = ak4671_probe,
 	.remove = ak4671_remove,
+	.set_bias_level = ak4671_set_bias_level,
+	.reg_cache_size = AK4671_CACHEREGNUM,
+	.reg_word_size = sizeof(u8),
+	.reg_cache_default = ak4671_reg,
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_ak4671);
-
-static int ak4671_register(struct ak4671_priv *ak4671,
-		enum snd_soc_control_type control)
-{
-	int ret;
-	struct snd_soc_codec *codec = &ak4671->codec;
-
-	if (ak4671_codec) {
-		dev_err(codec->dev, "Another AK4671 is registered\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec,  ak4671);
-	codec->name = "AK4671";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = ak4671_set_bias_level;
-	codec->dai = &ak4671_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = AK4671_CACHEREGNUM;
-	codec->reg_cache = &ak4671->reg_cache;
-
-	memcpy(codec->reg_cache, ak4671_reg, sizeof(ak4671_reg));
-
-	ret = snd_soc_codec_set_cache_io(codec, 8, 8, control);
-	if (ret < 0) {
-		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
-	}
-
-	ak4671_dai.dev = codec->dev;
-	ak4671_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err;
-	}
-
-	ret = snd_soc_register_dai(&ak4671_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
-
-	return 0;
-
-err_codec:
-	snd_soc_unregister_codec(codec);
-err:
-	kfree(ak4671);
-	return ret;
-}
-
-static void ak4671_unregister(struct ak4671_priv *ak4671)
-{
-	ak4671_set_bias_level(&ak4671->codec, SND_SOC_BIAS_OFF);
-	snd_soc_unregister_dai(&ak4671_dai);
-	snd_soc_unregister_codec(&ak4671->codec);
-	kfree(ak4671);
-	ak4671_codec = NULL;
-}
 
 static int __devinit ak4671_i2c_probe(struct i2c_client *client,
 		const struct i2c_device_id *id)
 {
 	struct ak4671_priv *ak4671;
-	struct snd_soc_codec *codec;
+	int ret;
 
 	ak4671 = kzalloc(sizeof(struct ak4671_priv), GFP_KERNEL);
 	if (ak4671 == NULL)
 		return -ENOMEM;
 
-	codec = &ak4671->codec;
-	codec->hw_write = (hw_write_t)i2c_master_send;
-
 	i2c_set_clientdata(client, ak4671);
-	codec->control_data = client;
+	ak4671->control_data = client;
+	ak4671->control_type = SND_SOC_I2C;
 
-	codec->dev = &client->dev;
-
-	return ak4671_register(ak4671, SND_SOC_I2C);
+	ret = snd_soc_register_codec(&client->dev,
+			&soc_codec_dev_ak4671, &ak4671_dai, 1);
+	if (ret < 0)
+		kfree(ak4671);
+	return ret;
 }
 
 static __devexit int ak4671_i2c_remove(struct i2c_client *client)
 {
-	struct ak4671_priv *ak4671 = i2c_get_clientdata(client);
-
-	ak4671_unregister(ak4671);
-
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -791,7 +709,7 @@
 
 static struct i2c_driver ak4671_i2c_driver = {
 	.driver = {
-		.name = "ak4671",
+		.name = "ak4671-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe = ak4671_i2c_probe,
diff --git a/sound/soc/codecs/ak4671.h b/sound/soc/codecs/ak4671.h
index e2fad96..61cb7ab 100644
--- a/sound/soc/codecs/ak4671.h
+++ b/sound/soc/codecs/ak4671.h
@@ -150,7 +150,4 @@
 /* AK4671_LOUT2_POWER_MANAGEMENT (0x10) Fields */
 #define AK4671_MUTEN				0x04
 
-extern struct snd_soc_dai ak4671_dai;
-extern struct snd_soc_codec_device soc_codec_dev_ak4671;
-
 #endif
diff --git a/sound/soc/codecs/cq93vc.c b/sound/soc/codecs/cq93vc.c
index a320fb5..8236439 100644
--- a/sound/soc/codecs/cq93vc.c
+++ b/sound/soc/codecs/cq93vc.c
@@ -30,6 +30,7 @@
 #include <linux/slab.h>
 #include <linux/clk.h>
 #include <linux/mfd/davinci_voicecodec.h>
+#include <linux/spi/spi.h>
 
 #include <sound/core.h>
 #include <sound/pcm.h>
@@ -41,8 +42,6 @@
 
 #include <mach/dm365.h>
 
-#include "cq93vc.h"
-
 static inline unsigned int cq93vc_read(struct snd_soc_codec *codec,
 						unsigned int reg)
 {
@@ -130,8 +129,8 @@
 	.set_sysclk	= cq93vc_set_dai_sysclk,
 };
 
-struct snd_soc_dai cq93vc_dai = {
-	.name = "CQ93VC",
+static struct snd_soc_dai_driver cq93vc_dai = {
+	.name = "cq93vc-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -146,36 +145,20 @@
 		.formats = CQ93VC_FORMATS,},
 	.ops = &cq93vc_dai_ops,
 };
-EXPORT_SYMBOL_GPL(cq93vc_dai);
 
-static int cq93vc_resume(struct platform_device *pdev)
+static int cq93vc_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	cq93vc_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	return 0;
 }
 
-static struct snd_soc_codec *cq93vc_codec;
-
-static int cq93vc_probe(struct platform_device *pdev)
+static int cq93vc_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct device *dev = &pdev->dev;
-	struct snd_soc_codec *codec;
-	int ret;
+	struct davinci_vc *davinci_vc = codec->dev->platform_data;
 
-	socdev->card->codec = cq93vc_codec;
-	codec = socdev->card->codec;
-
-	/* Register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(dev, "%s: failed to create pcms\n", pdev->name);
-		return ret;
-	}
+	davinci_vc->cq93vc.codec = codec;
+	codec->control_data = davinci_vc;
 
 	/* Set controls */
 	snd_soc_add_controls(codec, cq93vc_snd_controls,
@@ -187,108 +170,51 @@
 	return 0;
 }
 
-static int cq93vc_remove(struct platform_device *pdev)
+static int cq93vc_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
+	cq93vc_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
 	return 0;
 }
 
-struct snd_soc_codec_device soc_codec_dev_cq93vc = {
+static struct snd_soc_codec_driver soc_codec_dev_cq93vc = {
+	.read = cq93vc_read,
+	.write = cq93vc_write,
+	.set_bias_level = cq93vc_set_bias_level,
 	.probe = cq93vc_probe,
 	.remove = cq93vc_remove,
 	.resume = cq93vc_resume,
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_cq93vc);
 
-static __init int cq93vc_codec_probe(struct platform_device *pdev)
+static int cq93vc_platform_probe(struct platform_device *pdev)
 {
-	struct davinci_vc *davinci_vc = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret;
-
-	codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (codec == NULL) {
-		dev_dbg(davinci_vc->dev,
-			"could not allocate memory for codec data\n");
-		return -ENOMEM;
-	}
-
-	davinci_vc->cq93vc.codec = codec;
-
-	cq93vc_dai.dev = &pdev->dev;
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-	codec->dev = &pdev->dev;
-	codec->name = "CQ93VC";
-	codec->owner = THIS_MODULE;
-	codec->read = cq93vc_read;
-	codec->write = cq93vc_write;
-	codec->set_bias_level = cq93vc_set_bias_level;
-	codec->dai = &cq93vc_dai;
-	codec->num_dai = 1;
-	codec->control_data = davinci_vc;
-
-	cq93vc_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret) {
-		dev_err(davinci_vc->dev, "failed to register codec\n");
-		goto fail1;
-	}
-
-	ret = snd_soc_register_dai(&cq93vc_dai);
-	if (ret) {
-		dev_err(davinci_vc->dev, "could register dai\n");
-		goto fail2;
-	}
-	return 0;
-
-fail2:
-	snd_soc_unregister_codec(codec);
-
-fail1:
-	kfree(codec);
-	cq93vc_codec = NULL;
-
-	return ret;
+	return snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_cq93vc, &cq93vc_dai, 1);
 }
 
-static int __devexit cq93vc_codec_remove(struct platform_device *pdev)
+static int cq93vc_platform_remove(struct platform_device *pdev)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	snd_soc_unregister_dai(&cq93vc_dai);
-	snd_soc_unregister_codec(&codec);
-
-	kfree(codec);
-	cq93vc_codec = NULL;
-
+	snd_soc_unregister_codec(&pdev->dev);
 	return 0;
 }
 
 static struct platform_driver cq93vc_codec_driver = {
 	.driver = {
-		   .name = "cq93vc",
-		   .owner = THIS_MODULE,
-		   },
-	.probe = cq93vc_codec_probe,
-	.remove = __devexit_p(cq93vc_codec_remove),
+			.name = "cq93vc-codec",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = cq93vc_platform_probe,
+	.remove = __devexit_p(cq93vc_platform_remove),
 };
 
-static __init int cq93vc_init(void)
+static int __init cq93vc_init(void)
 {
-	return platform_driver_probe(&cq93vc_codec_driver, cq93vc_codec_probe);
+	return platform_driver_register(&cq93vc_codec_driver);
 }
 module_init(cq93vc_init);
 
-static __exit void cq93vc_exit(void)
+static void __exit cq93vc_exit(void)
 {
 	platform_driver_unregister(&cq93vc_codec_driver);
 }
diff --git a/sound/soc/codecs/cq93vc.h b/sound/soc/codecs/cq93vc.h
deleted file mode 100644
index 845b196..0000000
--- a/sound/soc/codecs/cq93vc.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * ALSA SoC CQ0093 Voice Codec Driver for DaVinci platforms
- *
- * Copyright (C) 2010 Texas Instruments, Inc
- *
- * Author: Miguel Aguilar <miguel.aguilar@ridgerun.com>
- *
- * 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; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _CQ93VC_H
-#define _CQ93VC_H
-
-extern struct snd_soc_dai cq93vc_dai;
-extern struct snd_soc_codec_device soc_codec_dev_cq93vc;
-
-#endif
diff --git a/sound/soc/codecs/cs4270.c b/sound/soc/codecs/cs4270.c
index 30d9492..5fd8e0d 100644
--- a/sound/soc/codecs/cs4270.c
+++ b/sound/soc/codecs/cs4270.c
@@ -31,8 +31,6 @@
 #include <linux/delay.h>
 #include <linux/regulator/consumer.h>
 
-#include "cs4270.h"
-
 /*
  * The codec isn't really big-endian or little-endian, since the I2S
  * interface requires data to be sent serially with the MSbit first.
@@ -114,7 +112,8 @@
 
 /* Private data for the CS4270 */
 struct cs4270_private {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
+	void *control_data;
 	u8 reg_cache[CS4270_NUMREGS];
 	unsigned int mclk; /* Input frequency of the MCLK pin */
 	unsigned int mode; /* The mode (I2S or left-justified) */
@@ -212,44 +211,8 @@
 {
 	struct snd_soc_codec *codec = codec_dai->codec;
 	struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
-	unsigned int rates = 0;
-	unsigned int rate_min = -1;
-	unsigned int rate_max = 0;
-	unsigned int i;
 
 	cs4270->mclk = freq;
-
-	if (cs4270->mclk) {
-		for (i = 0; i < NUM_MCLK_RATIOS; i++) {
-			unsigned int rate = freq / cs4270_mode_ratios[i].ratio;
-			rates |= snd_pcm_rate_to_rate_bit(rate);
-			if (rate < rate_min)
-				rate_min = rate;
-			if (rate > rate_max)
-				rate_max = rate;
-		}
-		/* FIXME: soc should support a rate list */
-		rates &= ~SNDRV_PCM_RATE_KNOT;
-
-		if (!rates) {
-			dev_err(codec->dev, "could not find a valid sample rate\n");
-			return -EINVAL;
-		}
-	} else {
-		/* enable all possible rates */
-		rates = SNDRV_PCM_RATE_8000_192000;
-		rate_min = 8000;
-		rate_max = 192000;
-	}
-
-	codec_dai->playback.rates = rates;
-	codec_dai->playback.rate_min = rate_min;
-	codec_dai->playback.rate_max = rate_max;
-
-	codec_dai->capture.rates = rates;
-	codec_dai->capture.rate_min = rate_min;
-	codec_dai->capture.rate_max = rate_max;
-
 	return 0;
 }
 
@@ -410,8 +373,7 @@
 			    struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
 	int ret;
 	unsigned int i;
@@ -549,19 +511,6 @@
 		snd_soc_get_volsw, cs4270_soc_put_mute),
 };
 
-/*
- * cs4270_codec - global variable to store codec for the ASoC probe function
- *
- * If struct i2c_driver had a private_data field, we wouldn't need to use
- * cs4270_codec.  This is the only way to pass the codec structure from
- * cs4270_i2c_probe() to cs4270_probe().  Unfortunately, there is no good
- * way to synchronize these two functions.  cs4270_i2c_probe() can be called
- * multiple times before cs4270_probe() is called even once.  So for now, we
- * also only allow cs4270_i2c_probe() to be run once.  That means that we do
- * not support more than one cs4270 device in the system, at least for now.
- */
-static struct snd_soc_codec *cs4270_codec;
-
 static struct snd_soc_dai_ops cs4270_dai_ops = {
 	.hw_params	= cs4270_hw_params,
 	.set_sysclk	= cs4270_set_dai_sysclk,
@@ -569,25 +518,28 @@
 	.digital_mute	= cs4270_dai_mute,
 };
 
-struct snd_soc_dai cs4270_dai = {
-	.name = "cs4270",
+struct snd_soc_dai_driver cs4270_dai = {
+	.name = "cs4270-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
 		.channels_max = 2,
-		.rates = 0,
+		.rates = SNDRV_PCM_RATE_CONTINUOUS,
+		.rate_min = 4000,
+		.rate_max = 216000,
 		.formats = CS4270_FORMATS,
 	},
 	.capture = {
 		.stream_name = "Capture",
 		.channels_min = 1,
 		.channels_max = 2,
-		.rates = 0,
+		.rates = SNDRV_PCM_RATE_CONTINUOUS,
+		.rate_min = 4000,
+		.rate_max = 216000,
 		.formats = CS4270_FORMATS,
 	},
 	.ops = &cs4270_dai_ops,
 };
-EXPORT_SYMBOL_GPL(cs4270_dai);
 
 /**
  * cs4270_probe - ASoC probe function
@@ -596,153 +548,19 @@
  * This function is called when ASoC has all the pieces it needs to
  * instantiate a sound driver.
  */
-static int cs4270_probe(struct platform_device *pdev)
+static int cs4270_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = cs4270_codec;
 	struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
-	int i, ret;
+	int i, ret, reg;
 
-	/* Connect the codec to the socdev.  snd_soc_new_pcms() needs this. */
-	socdev->card->codec = codec;
-
-	/* Register PCMs */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms\n");
-		return ret;
-	}
-
-	/* Add the non-DAPM controls */
-	ret = snd_soc_add_controls(codec, cs4270_snd_controls,
-				ARRAY_SIZE(cs4270_snd_controls));
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to add controls\n");
-		goto error_free_pcms;
-	}
-
-	/* get the power supply regulators */
-	for (i = 0; i < ARRAY_SIZE(supply_names); i++)
-		cs4270->supplies[i].supply = supply_names[i];
-
-	ret = regulator_bulk_get(codec->dev, ARRAY_SIZE(cs4270->supplies),
-				 cs4270->supplies);
-	if (ret < 0)
-		goto error_free_pcms;
-
-	ret = regulator_bulk_enable(ARRAY_SIZE(cs4270->supplies),
-				    cs4270->supplies);
-	if (ret < 0)
-		goto error_free_regulators;
-
-	return 0;
-
-error_free_regulators:
-	regulator_bulk_free(ARRAY_SIZE(cs4270->supplies),
-			    cs4270->supplies);
-
-error_free_pcms:
-	snd_soc_free_pcms(socdev);
-
-	return ret;
-}
-
-/**
- * cs4270_remove - ASoC remove function
- * @pdev: platform device
- *
- * This function is the counterpart to cs4270_probe().
- */
-static int cs4270_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = cs4270_codec;
-	struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
-
-	snd_soc_free_pcms(socdev);
-	regulator_bulk_disable(ARRAY_SIZE(cs4270->supplies), cs4270->supplies);
-	regulator_bulk_free(ARRAY_SIZE(cs4270->supplies), cs4270->supplies);
-
-	return 0;
-};
-
-/**
- * cs4270_i2c_probe - initialize the I2C interface of the CS4270
- * @i2c_client: the I2C client object
- * @id: the I2C device ID (ignored)
- *
- * This function is called whenever the I2C subsystem finds a device that
- * matches the device ID given via a prior call to i2c_add_driver().
- */
-static int cs4270_i2c_probe(struct i2c_client *i2c_client,
-	const struct i2c_device_id *id)
-{
-	struct snd_soc_codec *codec;
-	struct cs4270_private *cs4270;
-	unsigned int reg;
-	int ret;
-
-	/* For now, we only support one cs4270 device in the system.  See the
-	 * comment for cs4270_codec.
-	 */
-	if (cs4270_codec) {
-		dev_err(&i2c_client->dev, "ignoring CS4270 at addr %X\n",
-		       i2c_client->addr);
-		dev_err(&i2c_client->dev, "only one per board allowed\n");
-		/* Should we return something other than ENODEV here? */
-		return -ENODEV;
-	}
-
-	/* Verify that we have a CS4270 */
-
-	ret = i2c_smbus_read_byte_data(i2c_client, CS4270_CHIPID);
-	if (ret < 0) {
-		dev_err(&i2c_client->dev, "failed to read i2c at addr %X\n",
-		       i2c_client->addr);
-		return ret;
-	}
-	/* The top four bits of the chip ID should be 1100. */
-	if ((ret & 0xF0) != 0xC0) {
-		dev_err(&i2c_client->dev, "device at addr %X is not a CS4270\n",
-		       i2c_client->addr);
-		return -ENODEV;
-	}
-
-	dev_info(&i2c_client->dev, "found device at i2c address %X\n",
-		i2c_client->addr);
-	dev_info(&i2c_client->dev, "hardware revision %X\n", ret & 0xF);
-
-	/* Allocate enough space for the snd_soc_codec structure
-	   and our private data together. */
-	cs4270 = kzalloc(sizeof(struct cs4270_private), GFP_KERNEL);
-	if (!cs4270) {
-		dev_err(&i2c_client->dev, "could not allocate codec\n");
-		return -ENOMEM;
-	}
-	codec = &cs4270->codec;
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->dev = &i2c_client->dev;
-	codec->name = "CS4270";
-	codec->owner = THIS_MODULE;
-	codec->dai = &cs4270_dai;
-	codec->num_dai = 1;
-	snd_soc_codec_set_drvdata(codec, cs4270);
-	codec->control_data = i2c_client;
-	codec->read = cs4270_read_reg_cache;
-	codec->write = cs4270_i2c_write;
-	codec->reg_cache = cs4270->reg_cache;
-	codec->reg_cache_size = CS4270_NUMREGS;
+	codec->control_data = cs4270->control_data;
 
 	/* The I2C interface is set up, so pre-fill our register cache */
 
 	ret = cs4270_fill_cache(codec);
 	if (ret < 0) {
-		dev_err(&i2c_client->dev, "failed to fill register cache\n");
-		goto error_free_codec;
+		dev_err(codec->dev, "failed to fill register cache\n");
+		return ret;
 	}
 
 	/* Disable auto-mute.  This feature appears to be buggy.  In some
@@ -755,7 +573,7 @@
 	reg &= ~CS4270_MUTE_AUTO;
 	ret = cs4270_i2c_write(codec, CS4270_MUTE, reg);
 	if (ret < 0) {
-		dev_err(&i2c_client->dev, "i2c write failed\n");
+		dev_err(codec->dev, "i2c write failed\n");
 		return ret;
 	}
 
@@ -769,65 +587,56 @@
 	reg &= ~(CS4270_TRANS_SOFT | CS4270_TRANS_ZERO);
 	ret = cs4270_i2c_write(codec, CS4270_TRANS, reg);
 	if (ret < 0) {
-		dev_err(&i2c_client->dev, "i2c write failed\n");
+		dev_err(codec->dev, "i2c write failed\n");
 		return ret;
 	}
 
-	/* Initialize the DAI. Normally, we'd prefer to have a kmalloc'd DAI
-	 * structure for each CS4270 device, but the machine driver needs to
-	 * have a pointer to the DAI structure, so for now it must be a global
-	 * variable.
-	 */
-	cs4270_dai.dev = &i2c_client->dev;
-
-	/* Register the DAI.  If all the other ASoC driver have already
-	 * registered, then this will call our probe function, so
-	 * cs4270_codec needs to be ready.
-	 */
-	cs4270_codec = codec;
-	ret = snd_soc_register_dai(&cs4270_dai);
+	/* Add the non-DAPM controls */
+	ret = snd_soc_add_controls(codec, cs4270_snd_controls,
+				ARRAY_SIZE(cs4270_snd_controls));
 	if (ret < 0) {
-		dev_err(&i2c_client->dev, "failed to register DAIe\n");
-		goto error_free_codec;
+		dev_err(codec->dev, "failed to add controls\n");
+		return ret;
 	}
 
-	i2c_set_clientdata(i2c_client, cs4270);
+	/* get the power supply regulators */
+	for (i = 0; i < ARRAY_SIZE(supply_names); i++)
+		cs4270->supplies[i].supply = supply_names[i];
+
+	ret = regulator_bulk_get(codec->dev, ARRAY_SIZE(cs4270->supplies),
+				 cs4270->supplies);
+	if (ret < 0)
+		return ret;
+
+	ret = regulator_bulk_enable(ARRAY_SIZE(cs4270->supplies),
+				    cs4270->supplies);
+	if (ret < 0)
+		goto error_free_regulators;
 
 	return 0;
 
-error_free_codec:
-	kfree(cs4270);
-	cs4270_codec = NULL;
-	cs4270_dai.dev = NULL;
+error_free_regulators:
+	regulator_bulk_free(ARRAY_SIZE(cs4270->supplies),
+			    cs4270->supplies);
 
 	return ret;
 }
 
 /**
- * cs4270_i2c_remove - remove an I2C device
- * @i2c_client: the I2C client object
+ * cs4270_remove - ASoC remove function
+ * @pdev: platform device
  *
- * This function is the counterpart to cs4270_i2c_probe().
+ * This function is the counterpart to cs4270_probe().
  */
-static int cs4270_i2c_remove(struct i2c_client *i2c_client)
+static int cs4270_remove(struct snd_soc_codec *codec)
 {
-	struct cs4270_private *cs4270 = i2c_get_clientdata(i2c_client);
+	struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
 
-	kfree(cs4270);
-	cs4270_codec = NULL;
-	cs4270_dai.dev = NULL;
+	regulator_bulk_disable(ARRAY_SIZE(cs4270->supplies), cs4270->supplies);
+	regulator_bulk_free(ARRAY_SIZE(cs4270->supplies), cs4270->supplies);
 
 	return 0;
-}
-
-/*
- * cs4270_id - I2C device IDs supported by this driver
- */
-static struct i2c_device_id cs4270_id[] = {
-	{"cs4270", 0},
-	{}
 };
-MODULE_DEVICE_TABLE(i2c, cs4270_id);
 
 #ifdef CONFIG_PM
 
@@ -840,9 +649,8 @@
  * and all registers are written back to the hardware when resuming.
  */
 
-static int cs4270_soc_suspend(struct platform_device *pdev, pm_message_t mesg)
+static int cs4270_soc_suspend(struct snd_soc_codec *codec, pm_message_t mesg)
 {
-	struct snd_soc_codec *codec = cs4270_codec;
 	struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
 	int reg, ret;
 
@@ -860,9 +668,8 @@
 	return 0;
 }
 
-static int cs4270_soc_resume(struct platform_device *pdev)
+static int cs4270_soc_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = cs4270_codec;
 	struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
 	struct i2c_client *i2c_client = codec->control_data;
 	int reg;
@@ -896,6 +703,95 @@
 #endif /* CONFIG_PM */
 
 /*
+ * ASoC codec device structure
+ *
+ * Assign this variable to the codec_dev field of the machine driver's
+ * snd_soc_device structure.
+ */
+static struct snd_soc_codec_driver soc_codec_device_cs4270 = {
+	.probe =	cs4270_probe,
+	.remove =	cs4270_remove,
+	.suspend =	cs4270_soc_suspend,
+	.resume =	cs4270_soc_resume,
+	.read = cs4270_read_reg_cache,
+	.write = cs4270_i2c_write,
+	.reg_cache_size = CS4270_NUMREGS,
+	.reg_word_size = sizeof(u8),
+};
+
+/**
+ * cs4270_i2c_probe - initialize the I2C interface of the CS4270
+ * @i2c_client: the I2C client object
+ * @id: the I2C device ID (ignored)
+ *
+ * This function is called whenever the I2C subsystem finds a device that
+ * matches the device ID given via a prior call to i2c_add_driver().
+ */
+static int cs4270_i2c_probe(struct i2c_client *i2c_client,
+	const struct i2c_device_id *id)
+{
+	struct cs4270_private *cs4270;
+	int ret;
+
+	/* Verify that we have a CS4270 */
+
+	ret = i2c_smbus_read_byte_data(i2c_client, CS4270_CHIPID);
+	if (ret < 0) {
+		dev_err(&i2c_client->dev, "failed to read i2c at addr %X\n",
+		       i2c_client->addr);
+		return ret;
+	}
+	/* The top four bits of the chip ID should be 1100. */
+	if ((ret & 0xF0) != 0xC0) {
+		dev_err(&i2c_client->dev, "device at addr %X is not a CS4270\n",
+		       i2c_client->addr);
+		return -ENODEV;
+	}
+
+	dev_info(&i2c_client->dev, "found device at i2c address %X\n",
+		i2c_client->addr);
+	dev_info(&i2c_client->dev, "hardware revision %X\n", ret & 0xF);
+
+	cs4270 = kzalloc(sizeof(struct cs4270_private), GFP_KERNEL);
+	if (!cs4270) {
+		dev_err(&i2c_client->dev, "could not allocate codec\n");
+		return -ENOMEM;
+	}
+
+	i2c_set_clientdata(i2c_client, cs4270);
+	cs4270->control_data = i2c_client;
+	cs4270->control_type = SND_SOC_I2C;
+
+	ret = snd_soc_register_codec(&i2c_client->dev,
+			&soc_codec_device_cs4270, &cs4270_dai, 1);
+	if (ret < 0)
+		kfree(cs4270);
+	return ret;
+}
+
+/**
+ * cs4270_i2c_remove - remove an I2C device
+ * @i2c_client: the I2C client object
+ *
+ * This function is the counterpart to cs4270_i2c_probe().
+ */
+static int cs4270_i2c_remove(struct i2c_client *i2c_client)
+{
+	snd_soc_unregister_codec(&i2c_client->dev);
+	kfree(i2c_get_clientdata(i2c_client));
+	return 0;
+}
+
+/*
+ * cs4270_id - I2C device IDs supported by this driver
+ */
+static struct i2c_device_id cs4270_id[] = {
+	{"cs4270", 0},
+	{}
+};
+MODULE_DEVICE_TABLE(i2c, cs4270_id);
+
+/*
  * cs4270_i2c_driver - I2C device identification
  *
  * This structure tells the I2C subsystem how to identify and support a
@@ -903,7 +799,7 @@
  */
 static struct i2c_driver cs4270_i2c_driver = {
 	.driver = {
-		.name = "cs4270",
+		.name = "cs4270-codec",
 		.owner = THIS_MODULE,
 	},
 	.id_table = cs4270_id,
@@ -911,20 +807,6 @@
 	.remove = cs4270_i2c_remove,
 };
 
-/*
- * ASoC codec device structure
- *
- * Assign this variable to the codec_dev field of the machine driver's
- * snd_soc_device structure.
- */
-struct snd_soc_codec_device soc_codec_device_cs4270 = {
-	.probe = 	cs4270_probe,
-	.remove = 	cs4270_remove,
-	.suspend =	cs4270_soc_suspend,
-	.resume =	cs4270_soc_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_device_cs4270);
-
 static int __init cs4270_init(void)
 {
 	pr_info("Cirrus Logic CS4270 ALSA SoC Codec Driver\n");
diff --git a/sound/soc/codecs/cs4270.h b/sound/soc/codecs/cs4270.h
deleted file mode 100644
index adc6cd9..0000000
--- a/sound/soc/codecs/cs4270.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Cirrus Logic CS4270 ALSA SoC Codec Driver
- *
- * Author: Timur Tabi <timur@freescale.com>
- *
- * Copyright 2007 Freescale Semiconductor, Inc.  This file is licensed under
- * the terms of the GNU General Public License version 2.  This program
- * is licensed "as is" without any warranty of any kind, whether express
- * or implied.
- */
-
-#ifndef _CS4270_H
-#define _CS4270_H
-
-/*
- * The ASoC codec DAI structure for the CS4270.  Assign this structure to
- * the .codec_dai field of your machine driver's snd_soc_dai_link structure.
- */
-extern struct snd_soc_dai cs4270_dai;
-
-/*
- * The ASoC codec device structure for the CS4270.  Assign this structure
- * to the .codec_dev field of your machine driver's snd_soc_device
- * structure.
- */
-extern struct snd_soc_codec_device soc_codec_device_cs4270;
-
-#endif
diff --git a/sound/soc/codecs/cs42l51.c b/sound/soc/codecs/cs42l51.c
index dd9b855..cb086ea 100644
--- a/sound/soc/codecs/cs42l51.c
+++ b/sound/soc/codecs/cs42l51.c
@@ -42,15 +42,14 @@
 };
 
 struct cs42l51_private {
+	enum snd_soc_control_type control_type;
+	void *control_data;
 	unsigned int mclk;
 	unsigned int audio_mode;	/* The mode (I2S or left-justified) */
 	enum master_slave_mode func;
-	struct snd_soc_codec codec;
 	u8 reg_cache[CS42L51_NUMREGS];
 };
 
-static struct snd_soc_codec *cs42l51_codec;
-
 #define CS42L51_FORMATS ( \
 		SNDRV_PCM_FMTBIT_S16_LE  | SNDRV_PCM_FMTBIT_S16_BE  | \
 		SNDRV_PCM_FMTBIT_S18_3LE | SNDRV_PCM_FMTBIT_S18_3BE | \
@@ -75,134 +74,6 @@
 	return 0;
 }
 
-static int cs42l51_i2c_probe(struct i2c_client *i2c_client,
-	const struct i2c_device_id *id)
-{
-	struct snd_soc_codec *codec;
-	struct cs42l51_private *cs42l51;
-	int ret = 0;
-	int reg;
-
-	if (cs42l51_codec)
-		return -EBUSY;
-
-	/* Verify that we have a CS42L51 */
-	ret = i2c_smbus_read_byte_data(i2c_client, CS42L51_CHIP_REV_ID);
-	if (ret < 0) {
-		dev_err(&i2c_client->dev, "failed to read I2C\n");
-		goto error;
-	}
-
-	if ((ret != CS42L51_MK_CHIP_REV(CS42L51_CHIP_ID, CS42L51_CHIP_REV_A)) &&
-	    (ret != CS42L51_MK_CHIP_REV(CS42L51_CHIP_ID, CS42L51_CHIP_REV_B))) {
-		dev_err(&i2c_client->dev, "Invalid chip id\n");
-		ret = -ENODEV;
-		goto error;
-	}
-
-	dev_info(&i2c_client->dev, "found device cs42l51 rev %d\n",
-				ret & 7);
-
-	cs42l51 = kzalloc(sizeof(struct cs42l51_private), GFP_KERNEL);
-	if (!cs42l51) {
-		dev_err(&i2c_client->dev, "could not allocate codec\n");
-		return -ENOMEM;
-	}
-	codec = &cs42l51->codec;
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->dev = &i2c_client->dev;
-	codec->name = "CS42L51";
-	codec->owner = THIS_MODULE;
-	codec->dai = &cs42l51_dai;
-	codec->num_dai = 1;
-	snd_soc_codec_set_drvdata(codec, cs42l51);
-
-	codec->control_data = i2c_client;
-	codec->reg_cache = cs42l51->reg_cache;
-	codec->reg_cache_size = CS42L51_NUMREGS;
-	i2c_set_clientdata(i2c_client, codec);
-
-	ret = cs42l51_fill_cache(codec);
-	if (ret < 0) {
-		dev_err(&i2c_client->dev, "failed to fill register cache\n");
-		goto error_alloc;
-	}
-
-	ret = snd_soc_codec_set_cache_io(codec, 8, 8, SND_SOC_I2C);
-	if (ret < 0) {
-		dev_err(&i2c_client->dev, "Failed to set cache I/O: %d\n", ret);
-		goto error_alloc;
-	}
-
-	/*
-	 * DAC configuration
-	 * - Use signal processor
-	 * - auto mute
-	 * - vol changes immediate
-	 * - no de-emphasize
-	 */
-	reg = CS42L51_DAC_CTL_DATA_SEL(1)
-		| CS42L51_DAC_CTL_AMUTE | CS42L51_DAC_CTL_DACSZ(0);
-	ret = snd_soc_write(codec, CS42L51_DAC_CTL, reg);
-	if (ret < 0)
-		goto error_alloc;
-
-	cs42l51_dai.dev = codec->dev;
-	cs42l51_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto error_alloc;
-	}
-
-	ret = snd_soc_register_dai(&cs42l51_dai);
-	if (ret < 0) {
-		dev_err(&i2c_client->dev, "failed to register DAIe\n");
-		goto error_reg;
-	}
-
-	return 0;
-
-error_reg:
-	snd_soc_unregister_codec(codec);
-error_alloc:
-	kfree(cs42l51);
-error:
-	return ret;
-}
-
-static int cs42l51_i2c_remove(struct i2c_client *client)
-{
-	struct cs42l51_private *cs42l51 = i2c_get_clientdata(client);
-	snd_soc_unregister_dai(&cs42l51_dai);
-	snd_soc_unregister_codec(cs42l51_codec);
-	cs42l51_codec = NULL;
-	kfree(cs42l51);
-	return 0;
-}
-
-
-static const struct i2c_device_id cs42l51_id[] = {
-	{"cs42l51", 0},
-	{}
-};
-MODULE_DEVICE_TABLE(i2c, cs42l51_id);
-
-static struct i2c_driver cs42l51_i2c_driver = {
-	.driver = {
-		.name = "CS42L51 I2C",
-		.owner = THIS_MODULE,
-	},
-	.id_table = cs42l51_id,
-	.probe = cs42l51_i2c_probe,
-	.remove = cs42l51_i2c_remove,
-};
-
 static int cs42l51_get_chan_mix(struct snd_kcontrol *kcontrol,
 			struct snd_ctl_elem_value *ucontrol)
 {
@@ -484,51 +355,8 @@
 {
 	struct snd_soc_codec *codec = codec_dai->codec;
 	struct cs42l51_private *cs42l51 = snd_soc_codec_get_drvdata(codec);
-	struct cs42l51_ratios *ratios = NULL;
-	int nr_ratios = 0;
-	unsigned int rates = 0;
-	unsigned int rate_min = -1;
-	unsigned int rate_max = 0;
-	int i;
 
 	cs42l51->mclk = freq;
-
-	switch (cs42l51->func) {
-	case MODE_MASTER:
-		return -EINVAL;
-	case MODE_SLAVE:
-		ratios = slave_ratios;
-		nr_ratios = ARRAY_SIZE(slave_ratios);
-		break;
-	case MODE_SLAVE_AUTO:
-		ratios = slave_auto_ratios;
-		nr_ratios = ARRAY_SIZE(slave_auto_ratios);
-		break;
-	}
-
-	for (i = 0; i < nr_ratios; i++) {
-		unsigned int rate = freq / ratios[i].ratio;
-		rates |= snd_pcm_rate_to_rate_bit(rate);
-		if (rate < rate_min)
-			rate_min = rate;
-		if (rate > rate_max)
-			rate_max = rate;
-	}
-	rates &= ~SNDRV_PCM_RATE_KNOT;
-
-	if (!rates) {
-		dev_err(codec->dev, "could not find a valid sample rate\n");
-		return -EINVAL;
-	}
-
-	codec_dai->playback.rates = rates;
-	codec_dai->playback.rate_min = rate_min;
-	codec_dai->playback.rate_max = rate_max;
-
-	codec_dai->capture.rates = rates;
-	codec_dai->capture.rate_min = rate_min;
-	codec_dai->capture.rate_max = rate_max;
-
 	return 0;
 }
 
@@ -537,8 +365,7 @@
 		struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct cs42l51_private *cs42l51 = snd_soc_codec_get_drvdata(codec);
 	int ret;
 	unsigned int i;
@@ -670,8 +497,8 @@
 	.digital_mute   = cs42l51_dai_mute,
 };
 
-struct snd_soc_dai cs42l51_dai = {
-	.name = "CS42L51 HiFi",
+static struct snd_soc_dai_driver cs42l51_dai = {
+	.name = "cs42l51-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -688,30 +515,39 @@
 	},
 	.ops = &cs42l51_dai_ops,
 };
-EXPORT_SYMBOL_GPL(cs42l51_dai);
 
-
-static int cs42l51_probe(struct platform_device *pdev)
+static int cs42l51_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
+	struct cs42l51_private *cs42l51 = snd_soc_codec_get_drvdata(codec);
+	int ret, reg;
 
-	if (!cs42l51_codec) {
-		dev_err(&pdev->dev, "CS42L51 codec not yet registered\n");
-		return -EINVAL;
-	}
+	codec->control_data = cs42l51->control_data;
 
-	socdev->card->codec = cs42l51_codec;
-	codec = socdev->card->codec;
-
-	/* Register PCMs */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
+	ret = cs42l51_fill_cache(codec);
 	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to create PCMs\n");
+		dev_err(codec->dev, "failed to fill register cache\n");
 		return ret;
 	}
 
+	ret = snd_soc_codec_set_cache_io(codec, 8, 8, cs42l51->control_type);
+	if (ret < 0) {
+		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
+		return ret;
+	}
+
+	/*
+	 * DAC configuration
+	 * - Use signal processor
+	 * - auto mute
+	 * - vol changes immediate
+	 * - no de-emphasize
+	 */
+	reg = CS42L51_DAC_CTL_DATA_SEL(1)
+		| CS42L51_DAC_CTL_AMUTE | CS42L51_DAC_CTL_DACSZ(0);
+	ret = snd_soc_write(codec, CS42L51_DAC_CTL, reg);
+	if (ret < 0)
+		return ret;
+
 	snd_soc_add_controls(codec, cs42l51_snd_controls,
 		ARRAY_SIZE(cs42l51_snd_controls));
 	snd_soc_dapm_new_controls(codec, cs42l51_dapm_widgets,
@@ -722,22 +558,77 @@
 	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_device_cs42l51 = {
+	.probe =	cs42l51_probe,
+	.reg_cache_size = CS42L51_NUMREGS,
+	.reg_word_size = sizeof(u8),
+};
 
-static int cs42l51_remove(struct platform_device *pdev)
+static int cs42l51_i2c_probe(struct i2c_client *i2c_client,
+	const struct i2c_device_id *id)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
+	struct cs42l51_private *cs42l51;
+	int ret;
 
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
+	/* Verify that we have a CS42L51 */
+	ret = i2c_smbus_read_byte_data(i2c_client, CS42L51_CHIP_REV_ID);
+	if (ret < 0) {
+		dev_err(&i2c_client->dev, "failed to read I2C\n");
+		goto error;
+	}
 
+	if ((ret != CS42L51_MK_CHIP_REV(CS42L51_CHIP_ID, CS42L51_CHIP_REV_A)) &&
+	    (ret != CS42L51_MK_CHIP_REV(CS42L51_CHIP_ID, CS42L51_CHIP_REV_B))) {
+		dev_err(&i2c_client->dev, "Invalid chip id\n");
+		ret = -ENODEV;
+		goto error;
+	}
+
+	dev_info(&i2c_client->dev, "found device cs42l51 rev %d\n",
+				ret & 7);
+
+	cs42l51 = kzalloc(sizeof(struct cs42l51_private), GFP_KERNEL);
+	if (!cs42l51) {
+		dev_err(&i2c_client->dev, "could not allocate codec\n");
+		return -ENOMEM;
+	}
+
+	i2c_set_clientdata(i2c_client, cs42l51);
+	cs42l51->control_data = i2c_client;
+	cs42l51->control_type = SND_SOC_I2C;
+
+	ret =  snd_soc_register_codec(&i2c_client->dev,
+			&soc_codec_device_cs42l51, &cs42l51_dai, 1);
+	if (ret < 0)
+		kfree(cs42l51);
+error:
+	return ret;
+}
+
+static int cs42l51_i2c_remove(struct i2c_client *client)
+{
+	struct cs42l51_private *cs42l51 = i2c_get_clientdata(client);
+
+	snd_soc_unregister_codec(&client->dev);
+	kfree(cs42l51);
 	return 0;
 }
 
-struct snd_soc_codec_device soc_codec_device_cs42l51 = {
-	.probe =	cs42l51_probe,
-	.remove =	cs42l51_remove
+static const struct i2c_device_id cs42l51_id[] = {
+	{"cs42l51", 0},
+	{}
 };
-EXPORT_SYMBOL_GPL(soc_codec_device_cs42l51);
+MODULE_DEVICE_TABLE(i2c, cs42l51_id);
+
+static struct i2c_driver cs42l51_i2c_driver = {
+	.driver = {
+		.name = "cs42l51-codec",
+		.owner = THIS_MODULE,
+	},
+	.id_table = cs42l51_id,
+	.probe = cs42l51_i2c_probe,
+	.remove = cs42l51_i2c_remove,
+};
 
 static int __init cs42l51_init(void)
 {
@@ -758,6 +649,6 @@
 }
 module_exit(cs42l51_exit);
 
-MODULE_AUTHOR("Arnaud Patard <apatard@mandriva.com>");
+MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>");
 MODULE_DESCRIPTION("Cirrus Logic CS42L51 ALSA SoC Codec Driver");
 MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/cs42l51.h b/sound/soc/codecs/cs42l51.h
index 8f0bd97..2beeb17 100644
--- a/sound/soc/codecs/cs42l51.h
+++ b/sound/soc/codecs/cs42l51.h
@@ -158,6 +158,4 @@
 #define CS42L51_LASTREG		0x20
 #define CS42L51_NUMREGS		(CS42L51_LASTREG - CS42L51_FIRSTREG + 1)
 
-extern struct snd_soc_dai cs42l51_dai;
-extern struct snd_soc_codec_device soc_codec_device_cs42l51;
 #endif
diff --git a/sound/soc/codecs/cx20442.c b/sound/soc/codecs/cx20442.c
index f07a415..e8d27c8 100644
--- a/sound/soc/codecs/cx20442.c
+++ b/sound/soc/codecs/cx20442.c
@@ -24,7 +24,8 @@
 
 
 struct cx20442_priv {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
+	void *control_data;
 	u8 reg_cache[1];
 };
 
@@ -102,7 +103,7 @@
 {
 	u8 *reg_cache = codec->reg_cache;
 
-	if (reg >= codec->reg_cache_size)
+	if (reg >= codec->driver->reg_cache_size)
 		return -EINVAL;
 
 	return reg_cache[reg];
@@ -164,16 +165,17 @@
 static int cx20442_write(struct snd_soc_codec *codec, unsigned int reg,
 							unsigned int value)
 {
+	struct cx20442_priv *cx20442 = snd_soc_codec_get_drvdata(codec);
 	u8 *reg_cache = codec->reg_cache;
 	int vls, vsp, old, len;
 	char buf[18];
 
-	if (reg >= codec->reg_cache_size)
+	if (reg >= codec->driver->reg_cache_size)
 		return -EINVAL;
 
 	/* hw_write and control_data pointers required for talking to the modem
 	 * are expected to be set by the line discipline initialization code */
-	if (!codec->hw_write || !codec->control_data)
+	if (!codec->hw_write || !cx20442->control_data)
 		return -EIO;
 
 	old = reg_cache[reg];
@@ -202,17 +204,13 @@
 		return -ENOMEM;
 
 	dev_dbg(codec->dev, "%s: %s\n", __func__, buf);
-	if (codec->hw_write(codec->control_data, buf, len) != len)
+	if (codec->hw_write(cx20442->control_data, buf, len) != len)
 		return -EIO;
 
 	return 0;
 }
 
 
-/* Moved up here as line discipline referres it during initialization */
-static struct snd_soc_codec *cx20442_codec;
-
-
 /*
  * Line discpline related code
  *
@@ -228,15 +226,15 @@
 /* Line discipline .open() */
 static int v253_open(struct tty_struct *tty)
 {
-	struct snd_soc_codec *codec = cx20442_codec;
 	int ret, len = strlen(v253_init);
 
 	/* Doesn't make sense without write callback */
 	if (!tty->ops->write)
 		return -EINVAL;
 
-	/* Pass the codec structure address for use by other ldisc callbacks */
-	tty->disc_data = codec;
+	/* Won't work if no codec pointer has been passed by a card driver */
+	if (!tty->disc_data)
+		return -ENODEV;
 
 	if (tty->ops->write(tty, v253_init, len) != len) {
 		ret = -EIO;
@@ -253,15 +251,18 @@
 static void v253_close(struct tty_struct *tty)
 {
 	struct snd_soc_codec *codec = tty->disc_data;
+	struct cx20442_priv *cx20442;
 
 	tty->disc_data = NULL;
 
 	if (!codec)
 		return;
 
+	cx20442 = snd_soc_codec_get_drvdata(codec);
+
 	/* Prevent the codec driver from further accessing the modem */
 	codec->hw_write = NULL;
-	codec->control_data = NULL;
+	cx20442->control_data = NULL;
 	codec->pop_time = 0;
 }
 
@@ -277,15 +278,18 @@
 				const unsigned char *cp, char *fp, int count)
 {
 	struct snd_soc_codec *codec = tty->disc_data;
+	struct cx20442_priv *cx20442;
 
 	if (!codec)
 		return;
 
-	if (!codec->control_data) {
+	cx20442 = snd_soc_codec_get_drvdata(codec);
+
+	if (!cx20442->control_data) {
 		/* First modem response, complete setup procedure */
 
 		/* Set up codec driver access to modem controls */
-		codec->control_data = tty;
+		cx20442->control_data = tty;
 		codec->hw_write = (hw_write_t)tty->ops->write;
 		codec->pop_time = 1;
 	}
@@ -313,8 +317,8 @@
  * Codec DAI
  */
 
-struct snd_soc_dai cx20442_dai = {
-	.name = "CX20442",
+static struct snd_soc_dai_driver cx20442_dai = {
+	.name = "cx20442-voice",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -330,142 +334,63 @@
 		.formats = SNDRV_PCM_FMTBIT_S16_LE,
 	},
 };
-EXPORT_SYMBOL_GPL(cx20442_dai);
 
-static int cx20442_codec_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret;
-
-	if (!cx20442_codec) {
-		dev_err(&pdev->dev, "cx20442 not yet discovered\n");
-		return -ENODEV;
-	}
-	codec = cx20442_codec;
-
-	socdev->card->codec = codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to create pcms\n");
-		goto pcm_err;
-	}
-
-	cx20442_add_widgets(codec);
-
-pcm_err:
-	return ret;
-}
-
-/* power down chip */
-static int cx20442_codec_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device cx20442_codec_dev = {
-	.probe = 	cx20442_codec_probe,
-	.remove = 	cx20442_codec_remove,
-};
-EXPORT_SYMBOL_GPL(cx20442_codec_dev);
-
-static int cx20442_register(struct cx20442_priv *cx20442)
-{
-	struct snd_soc_codec *codec = &cx20442->codec;
-	int ret;
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->name = "CX20442";
-	codec->owner = THIS_MODULE;
-	snd_soc_codec_set_drvdata(codec, cx20442);
-
-	codec->dai = &cx20442_dai;
-	codec->num_dai = 1;
-
-	codec->reg_cache = &cx20442->reg_cache;
-	codec->reg_cache_size = ARRAY_SIZE(cx20442->reg_cache);
-	codec->read = cx20442_read_reg_cache;
-	codec->write = cx20442_write;
-
-	codec->bias_level = SND_SOC_BIAS_OFF;
-
-	cx20442_dai.dev = codec->dev;
-
-	cx20442_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err;
-	}
-
-	ret = snd_soc_register_dai(&cx20442_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
-
-	return 0;
-
-err_codec:
-	snd_soc_unregister_codec(codec);
-err:
-	cx20442_codec = NULL;
-	kfree(cx20442);
-	return ret;
-}
-
-static void cx20442_unregister(struct cx20442_priv *cx20442)
-{
-	snd_soc_unregister_dai(&cx20442_dai);
-	snd_soc_unregister_codec(&cx20442->codec);
-
-	cx20442_codec = NULL;
-	kfree(cx20442);
-}
-
-static int cx20442_platform_probe(struct platform_device *pdev)
+static int cx20442_codec_probe(struct snd_soc_codec *codec)
 {
 	struct cx20442_priv *cx20442;
-	struct snd_soc_codec *codec;
 
 	cx20442 = kzalloc(sizeof(struct cx20442_priv), GFP_KERNEL);
 	if (cx20442 == NULL)
 		return -ENOMEM;
+	snd_soc_codec_set_drvdata(codec, cx20442);
 
-	codec = &cx20442->codec;
+	cx20442_add_widgets(codec);
 
-	codec->control_data = NULL;
+	cx20442->control_data = NULL;
 	codec->hw_write = NULL;
 	codec->pop_time = 0;
 
-	codec->dev = &pdev->dev;
-	platform_set_drvdata(pdev, cx20442);
+	return 0;
+}
 
-	return cx20442_register(cx20442);
+/* power down chip */
+static int cx20442_codec_remove(struct snd_soc_codec *codec)
+{
+	struct cx20442_priv *cx20442 = snd_soc_codec_get_drvdata(codec);
+
+	if (cx20442->control_data) {
+			struct tty_struct *tty = cx20442->control_data;
+			tty_hangup(tty);
+	}
+
+	kfree(cx20442);
+	return 0;
+}
+
+static struct snd_soc_codec_driver cx20442_codec_dev = {
+	.probe = 	cx20442_codec_probe,
+	.remove = 	cx20442_codec_remove,
+	.reg_cache_size = 1,
+	.reg_word_size = sizeof(u8),
+	.read = cx20442_read_reg_cache,
+	.write = cx20442_write,
+};
+
+static int cx20442_platform_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_codec(&pdev->dev,
+			&cx20442_codec_dev, &cx20442_dai, 1);
 }
 
 static int __exit cx20442_platform_remove(struct platform_device *pdev)
 {
-	struct cx20442_priv *cx20442 = platform_get_drvdata(pdev);
-
-	cx20442_unregister(cx20442);
+	snd_soc_unregister_codec(&pdev->dev);
 	return 0;
 }
 
 static struct platform_driver cx20442_platform_driver = {
 	.driver = {
-		.name = "cx20442",
+		.name = "cx20442-codec",
 		.owner = THIS_MODULE,
 		},
 	.probe = cx20442_platform_probe,
@@ -487,4 +412,4 @@
 MODULE_DESCRIPTION("ASoC CX20442-11 voice modem codec driver");
 MODULE_AUTHOR("Janusz Krzysztofik");
 MODULE_LICENSE("GPL");
-MODULE_ALIAS("platform:cx20442");
+MODULE_ALIAS("platform:cx20442-codec");
diff --git a/sound/soc/codecs/cx20442.h b/sound/soc/codecs/cx20442.h
index 688a5eb..c7a7c79 100644
--- a/sound/soc/codecs/cx20442.h
+++ b/sound/soc/codecs/cx20442.h
@@ -13,8 +13,6 @@
 #ifndef _CX20442_CODEC_H
 #define _CX20442_CODEC_H
 
-extern struct snd_soc_dai cx20442_dai;
-extern struct snd_soc_codec_device cx20442_codec_dev;
 extern struct tty_ldisc_ops v253_ops;
 
 #endif
diff --git a/sound/soc/codecs/da7210.c b/sound/soc/codecs/da7210.c
index 3c51d6a..58bb9b9 100644
--- a/sound/soc/codecs/da7210.c
+++ b/sound/soc/codecs/da7210.c
@@ -25,8 +25,6 @@
 #include <sound/initval.h>
 #include <sound/tlv.h>
 
-#include "da7210.h"
-
 /* DA7210 register space */
 #define DA7210_STATUS			0x02
 #define DA7210_STARTUP1			0x03
@@ -162,11 +160,10 @@
 
 /* Codec private data */
 struct da7210_priv {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
+	void *control_data;
 };
 
-static struct snd_soc_codec *da7210_codec;
-
 /*
  * Register cache
  */
@@ -209,12 +206,12 @@
 	u8 *cache = codec->reg_cache;
 	u8 data[2];
 
-	BUG_ON(codec->volatile_register);
+	BUG_ON(codec->driver->volatile_register);
 
 	data[0] = reg & 0xff;
 	data[1] = value & 0xff;
 
-	if (reg >= codec->reg_cache_size)
+	if (reg >= codec->driver->reg_cache_size)
 		return -EIO;
 
 	if (2 != codec->hw_write(codec->control_data, data, 2))
@@ -267,8 +264,7 @@
 			    struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	u32 dai_cfg1;
 	u32 hpf_reg, hpf_mask, hpf_value;
 	u32 fs, bypass;
@@ -430,9 +426,8 @@
 	.set_fmt	= da7210_set_dai_fmt,
 };
 
-struct snd_soc_dai da7210_dai = {
-	.name = "DA7210 IIS",
-	.id = 0,
+static struct snd_soc_dai_driver da7210_dai = {
+	.name = "da7210-hifi",
 	/* playback capabilities */
 	.playback = {
 		.stream_name = "Playback",
@@ -452,55 +447,15 @@
 	.ops = &da7210_dai_ops,
 	.symmetric_rates = 1,
 };
-EXPORT_SYMBOL_GPL(da7210_dai);
 
-/*
- * Initialize the DA7210 driver
- * register the mixer and dsp interfaces with the kernel
- */
-static int da7210_init(struct da7210_priv *da7210)
+static int da7210_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = &da7210->codec;
-	int ret = 0;
+	struct da7210_priv *da7210 = snd_soc_codec_get_drvdata(codec);
 
-	if (da7210_codec) {
-		dev_err(codec->dev, "Another da7210 is registered\n");
-		return -EINVAL;
-	}
+	dev_info(codec->dev, "DA7210 Audio Codec %s\n", DA7210_VERSION);
 
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, da7210);
-	codec->name		= "DA7210";
-	codec->owner		= THIS_MODULE;
-	codec->read		= da7210_read;
-	codec->write		= da7210_write;
-	codec->dai		= &da7210_dai;
-	codec->num_dai		= 1;
+	codec->control_data	= da7210->control_data;
 	codec->hw_write		= (hw_write_t)i2c_master_send;
-	codec->reg_cache_size	= ARRAY_SIZE(da7210_reg);
-	codec->reg_cache	= kmemdup(da7210_reg,
-					  sizeof(da7210_reg), GFP_KERNEL);
-
-	if (!codec->reg_cache)
-		return -ENOMEM;
-
-	da7210_dai.dev = codec->dev;
-	da7210_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret) {
-		dev_err(codec->dev, "Failed to register CODEC: %d\n", ret);
-		goto init_err;
-	}
-
-	ret = snd_soc_register_dai(&da7210_dai);
-	if (ret) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		goto codec_err;
-	}
 
 	/* FIXME
 	 *
@@ -583,54 +538,50 @@
 	/* Activate all enabled subsystem */
 	da7210_write(codec, DA7210_STARTUP1, DA7210_SC_MST_EN);
 
-	return ret;
+	snd_soc_add_controls(codec, da7210_snd_controls,
+			     ARRAY_SIZE(da7210_snd_controls));
 
-codec_err:
-	snd_soc_unregister_codec(codec);
-init_err:
-	kfree(codec->reg_cache);
-	codec->reg_cache = NULL;
+	dev_info(codec->dev, "DA7210 Audio Codec %s\n", DA7210_VERSION);
 
-	return ret;
-
+	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_da7210 = {
+	.probe			= da7210_probe,
+	.read			= da7210_read,
+	.write			= da7210_write,
+	.reg_cache_size		= ARRAY_SIZE(da7210_reg),
+	.reg_word_size		= sizeof(u8),
+	.reg_cache_default	= da7210_reg,
+};
+
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 static int __devinit da7210_i2c_probe(struct i2c_client *i2c,
 			   	      const struct i2c_device_id *id)
 {
 	struct da7210_priv *da7210;
-	struct snd_soc_codec *codec;
 	int ret;
 
 	da7210 = kzalloc(sizeof(struct da7210_priv), GFP_KERNEL);
 	if (!da7210)
 		return -ENOMEM;
 
-	codec = &da7210->codec;
-	codec->dev = &i2c->dev;
-
 	i2c_set_clientdata(i2c, da7210);
-	codec->control_data = i2c;
+	da7210->control_data = i2c;
+	da7210->control_type = SND_SOC_I2C;
 
-	ret = da7210_init(da7210);
-	if (ret < 0) {
-		pr_err("Failed to initialise da7210 audio codec\n");
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_da7210, &da7210_dai, 1);
+	if (ret < 0)
 		kfree(da7210);
-	}
 
 	return ret;
 }
 
 static int __devexit da7210_i2c_remove(struct i2c_client *client)
 {
-	struct da7210_priv *da7210 = i2c_get_clientdata(client);
-
-	snd_soc_unregister_dai(&da7210_dai);
-	kfree(da7210->codec.reg_cache);
-	kfree(da7210);
-	da7210_codec = NULL;
-
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -643,59 +594,15 @@
 /* I2C codec control layer */
 static struct i2c_driver da7210_i2c_driver = {
 	.driver = {
-		.name = "DA7210 I2C Codec",
+		.name = "da7210-codec",
 		.owner = THIS_MODULE,
 	},
-	.probe = da7210_i2c_probe,
-	.remove =  __devexit_p(da7210_i2c_remove),
-	.id_table = da7210_i2c_id,
+	.probe		= da7210_i2c_probe,
+	.remove		= __devexit_p(da7210_i2c_remove),
+	.id_table	= da7210_i2c_id,
 };
 #endif
 
-static int da7210_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret;
-
-	if (!da7210_codec) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = da7210_codec;
-	codec = da7210_codec;
-
-	/* Register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0)
-		goto pcm_err;
-
-	snd_soc_add_controls(da7210_codec, da7210_snd_controls,
-			     ARRAY_SIZE(da7210_snd_controls));
-
-	dev_info(&pdev->dev, "DA7210 Audio Codec %s\n", DA7210_VERSION);
-
-pcm_err:
-	return ret;
-}
-
-static int da7210_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_da7210 = {
-	.probe =	da7210_probe,
-	.remove =	da7210_remove,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_da7210);
-
 static int __init da7210_modinit(void)
 {
 	int ret = 0;
diff --git a/sound/soc/codecs/da7210.h b/sound/soc/codecs/da7210.h
deleted file mode 100644
index 390d621..0000000
--- a/sound/soc/codecs/da7210.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * da7210.h  --  audio driver for da7210
- *
- * Copyright (c) 2009 Dialog Semiconductor
- * Written by David Chen <Dajun.chen@diasemi.com>
- *
- * Copyright (C) 2009 Renesas Solutions Corp.
- * Cleanups by Kuninori Morimoto <morimoto.kuninori@renesas.com>
- *
- * 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;  either version 2 of the  License, or (at your
- * option) any later version.
- *
- */
-
-#ifndef _DA7210_H
-#define _DA7210_H
-
-extern struct snd_soc_dai da7210_dai;
-extern struct snd_soc_codec_device soc_codec_dev_da7210;
-
-#endif
-
diff --git a/sound/soc/codecs/jz4740.c b/sound/soc/codecs/jz4740.c
index 66557de..16253ec 100644
--- a/sound/soc/codecs/jz4740.c
+++ b/sound/soc/codecs/jz4740.c
@@ -74,29 +74,22 @@
 struct jz4740_codec {
 	void __iomem *base;
 	struct resource *mem;
-
-	uint32_t reg_cache[2];
-	struct snd_soc_codec codec;
 };
 
-static inline struct jz4740_codec *codec_to_jz4740(struct snd_soc_codec *codec)
-{
-	return container_of(codec, struct jz4740_codec, codec);
-}
-
 static unsigned int jz4740_codec_read(struct snd_soc_codec *codec,
 	unsigned int reg)
 {
-	struct jz4740_codec *jz4740_codec = codec_to_jz4740(codec);
+	struct jz4740_codec *jz4740_codec = snd_soc_codec_get_drvdata(codec);
 	return readl(jz4740_codec->base + (reg << 2));
 }
 
 static int jz4740_codec_write(struct snd_soc_codec *codec, unsigned int reg,
 	unsigned int val)
 {
-	struct jz4740_codec *jz4740_codec = codec_to_jz4740(codec);
+	struct jz4740_codec *jz4740_codec = snd_soc_codec_get_drvdata(codec);
+	u32 *cache = codec->reg_cache;
 
-	jz4740_codec->reg_cache[reg] = val;
+	cache[reg] = val;
 	writel(val, jz4740_codec->base + (reg << 2));
 
 	return 0;
@@ -172,8 +165,7 @@
 {
 	uint32_t val;
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec =rtd->codec;
 
 	switch (params_rate(params)) {
 	case 8000:
@@ -219,8 +211,8 @@
 	.hw_params = jz4740_codec_hw_params,
 };
 
-struct snd_soc_dai jz4740_codec_dai = {
-	.name = "jz4740",
+static struct snd_soc_dai_driver jz4740_codec_dai = {
+	.name = "jz4740-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 2,
@@ -238,7 +230,6 @@
 	.ops = &jz4740_codec_dai_ops,
 	.symmetric_rates = 1,
 };
-EXPORT_SYMBOL_GPL(jz4740_codec_dai);
 
 static void jz4740_codec_wakeup(struct snd_soc_codec *codec)
 {
@@ -302,23 +293,10 @@
 	return 0;
 }
 
-static struct snd_soc_codec *jz4740_codec_codec;
-
-static int jz4740_codec_dev_probe(struct platform_device *pdev)
+static int jz4740_codec_dev_probe(struct snd_soc_codec *codec)
 {
-	int ret;
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = jz4740_codec_codec;
-
-	BUG_ON(!codec);
-
-	socdev->card->codec = codec;
-
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret) {
-		dev_err(&pdev->dev, "Failed to create pcms: %d\n", ret);
-		return ret;
-	}
+	snd_soc_update_bits(codec, JZ4740_REG_CODEC_1,
+			JZ4740_CODEC_1_SW2_ENABLE, JZ4740_CODEC_1_SW2_ENABLE);
 
 	snd_soc_add_controls(codec, jz4740_codec_controls,
 		ARRAY_SIZE(jz4740_codec_controls));
@@ -331,34 +309,27 @@
 
 	snd_soc_dapm_new_widgets(codec);
 
+	jz4740_codec_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
+
 	return 0;
 }
 
-static int jz4740_codec_dev_remove(struct platform_device *pdev)
+static int jz4740_codec_dev_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
+	jz4740_codec_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
 	return 0;
 }
 
 #ifdef CONFIG_PM_SLEEP
 
-static int jz4740_codec_suspend(struct platform_device *pdev, pm_message_t state)
+static int jz4740_codec_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	return jz4740_codec_set_bias_level(codec, SND_SOC_BIAS_OFF);
 }
 
-static int jz4740_codec_resume(struct platform_device *pdev)
+static int jz4740_codec_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	return jz4740_codec_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 }
 
@@ -367,19 +338,23 @@
 #define jz4740_codec_resume NULL
 #endif
 
-struct snd_soc_codec_device soc_codec_dev_jz4740_codec = {
+static struct snd_soc_codec_driver soc_codec_dev_jz4740_codec = {
 	.probe = jz4740_codec_dev_probe,
 	.remove = jz4740_codec_dev_remove,
 	.suspend = jz4740_codec_suspend,
 	.resume = jz4740_codec_resume,
+	.read = jz4740_codec_read,
+	.write = jz4740_codec_write,
+	.set_bias_level = jz4740_codec_set_bias_level,
+	.reg_cache_default	= jz4740_codec_regs,
+	.reg_word_size = sizeof(u32),
+	.reg_cache_size	= 2,
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_jz4740_codec);
 
 static int __devinit jz4740_codec_probe(struct platform_device *pdev)
 {
 	int ret;
 	struct jz4740_codec *jz4740_codec;
-	struct snd_soc_codec *codec;
 	struct resource *mem;
 
 	jz4740_codec = kzalloc(sizeof(*jz4740_codec), GFP_KERNEL);
@@ -408,55 +383,17 @@
 	}
 	jz4740_codec->mem = mem;
 
-	jz4740_codec_dai.dev = &pdev->dev;
-
-	codec = &jz4740_codec->codec;
-
-	codec->dev		= &pdev->dev;
-	codec->name		= "jz4740";
-	codec->owner		= THIS_MODULE;
-
-	codec->read		= jz4740_codec_read;
-	codec->write		= jz4740_codec_write;
-	codec->set_bias_level	= jz4740_codec_set_bias_level;
-	codec->bias_level	= SND_SOC_BIAS_OFF;
-
-	codec->dai		= &jz4740_codec_dai;
-	codec->num_dai		= 1;
-
-	codec->reg_cache	= jz4740_codec->reg_cache;
-	codec->reg_cache_size	= 2;
-	memcpy(codec->reg_cache, jz4740_codec_regs, sizeof(jz4740_codec_regs));
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	jz4740_codec_codec = codec;
-
-	snd_soc_update_bits(codec, JZ4740_REG_CODEC_1,
-			JZ4740_CODEC_1_SW2_ENABLE, JZ4740_CODEC_1_SW2_ENABLE);
-
 	platform_set_drvdata(pdev, jz4740_codec);
 
-	ret = snd_soc_register_codec(codec);
+	ret = snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_jz4740_codec, &jz4740_codec_dai, 1);
 	if (ret) {
 		dev_err(&pdev->dev, "Failed to register codec\n");
 		goto err_iounmap;
 	}
 
-	ret = snd_soc_register_dai(&jz4740_codec_dai);
-	if (ret) {
-		dev_err(&pdev->dev, "Failed to register codec dai\n");
-		goto err_unregister_codec;
-	}
-
-	jz4740_codec_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
 	return 0;
 
-err_unregister_codec:
-	snd_soc_unregister_codec(codec);
 err_iounmap:
 	iounmap(jz4740_codec->base);
 err_release_mem_region:
@@ -472,8 +409,7 @@
 	struct jz4740_codec *jz4740_codec = platform_get_drvdata(pdev);
 	struct resource *mem = jz4740_codec->mem;
 
-	snd_soc_unregister_dai(&jz4740_codec_dai);
-	snd_soc_unregister_codec(&jz4740_codec->codec);
+	snd_soc_unregister_codec(&pdev->dev);
 
 	iounmap(jz4740_codec->base);
 	release_mem_region(mem->start, resource_size(mem));
diff --git a/sound/soc/codecs/jz4740.h b/sound/soc/codecs/jz4740.h
deleted file mode 100644
index b5a0691..0000000
--- a/sound/soc/codecs/jz4740.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.de>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- *  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.,
- *  675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#ifndef __SND_SOC_CODECS_JZ4740_CODEC_H__
-#define __SND_SOC_CODECS_JZ4740_CODEC_H__
-
-extern struct snd_soc_dai jz4740_codec_dai;
-extern struct snd_soc_codec_device soc_codec_dev_jz4740_codec;
-
-#endif
diff --git a/sound/soc/codecs/pcm3008.c b/sound/soc/codecs/pcm3008.c
index 5a5f187..bd8f26e 100644
--- a/sound/soc/codecs/pcm3008.c
+++ b/sound/soc/codecs/pcm3008.c
@@ -32,8 +32,8 @@
 #define PCM3008_RATES (SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |	\
 		       SNDRV_PCM_RATE_48000)
 
-struct snd_soc_dai pcm3008_dai = {
-	.name = "PCM3008 HiFi",
+static struct snd_soc_dai_driver pcm3008_dai = {
+	.name = "pcm3008-hifi",
 	.playback = {
 		.stream_name = "PCM3008 Playback",
 		.channels_min = 1,
@@ -49,7 +49,6 @@
 		.formats = SNDRV_PCM_FMTBIT_S16_LE,
 	},
 };
-EXPORT_SYMBOL_GPL(pcm3008_dai);
 
 static void pcm3008_gpio_free(struct pcm3008_setup_data *setup)
 {
@@ -59,38 +58,13 @@
 	gpio_free(setup->pdda_pin);
 }
 
-static int pcm3008_soc_probe(struct platform_device *pdev)
+static int pcm3008_soc_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	struct pcm3008_setup_data *setup = socdev->codec_data;
+	struct pcm3008_setup_data *setup = codec->dev->platform_data;
 	int ret = 0;
 
 	printk(KERN_INFO "PCM3008 SoC Audio Codec %s\n", PCM3008_VERSION);
 
-	socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (!socdev->card->codec)
-		return -ENOMEM;
-
-	codec = socdev->card->codec;
-	mutex_init(&codec->mutex);
-
-	codec->name = "PCM3008";
-	codec->owner = THIS_MODULE;
-	codec->dai = &pcm3008_dai;
-	codec->num_dai = 1;
-	codec->write = NULL;
-	codec->read = NULL;
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	/* Register PCMs. */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "pcm3008: failed to create pcms\n");
-		goto pcm_err;
-	}
-
 	/* DEM1  DEM0  DE-EMPHASIS_MODE
 	 * Low   Low   De-emphasis 44.1 kHz ON
 	 * Low   High  De-emphasis OFF
@@ -130,33 +104,22 @@
 
 gpio_err:
 	pcm3008_gpio_free(setup);
-pcm_err:
-	kfree(socdev->card->codec);
 
 	return ret;
 }
 
-static int pcm3008_soc_remove(struct platform_device *pdev)
+static int pcm3008_soc_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-	struct pcm3008_setup_data *setup = socdev->codec_data;
-
-	if (!codec)
-		return 0;
+	struct pcm3008_setup_data *setup = codec->dev->platform_data;
 
 	pcm3008_gpio_free(setup);
-	snd_soc_free_pcms(socdev);
-	kfree(socdev->card->codec);
-
 	return 0;
 }
 
 #ifdef CONFIG_PM
-static int pcm3008_soc_suspend(struct platform_device *pdev, pm_message_t msg)
+static int pcm3008_soc_suspend(struct snd_soc_codec *codec, pm_message_t msg)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct pcm3008_setup_data *setup = socdev->codec_data;
+	struct pcm3008_setup_data *setup = codec->dev->platform_data;
 
 	gpio_set_value(setup->pdad_pin, 0);
 	gpio_set_value(setup->pdda_pin, 0);
@@ -164,10 +127,9 @@
 	return 0;
 }
 
-static int pcm3008_soc_resume(struct platform_device *pdev)
+static int pcm3008_soc_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct pcm3008_setup_data *setup = socdev->codec_data;
+	struct pcm3008_setup_data *setup = codec->dev->platform_data;
 
 	gpio_set_value(setup->pdad_pin, 1);
 	gpio_set_value(setup->pdda_pin, 1);
@@ -179,23 +141,45 @@
 #define pcm3008_soc_resume NULL
 #endif
 
-struct snd_soc_codec_device soc_codec_dev_pcm3008 = {
+static struct snd_soc_codec_driver soc_codec_dev_pcm3008 = {
 	.probe = 	pcm3008_soc_probe,
 	.remove = 	pcm3008_soc_remove,
 	.suspend =	pcm3008_soc_suspend,
 	.resume =	pcm3008_soc_resume,
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_pcm3008);
 
-static int __init pcm3008_init(void)
+static int __devinit pcm3008_codec_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_dai(&pcm3008_dai);
+	return snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_pcm3008, &pcm3008_dai, 1);
 }
-module_init(pcm3008_init);
+
+static int __devexit pcm3008_codec_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_codec(&pdev->dev);
+	return 0;
+}
+
+MODULE_ALIAS("platform:pcm3008-codec");
+
+static struct platform_driver pcm3008_codec_driver = {
+	.probe		= pcm3008_codec_probe,
+	.remove		= __devexit_p(pcm3008_codec_remove),
+	.driver		= {
+		.name	= "pcm3008-codec",
+		.owner	= THIS_MODULE,
+	},
+};
+
+static int __init pcm3008_modinit(void)
+{
+	return platform_driver_register(&pcm3008_codec_driver);
+}
+module_init(pcm3008_modinit);
 
 static void __exit pcm3008_exit(void)
 {
-	snd_soc_unregister_dai(&pcm3008_dai);
+	platform_driver_unregister(&pcm3008_codec_driver);
 }
 module_exit(pcm3008_exit);
 
diff --git a/sound/soc/codecs/pcm3008.h b/sound/soc/codecs/pcm3008.h
index d04e87d..7e5489a 100644
--- a/sound/soc/codecs/pcm3008.h
+++ b/sound/soc/codecs/pcm3008.h
@@ -19,7 +19,4 @@
 	unsigned pdda_pin;
 };
 
-extern struct snd_soc_codec_device soc_codec_dev_pcm3008;
-extern struct snd_soc_dai pcm3008_dai;
-
 #endif
diff --git a/sound/soc/codecs/spdif_transciever.c b/sound/soc/codecs/spdif_transciever.c
index 9119836..4c32b54 100644
--- a/sound/soc/codecs/spdif_transciever.c
+++ b/sound/soc/codecs/spdif_transciever.c
@@ -21,57 +21,16 @@
 #include <sound/pcm.h>
 #include <sound/initval.h>
 
-#include "spdif_transciever.h"
-
 MODULE_LICENSE("GPL");
 
 #define STUB_RATES	SNDRV_PCM_RATE_8000_96000
 #define STUB_FORMATS	SNDRV_PCM_FMTBIT_S16_LE
 
-static struct snd_soc_codec *spdif_dit_codec;
 
-static int spdif_dit_codec_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret;
+static struct snd_soc_codec_driver soc_codec_spdif_dit;
 
-	if (spdif_dit_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = spdif_dit_codec;
-	codec = spdif_dit_codec;
-
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto err_create_pcms;
-	}
-
-	return 0;
-
-err_create_pcms:
-	return ret;
-}
-
-static int spdif_dit_codec_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_spdif_dit = {
-	.probe		= spdif_dit_codec_probe,
-	.remove		= spdif_dit_codec_remove,
-}; EXPORT_SYMBOL_GPL(soc_codec_dev_spdif_dit);
-
-struct snd_soc_dai dit_stub_dai = {
-	.name		= "DIT",
+static struct snd_soc_dai_driver dit_stub_dai = {
+	.name		= "dit-hifi",
 	.playback 	= {
 		.stream_name	= "Playback",
 		.channels_min	= 1,
@@ -80,65 +39,16 @@
 		.formats	= STUB_FORMATS,
 	},
 };
-EXPORT_SYMBOL_GPL(dit_stub_dai);
 
 static int spdif_dit_probe(struct platform_device *pdev)
 {
-	struct snd_soc_codec *codec;
-	int ret;
-
-	if (spdif_dit_codec) {
-		dev_err(&pdev->dev, "Another Codec is registered\n");
-		ret = -EINVAL;
-		goto err_reg_codec;
-	}
-
-	codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (codec == NULL)
-		return -ENOMEM;
-
-	codec->dev = &pdev->dev;
-
-	mutex_init(&codec->mutex);
-
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->name = "spdif-dit";
-	codec->owner = THIS_MODULE;
-	codec->dai = &dit_stub_dai;
-	codec->num_dai = 1;
-
-	spdif_dit_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret < 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err_reg_codec;
-	}
-
-	dit_stub_dai.dev = &pdev->dev;
-	ret = snd_soc_register_dai(&dit_stub_dai);
-	if (ret < 0) {
-		dev_err(codec->dev, "Failed to register dai: %d\n", ret);
-		goto err_reg_dai;
-	}
-
-	return 0;
-
-err_reg_dai:
-	snd_soc_unregister_codec(codec);
-err_reg_codec:
-	kfree(spdif_dit_codec);
-	return ret;
+	return snd_soc_register_codec(&pdev->dev, &soc_codec_spdif_dit,
+			&dit_stub_dai, 1);
 }
 
 static int spdif_dit_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_dai(&dit_stub_dai);
-	snd_soc_unregister_codec(spdif_dit_codec);
-	kfree(spdif_dit_codec);
-	spdif_dit_codec = NULL;
+	snd_soc_unregister_codec(&pdev->dev);
 	return 0;
 }
 
diff --git a/sound/soc/codecs/spdif_transciever.h b/sound/soc/codecs/spdif_transciever.h
deleted file mode 100644
index 1e10212..0000000
--- a/sound/soc/codecs/spdif_transciever.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * ALSA SoC DIT/DIR driver header
- *
- * Author:      Steve Chen,  <schen@mvista.com>
- * Copyright:   (C) 2008 MontaVista Software, Inc., <source@mvista.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef CODEC_STUBS_H
-#define CODEC_STUBS_H
-
-extern struct snd_soc_codec_device soc_codec_dev_spdif_dit;
-extern struct snd_soc_dai dit_stub_dai;
-
-#endif /* CODEC_STUBS_H */
diff --git a/sound/soc/codecs/ssm2602.c b/sound/soc/codecs/ssm2602.c
index b47ed4f..6f38d61 100644
--- a/sound/soc/codecs/ssm2602.c
+++ b/sound/soc/codecs/ssm2602.c
@@ -45,11 +45,11 @@
 
 #define SSM2602_VERSION "0.1"
 
-struct snd_soc_codec_device soc_codec_dev_ssm2602;
-
 /* codec private data */
 struct ssm2602_priv {
 	unsigned int sysclk;
+	enum snd_soc_control_type control_type;
+	void *control_data;
 	struct snd_pcm_substream *master_substream;
 	struct snd_pcm_substream *slave_substream;
 };
@@ -276,8 +276,7 @@
 {
 	u16 srate;
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct ssm2602_priv *ssm2602 = snd_soc_codec_get_drvdata(codec);
 	struct i2c_client *i2c = codec->control_data;
 	u16 iface = ssm2602_read_reg_cache(codec, SSM2602_IFACE) & 0xfff3;
@@ -321,8 +320,7 @@
 			   struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct ssm2602_priv *ssm2602 = snd_soc_codec_get_drvdata(codec);
 	struct i2c_client *i2c = codec->control_data;
 	struct snd_pcm_runtime *master_runtime;
@@ -360,8 +358,7 @@
 			       struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	/* set active */
 	ssm2602_write(codec, SSM2602_ACTIVE, ACTIVE_ACTIVATE_CODEC);
 
@@ -372,8 +369,7 @@
 			     struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct ssm2602_priv *ssm2602 = snd_soc_codec_get_drvdata(codec);
 
 	/* deactivate */
@@ -518,8 +514,8 @@
 	.set_fmt	= ssm2602_set_dai_fmt,
 };
 
-struct snd_soc_dai ssm2602_dai = {
-	.name = "SSM2602",
+static struct snd_soc_dai_driver ssm2602_dai = {
+	.name = "ssm2602-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 2,
@@ -534,21 +530,15 @@
 		.formats = SSM2602_FORMATS,},
 	.ops = &ssm2602_dai_ops,
 };
-EXPORT_SYMBOL_GPL(ssm2602_dai);
 
-static int ssm2602_suspend(struct platform_device *pdev, pm_message_t state)
+static int ssm2602_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	ssm2602_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int ssm2602_resume(struct platform_device *pdev)
+static int ssm2602_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	int i;
 	u8 data[2];
 	u16 *cache = codec->reg_cache;
@@ -563,36 +553,17 @@
 	return 0;
 }
 
-/*
- * initialise the ssm2602 driver
- * register the mixer and dsp interfaces with the kernel
- */
-static int ssm2602_init(struct snd_soc_device *socdev)
+static int ssm2602_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = socdev->card->codec;
-	int reg, ret = 0;
+	struct ssm2602_priv *ssm2602 = snd_soc_codec_get_drvdata(codec);
+	int ret = 0, reg;
 
-	codec->name = "SSM2602";
-	codec->owner = THIS_MODULE;
-	codec->read = ssm2602_read_reg_cache;
-	codec->write = ssm2602_write;
-	codec->set_bias_level = ssm2602_set_bias_level;
-	codec->dai = &ssm2602_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = sizeof(ssm2602_reg);
-	codec->reg_cache = kmemdup(ssm2602_reg, sizeof(ssm2602_reg),
-					GFP_KERNEL);
-	if (codec->reg_cache == NULL)
-		return -ENOMEM;
+	pr_info("ssm2602 Audio Codec %s", SSM2602_VERSION);
+
+	codec->control_data = ssm2602->control_data;
 
 	ssm2602_reset(codec);
 
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		pr_err("ssm2602: failed to create pcms\n");
-		goto pcm_err;
-	}
 	/*power on device*/
 	ssm2602_write(codec, SSM2602_ACTIVE, 0);
 	/* set the update bits */
@@ -614,13 +585,27 @@
 	ssm2602_add_widgets(codec);
 
 	return ret;
-
-pcm_err:
-	kfree(codec->reg_cache);
-	return ret;
 }
 
-static struct snd_soc_device *ssm2602_socdev;
+/* remove everything here */
+static int ssm2602_remove(struct snd_soc_codec *codec)
+{
+	ssm2602_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
+}
+
+static struct snd_soc_codec_driver soc_codec_dev_ssm2602 = {
+	.probe =	ssm2602_probe,
+	.remove =	ssm2602_remove,
+	.suspend =	ssm2602_suspend,
+	.resume =	ssm2602_resume,
+	.read = ssm2602_read_reg_cache,
+	.write = ssm2602_write,
+	.set_bias_level = ssm2602_set_bias_level,
+	.reg_cache_size = sizeof(ssm2602_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = ssm2602_reg,
+};
 
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 /*
@@ -632,24 +617,28 @@
 static int ssm2602_i2c_probe(struct i2c_client *i2c,
 			     const struct i2c_device_id *id)
 {
-	struct snd_soc_device *socdev = ssm2602_socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct ssm2602_priv *ssm2602;
 	int ret;
 
-	i2c_set_clientdata(i2c, codec);
-	codec->control_data = i2c;
+	ssm2602 = kzalloc(sizeof(struct ssm2602_priv), GFP_KERNEL);
+	if (ssm2602 == NULL)
+		return -ENOMEM;
 
-	ret = ssm2602_init(socdev);
+	i2c_set_clientdata(i2c, ssm2602);
+	ssm2602->control_data = i2c;
+	ssm2602->control_type = SND_SOC_I2C;
+
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_ssm2602, &ssm2602_dai, 1);
 	if (ret < 0)
-		pr_err("failed to initialise SSM2602\n");
-
+		kfree(ssm2602);
 	return ret;
 }
 
 static int ssm2602_i2c_remove(struct i2c_client *client)
 {
-	struct snd_soc_codec *codec = i2c_get_clientdata(client);
-	kfree(codec->reg_cache);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -658,130 +647,39 @@
 	{ }
 };
 MODULE_DEVICE_TABLE(i2c, ssm2602_i2c_id);
+
 /* corgi i2c codec control layer */
 static struct i2c_driver ssm2602_i2c_driver = {
 	.driver = {
-		.name = "SSM2602 I2C Codec",
+		.name = "ssm2602-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe = ssm2602_i2c_probe,
 	.remove = ssm2602_i2c_remove,
 	.id_table = ssm2602_i2c_id,
 };
-
-static int ssm2602_add_i2c_device(struct platform_device *pdev,
-				  const struct ssm2602_setup_data *setup)
-{
-	struct i2c_board_info info;
-	struct i2c_adapter *adapter;
-	struct i2c_client *client;
-	int ret;
-
-	ret = i2c_add_driver(&ssm2602_i2c_driver);
-	if (ret != 0) {
-		dev_err(&pdev->dev, "can't add i2c driver\n");
-		return ret;
-	}
-	memset(&info, 0, sizeof(struct i2c_board_info));
-	info.addr = setup->i2c_address;
-	strlcpy(info.type, "ssm2602", I2C_NAME_SIZE);
-	adapter = i2c_get_adapter(setup->i2c_bus);
-	if (!adapter) {
-		dev_err(&pdev->dev, "can't get i2c adapter %d\n",
-		setup->i2c_bus);
-		goto err_driver;
-	}
-	client = i2c_new_device(adapter, &info);
-	i2c_put_adapter(adapter);
-	if (!client) {
-		dev_err(&pdev->dev, "can't add i2c device at 0x%x\n",
-		(unsigned int)info.addr);
-		goto err_driver;
-	}
-	return 0;
-err_driver:
-	i2c_del_driver(&ssm2602_i2c_driver);
-	return -ENODEV;
-}
 #endif
 
-static int ssm2602_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct ssm2602_setup_data *setup;
-	struct snd_soc_codec *codec;
-	struct ssm2602_priv *ssm2602;
-	int ret = 0;
-
-	pr_info("ssm2602 Audio Codec %s", SSM2602_VERSION);
-
-	setup = socdev->codec_data;
-	codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (codec == NULL)
-		return -ENOMEM;
-
-	ssm2602 = kzalloc(sizeof(struct ssm2602_priv), GFP_KERNEL);
-	if (ssm2602 == NULL) {
-		kfree(codec);
-		return -ENOMEM;
-	}
-
-	snd_soc_codec_set_drvdata(codec, ssm2602);
-	socdev->card->codec = codec;
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	ssm2602_socdev = socdev;
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-	if (setup->i2c_address) {
-		codec->hw_write = (hw_write_t)i2c_master_send;
-		ret = ssm2602_add_i2c_device(pdev, setup);
-	}
-#else
-	/* other interfaces */
-#endif
-	return ret;
-}
-
-/* remove everything here */
-static int ssm2602_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (codec->control_data)
-		ssm2602_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-	i2c_unregister_device(codec->control_data);
-	i2c_del_driver(&ssm2602_i2c_driver);
-#endif
-	kfree(snd_soc_codec_get_drvdata(codec));
-	kfree(codec);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_ssm2602 = {
-	.probe = 	ssm2602_probe,
-	.remove = 	ssm2602_remove,
-	.suspend = 	ssm2602_suspend,
-	.resume =	ssm2602_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_ssm2602);
 
 static int __init ssm2602_modinit(void)
 {
-	return snd_soc_register_dai(&ssm2602_dai);
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	ret = i2c_add_driver(&ssm2602_i2c_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register SSM2602 I2C driver: %d\n",
+		       ret);
+	}
+#endif
+	return ret;
 }
 module_init(ssm2602_modinit);
 
 static void __exit ssm2602_exit(void)
 {
-	snd_soc_unregister_dai(&ssm2602_dai);
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	i2c_del_driver(&ssm2602_i2c_driver);
+#endif
 }
 module_exit(ssm2602_exit);
 
diff --git a/sound/soc/codecs/ssm2602.h b/sound/soc/codecs/ssm2602.h
index f344e6d..42a47d0 100644
--- a/sound/soc/codecs/ssm2602.h
+++ b/sound/soc/codecs/ssm2602.h
@@ -124,7 +124,4 @@
 	unsigned short i2c_address;
 };
 
-extern struct snd_soc_dai ssm2602_dai;
-extern struct snd_soc_codec_device soc_codec_dev_ssm2602;
-
 #endif
diff --git a/sound/soc/codecs/stac9766.c b/sound/soc/codecs/stac9766.c
index ee86568..00d67cc 100644
--- a/sound/soc/codecs/stac9766.c
+++ b/sound/soc/codecs/stac9766.c
@@ -25,7 +25,6 @@
 #include <sound/pcm_params.h>
 #include <sound/soc.h>
 #include <sound/tlv.h>
-#include <sound/soc-of-simple.h>
 
 #include "stac9766.h"
 
@@ -257,20 +256,15 @@
 	return 0;
 }
 
-static int stac9766_codec_suspend(struct platform_device *pdev,
+static int stac9766_codec_suspend(struct snd_soc_codec *codec,
 				  pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	stac9766_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int stac9766_codec_resume(struct platform_device *pdev)
+static int stac9766_codec_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	u16 id, reset;
 
 	reset = 0;
@@ -300,10 +294,9 @@
 	.prepare = ac97_digital_prepare,
 };
 
-struct snd_soc_dai stac9766_dai[] = {
+static struct snd_soc_dai_driver stac9766_dai[] = {
 {
-	.name = "stac9766 analog",
-	.id = 0,
+	.name = "stac9766-hifi-analog",
 	.ac97_control = 1,
 
 	/* stream cababilities */
@@ -325,8 +318,7 @@
 	.ops = &stac9766_dai_ops_analog,
 },
 {
-	.name = "stac9766 IEC958",
-	.id = 1,
+	.name = "stac9766-hifi-IEC958",
 	.ac97_control = 1,
 
 	/* stream cababilities */
@@ -342,57 +334,24 @@
 	.ops = &stac9766_dai_ops_digital,
 }
 };
-EXPORT_SYMBOL_GPL(stac9766_dai);
 
-static int stac9766_codec_probe(struct platform_device *pdev)
+static int stac9766_codec_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
 	int ret = 0;
 
 	printk(KERN_INFO "STAC9766 SoC Audio Codec %s\n", STAC9766_VERSION);
 
-	socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (socdev->card->codec == NULL)
-		return -ENOMEM;
-	codec = socdev->card->codec;
-	mutex_init(&codec->mutex);
-
-	codec->reg_cache = kmemdup(stac9766_reg, sizeof(stac9766_reg),
-				   GFP_KERNEL);
-	if (codec->reg_cache == NULL) {
-		ret = -ENOMEM;
-		goto cache_err;
-	}
-	codec->reg_cache_size = sizeof(stac9766_reg);
-	codec->reg_cache_step = 2;
-
-	codec->name = "STAC9766";
-	codec->owner = THIS_MODULE;
-	codec->dai = stac9766_dai;
-	codec->num_dai = ARRAY_SIZE(stac9766_dai);
-	codec->write = stac9766_ac97_write;
-	codec->read = stac9766_ac97_read;
-	codec->set_bias_level = stac9766_set_bias_level;
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
 	ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0);
 	if (ret < 0)
 		goto codec_err;
 
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0)
-		goto pcm_err;
-
 	/* do a cold reset for the controller and then try
 	 * a warm reset followed by an optional cold reset for codec */
 	stac9766_reset(codec, 0);
 	ret = stac9766_reset(codec, 1);
 	if (ret < 0) {
 		printk(KERN_ERR "Failed to reset STAC9766: AC97 link error\n");
-		goto reset_err;
+		goto codec_err;
 	}
 
 	stac9766_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
@@ -402,40 +361,63 @@
 
 	return 0;
 
-reset_err:
-	snd_soc_free_pcms(socdev);
-pcm_err:
-	snd_soc_free_ac97_codec(codec);
 codec_err:
-	kfree(snd_soc_codec_get_drvdata(codec));
-cache_err:
-	kfree(socdev->card->codec);
-	socdev->card->codec = NULL;
+	snd_soc_free_ac97_codec(codec);
 	return ret;
 }
 
-static int stac9766_codec_remove(struct platform_device *pdev)
+static int stac9766_codec_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (codec == NULL)
-		return 0;
-
-	snd_soc_free_pcms(socdev);
 	snd_soc_free_ac97_codec(codec);
-	kfree(codec->reg_cache);
-	kfree(codec);
 	return 0;
 }
 
-struct snd_soc_codec_device soc_codec_dev_stac9766 = {
+static struct snd_soc_codec_driver soc_codec_dev_stac9766 = {
+	.write = stac9766_ac97_write,
+	.read = stac9766_ac97_read,
+	.set_bias_level = stac9766_set_bias_level,
 	.probe = stac9766_codec_probe,
 	.remove = stac9766_codec_remove,
 	.suspend = stac9766_codec_suspend,
 	.resume = stac9766_codec_resume,
+	.reg_cache_size = sizeof(stac9766_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_step = 2,
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_stac9766);
+
+static __devinit int stac9766_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_stac9766, stac9766_dai, ARRAY_SIZE(stac9766_dai));
+}
+
+static int __devexit stac9766_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_codec(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver stac9766_codec_driver = {
+	.driver = {
+			.name = "stac9766-codec",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = stac9766_probe,
+	.remove = __devexit_p(stac9766_remove),
+};
+
+static int __init stac9766_init(void)
+{
+	return platform_driver_register(&stac9766_codec_driver);
+}
+module_init(stac9766_init);
+
+static void __exit stac9766_exit(void)
+{
+	platform_driver_unregister(&stac9766_codec_driver);
+}
+module_exit(stac9766_exit);
 
 MODULE_DESCRIPTION("ASoC stac9766 driver");
 MODULE_AUTHOR("Jon Smirl <jonsmirl@gmail.com>");
diff --git a/sound/soc/codecs/stac9766.h b/sound/soc/codecs/stac9766.h
index 65642eb..c726f90 100644
--- a/sound/soc/codecs/stac9766.h
+++ b/sound/soc/codecs/stac9766.h
@@ -14,8 +14,4 @@
 #define STAC9766_DAI_AC97_ANALOG		0
 #define STAC9766_DAI_AC97_DIGITAL		1
 
-extern struct snd_soc_dai stac9766_dai[];
-extern struct snd_soc_codec_device soc_codec_dev_stac9766;
-
-
 #endif
diff --git a/sound/soc/codecs/tlv320aic23.c b/sound/soc/codecs/tlv320aic23.c
index 0a4b0fe..e8652b1 100644
--- a/sound/soc/codecs/tlv320aic23.c
+++ b/sound/soc/codecs/tlv320aic23.c
@@ -240,7 +240,8 @@
 
 /* AIC23 driver data */
 struct aic23 {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
+	void *control_data;
 	int mclk;
 	int requested_adc;
 	int requested_dac;
@@ -404,11 +405,10 @@
 				 struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	u16 iface_reg;
 	int ret;
-	struct aic23 *aic23 = container_of(codec, struct aic23, codec);
+	struct aic23 *aic23 = snd_soc_codec_get_drvdata(codec);
 	u32 sample_rate_adc = aic23->requested_adc;
 	u32 sample_rate_dac = aic23->requested_dac;
 	u32 sample_rate = params_rate(params);
@@ -452,8 +452,7 @@
 				   struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 
 	/* set active */
 	tlv320aic23_write(codec, TLV320AIC23_ACTIVE, 0x0001);
@@ -465,9 +464,8 @@
 				 struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
-	struct aic23 *aic23 = container_of(codec, struct aic23, codec);
+	struct snd_soc_codec *codec = rtd->codec;
+	struct aic23 *aic23 = snd_soc_codec_get_drvdata(codec);
 
 	/* deactivate */
 	if (!codec->active) {
@@ -546,8 +544,7 @@
 static int tlv320aic23_set_dai_sysclk(struct snd_soc_dai *codec_dai,
 				      int clk_id, unsigned int freq, int dir)
 {
-	struct snd_soc_codec *codec = codec_dai->codec;
-	struct aic23 *aic23 = container_of(codec, struct aic23, codec);
+	struct aic23 *aic23 = snd_soc_dai_get_drvdata(codec_dai);
 	aic23->mclk = freq;
 	return 0;
 }
@@ -594,8 +591,8 @@
 	.set_sysclk	= tlv320aic23_set_dai_sysclk,
 };
 
-struct snd_soc_dai tlv320aic23_dai = {
-	.name = "tlv320aic23",
+static struct snd_soc_dai_driver tlv320aic23_dai = {
+	.name = "tlv320aic23-hifi",
 	.playback = {
 		     .stream_name = "Playback",
 		     .channels_min = 2,
@@ -610,23 +607,17 @@
 		    .formats = AIC23_FORMATS,},
 	.ops = &tlv320aic23_dai_ops,
 };
-EXPORT_SYMBOL_GPL(tlv320aic23_dai);
 
-static int tlv320aic23_suspend(struct platform_device *pdev,
+static int tlv320aic23_suspend(struct snd_soc_codec *codec,
 			       pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	tlv320aic23_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
 	return 0;
 }
 
-static int tlv320aic23_resume(struct platform_device *pdev)
+static int tlv320aic23_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	u16 reg;
 
 	/* Sync reg_cache with the hardware */
@@ -639,39 +630,19 @@
 	return 0;
 }
 
-/*
- * initialise the AIC23 driver
- * register the mixer and dsp interfaces with the kernel
- */
-static int tlv320aic23_init(struct snd_soc_device *socdev)
+static int tlv320aic23_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = socdev->card->codec;
-	int ret = 0;
-	u16 reg;
+	struct aic23 *aic23 = snd_soc_codec_get_drvdata(codec);
+	int reg;
 
-	codec->name = "tlv320aic23";
-	codec->owner = THIS_MODULE;
-	codec->read = tlv320aic23_read_reg_cache;
-	codec->write = tlv320aic23_write;
-	codec->set_bias_level = tlv320aic23_set_bias_level;
-	codec->dai = &tlv320aic23_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = ARRAY_SIZE(tlv320aic23_reg);
-	codec->reg_cache =
-	    kmemdup(tlv320aic23_reg, sizeof(tlv320aic23_reg), GFP_KERNEL);
-	if (codec->reg_cache == NULL)
-		return -ENOMEM;
+	printk(KERN_INFO "AIC23 Audio Codec %s\n", AIC23_VERSION);
+	codec->control_data = aic23->control_data;
+	codec->hw_write = (hw_write_t)i2c_master_send;
+	codec->hw_read = NULL;
 
 	/* Reset codec */
 	tlv320aic23_write(codec, TLV320AIC23_RESET, 0);
 
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "tlv320aic23: failed to create pcms\n");
-		goto pcm_err;
-	}
-
 	/* power on device */
 	tlv320aic23_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
@@ -707,13 +678,27 @@
 				ARRAY_SIZE(tlv320aic23_snd_controls));
 	tlv320aic23_add_widgets(codec);
 
-	return ret;
-
-pcm_err:
-	kfree(codec->reg_cache);
-	return ret;
+	return 0;
 }
-static struct snd_soc_device *tlv320aic23_socdev;
+
+static int tlv320aic23_remove(struct snd_soc_codec *codec)
+{
+	tlv320aic23_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
+}
+
+static struct snd_soc_codec_driver soc_codec_dev_tlv320aic23 = {
+	.reg_cache_size = ARRAY_SIZE(tlv320aic23_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = tlv320aic23_reg,
+	.probe = tlv320aic23_probe,
+	.remove = tlv320aic23_remove,
+	.suspend = tlv320aic23_suspend,
+	.resume = tlv320aic23_resume,
+	.read = tlv320aic23_read_reg_cache,
+	.write = tlv320aic23_write,
+	.set_bias_level = tlv320aic23_set_bias_level,
+};
 
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 /*
@@ -723,31 +708,30 @@
 static int tlv320aic23_codec_probe(struct i2c_client *i2c,
 				   const struct i2c_device_id *i2c_id)
 {
-	struct snd_soc_device *socdev = tlv320aic23_socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct aic23 *aic23;
 	int ret;
 
 	if (!i2c_check_functionality(i2c->adapter, I2C_FUNC_SMBUS_BYTE_DATA))
 		return -EINVAL;
 
-	i2c_set_clientdata(i2c, codec);
-	codec->control_data = i2c;
+	aic23 = kzalloc(sizeof(struct aic23), GFP_KERNEL);
+	if (aic23 == NULL)
+		return -ENOMEM;
 
-	ret = tlv320aic23_init(socdev);
-	if (ret < 0) {
-		printk(KERN_ERR "tlv320aic23: failed to initialise AIC23\n");
-		goto err;
-	}
-	return ret;
+	i2c_set_clientdata(i2c, aic23);
+	aic23->control_data = i2c;
+	aic23->control_type = SND_SOC_I2C;
 
-err:
-	kfree(codec);
-	kfree(i2c);
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_tlv320aic23, &tlv320aic23_dai, 1);
+	if (ret < 0)
+		kfree(aic23);
 	return ret;
 }
 static int __exit tlv320aic23_i2c_remove(struct i2c_client *i2c)
 {
-	put_device(&i2c->dev);
+	snd_soc_unregister_codec(&i2c->dev);
+	kfree(i2c_get_clientdata(i2c));
 	return 0;
 }
 
@@ -760,7 +744,7 @@
 
 static struct i2c_driver tlv320aic23_i2c_driver = {
 	.driver = {
-		   .name = "tlv320aic23",
+		   .name = "tlv320aic23-codec",
 		   },
 	.probe = tlv320aic23_codec_probe,
 	.remove = __exit_p(tlv320aic23_i2c_remove),
@@ -769,71 +753,25 @@
 
 #endif
 
-static int tlv320aic23_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	struct aic23 *aic23;
-	int ret = 0;
-
-	printk(KERN_INFO "AIC23 Audio Codec %s\n", AIC23_VERSION);
-
-	aic23 = kzalloc(sizeof(struct aic23), GFP_KERNEL);
-	if (aic23 == NULL)
-		return -ENOMEM;
-	codec = &aic23->codec;
-	socdev->card->codec = codec;
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	tlv320aic23_socdev = socdev;
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-	codec->hw_write = (hw_write_t) i2c_master_send;
-	codec->hw_read = NULL;
-	ret = i2c_add_driver(&tlv320aic23_i2c_driver);
-	if (ret != 0)
-		printk(KERN_ERR "can't add i2c driver");
-#endif
-	return ret;
-}
-
-static int tlv320aic23_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-	struct aic23 *aic23 = container_of(codec, struct aic23, codec);
-
-	if (codec->control_data)
-		tlv320aic23_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-	i2c_del_driver(&tlv320aic23_i2c_driver);
-#endif
-	kfree(codec->reg_cache);
-	kfree(aic23);
-
-	return 0;
-}
-struct snd_soc_codec_device soc_codec_dev_tlv320aic23 = {
-	.probe = tlv320aic23_probe,
-	.remove = tlv320aic23_remove,
-	.suspend = tlv320aic23_suspend,
-	.resume = tlv320aic23_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_tlv320aic23);
-
 static int __init tlv320aic23_modinit(void)
 {
-	return snd_soc_register_dai(&tlv320aic23_dai);
+	int ret;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	ret = i2c_add_driver(&tlv320aic23_i2c_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register TLV320AIC23 I2C driver: %d\n",
+		       ret);
+	}
+#endif
+	return ret;
 }
 module_init(tlv320aic23_modinit);
 
 static void __exit tlv320aic23_exit(void)
 {
-	snd_soc_unregister_dai(&tlv320aic23_dai);
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	i2c_del_driver(&tlv320aic23_i2c_driver);
+#endif
 }
 module_exit(tlv320aic23_exit);
 
diff --git a/sound/soc/codecs/tlv320aic23.h b/sound/soc/codecs/tlv320aic23.h
index 79d1faf..e804120 100644
--- a/sound/soc/codecs/tlv320aic23.h
+++ b/sound/soc/codecs/tlv320aic23.h
@@ -116,7 +116,4 @@
 #define TLV320AIC23_SIDETONE_12		0x080
 #define TLV320AIC23_SIDETONE_18		0x0c0
 
-extern struct snd_soc_dai tlv320aic23_dai;
-extern struct snd_soc_codec_device soc_codec_dev_tlv320aic23;
-
 #endif /* _TLV320AIC23_H */
diff --git a/sound/soc/codecs/tlv320aic26.c b/sound/soc/codecs/tlv320aic26.c
index f0e00fd..6b7d71e 100644
--- a/sound/soc/codecs/tlv320aic26.c
+++ b/sound/soc/codecs/tlv320aic26.c
@@ -19,7 +19,6 @@
 #include <sound/pcm_params.h>
 #include <sound/soc.h>
 #include <sound/soc-dapm.h>
-#include <sound/soc-of-simple.h>
 #include <sound/initval.h>
 
 #include "tlv320aic26.h"
@@ -130,8 +129,7 @@
 			   struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct aic26 *aic26 = snd_soc_codec_get_drvdata(codec);
 	int fsref, divisor, wlen, pval, jval, dval, qval;
 	u16 reg;
@@ -278,8 +276,8 @@
 	.set_fmt	= aic26_set_fmt,
 };
 
-struct snd_soc_dai aic26_dai = {
-	.name = "tlv320aic26",
+static struct snd_soc_dai_driver aic26_dai = {
+	.name = "tlv320aic26-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 2,
@@ -296,7 +294,6 @@
 	},
 	.ops = &aic26_dai_ops,
 };
-EXPORT_SYMBOL_GPL(aic26_dai);
 
 /* ---------------------------------------------------------------------
  * ALSA controls
@@ -319,61 +316,6 @@
 };
 
 /* ---------------------------------------------------------------------
- * SoC CODEC portion of driver: probe and release routines
- */
-static int aic26_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	struct aic26 *aic26;
-	int ret, err;
-
-	dev_info(&pdev->dev, "Probing AIC26 SoC CODEC driver\n");
-	dev_dbg(&pdev->dev, "socdev=%p\n", socdev);
-	dev_dbg(&pdev->dev, "codec_data=%p\n", socdev->codec_data);
-
-	/* Fetch the relevant aic26 private data here (it's already been
-	 * stored in the .codec pointer) */
-	aic26 = socdev->codec_data;
-	if (aic26 == NULL) {
-		dev_err(&pdev->dev, "aic26: missing codec pointer\n");
-		return -ENODEV;
-	}
-	codec = &aic26->codec;
-	socdev->card->codec = codec;
-
-	dev_dbg(&pdev->dev, "Registering PCMs, dev=%p, socdev->dev=%p\n",
-		&pdev->dev, socdev->dev);
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(&pdev->dev, "aic26: failed to create pcms\n");
-		return -ENODEV;
-	}
-
-	/* register controls */
-	dev_dbg(&pdev->dev, "Registering controls\n");
-	err = snd_soc_add_controls(codec, aic26_snd_controls,
-			ARRAY_SIZE(aic26_snd_controls));
-	WARN_ON(err < 0);
-
-	return 0;
-}
-
-static int aic26_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	snd_soc_free_pcms(socdev);
-	return 0;
-}
-
-struct snd_soc_codec_device aic26_soc_codec_dev = {
-	.probe = aic26_probe,
-	.remove = aic26_remove,
-};
-EXPORT_SYMBOL_GPL(aic26_soc_codec_dev);
-
-/* ---------------------------------------------------------------------
  * SPI device portion of driver: sysfs files for debugging
  */
 
@@ -409,13 +351,62 @@
 static DEVICE_ATTR(keyclick, 0644, aic26_keyclick_show, aic26_keyclick_set);
 
 /* ---------------------------------------------------------------------
+ * SoC CODEC portion of driver: probe and release routines
+ */
+static int aic26_probe(struct snd_soc_codec *codec)
+{
+	struct aic26 *aic26 = snd_soc_codec_get_drvdata(codec);
+	int ret, err, i, reg;
+
+	dev_info(codec->dev, "Probing AIC26 SoC CODEC driver\n");
+
+	/* Reset the codec to power on defaults */
+	aic26_reg_write(codec, AIC26_REG_RESET, 0xBB00);
+
+	/* Power up CODEC */
+	aic26_reg_write(codec, AIC26_REG_POWER_CTRL, 0);
+
+	/* Audio Control 3 (master mode, fsref rate) */
+	reg = aic26_reg_read(codec, AIC26_REG_AUDIO_CTRL3);
+	reg &= ~0xf800;
+	reg |= 0x0800; /* set master mode */
+	aic26_reg_write(codec, AIC26_REG_AUDIO_CTRL3, reg);
+
+	/* Fill register cache */
+	for (i = 0; i < ARRAY_SIZE(aic26->reg_cache); i++)
+		aic26_reg_read(codec, i);
+
+	/* Register the sysfs files for debugging */
+	/* Create SysFS files */
+	ret = device_create_file(codec->dev, &dev_attr_keyclick);
+	if (ret)
+		dev_info(codec->dev, "error creating sysfs files\n");
+
+	/* register controls */
+	dev_dbg(codec->dev, "Registering controls\n");
+	err = snd_soc_add_controls(codec, aic26_snd_controls,
+			ARRAY_SIZE(aic26_snd_controls));
+	WARN_ON(err < 0);
+
+	return 0;
+}
+
+static struct snd_soc_codec_driver aic26_soc_codec_dev = {
+	.probe = aic26_probe,
+	.read = aic26_reg_read,
+	.write = aic26_reg_write,
+	.reg_cache_size = AIC26_NUM_REGS,
+	.reg_word_size = sizeof(u16),
+};
+
+/* ---------------------------------------------------------------------
  * SPI device portion of driver: probe and release routines and SPI
  * 				 driver registration.
  */
 static int aic26_spi_probe(struct spi_device *spi)
 {
 	struct aic26 *aic26;
-	int ret, i, reg;
+	int ret;
 
 	dev_dbg(&spi->dev, "probing tlv320aic26 spi device\n");
 
@@ -427,59 +418,13 @@
 	/* Initialize the driver data */
 	aic26->spi = spi;
 	dev_set_drvdata(&spi->dev, aic26);
-
-	/* Setup what we can in the codec structure so that the register
-	 * access functions will work as expected.  More will be filled
-	 * out when it is probed by the SoC CODEC part of this driver */
-	snd_soc_codec_set_drvdata(&aic26->codec, aic26);
-	aic26->codec.name = "aic26";
-	aic26->codec.owner = THIS_MODULE;
-	aic26->codec.dai = &aic26_dai;
-	aic26->codec.num_dai = 1;
-	aic26->codec.read = aic26_reg_read;
-	aic26->codec.write = aic26_reg_write;
 	aic26->master = 1;
-	mutex_init(&aic26->codec.mutex);
-	INIT_LIST_HEAD(&aic26->codec.dapm_widgets);
-	INIT_LIST_HEAD(&aic26->codec.dapm_paths);
-	aic26->codec.reg_cache_size = AIC26_NUM_REGS;
-	aic26->codec.reg_cache = aic26->reg_cache;
 
-	aic26_dai.dev = &spi->dev;
-	ret = snd_soc_register_dai(&aic26_dai);
-	if (ret != 0) {
-		dev_err(&spi->dev, "Failed to register DAI: %d\n", ret);
+	ret = snd_soc_register_codec(&spi->dev,
+			&aic26_soc_codec_dev, &aic26_dai, 1);
+	if (ret < 0)
 		kfree(aic26);
-		return ret;
-	}
-
-	/* Reset the codec to power on defaults */
-	aic26_reg_write(&aic26->codec, AIC26_REG_RESET, 0xBB00);
-
-	/* Power up CODEC */
-	aic26_reg_write(&aic26->codec, AIC26_REG_POWER_CTRL, 0);
-
-	/* Audio Control 3 (master mode, fsref rate) */
-	reg = aic26_reg_read(&aic26->codec, AIC26_REG_AUDIO_CTRL3);
-	reg &= ~0xf800;
-	reg |= 0x0800; /* set master mode */
-	aic26_reg_write(&aic26->codec, AIC26_REG_AUDIO_CTRL3, reg);
-
-	/* Fill register cache */
-	for (i = 0; i < ARRAY_SIZE(aic26->reg_cache); i++)
-		aic26_reg_read(&aic26->codec, i);
-
-	/* Register the sysfs files for debugging */
-	/* Create SysFS files */
-	ret = device_create_file(&spi->dev, &dev_attr_keyclick);
-	if (ret)
-		dev_info(&spi->dev, "error creating sysfs files\n");
-
-#if defined(CONFIG_SND_SOC_OF_SIMPLE)
-	/* Tell the of_soc helper about this codec */
-	of_snd_soc_register_codec(&aic26_soc_codec_dev, aic26, &aic26_dai,
-				  spi->dev.archdata.of_node);
-#endif
+	return ret;
 
 	dev_dbg(&spi->dev, "SPI device initialized\n");
 	return 0;
@@ -487,17 +432,14 @@
 
 static int aic26_spi_remove(struct spi_device *spi)
 {
-	struct aic26 *aic26 = dev_get_drvdata(&spi->dev);
-
-	snd_soc_unregister_dai(&aic26_dai);
-	kfree(aic26);
-
+	snd_soc_unregister_codec(&spi->dev);
+	kfree(spi_get_drvdata(spi));
 	return 0;
 }
 
 static struct spi_driver aic26_spi = {
 	.driver = {
-		.name = "tlv320aic26",
+		.name = "tlv320aic26-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe = aic26_spi_probe,
diff --git a/sound/soc/codecs/tlv320aic26.h b/sound/soc/codecs/tlv320aic26.h
index 786ba16..62b1f22 100644
--- a/sound/soc/codecs/tlv320aic26.h
+++ b/sound/soc/codecs/tlv320aic26.h
@@ -90,7 +90,4 @@
 	AIC26_WLEN_32	= 3 << 10,
 };
 
-extern struct snd_soc_dai aic26_dai;
-extern struct snd_soc_codec_device aic26_soc_codec_dev;
-
 #endif /* _TLV320AIC16_H_ */
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
index 71a6990..fc68779 100644
--- a/sound/soc/codecs/tlv320aic3x.c
+++ b/sound/soc/codecs/tlv320aic3x.c
@@ -12,11 +12,11 @@
  *
  * Notes:
  *  The AIC3X is a driver for a low power stereo audio
- *  codecs aic31, aic32, aic33.
+ *  codecs aic31, aic32, aic33, aic3007.
  *
  *  It supports full aic33 codec functionality.
- *  The compatibility with aic32, aic31 is as follows:
- *        aic32        |        aic31
+ *  The compatibility with aic32, aic31 and aic3007 is as follows:
+ *    aic32/aic3007    |        aic31
  *  ---------------------------------------
  *   MONO_LOUT -> N/A  |  MONO_LOUT -> N/A
  *                     |  IN1L -> LINE1L
@@ -61,13 +61,29 @@
 	"DRVDD",	/* ADC Analog and Output Driver Voltage */
 };
 
+struct aic3x_priv;
+
+struct aic3x_disable_nb {
+	struct notifier_block nb;
+	struct aic3x_priv *aic3x;
+};
+
 /* codec private data */
 struct aic3x_priv {
-	struct snd_soc_codec codec;
+	struct snd_soc_codec *codec;
 	struct regulator_bulk_data supplies[AIC3X_NUM_SUPPLIES];
+	struct aic3x_disable_nb disable_nb[AIC3X_NUM_SUPPLIES];
+	enum snd_soc_control_type control_type;
+	struct aic3x_setup_data *setup;
+	void *control_data;
 	unsigned int sysclk;
 	int master;
 	int gpio_reset;
+	int power;
+#define AIC3X_MODEL_3X 0
+#define AIC3X_MODEL_33 1
+#define AIC3X_MODEL_3007 2
+	u16 model;
 };
 
 /*
@@ -106,62 +122,23 @@
 };
 
 /*
- * read aic3x register cache
- */
-static inline unsigned int aic3x_read_reg_cache(struct snd_soc_codec *codec,
-						unsigned int reg)
-{
-	u8 *cache = codec->reg_cache;
-	if (reg >= AIC3X_CACHEREGNUM)
-		return -1;
-	return cache[reg];
-}
-
-/*
- * write aic3x register cache
- */
-static inline void aic3x_write_reg_cache(struct snd_soc_codec *codec,
-					 u8 reg, u8 value)
-{
-	u8 *cache = codec->reg_cache;
-	if (reg >= AIC3X_CACHEREGNUM)
-		return;
-	cache[reg] = value;
-}
-
-/*
- * write to the aic3x register space
- */
-static int aic3x_write(struct snd_soc_codec *codec, unsigned int reg,
-		       unsigned int value)
-{
-	u8 data[2];
-
-	/* data is
-	 *   D15..D8 aic3x register offset
-	 *   D7...D0 register data
-	 */
-	data[0] = reg & 0xff;
-	data[1] = value & 0xff;
-
-	aic3x_write_reg_cache(codec, data[0], data[1]);
-	if (codec->hw_write(codec->control_data, data, 2) == 2)
-		return 0;
-	else
-		return -EIO;
-}
-
-/*
- * read from the aic3x register space
+ * read from the aic3x register space. Only use for this function is if
+ * wanting to read volatile bits from those registers that has both read-only
+ * and read/write bits. All other cases should use snd_soc_read.
  */
 static int aic3x_read(struct snd_soc_codec *codec, unsigned int reg,
 		      u8 *value)
 {
-	*value = reg & 0xff;
+	u8 *cache = codec->reg_cache;
 
-	value[0] = i2c_smbus_read_byte_data(codec->control_data, value[0]);
+	if (codec->cache_only)
+		return -EINVAL;
+	if (reg >= AIC3X_CACHEREGNUM)
+		return -1;
 
-	aic3x_write_reg_cache(codec, reg, *value);
+	*value = codec->hw_read(codec, reg);
+	cache[reg] = *value;
+
 	return 0;
 }
 
@@ -286,64 +263,102 @@
 	SOC_DOUBLE_R_TLV("PCM Playback Volume",
 			 LDAC_VOL, RDAC_VOL, 0, 0x7f, 1, dac_tlv),
 
+	/*
+	 * Output controls that map to output mixer switches. Note these are
+	 * only for swapped L-to-R and R-to-L routes. See below stereo controls
+	 * for direct L-to-L and R-to-R routes.
+	 */
+	SOC_SINGLE_TLV("Left Line Mixer Line2R Bypass Volume",
+		       LINE2R_2_LLOPM_VOL, 0, 118, 1, output_stage_tlv),
+	SOC_SINGLE_TLV("Left Line Mixer PGAR Bypass Volume",
+		       PGAR_2_LLOPM_VOL, 0, 118, 1, output_stage_tlv),
+	SOC_SINGLE_TLV("Left Line Mixer DACR1 Playback Volume",
+		       DACR1_2_LLOPM_VOL, 0, 118, 1, output_stage_tlv),
+
+	SOC_SINGLE_TLV("Right Line Mixer Line2L Bypass Volume",
+		       LINE2L_2_RLOPM_VOL, 0, 118, 1, output_stage_tlv),
+	SOC_SINGLE_TLV("Right Line Mixer PGAL Bypass Volume",
+		       PGAL_2_RLOPM_VOL, 0, 118, 1, output_stage_tlv),
+	SOC_SINGLE_TLV("Right Line Mixer DACL1 Playback Volume",
+		       DACL1_2_RLOPM_VOL, 0, 118, 1, output_stage_tlv),
+
+	SOC_SINGLE_TLV("Left HP Mixer Line2R Bypass Volume",
+		       LINE2R_2_HPLOUT_VOL, 0, 118, 1, output_stage_tlv),
+	SOC_SINGLE_TLV("Left HP Mixer PGAR Bypass Volume",
+		       PGAR_2_HPLOUT_VOL, 0, 118, 1, output_stage_tlv),
+	SOC_SINGLE_TLV("Left HP Mixer DACR1 Playback Volume",
+		       DACR1_2_HPLOUT_VOL, 0, 118, 1, output_stage_tlv),
+
+	SOC_SINGLE_TLV("Right HP Mixer Line2L Bypass Volume",
+		       LINE2L_2_HPROUT_VOL, 0, 118, 1, output_stage_tlv),
+	SOC_SINGLE_TLV("Right HP Mixer PGAL Bypass Volume",
+		       PGAL_2_HPROUT_VOL, 0, 118, 1, output_stage_tlv),
+	SOC_SINGLE_TLV("Right HP Mixer DACL1 Playback Volume",
+		       DACL1_2_HPROUT_VOL, 0, 118, 1, output_stage_tlv),
+
+	SOC_SINGLE_TLV("Left HPCOM Mixer Line2R Bypass Volume",
+		       LINE2R_2_HPLCOM_VOL, 0, 118, 1, output_stage_tlv),
+	SOC_SINGLE_TLV("Left HPCOM Mixer PGAR Bypass Volume",
+		       PGAR_2_HPLCOM_VOL, 0, 118, 1, output_stage_tlv),
+	SOC_SINGLE_TLV("Left HPCOM Mixer DACR1 Playback Volume",
+		       DACR1_2_HPLCOM_VOL, 0, 118, 1, output_stage_tlv),
+
+	SOC_SINGLE_TLV("Right HPCOM Mixer Line2L Bypass Volume",
+		       LINE2L_2_HPRCOM_VOL, 0, 118, 1, output_stage_tlv),
+	SOC_SINGLE_TLV("Right HPCOM Mixer PGAL Bypass Volume",
+		       PGAL_2_HPRCOM_VOL, 0, 118, 1, output_stage_tlv),
+	SOC_SINGLE_TLV("Right HPCOM Mixer DACL1 Playback Volume",
+		       DACL1_2_HPRCOM_VOL, 0, 118, 1, output_stage_tlv),
+
+	/* Stereo output controls for direct L-to-L and R-to-R routes */
+	SOC_DOUBLE_R_TLV("Line Line2 Bypass Volume",
+			 LINE2L_2_LLOPM_VOL, LINE2R_2_RLOPM_VOL,
+			 0, 118, 1, output_stage_tlv),
+	SOC_DOUBLE_R_TLV("Line PGA Bypass Volume",
+			 PGAL_2_LLOPM_VOL, PGAR_2_RLOPM_VOL,
+			 0, 118, 1, output_stage_tlv),
 	SOC_DOUBLE_R_TLV("Line DAC Playback Volume",
 			 DACL1_2_LLOPM_VOL, DACR1_2_RLOPM_VOL,
 			 0, 118, 1, output_stage_tlv),
-	SOC_SINGLE("LineL Playback Switch", LLOPM_CTRL, 3, 0x01, 0),
-	SOC_SINGLE("LineR Playback Switch", RLOPM_CTRL, 3, 0x01, 0),
-	SOC_DOUBLE_R_TLV("LineL DAC Playback Volume",
-			 DACL1_2_LLOPM_VOL, DACR1_2_LLOPM_VOL,
-			 0, 118, 1, output_stage_tlv),
-	SOC_SINGLE_TLV("LineL Left PGA Bypass Playback Volume",
-		       PGAL_2_LLOPM_VOL, 0, 118, 1, output_stage_tlv),
-	SOC_SINGLE_TLV("LineR Right PGA Bypass Playback Volume",
-		       PGAR_2_RLOPM_VOL, 0, 118, 1, output_stage_tlv),
-	SOC_DOUBLE_R_TLV("LineL Line2 Bypass Playback Volume",
-			 LINE2L_2_LLOPM_VOL, LINE2R_2_LLOPM_VOL,
-			 0, 118, 1, output_stage_tlv),
-	SOC_DOUBLE_R_TLV("LineR Line2 Bypass Playback Volume",
-			 LINE2L_2_RLOPM_VOL, LINE2R_2_RLOPM_VOL,
-			 0, 118, 1, output_stage_tlv),
 
+	SOC_DOUBLE_R_TLV("Mono Line2 Bypass Volume",
+			 LINE2L_2_MONOLOPM_VOL, LINE2R_2_MONOLOPM_VOL,
+			 0, 118, 1, output_stage_tlv),
+	SOC_DOUBLE_R_TLV("Mono PGA Bypass Volume",
+			 PGAL_2_MONOLOPM_VOL, PGAR_2_MONOLOPM_VOL,
+			 0, 118, 1, output_stage_tlv),
 	SOC_DOUBLE_R_TLV("Mono DAC Playback Volume",
 			 DACL1_2_MONOLOPM_VOL, DACR1_2_MONOLOPM_VOL,
 			 0, 118, 1, output_stage_tlv),
-	SOC_SINGLE("Mono DAC Playback Switch", MONOLOPM_CTRL, 3, 0x01, 0),
-	SOC_DOUBLE_R_TLV("Mono PGA Bypass Playback Volume",
-			 PGAL_2_MONOLOPM_VOL, PGAR_2_MONOLOPM_VOL,
-			 0, 118, 1, output_stage_tlv),
-	SOC_DOUBLE_R_TLV("Mono Line2 Bypass Playback Volume",
-			 LINE2L_2_MONOLOPM_VOL, LINE2R_2_MONOLOPM_VOL,
-			 0, 118, 1, output_stage_tlv),
 
+	SOC_DOUBLE_R_TLV("HP Line2 Bypass Volume",
+			 LINE2L_2_HPLOUT_VOL, LINE2R_2_HPROUT_VOL,
+			 0, 118, 1, output_stage_tlv),
+	SOC_DOUBLE_R_TLV("HP PGA Bypass Volume",
+			 PGAL_2_HPLOUT_VOL, PGAR_2_HPROUT_VOL,
+			 0, 118, 1, output_stage_tlv),
 	SOC_DOUBLE_R_TLV("HP DAC Playback Volume",
 			 DACL1_2_HPLOUT_VOL, DACR1_2_HPROUT_VOL,
 			 0, 118, 1, output_stage_tlv),
-	SOC_DOUBLE_R("HP DAC Playback Switch", HPLOUT_CTRL, HPROUT_CTRL, 3,
-		     0x01, 0),
-	SOC_DOUBLE_R_TLV("HP Right PGA Bypass Playback Volume",
-			 PGAR_2_HPLOUT_VOL, PGAR_2_HPROUT_VOL,
-			 0, 118, 1, output_stage_tlv),
-	SOC_SINGLE_TLV("HPL PGA Bypass Playback Volume",
-		       PGAL_2_HPLOUT_VOL, 0, 118, 1, output_stage_tlv),
-	SOC_SINGLE_TLV("HPR PGA Bypass Playback Volume",
-		       PGAL_2_HPROUT_VOL, 0, 118, 1, output_stage_tlv),
-	SOC_DOUBLE_R_TLV("HP Line2 Bypass Playback Volume",
-			 LINE2L_2_HPLOUT_VOL, LINE2R_2_HPROUT_VOL,
-			 0, 118, 1, output_stage_tlv),
 
+	SOC_DOUBLE_R_TLV("HPCOM Line2 Bypass Volume",
+			 LINE2L_2_HPLCOM_VOL, LINE2R_2_HPRCOM_VOL,
+			 0, 118, 1, output_stage_tlv),
+	SOC_DOUBLE_R_TLV("HPCOM PGA Bypass Volume",
+			 PGAL_2_HPLCOM_VOL, PGAR_2_HPRCOM_VOL,
+			 0, 118, 1, output_stage_tlv),
 	SOC_DOUBLE_R_TLV("HPCOM DAC Playback Volume",
 			 DACL1_2_HPLCOM_VOL, DACR1_2_HPRCOM_VOL,
 			 0, 118, 1, output_stage_tlv),
-	SOC_DOUBLE_R("HPCOM DAC Playback Switch", HPLCOM_CTRL, HPRCOM_CTRL, 3,
+
+	/* Output pin mute controls */
+	SOC_DOUBLE_R("Line Playback Switch", LLOPM_CTRL, RLOPM_CTRL, 3,
 		     0x01, 0),
-	SOC_SINGLE_TLV("HPLCOM PGA Bypass Playback Volume",
-		       PGAL_2_HPLCOM_VOL, 0, 118, 1, output_stage_tlv),
-	SOC_SINGLE_TLV("HPRCOM PGA Bypass Playback Volume",
-		       PGAL_2_HPRCOM_VOL, 0, 118, 1, output_stage_tlv),
-	SOC_DOUBLE_R_TLV("HPCOM Line2 Bypass Playback Volume",
-			 LINE2L_2_HPLCOM_VOL, LINE2R_2_HPRCOM_VOL,
-			 0, 118, 1, output_stage_tlv),
+	SOC_SINGLE("Mono Playback Switch", MONOLOPM_CTRL, 3, 0x01, 0),
+	SOC_DOUBLE_R("HP Playback Switch", HPLOUT_CTRL, HPROUT_CTRL, 3,
+		     0x01, 0),
+	SOC_DOUBLE_R("HPCOM Playback Switch", HPLCOM_CTRL, HPRCOM_CTRL, 3,
+		     0x01, 0),
 
 	/*
 	 * Note: enable Automatic input Gain Controller with care. It can
@@ -359,6 +374,14 @@
 	SOC_ENUM("ADC HPF Cut-off", aic3x_enum[ADC_HPF_ENUM]),
 };
 
+/*
+ * Class-D amplifier gain. From 0 to 18 dB in 6 dB steps
+ */
+static DECLARE_TLV_DB_SCALE(classd_amp_tlv, 0, 600, 0);
+
+static const struct snd_kcontrol_new aic3x_classd_amp_gain_ctrl =
+	SOC_DOUBLE_TLV("Class-D Amplifier Gain", CLASSD_CTRL, 6, 4, 3, 0, classd_amp_tlv);
+
 /* Left DAC Mux */
 static const struct snd_kcontrol_new aic3x_left_dac_mux_controls =
 SOC_DAPM_ENUM("Route", aic3x_enum[LDAC_ENUM]);
@@ -375,22 +398,74 @@
 static const struct snd_kcontrol_new aic3x_right_hpcom_mux_controls =
 SOC_DAPM_ENUM("Route", aic3x_enum[RHPCOM_ENUM]);
 
-/* Left DAC_L1 Mixer */
-static const struct snd_kcontrol_new aic3x_left_dac_mixer_controls[] = {
-	SOC_DAPM_SINGLE("LineL Switch", DACL1_2_LLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("LineR Switch", DACL1_2_RLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("Mono Switch", DACL1_2_MONOLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HP Switch", DACL1_2_HPLOUT_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HPCOM Switch", DACL1_2_HPLCOM_VOL, 7, 1, 0),
+/* Left Line Mixer */
+static const struct snd_kcontrol_new aic3x_left_line_mixer_controls[] = {
+	SOC_DAPM_SINGLE("Line2L Bypass Switch", LINE2L_2_LLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("PGAL Bypass Switch", PGAL_2_LLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("DACL1 Switch", DACL1_2_LLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("Line2R Bypass Switch", LINE2R_2_LLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("PGAR Bypass Switch", PGAR_2_LLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("DACR1 Switch", DACR1_2_LLOPM_VOL, 7, 1, 0),
 };
 
-/* Right DAC_R1 Mixer */
-static const struct snd_kcontrol_new aic3x_right_dac_mixer_controls[] = {
-	SOC_DAPM_SINGLE("LineL Switch", DACR1_2_LLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("LineR Switch", DACR1_2_RLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("Mono Switch", DACR1_2_MONOLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HP Switch", DACR1_2_HPROUT_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HPCOM Switch", DACR1_2_HPRCOM_VOL, 7, 1, 0),
+/* Right Line Mixer */
+static const struct snd_kcontrol_new aic3x_right_line_mixer_controls[] = {
+	SOC_DAPM_SINGLE("Line2L Bypass Switch", LINE2L_2_RLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("PGAL Bypass Switch", PGAL_2_RLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("DACL1 Switch", DACL1_2_RLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("Line2R Bypass Switch", LINE2R_2_RLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("PGAR Bypass Switch", PGAR_2_RLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("DACR1 Switch", DACR1_2_RLOPM_VOL, 7, 1, 0),
+};
+
+/* Mono Mixer */
+static const struct snd_kcontrol_new aic3x_mono_mixer_controls[] = {
+	SOC_DAPM_SINGLE("Line2L Bypass Switch", LINE2L_2_MONOLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("PGAL Bypass Switch", PGAL_2_MONOLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("DACL1 Switch", DACL1_2_MONOLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("Line2R Bypass Switch", LINE2R_2_MONOLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("PGAR Bypass Switch", PGAR_2_MONOLOPM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("DACR1 Switch", DACR1_2_MONOLOPM_VOL, 7, 1, 0),
+};
+
+/* Left HP Mixer */
+static const struct snd_kcontrol_new aic3x_left_hp_mixer_controls[] = {
+	SOC_DAPM_SINGLE("Line2L Bypass Switch", LINE2L_2_HPLOUT_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("PGAL Bypass Switch", PGAL_2_HPLOUT_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("DACL1 Switch", DACL1_2_HPLOUT_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("Line2R Bypass Switch", LINE2R_2_HPLOUT_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("PGAR Bypass Switch", PGAR_2_HPLOUT_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("DACR1 Switch", DACR1_2_HPLOUT_VOL, 7, 1, 0),
+};
+
+/* Right HP Mixer */
+static const struct snd_kcontrol_new aic3x_right_hp_mixer_controls[] = {
+	SOC_DAPM_SINGLE("Line2L Bypass Switch", LINE2L_2_HPROUT_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("PGAL Bypass Switch", PGAL_2_HPROUT_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("DACL1 Switch", DACL1_2_HPROUT_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("Line2R Bypass Switch", LINE2R_2_HPROUT_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("PGAR Bypass Switch", PGAR_2_HPROUT_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("DACR1 Switch", DACR1_2_HPROUT_VOL, 7, 1, 0),
+};
+
+/* Left HPCOM Mixer */
+static const struct snd_kcontrol_new aic3x_left_hpcom_mixer_controls[] = {
+	SOC_DAPM_SINGLE("Line2L Bypass Switch", LINE2L_2_HPLCOM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("PGAL Bypass Switch", PGAL_2_HPLCOM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("DACL1 Switch", DACL1_2_HPLCOM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("Line2R Bypass Switch", LINE2R_2_HPLCOM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("PGAR Bypass Switch", PGAR_2_HPLCOM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("DACR1 Switch", DACR1_2_HPLCOM_VOL, 7, 1, 0),
+};
+
+/* Right HPCOM Mixer */
+static const struct snd_kcontrol_new aic3x_right_hpcom_mixer_controls[] = {
+	SOC_DAPM_SINGLE("Line2L Bypass Switch", LINE2L_2_HPRCOM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("PGAL Bypass Switch", PGAL_2_HPRCOM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("DACL1 Switch", DACL1_2_HPRCOM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("Line2R Bypass Switch", LINE2R_2_HPRCOM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("PGAR Bypass Switch", PGAR_2_HPRCOM_VOL, 7, 1, 0),
+	SOC_DAPM_SINGLE("DACR1 Switch", DACR1_2_HPRCOM_VOL, 7, 1, 0),
 };
 
 /* Left PGA Mixer */
@@ -427,54 +502,11 @@
 static const struct snd_kcontrol_new aic3x_right_line2_mux_controls =
 SOC_DAPM_ENUM("Route", aic3x_enum[LINE2R_ENUM]);
 
-/* Left PGA Bypass Mixer */
-static const struct snd_kcontrol_new aic3x_left_pga_bp_mixer_controls[] = {
-	SOC_DAPM_SINGLE("LineL Switch", PGAL_2_LLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("LineR Switch", PGAL_2_RLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("Mono Switch", PGAL_2_MONOLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HPL Switch", PGAL_2_HPLOUT_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HPR Switch", PGAL_2_HPROUT_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HPLCOM Switch", PGAL_2_HPLCOM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HPRCOM Switch", PGAL_2_HPRCOM_VOL, 7, 1, 0),
-};
-
-/* Right PGA Bypass Mixer */
-static const struct snd_kcontrol_new aic3x_right_pga_bp_mixer_controls[] = {
-	SOC_DAPM_SINGLE("LineL Switch", PGAR_2_LLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("LineR Switch", PGAR_2_RLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("Mono Switch", PGAR_2_MONOLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HPL Switch", PGAR_2_HPLOUT_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HPR Switch", PGAR_2_HPROUT_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HPLCOM Switch", PGAR_2_HPLCOM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HPRCOM Switch", PGAR_2_HPRCOM_VOL, 7, 1, 0),
-};
-
-/* Left Line2 Bypass Mixer */
-static const struct snd_kcontrol_new aic3x_left_line2_bp_mixer_controls[] = {
-	SOC_DAPM_SINGLE("LineL Switch", LINE2L_2_LLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("LineR Switch", LINE2L_2_RLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("Mono Switch", LINE2L_2_MONOLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HP Switch", LINE2L_2_HPLOUT_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HPLCOM Switch", LINE2L_2_HPLCOM_VOL, 7, 1, 0),
-};
-
-/* Right Line2 Bypass Mixer */
-static const struct snd_kcontrol_new aic3x_right_line2_bp_mixer_controls[] = {
-	SOC_DAPM_SINGLE("LineL Switch", LINE2R_2_LLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("LineR Switch", LINE2R_2_RLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("Mono Switch", LINE2R_2_MONOLOPM_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HP Switch", LINE2R_2_HPROUT_VOL, 7, 1, 0),
-	SOC_DAPM_SINGLE("HPRCOM Switch", LINE2R_2_HPRCOM_VOL, 7, 1, 0),
-};
-
 static const struct snd_soc_dapm_widget aic3x_dapm_widgets[] = {
 	/* Left DAC to Left Outputs */
 	SND_SOC_DAPM_DAC("Left DAC", "Left Playback", DAC_PWR, 7, 0),
 	SND_SOC_DAPM_MUX("Left DAC Mux", SND_SOC_NOPM, 0, 0,
 			 &aic3x_left_dac_mux_controls),
-	SND_SOC_DAPM_MIXER("Left DAC_L1 Mixer", SND_SOC_NOPM, 0, 0,
-			   &aic3x_left_dac_mixer_controls[0],
-			   ARRAY_SIZE(aic3x_left_dac_mixer_controls)),
 	SND_SOC_DAPM_MUX("Left HPCOM Mux", SND_SOC_NOPM, 0, 0,
 			 &aic3x_left_hpcom_mux_controls),
 	SND_SOC_DAPM_PGA("Left Line Out", LLOPM_CTRL, 0, 0, NULL, 0),
@@ -485,9 +517,6 @@
 	SND_SOC_DAPM_DAC("Right DAC", "Right Playback", DAC_PWR, 6, 0),
 	SND_SOC_DAPM_MUX("Right DAC Mux", SND_SOC_NOPM, 0, 0,
 			 &aic3x_right_dac_mux_controls),
-	SND_SOC_DAPM_MIXER("Right DAC_R1 Mixer", SND_SOC_NOPM, 0, 0,
-			   &aic3x_right_dac_mixer_controls[0],
-			   ARRAY_SIZE(aic3x_right_dac_mixer_controls)),
 	SND_SOC_DAPM_MUX("Right HPCOM Mux", SND_SOC_NOPM, 0, 0,
 			 &aic3x_right_hpcom_mux_controls),
 	SND_SOC_DAPM_PGA("Right Line Out", RLOPM_CTRL, 0, 0, NULL, 0),
@@ -551,25 +580,28 @@
 	SND_SOC_DAPM_REG(snd_soc_dapm_micbias, "Mic Bias AVDD",
 			 MICBIAS_CTRL, 6, 3, 3, 0),
 
-	/* Left PGA to Left Output bypass */
-	SND_SOC_DAPM_MIXER("Left PGA Bypass Mixer", SND_SOC_NOPM, 0, 0,
-			   &aic3x_left_pga_bp_mixer_controls[0],
-			   ARRAY_SIZE(aic3x_left_pga_bp_mixer_controls)),
-
-	/* Right PGA to Right Output bypass */
-	SND_SOC_DAPM_MIXER("Right PGA Bypass Mixer", SND_SOC_NOPM, 0, 0,
-			   &aic3x_right_pga_bp_mixer_controls[0],
-			   ARRAY_SIZE(aic3x_right_pga_bp_mixer_controls)),
-
-	/* Left Line2 to Left Output bypass */
-	SND_SOC_DAPM_MIXER("Left Line2 Bypass Mixer", SND_SOC_NOPM, 0, 0,
-			   &aic3x_left_line2_bp_mixer_controls[0],
-			   ARRAY_SIZE(aic3x_left_line2_bp_mixer_controls)),
-
-	/* Right Line2 to Right Output bypass */
-	SND_SOC_DAPM_MIXER("Right Line2 Bypass Mixer", SND_SOC_NOPM, 0, 0,
-			   &aic3x_right_line2_bp_mixer_controls[0],
-			   ARRAY_SIZE(aic3x_right_line2_bp_mixer_controls)),
+	/* Output mixers */
+	SND_SOC_DAPM_MIXER("Left Line Mixer", SND_SOC_NOPM, 0, 0,
+			   &aic3x_left_line_mixer_controls[0],
+			   ARRAY_SIZE(aic3x_left_line_mixer_controls)),
+	SND_SOC_DAPM_MIXER("Right Line Mixer", SND_SOC_NOPM, 0, 0,
+			   &aic3x_right_line_mixer_controls[0],
+			   ARRAY_SIZE(aic3x_right_line_mixer_controls)),
+	SND_SOC_DAPM_MIXER("Mono Mixer", SND_SOC_NOPM, 0, 0,
+			   &aic3x_mono_mixer_controls[0],
+			   ARRAY_SIZE(aic3x_mono_mixer_controls)),
+	SND_SOC_DAPM_MIXER("Left HP Mixer", SND_SOC_NOPM, 0, 0,
+			   &aic3x_left_hp_mixer_controls[0],
+			   ARRAY_SIZE(aic3x_left_hp_mixer_controls)),
+	SND_SOC_DAPM_MIXER("Right HP Mixer", SND_SOC_NOPM, 0, 0,
+			   &aic3x_right_hp_mixer_controls[0],
+			   ARRAY_SIZE(aic3x_right_hp_mixer_controls)),
+	SND_SOC_DAPM_MIXER("Left HPCOM Mixer", SND_SOC_NOPM, 0, 0,
+			   &aic3x_left_hpcom_mixer_controls[0],
+			   ARRAY_SIZE(aic3x_left_hpcom_mixer_controls)),
+	SND_SOC_DAPM_MIXER("Right HPCOM Mixer", SND_SOC_NOPM, 0, 0,
+			   &aic3x_right_hpcom_mixer_controls[0],
+			   ARRAY_SIZE(aic3x_right_hpcom_mixer_controls)),
 
 	SND_SOC_DAPM_OUTPUT("LLOUT"),
 	SND_SOC_DAPM_OUTPUT("RLOUT"),
@@ -585,69 +617,26 @@
 	SND_SOC_DAPM_INPUT("LINE1R"),
 	SND_SOC_DAPM_INPUT("LINE2L"),
 	SND_SOC_DAPM_INPUT("LINE2R"),
+
+	/*
+	 * Virtual output pin to detection block inside codec. This can be
+	 * used to keep codec bias on if gpio or detection features are needed.
+	 * Force pin on or construct a path with an input jack and mic bias
+	 * widgets.
+	 */
+	SND_SOC_DAPM_OUTPUT("Detection"),
+};
+
+static const struct snd_soc_dapm_widget aic3007_dapm_widgets[] = {
+	/* Class-D outputs */
+	SND_SOC_DAPM_PGA("Left Class-D Out", CLASSD_CTRL, 3, 0, NULL, 0),
+	SND_SOC_DAPM_PGA("Right Class-D Out", CLASSD_CTRL, 2, 0, NULL, 0),
+
+	SND_SOC_DAPM_OUTPUT("SPOP"),
+	SND_SOC_DAPM_OUTPUT("SPOM"),
 };
 
 static const struct snd_soc_dapm_route intercon[] = {
-	/* Left Output */
-	{"Left DAC Mux", "DAC_L1", "Left DAC"},
-	{"Left DAC Mux", "DAC_L2", "Left DAC"},
-	{"Left DAC Mux", "DAC_L3", "Left DAC"},
-
-	{"Left DAC_L1 Mixer", "LineL Switch", "Left DAC Mux"},
-	{"Left DAC_L1 Mixer", "LineR Switch", "Left DAC Mux"},
-	{"Left DAC_L1 Mixer", "Mono Switch", "Left DAC Mux"},
-	{"Left DAC_L1 Mixer", "HP Switch", "Left DAC Mux"},
-	{"Left DAC_L1 Mixer", "HPCOM Switch", "Left DAC Mux"},
-	{"Left Line Out", NULL, "Left DAC Mux"},
-	{"Left HP Out", NULL, "Left DAC Mux"},
-
-	{"Left HPCOM Mux", "differential of HPLOUT", "Left DAC_L1 Mixer"},
-	{"Left HPCOM Mux", "constant VCM", "Left DAC_L1 Mixer"},
-	{"Left HPCOM Mux", "single-ended", "Left DAC_L1 Mixer"},
-
-	{"Left Line Out", NULL, "Left DAC_L1 Mixer"},
-	{"Mono Out", NULL, "Left DAC_L1 Mixer"},
-	{"Left HP Out", NULL, "Left DAC_L1 Mixer"},
-	{"Left HP Com", NULL, "Left HPCOM Mux"},
-
-	{"LLOUT", NULL, "Left Line Out"},
-	{"LLOUT", NULL, "Left Line Out"},
-	{"HPLOUT", NULL, "Left HP Out"},
-	{"HPLCOM", NULL, "Left HP Com"},
-
-	/* Right Output */
-	{"Right DAC Mux", "DAC_R1", "Right DAC"},
-	{"Right DAC Mux", "DAC_R2", "Right DAC"},
-	{"Right DAC Mux", "DAC_R3", "Right DAC"},
-
-	{"Right DAC_R1 Mixer", "LineL Switch", "Right DAC Mux"},
-	{"Right DAC_R1 Mixer", "LineR Switch", "Right DAC Mux"},
-	{"Right DAC_R1 Mixer", "Mono Switch", "Right DAC Mux"},
-	{"Right DAC_R1 Mixer", "HP Switch", "Right DAC Mux"},
-	{"Right DAC_R1 Mixer", "HPCOM Switch", "Right DAC Mux"},
-	{"Right Line Out", NULL, "Right DAC Mux"},
-	{"Right HP Out", NULL, "Right DAC Mux"},
-
-	{"Right HPCOM Mux", "differential of HPROUT", "Right DAC_R1 Mixer"},
-	{"Right HPCOM Mux", "constant VCM", "Right DAC_R1 Mixer"},
-	{"Right HPCOM Mux", "single-ended", "Right DAC_R1 Mixer"},
-	{"Right HPCOM Mux", "differential of HPLCOM", "Right DAC_R1 Mixer"},
-	{"Right HPCOM Mux", "external feedback", "Right DAC_R1 Mixer"},
-
-	{"Right Line Out", NULL, "Right DAC_R1 Mixer"},
-	{"Mono Out", NULL, "Right DAC_R1 Mixer"},
-	{"Right HP Out", NULL, "Right DAC_R1 Mixer"},
-	{"Right HP Com", NULL, "Right HPCOM Mux"},
-
-	{"RLOUT", NULL, "Right Line Out"},
-	{"RLOUT", NULL, "Right Line Out"},
-	{"HPROUT", NULL, "Right HP Out"},
-	{"HPRCOM", NULL, "Right HP Com"},
-
-	/* Mono Output */
-	{"MONO_LOUT", NULL, "Mono Out"},
-	{"MONO_LOUT", NULL, "Mono Out"},
-
 	/* Left Input */
 	{"Left Line1L Mux", "single-ended", "LINE1L"},
 	{"Left Line1L Mux", "differential", "LINE1L"},
@@ -680,74 +669,6 @@
 	{"Right ADC", NULL, "Right PGA Mixer"},
 	{"Right ADC", NULL, "GPIO1 dmic modclk"},
 
-	/* Left PGA Bypass */
-	{"Left PGA Bypass Mixer", "LineL Switch", "Left PGA Mixer"},
-	{"Left PGA Bypass Mixer", "LineR Switch", "Left PGA Mixer"},
-	{"Left PGA Bypass Mixer", "Mono Switch", "Left PGA Mixer"},
-	{"Left PGA Bypass Mixer", "HPL Switch", "Left PGA Mixer"},
-	{"Left PGA Bypass Mixer", "HPR Switch", "Left PGA Mixer"},
-	{"Left PGA Bypass Mixer", "HPLCOM Switch", "Left PGA Mixer"},
-	{"Left PGA Bypass Mixer", "HPRCOM Switch", "Left PGA Mixer"},
-
-	{"Left HPCOM Mux", "differential of HPLOUT", "Left PGA Bypass Mixer"},
-	{"Left HPCOM Mux", "constant VCM", "Left PGA Bypass Mixer"},
-	{"Left HPCOM Mux", "single-ended", "Left PGA Bypass Mixer"},
-
-	{"Left Line Out", NULL, "Left PGA Bypass Mixer"},
-	{"Mono Out", NULL, "Left PGA Bypass Mixer"},
-	{"Left HP Out", NULL, "Left PGA Bypass Mixer"},
-
-	/* Right PGA Bypass */
-	{"Right PGA Bypass Mixer", "LineL Switch", "Right PGA Mixer"},
-	{"Right PGA Bypass Mixer", "LineR Switch", "Right PGA Mixer"},
-	{"Right PGA Bypass Mixer", "Mono Switch", "Right PGA Mixer"},
-	{"Right PGA Bypass Mixer", "HPL Switch", "Right PGA Mixer"},
-	{"Right PGA Bypass Mixer", "HPR Switch", "Right PGA Mixer"},
-	{"Right PGA Bypass Mixer", "HPLCOM Switch", "Right PGA Mixer"},
-	{"Right PGA Bypass Mixer", "HPRCOM Switch", "Right PGA Mixer"},
-
-	{"Right HPCOM Mux", "differential of HPROUT", "Right PGA Bypass Mixer"},
-	{"Right HPCOM Mux", "constant VCM", "Right PGA Bypass Mixer"},
-	{"Right HPCOM Mux", "single-ended", "Right PGA Bypass Mixer"},
-	{"Right HPCOM Mux", "differential of HPLCOM", "Right PGA Bypass Mixer"},
-	{"Right HPCOM Mux", "external feedback", "Right PGA Bypass Mixer"},
-
-	{"Right Line Out", NULL, "Right PGA Bypass Mixer"},
-	{"Mono Out", NULL, "Right PGA Bypass Mixer"},
-	{"Right HP Out", NULL, "Right PGA Bypass Mixer"},
-
-	/* Left Line2 Bypass */
-	{"Left Line2 Bypass Mixer", "LineL Switch", "Left Line2L Mux"},
-	{"Left Line2 Bypass Mixer", "LineR Switch", "Left Line2L Mux"},
-	{"Left Line2 Bypass Mixer", "Mono Switch", "Left Line2L Mux"},
-	{"Left Line2 Bypass Mixer", "HP Switch", "Left Line2L Mux"},
-	{"Left Line2 Bypass Mixer", "HPLCOM Switch", "Left Line2L Mux"},
-
-	{"Left HPCOM Mux", "differential of HPLOUT", "Left Line2 Bypass Mixer"},
-	{"Left HPCOM Mux", "constant VCM", "Left Line2 Bypass Mixer"},
-	{"Left HPCOM Mux", "single-ended", "Left Line2 Bypass Mixer"},
-
-	{"Left Line Out", NULL, "Left Line2 Bypass Mixer"},
-	{"Mono Out", NULL, "Left Line2 Bypass Mixer"},
-	{"Left HP Out", NULL, "Left Line2 Bypass Mixer"},
-
-	/* Right Line2 Bypass */
-	{"Right Line2 Bypass Mixer", "LineL Switch", "Right Line2R Mux"},
-	{"Right Line2 Bypass Mixer", "LineR Switch", "Right Line2R Mux"},
-	{"Right Line2 Bypass Mixer", "Mono Switch", "Right Line2R Mux"},
-	{"Right Line2 Bypass Mixer", "HP Switch", "Right Line2R Mux"},
-	{"Right Line2 Bypass Mixer", "HPRCOM Switch", "Right Line2R Mux"},
-
-	{"Right HPCOM Mux", "differential of HPROUT", "Right Line2 Bypass Mixer"},
-	{"Right HPCOM Mux", "constant VCM", "Right Line2 Bypass Mixer"},
-	{"Right HPCOM Mux", "single-ended", "Right Line2 Bypass Mixer"},
-	{"Right HPCOM Mux", "differential of HPLCOM", "Right Line2 Bypass Mixer"},
-	{"Right HPCOM Mux", "external feedback", "Right Line2 Bypass Mixer"},
-
-	{"Right Line Out", NULL, "Right Line2 Bypass Mixer"},
-	{"Mono Out", NULL, "Right Line2 Bypass Mixer"},
-	{"Right HP Out", NULL, "Right Line2 Bypass Mixer"},
-
 	/*
 	 * Logical path between digital mic enable and GPIO1 modulator clock
 	 * output function
@@ -755,16 +676,131 @@
 	{"GPIO1 dmic modclk", NULL, "DMic Rate 128"},
 	{"GPIO1 dmic modclk", NULL, "DMic Rate 64"},
 	{"GPIO1 dmic modclk", NULL, "DMic Rate 32"},
+
+	/* Left DAC Output */
+	{"Left DAC Mux", "DAC_L1", "Left DAC"},
+	{"Left DAC Mux", "DAC_L2", "Left DAC"},
+	{"Left DAC Mux", "DAC_L3", "Left DAC"},
+
+	/* Right DAC Output */
+	{"Right DAC Mux", "DAC_R1", "Right DAC"},
+	{"Right DAC Mux", "DAC_R2", "Right DAC"},
+	{"Right DAC Mux", "DAC_R3", "Right DAC"},
+
+	/* Left Line Output */
+	{"Left Line Mixer", "Line2L Bypass Switch", "Left Line2L Mux"},
+	{"Left Line Mixer", "PGAL Bypass Switch", "Left PGA Mixer"},
+	{"Left Line Mixer", "DACL1 Switch", "Left DAC Mux"},
+	{"Left Line Mixer", "Line2R Bypass Switch", "Right Line2R Mux"},
+	{"Left Line Mixer", "PGAR Bypass Switch", "Right PGA Mixer"},
+	{"Left Line Mixer", "DACR1 Switch", "Right DAC Mux"},
+
+	{"Left Line Out", NULL, "Left Line Mixer"},
+	{"Left Line Out", NULL, "Left DAC Mux"},
+	{"LLOUT", NULL, "Left Line Out"},
+
+	/* Right Line Output */
+	{"Right Line Mixer", "Line2L Bypass Switch", "Left Line2L Mux"},
+	{"Right Line Mixer", "PGAL Bypass Switch", "Left PGA Mixer"},
+	{"Right Line Mixer", "DACL1 Switch", "Left DAC Mux"},
+	{"Right Line Mixer", "Line2R Bypass Switch", "Right Line2R Mux"},
+	{"Right Line Mixer", "PGAR Bypass Switch", "Right PGA Mixer"},
+	{"Right Line Mixer", "DACR1 Switch", "Right DAC Mux"},
+
+	{"Right Line Out", NULL, "Right Line Mixer"},
+	{"Right Line Out", NULL, "Right DAC Mux"},
+	{"RLOUT", NULL, "Right Line Out"},
+
+	/* Mono Output */
+	{"Mono Mixer", "Line2L Bypass Switch", "Left Line2L Mux"},
+	{"Mono Mixer", "PGAL Bypass Switch", "Left PGA Mixer"},
+	{"Mono Mixer", "DACL1 Switch", "Left DAC Mux"},
+	{"Mono Mixer", "Line2R Bypass Switch", "Right Line2R Mux"},
+	{"Mono Mixer", "PGAR Bypass Switch", "Right PGA Mixer"},
+	{"Mono Mixer", "DACR1 Switch", "Right DAC Mux"},
+
+	{"Mono Out", NULL, "Mono Mixer"},
+	{"MONO_LOUT", NULL, "Mono Out"},
+
+	/* Left HP Output */
+	{"Left HP Mixer", "Line2L Bypass Switch", "Left Line2L Mux"},
+	{"Left HP Mixer", "PGAL Bypass Switch", "Left PGA Mixer"},
+	{"Left HP Mixer", "DACL1 Switch", "Left DAC Mux"},
+	{"Left HP Mixer", "Line2R Bypass Switch", "Right Line2R Mux"},
+	{"Left HP Mixer", "PGAR Bypass Switch", "Right PGA Mixer"},
+	{"Left HP Mixer", "DACR1 Switch", "Right DAC Mux"},
+
+	{"Left HP Out", NULL, "Left HP Mixer"},
+	{"Left HP Out", NULL, "Left DAC Mux"},
+	{"HPLOUT", NULL, "Left HP Out"},
+
+	/* Right HP Output */
+	{"Right HP Mixer", "Line2L Bypass Switch", "Left Line2L Mux"},
+	{"Right HP Mixer", "PGAL Bypass Switch", "Left PGA Mixer"},
+	{"Right HP Mixer", "DACL1 Switch", "Left DAC Mux"},
+	{"Right HP Mixer", "Line2R Bypass Switch", "Right Line2R Mux"},
+	{"Right HP Mixer", "PGAR Bypass Switch", "Right PGA Mixer"},
+	{"Right HP Mixer", "DACR1 Switch", "Right DAC Mux"},
+
+	{"Right HP Out", NULL, "Right HP Mixer"},
+	{"Right HP Out", NULL, "Right DAC Mux"},
+	{"HPROUT", NULL, "Right HP Out"},
+
+	/* Left HPCOM Output */
+	{"Left HPCOM Mixer", "Line2L Bypass Switch", "Left Line2L Mux"},
+	{"Left HPCOM Mixer", "PGAL Bypass Switch", "Left PGA Mixer"},
+	{"Left HPCOM Mixer", "DACL1 Switch", "Left DAC Mux"},
+	{"Left HPCOM Mixer", "Line2R Bypass Switch", "Right Line2R Mux"},
+	{"Left HPCOM Mixer", "PGAR Bypass Switch", "Right PGA Mixer"},
+	{"Left HPCOM Mixer", "DACR1 Switch", "Right DAC Mux"},
+
+	{"Left HPCOM Mux", "differential of HPLOUT", "Left HP Mixer"},
+	{"Left HPCOM Mux", "constant VCM", "Left HPCOM Mixer"},
+	{"Left HPCOM Mux", "single-ended", "Left HPCOM Mixer"},
+	{"Left HP Com", NULL, "Left HPCOM Mux"},
+	{"HPLCOM", NULL, "Left HP Com"},
+
+	/* Right HPCOM Output */
+	{"Right HPCOM Mixer", "Line2L Bypass Switch", "Left Line2L Mux"},
+	{"Right HPCOM Mixer", "PGAL Bypass Switch", "Left PGA Mixer"},
+	{"Right HPCOM Mixer", "DACL1 Switch", "Left DAC Mux"},
+	{"Right HPCOM Mixer", "Line2R Bypass Switch", "Right Line2R Mux"},
+	{"Right HPCOM Mixer", "PGAR Bypass Switch", "Right PGA Mixer"},
+	{"Right HPCOM Mixer", "DACR1 Switch", "Right DAC Mux"},
+
+	{"Right HPCOM Mux", "differential of HPROUT", "Right HP Mixer"},
+	{"Right HPCOM Mux", "constant VCM", "Right HPCOM Mixer"},
+	{"Right HPCOM Mux", "single-ended", "Right HPCOM Mixer"},
+	{"Right HPCOM Mux", "differential of HPLCOM", "Left HPCOM Mixer"},
+	{"Right HPCOM Mux", "external feedback", "Right HPCOM Mixer"},
+	{"Right HP Com", NULL, "Right HPCOM Mux"},
+	{"HPRCOM", NULL, "Right HP Com"},
+};
+
+static const struct snd_soc_dapm_route intercon_3007[] = {
+	/* Class-D outputs */
+	{"Left Class-D Out", NULL, "Left Line Out"},
+	{"Right Class-D Out", NULL, "Left Line Out"},
+	{"SPOP", NULL, "Left Class-D Out"},
+	{"SPOM", NULL, "Right Class-D Out"},
 };
 
 static int aic3x_add_widgets(struct snd_soc_codec *codec)
 {
+	struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec);
+
 	snd_soc_dapm_new_controls(codec, aic3x_dapm_widgets,
 				  ARRAY_SIZE(aic3x_dapm_widgets));
 
 	/* set up audio path interconnects */
 	snd_soc_dapm_add_routes(codec, intercon, ARRAY_SIZE(intercon));
 
+	if (aic3x->model == AIC3X_MODEL_3007) {
+		snd_soc_dapm_new_controls(codec, aic3007_dapm_widgets,
+			ARRAY_SIZE(aic3007_dapm_widgets));
+		snd_soc_dapm_add_routes(codec, intercon_3007, ARRAY_SIZE(intercon_3007));
+	}
+
 	return 0;
 }
 
@@ -773,8 +809,7 @@
 			   struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec =rtd->codec;
 	struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec);
 	int codec_clk = 0, bypass_pll = 0, fsref, last_clk = 0;
 	u8 data, j, r, p, pll_q, pll_p = 1, pll_r = 1, pll_j = 1;
@@ -783,8 +818,7 @@
 	int clk;
 
 	/* select data word length */
-	data =
-	    aic3x_read_reg_cache(codec, AIC3X_ASD_INTF_CTRLB) & (~(0x3 << 4));
+	data = snd_soc_read(codec, AIC3X_ASD_INTF_CTRLB) & (~(0x3 << 4));
 	switch (params_format(params)) {
 	case SNDRV_PCM_FORMAT_S16_LE:
 		break;
@@ -798,7 +832,7 @@
 		data |= (0x03 << 4);
 		break;
 	}
-	aic3x_write(codec, AIC3X_ASD_INTF_CTRLB, data);
+	snd_soc_write(codec, AIC3X_ASD_INTF_CTRLB, data);
 
 	/* Fsref can be 44100 or 48000 */
 	fsref = (params_rate(params) % 11025 == 0) ? 44100 : 48000;
@@ -813,17 +847,17 @@
 
 	if (bypass_pll) {
 		pll_q &= 0xf;
-		aic3x_write(codec, AIC3X_PLL_PROGA_REG, pll_q << PLLQ_SHIFT);
-		aic3x_write(codec, AIC3X_GPIOB_REG, CODEC_CLKIN_CLKDIV);
+		snd_soc_write(codec, AIC3X_PLL_PROGA_REG, pll_q << PLLQ_SHIFT);
+		snd_soc_write(codec, AIC3X_GPIOB_REG, CODEC_CLKIN_CLKDIV);
 		/* disable PLL if it is bypassed */
-		reg = aic3x_read_reg_cache(codec, AIC3X_PLL_PROGA_REG);
-		aic3x_write(codec, AIC3X_PLL_PROGA_REG, reg & ~PLL_ENABLE);
+		reg = snd_soc_read(codec, AIC3X_PLL_PROGA_REG);
+		snd_soc_write(codec, AIC3X_PLL_PROGA_REG, reg & ~PLL_ENABLE);
 
 	} else {
-		aic3x_write(codec, AIC3X_GPIOB_REG, CODEC_CLKIN_PLLDIV);
+		snd_soc_write(codec, AIC3X_GPIOB_REG, CODEC_CLKIN_PLLDIV);
 		/* enable PLL when it is used */
-		reg = aic3x_read_reg_cache(codec, AIC3X_PLL_PROGA_REG);
-		aic3x_write(codec, AIC3X_PLL_PROGA_REG, reg | PLL_ENABLE);
+		reg = snd_soc_read(codec, AIC3X_PLL_PROGA_REG);
+		snd_soc_write(codec, AIC3X_PLL_PROGA_REG, reg | PLL_ENABLE);
 	}
 
 	/* Route Left DAC to left channel input and
@@ -832,7 +866,7 @@
 	data |= (fsref == 44100) ? FSREF_44100 : FSREF_48000;
 	if (params_rate(params) >= 64000)
 		data |= DUAL_RATE_MODE;
-	aic3x_write(codec, AIC3X_CODEC_DATAPATH_REG, data);
+	snd_soc_write(codec, AIC3X_CODEC_DATAPATH_REG, data);
 
 	/* codec sample rate select */
 	data = (fsref * 20) / params_rate(params);
@@ -841,7 +875,7 @@
 	data /= 5;
 	data -= 2;
 	data |= (data << 4);
-	aic3x_write(codec, AIC3X_SAMPLE_RATE_SEL_REG, data);
+	snd_soc_write(codec, AIC3X_SAMPLE_RATE_SEL_REG, data);
 
 	if (bypass_pll)
 		return 0;
@@ -910,13 +944,16 @@
 	}
 
 found:
-	data = aic3x_read_reg_cache(codec, AIC3X_PLL_PROGA_REG);
-	aic3x_write(codec, AIC3X_PLL_PROGA_REG, data | (pll_p << PLLP_SHIFT));
-	aic3x_write(codec, AIC3X_OVRF_STATUS_AND_PLLR_REG, pll_r << PLLR_SHIFT);
-	aic3x_write(codec, AIC3X_PLL_PROGB_REG, pll_j << PLLJ_SHIFT);
-	aic3x_write(codec, AIC3X_PLL_PROGC_REG, (pll_d >> 6) << PLLD_MSB_SHIFT);
-	aic3x_write(codec, AIC3X_PLL_PROGD_REG,
-		    (pll_d & 0x3F) << PLLD_LSB_SHIFT);
+	data = snd_soc_read(codec, AIC3X_PLL_PROGA_REG);
+	snd_soc_write(codec, AIC3X_PLL_PROGA_REG,
+		      data | (pll_p << PLLP_SHIFT));
+	snd_soc_write(codec, AIC3X_OVRF_STATUS_AND_PLLR_REG,
+		      pll_r << PLLR_SHIFT);
+	snd_soc_write(codec, AIC3X_PLL_PROGB_REG, pll_j << PLLJ_SHIFT);
+	snd_soc_write(codec, AIC3X_PLL_PROGC_REG,
+		      (pll_d >> 6) << PLLD_MSB_SHIFT);
+	snd_soc_write(codec, AIC3X_PLL_PROGD_REG,
+		      (pll_d & 0x3F) << PLLD_LSB_SHIFT);
 
 	return 0;
 }
@@ -924,15 +961,15 @@
 static int aic3x_mute(struct snd_soc_dai *dai, int mute)
 {
 	struct snd_soc_codec *codec = dai->codec;
-	u8 ldac_reg = aic3x_read_reg_cache(codec, LDAC_VOL) & ~MUTE_ON;
-	u8 rdac_reg = aic3x_read_reg_cache(codec, RDAC_VOL) & ~MUTE_ON;
+	u8 ldac_reg = snd_soc_read(codec, LDAC_VOL) & ~MUTE_ON;
+	u8 rdac_reg = snd_soc_read(codec, RDAC_VOL) & ~MUTE_ON;
 
 	if (mute) {
-		aic3x_write(codec, LDAC_VOL, ldac_reg | MUTE_ON);
-		aic3x_write(codec, RDAC_VOL, rdac_reg | MUTE_ON);
+		snd_soc_write(codec, LDAC_VOL, ldac_reg | MUTE_ON);
+		snd_soc_write(codec, RDAC_VOL, rdac_reg | MUTE_ON);
 	} else {
-		aic3x_write(codec, LDAC_VOL, ldac_reg);
-		aic3x_write(codec, RDAC_VOL, rdac_reg);
+		snd_soc_write(codec, LDAC_VOL, ldac_reg);
+		snd_soc_write(codec, RDAC_VOL, rdac_reg);
 	}
 
 	return 0;
@@ -956,8 +993,8 @@
 	u8 iface_areg, iface_breg;
 	int delay = 0;
 
-	iface_areg = aic3x_read_reg_cache(codec, AIC3X_ASD_INTF_CTRLA) & 0x3f;
-	iface_breg = aic3x_read_reg_cache(codec, AIC3X_ASD_INTF_CTRLB) & 0x3f;
+	iface_areg = snd_soc_read(codec, AIC3X_ASD_INTF_CTRLA) & 0x3f;
+	iface_breg = snd_soc_read(codec, AIC3X_ASD_INTF_CTRLB) & 0x3f;
 
 	/* set master/slave audio interface */
 	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
@@ -996,13 +1033,98 @@
 	}
 
 	/* set iface */
-	aic3x_write(codec, AIC3X_ASD_INTF_CTRLA, iface_areg);
-	aic3x_write(codec, AIC3X_ASD_INTF_CTRLB, iface_breg);
-	aic3x_write(codec, AIC3X_ASD_INTF_CTRLC, delay);
+	snd_soc_write(codec, AIC3X_ASD_INTF_CTRLA, iface_areg);
+	snd_soc_write(codec, AIC3X_ASD_INTF_CTRLB, iface_breg);
+	snd_soc_write(codec, AIC3X_ASD_INTF_CTRLC, delay);
 
 	return 0;
 }
 
+static int aic3x_init_3007(struct snd_soc_codec *codec)
+{
+	u8 tmp1, tmp2, *cache = codec->reg_cache;
+
+	/*
+	 * There is no need to cache writes to undocumented page 0xD but
+	 * respective page 0 register cache entries must be preserved
+	 */
+	tmp1 = cache[0xD];
+	tmp2 = cache[0x8];
+	/* Class-D speaker driver init; datasheet p. 46 */
+	snd_soc_write(codec, AIC3X_PAGE_SELECT, 0x0D);
+	snd_soc_write(codec, 0xD, 0x0D);
+	snd_soc_write(codec, 0x8, 0x5C);
+	snd_soc_write(codec, 0x8, 0x5D);
+	snd_soc_write(codec, 0x8, 0x5C);
+	snd_soc_write(codec, AIC3X_PAGE_SELECT, 0x00);
+	cache[0xD] = tmp1;
+	cache[0x8] = tmp2;
+
+	return 0;
+}
+
+static int aic3x_regulator_event(struct notifier_block *nb,
+				 unsigned long event, void *data)
+{
+	struct aic3x_disable_nb *disable_nb =
+		container_of(nb, struct aic3x_disable_nb, nb);
+	struct aic3x_priv *aic3x = disable_nb->aic3x;
+
+	if (event & REGULATOR_EVENT_DISABLE) {
+		/*
+		 * Put codec to reset and require cache sync as at least one
+		 * of the supplies was disabled
+		 */
+		if (aic3x->gpio_reset >= 0)
+			gpio_set_value(aic3x->gpio_reset, 0);
+		aic3x->codec->cache_sync = 1;
+	}
+
+	return 0;
+}
+
+static int aic3x_set_power(struct snd_soc_codec *codec, int power)
+{
+	struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec);
+	int i, ret;
+	u8 *cache = codec->reg_cache;
+
+	if (power) {
+		ret = regulator_bulk_enable(ARRAY_SIZE(aic3x->supplies),
+					    aic3x->supplies);
+		if (ret)
+			goto out;
+		aic3x->power = 1;
+		/*
+		 * Reset release and cache sync is necessary only if some
+		 * supply was off or if there were cached writes
+		 */
+		if (!codec->cache_sync)
+			goto out;
+
+		if (aic3x->gpio_reset >= 0) {
+			udelay(1);
+			gpio_set_value(aic3x->gpio_reset, 1);
+		}
+
+		/* Sync reg_cache with the hardware */
+		codec->cache_only = 0;
+		for (i = 0; i < ARRAY_SIZE(aic3x_reg); i++)
+			snd_soc_write(codec, i, cache[i]);
+		if (aic3x->model == AIC3X_MODEL_3007)
+			aic3x_init_3007(codec);
+		codec->cache_sync = 0;
+	} else {
+		aic3x->power = 0;
+		/* HW writes are needless when bias is off */
+		codec->cache_only = 1;
+		ret = regulator_bulk_disable(ARRAY_SIZE(aic3x->supplies),
+					     aic3x->supplies);
+	}
+out:
+	return ret;
+}
+
 static int aic3x_set_bias_level(struct snd_soc_codec *codec,
 				enum snd_soc_bias_level level)
 {
@@ -1013,23 +1135,29 @@
 	case SND_SOC_BIAS_ON:
 		break;
 	case SND_SOC_BIAS_PREPARE:
-		if (aic3x->master) {
+		if (codec->bias_level == SND_SOC_BIAS_STANDBY &&
+		    aic3x->master) {
 			/* enable pll */
-			reg = aic3x_read_reg_cache(codec, AIC3X_PLL_PROGA_REG);
-			aic3x_write(codec, AIC3X_PLL_PROGA_REG,
-				    reg | PLL_ENABLE);
+			reg = snd_soc_read(codec, AIC3X_PLL_PROGA_REG);
+			snd_soc_write(codec, AIC3X_PLL_PROGA_REG,
+				      reg | PLL_ENABLE);
 		}
 		break;
 	case SND_SOC_BIAS_STANDBY:
-		/* fall through and disable pll */
-	case SND_SOC_BIAS_OFF:
-		if (aic3x->master) {
+		if (!aic3x->power)
+			aic3x_set_power(codec, 1);
+		if (codec->bias_level == SND_SOC_BIAS_PREPARE &&
+		    aic3x->master) {
 			/* disable pll */
-			reg = aic3x_read_reg_cache(codec, AIC3X_PLL_PROGA_REG);
-			aic3x_write(codec, AIC3X_PLL_PROGA_REG,
-				    reg & ~PLL_ENABLE);
+			reg = snd_soc_read(codec, AIC3X_PLL_PROGA_REG);
+			snd_soc_write(codec, AIC3X_PLL_PROGA_REG,
+				      reg & ~PLL_ENABLE);
 		}
 		break;
+	case SND_SOC_BIAS_OFF:
+		if (aic3x->power)
+			aic3x_set_power(codec, 0);
+		break;
 	}
 	codec->bias_level = level;
 
@@ -1040,8 +1168,8 @@
 {
 	u8 reg = gpio ? AIC3X_GPIO2_REG : AIC3X_GPIO1_REG;
 	u8 bit = gpio ? 3: 0;
-	u8 val = aic3x_read_reg_cache(codec, reg) & ~(1 << bit);
-	aic3x_write(codec, reg, val | (!!state << bit));
+	u8 val = snd_soc_read(codec, reg) & ~(1 << bit);
+	snd_soc_write(codec, reg, val | (!!state << bit));
 }
 EXPORT_SYMBOL_GPL(aic3x_set_gpio);
 
@@ -1070,7 +1198,7 @@
 	if (detect & AIC3X_HEADSET_DETECT_MASK)
 		val |= AIC3X_HEADSET_DETECT_ENABLED;
 
-	aic3x_write(codec, AIC3X_HEADSET_DETECT_CTRL_A, val);
+	snd_soc_write(codec, AIC3X_HEADSET_DETECT_CTRL_A, val);
 }
 EXPORT_SYMBOL_GPL(aic3x_set_headset_detection);
 
@@ -1101,8 +1229,8 @@
 	.set_fmt	= aic3x_set_dai_fmt,
 };
 
-struct snd_soc_dai aic3x_dai = {
-	.name = "tlv320aic3x",
+static struct snd_soc_dai_driver aic3x_dai = {
+	.name = "tlv320aic3x-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -1116,34 +1244,18 @@
 		.rates = AIC3X_RATES,
 		.formats = AIC3X_FORMATS,},
 	.ops = &aic3x_dai_ops,
+	.symmetric_rates = 1,
 };
-EXPORT_SYMBOL_GPL(aic3x_dai);
 
-static int aic3x_suspend(struct platform_device *pdev, pm_message_t state)
+static int aic3x_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	aic3x_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
 	return 0;
 }
 
-static int aic3x_resume(struct platform_device *pdev)
+static int aic3x_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-	int i;
-	u8 data[2];
-	u8 *cache = codec->reg_cache;
-
-	/* Sync reg_cache with the hardware */
-	for (i = 0; i < ARRAY_SIZE(aic3x_reg); i++) {
-		data[0] = i;
-		data[1] = cache[i];
-		codec->hw_write(codec->control_data, data, 2);
-	}
-
 	aic3x_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	return 0;
@@ -1155,184 +1267,102 @@
  */
 static int aic3x_init(struct snd_soc_codec *codec)
 {
+	struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec);
 	int reg;
 
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->name = "tlv320aic3x";
-	codec->owner = THIS_MODULE;
-	codec->read = aic3x_read_reg_cache;
-	codec->write = aic3x_write;
-	codec->set_bias_level = aic3x_set_bias_level;
-	codec->dai = &aic3x_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = ARRAY_SIZE(aic3x_reg);
-	codec->reg_cache = kmemdup(aic3x_reg, sizeof(aic3x_reg), GFP_KERNEL);
-	if (codec->reg_cache == NULL)
-		return -ENOMEM;
-
-	aic3x_write(codec, AIC3X_PAGE_SELECT, PAGE0_SELECT);
-	aic3x_write(codec, AIC3X_RESET, SOFT_RESET);
+	snd_soc_write(codec, AIC3X_PAGE_SELECT, PAGE0_SELECT);
+	snd_soc_write(codec, AIC3X_RESET, SOFT_RESET);
 
 	/* DAC default volume and mute */
-	aic3x_write(codec, LDAC_VOL, DEFAULT_VOL | MUTE_ON);
-	aic3x_write(codec, RDAC_VOL, DEFAULT_VOL | MUTE_ON);
+	snd_soc_write(codec, LDAC_VOL, DEFAULT_VOL | MUTE_ON);
+	snd_soc_write(codec, RDAC_VOL, DEFAULT_VOL | MUTE_ON);
 
 	/* DAC to HP default volume and route to Output mixer */
-	aic3x_write(codec, DACL1_2_HPLOUT_VOL, DEFAULT_VOL | ROUTE_ON);
-	aic3x_write(codec, DACR1_2_HPROUT_VOL, DEFAULT_VOL | ROUTE_ON);
-	aic3x_write(codec, DACL1_2_HPLCOM_VOL, DEFAULT_VOL | ROUTE_ON);
-	aic3x_write(codec, DACR1_2_HPRCOM_VOL, DEFAULT_VOL | ROUTE_ON);
+	snd_soc_write(codec, DACL1_2_HPLOUT_VOL, DEFAULT_VOL | ROUTE_ON);
+	snd_soc_write(codec, DACR1_2_HPROUT_VOL, DEFAULT_VOL | ROUTE_ON);
+	snd_soc_write(codec, DACL1_2_HPLCOM_VOL, DEFAULT_VOL | ROUTE_ON);
+	snd_soc_write(codec, DACR1_2_HPRCOM_VOL, DEFAULT_VOL | ROUTE_ON);
 	/* DAC to Line Out default volume and route to Output mixer */
-	aic3x_write(codec, DACL1_2_LLOPM_VOL, DEFAULT_VOL | ROUTE_ON);
-	aic3x_write(codec, DACR1_2_RLOPM_VOL, DEFAULT_VOL | ROUTE_ON);
+	snd_soc_write(codec, DACL1_2_LLOPM_VOL, DEFAULT_VOL | ROUTE_ON);
+	snd_soc_write(codec, DACR1_2_RLOPM_VOL, DEFAULT_VOL | ROUTE_ON);
 	/* DAC to Mono Line Out default volume and route to Output mixer */
-	aic3x_write(codec, DACL1_2_MONOLOPM_VOL, DEFAULT_VOL | ROUTE_ON);
-	aic3x_write(codec, DACR1_2_MONOLOPM_VOL, DEFAULT_VOL | ROUTE_ON);
+	snd_soc_write(codec, DACL1_2_MONOLOPM_VOL, DEFAULT_VOL | ROUTE_ON);
+	snd_soc_write(codec, DACR1_2_MONOLOPM_VOL, DEFAULT_VOL | ROUTE_ON);
 
 	/* unmute all outputs */
-	reg = aic3x_read_reg_cache(codec, LLOPM_CTRL);
-	aic3x_write(codec, LLOPM_CTRL, reg | UNMUTE);
-	reg = aic3x_read_reg_cache(codec, RLOPM_CTRL);
-	aic3x_write(codec, RLOPM_CTRL, reg | UNMUTE);
-	reg = aic3x_read_reg_cache(codec, MONOLOPM_CTRL);
-	aic3x_write(codec, MONOLOPM_CTRL, reg | UNMUTE);
-	reg = aic3x_read_reg_cache(codec, HPLOUT_CTRL);
-	aic3x_write(codec, HPLOUT_CTRL, reg | UNMUTE);
-	reg = aic3x_read_reg_cache(codec, HPROUT_CTRL);
-	aic3x_write(codec, HPROUT_CTRL, reg | UNMUTE);
-	reg = aic3x_read_reg_cache(codec, HPLCOM_CTRL);
-	aic3x_write(codec, HPLCOM_CTRL, reg | UNMUTE);
-	reg = aic3x_read_reg_cache(codec, HPRCOM_CTRL);
-	aic3x_write(codec, HPRCOM_CTRL, reg | UNMUTE);
+	reg = snd_soc_read(codec, LLOPM_CTRL);
+	snd_soc_write(codec, LLOPM_CTRL, reg | UNMUTE);
+	reg = snd_soc_read(codec, RLOPM_CTRL);
+	snd_soc_write(codec, RLOPM_CTRL, reg | UNMUTE);
+	reg = snd_soc_read(codec, MONOLOPM_CTRL);
+	snd_soc_write(codec, MONOLOPM_CTRL, reg | UNMUTE);
+	reg = snd_soc_read(codec, HPLOUT_CTRL);
+	snd_soc_write(codec, HPLOUT_CTRL, reg | UNMUTE);
+	reg = snd_soc_read(codec, HPROUT_CTRL);
+	snd_soc_write(codec, HPROUT_CTRL, reg | UNMUTE);
+	reg = snd_soc_read(codec, HPLCOM_CTRL);
+	snd_soc_write(codec, HPLCOM_CTRL, reg | UNMUTE);
+	reg = snd_soc_read(codec, HPRCOM_CTRL);
+	snd_soc_write(codec, HPRCOM_CTRL, reg | UNMUTE);
 
 	/* ADC default volume and unmute */
-	aic3x_write(codec, LADC_VOL, DEFAULT_GAIN);
-	aic3x_write(codec, RADC_VOL, DEFAULT_GAIN);
+	snd_soc_write(codec, LADC_VOL, DEFAULT_GAIN);
+	snd_soc_write(codec, RADC_VOL, DEFAULT_GAIN);
 	/* By default route Line1 to ADC PGA mixer */
-	aic3x_write(codec, LINE1L_2_LADC_CTRL, 0x0);
-	aic3x_write(codec, LINE1R_2_RADC_CTRL, 0x0);
+	snd_soc_write(codec, LINE1L_2_LADC_CTRL, 0x0);
+	snd_soc_write(codec, LINE1R_2_RADC_CTRL, 0x0);
 
 	/* PGA to HP Bypass default volume, disconnect from Output Mixer */
-	aic3x_write(codec, PGAL_2_HPLOUT_VOL, DEFAULT_VOL);
-	aic3x_write(codec, PGAR_2_HPROUT_VOL, DEFAULT_VOL);
-	aic3x_write(codec, PGAL_2_HPLCOM_VOL, DEFAULT_VOL);
-	aic3x_write(codec, PGAR_2_HPRCOM_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, PGAL_2_HPLOUT_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, PGAR_2_HPROUT_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, PGAL_2_HPLCOM_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, PGAR_2_HPRCOM_VOL, DEFAULT_VOL);
 	/* PGA to Line Out default volume, disconnect from Output Mixer */
-	aic3x_write(codec, PGAL_2_LLOPM_VOL, DEFAULT_VOL);
-	aic3x_write(codec, PGAR_2_RLOPM_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, PGAL_2_LLOPM_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, PGAR_2_RLOPM_VOL, DEFAULT_VOL);
 	/* PGA to Mono Line Out default volume, disconnect from Output Mixer */
-	aic3x_write(codec, PGAL_2_MONOLOPM_VOL, DEFAULT_VOL);
-	aic3x_write(codec, PGAR_2_MONOLOPM_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, PGAL_2_MONOLOPM_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, PGAR_2_MONOLOPM_VOL, DEFAULT_VOL);
 
 	/* Line2 to HP Bypass default volume, disconnect from Output Mixer */
-	aic3x_write(codec, LINE2L_2_HPLOUT_VOL, DEFAULT_VOL);
-	aic3x_write(codec, LINE2R_2_HPROUT_VOL, DEFAULT_VOL);
-	aic3x_write(codec, LINE2L_2_HPLCOM_VOL, DEFAULT_VOL);
-	aic3x_write(codec, LINE2R_2_HPRCOM_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, LINE2L_2_HPLOUT_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, LINE2R_2_HPROUT_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, LINE2L_2_HPLCOM_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, LINE2R_2_HPRCOM_VOL, DEFAULT_VOL);
 	/* Line2 Line Out default volume, disconnect from Output Mixer */
-	aic3x_write(codec, LINE2L_2_LLOPM_VOL, DEFAULT_VOL);
-	aic3x_write(codec, LINE2R_2_RLOPM_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, LINE2L_2_LLOPM_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, LINE2R_2_RLOPM_VOL, DEFAULT_VOL);
 	/* Line2 to Mono Out default volume, disconnect from Output Mixer */
-	aic3x_write(codec, LINE2L_2_MONOLOPM_VOL, DEFAULT_VOL);
-	aic3x_write(codec, LINE2R_2_MONOLOPM_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, LINE2L_2_MONOLOPM_VOL, DEFAULT_VOL);
+	snd_soc_write(codec, LINE2R_2_MONOLOPM_VOL, DEFAULT_VOL);
 
-	/* off, with power on */
-	aic3x_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
-	return 0;
-}
-
-static struct snd_soc_codec *aic3x_codec;
-
-static int aic3x_register(struct snd_soc_codec *codec)
-{
-	int ret;
-
-	ret = aic3x_init(codec);
-	if (ret < 0) {
-		dev_err(codec->dev, "Failed to initialise device\n");
-		return ret;
-	}
-
-	aic3x_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret) {
-		dev_err(codec->dev, "Failed to register codec\n");
-		return ret;
-	}
-
-	ret = snd_soc_register_dai(&aic3x_dai);
-	if (ret) {
-		dev_err(codec->dev, "Failed to register dai\n");
-		snd_soc_unregister_codec(codec);
-		return ret;
+	if (aic3x->model == AIC3X_MODEL_3007) {
+		aic3x_init_3007(codec);
+		snd_soc_write(codec, CLASSD_CTRL, 0);
 	}
 
 	return 0;
 }
 
-static int aic3x_unregister(struct aic3x_priv *aic3x)
+static int aic3x_probe(struct snd_soc_codec *codec)
 {
-	aic3x_set_bias_level(&aic3x->codec, SND_SOC_BIAS_OFF);
-
-	snd_soc_unregister_dai(&aic3x_dai);
-	snd_soc_unregister_codec(&aic3x->codec);
-
-	if (aic3x->gpio_reset >= 0) {
-		gpio_set_value(aic3x->gpio_reset, 0);
-		gpio_free(aic3x->gpio_reset);
-	}
-	regulator_bulk_disable(ARRAY_SIZE(aic3x->supplies), aic3x->supplies);
-	regulator_bulk_free(ARRAY_SIZE(aic3x->supplies), aic3x->supplies);
-
-	kfree(aic3x);
-	aic3x_codec = NULL;
-
-	return 0;
-}
-
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-/*
- * AIC3X 2 wire address can be up to 4 devices with device addresses
- * 0x18, 0x19, 0x1A, 0x1B
- */
-
-/*
- * If the i2c layer weren't so broken, we could pass this kind of data
- * around
- */
-static int aic3x_i2c_probe(struct i2c_client *i2c,
-			   const struct i2c_device_id *id)
-{
-	struct snd_soc_codec *codec;
-	struct aic3x_priv *aic3x;
-	struct aic3x_pdata *pdata = i2c->dev.platform_data;
+	struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec);
 	int ret, i;
 
-	aic3x = kzalloc(sizeof(struct aic3x_priv), GFP_KERNEL);
-	if (aic3x == NULL) {
-		dev_err(&i2c->dev, "failed to create private data\n");
-		return -ENOMEM;
+	codec->control_data = aic3x->control_data;
+	aic3x->codec = codec;
+	codec->idle_bias_off = 1;
+
+	ret = snd_soc_codec_set_cache_io(codec, 8, 8, aic3x->control_type);
+	if (ret != 0) {
+		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
+		return ret;
 	}
 
-	codec = &aic3x->codec;
-	codec->dev = &i2c->dev;
-	snd_soc_codec_set_drvdata(codec, aic3x);
-	codec->control_data = i2c;
-	codec->hw_write = (hw_write_t) i2c_master_send;
-
-	i2c_set_clientdata(i2c, aic3x);
-
-	aic3x->gpio_reset = -1;
-	if (pdata && pdata->gpio_reset >= 0) {
-		ret = gpio_request(pdata->gpio_reset, "tlv320aic3x reset");
+	if (aic3x->gpio_reset >= 0) {
+		ret = gpio_request(aic3x->gpio_reset, "tlv320aic3x reset");
 		if (ret != 0)
 			goto err_gpio;
-		aic3x->gpio_reset = pdata->gpio_reset;
 		gpio_direction_output(aic3x->gpio_reset, 0);
 	}
 
@@ -1345,22 +1375,43 @@
 		dev_err(codec->dev, "Failed to request supplies: %d\n", ret);
 		goto err_get;
 	}
-
-	ret = regulator_bulk_enable(ARRAY_SIZE(aic3x->supplies),
-				    aic3x->supplies);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to enable supplies: %d\n", ret);
-		goto err_enable;
+	for (i = 0; i < ARRAY_SIZE(aic3x->supplies); i++) {
+		aic3x->disable_nb[i].nb.notifier_call = aic3x_regulator_event;
+		aic3x->disable_nb[i].aic3x = aic3x;
+		ret = regulator_register_notifier(aic3x->supplies[i].consumer,
+						  &aic3x->disable_nb[i].nb);
+		if (ret) {
+			dev_err(codec->dev,
+				"Failed to request regulator notifier: %d\n",
+				 ret);
+			goto err_notif;
+		}
 	}
 
-	if (aic3x->gpio_reset >= 0) {
-		udelay(1);
-		gpio_set_value(aic3x->gpio_reset, 1);
+	codec->cache_only = 1;
+	aic3x_init(codec);
+
+	if (aic3x->setup) {
+		/* setup GPIO functions */
+		snd_soc_write(codec, AIC3X_GPIO1_REG,
+			      (aic3x->setup->gpio_func[0] & 0xf) << 4);
+		snd_soc_write(codec, AIC3X_GPIO2_REG,
+			      (aic3x->setup->gpio_func[1] & 0xf) << 4);
 	}
 
-	return aic3x_register(codec);
+	snd_soc_add_controls(codec, aic3x_snd_controls,
+			     ARRAY_SIZE(aic3x_snd_controls));
+	if (aic3x->model == AIC3X_MODEL_3007)
+		snd_soc_add_controls(codec, &aic3x_classd_amp_gain_ctrl, 1);
 
-err_enable:
+	aic3x_add_widgets(codec);
+
+	return 0;
+
+err_notif:
+	while (i--)
+		regulator_unregister_notifier(aic3x->supplies[i].consumer,
+					      &aic3x->disable_nb[i].nb);
 	regulator_bulk_free(ARRAY_SIZE(aic3x->supplies), aic3x->supplies);
 err_get:
 	if (aic3x->gpio_reset >= 0)
@@ -1370,24 +1421,102 @@
 	return ret;
 }
 
-static int aic3x_i2c_remove(struct i2c_client *client)
+static int aic3x_remove(struct snd_soc_codec *codec)
 {
-	struct aic3x_priv *aic3x = i2c_get_clientdata(client);
+	struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec);
+	int i;
 
-	return aic3x_unregister(aic3x);
+	aic3x_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	if (aic3x->gpio_reset >= 0) {
+		gpio_set_value(aic3x->gpio_reset, 0);
+		gpio_free(aic3x->gpio_reset);
+	}
+	for (i = 0; i < ARRAY_SIZE(aic3x->supplies); i++)
+		regulator_unregister_notifier(aic3x->supplies[i].consumer,
+					      &aic3x->disable_nb[i].nb);
+	regulator_bulk_free(ARRAY_SIZE(aic3x->supplies), aic3x->supplies);
+
+	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_aic3x = {
+	.set_bias_level = aic3x_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(aic3x_reg),
+	.reg_word_size = sizeof(u8),
+	.reg_cache_default = aic3x_reg,
+	.probe = aic3x_probe,
+	.remove = aic3x_remove,
+	.suspend = aic3x_suspend,
+	.resume = aic3x_resume,
+};
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+/*
+ * AIC3X 2 wire address can be up to 4 devices with device addresses
+ * 0x18, 0x19, 0x1A, 0x1B
+ */
+
 static const struct i2c_device_id aic3x_i2c_id[] = {
-	{ "tlv320aic3x", 0 },
-	{ "tlv320aic33", 0 },
+	[AIC3X_MODEL_3X] = { "tlv320aic3x", 0 },
+	[AIC3X_MODEL_33] = { "tlv320aic33", 0 },
+	[AIC3X_MODEL_3007] = { "tlv320aic3007", 0 },
 	{ }
 };
 MODULE_DEVICE_TABLE(i2c, aic3x_i2c_id);
 
+/*
+ * If the i2c layer weren't so broken, we could pass this kind of data
+ * around
+ */
+static int aic3x_i2c_probe(struct i2c_client *i2c,
+			   const struct i2c_device_id *id)
+{
+	struct aic3x_pdata *pdata = i2c->dev.platform_data;
+	struct aic3x_priv *aic3x;
+	int ret;
+	const struct i2c_device_id *tbl;
+
+	aic3x = kzalloc(sizeof(struct aic3x_priv), GFP_KERNEL);
+	if (aic3x == NULL) {
+		dev_err(&i2c->dev, "failed to create private data\n");
+		return -ENOMEM;
+	}
+
+	aic3x->control_data = i2c;
+	aic3x->control_type = SND_SOC_I2C;
+
+	i2c_set_clientdata(i2c, aic3x);
+	if (pdata) {
+		aic3x->gpio_reset = pdata->gpio_reset;
+		aic3x->setup = pdata->setup;
+	} else {
+		aic3x->gpio_reset = -1;
+	}
+
+	for (tbl = aic3x_i2c_id; tbl->name[0]; tbl++) {
+		if (!strcmp(tbl->name, id->name))
+			break;
+	}
+	aic3x->model = tbl - aic3x_i2c_id;
+
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_aic3x, &aic3x_dai, 1);
+	if (ret < 0)
+		kfree(aic3x);
+	return ret;
+}
+
+static int aic3x_i2c_remove(struct i2c_client *client)
+{
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
+	return 0;
+}
+
 /* machine i2c codec control layer */
 static struct i2c_driver aic3x_i2c_driver = {
 	.driver = {
-		.name = "aic3x I2C Codec",
+		.name = "tlv320aic3x-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe	= aic3x_i2c_probe,
@@ -1409,90 +1538,27 @@
 {
 	i2c_del_driver(&aic3x_i2c_driver);
 }
-#else
-static inline void aic3x_i2c_init(void) { }
-static inline void aic3x_i2c_exit(void) { }
 #endif
 
-static int aic3x_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct aic3x_setup_data *setup;
-	struct snd_soc_codec *codec;
-	int ret = 0;
-
-	codec = aic3x_codec;
-	if (!codec) {
-		dev_err(&pdev->dev, "Codec not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = codec;
-	setup = socdev->codec_data;
-
-	if (setup) {
-		/* setup GPIO functions */
-		aic3x_write(codec, AIC3X_GPIO1_REG,
-			    (setup->gpio_func[0] & 0xf) << 4);
-		aic3x_write(codec, AIC3X_GPIO2_REG,
-			    (setup->gpio_func[1] & 0xf) << 4);
-	}
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "aic3x: failed to create pcms\n");
-		goto pcm_err;
-	}
-
-	snd_soc_add_controls(codec, aic3x_snd_controls,
-			     ARRAY_SIZE(aic3x_snd_controls));
-
-	aic3x_add_widgets(codec);
-
-	return ret;
-
-pcm_err:
-	kfree(codec->reg_cache);
-	return ret;
-}
-
-static int aic3x_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	/* power down chip */
-	if (codec->control_data)
-		aic3x_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	kfree(codec->reg_cache);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_aic3x = {
-	.probe = aic3x_probe,
-	.remove = aic3x_remove,
-	.suspend = aic3x_suspend,
-	.resume = aic3x_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_aic3x);
-
 static int __init aic3x_modinit(void)
 {
-	aic3x_i2c_init();
-
-	return 0;
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	ret = i2c_add_driver(&aic3x_i2c_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register TLV320AIC3x I2C driver: %d\n",
+		       ret);
+	}
+#endif
+	return ret;
 }
 module_init(aic3x_modinit);
 
 static void __exit aic3x_exit(void)
 {
-	aic3x_i2c_exit();
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	i2c_del_driver(&aic3x_i2c_driver);
+#endif
 }
 module_exit(aic3x_exit);
 
diff --git a/sound/soc/codecs/tlv320aic3x.h b/sound/soc/codecs/tlv320aic3x.h
index 9af1c88..06a1978 100644
--- a/sound/soc/codecs/tlv320aic3x.h
+++ b/sound/soc/codecs/tlv320aic3x.h
@@ -81,50 +81,63 @@
 /* DAC Digital control registers */
 #define LDAC_VOL			43
 #define RDAC_VOL			44
-/* High Power Output control registers */
+/* Left High Power Output control registers */
 #define LINE2L_2_HPLOUT_VOL		45
-#define LINE2R_2_HPROUT_VOL		62
 #define PGAL_2_HPLOUT_VOL		46
-#define PGAL_2_HPROUT_VOL		60
-#define PGAR_2_HPLOUT_VOL		49
-#define PGAR_2_HPROUT_VOL		63
 #define DACL1_2_HPLOUT_VOL		47
-#define DACR1_2_HPROUT_VOL		64
+#define LINE2R_2_HPLOUT_VOL		48
+#define PGAR_2_HPLOUT_VOL		49
+#define DACR1_2_HPLOUT_VOL		50
 #define HPLOUT_CTRL			51
-#define HPROUT_CTRL			65
-/* High Power COM control registers */
+/* Left High Power COM control registers */
 #define LINE2L_2_HPLCOM_VOL		52
-#define LINE2R_2_HPRCOM_VOL		69
 #define PGAL_2_HPLCOM_VOL		53
-#define PGAR_2_HPLCOM_VOL		56
-#define PGAL_2_HPRCOM_VOL		67
-#define PGAR_2_HPRCOM_VOL		70
 #define DACL1_2_HPLCOM_VOL		54
-#define DACR1_2_HPRCOM_VOL		71
+#define LINE2R_2_HPLCOM_VOL		55
+#define PGAR_2_HPLCOM_VOL		56
+#define DACR1_2_HPLCOM_VOL		57
 #define HPLCOM_CTRL			58
+/* Right High Power Output control registers */
+#define LINE2L_2_HPROUT_VOL		59
+#define PGAL_2_HPROUT_VOL		60
+#define DACL1_2_HPROUT_VOL		61
+#define LINE2R_2_HPROUT_VOL		62
+#define PGAR_2_HPROUT_VOL		63
+#define DACR1_2_HPROUT_VOL		64
+#define HPROUT_CTRL			65
+/* Right High Power COM control registers */
+#define LINE2L_2_HPRCOM_VOL		66
+#define PGAL_2_HPRCOM_VOL		67
+#define DACL1_2_HPRCOM_VOL		68
+#define LINE2R_2_HPRCOM_VOL		69
+#define PGAR_2_HPRCOM_VOL		70
+#define DACR1_2_HPRCOM_VOL		71
 #define HPRCOM_CTRL			72
 /* Mono Line Output Plus/Minus control registers */
 #define LINE2L_2_MONOLOPM_VOL		73
-#define LINE2R_2_MONOLOPM_VOL		76
 #define PGAL_2_MONOLOPM_VOL		74
-#define PGAR_2_MONOLOPM_VOL		77
 #define DACL1_2_MONOLOPM_VOL		75
+#define LINE2R_2_MONOLOPM_VOL		76
+#define PGAR_2_MONOLOPM_VOL		77
 #define DACR1_2_MONOLOPM_VOL		78
 #define MONOLOPM_CTRL			79
-/* Line Output Plus/Minus control registers */
+/* Class-D speaker driver on tlv320aic3007 */
+#define CLASSD_CTRL			73
+/* Left Line Output Plus/Minus control registers */
 #define LINE2L_2_LLOPM_VOL		80
-#define LINE2L_2_RLOPM_VOL		87
-#define LINE2R_2_LLOPM_VOL		83
-#define LINE2R_2_RLOPM_VOL		90
 #define PGAL_2_LLOPM_VOL		81
-#define PGAL_2_RLOPM_VOL		88
-#define PGAR_2_LLOPM_VOL		84
-#define PGAR_2_RLOPM_VOL		91
 #define DACL1_2_LLOPM_VOL		82
-#define DACL1_2_RLOPM_VOL		89
-#define DACR1_2_RLOPM_VOL		92
+#define LINE2R_2_LLOPM_VOL		83
+#define PGAR_2_LLOPM_VOL		84
 #define DACR1_2_LLOPM_VOL		85
 #define LLOPM_CTRL			86
+/* Right Line Output Plus/Minus control registers */
+#define LINE2L_2_RLOPM_VOL		87
+#define PGAL_2_RLOPM_VOL		88
+#define DACL1_2_RLOPM_VOL		89
+#define LINE2R_2_RLOPM_VOL		90
+#define PGAR_2_RLOPM_VOL		91
+#define DACR1_2_RLOPM_VOL		92
 #define RLOPM_CTRL			93
 /* GPIO/IRQ registers */
 #define AIC3X_STICKY_IRQ_FLAGS_REG	96
@@ -199,42 +212,6 @@
 /* Default input volume */
 #define DEFAULT_GAIN    0x20
 
-/* GPIO API */
-enum {
-	AIC3X_GPIO1_FUNC_DISABLED		= 0,
-	AIC3X_GPIO1_FUNC_AUDIO_WORDCLK_ADC	= 1,
-	AIC3X_GPIO1_FUNC_CLOCK_MUX		= 2,
-	AIC3X_GPIO1_FUNC_CLOCK_MUX_DIV2		= 3,
-	AIC3X_GPIO1_FUNC_CLOCK_MUX_DIV4		= 4,
-	AIC3X_GPIO1_FUNC_CLOCK_MUX_DIV8		= 5,
-	AIC3X_GPIO1_FUNC_SHORT_CIRCUIT_IRQ	= 6,
-	AIC3X_GPIO1_FUNC_AGC_NOISE_IRQ		= 7,
-	AIC3X_GPIO1_FUNC_INPUT			= 8,
-	AIC3X_GPIO1_FUNC_OUTPUT			= 9,
-	AIC3X_GPIO1_FUNC_DIGITAL_MIC_MODCLK	= 10,
-	AIC3X_GPIO1_FUNC_AUDIO_WORDCLK		= 11,
-	AIC3X_GPIO1_FUNC_BUTTON_IRQ		= 12,
-	AIC3X_GPIO1_FUNC_HEADSET_DETECT_IRQ	= 13,
-	AIC3X_GPIO1_FUNC_HEADSET_DETECT_OR_BUTTON_IRQ	= 14,
-	AIC3X_GPIO1_FUNC_ALL_IRQ		= 16
-};
-
-enum {
-	AIC3X_GPIO2_FUNC_DISABLED		= 0,
-	AIC3X_GPIO2_FUNC_HEADSET_DETECT_IRQ	= 2,
-	AIC3X_GPIO2_FUNC_INPUT			= 3,
-	AIC3X_GPIO2_FUNC_OUTPUT			= 4,
-	AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT	= 5,
-	AIC3X_GPIO2_FUNC_AUDIO_BITCLK		= 8,
-	AIC3X_GPIO2_FUNC_HEADSET_DETECT_OR_BUTTON_IRQ = 9,
-	AIC3X_GPIO2_FUNC_ALL_IRQ		= 10,
-	AIC3X_GPIO2_FUNC_SHORT_CIRCUIT_OR_AGC_IRQ = 11,
-	AIC3X_GPIO2_FUNC_HEADSET_OR_BUTTON_PRESS_OR_SHORT_CIRCUIT_IRQ = 12,
-	AIC3X_GPIO2_FUNC_SHORT_CIRCUIT_IRQ	= 13,
-	AIC3X_GPIO2_FUNC_AGC_NOISE_IRQ		= 14,
-	AIC3X_GPIO2_FUNC_BUTTON_PRESS_IRQ	= 15
-};
-
 void aic3x_set_gpio(struct snd_soc_codec *codec, int gpio, int state);
 int aic3x_get_gpio(struct snd_soc_codec *codec, int gpio);
 
@@ -281,11 +258,4 @@
 int aic3x_headset_detected(struct snd_soc_codec *codec);
 int aic3x_button_pressed(struct snd_soc_codec *codec);
 
-struct aic3x_setup_data {
-	unsigned int gpio_func[2];
-};
-
-extern struct snd_soc_dai aic3x_dai;
-extern struct snd_soc_codec_device soc_codec_dev_aic3x;
-
 #endif /* _AIC3X_H */
diff --git a/sound/soc/codecs/tlv320dac33.c b/sound/soc/codecs/tlv320dac33.c
index 8651b01..bf6d01f 100644
--- a/sound/soc/codecs/tlv320dac33.c
+++ b/sound/soc/codecs/tlv320dac33.c
@@ -66,8 +66,6 @@
 static void dac33_calculate_times(struct snd_pcm_substream *substream);
 static int dac33_prepare_chip(struct snd_pcm_substream *substream);
 
-static struct snd_soc_codec *tlv320dac33_codec;
-
 enum dac33_state {
 	DAC33_IDLE = 0,
 	DAC33_PREFILL,
@@ -93,7 +91,7 @@
 	struct mutex mutex;
 	struct workqueue_struct *dac33_wq;
 	struct work_struct work;
-	struct snd_soc_codec codec;
+	struct snd_soc_codec *codec;
 	struct regulator_bulk_data supplies[DAC33_NUM_SUPPLIES];
 	struct snd_pcm_substream *substream;
 	int power_gpio;
@@ -128,6 +126,8 @@
 	unsigned int uthr;
 
 	enum dac33_state state;
+	enum snd_soc_control_type control_type;
+	void *control_data;
 };
 
 static const u8 dac33_reg[DAC33_CACHEREGNUM] = {
@@ -650,9 +650,7 @@
 
 static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33)
 {
-	struct snd_soc_codec *codec;
-
-	codec = &dac33->codec;
+	struct snd_soc_codec *codec = dac33->codec;
 
 	switch (dac33->fifo_mode) {
 	case DAC33_FIFO_MODE1:
@@ -695,9 +693,7 @@
 
 static inline void dac33_playback_handler(struct tlv320dac33_priv *dac33)
 {
-	struct snd_soc_codec *codec;
-
-	codec = &dac33->codec;
+	struct snd_soc_codec *codec = dac33->codec;
 
 	switch (dac33->fifo_mode) {
 	case DAC33_FIFO_MODE1:
@@ -726,7 +722,7 @@
 	u8 reg;
 
 	dac33 = container_of(work, struct tlv320dac33_priv, work);
-	codec = &dac33->codec;
+	codec = dac33->codec;
 
 	mutex_lock(&dac33->mutex);
 	switch (dac33->state) {
@@ -787,8 +783,7 @@
 			   struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
 
 	/* Stream started, save the substream pointer */
@@ -801,8 +796,7 @@
 			     struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
 
 	dac33->substream = NULL;
@@ -817,8 +811,7 @@
 			   struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 
 	/* Check parameters for validity */
 	switch (params_rate(params)) {
@@ -856,8 +849,7 @@
 static int dac33_prepare_chip(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
 	unsigned int oscset, ratioset, pwr_ctrl, reg_tmp;
 	u8 aictrl_a, aictrl_b, fifoctrl_a;
@@ -1049,8 +1041,7 @@
 static void dac33_calculate_times(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
 	unsigned int period_size = substream->runtime->period_size;
 	unsigned int rate = substream->runtime->rate;
@@ -1129,8 +1120,7 @@
 			     struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
 	int ret = 0;
 
@@ -1163,8 +1153,7 @@
 			struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
 	unsigned long long t0, t1, t_now;
 	unsigned int time_delta, uthr;
@@ -1389,24 +1378,46 @@
 	return 0;
 }
 
-static int dac33_soc_probe(struct platform_device *pdev)
+static int dac33_soc_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	struct tlv320dac33_priv *dac33;
+	struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
 	int ret = 0;
 
-	BUG_ON(!tlv320dac33_codec);
+	codec->control_data = dac33->control_data;
+	codec->hw_write = (hw_write_t) i2c_master_send;
+	codec->idle_bias_off = 1;
+	dac33->codec = codec;
 
-	codec = tlv320dac33_codec;
-	socdev->card->codec = codec;
-	dac33 = snd_soc_codec_get_drvdata(codec);
+	/* Read the tlv320dac33 ID registers */
+	ret = dac33_hard_power(codec, 1);
+	if (ret != 0) {
+		dev_err(codec->dev, "Failed to power up codec: %d\n", ret);
+		goto err_power;
+	}
+	dac33_read_id(codec);
+	dac33_hard_power(codec, 0);
 
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms\n");
-		goto pcm_err;
+	/* Check if the IRQ number is valid and request it */
+	if (dac33->irq >= 0) {
+		ret = request_irq(dac33->irq, dac33_interrupt_handler,
+				  IRQF_TRIGGER_RISING | IRQF_DISABLED,
+				  codec->name, codec);
+		if (ret < 0) {
+			dev_err(codec->dev, "Could not request IRQ%d (%d)\n",
+						dac33->irq, ret);
+			dac33->irq = -1;
+		}
+		if (dac33->irq != -1) {
+			/* Setup work queue */
+			dac33->dac33_wq =
+				create_singlethread_workqueue("tlv320dac33");
+			if (dac33->dac33_wq == NULL) {
+				free_irq(dac33->irq, codec);
+				return -ENOMEM;
+			}
+
+			INIT_WORK(&dac33->work, dac33_work);
+		}
 	}
 
 	snd_soc_add_controls(codec, dac33_snd_controls,
@@ -1420,56 +1431,51 @@
 			snd_soc_add_controls(codec, dac33_fifo_snd_controls,
 					ARRAY_SIZE(dac33_fifo_snd_controls));
 	}
-
 	dac33_add_widgets(codec);
 
-	return 0;
-
-pcm_err:
-	dac33_hard_power(codec, 0);
+err_power:
 	return ret;
 }
 
-static int dac33_soc_remove(struct platform_device *pdev)
+static int dac33_soc_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
 
 	dac33_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
+	if (dac33->irq >= 0) {
+		free_irq(dac33->irq, dac33->codec);
+		destroy_workqueue(dac33->dac33_wq);
+	}
 	return 0;
 }
 
-static int dac33_soc_suspend(struct platform_device *pdev, pm_message_t state)
+static int dac33_soc_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	dac33_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
 	return 0;
 }
 
-static int dac33_soc_resume(struct platform_device *pdev)
+static int dac33_soc_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	dac33_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	return 0;
 }
 
-struct snd_soc_codec_device soc_codec_dev_tlv320dac33 = {
+static struct snd_soc_codec_driver soc_codec_dev_tlv320dac33 = {
+	.read = dac33_read_reg_cache,
+	.write = dac33_write_locked,
+	.set_bias_level = dac33_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(dac33_reg),
+	.reg_word_size = sizeof(u8),
+	.reg_cache_default = dac33_reg,
 	.probe = dac33_soc_probe,
 	.remove = dac33_soc_remove,
 	.suspend = dac33_soc_suspend,
 	.resume = dac33_soc_resume,
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_tlv320dac33);
 
 #define DAC33_RATES	(SNDRV_PCM_RATE_44100 | \
 			 SNDRV_PCM_RATE_48000)
@@ -1485,8 +1491,8 @@
 	.set_fmt	= dac33_set_dai_fmt,
 };
 
-struct snd_soc_dai dac33_dai = {
-	.name = "tlv320dac33",
+static struct snd_soc_dai_driver dac33_dai = {
+	.name = "tlv320dac33-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 2,
@@ -1495,14 +1501,12 @@
 		.formats = DAC33_FORMATS,},
 	.ops = &dac33_dai_ops,
 };
-EXPORT_SYMBOL_GPL(dac33_dai);
 
 static int __devinit dac33_i2c_probe(struct i2c_client *client,
 				     const struct i2c_device_id *id)
 {
 	struct tlv320dac33_platform_data *pdata;
 	struct tlv320dac33_priv *dac33;
-	struct snd_soc_codec *codec;
 	int ret, i;
 
 	if (client->dev.platform_data == NULL) {
@@ -1515,33 +1519,9 @@
 	if (dac33 == NULL)
 		return -ENOMEM;
 
-	codec = &dac33->codec;
-	snd_soc_codec_set_drvdata(codec, dac33);
-	codec->control_data = client;
-
-	mutex_init(&codec->mutex);
+	dac33->control_data = client;
 	mutex_init(&dac33->mutex);
 	spin_lock_init(&dac33->lock);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->name = "tlv320dac33";
-	codec->owner = THIS_MODULE;
-	codec->read = dac33_read_reg_cache;
-	codec->write = dac33_write_locked;
-	codec->hw_write = (hw_write_t) i2c_master_send;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = dac33_set_bias_level;
-	codec->idle_bias_off = 1;
-	codec->dai = &dac33_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = ARRAY_SIZE(dac33_reg);
-	codec->reg_cache = kmemdup(dac33_reg, ARRAY_SIZE(dac33_reg),
-				   GFP_KERNEL);
-	if (codec->reg_cache == NULL) {
-		ret = -ENOMEM;
-		goto error_reg;
-	}
 
 	i2c_set_clientdata(client, dac33);
 
@@ -1561,125 +1541,59 @@
 	/* Disable FIFO use by default */
 	dac33->fifo_mode = DAC33_FIFO_BYPASS;
 
-	tlv320dac33_codec = codec;
-
-	codec->dev = &client->dev;
-	dac33_dai.dev = codec->dev;
-
 	/* Check if the reset GPIO number is valid and request it */
 	if (dac33->power_gpio >= 0) {
 		ret = gpio_request(dac33->power_gpio, "tlv320dac33 reset");
 		if (ret < 0) {
-			dev_err(codec->dev,
+			dev_err(&client->dev,
 				"Failed to request reset GPIO (%d)\n",
 				dac33->power_gpio);
-			snd_soc_unregister_dai(&dac33_dai);
-			snd_soc_unregister_codec(codec);
-			goto error_gpio;
+			goto err_gpio;
 		}
 		gpio_direction_output(dac33->power_gpio, 0);
 	}
 
-	/* Check if the IRQ number is valid and request it */
-	if (dac33->irq >= 0) {
-		ret = request_irq(dac33->irq, dac33_interrupt_handler,
-				  IRQF_TRIGGER_RISING | IRQF_DISABLED,
-				  codec->name, codec);
-		if (ret < 0) {
-			dev_err(codec->dev, "Could not request IRQ%d (%d)\n",
-						dac33->irq, ret);
-			dac33->irq = -1;
-		}
-		if (dac33->irq != -1) {
-			/* Setup work queue */
-			dac33->dac33_wq =
-				create_singlethread_workqueue("tlv320dac33");
-			if (dac33->dac33_wq == NULL) {
-				free_irq(dac33->irq, &dac33->codec);
-				ret = -ENOMEM;
-				goto error_wq;
-			}
-
-			INIT_WORK(&dac33->work, dac33_work);
-		}
-	}
-
 	for (i = 0; i < ARRAY_SIZE(dac33->supplies); i++)
 		dac33->supplies[i].supply = dac33_supply_names[i];
 
-	ret = regulator_bulk_get(codec->dev, ARRAY_SIZE(dac33->supplies),
+	ret = regulator_bulk_get(&client->dev, ARRAY_SIZE(dac33->supplies),
 				 dac33->supplies);
 
 	if (ret != 0) {
-		dev_err(codec->dev, "Failed to request supplies: %d\n", ret);
+		dev_err(&client->dev, "Failed to request supplies: %d\n", ret);
 		goto err_get;
 	}
 
-	/* Read the tlv320dac33 ID registers */
-	ret = dac33_hard_power(codec, 1);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to power up codec: %d\n", ret);
-		goto error_codec;
-	}
-	dac33_read_id(codec);
-	dac33_hard_power(codec, 0);
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto error_codec;
-	}
-
-	ret = snd_soc_register_dai(&dac33_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		snd_soc_unregister_codec(codec);
-		goto error_codec;
-	}
+	ret = snd_soc_register_codec(&client->dev,
+			&soc_codec_dev_tlv320dac33, &dac33_dai, 1);
+	if (ret < 0)
+		goto err_register;
 
 	return ret;
-
-error_codec:
+err_register:
 	regulator_bulk_free(ARRAY_SIZE(dac33->supplies), dac33->supplies);
 err_get:
-	if (dac33->irq >= 0) {
-		free_irq(dac33->irq, &dac33->codec);
-		destroy_workqueue(dac33->dac33_wq);
-	}
-error_wq:
 	if (dac33->power_gpio >= 0)
 		gpio_free(dac33->power_gpio);
-error_gpio:
-	kfree(codec->reg_cache);
-error_reg:
-	tlv320dac33_codec = NULL;
+err_gpio:
 	kfree(dac33);
-
 	return ret;
 }
 
 static int __devexit dac33_i2c_remove(struct i2c_client *client)
 {
-	struct tlv320dac33_priv *dac33;
-
-	dac33 = i2c_get_clientdata(client);
+	struct tlv320dac33_priv *dac33 = i2c_get_clientdata(client);
 
 	if (unlikely(dac33->chip_power))
-		dac33_hard_power(&dac33->codec, 0);
+		dac33_hard_power(dac33->codec, 0);
 
 	if (dac33->power_gpio >= 0)
 		gpio_free(dac33->power_gpio);
-	if (dac33->irq >= 0)
-		free_irq(dac33->irq, &dac33->codec);
 
 	regulator_bulk_free(ARRAY_SIZE(dac33->supplies), dac33->supplies);
 
-	destroy_workqueue(dac33->dac33_wq);
-	snd_soc_unregister_dai(&dac33_dai);
-	snd_soc_unregister_codec(&dac33->codec);
-	kfree(dac33->codec.reg_cache);
+	snd_soc_unregister_codec(&client->dev);
 	kfree(dac33);
-	tlv320dac33_codec = NULL;
 
 	return 0;
 }
@@ -1694,7 +1608,7 @@
 
 static struct i2c_driver tlv320dac33_i2c_driver = {
 	.driver = {
-		.name = "tlv320dac33",
+		.name = "tlv320dac33-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe		= dac33_i2c_probe,
diff --git a/sound/soc/codecs/tlv320dac33.h b/sound/soc/codecs/tlv320dac33.h
index eb8ae07..7c318b5 100644
--- a/sound/soc/codecs/tlv320dac33.h
+++ b/sound/soc/codecs/tlv320dac33.h
@@ -261,7 +261,4 @@
 #define TLV320DAC33_MCLK		0
 #define TLV320DAC33_SLEEPCLK		1
 
-extern struct snd_soc_dai dac33_dai;
-extern struct snd_soc_codec_device soc_codec_dev_tlv320dac33;
-
 #endif /* __TLV320DAC33_H */
diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c
index 7b618bb..cbebec6 100644
--- a/sound/soc/codecs/twl4030.c
+++ b/sound/soc/codecs/twl4030.c
@@ -36,7 +36,16 @@
 #include <sound/initval.h>
 #include <sound/tlv.h>
 
-#include "twl4030.h"
+/* Register descriptions are here */
+#include <linux/mfd/twl4030-codec.h>
+
+/* Shadow register used by the audio driver */
+#define TWL4030_REG_SW_SHADOW		0x4A
+#define TWL4030_CACHEREGNUM	(TWL4030_REG_SW_SHADOW + 1)
+
+/* TWL4030_REG_SW_SHADOW (0x4A) Fields */
+#define TWL4030_HFL_EN			0x01
+#define TWL4030_HFR_EN			0x02
 
 /*
  * twl4030 register cache & default register settings
@@ -277,21 +286,19 @@
 
 }
 
-static void twl4030_init_chip(struct platform_device *pdev)
+static void twl4030_init_chip(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct twl4030_setup_data *setup = socdev->codec_data;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct twl4030_codec_audio_data *pdata = dev_get_platdata(codec->dev);
 	struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
 	u8 reg, byte;
 	int i = 0;
 
 	/* Check defaults, if instructed before anything else */
-	if (setup && setup->check_defaults)
+	if (pdata && pdata->check_defaults)
 		twl4030_check_defaults(codec);
 
 	/* Reset registers, if no setup data or if instructed to do so */
-	if (!setup || (setup && setup->reset_registers))
+	if (!pdata || (pdata && pdata->reset_registers))
 		twl4030_reset_registers(codec);
 
 	/* Refresh APLL_CTL register from HW */
@@ -312,20 +319,14 @@
 	twl4030_write(codec, TWL4030_REG_ARXR2_APGA_CTL, 0x32);
 
 	/* Machine dependent setup */
-	if (!setup)
+	if (!pdata)
 		return;
 
-	twl4030->digimic_delay = setup->digimic_delay;
-
-	/* Configuration for headset ramp delay from setup data */
-	if (setup->sysclk != twl4030->sysclk)
-		dev_warn(codec->dev,
-				"Mismatch in APLL mclk: %u (configured: %u)\n",
-				setup->sysclk, twl4030->sysclk);
+	twl4030->digimic_delay = pdata->digimic_delay;
 
 	reg = twl4030_read_reg_cache(codec, TWL4030_REG_HS_POPN_SET);
 	reg &= ~TWL4030_RAMP_DELAY;
-	reg |= (setup->ramp_delay_value << 2);
+	reg |= (pdata->ramp_delay_value << 2);
 	twl4030_write_reg_cache(codec, TWL4030_REG_HS_POPN_SET, reg);
 
 	/* initiate offset cancellation */
@@ -333,7 +334,7 @@
 
 	reg = twl4030_read_reg_cache(codec, TWL4030_REG_ANAMICL);
 	reg &= ~TWL4030_OFFSET_CNCL_SEL;
-	reg |= setup->offset_cncl_path;
+	reg |= pdata->offset_cncl_path;
 	twl4030_write(codec, TWL4030_REG_ANAMICL,
 		reg | TWL4030_CNCL_OFFSET_START);
 
@@ -718,9 +719,7 @@
 
 static void headset_ramp(struct snd_soc_codec *codec, int ramp)
 {
-	struct snd_soc_device *socdev = codec->socdev;
-	struct twl4030_setup_data *setup = socdev->codec_data;
-
+	struct twl4030_codec_audio_data *pdata = codec->dev->platform_data;
 	unsigned char hs_gain, hs_pop;
 	struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
 	/* Base values for ramp delay calculation: 2^19 - 2^26 */
@@ -732,9 +731,9 @@
 
 	/* Enable external mute control, this dramatically reduces
 	 * the pop-noise */
-	if (setup && setup->hs_extmute) {
-		if (setup->set_hs_extmute) {
-			setup->set_hs_extmute(1);
+	if (pdata && pdata->hs_extmute) {
+		if (pdata->set_hs_extmute) {
+			pdata->set_hs_extmute(1);
 		} else {
 			hs_pop |= TWL4030_EXTMUTE;
 			twl4030_write(codec, TWL4030_REG_HS_POPN_SET, hs_pop);
@@ -772,9 +771,9 @@
 	}
 
 	/* Disable external mute */
-	if (setup && setup->hs_extmute) {
-		if (setup->set_hs_extmute) {
-			setup->set_hs_extmute(0);
+	if (pdata && pdata->hs_extmute) {
+		if (pdata->set_hs_extmute) {
+			pdata->set_hs_extmute(0);
 		} else {
 			hs_pop &= ~TWL4030_EXTMUTE;
 			twl4030_write(codec, TWL4030_REG_HS_POPN_SET, hs_pop);
@@ -1707,8 +1706,7 @@
 			   struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
 
 	if (twl4030->master_substream) {
@@ -1738,8 +1736,7 @@
 			     struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
 
 	if (twl4030->master_substream == substream)
@@ -1764,8 +1761,7 @@
 			   struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
 	u8 mode, old_mode, format, old_format;
 
@@ -1999,8 +1995,7 @@
 		struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
 	u8 mode;
 
@@ -2033,8 +2028,7 @@
 				struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 
 	/* Enable voice digital filters */
 	twl4030_voice_enable(codec, substream->stream, 0);
@@ -2044,8 +2038,7 @@
 		struct snd_pcm_hw_params *params, struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
 	u8 old_mode, mode;
 
@@ -2175,7 +2168,7 @@
 #define TWL4030_RATES	 (SNDRV_PCM_RATE_8000_48000)
 #define TWL4030_FORMATS	 (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FORMAT_S24_LE)
 
-static struct snd_soc_dai_ops twl4030_dai_ops = {
+static struct snd_soc_dai_ops twl4030_dai_hifi_ops = {
 	.startup	= twl4030_startup,
 	.shutdown	= twl4030_shutdown,
 	.hw_params	= twl4030_hw_params,
@@ -2193,9 +2186,9 @@
 	.set_tristate	= twl4030_voice_set_tristate,
 };
 
-struct snd_soc_dai twl4030_dai[] = {
+static struct snd_soc_dai_driver twl4030_dai[] = {
 {
-	.name = "twl4030",
+	.name = "twl4030-hifi",
 	.playback = {
 		.stream_name = "HiFi Playback",
 		.channels_min = 2,
@@ -2208,10 +2201,10 @@
 		.channels_max = 4,
 		.rates = TWL4030_RATES,
 		.formats = TWL4030_FORMATS,},
-	.ops = &twl4030_dai_ops,
+	.ops = &twl4030_dai_hifi_ops,
 },
 {
-	.name = "twl4030 Voice",
+	.name = "twl4030-voice",
 	.playback = {
 		.stream_name = "Voice Playback",
 		.channels_min = 1,
@@ -2227,164 +2220,91 @@
 	.ops = &twl4030_dai_voice_ops,
 },
 };
-EXPORT_SYMBOL_GPL(twl4030_dai);
 
-static int twl4030_soc_suspend(struct platform_device *pdev, pm_message_t state)
+static int twl4030_soc_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	twl4030_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
 	return 0;
 }
 
-static int twl4030_soc_resume(struct platform_device *pdev)
+static int twl4030_soc_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	twl4030_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 	return 0;
 }
 
-static struct snd_soc_codec *twl4030_codec;
-
-static int twl4030_soc_probe(struct platform_device *pdev)
+static int twl4030_soc_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret;
+	struct twl4030_priv *twl4030;
 
-	BUG_ON(!twl4030_codec);
-
-	codec = twl4030_codec;
-	socdev->card->codec = codec;
-
-	twl4030_init_chip(pdev);
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to create pcms\n");
-		return ret;
+	twl4030 = kzalloc(sizeof(struct twl4030_priv), GFP_KERNEL);
+	if (twl4030 == NULL) {
+		printk("Can not allocate memroy\n");
+		return -ENOMEM;
 	}
+	snd_soc_codec_set_drvdata(codec, twl4030);
+	/* Set the defaults, and power up the codec */
+	twl4030->sysclk = twl4030_codec_get_mclk() / 1000;
+	codec->idle_bias_off = 1;
+
+	twl4030_init_chip(codec);
 
 	snd_soc_add_controls(codec, twl4030_snd_controls,
 				ARRAY_SIZE(twl4030_snd_controls));
 	twl4030_add_widgets(codec);
-
 	return 0;
 }
 
-static int twl4030_soc_remove(struct platform_device *pdev)
+static int twl4030_soc_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	/* Reset registers to their chip default before leaving */
 	twl4030_reset_registers(codec);
 	twl4030_set_bias_level(codec, SND_SOC_BIAS_OFF);
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
 	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_twl4030 = {
+	.probe = twl4030_soc_probe,
+	.remove = twl4030_soc_remove,
+	.suspend = twl4030_soc_suspend,
+	.resume = twl4030_soc_resume,
+	.read = twl4030_read_reg_cache,
+	.write = twl4030_write,
+	.set_bias_level = twl4030_set_bias_level,
+	.reg_cache_size = sizeof(twl4030_reg),
+	.reg_word_size = sizeof(u8),
+	.reg_cache_default = twl4030_reg,
+};
+
 static int __devinit twl4030_codec_probe(struct platform_device *pdev)
 {
 	struct twl4030_codec_audio_data *pdata = pdev->dev.platform_data;
-	struct snd_soc_codec *codec;
-	struct twl4030_priv *twl4030;
-	int ret;
 
 	if (!pdata) {
 		dev_err(&pdev->dev, "platform_data is missing\n");
 		return -EINVAL;
 	}
 
-	twl4030 = kzalloc(sizeof(struct twl4030_priv), GFP_KERNEL);
-	if (twl4030 == NULL) {
-		dev_err(&pdev->dev, "Can not allocate memroy\n");
-		return -ENOMEM;
-	}
-
-	codec = &twl4030->codec;
-	snd_soc_codec_set_drvdata(codec, twl4030);
-	codec->dev = &pdev->dev;
-	twl4030_dai[0].dev = &pdev->dev;
-	twl4030_dai[1].dev = &pdev->dev;
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->name = "twl4030";
-	codec->owner = THIS_MODULE;
-	codec->read = twl4030_read_reg_cache;
-	codec->write = twl4030_write;
-	codec->set_bias_level = twl4030_set_bias_level;
-	codec->idle_bias_off = 1;
-	codec->dai = twl4030_dai;
-	codec->num_dai = ARRAY_SIZE(twl4030_dai);
-	codec->reg_cache_size = sizeof(twl4030_reg);
-	codec->reg_cache = kmemdup(twl4030_reg, sizeof(twl4030_reg),
-					GFP_KERNEL);
-	if (codec->reg_cache == NULL) {
-		ret = -ENOMEM;
-		goto error_cache;
-	}
-
-	platform_set_drvdata(pdev, twl4030);
-	twl4030_codec = codec;
-
-	/* Set the defaults, and power up the codec */
-	twl4030->sysclk = twl4030_codec_get_mclk() / 1000;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto error_codec;
-	}
-
-	ret = snd_soc_register_dais(&twl4030_dai[0], ARRAY_SIZE(twl4030_dai));
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAIs: %d\n", ret);
-		snd_soc_unregister_codec(codec);
-		goto error_codec;
-	}
-
-	return 0;
-
-error_codec:
-	twl4030_codec_enable(codec, 0);
-	kfree(codec->reg_cache);
-error_cache:
-	kfree(twl4030);
-	return ret;
+	return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_twl4030,
+			twl4030_dai, ARRAY_SIZE(twl4030_dai));
 }
 
 static int __devexit twl4030_codec_remove(struct platform_device *pdev)
 {
-	struct twl4030_priv *twl4030 = platform_get_drvdata(pdev);
+	struct twl4030_priv *twl4030 = dev_get_drvdata(&pdev->dev);
 
-	snd_soc_unregister_dais(&twl4030_dai[0], ARRAY_SIZE(twl4030_dai));
-	snd_soc_unregister_codec(&twl4030->codec);
-	kfree(twl4030->codec.reg_cache);
+	snd_soc_unregister_codec(&pdev->dev);
 	kfree(twl4030);
-
-	twl4030_codec = NULL;
 	return 0;
 }
 
-MODULE_ALIAS("platform:twl4030_codec_audio");
+MODULE_ALIAS("platform:twl4030-codec");
 
 static struct platform_driver twl4030_codec_driver = {
 	.probe		= twl4030_codec_probe,
 	.remove		= __devexit_p(twl4030_codec_remove),
 	.driver		= {
-		.name	= "twl4030_codec_audio",
+		.name	= "twl4030-codec",
 		.owner	= THIS_MODULE,
 	},
 };
@@ -2401,14 +2321,6 @@
 }
 module_exit(twl4030_exit);
 
-struct snd_soc_codec_device soc_codec_dev_twl4030 = {
-	.probe = twl4030_soc_probe,
-	.remove = twl4030_soc_remove,
-	.suspend = twl4030_soc_suspend,
-	.resume = twl4030_soc_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_twl4030);
-
 MODULE_DESCRIPTION("ASoC TWL4030 codec driver");
 MODULE_AUTHOR("Steve Sakoman");
 MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/twl4030.h b/sound/soc/codecs/twl4030.h
deleted file mode 100644
index 6c57430..0000000
--- a/sound/soc/codecs/twl4030.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * ALSA SoC TWL4030 codec driver
- *
- * Author: Steve Sakoman <steve@sakoman.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
- *
- * 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
- *
- */
-
-#ifndef __TWL4030_AUDIO_H__
-#define __TWL4030_AUDIO_H__
-
-/* Register descriptions are here */
-#include <linux/mfd/twl4030-codec.h>
-
-/* Shadow register used by the audio driver */
-#define TWL4030_REG_SW_SHADOW		0x4A
-#define TWL4030_CACHEREGNUM	(TWL4030_REG_SW_SHADOW + 1)
-
-/* TWL4030_REG_SW_SHADOW (0x4A) Fields */
-#define TWL4030_HFL_EN			0x01
-#define TWL4030_HFR_EN			0x02
-
-#define TWL4030_DAI_HIFI		0
-#define TWL4030_DAI_VOICE		1
-
-extern struct snd_soc_dai twl4030_dai[2];
-extern struct snd_soc_codec_device soc_codec_dev_twl4030;
-
-struct twl4030_setup_data {
-	unsigned int ramp_delay_value;
-	unsigned int digimic_delay; /* in ms */
-	unsigned int sysclk;
-	unsigned int offset_cncl_path;
-	unsigned int check_defaults:1;
-	unsigned int reset_registers:1;
-	unsigned int hs_extmute:1;
-	void (*set_hs_extmute)(int mute);
-};
-
-#endif	/* End of __TWL4030_AUDIO_H__ */
-
-
diff --git a/sound/soc/codecs/twl6040.c b/sound/soc/codecs/twl6040.c
index 64a807f..10f6e52 100644
--- a/sound/soc/codecs/twl6040.c
+++ b/sound/soc/codecs/twl6040.c
@@ -45,7 +45,6 @@
 
 /* codec private data */
 struct twl6040_data {
-	struct snd_soc_codec codec;
 	int audpwron;
 	int naudint;
 	int codec_powered;
@@ -770,8 +769,7 @@
 			struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct twl6040_data *priv = snd_soc_codec_get_drvdata(codec);
 
 	if (!priv->sysclk) {
@@ -803,8 +801,7 @@
 			struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct twl6040_data *priv = snd_soc_codec_get_drvdata(codec);
 	u8 lppllctl;
 	int rate;
@@ -839,8 +836,7 @@
 			int cmd, struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct twl6040_data *priv = snd_soc_codec_get_drvdata(codec);
 
 	switch (cmd) {
@@ -978,8 +974,8 @@
 	.set_sysclk	= twl6040_set_dai_sysclk,
 };
 
-struct snd_soc_dai twl6040_dai = {
-	.name = "twl6040",
+static struct snd_soc_dai_driver twl6040_dai = {
+	.name = "twl6040-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -996,24 +992,17 @@
 	},
 	.ops = &twl6040_dai_ops,
 };
-EXPORT_SYMBOL_GPL(twl6040_dai);
 
 #ifdef CONFIG_PM
-static int twl6040_suspend(struct platform_device *pdev, pm_message_t state)
+static int twl6040_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	twl6040_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
 	return 0;
 }
 
-static int twl6040_resume(struct platform_device *pdev)
+static int twl6040_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	twl6040_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	return 0;
@@ -1023,68 +1012,9 @@
 #define twl6040_resume NULL
 #endif
 
-static struct snd_soc_codec *twl6040_codec;
-
-static int twl6040_probe(struct platform_device *pdev)
+static int twl6040_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
-
-	BUG_ON(!twl6040_codec);
-
-	codec = twl6040_codec;
-	socdev->card->codec = codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to create pcms\n");
-		return ret;
-	}
-
-	snd_soc_add_controls(codec, twl6040_snd_controls,
-				ARRAY_SIZE(twl6040_snd_controls));
-	twl6040_add_widgets(codec);
-
-	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to register card\n");
-		goto card_err;
-	}
-
-	return ret;
-
-card_err:
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-	return ret;
-}
-
-static int twl6040_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	twl6040_set_bias_level(codec, SND_SOC_BIAS_OFF);
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-	kfree(codec);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_twl6040 = {
-	.probe = twl6040_probe,
-	.remove = twl6040_remove,
-	.suspend = twl6040_suspend,
-	.resume = twl6040_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_twl6040);
-
-static int __devinit twl6040_codec_probe(struct platform_device *pdev)
-{
-	struct twl4030_codec_data *twl_codec = pdev->dev.platform_data;
-	struct snd_soc_codec *codec;
+	struct twl4030_codec_data *twl_codec = codec->dev->platform_data;
 	struct twl6040_data *priv;
 	int audpwron, naudint;
 	int ret = 0;
@@ -1092,6 +1022,7 @@
 	priv = kzalloc(sizeof(struct twl6040_data), GFP_KERNEL);
 	if (priv == NULL)
 		return -ENOMEM;
+	snd_soc_codec_set_drvdata(codec, priv);
 
 	if (twl_codec) {
 		audpwron = twl_codec->audpwron_gpio;
@@ -1104,29 +1035,6 @@
 	priv->audpwron = audpwron;
 	priv->naudint = naudint;
 
-	codec = &priv->codec;
-	codec->dev = &pdev->dev;
-	twl6040_dai.dev = &pdev->dev;
-
-	codec->name = "twl6040";
-	codec->owner = THIS_MODULE;
-	codec->read = twl6040_read_reg_cache;
-	codec->write = twl6040_write;
-	codec->set_bias_level = twl6040_set_bias_level;
-	snd_soc_codec_set_drvdata(codec, priv);
-	codec->dai = &twl6040_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = ARRAY_SIZE(twl6040_reg);
-	codec->reg_cache = kmemdup(twl6040_reg, sizeof(twl6040_reg),
-					GFP_KERNEL);
-	if (codec->reg_cache == NULL) {
-		ret = -ENOMEM;
-		goto cache_err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
 	init_completion(&priv->ready);
 
 	if (gpio_is_valid(audpwron)) {
@@ -1169,23 +1077,12 @@
 	if (ret)
 		goto irq_err;
 
-	ret = snd_soc_register_codec(codec);
-	if (ret)
-		goto reg_err;
-
-	twl6040_codec = codec;
-
-	ret = snd_soc_register_dai(&twl6040_dai);
-	if (ret)
-		goto dai_err;
+	snd_soc_add_controls(codec, twl6040_snd_controls,
+				ARRAY_SIZE(twl6040_snd_controls));
+	twl6040_add_widgets(codec);
 
 	return 0;
 
-dai_err:
-	snd_soc_unregister_codec(codec);
-	twl6040_codec = NULL;
-reg_err:
-	twl6040_set_bias_level(codec, SND_SOC_BIAS_OFF);
 irq_err:
 	if (naudint)
 		free_irq(naudint, codec);
@@ -1193,36 +1090,57 @@
 	if (gpio_is_valid(audpwron))
 		gpio_free(audpwron);
 gpio1_err:
-	kfree(codec->reg_cache);
-cache_err:
 	kfree(priv);
 	return ret;
 }
 
-static int __devexit twl6040_codec_remove(struct platform_device *pdev)
+static int twl6040_remove(struct snd_soc_codec *codec)
 {
-	struct twl6040_data *priv = snd_soc_codec_get_drvdata(twl6040_codec);
+	struct twl6040_data *priv = snd_soc_codec_get_drvdata(codec);
 	int audpwron = priv->audpwron;
 	int naudint = priv->naudint;
 
+	twl6040_set_bias_level(codec, SND_SOC_BIAS_OFF);
+
 	if (gpio_is_valid(audpwron))
 		gpio_free(audpwron);
 
 	if (naudint)
-		free_irq(naudint, twl6040_codec);
+		free_irq(naudint, codec);
 
-	snd_soc_unregister_dai(&twl6040_dai);
-	snd_soc_unregister_codec(twl6040_codec);
+	kfree(priv);
 
-	kfree(twl6040_codec);
-	twl6040_codec = NULL;
+	return 0;
+}
 
+static struct snd_soc_codec_driver soc_codec_dev_twl6040 = {
+	.probe = twl6040_probe,
+	.remove = twl6040_remove,
+	.suspend = twl6040_suspend,
+	.resume = twl6040_resume,
+	.read = twl6040_read_reg_cache,
+	.write = twl6040_write,
+	.set_bias_level = twl6040_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(twl6040_reg),
+	.reg_word_size = sizeof(u8),
+	.reg_cache_default = twl6040_reg,
+};
+
+static int __devinit twl6040_codec_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_twl6040, &twl6040_dai, 1);
+}
+
+static int __devexit twl6040_codec_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_codec(&pdev->dev);
 	return 0;
 }
 
 static struct platform_driver twl6040_codec_driver = {
 	.driver = {
-		.name = "twl6040_codec",
+		.name = "twl6040-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe = twl6040_codec_probe,
diff --git a/sound/soc/codecs/twl6040.h b/sound/soc/codecs/twl6040.h
index c472070..f7c77fa 100644
--- a/sound/soc/codecs/twl6040.h
+++ b/sound/soc/codecs/twl6040.h
@@ -135,7 +135,4 @@
 #define TWL6040_HPPLL_ID		1
 #define TWL6040_LPPLL_ID		2
 
-extern struct snd_soc_dai twl6040_dai;
-extern struct snd_soc_codec_device soc_codec_dev_twl6040;
-
 #endif /* End of __TWL6040_H__ */
diff --git a/sound/soc/codecs/uda134x.c b/sound/soc/codecs/uda134x.c
index f3b4c1d..7540a50 100644
--- a/sound/soc/codecs/uda134x.c
+++ b/sound/soc/codecs/uda134x.c
@@ -161,8 +161,7 @@
 	struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec =rtd->codec;
 	struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
 	struct snd_pcm_runtime *master_runtime;
 
@@ -194,8 +193,7 @@
 	struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
 
 	if (uda134x->master_substream == substream)
@@ -209,8 +207,7 @@
 	struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
 	u8 hw_params;
 
@@ -364,7 +361,7 @@
 			pd->power(1);
 			/* Sync reg_cache with the hardware */
 			for (i = 0; i < ARRAY_SIZE(uda134x_reg); i++)
-				codec->write(codec, i, *cache++);
+				codec->driver->write(codec, i, *cache++);
 		}
 		break;
 	case SND_SOC_BIAS_STANDBY:
@@ -465,8 +462,8 @@
 	.set_fmt	= uda134x_set_dai_fmt,
 };
 
-struct snd_soc_dai uda134x_dai = {
-	.name = "UDA134X",
+static struct snd_soc_dai_driver uda134x_dai = {
+	.name = "uda134x-hifi",
 	/* playback capabilities */
 	.playback = {
 		.stream_name = "Playback",
@@ -486,27 +483,21 @@
 	/* pcm operations */
 	.ops = &uda134x_dai_ops,
 };
-EXPORT_SYMBOL(uda134x_dai);
 
-
-static int uda134x_soc_probe(struct platform_device *pdev)
+static int uda134x_soc_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
 	struct uda134x_priv *uda134x;
-	void *codec_setup_data = socdev->codec_data;
-	int ret = -ENOMEM;
-	struct uda134x_platform_data *pd;
+	struct uda134x_platform_data *pd = dev_get_drvdata(codec->card->dev);
+	int ret;
 
 	printk(KERN_INFO "UDA134X SoC Audio Codec\n");
 
-	if (!codec_setup_data) {
+	if (!pd) {
 		printk(KERN_ERR "UDA134X SoC codec: "
 		       "missing L3 bitbang function\n");
 		return -ENODEV;
 	}
 
-	pd = codec_setup_data;
 	switch (pd->model) {
 	case UDA134X_UDA1340:
 	case UDA134X_UDA1341:
@@ -520,58 +511,22 @@
 		return -EINVAL;
 	}
 
-	socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (socdev->card->codec == NULL)
-		return ret;
-
-	codec = socdev->card->codec;
-
 	uda134x = kzalloc(sizeof(struct uda134x_priv), GFP_KERNEL);
 	if (uda134x == NULL)
-		goto priv_err;
+		return -ENOMEM;
 	snd_soc_codec_set_drvdata(codec, uda134x);
 
-	codec->reg_cache = kmemdup(uda134x_reg, sizeof(uda134x_reg),
-				   GFP_KERNEL);
-	if (codec->reg_cache == NULL)
-		goto reg_err;
-
-	mutex_init(&codec->mutex);
-
-	codec->reg_cache_size = sizeof(uda134x_reg);
-	codec->reg_cache_step = 1;
-
-	codec->name = "UDA134X";
-	codec->owner = THIS_MODULE;
-	codec->dai = &uda134x_dai;
-	codec->num_dai = 1;
-	codec->read = uda134x_read_reg_cache;
-	codec->write = uda134x_write;
-
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->control_data = codec_setup_data;
+	codec->control_data = pd;
 
 	if (pd->power)
 		pd->power(1);
 
 	uda134x_reset(codec);
 
-	if (pd->is_powered_on_standby) {
-		codec->set_bias_level = NULL;
+	if (pd->is_powered_on_standby)
 		uda134x_set_bias_level(codec, SND_SOC_BIAS_ON);
-	} else {
-		codec->set_bias_level = uda134x_set_bias_level;
+	else
 		uda134x_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-	}
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "UDA134X: failed to register pcms\n");
-		goto pcm_err;
-	}
 
 	switch (pd->model) {
 	case UDA134X_UDA1340:
@@ -590,61 +545,42 @@
 	default:
 		printk(KERN_ERR "%s unknown codec type: %d",
 			__func__, pd->model);
-	return -EINVAL;
+		kfree(uda134x);
+		return -EINVAL;
 	}
 
 	if (ret < 0) {
 		printk(KERN_ERR "UDA134X: failed to register controls\n");
-		goto pcm_err;
+		kfree(uda134x);
+		return ret;
 	}
 
 	return 0;
-
-pcm_err:
-	kfree(codec->reg_cache);
-reg_err:
-	kfree(snd_soc_codec_get_drvdata(codec));
-priv_err:
-	kfree(codec);
-	return ret;
 }
 
 /* power down chip */
-static int uda134x_soc_remove(struct platform_device *pdev)
+static int uda134x_soc_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
 
 	uda134x_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 	uda134x_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	kfree(snd_soc_codec_get_drvdata(codec));
-	kfree(codec->reg_cache);
-	kfree(codec);
-
+	kfree(uda134x);
 	return 0;
 }
 
 #if defined(CONFIG_PM)
-static int uda134x_soc_suspend(struct platform_device *pdev,
+static int uda134x_soc_suspend(struct snd_soc_codec *codec,
 						pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	uda134x_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 	uda134x_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int uda134x_soc_resume(struct platform_device *pdev)
+static int uda134x_soc_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	uda134x_set_bias_level(codec, SND_SOC_BIAS_PREPARE);
 	uda134x_set_bias_level(codec, SND_SOC_BIAS_ON);
 	return 0;
@@ -654,25 +590,53 @@
 #define uda134x_soc_resume NULL
 #endif /* CONFIG_PM */
 
-struct snd_soc_codec_device soc_codec_dev_uda134x = {
+static struct snd_soc_codec_driver soc_codec_dev_uda134x = {
 	.probe =        uda134x_soc_probe,
 	.remove =       uda134x_soc_remove,
 	.suspend =      uda134x_soc_suspend,
 	.resume =       uda134x_soc_resume,
+	.reg_cache_size = sizeof(uda134x_reg),
+	.reg_word_size = sizeof(u8),
+	.reg_cache_step = 1,
+	.read = uda134x_read_reg_cache,
+	.write = uda134x_write,
+#ifdef POWER_OFF_ON_STANDBY
+	.set_bias_level = uda134x_set_bias_level,
+#endif
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_uda134x);
 
-static int __init uda134x_init(void)
+static int __devinit uda134x_codec_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_dai(&uda134x_dai);
+	return snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_uda134x, &uda134x_dai, 1);
 }
-module_init(uda134x_init);
 
-static void __exit uda134x_exit(void)
+static int __devexit uda134x_codec_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_dai(&uda134x_dai);
+	snd_soc_unregister_codec(&pdev->dev);
+	return 0;
 }
-module_exit(uda134x_exit);
+
+static struct platform_driver uda134x_codec_driver = {
+	.driver = {
+		.name = "uda134x-codec",
+		.owner = THIS_MODULE,
+	},
+	.probe = uda134x_codec_probe,
+	.remove = __devexit_p(uda134x_codec_remove),
+};
+
+static int __init uda134x_codec_init(void)
+{
+	return platform_driver_register(&uda134x_codec_driver);
+}
+module_init(uda134x_codec_init);
+
+static void __exit uda134x_codec_exit(void)
+{
+	platform_driver_unregister(&uda134x_codec_driver);
+}
+module_exit(uda134x_codec_exit);
 
 MODULE_DESCRIPTION("UDA134X ALSA soc codec driver");
 MODULE_AUTHOR("Zoltan Devai, Christian Pellegrin <chripell@evolware.org>");
diff --git a/sound/soc/codecs/uda134x.h b/sound/soc/codecs/uda134x.h
index 205f03b..9faae06 100644
--- a/sound/soc/codecs/uda134x.h
+++ b/sound/soc/codecs/uda134x.h
@@ -31,7 +31,4 @@
 #define STATUS0_DAIFMT_MASK (~(7<<1))
 #define STATUS0_SYSCLK_MASK (~(3<<4))
 
-extern struct snd_soc_dai uda134x_dai;
-extern struct snd_soc_codec_device soc_codec_dev_uda134x;
-
 #endif
diff --git a/sound/soc/codecs/uda1380.c b/sound/soc/codecs/uda1380.c
index 2f925a2..0c6c725 100644
--- a/sound/soc/codecs/uda1380.c
+++ b/sound/soc/codecs/uda1380.c
@@ -33,14 +33,13 @@
 
 #include "uda1380.h"
 
-static struct snd_soc_codec *uda1380_codec;
-
 /* codec private data */
 struct uda1380_priv {
-	struct snd_soc_codec codec;
+	struct snd_soc_codec *codec;
 	u16 reg_cache[UDA1380_CACHEREGNUM];
 	unsigned int dac_clk;
 	struct work_struct work;
+	void *control_data;
 };
 
 /*
@@ -131,10 +130,51 @@
 		return -EIO;
 }
 
-#define uda1380_reset(c)	uda1380_write(c, UDA1380_RESET, 0)
+static void uda1380_sync_cache(struct snd_soc_codec *codec)
+{
+	int reg;
+	u8 data[3];
+	u16 *cache = codec->reg_cache;
+
+	/* Sync reg_cache with the hardware */
+	for (reg = 0; reg < UDA1380_MVOL; reg++) {
+		data[0] = reg;
+		data[1] = (cache[reg] & 0xff00) >> 8;
+		data[2] = cache[reg] & 0x00ff;
+		if (codec->hw_write(codec->control_data, data, 3) != 3)
+			dev_err(codec->dev, "%s: write to reg 0x%x failed\n",
+				__func__, reg);
+	}
+}
+
+static int uda1380_reset(struct snd_soc_codec *codec)
+{
+	struct uda1380_platform_data *pdata = codec->dev->platform_data;
+
+	if (gpio_is_valid(pdata->gpio_reset)) {
+		gpio_set_value(pdata->gpio_reset, 1);
+		mdelay(1);
+		gpio_set_value(pdata->gpio_reset, 0);
+	} else {
+		u8 data[3];
+
+		data[0] = UDA1380_RESET;
+		data[1] = 0;
+		data[2] = 0;
+
+		if (codec->hw_write(codec->control_data, data, 3) != 3) {
+			dev_err(codec->dev, "%s: failed\n", __func__);
+			return -EIO;
+		}
+	}
+
+	return 0;
+}
 
 static void uda1380_flush_work(struct work_struct *work)
 {
+	struct uda1380_priv *uda1380 = container_of(work, struct uda1380_priv, work);
+	struct snd_soc_codec *uda1380_codec = uda1380->codec;
 	int bit, reg;
 
 	for_each_set_bit(bit, &uda1380_cache_dirty, UDA1380_CACHEREGNUM - 0x10) {
@@ -145,6 +185,7 @@
 				uda1380_read_reg_cache(uda1380_codec, reg));
 		clear_bit(bit, &uda1380_cache_dirty);
 	}
+
 }
 
 /* declarations of ALSA reg_elem_REAL controls */
@@ -474,8 +515,7 @@
 		struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct uda1380_priv *uda1380 = snd_soc_codec_get_drvdata(codec);
 	int mixer = uda1380_read_reg_cache(codec, UDA1380_MIXER);
 
@@ -501,8 +541,7 @@
 				 struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	u16 clk = uda1380_read_reg_cache(codec, UDA1380_CLK);
 
 	/* set WSPLL power and divider if running from this clock */
@@ -540,8 +579,7 @@
 				 struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	u16 clk = uda1380_read_reg_cache(codec, UDA1380_CLK);
 
 	/* shut down WSPLL power if running from this clock */
@@ -562,18 +600,41 @@
 	enum snd_soc_bias_level level)
 {
 	int pm = uda1380_read_reg_cache(codec, UDA1380_PM);
+	int reg;
+	struct uda1380_platform_data *pdata = codec->dev->platform_data;
+
+	if (codec->bias_level == level)
+		return 0;
 
 	switch (level) {
 	case SND_SOC_BIAS_ON:
 	case SND_SOC_BIAS_PREPARE:
+		/* ADC, DAC on */
 		uda1380_write(codec, UDA1380_PM, R02_PON_BIAS | pm);
 		break;
 	case SND_SOC_BIAS_STANDBY:
-		uda1380_write(codec, UDA1380_PM, R02_PON_BIAS);
-		break;
-	case SND_SOC_BIAS_OFF:
+		if (codec->bias_level == SND_SOC_BIAS_OFF) {
+			if (gpio_is_valid(pdata->gpio_power)) {
+				gpio_set_value(pdata->gpio_power, 1);
+				mdelay(1);
+				uda1380_reset(codec);
+			}
+
+			uda1380_sync_cache(codec);
+		}
 		uda1380_write(codec, UDA1380_PM, 0x0);
 		break;
+	case SND_SOC_BIAS_OFF:
+		if (!gpio_is_valid(pdata->gpio_power))
+			break;
+
+		gpio_set_value(pdata->gpio_power, 0);
+
+		/* Mark mixer regs cache dirty to sync them with
+		 * codec regs on power on.
+		 */
+		for (reg = UDA1380_MVOL; reg < UDA1380_CACHEREGNUM; reg++)
+			set_bit(reg - 0x10, &uda1380_cache_dirty);
 	}
 	codec->bias_level = level;
 	return 0;
@@ -604,9 +665,9 @@
 	.set_fmt	= uda1380_set_dai_fmt_capture,
 };
 
-struct snd_soc_dai uda1380_dai[] = {
+static struct snd_soc_dai_driver uda1380_dai[] = {
 {
-	.name = "UDA1380",
+	.name = "uda1380-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -622,7 +683,7 @@
 	.ops = &uda1380_dai_ops,
 },
 { /* playback only - dual interface */
-	.name = "UDA1380",
+	.name = "uda1380-hifi-playback",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -633,7 +694,7 @@
 	.ops = &uda1380_dai_ops_playback,
 },
 { /* capture only - dual interface*/
-	.name = "UDA1380",
+	.name = "uda1380-hifi-capture",
 	.capture = {
 		.stream_name = "Capture",
 		.channels_min = 1,
@@ -644,67 +705,69 @@
 	.ops = &uda1380_dai_ops_capture,
 },
 };
-EXPORT_SYMBOL_GPL(uda1380_dai);
 
-static int uda1380_suspend(struct platform_device *pdev, pm_message_t state)
+static int uda1380_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	uda1380_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int uda1380_resume(struct platform_device *pdev)
+static int uda1380_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-	int i;
-	u8 data[2];
-	u16 *cache = codec->reg_cache;
-
-	/* Sync reg_cache with the hardware */
-	for (i = 0; i < ARRAY_SIZE(uda1380_reg); i++) {
-		data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
-		data[1] = cache[i] & 0x00ff;
-		codec->hw_write(codec->control_data, data, 2);
-	}
 	uda1380_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 	return 0;
 }
 
-static int uda1380_probe(struct platform_device *pdev)
+static int uda1380_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	struct uda1380_platform_data *pdata;
-	int ret = 0;
+	struct uda1380_platform_data *pdata =codec->dev->platform_data;
+	struct uda1380_priv *uda1380 = snd_soc_codec_get_drvdata(codec);
+	int ret;
 
-	if (uda1380_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
+	uda1380->codec = codec;
+
+	codec->hw_write = (hw_write_t)i2c_master_send;
+	codec->control_data = uda1380->control_data;
+
+	if (!pdata)
+		return -EINVAL;
+
+	if (gpio_is_valid(pdata->gpio_reset)) {
+		ret = gpio_request(pdata->gpio_reset, "uda1380 reset");
+		if (ret)
+			goto err_out;
+		ret = gpio_direction_output(pdata->gpio_reset, 0);
+		if (ret)
+			goto err_gpio_reset_conf;
 	}
 
-	socdev->card->codec = uda1380_codec;
-	codec = uda1380_codec;
-	pdata = codec->dev->platform_data;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
+	if (gpio_is_valid(pdata->gpio_power)) {
+		ret = gpio_request(pdata->gpio_power, "uda1380 power");
+		if (ret)
+			goto err_gpio;
+		ret = gpio_direction_output(pdata->gpio_power, 0);
+		if (ret)
+			goto err_gpio_power_conf;
+	} else {
+		ret = uda1380_reset(codec);
+		if (ret) {
+			dev_err(codec->dev, "Failed to issue reset\n");
+			goto err_reset;
+		}
 	}
 
+	INIT_WORK(&uda1380->work, uda1380_flush_work);
+
 	/* power on device */
 	uda1380_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 	/* set clock input */
 	switch (pdata->dac_clk) {
 	case UDA1380_DAC_CLK_SYSCLK:
-		uda1380_write(codec, UDA1380_CLK, 0);
+		uda1380_write_reg_cache(codec, UDA1380_CLK, 0);
 		break;
 	case UDA1380_DAC_CLK_WSPLL:
-		uda1380_write(codec, UDA1380_CLK, R00_DAC_CLK);
+		uda1380_write_reg_cache(codec, UDA1380_CLK,
+			R00_DAC_CLK);
 		break;
 	}
 
@@ -712,167 +775,73 @@
 				ARRAY_SIZE(uda1380_snd_controls));
 	uda1380_add_widgets(codec);
 
-	return ret;
-
-pcm_err:
-	return ret;
-}
-
-/* power down chip */
-static int uda1380_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (codec->control_data)
-		uda1380_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_uda1380 = {
-	.probe = 	uda1380_probe,
-	.remove = 	uda1380_remove,
-	.suspend = 	uda1380_suspend,
-	.resume =	uda1380_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_uda1380);
-
-static int uda1380_register(struct uda1380_priv *uda1380)
-{
-	int ret, i;
-	struct snd_soc_codec *codec = &uda1380->codec;
-	struct uda1380_platform_data *pdata = codec->dev->platform_data;
-
-	if (uda1380_codec) {
-		dev_err(codec->dev, "Another UDA1380 is registered\n");
-		return -EINVAL;
-	}
-
-	if (!pdata || !pdata->gpio_power || !pdata->gpio_reset)
-		return -EINVAL;
-
-	ret = gpio_request(pdata->gpio_power, "uda1380 power");
-	if (ret)
-		goto err_out;
-	ret = gpio_request(pdata->gpio_reset, "uda1380 reset");
-	if (ret)
-		goto err_gpio;
-
-	gpio_direction_output(pdata->gpio_power, 1);
-
-	/* we may need to have the clock running here - pH5 */
-	gpio_direction_output(pdata->gpio_reset, 1);
-	udelay(5);
-	gpio_set_value(pdata->gpio_reset, 0);
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, uda1380);
-	codec->name = "UDA1380";
-	codec->owner = THIS_MODULE;
-	codec->read = uda1380_read_reg_cache;
-	codec->write = uda1380_write;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = uda1380_set_bias_level;
-	codec->dai = uda1380_dai;
-	codec->num_dai = ARRAY_SIZE(uda1380_dai);
-	codec->reg_cache_size = ARRAY_SIZE(uda1380_reg);
-	codec->reg_cache = &uda1380->reg_cache;
-	codec->reg_cache_step = 1;
-
-	memcpy(codec->reg_cache, uda1380_reg, sizeof(uda1380_reg));
-
-	ret = uda1380_reset(codec);
-	if (ret < 0) {
-		dev_err(codec->dev, "Failed to issue reset\n");
-		goto err_reset;
-	}
-
-	INIT_WORK(&uda1380->work, uda1380_flush_work);
-
-	for (i = 0; i < ARRAY_SIZE(uda1380_dai); i++)
-		uda1380_dai[i].dev = codec->dev;
-
-	uda1380_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err_reset;
-	}
-
-	ret = snd_soc_register_dais(uda1380_dai, ARRAY_SIZE(uda1380_dai));
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAIs: %d\n", ret);
-		goto err_dai;
-	}
-
 	return 0;
 
-err_dai:
-	snd_soc_unregister_codec(codec);
 err_reset:
-	gpio_set_value(pdata->gpio_power, 0);
-	gpio_free(pdata->gpio_reset);
+err_gpio_power_conf:
+	if (gpio_is_valid(pdata->gpio_power))
+		gpio_free(pdata->gpio_power);
+
+err_gpio_reset_conf:
 err_gpio:
-	gpio_free(pdata->gpio_power);
+	if (gpio_is_valid(pdata->gpio_reset))
+		gpio_free(pdata->gpio_reset);
 err_out:
 	return ret;
 }
 
-static void uda1380_unregister(struct uda1380_priv *uda1380)
+/* power down chip */
+static int uda1380_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = &uda1380->codec;
-	struct uda1380_platform_data *pdata = codec->dev->platform_data;
+	struct uda1380_platform_data *pdata =codec->dev->platform_data;
 
-	snd_soc_unregister_dais(uda1380_dai, ARRAY_SIZE(uda1380_dai));
-	snd_soc_unregister_codec(&uda1380->codec);
+	uda1380_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
-	gpio_set_value(pdata->gpio_power, 0);
 	gpio_free(pdata->gpio_reset);
 	gpio_free(pdata->gpio_power);
 
-	kfree(uda1380);
-	uda1380_codec = NULL;
+	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_uda1380 = {
+	.probe =	uda1380_probe,
+	.remove =	uda1380_remove,
+	.suspend =	uda1380_suspend,
+	.resume =	uda1380_resume,
+	.read =		uda1380_read_reg_cache,
+	.write =	uda1380_write,
+	.set_bias_level = uda1380_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(uda1380_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = uda1380_reg,
+	.reg_cache_step = 1,
+};
+
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 static __devinit int uda1380_i2c_probe(struct i2c_client *i2c,
 				      const struct i2c_device_id *id)
 {
 	struct uda1380_priv *uda1380;
-	struct snd_soc_codec *codec;
 	int ret;
 
 	uda1380 = kzalloc(sizeof(struct uda1380_priv), GFP_KERNEL);
 	if (uda1380 == NULL)
 		return -ENOMEM;
 
-	codec = &uda1380->codec;
-	codec->hw_write = (hw_write_t)i2c_master_send;
-
 	i2c_set_clientdata(i2c, uda1380);
-	codec->control_data = i2c;
+	uda1380->control_data = i2c;
 
-	codec->dev = &i2c->dev;
-
-	ret = uda1380_register(uda1380);
-	if (ret != 0)
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_uda1380, uda1380_dai, ARRAY_SIZE(uda1380_dai));
+	if (ret < 0)
 		kfree(uda1380);
-
 	return ret;
 }
 
 static int __devexit uda1380_i2c_remove(struct i2c_client *i2c)
 {
-	struct uda1380_priv *uda1380 = i2c_get_clientdata(i2c);
-	uda1380_unregister(uda1380);
+	snd_soc_unregister_codec(&i2c->dev);
+	kfree(i2c_get_clientdata(i2c));
 	return 0;
 }
 
@@ -884,7 +853,7 @@
 
 static struct i2c_driver uda1380_i2c_driver = {
 	.driver = {
-		.name =  "UDA1380 I2C Codec",
+		.name =  "uda1380-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    uda1380_i2c_probe,
diff --git a/sound/soc/codecs/uda1380.h b/sound/soc/codecs/uda1380.h
index 9cefa8a..942e392 100644
--- a/sound/soc/codecs/uda1380.h
+++ b/sound/soc/codecs/uda1380.h
@@ -76,7 +76,4 @@
 #define UDA1380_DAI_PLAYBACK	1 /* playback DAI */
 #define UDA1380_DAI_CAPTURE	2 /* capture DAI */
 
-extern struct snd_soc_dai uda1380_dai[3];
-extern struct snd_soc_codec_device soc_codec_dev_uda1380;
-
 #endif /* _UDA1380_H */
diff --git a/sound/soc/codecs/wl1273.c b/sound/soc/codecs/wl1273.c
new file mode 100644
index 0000000..0c47c78
--- /dev/null
+++ b/sound/soc/codecs/wl1273.c
@@ -0,0 +1,528 @@
+/*
+ * ALSA SoC WL1273 codec driver
+ *
+ * Author:      Matti Aaltonen, <matti.j.aaltonen@nokia.com>
+ *
+ * Copyright:   (C) 2010 Nokia Corporation
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * 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
+ *
+ */
+
+#include <linux/mfd/wl1273-core.h>
+#include <linux/slab.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc-dai.h>
+#include <sound/soc-dapm.h>
+#include <sound/initval.h>
+
+#include "wl1273.h"
+
+enum wl1273_mode { WL1273_MODE_BT, WL1273_MODE_FM_RX, WL1273_MODE_FM_TX };
+
+/* codec private data */
+struct wl1273_priv {
+	enum wl1273_mode mode;
+	struct wl1273_core *core;
+	unsigned int channels;
+};
+
+static int snd_wl1273_fm_set_i2s_mode(struct wl1273_core *core,
+				      int rate, int width)
+{
+	struct device *dev = &core->i2c_dev->dev;
+	int r = 0;
+	u16 mode;
+
+	dev_dbg(dev, "rate: %d\n", rate);
+	dev_dbg(dev, "width: %d\n", width);
+
+	mutex_lock(&core->lock);
+
+	mode = core->i2s_mode & ~WL1273_IS2_WIDTH & ~WL1273_IS2_RATE;
+
+	switch (rate) {
+	case 48000:
+		mode |= WL1273_IS2_RATE_48K;
+		break;
+	case 44100:
+		mode |= WL1273_IS2_RATE_44_1K;
+		break;
+	case 32000:
+		mode |= WL1273_IS2_RATE_32K;
+		break;
+	case 22050:
+		mode |= WL1273_IS2_RATE_22_05K;
+		break;
+	case 16000:
+		mode |= WL1273_IS2_RATE_16K;
+		break;
+	case 12000:
+		mode |= WL1273_IS2_RATE_12K;
+		break;
+	case 11025:
+		mode |= WL1273_IS2_RATE_11_025;
+		break;
+	case 8000:
+		mode |= WL1273_IS2_RATE_8K;
+		break;
+	default:
+		dev_err(dev, "Sampling rate: %d not supported\n", rate);
+		r = -EINVAL;
+		goto out;
+	}
+
+	switch (width) {
+	case 16:
+		mode |= WL1273_IS2_WIDTH_32;
+		break;
+	case 20:
+		mode |= WL1273_IS2_WIDTH_40;
+		break;
+	case 24:
+		mode |= WL1273_IS2_WIDTH_48;
+		break;
+	case 25:
+		mode |= WL1273_IS2_WIDTH_50;
+		break;
+	case 30:
+		mode |= WL1273_IS2_WIDTH_60;
+		break;
+	case 32:
+		mode |= WL1273_IS2_WIDTH_64;
+		break;
+	case 40:
+		mode |= WL1273_IS2_WIDTH_80;
+		break;
+	case 48:
+		mode |= WL1273_IS2_WIDTH_96;
+		break;
+	case 64:
+		mode |= WL1273_IS2_WIDTH_128;
+		break;
+	default:
+		dev_err(dev, "Data width: %d not supported\n", width);
+		r = -EINVAL;
+		goto out;
+	}
+
+	dev_dbg(dev, "WL1273_I2S_DEF_MODE: 0x%04x\n",  WL1273_I2S_DEF_MODE);
+	dev_dbg(dev, "core->i2s_mode: 0x%04x\n", core->i2s_mode);
+	dev_dbg(dev, "mode: 0x%04x\n", mode);
+
+	if (core->i2s_mode != mode) {
+		r = wl1273_fm_write_cmd(core, WL1273_I2S_MODE_CONFIG_SET, mode);
+		if (r)
+			goto out;
+
+		core->i2s_mode = mode;
+		r = wl1273_fm_write_cmd(core, WL1273_AUDIO_ENABLE,
+					WL1273_AUDIO_ENABLE_I2S);
+		if (r)
+			goto out;
+	}
+out:
+	mutex_unlock(&core->lock);
+
+	return r;
+}
+
+static int snd_wl1273_fm_set_channel_number(struct wl1273_core *core,
+					    int channel_number)
+{
+	struct i2c_client *client = core->i2c_dev;
+	struct device *dev = &client->dev;
+	int r = 0;
+
+	dev_dbg(dev, "%s\n", __func__);
+
+	mutex_lock(&core->lock);
+
+	if (core->channel_number == channel_number)
+		goto out;
+
+	if (channel_number == 1 && core->mode == WL1273_MODE_RX)
+		r = wl1273_fm_write_cmd(core, WL1273_MOST_MODE_SET,
+					WL1273_RX_MONO);
+	else if (channel_number == 1 && core->mode == WL1273_MODE_TX)
+		r = wl1273_fm_write_cmd(core, WL1273_MONO_SET,
+					WL1273_TX_MONO);
+	else if (channel_number == 2 && core->mode == WL1273_MODE_RX)
+		r = wl1273_fm_write_cmd(core, WL1273_MOST_MODE_SET,
+					WL1273_RX_STEREO);
+	else if (channel_number == 2 && core->mode == WL1273_MODE_TX)
+		r = wl1273_fm_write_cmd(core, WL1273_MONO_SET,
+					WL1273_TX_STEREO);
+	else
+		r = -EINVAL;
+out:
+	mutex_unlock(&core->lock);
+
+	return r;
+}
+
+static int snd_wl1273_get_audio_route(struct snd_kcontrol *kcontrol,
+				      struct snd_ctl_elem_value *ucontrol)
+{
+	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	struct wl1273_priv *wl1273 = snd_soc_codec_get_drvdata(codec);
+
+	ucontrol->value.integer.value[0] = wl1273->mode;
+
+	return 0;
+}
+
+static const char *wl1273_audio_route[] = { "Bt", "FmRx", "FmTx" };
+
+static int snd_wl1273_set_audio_route(struct snd_kcontrol *kcontrol,
+				      struct snd_ctl_elem_value *ucontrol)
+{
+	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	struct wl1273_priv *wl1273 = snd_soc_codec_get_drvdata(codec);
+
+	if (wl1273->mode == ucontrol->value.integer.value[0])
+		return 0;
+
+	/* Do not allow changes while stream is running */
+	if (codec->active)
+		return -EPERM;
+
+	if (ucontrol->value.integer.value[0] < 0 ||
+	    ucontrol->value.integer.value[0] >=  ARRAY_SIZE(wl1273_audio_route))
+		return -EINVAL;
+
+	wl1273->mode = ucontrol->value.integer.value[0];
+
+	return 1;
+}
+
+static const struct soc_enum wl1273_enum =
+	SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(wl1273_audio_route), wl1273_audio_route);
+
+static int snd_wl1273_fm_audio_get(struct snd_kcontrol *kcontrol,
+				   struct snd_ctl_elem_value *ucontrol)
+{
+	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	struct wl1273_priv *wl1273 = snd_soc_codec_get_drvdata(codec);
+
+	dev_dbg(codec->dev, "%s: enter.\n", __func__);
+
+	ucontrol->value.integer.value[0] = wl1273->core->audio_mode;
+
+	return 0;
+}
+
+static int snd_wl1273_fm_audio_put(struct snd_kcontrol *kcontrol,
+				   struct snd_ctl_elem_value *ucontrol)
+{
+	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	struct wl1273_priv *wl1273 = snd_soc_codec_get_drvdata(codec);
+	int val, r = 0;
+
+	dev_dbg(codec->dev, "%s: enter.\n", __func__);
+
+	val = ucontrol->value.integer.value[0];
+	if (wl1273->core->audio_mode == val)
+		return 0;
+
+	r = wl1273_fm_set_audio(wl1273->core, val);
+	if (r < 0)
+		return r;
+
+	return 1;
+}
+
+static const char *wl1273_audio_strings[] = { "Digital", "Analog" };
+
+static const struct soc_enum wl1273_audio_enum =
+	SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(wl1273_audio_strings),
+			    wl1273_audio_strings);
+
+static int snd_wl1273_fm_volume_get(struct snd_kcontrol *kcontrol,
+				    struct snd_ctl_elem_value *ucontrol)
+{
+	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	struct wl1273_priv *wl1273 = snd_soc_codec_get_drvdata(codec);
+
+	dev_dbg(codec->dev, "%s: enter.\n", __func__);
+
+	ucontrol->value.integer.value[0] = wl1273->core->volume;
+
+	return 0;
+}
+
+static int snd_wl1273_fm_volume_put(struct snd_kcontrol *kcontrol,
+				    struct snd_ctl_elem_value *ucontrol)
+{
+	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	struct wl1273_priv *wl1273 = snd_soc_codec_get_drvdata(codec);
+	int r;
+
+	dev_dbg(codec->dev, "%s: enter.\n", __func__);
+
+	r = wl1273_fm_set_volume(wl1273->core,
+				 ucontrol->value.integer.value[0]);
+	if (r)
+		return r;
+
+	return 1;
+}
+
+static const struct snd_kcontrol_new wl1273_controls[] = {
+	SOC_ENUM_EXT("Codec Mode", wl1273_enum,
+		     snd_wl1273_get_audio_route, snd_wl1273_set_audio_route),
+	SOC_ENUM_EXT("Audio Switch", wl1273_audio_enum,
+		     snd_wl1273_fm_audio_get,  snd_wl1273_fm_audio_put),
+	SOC_SINGLE_EXT("Volume", 0, 0, WL1273_MAX_VOLUME, 0,
+		       snd_wl1273_fm_volume_get, snd_wl1273_fm_volume_put),
+};
+
+static int wl1273_startup(struct snd_pcm_substream *substream,
+			  struct snd_soc_dai *dai)
+{
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct snd_soc_codec *codec = rtd->codec;
+	struct wl1273_priv *wl1273 = snd_soc_codec_get_drvdata(codec);
+
+	switch (wl1273->mode) {
+	case WL1273_MODE_BT:
+		snd_pcm_hw_constraint_minmax(substream->runtime,
+					     SNDRV_PCM_HW_PARAM_RATE,
+					     8000, 8000);
+		snd_pcm_hw_constraint_minmax(substream->runtime,
+					     SNDRV_PCM_HW_PARAM_CHANNELS, 1, 1);
+		break;
+	case WL1273_MODE_FM_RX:
+		if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
+			pr_err("Cannot play in RX mode.\n");
+			return -EINVAL;
+		}
+		break;
+	case WL1273_MODE_FM_TX:
+		if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) {
+			pr_err("Cannot capture in TX mode.\n");
+			return -EINVAL;
+		}
+		break;
+	default:
+		return -EINVAL;
+		break;
+	}
+
+	return 0;
+}
+
+static int wl1273_hw_params(struct snd_pcm_substream *substream,
+			    struct snd_pcm_hw_params *params,
+			    struct snd_soc_dai *dai)
+{
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct wl1273_priv *wl1273 = snd_soc_codec_get_drvdata(rtd->codec);
+	struct wl1273_core *core = wl1273->core;
+	unsigned int rate, width, r;
+
+	if (params_format(params) != SNDRV_PCM_FORMAT_S16_LE) {
+		pr_err("Only SNDRV_PCM_FORMAT_S16_LE supported.\n");
+		return -EINVAL;
+	}
+
+	rate = params_rate(params);
+	width =  hw_param_interval(params, SNDRV_PCM_HW_PARAM_SAMPLE_BITS)->min;
+
+	if (wl1273->mode == WL1273_MODE_BT) {
+		if (rate != 8000) {
+			pr_err("Rate %d not supported.\n", params_rate(params));
+			return -EINVAL;
+		}
+
+		if (params_channels(params) != 1) {
+			pr_err("Only mono supported.\n");
+			return -EINVAL;
+		}
+
+		return 0;
+	}
+
+	if (wl1273->mode == WL1273_MODE_FM_TX &&
+	    substream->stream == SNDRV_PCM_STREAM_CAPTURE) {
+		pr_err("Only playback supported with TX.\n");
+		return -EINVAL;
+	}
+
+	if (wl1273->mode == WL1273_MODE_FM_RX  &&
+	    substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
+		pr_err("Only capture supported with RX.\n");
+		return -EINVAL;
+	}
+
+	if (wl1273->mode != WL1273_MODE_FM_RX  &&
+	    wl1273->mode != WL1273_MODE_FM_TX) {
+		pr_err("Unexpected mode: %d.\n", wl1273->mode);
+		return -EINVAL;
+	}
+
+	r = snd_wl1273_fm_set_i2s_mode(core, rate, width);
+	if (r)
+		return r;
+
+	wl1273->channels = params_channels(params);
+	r = snd_wl1273_fm_set_channel_number(core, wl1273->channels);
+	if (r)
+		return r;
+
+	return 0;
+}
+
+static struct snd_soc_dai_ops wl1273_dai_ops = {
+	.startup	= wl1273_startup,
+	.hw_params	= wl1273_hw_params,
+};
+
+static struct snd_soc_dai_driver wl1273_dai = {
+	.name = "wl1273-fm",
+	.playback = {
+		.stream_name = "Playback",
+		.channels_min = 1,
+		.channels_max = 2,
+		.rates = SNDRV_PCM_RATE_8000_48000,
+		.formats = SNDRV_PCM_FMTBIT_S16_LE},
+	.capture = {
+		.stream_name = "Capture",
+		.channels_min = 1,
+		.channels_max = 2,
+		.rates = SNDRV_PCM_RATE_8000_48000,
+		.formats = SNDRV_PCM_FMTBIT_S16_LE},
+	.ops = &wl1273_dai_ops,
+};
+
+/* Audio interface format for the soc_card driver */
+int wl1273_get_format(struct snd_soc_codec *codec, unsigned int *fmt)
+{
+	struct wl1273_priv *wl1273;
+
+	if (codec == NULL || fmt == NULL)
+		return -EINVAL;
+
+	wl1273 = snd_soc_codec_get_drvdata(codec);
+
+	switch (wl1273->mode) {
+	case WL1273_MODE_FM_RX:
+	case WL1273_MODE_FM_TX:
+		*fmt =	SND_SOC_DAIFMT_I2S |
+			SND_SOC_DAIFMT_NB_NF |
+			SND_SOC_DAIFMT_CBM_CFM;
+
+		break;
+	case WL1273_MODE_BT:
+		*fmt =	SND_SOC_DAIFMT_DSP_A |
+			SND_SOC_DAIFMT_IB_NF |
+			SND_SOC_DAIFMT_CBM_CFM;
+
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(wl1273_get_format);
+
+static int wl1273_probe(struct snd_soc_codec *codec)
+{
+	struct wl1273_core **core = codec->dev->platform_data;
+	struct wl1273_priv *wl1273;
+	int r;
+
+	dev_dbg(codec->dev, "%s.\n", __func__);
+
+	if (!core) {
+		dev_err(codec->dev, "Platform data is missing.\n");
+		return -EINVAL;
+	}
+
+	wl1273 = kzalloc(sizeof(struct wl1273_priv), GFP_KERNEL);
+	if (wl1273 == NULL) {
+		dev_err(codec->dev, "Cannot allocate memory.\n");
+		return -ENOMEM;
+	}
+
+	wl1273->mode = WL1273_MODE_BT;
+	wl1273->core = *core;
+
+	snd_soc_codec_set_drvdata(codec, wl1273);
+	mutex_init(&codec->mutex);
+
+	r = snd_soc_add_controls(codec, wl1273_controls,
+				 ARRAY_SIZE(wl1273_controls));
+	if (r)
+		kfree(wl1273);
+
+	return r;
+}
+
+static int wl1273_remove(struct snd_soc_codec *codec)
+{
+	struct wl1273_priv *wl1273 = snd_soc_codec_get_drvdata(codec);
+
+	dev_dbg(codec->dev, "%s\n", __func__);
+	kfree(wl1273);
+
+	return 0;
+}
+
+static struct snd_soc_codec_driver soc_codec_dev_wl1273 = {
+	.probe = wl1273_probe,
+	.remove = wl1273_remove,
+};
+
+static int __devinit wl1273_platform_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wl1273,
+				      &wl1273_dai, 1);
+}
+
+static int __devexit wl1273_platform_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_codec(&pdev->dev);
+	return 0;
+}
+
+MODULE_ALIAS("platform:wl1273-codec");
+
+static struct platform_driver wl1273_platform_driver = {
+	.driver		= {
+		.name	= "wl1273-codec",
+		.owner	= THIS_MODULE,
+	},
+	.probe		= wl1273_platform_probe,
+	.remove		= __devexit_p(wl1273_platform_remove),
+};
+
+static int __init wl1273_init(void)
+{
+	return platform_driver_register(&wl1273_platform_driver);
+}
+module_init(wl1273_init);
+
+static void __exit wl1273_exit(void)
+{
+	platform_driver_unregister(&wl1273_platform_driver);
+}
+module_exit(wl1273_exit);
+
+MODULE_AUTHOR("Matti Aaltonen <matti.j.aaltonen@nokia.com>");
+MODULE_DESCRIPTION("ASoC WL1273 codec driver");
+MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/wl1273.h b/sound/soc/codecs/wl1273.h
new file mode 100644
index 0000000..14ed027
--- /dev/null
+++ b/sound/soc/codecs/wl1273.h
@@ -0,0 +1,101 @@
+/*
+ * sound/soc/codec/wl1273.h
+ *
+ * ALSA SoC WL1273 codec driver
+ *
+ * Copyright (C) Nokia Corporation
+ * Author: Matti Aaltonen <matti.j.aaltonen@nokia.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * 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
+ *
+ */
+
+#ifndef __WL1273_CODEC_H__
+#define __WL1273_CODEC_H__
+
+/* I2S protocol, left channel first, data width 16 bits */
+#define WL1273_PCM_DEF_MODE		0x00
+
+/* Rx */
+#define WL1273_AUDIO_ENABLE_I2S		(1 << 0)
+#define WL1273_AUDIO_ENABLE_ANALOG	(1 << 1)
+
+/* Tx */
+#define WL1273_AUDIO_IO_SET_ANALOG	0
+#define WL1273_AUDIO_IO_SET_I2S		1
+
+#define WL1273_POWER_SET_OFF		0
+#define WL1273_POWER_SET_FM		(1 << 0)
+#define WL1273_POWER_SET_RDS		(1 << 1)
+#define WL1273_POWER_SET_RETENTION	(1 << 4)
+
+#define WL1273_PUPD_SET_OFF		0x00
+#define WL1273_PUPD_SET_ON		0x01
+#define WL1273_PUPD_SET_RETENTION	0x10
+
+/* I2S mode */
+#define WL1273_IS2_WIDTH_32	0x0
+#define WL1273_IS2_WIDTH_40	0x1
+#define WL1273_IS2_WIDTH_22_23	0x2
+#define WL1273_IS2_WIDTH_23_22	0x3
+#define WL1273_IS2_WIDTH_48	0x4
+#define WL1273_IS2_WIDTH_50	0x5
+#define WL1273_IS2_WIDTH_60	0x6
+#define WL1273_IS2_WIDTH_64	0x7
+#define WL1273_IS2_WIDTH_80	0x8
+#define WL1273_IS2_WIDTH_96	0x9
+#define WL1273_IS2_WIDTH_128	0xa
+#define WL1273_IS2_WIDTH	0xf
+
+#define WL1273_IS2_FORMAT_STD	(0x0 << 4)
+#define WL1273_IS2_FORMAT_LEFT	(0x1 << 4)
+#define WL1273_IS2_FORMAT_RIGHT	(0x2 << 4)
+#define WL1273_IS2_FORMAT_USER	(0x3 << 4)
+
+#define WL1273_IS2_MASTER	(0x0 << 6)
+#define WL1273_IS2_SLAVEW	(0x1 << 6)
+
+#define WL1273_IS2_TRI_AFTER_SENDING	(0x0 << 7)
+#define WL1273_IS2_TRI_ALWAYS_ACTIVE	(0x1 << 7)
+
+#define WL1273_IS2_SDOWS_RR	(0x0 << 8)
+#define WL1273_IS2_SDOWS_RF	(0x1 << 8)
+#define WL1273_IS2_SDOWS_FR	(0x2 << 8)
+#define WL1273_IS2_SDOWS_FF	(0x3 << 8)
+
+#define WL1273_IS2_TRI_OPT	(0x0 << 10)
+#define WL1273_IS2_TRI_ALWAYS	(0x1 << 10)
+
+#define WL1273_IS2_RATE_48K	(0x0 << 12)
+#define WL1273_IS2_RATE_44_1K	(0x1 << 12)
+#define WL1273_IS2_RATE_32K	(0x2 << 12)
+#define WL1273_IS2_RATE_22_05K	(0x4 << 12)
+#define WL1273_IS2_RATE_16K	(0x5 << 12)
+#define WL1273_IS2_RATE_12K	(0x8 << 12)
+#define WL1273_IS2_RATE_11_025	(0x9 << 12)
+#define WL1273_IS2_RATE_8K	(0xa << 12)
+#define WL1273_IS2_RATE		(0xf << 12)
+
+#define WL1273_I2S_DEF_MODE	(WL1273_IS2_WIDTH_32 | \
+				 WL1273_IS2_FORMAT_STD | \
+				 WL1273_IS2_MASTER | \
+				 WL1273_IS2_TRI_AFTER_SENDING | \
+				 WL1273_IS2_SDOWS_RR | \
+				 WL1273_IS2_TRI_OPT | \
+				 WL1273_IS2_RATE_48K)
+
+int wl1273_get_format(struct snd_soc_codec *codec, unsigned int *fmt);
+
+#endif	/* End of __WL1273_CODEC_H__ */
diff --git a/sound/soc/codecs/wm2000.h b/sound/soc/codecs/wm2000.h
index c18e261..0b6f056 100644
--- a/sound/soc/codecs/wm2000.h
+++ b/sound/soc/codecs/wm2000.h
@@ -16,9 +16,6 @@
 
 extern int wm2000_add_controls(struct snd_soc_codec *codec);
 
-extern struct snd_soc_dai wm2000_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm2000;
-
 #define WM2000_REG_SYS_START	    0x8000
 #define WM2000_REG_SPEECH_CLARITY   0x8fef
 #define WM2000_REG_SYS_WATCHDOG     0x8ff6
diff --git a/sound/soc/codecs/wm8350.c b/sound/soc/codecs/wm8350.c
index 0221ca7..f4f1fba 100644
--- a/sound/soc/codecs/wm8350.c
+++ b/sound/soc/codecs/wm8350.c
@@ -1321,20 +1321,14 @@
 	return 0;
 }
 
-static int wm8350_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8350_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8350_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int wm8350_resume(struct platform_device *pdev)
+static int wm8350_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8350_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	return 0;
@@ -1489,24 +1483,74 @@
 }
 EXPORT_SYMBOL_GPL(wm8350_mic_jack_detect);
 
-static struct snd_soc_codec *wm8350_codec;
+#define WM8350_RATES (SNDRV_PCM_RATE_8000_96000)
 
-static int wm8350_probe(struct platform_device *pdev)
+#define WM8350_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\
+			SNDRV_PCM_FMTBIT_S20_3LE |\
+			SNDRV_PCM_FMTBIT_S24_LE)
+
+static struct snd_soc_dai_ops wm8350_dai_ops = {
+	 .hw_params	= wm8350_pcm_hw_params,
+	 .digital_mute	= wm8350_mute,
+	 .trigger	= wm8350_pcm_trigger,
+	 .set_fmt	= wm8350_set_dai_fmt,
+	 .set_sysclk	= wm8350_set_dai_sysclk,
+	 .set_pll	= wm8350_set_fll,
+	 .set_clkdiv	= wm8350_set_clkdiv,
+};
+
+static struct snd_soc_dai_driver wm8350_dai = {
+	.name = "wm8350-hifi",
+	.playback = {
+		.stream_name = "Playback",
+		.channels_min = 1,
+		.channels_max = 2,
+		.rates = WM8350_RATES,
+		.formats = WM8350_FORMATS,
+	},
+	.capture = {
+		 .stream_name = "Capture",
+		 .channels_min = 1,
+		 .channels_max = 2,
+		 .rates = WM8350_RATES,
+		 .formats = WM8350_FORMATS,
+	 },
+	.ops = &wm8350_dai_ops,
+};
+
+static  int wm8350_codec_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	struct wm8350 *wm8350;
+	struct wm8350 *wm8350 = dev_get_platdata(codec->dev);
 	struct wm8350_data *priv;
-	int ret;
 	struct wm8350_output *out1;
 	struct wm8350_output *out2;
+	int ret, i;
 
-	BUG_ON(!wm8350_codec);
+	if (wm8350->codec.platform_data == NULL) {
+		dev_err(codec->dev, "No audio platform data supplied\n");
+		return -EINVAL;
+	}
 
-	socdev->card->codec = wm8350_codec;
-	codec = socdev->card->codec;
-	wm8350 = codec->control_data;
-	priv = snd_soc_codec_get_drvdata(codec);
+	priv = kzalloc(sizeof(struct wm8350_data), GFP_KERNEL);
+	if (priv == NULL)
+		return -ENOMEM;
+	snd_soc_codec_set_drvdata(codec, priv);
+
+	for (i = 0; i < ARRAY_SIZE(supply_names); i++)
+		priv->supplies[i].supply = supply_names[i];
+
+	ret = regulator_bulk_get(wm8350->dev, ARRAY_SIZE(priv->supplies),
+				 priv->supplies);
+	if (ret != 0)
+		goto err_priv;
+
+	wm8350->codec.codec = codec;
+	codec->control_data = wm8350;
+
+	/* Put the codec into reset if it wasn't already */
+	wm8350_clear_bits(wm8350, WM8350_POWER_MGMT_5, WM8350_CODEC_ENA);
+
+	INIT_DELAYED_WORK(&codec->delayed_work, wm8350_pga_work);
 
 	/* Enable the codec */
 	wm8350_set_bits(wm8350, WM8350_POWER_MGMT_5, WM8350_CODEC_ENA);
@@ -1557,11 +1601,6 @@
 	wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_MICD,
 			    wm8350_mic_handler, 0, "Microphone detect", priv);
 
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to create pcms\n");
-		return ret;
-	}
 
 	snd_soc_add_controls(codec, wm8350_snd_controls,
 				ARRAY_SIZE(wm8350_snd_controls));
@@ -1570,14 +1609,16 @@
 	wm8350_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	return 0;
+
+err_priv:
+	kfree(priv);
+	return ret;
 }
 
-static int wm8350_remove(struct platform_device *pdev)
+static int  wm8350_codec_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-	struct wm8350 *wm8350 = codec->control_data;
 	struct wm8350_data *priv = snd_soc_codec_get_drvdata(codec);
+	struct wm8350 *wm8350 = dev_get_platdata(codec->dev);
 	int ret;
 
 	wm8350_clear_bits(wm8350, WM8350_JACK_DETECT,
@@ -1607,134 +1648,30 @@
 
 	wm8350_clear_bits(wm8350, WM8350_POWER_MGMT_5, WM8350_CODEC_ENA);
 
+	regulator_bulk_free(ARRAY_SIZE(priv->supplies), priv->supplies);
+	kfree(priv);
 	return 0;
 }
 
-#define WM8350_RATES (SNDRV_PCM_RATE_8000_96000)
-
-#define WM8350_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\
-			SNDRV_PCM_FMTBIT_S20_3LE |\
-			SNDRV_PCM_FMTBIT_S24_LE)
-
-static struct snd_soc_dai_ops wm8350_dai_ops = {
-	 .hw_params	= wm8350_pcm_hw_params,
-	 .digital_mute	= wm8350_mute,
-	 .trigger	= wm8350_pcm_trigger,
-	 .set_fmt	= wm8350_set_dai_fmt,
-	 .set_sysclk	= wm8350_set_dai_sysclk,
-	 .set_pll	= wm8350_set_fll,
-	 .set_clkdiv	= wm8350_set_clkdiv,
-};
-
-struct snd_soc_dai wm8350_dai = {
-	.name = "WM8350",
-	.playback = {
-		.stream_name = "Playback",
-		.channels_min = 1,
-		.channels_max = 2,
-		.rates = WM8350_RATES,
-		.formats = WM8350_FORMATS,
-	},
-	.capture = {
-		 .stream_name = "Capture",
-		 .channels_min = 1,
-		 .channels_max = 2,
-		 .rates = WM8350_RATES,
-		 .formats = WM8350_FORMATS,
-	 },
-	.ops = &wm8350_dai_ops,
-};
-EXPORT_SYMBOL_GPL(wm8350_dai);
-
-struct snd_soc_codec_device soc_codec_dev_wm8350 = {
-	.probe = 	wm8350_probe,
-	.remove = 	wm8350_remove,
+static struct snd_soc_codec_driver soc_codec_dev_wm8350 = {
+	.probe =	wm8350_codec_probe,
+	.remove =	wm8350_codec_remove,
 	.suspend = 	wm8350_suspend,
 	.resume =	wm8350_resume,
+	.read = wm8350_codec_read,
+	.write = wm8350_codec_write,
+	.set_bias_level = wm8350_set_bias_level,
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8350);
 
-static __devinit int wm8350_codec_probe(struct platform_device *pdev)
+static int __devinit wm8350_probe(struct platform_device *pdev)
 {
-	struct wm8350 *wm8350 = platform_get_drvdata(pdev);
-	struct wm8350_data *priv;
-	struct snd_soc_codec *codec;
-	int ret, i;
-
-	if (wm8350->codec.platform_data == NULL) {
-		dev_err(&pdev->dev, "No audio platform data supplied\n");
-		return -EINVAL;
-	}
-
-	priv = kzalloc(sizeof(struct wm8350_data), GFP_KERNEL);
-	if (priv == NULL)
-		return -ENOMEM;
-
-	for (i = 0; i < ARRAY_SIZE(supply_names); i++)
-		priv->supplies[i].supply = supply_names[i];
-
-	ret = regulator_bulk_get(wm8350->dev, ARRAY_SIZE(priv->supplies),
-				 priv->supplies);
-	if (ret != 0)
-		goto err_priv;
-
-	codec = &priv->codec;
-	wm8350->codec.codec = codec;
-
-	wm8350_dai.dev = &pdev->dev;
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-	codec->dev = &pdev->dev;
-	codec->name = "WM8350";
-	codec->owner = THIS_MODULE;
-	codec->read = wm8350_codec_read;
-	codec->write = wm8350_codec_write;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8350_set_bias_level;
-	codec->dai = &wm8350_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = WM8350_MAX_REGISTER;
-	snd_soc_codec_set_drvdata(codec, priv);
-	codec->control_data = wm8350;
-
-	/* Put the codec into reset if it wasn't already */
-	wm8350_clear_bits(wm8350, WM8350_POWER_MGMT_5, WM8350_CODEC_ENA);
-
-	INIT_DELAYED_WORK(&codec->delayed_work, wm8350_pga_work);
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0)
-		goto err_supply;
-
-	wm8350_codec = codec;
-
-	ret = snd_soc_register_dai(&wm8350_dai);
-	if (ret != 0)
-		goto err_codec;
-	return 0;
-
-err_codec:
-	snd_soc_unregister_codec(codec);
-err_supply:
-	regulator_bulk_free(ARRAY_SIZE(priv->supplies), priv->supplies);
-err_priv:
-	kfree(priv);
-	wm8350_codec = NULL;
-	return ret;
+	return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm8350,
+			&wm8350_dai, 1);
 }
 
-static int __devexit wm8350_codec_remove(struct platform_device *pdev)
+static int __devexit wm8350_remove(struct platform_device *pdev)
 {
-	struct wm8350 *wm8350 = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = wm8350->codec.codec;
-	struct wm8350_data *priv = snd_soc_codec_get_drvdata(codec);
-
-	snd_soc_unregister_dai(&wm8350_dai);
-	snd_soc_unregister_codec(codec);
-	regulator_bulk_free(ARRAY_SIZE(priv->supplies), priv->supplies);
-	kfree(priv);
-	wm8350_codec = NULL;
+	snd_soc_unregister_codec(&pdev->dev);
 	return 0;
 }
 
@@ -1743,8 +1680,8 @@
 		   .name = "wm8350-codec",
 		   .owner = THIS_MODULE,
 		   },
-	.probe = wm8350_codec_probe,
-	.remove = __devexit_p(wm8350_codec_remove),
+	.probe = wm8350_probe,
+	.remove = __devexit_p(wm8350_remove),
 };
 
 static __init int wm8350_init(void)
diff --git a/sound/soc/codecs/wm8350.h b/sound/soc/codecs/wm8350.h
index 9ed0467..74108eb 100644
--- a/sound/soc/codecs/wm8350.h
+++ b/sound/soc/codecs/wm8350.h
@@ -15,9 +15,6 @@
 #include <sound/soc.h>
 #include <linux/mfd/wm8350/audio.h>
 
-extern struct snd_soc_dai wm8350_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8350;
-
 enum wm8350_jack {
 	WM8350_JDL = 1,
 	WM8350_JDR = 2,
diff --git a/sound/soc/codecs/wm8400.c b/sound/soc/codecs/wm8400.c
index 8f29406..8502997 100644
--- a/sound/soc/codecs/wm8400.c
+++ b/sound/soc/codecs/wm8400.c
@@ -65,7 +65,7 @@
 
 /* codec private data */
 struct wm8400_priv {
-	struct snd_soc_codec codec;
+	struct snd_soc_codec *codec;
 	struct wm8400 *wm8400;
 	u16 fake_register;
 	unsigned int sysclk;
@@ -1163,8 +1163,7 @@
 	struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	u16 audio1 = wm8400_read(codec, WM8400_AUDIO_INTERFACE_1);
 
 	audio1 &= ~WM8400_AIF_WL_MASK;
@@ -1332,10 +1331,9 @@
  * 1. ADC/DAC on Primary Interface
  * 2. ADC on Primary Interface/DAC on secondary
  */
-struct snd_soc_dai wm8400_dai = {
+static struct snd_soc_dai_driver wm8400_dai = {
 /* ADC/DAC on primary */
-	.name = "WM8400 ADC/DAC Primary",
-	.id = 1,
+	.name = "wm8400-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -1352,147 +1350,53 @@
 	},
 	.ops = &wm8400_dai_ops,
 };
-EXPORT_SYMBOL_GPL(wm8400_dai);
 
-static int wm8400_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8400_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8400_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
 	return 0;
 }
 
-static int wm8400_resume(struct platform_device *pdev)
+static int wm8400_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8400_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	return 0;
 }
 
-static struct snd_soc_codec *wm8400_codec;
-
-static int wm8400_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret;
-
-	if (!wm8400_codec) {
-		dev_err(&pdev->dev, "wm8400 not yet discovered\n");
-		return -ENODEV;
-	}
-	codec = wm8400_codec;
-
-	socdev->card->codec = codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to create pcms\n");
-		goto pcm_err;
-	}
-
-	wm8400_add_controls(codec);
-	wm8400_add_widgets(codec);
-
-pcm_err:
-	return ret;
-}
-
-/* power down chip */
-static int wm8400_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8400 = {
-	.probe =	wm8400_probe,
-	.remove =	wm8400_remove,
-	.suspend =	wm8400_suspend,
-	.resume =	wm8400_resume,
-};
-
 static void wm8400_probe_deferred(struct work_struct *work)
 {
 	struct wm8400_priv *priv = container_of(work, struct wm8400_priv,
 						work);
-	struct snd_soc_codec *codec = &priv->codec;
-	int ret;
+	struct snd_soc_codec *codec = priv->codec;
 
 	/* charge output caps */
 	wm8400_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
-	/* We're done, tell the subsystem. */
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(priv->wm8400->dev,
-			"Failed to register codec: %d\n", ret);
-		goto err;
-	}
-
-	ret = snd_soc_register_dai(&wm8400_dai);
-	if (ret != 0) {
-		dev_err(priv->wm8400->dev,
-			"Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
-
-	return;
-
-err_codec:
-	snd_soc_unregister_codec(codec);
-err:
-	wm8400_set_bias_level(codec, SND_SOC_BIAS_OFF);
 }
 
-static int wm8400_codec_probe(struct platform_device *dev)
+static int wm8400_codec_probe(struct snd_soc_codec *codec)
 {
+	struct wm8400 *wm8400 = dev_get_platdata(codec->dev);
 	struct wm8400_priv *priv;
 	int ret;
 	u16 reg;
-	struct snd_soc_codec *codec;
 
 	priv = kzalloc(sizeof(struct wm8400_priv), GFP_KERNEL);
 	if (priv == NULL)
 		return -ENOMEM;
 
-	codec = &priv->codec;
 	snd_soc_codec_set_drvdata(codec, priv);
-	codec->control_data = dev_get_drvdata(&dev->dev);
-	priv->wm8400 = dev_get_drvdata(&dev->dev);
+	codec->control_data = priv->wm8400 = wm8400;
+	priv->codec = codec;
 
-	ret = regulator_bulk_get(priv->wm8400->dev,
+	ret = regulator_bulk_get(wm8400->dev,
 				 ARRAY_SIZE(power), &power[0]);
 	if (ret != 0) {
-		dev_err(&dev->dev, "Failed to get regulators: %d\n", ret);
+		dev_err(codec->dev, "Failed to get regulators: %d\n", ret);
 	        goto err;
 	}
 
-	codec->dev = &dev->dev;
-	wm8400_dai.dev = &dev->dev;
-
-	codec->name = "WM8400";
-	codec->owner = THIS_MODULE;
-	codec->read = wm8400_read;
-	codec->write = wm8400_write;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8400_set_bias_level;
-	codec->dai = &wm8400_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = WM8400_REGISTER_COUNT;
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
 	INIT_WORK(&priv->work, wm8400_probe_deferred);
 
 	wm8400_codec_reset(codec);
@@ -1511,65 +1415,78 @@
 	wm8400_write(codec, WM8400_LEFT_OUTPUT_VOLUME, 0x50 | (1<<8));
 	wm8400_write(codec, WM8400_RIGHT_OUTPUT_VOLUME, 0x50 | (1<<8));
 
-	wm8400_codec = codec;
-
 	if (!schedule_work(&priv->work)) {
 		ret = -EINVAL;
 		goto err_regulator;
 	}
-
+	wm8400_add_controls(codec);
+	wm8400_add_widgets(codec);
 	return 0;
 
 err_regulator:
-	wm8400_codec = NULL;
 	regulator_bulk_free(ARRAY_SIZE(power), power);
 err:
 	kfree(priv);
 	return ret;
 }
 
-static int __exit wm8400_codec_remove(struct platform_device *dev)
+static int  wm8400_codec_remove(struct snd_soc_codec *codec)
 {
-	struct wm8400_priv *priv = snd_soc_codec_get_drvdata(wm8400_codec);
+	struct wm8400_priv *priv = snd_soc_codec_get_drvdata(codec);
 	u16 reg;
 
-	snd_soc_unregister_dai(&wm8400_dai);
-	snd_soc_unregister_codec(wm8400_codec);
-
-	reg = wm8400_read(wm8400_codec, WM8400_POWER_MANAGEMENT_1);
-	wm8400_write(wm8400_codec, WM8400_POWER_MANAGEMENT_1,
+	reg = wm8400_read(codec, WM8400_POWER_MANAGEMENT_1);
+	wm8400_write(codec, WM8400_POWER_MANAGEMENT_1,
 		     reg & (~WM8400_CODEC_ENA));
 
 	regulator_bulk_free(ARRAY_SIZE(power), power);
 	kfree(priv);
 
-	wm8400_codec = NULL;
+	return 0;
+}
 
+static struct snd_soc_codec_driver soc_codec_dev_wm8400 = {
+	.probe =	wm8400_codec_probe,
+	.remove =	wm8400_codec_remove,
+	.suspend =	wm8400_suspend,
+	.resume =	wm8400_resume,
+	.read = wm8400_read,
+	.write = wm8400_write,
+	.set_bias_level = wm8400_set_bias_level,
+};
+
+static int __devinit wm8400_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm8400,
+			&wm8400_dai, 1);
+}
+
+static int __devexit wm8400_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_codec(&pdev->dev);
 	return 0;
 }
 
 static struct platform_driver wm8400_codec_driver = {
 	.driver = {
-		.name = "wm8400-codec",
-		.owner = THIS_MODULE,
-	},
-	.probe = wm8400_codec_probe,
-	.remove	= __exit_p(wm8400_codec_remove),
+		   .name = "wm8400-codec",
+		   .owner = THIS_MODULE,
+		   },
+	.probe = wm8400_probe,
+	.remove = __devexit_p(wm8400_remove),
 };
 
-static int __init wm8400_codec_init(void)
+static __init int wm8400_init(void)
 {
 	return platform_driver_register(&wm8400_codec_driver);
 }
-module_init(wm8400_codec_init);
+module_init(wm8400_init);
 
-static void __exit wm8400_codec_exit(void)
+static __exit void wm8400_exit(void)
 {
 	platform_driver_unregister(&wm8400_codec_driver);
 }
-module_exit(wm8400_codec_exit);
-
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8400);
+module_exit(wm8400_exit);
 
 MODULE_DESCRIPTION("ASoC WM8400 driver");
 MODULE_AUTHOR("Mark Brown");
diff --git a/sound/soc/codecs/wm8400.h b/sound/soc/codecs/wm8400.h
index 79c5934..521adb1 100644
--- a/sound/soc/codecs/wm8400.h
+++ b/sound/soc/codecs/wm8400.h
@@ -56,7 +56,4 @@
 #define WM8400_BCLK_DIV_44                      (0xE << 1)
 #define WM8400_BCLK_DIV_48                      (0xF << 1)
 
-extern struct snd_soc_dai wm8400_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8400;
-
 #endif
diff --git a/sound/soc/codecs/wm8510.c b/sound/soc/codecs/wm8510.c
index 0f7bcb6..02ecf54 100644
--- a/sound/soc/codecs/wm8510.c
+++ b/sound/soc/codecs/wm8510.c
@@ -29,10 +29,6 @@
 
 #include "wm8510.h"
 
-#define WM8510_VERSION "0.6"
-
-struct snd_soc_codec_device soc_codec_dev_wm8510;
-
 /*
  * wm8510 register cache
  * We can't read the WM8510 register space when we are
@@ -61,6 +57,11 @@
 
 #define wm8510_reset(c)	snd_soc_write(c, WM8510_RESET, 0)
 
+/* codec private data */
+struct wm8510_priv {
+	enum snd_soc_control_type control_type;
+};
+
 static const char *wm8510_companding[] = { "Off", "NC", "u-law", "A-law" };
 static const char *wm8510_deemp[] = { "None", "32kHz", "44.1kHz", "48kHz" };
 static const char *wm8510_alc[] = { "ALC", "Limiter" };
@@ -403,8 +404,7 @@
 				struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	u16 iface = snd_soc_read(codec, WM8510_IFACE) & 0x19f;
 	u16 adn = snd_soc_read(codec, WM8510_ADD) & 0x1f1;
 
@@ -514,8 +514,8 @@
 	.set_pll	= wm8510_set_dai_pll,
 };
 
-struct snd_soc_dai wm8510_dai = {
-	.name = "WM8510 HiFi",
+static struct snd_soc_dai_driver wm8510_dai = {
+	.name = "wm8510-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 2,
@@ -531,21 +531,15 @@
 	.ops = &wm8510_dai_ops,
 	.symmetric_rates = 1,
 };
-EXPORT_SYMBOL_GPL(wm8510_dai);
 
-static int wm8510_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8510_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8510_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int wm8510_resume(struct platform_device *pdev)
+static int wm8510_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	int i;
 	u8 data[2];
 	u16 *cache = codec->reg_cache;
@@ -561,164 +555,72 @@
 	return 0;
 }
 
-/*
- * initialise the WM8510 driver
- * register the mixer and dsp interfaces with the kernel
- */
-static int wm8510_init(struct snd_soc_device *socdev,
-		       enum snd_soc_control_type control)
+static int wm8510_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = socdev->card->codec;
-	int ret = 0;
+	struct wm8510_priv *wm8510 = snd_soc_codec_get_drvdata(codec);
+	int ret;
 
-	codec->name = "WM8510";
-	codec->owner = THIS_MODULE;
-	codec->set_bias_level = wm8510_set_bias_level;
-	codec->dai = &wm8510_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = ARRAY_SIZE(wm8510_reg);
-	codec->reg_cache = kmemdup(wm8510_reg, sizeof(wm8510_reg), GFP_KERNEL);
-
-	if (codec->reg_cache == NULL)
-		return -ENOMEM;
-
-	ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9,  wm8510->control_type);
 	if (ret < 0) {
-		printk(KERN_ERR "wm8510: failed to set cache I/O: %d\n",
-		       ret);
-		goto err;
+		printk(KERN_ERR "wm8510: failed to set cache I/O: %d\n", ret);
+		return ret;
 	}
 
 	wm8510_reset(codec);
 
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "wm8510: failed to create pcms\n");
-		goto err;
-	}
-
 	/* power on device */
-	codec->bias_level = SND_SOC_BIAS_OFF;
 	wm8510_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 	snd_soc_add_controls(codec, wm8510_snd_controls,
 				ARRAY_SIZE(wm8510_snd_controls));
 	wm8510_add_widgets(codec);
 
 	return ret;
-
-err:
-	kfree(codec->reg_cache);
-	return ret;
 }
 
-static struct snd_soc_device *wm8510_socdev;
-
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-
-/*
- * WM8510 2 wire address is 0x1a
- */
-
-static int wm8510_i2c_probe(struct i2c_client *i2c,
-			    const struct i2c_device_id *id)
+/* power down chip */
+static int wm8510_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = wm8510_socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
-	int ret;
+	struct wm8510_priv *wm8510 = snd_soc_codec_get_drvdata(codec);
 
-	i2c_set_clientdata(i2c, codec);
-	codec->control_data = i2c;
-
-	ret = wm8510_init(socdev, SND_SOC_I2C);
-	if (ret < 0)
-		pr_err("failed to initialise WM8510\n");
-
-	return ret;
-}
-
-static int wm8510_i2c_remove(struct i2c_client *client)
-{
-	struct snd_soc_codec *codec = i2c_get_clientdata(client);
-	kfree(codec->reg_cache);
+	wm8510_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	kfree(wm8510);
 	return 0;
 }
 
-static const struct i2c_device_id wm8510_i2c_id[] = {
-	{ "wm8510", 0 },
-	{ }
+static struct snd_soc_codec_driver soc_codec_dev_wm8510 = {
+	.probe =	wm8510_probe,
+	.remove =	wm8510_remove,
+	.suspend =	wm8510_suspend,
+	.resume =	wm8510_resume,
+	.set_bias_level = wm8510_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8510_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default =wm8510_reg,
 };
-MODULE_DEVICE_TABLE(i2c, wm8510_i2c_id);
-
-static struct i2c_driver wm8510_i2c_driver = {
-	.driver = {
-		.name = "WM8510 I2C Codec",
-		.owner = THIS_MODULE,
-	},
-	.probe =    wm8510_i2c_probe,
-	.remove =   wm8510_i2c_remove,
-	.id_table = wm8510_i2c_id,
-};
-
-static int wm8510_add_i2c_device(struct platform_device *pdev,
-				 const struct wm8510_setup_data *setup)
-{
-	struct i2c_board_info info;
-	struct i2c_adapter *adapter;
-	struct i2c_client *client;
-	int ret;
-
-	ret = i2c_add_driver(&wm8510_i2c_driver);
-	if (ret != 0) {
-		dev_err(&pdev->dev, "can't add i2c driver\n");
-		return ret;
-	}
-
-	memset(&info, 0, sizeof(struct i2c_board_info));
-	info.addr = setup->i2c_address;
-	strlcpy(info.type, "wm8510", I2C_NAME_SIZE);
-
-	adapter = i2c_get_adapter(setup->i2c_bus);
-	if (!adapter) {
-		dev_err(&pdev->dev, "can't get i2c adapter %d\n",
-			setup->i2c_bus);
-		goto err_driver;
-	}
-
-	client = i2c_new_device(adapter, &info);
-	i2c_put_adapter(adapter);
-	if (!client) {
-		dev_err(&pdev->dev, "can't add i2c device at 0x%x\n",
-			(unsigned int)info.addr);
-		goto err_driver;
-	}
-
-	return 0;
-
-err_driver:
-	i2c_del_driver(&wm8510_i2c_driver);
-	return -ENODEV;
-}
-#endif
 
 #if defined(CONFIG_SPI_MASTER)
 static int __devinit wm8510_spi_probe(struct spi_device *spi)
 {
-	struct snd_soc_device *socdev = wm8510_socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct wm8510_priv *wm8510;
 	int ret;
 
-	codec->control_data = spi;
+	wm8510 = kzalloc(sizeof(struct wm8510_priv), GFP_KERNEL);
+	if (wm8510 == NULL)
+		return -ENOMEM;
 
-	ret = wm8510_init(socdev, SND_SOC_SPI);
+	wm8510->control_type = SND_SOC_SPI;
+	spi_set_drvdata(spi, wm8510);
+
+	ret = snd_soc_register_codec(&spi->dev,
+			&soc_codec_dev_wm8510, &wm8510_dai, 1);
 	if (ret < 0)
-		dev_err(&spi->dev, "failed to initialise WM8510\n");
-
+		kfree(wm8510);
 	return ret;
 }
 
 static int __devexit wm8510_spi_remove(struct spi_device *spi)
 {
+	snd_soc_unregister_codec(&spi->dev);
 	return 0;
 }
 
@@ -733,84 +635,79 @@
 };
 #endif /* CONFIG_SPI_MASTER */
 
-static int wm8510_probe(struct platform_device *pdev)
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+static __devinit int wm8510_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct wm8510_setup_data *setup;
-	struct snd_soc_codec *codec;
-	int ret = 0;
+	struct wm8510_priv *wm8510;
+	int ret;
 
-	pr_info("WM8510 Audio Codec %s", WM8510_VERSION);
-
-	setup = socdev->codec_data;
-	codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (codec == NULL)
+	wm8510 = kzalloc(sizeof(struct wm8510_priv), GFP_KERNEL);
+	if (wm8510 == NULL)
 		return -ENOMEM;
 
-	socdev->card->codec = codec;
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
+	i2c_set_clientdata(i2c, wm8510);
+	wm8510->control_type = SND_SOC_I2C;
 
-	wm8510_socdev = socdev;
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-	if (setup->i2c_address) {
-		ret = wm8510_add_i2c_device(pdev, setup);
-	}
-#endif
-#if defined(CONFIG_SPI_MASTER)
-	if (setup->spi) {
-		ret = spi_register_driver(&wm8510_spi_driver);
-		if (ret != 0)
-			printk(KERN_ERR "can't add spi driver");
-	}
-#endif
-
-	if (ret != 0)
-		kfree(codec);
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8510, &wm8510_dai, 1);
+	if (ret < 0)
+		kfree(wm8510);
 	return ret;
 }
 
-/* power down chip */
-static int wm8510_remove(struct platform_device *pdev)
+static __devexit int wm8510_i2c_remove(struct i2c_client *client)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (codec->control_data)
-		wm8510_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-	i2c_unregister_device(codec->control_data);
-	i2c_del_driver(&wm8510_i2c_driver);
-#endif
-#if defined(CONFIG_SPI_MASTER)
-	spi_unregister_driver(&wm8510_spi_driver);
-#endif
-	kfree(codec);
-
+	snd_soc_unregister_codec(&client->dev);
 	return 0;
 }
 
-struct snd_soc_codec_device soc_codec_dev_wm8510 = {
-	.probe = 	wm8510_probe,
-	.remove = 	wm8510_remove,
-	.suspend = 	wm8510_suspend,
-	.resume =	wm8510_resume,
+static const struct i2c_device_id wm8510_i2c_id[] = {
+	{ "wm8510", 0 },
+	{ }
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8510);
+MODULE_DEVICE_TABLE(i2c, wm8510_i2c_id);
+
+static struct i2c_driver wm8510_i2c_driver = {
+	.driver = {
+		.name = "wm8510-codec",
+		.owner = THIS_MODULE,
+	},
+	.probe =    wm8510_i2c_probe,
+	.remove =   __devexit_p(wm8510_i2c_remove),
+	.id_table = wm8510_i2c_id,
+};
+#endif
 
 static int __init wm8510_modinit(void)
 {
-	return snd_soc_register_dai(&wm8510_dai);
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	ret = i2c_add_driver(&wm8510_i2c_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register WM8510 I2C driver: %d\n",
+		       ret);
+	}
+#endif
+#if defined(CONFIG_SPI_MASTER)
+	ret = spi_register_driver(&wm8510_spi_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register WM8510 SPI driver: %d\n",
+		       ret);
+	}
+#endif
+	return ret;
 }
 module_init(wm8510_modinit);
 
 static void __exit wm8510_exit(void)
 {
-	snd_soc_unregister_dai(&wm8510_dai);
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	i2c_del_driver(&wm8510_i2c_driver);
+#endif
+#if defined(CONFIG_SPI_MASTER)
+	spi_unregister_driver(&wm8510_spi_driver);
+#endif
 }
 module_exit(wm8510_exit);
 
diff --git a/sound/soc/codecs/wm8510.h b/sound/soc/codecs/wm8510.h
index bdefcf5..b3e26ed 100644
--- a/sound/soc/codecs/wm8510.h
+++ b/sound/soc/codecs/wm8510.h
@@ -99,7 +99,4 @@
 	unsigned short i2c_address;
 };
 
-extern struct snd_soc_dai wm8510_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8510;
-
 #endif
diff --git a/sound/soc/codecs/wm8523.c b/sound/soc/codecs/wm8523.c
index 0ad039b..712ef7c 100644
--- a/sound/soc/codecs/wm8523.c
+++ b/sound/soc/codecs/wm8523.c
@@ -30,9 +30,6 @@
 
 #include "wm8523.h"
 
-static struct snd_soc_codec *wm8523_codec;
-struct snd_soc_codec_device soc_codec_dev_wm8523;
-
 #define WM8523_NUM_SUPPLIES 2
 static const char *wm8523_supply_names[WM8523_NUM_SUPPLIES] = {
 	"AVDD",
@@ -43,7 +40,7 @@
 
 /* codec private data */
 struct wm8523_priv {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
 	u16 reg_cache[WM8523_REGISTER_COUNT];
 	struct regulator_bulk_data supplies[WM8523_NUM_SUPPLIES];
 	unsigned int sysclk;
@@ -162,8 +159,7 @@
 			    struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct wm8523_priv *wm8523 = snd_soc_codec_get_drvdata(codec);
 	int i;
 	u16 aifctrl1 = snd_soc_read(codec, WM8523_AIF_CTRL1);
@@ -387,8 +383,8 @@
 	.set_fmt	= wm8523_set_dai_fmt,
 };
 
-struct snd_soc_dai wm8523_dai = {
-	.name = "WM8523",
+static struct snd_soc_dai_driver wm8523_dai = {
+	.name = "wm8523-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 2,  /* Mono modes not yet supported */
@@ -398,25 +394,17 @@
 	},
 	.ops = &wm8523_dai_ops,
 };
-EXPORT_SYMBOL_GPL(wm8523_dai);
 
 #ifdef CONFIG_PM
-static int wm8523_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8523_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8523_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int wm8523_resume(struct platform_device *pdev)
+static int wm8523_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8523_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
 	return 0;
 }
 #else
@@ -424,93 +412,20 @@
 #define wm8523_resume NULL
 #endif
 
-static int wm8523_probe(struct platform_device *pdev)
+static int wm8523_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
+	struct wm8523_priv *wm8523 = snd_soc_codec_get_drvdata(codec);
+	int ret, i;
 
-	if (wm8523_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8523_codec;
-	codec = wm8523_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
-	snd_soc_add_controls(codec, wm8523_snd_controls,
-			     ARRAY_SIZE(wm8523_snd_controls));
-	wm8523_add_widgets(codec);
-
-	return ret;
-
-pcm_err:
-	return ret;
-}
-
-static int wm8523_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8523 = {
-	.probe = 	wm8523_probe,
-	.remove = 	wm8523_remove,
-	.suspend = 	wm8523_suspend,
-	.resume =	wm8523_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8523);
-
-static int wm8523_register(struct wm8523_priv *wm8523,
-			   enum snd_soc_control_type control)
-{
-	int ret;
-	struct snd_soc_codec *codec = &wm8523->codec;
-	int i;
-
-	if (wm8523_codec) {
-		dev_err(codec->dev, "Another WM8523 is registered\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm8523);
-	codec->name = "WM8523";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8523_set_bias_level;
-	codec->dai = &wm8523_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = WM8523_REGISTER_COUNT;
-	codec->reg_cache = &wm8523->reg_cache;
-	codec->volatile_register = wm8523_volatile_register;
-
+	codec->hw_write = (hw_write_t)i2c_master_send;
 	wm8523->rate_constraint.list = &wm8523->rate_constraint_list[0];
 	wm8523->rate_constraint.count =
 		ARRAY_SIZE(wm8523->rate_constraint_list);
 
-	memcpy(codec->reg_cache, wm8523_reg, sizeof(wm8523_reg));
-
-	ret = snd_soc_codec_set_cache_io(codec, 8, 16, control);
+	ret = snd_soc_codec_set_cache_io(codec, 8, 16, wm8523->control_type);
 	if (ret != 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	for (i = 0; i < ARRAY_SIZE(wm8523->supplies); i++)
@@ -520,7 +435,7 @@
 				 wm8523->supplies);
 	if (ret != 0) {
 		dev_err(codec->dev, "Failed to request supplies: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	ret = regulator_bulk_enable(ARRAY_SIZE(wm8523->supplies),
@@ -555,8 +470,6 @@
 		goto err_enable;
 	}
 
-	wm8523_dai.dev = codec->dev;
-
 	/* Change some default settings - latch VU and enable ZC */
 	wm8523->reg_cache[WM8523_DAC_GAINR] |= WM8523_DACR_VU;
 	wm8523->reg_cache[WM8523_DAC_CTRL3] |= WM8523_ZC;
@@ -566,69 +479,67 @@
 	/* Bias level configuration will have done an extra enable */
 	regulator_bulk_disable(ARRAY_SIZE(wm8523->supplies), wm8523->supplies);
 
-	wm8523_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err_enable;
-	}
-
-	ret = snd_soc_register_dai(&wm8523_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
+	snd_soc_add_controls(codec, wm8523_snd_controls,
+			     ARRAY_SIZE(wm8523_snd_controls));
+	wm8523_add_widgets(codec);
 
 	return 0;
 
-err_codec:
-	snd_soc_unregister_codec(codec);
 err_enable:
 	regulator_bulk_disable(ARRAY_SIZE(wm8523->supplies), wm8523->supplies);
 err_get:
 	regulator_bulk_free(ARRAY_SIZE(wm8523->supplies), wm8523->supplies);
-err:
-	kfree(wm8523);
+
 	return ret;
 }
 
-static void wm8523_unregister(struct wm8523_priv *wm8523)
+static int wm8523_remove(struct snd_soc_codec *codec)
 {
-	wm8523_set_bias_level(&wm8523->codec, SND_SOC_BIAS_OFF);
+	struct wm8523_priv *wm8523 = snd_soc_codec_get_drvdata(codec);
+
+	wm8523_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	regulator_bulk_free(ARRAY_SIZE(wm8523->supplies), wm8523->supplies);
-	snd_soc_unregister_dai(&wm8523_dai);
-	snd_soc_unregister_codec(&wm8523->codec);
-	kfree(wm8523);
-	wm8523_codec = NULL;
+	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_wm8523 = {
+	.probe =	wm8523_probe,
+	.remove =	wm8523_remove,
+	.suspend =	wm8523_suspend,
+	.resume =	wm8523_resume,
+	.set_bias_level = wm8523_set_bias_level,
+	.reg_cache_size = WM8523_REGISTER_COUNT,
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8523_reg,
+	.volatile_register = wm8523_volatile_register,
+};
+
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 static __devinit int wm8523_i2c_probe(struct i2c_client *i2c,
 				      const struct i2c_device_id *id)
 {
 	struct wm8523_priv *wm8523;
-	struct snd_soc_codec *codec;
+	int ret;
 
 	wm8523 = kzalloc(sizeof(struct wm8523_priv), GFP_KERNEL);
 	if (wm8523 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8523->codec;
-	codec->hw_write = (hw_write_t)i2c_master_send;
-
 	i2c_set_clientdata(i2c, wm8523);
-	codec->control_data = i2c;
+	wm8523->control_type = SND_SOC_I2C;
 
-	codec->dev = &i2c->dev;
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8523, &wm8523_dai, 1);
+	if (ret < 0)
+		kfree(wm8523);
+	return ret;
 
-	return wm8523_register(wm8523, SND_SOC_I2C);
 }
 
 static __devexit int wm8523_i2c_remove(struct i2c_client *client)
 {
-	struct wm8523_priv *wm8523 = i2c_get_clientdata(client);
-	wm8523_unregister(wm8523);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -640,7 +551,7 @@
 
 static struct i2c_driver wm8523_i2c_driver = {
 	.driver = {
-		.name = "WM8523",
+		.name = "wm8523-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8523_i2c_probe,
diff --git a/sound/soc/codecs/wm8523.h b/sound/soc/codecs/wm8523.h
index 1aa9ce3..4d5b1eb 100644
--- a/sound/soc/codecs/wm8523.h
+++ b/sound/soc/codecs/wm8523.h
@@ -154,7 +154,4 @@
 #define WM8523_ZD_COUNT_SHIFT                        0  /* ZD_COUNT - [1:0] */
 #define WM8523_ZD_COUNT_WIDTH                        2  /* ZD_COUNT - [1:0] */
 
-extern struct snd_soc_dai wm8523_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8523;
-
 #endif
diff --git a/sound/soc/codecs/wm8580.c b/sound/soc/codecs/wm8580.c
index 72deeab..ad5987e 100644
--- a/sound/soc/codecs/wm8580.c
+++ b/sound/soc/codecs/wm8580.c
@@ -94,6 +94,8 @@
 
 #define WM8580_MAX_REGISTER                  0x35
 
+#define WM8580_DACOSR 0x40
+
 /* PLLB4 (register 7h) */
 #define WM8580_PLLB4_MCLKOUTSRC_MASK   0x60
 #define WM8580_PLLB4_MCLKOUTSRC_PLLA   0x20
@@ -112,19 +114,7 @@
 
 /* AIF control 1 (registers 9h-bh) */
 #define WM8580_AIF_RATE_MASK       0x7
-#define WM8580_AIF_RATE_128        0x0
-#define WM8580_AIF_RATE_192        0x1
-#define WM8580_AIF_RATE_256        0x2
-#define WM8580_AIF_RATE_384        0x3
-#define WM8580_AIF_RATE_512        0x4
-#define WM8580_AIF_RATE_768        0x5
-#define WM8580_AIF_RATE_1152       0x6
-
 #define WM8580_AIF_BCLKSEL_MASK   0x18
-#define WM8580_AIF_BCLKSEL_64     0x00
-#define WM8580_AIF_BCLKSEL_128    0x08
-#define WM8580_AIF_BCLKSEL_256    0x10
-#define WM8580_AIF_BCLKSEL_SYSCLK 0x18
 
 #define WM8580_AIF_MS             0x20
 
@@ -199,11 +189,12 @@
 
 /* codec private data */
 struct wm8580_priv {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
 	struct regulator_bulk_data supplies[WM8580_NUM_SUPPLIES];
 	u16 reg_cache[WM8580_MAX_REGISTER + 1];
 	struct pll_state a;
 	struct pll_state b;
+	int sysclk[2];
 };
 
 static const DECLARE_TLV_DB_SCALE(dac_tlv, -12750, 50, 1);
@@ -273,8 +264,8 @@
 SOC_SINGLE("DAC2 Switch", WM8580_DAC_CONTROL5, 1, 1, 1),
 SOC_SINGLE("DAC3 Switch", WM8580_DAC_CONTROL5, 2, 1, 1),
 
-SOC_DOUBLE("ADC Mute Switch", WM8580_ADC_CONTROL1, 0, 1, 1, 0),
-SOC_SINGLE("ADC High-Pass Filter Switch", WM8580_ADC_CONTROL1, 4, 1, 0),
+SOC_DOUBLE("Capture Switch", WM8580_ADC_CONTROL1, 0, 1, 1, 1),
+SOC_SINGLE("Capture High-Pass Filter Switch", WM8580_ADC_CONTROL1, 4, 1, 0),
 };
 
 static const struct snd_soc_dapm_widget wm8580_dapm_widgets[] = {
@@ -476,6 +467,10 @@
 	return 0;
 }
 
+static const int wm8580_sysclk_ratios[] = {
+	128, 192, 256, 384, 512, 768, 1152,
+};
+
 /*
  * Set PCM DAI bit size and sample rate.
  */
@@ -484,29 +479,68 @@
 				 struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
-	u16 paifb = snd_soc_read(codec, WM8580_PAIF3 + dai->id);
+	struct snd_soc_codec *codec = rtd->codec;
+	struct wm8580_priv *wm8580 = snd_soc_codec_get_drvdata(codec);
+	u16 paifa = 0;
+	u16 paifb = 0;
+	int i, ratio, osr;
 
-	paifb &= ~WM8580_AIF_LENGTH_MASK;
 	/* bit size */
 	switch (params_format(params)) {
 	case SNDRV_PCM_FORMAT_S16_LE:
+		paifa |= 0x8;
 		break;
 	case SNDRV_PCM_FORMAT_S20_3LE:
+		paifa |= 0x10;
 		paifb |= WM8580_AIF_LENGTH_20;
 		break;
 	case SNDRV_PCM_FORMAT_S24_LE:
+		paifa |= 0x10;
 		paifb |= WM8580_AIF_LENGTH_24;
 		break;
 	case SNDRV_PCM_FORMAT_S32_LE:
+		paifa |= 0x10;
 		paifb |= WM8580_AIF_LENGTH_24;
 		break;
 	default:
 		return -EINVAL;
 	}
 
-	snd_soc_write(codec, WM8580_PAIF3 + dai->id, paifb);
+	/* Look up the SYSCLK ratio; accept only exact matches */
+	ratio = wm8580->sysclk[dai->id] / params_rate(params);
+	for (i = 0; i < ARRAY_SIZE(wm8580_sysclk_ratios); i++)
+		if (ratio == wm8580_sysclk_ratios[i])
+			break;
+	if (i == ARRAY_SIZE(wm8580_sysclk_ratios)) {
+		dev_err(codec->dev, "Invalid clock ratio %d/%d\n",
+			wm8580->sysclk[dai->id], params_rate(params));
+		return -EINVAL;
+	}
+	paifa |= i;
+	dev_dbg(codec->dev, "Running at %dfs with %dHz clock\n",
+		wm8580_sysclk_ratios[i], wm8580->sysclk[dai->driver->id]);
+
+	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
+		switch (ratio) {
+		case 128:
+		case 192:
+			osr = WM8580_DACOSR;
+			dev_dbg(codec->dev, "Selecting 64x OSR\n");
+			break;
+		default:
+			osr = 0;
+			dev_dbg(codec->dev, "Selecting 128x OSR\n");
+			break;
+		}
+
+		snd_soc_update_bits(codec, WM8580_PAIF3, WM8580_DACOSR, osr);
+	}
+
+	snd_soc_update_bits(codec, WM8580_PAIF1 + dai->driver->id,
+			    WM8580_AIF_RATE_MASK | WM8580_AIF_BCLKSEL_MASK,
+			    paifa);
+	snd_soc_update_bits(codec, WM8580_PAIF3 + dai->driver->id,
+			    WM8580_AIF_LENGTH_MASK, paifb);
 	return 0;
 }
 
@@ -514,12 +548,14 @@
 				      unsigned int fmt)
 {
 	struct snd_soc_codec *codec = codec_dai->codec;
+	struct wm8580_priv *wm8580 = snd_soc_codec_get_drvdata(codec);
 	unsigned int aifa;
 	unsigned int aifb;
 	int can_invert_lrclk;
+	int sysclk;
 
-	aifa = snd_soc_read(codec, WM8580_PAIF1 + codec_dai->id);
-	aifb = snd_soc_read(codec, WM8580_PAIF3 + codec_dai->id);
+	aifa = snd_soc_read(codec, WM8580_PAIF1 + codec_dai->driver->id);
+	aifb = snd_soc_read(codec, WM8580_PAIF3 + codec_dai->driver->id);
 
 	aifb &= ~(WM8580_AIF_FMT_MASK | WM8580_AIF_LRP | WM8580_AIF_BCP);
 
@@ -585,8 +621,10 @@
 		return -EINVAL;
 	}
 
-	snd_soc_write(codec, WM8580_PAIF1 + codec_dai->id, aifa);
-	snd_soc_write(codec, WM8580_PAIF3 + codec_dai->id, aifb);
+	sysclk = wm8580->sysclk[codec_dai->driver->id];
+
+	snd_soc_write(codec, WM8580_PAIF1 + codec_dai->driver->id, aifa);
+	snd_soc_write(codec, WM8580_PAIF3 + codec_dai->driver->id, aifb);
 
 	return 0;
 }
@@ -624,28 +662,6 @@
 		snd_soc_write(codec, WM8580_PLLB4, reg);
 		break;
 
-	case WM8580_DAC_CLKSEL:
-		reg = snd_soc_read(codec, WM8580_CLKSEL);
-		reg &= ~WM8580_CLKSEL_DAC_CLKSEL_MASK;
-
-		switch (div) {
-		case WM8580_CLKSRC_MCLK:
-			break;
-
-		case WM8580_CLKSRC_PLLA:
-			reg |= WM8580_CLKSEL_DAC_CLKSEL_PLLA;
-			break;
-
-		case WM8580_CLKSRC_PLLB:
-			reg |= WM8580_CLKSEL_DAC_CLKSEL_PLLB;
-			break;
-
-		default:
-			return -EINVAL;
-		}
-		snd_soc_write(codec, WM8580_CLKSEL, reg);
-		break;
-
 	case WM8580_CLKOUTSRC:
 		reg = snd_soc_read(codec, WM8580_PLLB4);
 		reg &= ~WM8580_PLLB4_CLKOUTSRC_MASK;
@@ -679,6 +695,55 @@
 	return 0;
 }
 
+static int wm8580_set_sysclk(struct snd_soc_dai *dai, int clk_id,
+			     unsigned int freq, int dir)
+{
+	struct snd_soc_codec *codec = dai->codec;
+	struct wm8580_priv *wm8580 = snd_soc_codec_get_drvdata(codec);
+	int sel, sel_mask, sel_shift;
+
+	switch (dai->driver->id) {
+	case WM8580_DAI_PAIFRX:
+		sel_mask = 0x3;
+		sel_shift = 0;
+		break;
+
+	case WM8580_DAI_PAIFTX:
+		sel_mask = 0xc;
+		sel_shift = 2;
+		break;
+
+	default:
+		BUG_ON("Unknown DAI driver ID\n");
+		return -EINVAL;
+	}
+
+	switch (clk_id) {
+	case WM8580_CLKSRC_ADCMCLK:
+		if (dai->id != WM8580_DAI_PAIFTX)
+			return -EINVAL;
+		sel = 0 << sel_shift;
+		break;
+	case WM8580_CLKSRC_PLLA:
+		sel = 1 << sel_shift;
+		break;
+	case WM8580_CLKSRC_PLLB:
+		sel = 2 << sel_shift;
+		break;
+	case WM8580_CLKSRC_MCLK:
+		sel = 3 << sel_shift;
+		break;
+	default:
+		dev_err(codec->dev, "Unknown clock %d\n", clk_id);
+		return -EINVAL;
+	}
+
+	/* We really should validate PLL settings but not yet */
+	wm8580->sysclk[dai->id] = freq;
+
+	return snd_soc_update_bits(codec, WM8580_CLKSEL, sel_mask, sel);
+}
+
 static int wm8580_digital_mute(struct snd_soc_dai *codec_dai, int mute)
 {
 	struct snd_soc_codec *codec = codec_dai->codec;
@@ -732,6 +797,7 @@
 			SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
 
 static struct snd_soc_dai_ops wm8580_dai_ops_playback = {
+	.set_sysclk	= wm8580_set_sysclk,
 	.hw_params	= wm8580_paif_hw_params,
 	.set_fmt	= wm8580_set_paif_dai_fmt,
 	.set_clkdiv	= wm8580_set_dai_clkdiv,
@@ -740,16 +806,17 @@
 };
 
 static struct snd_soc_dai_ops wm8580_dai_ops_capture = {
+	.set_sysclk	= wm8580_set_sysclk,
 	.hw_params	= wm8580_paif_hw_params,
 	.set_fmt	= wm8580_set_paif_dai_fmt,
 	.set_clkdiv	= wm8580_set_dai_clkdiv,
 	.set_pll	= wm8580_set_dai_pll,
 };
 
-struct snd_soc_dai wm8580_dai[] = {
+static struct snd_soc_dai_driver wm8580_dai[] = {
 	{
-		.name = "WM8580 PAIFRX",
-		.id = 0,
+		.name = "wm8580-hifi-playback",
+		.id	= WM8580_DAI_PAIFRX,
 		.playback = {
 			.stream_name = "Playback",
 			.channels_min = 1,
@@ -760,8 +827,8 @@
 		.ops = &wm8580_dai_ops_playback,
 	},
 	{
-		.name = "WM8580 PAIFTX",
-		.id = 1,
+		.name = "wm8580-hifi-capture",
+		.id	=	WM8580_DAI_PAIFTX,
 		.capture = {
 			.stream_name = "Capture",
 			.channels_min = 2,
@@ -772,90 +839,16 @@
 		.ops = &wm8580_dai_ops_capture,
 	},
 };
-EXPORT_SYMBOL_GPL(wm8580_dai);
 
-static struct snd_soc_codec *wm8580_codec;
-
-static int wm8580_probe(struct platform_device *pdev)
+static int wm8580_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
+	struct wm8580_priv *wm8580 = snd_soc_codec_get_drvdata(codec);
+	int ret = 0,i;
 
-	if (wm8580_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8580_codec;
-	codec = wm8580_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
-	snd_soc_add_controls(codec, wm8580_snd_controls,
-			     ARRAY_SIZE(wm8580_snd_controls));
-	wm8580_add_widgets(codec);
-
-	return ret;
-
-pcm_err:
-	return ret;
-}
-
-/* power down chip */
-static int wm8580_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8580 = {
-	.probe = 	wm8580_probe,
-	.remove = 	wm8580_remove,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8580);
-
-static int wm8580_register(struct wm8580_priv *wm8580,
-			   enum snd_soc_control_type control)
-{
-	int ret, i;
-	struct snd_soc_codec *codec = &wm8580->codec;
-
-	if (wm8580_codec) {
-		dev_err(codec->dev, "Another WM8580 is registered\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm8580);
-	codec->name = "WM8580";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8580_set_bias_level;
-	codec->dai = wm8580_dai;
-	codec->num_dai = ARRAY_SIZE(wm8580_dai);
-	codec->reg_cache_size = ARRAY_SIZE(wm8580->reg_cache);
-	codec->reg_cache = &wm8580->reg_cache;
-
-	memcpy(codec->reg_cache, wm8580_reg, sizeof(wm8580_reg));
-
-	ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9, wm8580->control_type);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	for (i = 0; i < ARRAY_SIZE(wm8580->supplies); i++)
@@ -865,7 +858,7 @@
 				 wm8580->supplies);
 	if (ret != 0) {
 		dev_err(codec->dev, "Failed to request supplies: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	ret = regulator_bulk_enable(ARRAY_SIZE(wm8580->supplies),
@@ -882,74 +875,68 @@
 		goto err_regulator_enable;
 	}
 
-	for (i = 0; i < ARRAY_SIZE(wm8580_dai); i++)
-		wm8580_dai[i].dev = codec->dev;
-
 	wm8580_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
-	wm8580_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err_regulator_enable;
-	}
-
-	ret = snd_soc_register_dais(wm8580_dai, ARRAY_SIZE(wm8580_dai));
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
+	snd_soc_add_controls(codec, wm8580_snd_controls,
+			     ARRAY_SIZE(wm8580_snd_controls));
+	wm8580_add_widgets(codec);
 
 	return 0;
 
-err_codec:
-	snd_soc_unregister_codec(codec);
 err_regulator_enable:
 	regulator_bulk_disable(ARRAY_SIZE(wm8580->supplies), wm8580->supplies);
 err_regulator_get:
 	regulator_bulk_free(ARRAY_SIZE(wm8580->supplies), wm8580->supplies);
-err:
-	kfree(wm8580);
 	return ret;
 }
 
-static void wm8580_unregister(struct wm8580_priv *wm8580)
+/* power down chip */
+static int wm8580_remove(struct snd_soc_codec *codec)
 {
-	wm8580_set_bias_level(&wm8580->codec, SND_SOC_BIAS_OFF);
-	snd_soc_unregister_dais(wm8580_dai, ARRAY_SIZE(wm8580_dai));
-	snd_soc_unregister_codec(&wm8580->codec);
+	struct wm8580_priv *wm8580 = snd_soc_codec_get_drvdata(codec);
+
+	wm8580_set_bias_level(codec, SND_SOC_BIAS_OFF);
+
 	regulator_bulk_disable(ARRAY_SIZE(wm8580->supplies), wm8580->supplies);
 	regulator_bulk_free(ARRAY_SIZE(wm8580->supplies), wm8580->supplies);
-	kfree(wm8580);
-	wm8580_codec = NULL;
+
+	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_wm8580 = {
+	.probe =	wm8580_probe,
+	.remove =	wm8580_remove,
+	.set_bias_level = wm8580_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8580_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = &wm8580_reg,
+};
+
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 static int wm8580_i2c_probe(struct i2c_client *i2c,
 			    const struct i2c_device_id *id)
 {
 	struct wm8580_priv *wm8580;
-	struct snd_soc_codec *codec;
+	int ret;
 
 	wm8580 = kzalloc(sizeof(struct wm8580_priv), GFP_KERNEL);
 	if (wm8580 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8580->codec;
-
 	i2c_set_clientdata(i2c, wm8580);
-	codec->control_data = i2c;
+	wm8580->control_type = SND_SOC_I2C;
 
-	codec->dev = &i2c->dev;
-
-	return wm8580_register(wm8580, SND_SOC_I2C);
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8580, wm8580_dai, ARRAY_SIZE(wm8580_dai));
+	if (ret < 0)
+		kfree(wm8580);
+	return ret;
 }
 
 static int wm8580_i2c_remove(struct i2c_client *client)
 {
-	struct wm8580_priv *wm8580 = i2c_get_clientdata(client);
-	wm8580_unregister(wm8580);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -961,7 +948,7 @@
 
 static struct i2c_driver wm8580_i2c_driver = {
 	.driver = {
-		.name = "wm8580",
+		.name = "wm8580-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8580_i2c_probe,
@@ -972,7 +959,7 @@
 
 static int __init wm8580_modinit(void)
 {
-	int ret;
+	int ret = 0;
 
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	ret = i2c_add_driver(&wm8580_i2c_driver);
@@ -981,7 +968,7 @@
 	}
 #endif
 
-	return 0;
+	return ret;
 }
 module_init(wm8580_modinit);
 
diff --git a/sound/soc/codecs/wm8580.h b/sound/soc/codecs/wm8580.h
index 0dfb5dd..1d34656 100644
--- a/sound/soc/codecs/wm8580.h
+++ b/sound/soc/codecs/wm8580.h
@@ -19,20 +19,17 @@
 #define WM8580_PLLB  2
 
 #define WM8580_MCLK       1
-#define WM8580_DAC_CLKSEL 2
-#define WM8580_CLKOUTSRC  3
+#define WM8580_CLKOUTSRC  2
 
-#define WM8580_CLKSRC_MCLK 1
-#define WM8580_CLKSRC_PLLA 2
-#define WM8580_CLKSRC_PLLB 3
-#define WM8580_CLKSRC_OSC  4
-#define WM8580_CLKSRC_NONE 5
+#define WM8580_CLKSRC_MCLK    1
+#define WM8580_CLKSRC_PLLA    2
+#define WM8580_CLKSRC_PLLB    3
+#define WM8580_CLKSRC_OSC     4
+#define WM8580_CLKSRC_NONE    5
+#define WM8580_CLKSRC_ADCMCLK 6
 
 #define WM8580_DAI_PAIFRX 0
 #define WM8580_DAI_PAIFTX 1
 
-extern struct snd_soc_dai wm8580_dai[];
-extern struct snd_soc_codec_device soc_codec_dev_wm8580;
-
 #endif
 
diff --git a/sound/soc/codecs/wm8711.c b/sound/soc/codecs/wm8711.c
index e2dba07f..52a923a 100644
--- a/sound/soc/codecs/wm8711.c
+++ b/sound/soc/codecs/wm8711.c
@@ -31,11 +31,9 @@
 
 #include "wm8711.h"
 
-static struct snd_soc_codec *wm8711_codec;
-
 /* codec private data */
 struct wm8711_priv {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type bus_type;
 	u16 reg_cache[WM8711_CACHEREGNUM];
 	unsigned int sysclk;
 };
@@ -163,7 +161,7 @@
 	struct snd_soc_dai *dai)
 {
 	struct snd_soc_codec *codec = dai->codec;
-	struct wm8711_priv *wm8711 = snd_soc_codec_get_drvdata(codec);
+	struct wm8711_priv *wm8711 =  snd_soc_codec_get_drvdata(codec);
 	u16 iface = snd_soc_read(codec, WM8711_IFACE) & 0xfffc;
 	int i = get_coeff(wm8711->sysclk, params_rate(params));
 	u16 srate = (coeff_div[i].sr << 2) |
@@ -227,7 +225,7 @@
 		int clk_id, unsigned int freq, int dir)
 {
 	struct snd_soc_codec *codec = codec_dai->codec;
-	struct wm8711_priv *wm8711 = snd_soc_codec_get_drvdata(codec);
+	struct wm8711_priv *wm8711 =  snd_soc_codec_get_drvdata(codec);
 
 	switch (freq) {
 	case 11289600:
@@ -338,8 +336,8 @@
 	.set_fmt = wm8711_set_dai_fmt,
 };
 
-struct snd_soc_dai wm8711_dai = {
-	.name = "WM8711",
+static struct snd_soc_dai_driver wm8711_dai = {
+	.name = "wm8711-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -349,22 +347,16 @@
 	},
 	.ops = &wm8711_ops,
 };
-EXPORT_SYMBOL_GPL(wm8711_dai);
 
-static int wm8711_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8711_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	snd_soc_write(codec, WM8711_ACTIVE, 0x0);
 	wm8711_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int wm8711_resume(struct platform_device *pdev)
+static int wm8711_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	int i;
 	u8 data[2];
 	u16 *cache = codec->reg_cache;
@@ -380,99 +372,23 @@
 	return 0;
 }
 
-static int wm8711_probe(struct platform_device *pdev)
+static int wm8711_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
+	struct wm8711_priv *wm8711 = snd_soc_codec_get_drvdata(codec);
+	int ret, reg;
 
-	if (wm8711_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8711_codec;
-	codec = wm8711_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
-	snd_soc_add_controls(codec, wm8711_snd_controls,
-			     ARRAY_SIZE(wm8711_snd_controls));
-	wm8711_add_widgets(codec);
-
-	return ret;
-
-pcm_err:
-	return ret;
-}
-
-/* power down chip */
-static int wm8711_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8711 = {
-	.probe = 	wm8711_probe,
-	.remove = 	wm8711_remove,
-	.suspend = 	wm8711_suspend,
-	.resume =	wm8711_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8711);
-
-static int wm8711_register(struct wm8711_priv *wm8711,
-			   enum snd_soc_control_type control)
-{
-	int ret;
-	struct snd_soc_codec *codec = &wm8711->codec;
-	u16 reg;
-
-	if (wm8711_codec) {
-		dev_err(codec->dev, "Another WM8711 is registered\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm8711);
-	codec->name = "WM8711";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8711_set_bias_level;
-	codec->dai = &wm8711_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = WM8711_CACHEREGNUM;
-	codec->reg_cache = &wm8711->reg_cache;
-
-	memcpy(codec->reg_cache, wm8711_reg, sizeof(wm8711_reg));
-
-	ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9, wm8711->bus_type);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	ret = wm8711_reset(codec);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to issue reset\n");
-		goto err;
+		return ret;
 	}
 
-	wm8711_dai.dev = codec->dev;
-
 	wm8711_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	/* Latch the update bits */
@@ -481,69 +397,62 @@
 	reg = snd_soc_read(codec, WM8711_ROUT1V);
 	snd_soc_write(codec, WM8711_ROUT1V, reg | 0x0100);
 
-	wm8711_codec = codec;
+	snd_soc_add_controls(codec, wm8711_snd_controls,
+			     ARRAY_SIZE(wm8711_snd_controls));
+	wm8711_add_widgets(codec);
 
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err;
-	}
-
-	ret = snd_soc_register_dai(&wm8711_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
-
-	return 0;
-
-err_codec:
-	snd_soc_unregister_codec(codec);
-err:
-	kfree(wm8711);
 	return ret;
+
 }
 
-static void wm8711_unregister(struct wm8711_priv *wm8711)
+/* power down chip */
+static int wm8711_remove(struct snd_soc_codec *codec)
 {
-	wm8711_set_bias_level(&wm8711->codec, SND_SOC_BIAS_OFF);
-	snd_soc_unregister_dai(&wm8711_dai);
-	snd_soc_unregister_codec(&wm8711->codec);
-	kfree(wm8711);
-	wm8711_codec = NULL;
+	wm8711_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_wm8711 = {
+	.probe =	wm8711_probe,
+	.remove =	wm8711_remove,
+	.suspend =	wm8711_suspend,
+	.resume =	wm8711_resume,
+	.set_bias_level = wm8711_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8711_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8711_reg,
+};
+
 #if defined(CONFIG_SPI_MASTER)
 static int __devinit wm8711_spi_probe(struct spi_device *spi)
 {
-	struct snd_soc_codec *codec;
 	struct wm8711_priv *wm8711;
+	int ret;
 
 	wm8711 = kzalloc(sizeof(struct wm8711_priv), GFP_KERNEL);
 	if (wm8711 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8711->codec;
-	codec->control_data = spi;
-	codec->dev = &spi->dev;
+	spi_set_drvdata(spi, wm8711);
+	wm8711->bus_type = SND_SOC_SPI;
 
-	dev_set_drvdata(&spi->dev, wm8711);
-
-	return wm8711_register(wm8711, SND_SOC_SPI);
+	ret = snd_soc_register_codec(&spi->dev,
+			&soc_codec_dev_wm8711, &wm8711_dai, 1);
+	if (ret < 0)
+		kfree(wm8711);
+	return ret;
 }
 
 static int __devexit wm8711_spi_remove(struct spi_device *spi)
 {
-	struct wm8711_priv *wm8711 = dev_get_drvdata(&spi->dev);
-
-	wm8711_unregister(wm8711);
-
+	snd_soc_unregister_codec(&spi->dev);
+	kfree(spi_get_drvdata(spi));
 	return 0;
 }
 
 static struct spi_driver wm8711_spi_driver = {
 	.driver = {
-		.name	= "wm8711",
+		.name	= "wm8711-codec",
 		.bus	= &spi_bus_type,
 		.owner	= THIS_MODULE,
 	},
@@ -553,31 +462,30 @@
 #endif /* CONFIG_SPI_MASTER */
 
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-static __devinit int wm8711_i2c_probe(struct i2c_client *i2c,
+static __devinit int wm8711_i2c_probe(struct i2c_client *client,
 				      const struct i2c_device_id *id)
 {
 	struct wm8711_priv *wm8711;
-	struct snd_soc_codec *codec;
+	int ret;
 
 	wm8711 = kzalloc(sizeof(struct wm8711_priv), GFP_KERNEL);
 	if (wm8711 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8711->codec;
-	codec->hw_write = (hw_write_t)i2c_master_send;
+	i2c_set_clientdata(client, wm8711);
+	wm8711->bus_type = SND_SOC_I2C;
 
-	i2c_set_clientdata(i2c, wm8711);
-	codec->control_data = i2c;
-
-	codec->dev = &i2c->dev;
-
-	return wm8711_register(wm8711, SND_SOC_I2C);
+	ret =  snd_soc_register_codec(&client->dev,
+			&soc_codec_dev_wm8711, &wm8711_dai, 1);
+	if (ret < 0)
+		kfree(wm8711);
+	return ret;
 }
 
 static __devexit int wm8711_i2c_remove(struct i2c_client *client)
 {
-	struct wm8711_priv *wm8711 = i2c_get_clientdata(client);
-	wm8711_unregister(wm8711);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -589,7 +497,7 @@
 
 static struct i2c_driver wm8711_i2c_driver = {
 	.driver = {
-		.name = "WM8711 I2C Codec",
+		.name = "wm8711-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8711_i2c_probe,
diff --git a/sound/soc/codecs/wm8711.h b/sound/soc/codecs/wm8711.h
index 381e84a..a61db98 100644
--- a/sound/soc/codecs/wm8711.h
+++ b/sound/soc/codecs/wm8711.h
@@ -36,7 +36,4 @@
 	unsigned short i2c_address;
 };
 
-extern struct snd_soc_dai wm8711_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8711;
-
 #endif
diff --git a/sound/soc/codecs/wm8727.c b/sound/soc/codecs/wm8727.c
index 9d1df262..7488082 100644
--- a/sound/soc/codecs/wm8727.c
+++ b/sound/soc/codecs/wm8727.c
@@ -23,7 +23,6 @@
 #include <sound/initval.h>
 #include <sound/soc.h>
 
-#include "wm8727.h"
 /*
  * Note this is a simple chip with no configuration interface, sample rate is
  * determined automatically by examining the Master clock and Bit clock ratios
@@ -33,8 +32,8 @@
 			SNDRV_PCM_RATE_192000)
 
 
-struct snd_soc_dai wm8727_dai = {
-	.name = "WM8727",
+static struct snd_soc_dai_driver wm8727_dai = {
+	.name = "wm8727-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 2,
@@ -43,103 +42,18 @@
 		.formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE,
 		},
 };
-EXPORT_SYMBOL_GPL(wm8727_dai);
 
-static struct snd_soc_codec *wm8727_codec;
+static struct snd_soc_codec_driver soc_codec_dev_wm8727;
 
-static int wm8727_soc_probe(struct platform_device *pdev)
+static __devinit int wm8727_probe(struct platform_device *pdev)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	int ret = 0;
-
-	BUG_ON(!wm8727_codec);
-
-	socdev->card->codec = wm8727_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "wm8727: failed to create pcms\n");
-		goto pcm_err;
-	}
-
-	return ret;
-
-pcm_err:
-	kfree(socdev->card->codec);
-	socdev->card->codec = NULL;
-	return ret;
+	return snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_wm8727, &wm8727_dai, 1);
 }
 
-static int wm8727_soc_remove(struct platform_device *pdev)
+static int __devexit wm8727_remove(struct platform_device *pdev)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8727 = {
-	.probe = 	wm8727_soc_probe,
-	.remove = 	wm8727_soc_remove,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8727);
-
-
-static __devinit int wm8727_platform_probe(struct platform_device *pdev)
-{
-	struct snd_soc_codec *codec;
-	int ret;
-
-	if (wm8727_codec) {
-		dev_err(&pdev->dev, "Another WM8727 is registered\n");
-		return -EBUSY;
-	}
-
-	codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (codec == NULL)
-		return -ENOMEM;
-	wm8727_codec = codec;
-
-	platform_set_drvdata(pdev, codec);
-
-	mutex_init(&codec->mutex);
-	codec->dev = &pdev->dev;
-	codec->name = "WM8727";
-	codec->owner = THIS_MODULE;
-	codec->dai = &wm8727_dai;
-	codec->num_dai = 1;
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	wm8727_dai.dev = &pdev->dev;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(&pdev->dev, "Failed to register CODEC: %d\n", ret);
-		goto err;
-	}
-
-	ret = snd_soc_register_dai(&wm8727_dai);
-	if (ret != 0) {
-		dev_err(&pdev->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
-
-	return 0;
-
-err_codec:
-	snd_soc_unregister_codec(codec);
-err:
-	kfree(codec);
-	return ret;
-}
-
-static int __devexit wm8727_platform_remove(struct platform_device *pdev)
-{
-	snd_soc_unregister_dai(&wm8727_dai);
-	snd_soc_unregister_codec(platform_get_drvdata(pdev));
+	snd_soc_unregister_codec(&pdev->dev);
 	return 0;
 }
 
@@ -149,8 +63,8 @@
 			.owner = THIS_MODULE,
 	},
 
-	.probe = wm8727_platform_probe,
-	.remove = __devexit_p(wm8727_platform_remove),
+	.probe = wm8727_probe,
+	.remove = __devexit_p(wm8727_remove),
 };
 
 static int __init wm8727_init(void)
diff --git a/sound/soc/codecs/wm8727.h b/sound/soc/codecs/wm8727.h
deleted file mode 100644
index ee19aa7..0000000
--- a/sound/soc/codecs/wm8727.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * wm8727.h
- *
- *  Created on: 15-Oct-2009
- *      Author: neil.jones@imgtec.com
- *
- * Copyright (C) 2009 Imagination Technologies Ltd.
- *
- *  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;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-
-#ifndef WM8727_H_
-#define WM8727_H_
-
-extern struct snd_soc_dai wm8727_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8727;
-
-#endif /* WM8727_H_ */
diff --git a/sound/soc/codecs/wm8728.c b/sound/soc/codecs/wm8728.c
index 34be2d2..32eba85 100644
--- a/sound/soc/codecs/wm8728.c
+++ b/sound/soc/codecs/wm8728.c
@@ -29,8 +29,6 @@
 
 #include "wm8728.h"
 
-struct snd_soc_codec_device soc_codec_dev_wm8728;
-
 /*
  * We can't read the WM8728 register space so we cache them instead.
  * Note that the defaults here aren't the physical defaults, we latch
@@ -44,6 +42,11 @@
 	0x100,
 };
 
+/* codec private data */
+struct wm8728_priv {
+	enum snd_soc_control_type control_type;
+};
+
 static const DECLARE_TLV_DB_SCALE(wm8728_tlv, -12750, 50, 1);
 
 static const struct snd_kcontrol_new wm8728_snd_controls[] = {
@@ -96,8 +99,7 @@
 	struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	u16 dac = snd_soc_read(codec, WM8728_DACCTL);
 
 	dac &= ~0x18;
@@ -210,8 +212,8 @@
 	.set_fmt	= wm8728_set_dai_fmt,
 };
 
-struct snd_soc_dai wm8728_dai = {
-	.name = "WM8728",
+static struct snd_soc_dai_driver wm8728_dai = {
+	.name = "wm8728-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 2,
@@ -221,63 +223,31 @@
 	},
 	.ops = &wm8728_dai_ops,
 };
-EXPORT_SYMBOL_GPL(wm8728_dai);
 
-static int wm8728_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8728_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8728_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
 	return 0;
 }
 
-static int wm8728_resume(struct platform_device *pdev)
+static int wm8728_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8728_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	return 0;
 }
 
-/*
- * initialise the WM8728 driver
- * register the mixer and dsp interfaces with the kernel
- */
-static int wm8728_init(struct snd_soc_device *socdev,
-		       enum snd_soc_control_type control)
+static int wm8728_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = socdev->card->codec;
-	int ret = 0;
+	struct wm8728_priv *wm8728 = snd_soc_codec_get_drvdata(codec);
+	int ret;
 
-	codec->name = "WM8728";
-	codec->owner = THIS_MODULE;
-	codec->set_bias_level = wm8728_set_bias_level;
-	codec->dai = &wm8728_dai;
-	codec->num_dai = 1;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->reg_cache_size = ARRAY_SIZE(wm8728_reg_defaults);
-	codec->reg_cache = kmemdup(wm8728_reg_defaults,
-				   sizeof(wm8728_reg_defaults),
-				   GFP_KERNEL);
-	if (codec->reg_cache == NULL)
-		return -ENOMEM;
-
-	ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9, wm8728->control_type);
 	if (ret < 0) {
 		printk(KERN_ERR "wm8728: failed to configure cache I/O: %d\n",
 		       ret);
-		goto err;
-	}
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "wm8728: failed to create pcms\n");
-		goto err;
+		return ret;
 	}
 
 	/* power on device */
@@ -288,44 +258,88 @@
 	wm8728_add_widgets(codec);
 
 	return ret;
-
-err:
-	kfree(codec->reg_cache);
-	return ret;
 }
 
-static struct snd_soc_device *wm8728_socdev;
-
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-
-/*
- * WM8728 2 wire address is determined by GPIO5
- * state during powerup.
- *    low  = 0x1a
- *    high = 0x1b
- */
-
-static int wm8728_i2c_probe(struct i2c_client *i2c,
-			    const struct i2c_device_id *id)
+static int wm8728_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = wm8728_socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	wm8728_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
+}
+
+static struct snd_soc_codec_driver soc_codec_dev_wm8728 = {
+	.probe =	wm8728_probe,
+	.remove =	wm8728_remove,
+	.suspend =	wm8728_suspend,
+	.resume =	wm8728_resume,
+	.set_bias_level = wm8728_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8728_reg_defaults),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8728_reg_defaults,
+};
+
+#if defined(CONFIG_SPI_MASTER)
+static int __devinit wm8728_spi_probe(struct spi_device *spi)
+{
+	struct wm8728_priv *wm8728;
 	int ret;
 
-	i2c_set_clientdata(i2c, codec);
-	codec->control_data = i2c;
+	wm8728 = kzalloc(sizeof(struct wm8728_priv), GFP_KERNEL);
+	if (wm8728 == NULL)
+		return -ENOMEM;
 
-	ret = wm8728_init(socdev, SND_SOC_I2C);
+	wm8728->control_type = SND_SOC_SPI;
+	spi_set_drvdata(spi, wm8728);
+
+	ret = snd_soc_register_codec(&spi->dev,
+			&soc_codec_dev_wm8728, &wm8728_dai, 1);
 	if (ret < 0)
-		pr_err("failed to initialise WM8728\n");
-
+		kfree(wm8728);
 	return ret;
 }
 
-static int wm8728_i2c_remove(struct i2c_client *client)
+static int __devexit wm8728_spi_remove(struct spi_device *spi)
 {
-	struct snd_soc_codec *codec = i2c_get_clientdata(client);
-	kfree(codec->reg_cache);
+	snd_soc_unregister_codec(&spi->dev);
+	kfree(spi_get_drvdata(spi));
+	return 0;
+}
+
+static struct spi_driver wm8728_spi_driver = {
+	.driver = {
+		.name	= "wm8728-codec",
+		.bus	= &spi_bus_type,
+		.owner	= THIS_MODULE,
+	},
+	.probe		= wm8728_spi_probe,
+	.remove		= __devexit_p(wm8728_spi_remove),
+};
+#endif /* CONFIG_SPI_MASTER */
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+static __devinit int wm8728_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
+{
+	struct wm8728_priv *wm8728;
+	int ret;
+
+	wm8728 = kzalloc(sizeof(struct wm8728_priv), GFP_KERNEL);
+	if (wm8728 == NULL)
+		return -ENOMEM;
+
+	i2c_set_clientdata(i2c, wm8728);
+	wm8728->control_type = SND_SOC_I2C;
+
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8728, &wm8728_dai, 1);
+	if (ret < 0)
+		kfree(wm8728);
+	return ret;
+}
+
+static __devexit int wm8728_i2c_remove(struct i2c_client *client)
+{
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -337,166 +351,44 @@
 
 static struct i2c_driver wm8728_i2c_driver = {
 	.driver = {
-		.name = "WM8728 I2C Codec",
+		.name = "wm8728-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8728_i2c_probe,
-	.remove =   wm8728_i2c_remove,
+	.remove =   __devexit_p(wm8728_i2c_remove),
 	.id_table = wm8728_i2c_id,
 };
-
-static int wm8728_add_i2c_device(struct platform_device *pdev,
-				 const struct wm8728_setup_data *setup)
-{
-	struct i2c_board_info info;
-	struct i2c_adapter *adapter;
-	struct i2c_client *client;
-	int ret;
-
-	ret = i2c_add_driver(&wm8728_i2c_driver);
-	if (ret != 0) {
-		dev_err(&pdev->dev, "can't add i2c driver\n");
-		return ret;
-	}
-
-	memset(&info, 0, sizeof(struct i2c_board_info));
-	info.addr = setup->i2c_address;
-	strlcpy(info.type, "wm8728", I2C_NAME_SIZE);
-
-	adapter = i2c_get_adapter(setup->i2c_bus);
-	if (!adapter) {
-		dev_err(&pdev->dev, "can't get i2c adapter %d\n",
-			setup->i2c_bus);
-		goto err_driver;
-	}
-
-	client = i2c_new_device(adapter, &info);
-	i2c_put_adapter(adapter);
-	if (!client) {
-		dev_err(&pdev->dev, "can't add i2c device at 0x%x\n",
-			(unsigned int)info.addr);
-		goto err_driver;
-	}
-
-	return 0;
-
-err_driver:
-	i2c_del_driver(&wm8728_i2c_driver);
-	return -ENODEV;
-}
 #endif
 
-#if defined(CONFIG_SPI_MASTER)
-static int __devinit wm8728_spi_probe(struct spi_device *spi)
-{
-	struct snd_soc_device *socdev = wm8728_socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
-	int ret;
-
-	codec->control_data = spi;
-
-	ret = wm8728_init(socdev, SND_SOC_SPI);
-	if (ret < 0)
-		dev_err(&spi->dev, "failed to initialise WM8728\n");
-
-	return ret;
-}
-
-static int __devexit wm8728_spi_remove(struct spi_device *spi)
-{
-	return 0;
-}
-
-static struct spi_driver wm8728_spi_driver = {
-	.driver = {
-		.name	= "wm8728",
-		.bus	= &spi_bus_type,
-		.owner	= THIS_MODULE,
-	},
-	.probe		= wm8728_spi_probe,
-	.remove		= __devexit_p(wm8728_spi_remove),
-};
-#endif /* CONFIG_SPI_MASTER */
-
-static int wm8728_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct wm8728_setup_data *setup;
-	struct snd_soc_codec *codec;
-	int ret = 0;
-
-	setup = socdev->codec_data;
-	codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (codec == NULL)
-		return -ENOMEM;
-
-	socdev->card->codec = codec;
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	wm8728_socdev = socdev;
-	ret = -ENODEV;
-
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-	if (setup->i2c_address) {
-		ret = wm8728_add_i2c_device(pdev, setup);
-	}
-#endif
-#if defined(CONFIG_SPI_MASTER)
-	if (setup->spi) {
-		ret = spi_register_driver(&wm8728_spi_driver);
-		if (ret != 0)
-			printk(KERN_ERR "can't add spi driver");
-	}
-#endif
-
-	if (ret != 0)
-		kfree(codec);
-
-	return ret;
-}
-
-/* power down chip */
-static int wm8728_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (codec->control_data)
-		wm8728_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-	i2c_unregister_device(codec->control_data);
-	i2c_del_driver(&wm8728_i2c_driver);
-#endif
-#if defined(CONFIG_SPI_MASTER)
-	spi_unregister_driver(&wm8728_spi_driver);
-#endif
-	kfree(codec);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8728 = {
-	.probe = 	wm8728_probe,
-	.remove = 	wm8728_remove,
-	.suspend = 	wm8728_suspend,
-	.resume =	wm8728_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8728);
-
 static int __init wm8728_modinit(void)
 {
-	return snd_soc_register_dai(&wm8728_dai);
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	ret = i2c_add_driver(&wm8728_i2c_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register wm8728 I2C driver: %d\n",
+		       ret);
+	}
+#endif
+#if defined(CONFIG_SPI_MASTER)
+	ret = spi_register_driver(&wm8728_spi_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register wm8728 SPI driver: %d\n",
+		       ret);
+	}
+#endif
+	return ret;
 }
 module_init(wm8728_modinit);
 
 static void __exit wm8728_exit(void)
 {
-	snd_soc_unregister_dai(&wm8728_dai);
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	i2c_del_driver(&wm8728_i2c_driver);
+#endif
+#if defined(CONFIG_SPI_MASTER)
+	spi_unregister_driver(&wm8728_spi_driver);
+#endif
 }
 module_exit(wm8728_exit);
 
diff --git a/sound/soc/codecs/wm8728.h b/sound/soc/codecs/wm8728.h
index d269c13..8aea362 100644
--- a/sound/soc/codecs/wm8728.h
+++ b/sound/soc/codecs/wm8728.h
@@ -18,13 +18,4 @@
 #define WM8728_DACCTL    0x02
 #define WM8728_IFCTL     0x03
 
-struct wm8728_setup_data {
-	int            spi;
-	int            i2c_bus;
-	unsigned short i2c_address;
-};
-
-extern struct snd_soc_dai wm8728_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8728;
-
 #endif
diff --git a/sound/soc/codecs/wm8731.c b/sound/soc/codecs/wm8731.c
index 0ab9b63..bdce125 100644
--- a/sound/soc/codecs/wm8731.c
+++ b/sound/soc/codecs/wm8731.c
@@ -32,9 +32,6 @@
 
 #include "wm8731.h"
 
-static struct snd_soc_codec *wm8731_codec;
-struct snd_soc_codec_device soc_codec_dev_wm8731;
-
 #define WM8731_NUM_SUPPLIES 4
 static const char *wm8731_supply_names[WM8731_NUM_SUPPLIES] = {
 	"AVDD",
@@ -45,10 +42,11 @@
 
 /* codec private data */
 struct wm8731_priv {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
 	struct regulator_bulk_data supplies[WM8731_NUM_SUPPLIES];
 	u16 reg_cache[WM8731_CACHEREGNUM];
 	unsigned int sysclk;
+	int sysclk_type;
 };
 
 
@@ -113,6 +111,7 @@
 SOC_DAPM_ENUM("Input Select", wm8731_enum[0]);
 
 static const struct snd_soc_dapm_widget wm8731_dapm_widgets[] = {
+SND_SOC_DAPM_SUPPLY("OSC", WM8731_PWR, 5, 1, NULL, 0),
 SND_SOC_DAPM_MIXER("Output Mixer", WM8731_PWR, 4, 1,
 	&wm8731_output_mixer_controls[0],
 	ARRAY_SIZE(wm8731_output_mixer_controls)),
@@ -130,7 +129,18 @@
 SND_SOC_DAPM_INPUT("LLINEIN"),
 };
 
+static int wm8731_check_osc(struct snd_soc_dapm_widget *source,
+			    struct snd_soc_dapm_widget *sink)
+{
+	struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(source->codec);
+
+	return wm8731->sysclk_type == WM8731_SYSCLK_MCLK;
+}
+
 static const struct snd_soc_dapm_route intercon[] = {
+	{"DAC", NULL, "OSC", wm8731_check_osc},
+	{"ADC", NULL, "OSC", wm8731_check_osc},
+
 	/* output mixer */
 	{"Output Mixer", "Line Bypass Switch", "Line Input"},
 	{"Output Mixer", "HiFi Playback Switch", "DAC"},
@@ -222,9 +232,7 @@
 			    struct snd_pcm_hw_params *params,
 			    struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = dai->codec;
 	struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec);
 	u16 iface = snd_soc_read(codec, WM8731_IFACE) & 0xfff3;
 	int i = get_coeff(wm8731->sysclk, params_rate(params));
@@ -252,9 +260,7 @@
 static int wm8731_pcm_prepare(struct snd_pcm_substream *substream,
 			      struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = dai->codec;
 
 	/* set active */
 	snd_soc_write(codec, WM8731_ACTIVE, 0x0001);
@@ -265,9 +271,7 @@
 static void wm8731_shutdown(struct snd_pcm_substream *substream,
 			    struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = dai->codec;
 
 	/* deactivate */
 	if (!codec->active) {
@@ -294,6 +298,15 @@
 	struct snd_soc_codec *codec = codec_dai->codec;
 	struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec);
 
+	switch (clk_id) {
+	case WM8731_SYSCLK_XTAL:
+	case WM8731_SYSCLK_MCLK:
+		wm8731->sysclk_type = clk_id;
+		break;
+	default:
+		return -EINVAL;
+	}
+
 	switch (freq) {
 	case 11289600:
 	case 12000000:
@@ -301,9 +314,14 @@
 	case 16934400:
 	case 18432000:
 		wm8731->sysclk = freq;
-		return 0;
+		break;
+	default:
+		return -EINVAL;
 	}
-	return -EINVAL;
+
+	snd_soc_dapm_sync(codec);
+
+	return 0;
 }
 
 
@@ -428,8 +446,8 @@
 	.set_fmt	= wm8731_set_dai_fmt,
 };
 
-struct snd_soc_dai wm8731_dai = {
-	.name = "WM8731",
+static struct snd_soc_dai_driver wm8731_dai = {
+	.name = "wm8731-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -445,24 +463,17 @@
 	.ops = &wm8731_dai_ops,
 	.symmetric_rates = 1,
 };
-EXPORT_SYMBOL_GPL(wm8731_dai);
 
 #ifdef CONFIG_PM
-static int wm8731_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8731_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8731_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
 	return 0;
 }
 
-static int wm8731_resume(struct platform_device *pdev)
+static int wm8731_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8731_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	return 0;
@@ -472,88 +483,15 @@
 #define wm8731_resume NULL
 #endif
 
-static int wm8731_probe(struct platform_device *pdev)
+static int wm8731_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
+	struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec);
+	int ret = 0, i;
 
-	if (wm8731_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8731_codec;
-	codec = wm8731_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
-	snd_soc_add_controls(codec, wm8731_snd_controls,
-			     ARRAY_SIZE(wm8731_snd_controls));
-	wm8731_add_widgets(codec);
-
-	return ret;
-
-pcm_err:
-	return ret;
-}
-
-/* power down chip */
-static int wm8731_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8731 = {
-	.probe = 	wm8731_probe,
-	.remove = 	wm8731_remove,
-	.suspend = 	wm8731_suspend,
-	.resume =	wm8731_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8731);
-
-static int wm8731_register(struct wm8731_priv *wm8731,
-			   enum snd_soc_control_type control)
-{
-	int ret, i;
-	struct snd_soc_codec *codec = &wm8731->codec;
-
-	if (wm8731_codec) {
-		dev_err(codec->dev, "Another WM8731 is registered\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm8731);
-	codec->name = "WM8731";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8731_set_bias_level;
-	codec->dai = &wm8731_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = WM8731_CACHEREGNUM;
-	codec->reg_cache = &wm8731->reg_cache;
-
-	memcpy(codec->reg_cache, wm8731_reg, sizeof(wm8731_reg));
-
-	ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9, wm8731->control_type);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	for (i = 0; i < ARRAY_SIZE(wm8731->supplies); i++)
@@ -563,7 +501,7 @@
 				 wm8731->supplies);
 	if (ret != 0) {
 		dev_err(codec->dev, "Failed to request supplies: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	ret = regulator_bulk_enable(ARRAY_SIZE(wm8731->supplies),
@@ -579,8 +517,6 @@
 		goto err_regulator_enable;
 	}
 
-	wm8731_dai.dev = codec->dev;
-
 	wm8731_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	/* Latch the update bits */
@@ -592,78 +528,78 @@
 	/* Disable bypass path by default */
 	snd_soc_update_bits(codec, WM8731_APANA, 0x4, 0);
 
-	wm8731_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err_regulator_enable;
-	}
-
-	ret = snd_soc_register_dai(&wm8731_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		snd_soc_unregister_codec(codec);
-		goto err_codec;
-	}
+	snd_soc_add_controls(codec, wm8731_snd_controls,
+			     ARRAY_SIZE(wm8731_snd_controls));
+	wm8731_add_widgets(codec);
 
 	/* Regulators will have been enabled by bias management */
 	regulator_bulk_disable(ARRAY_SIZE(wm8731->supplies), wm8731->supplies);
 
 	return 0;
 
-err_codec:
-	snd_soc_unregister_codec(codec);
 err_regulator_enable:
 	regulator_bulk_disable(ARRAY_SIZE(wm8731->supplies), wm8731->supplies);
 err_regulator_get:
 	regulator_bulk_free(ARRAY_SIZE(wm8731->supplies), wm8731->supplies);
-err:
+
 	kfree(wm8731);
 	return ret;
 }
 
-static void wm8731_unregister(struct wm8731_priv *wm8731)
+/* power down chip */
+static int wm8731_remove(struct snd_soc_codec *codec)
 {
-	wm8731_set_bias_level(&wm8731->codec, SND_SOC_BIAS_OFF);
-	snd_soc_unregister_dai(&wm8731_dai);
-	snd_soc_unregister_codec(&wm8731->codec);
+	struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec);
+
+	wm8731_set_bias_level(codec, SND_SOC_BIAS_OFF);
+
+	regulator_bulk_disable(ARRAY_SIZE(wm8731->supplies), wm8731->supplies);
 	regulator_bulk_free(ARRAY_SIZE(wm8731->supplies), wm8731->supplies);
-	kfree(wm8731);
-	wm8731_codec = NULL;
+
+	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_wm8731 = {
+	.probe =	wm8731_probe,
+	.remove =	wm8731_remove,
+	.suspend =	wm8731_suspend,
+	.resume =	wm8731_resume,
+	.set_bias_level = wm8731_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8731_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8731_reg,
+};
+
 #if defined(CONFIG_SPI_MASTER)
 static int __devinit wm8731_spi_probe(struct spi_device *spi)
 {
-	struct snd_soc_codec *codec;
 	struct wm8731_priv *wm8731;
+	int ret;
 
 	wm8731 = kzalloc(sizeof(struct wm8731_priv), GFP_KERNEL);
 	if (wm8731 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8731->codec;
-	codec->control_data = spi;
-	codec->dev = &spi->dev;
+	wm8731->control_type = SND_SOC_SPI;
+	spi_set_drvdata(spi, wm8731);
 
-	dev_set_drvdata(&spi->dev, wm8731);
-
-	return wm8731_register(wm8731, SND_SOC_SPI);
+	ret = snd_soc_register_codec(&spi->dev,
+			&soc_codec_dev_wm8731, &wm8731_dai, 1);
+	if (ret < 0)
+		kfree(wm8731);
+	return ret;
 }
 
 static int __devexit wm8731_spi_remove(struct spi_device *spi)
 {
-	struct wm8731_priv *wm8731 = dev_get_drvdata(&spi->dev);
-
-	wm8731_unregister(wm8731);
-
+	snd_soc_unregister_codec(&spi->dev);
+	kfree(spi_get_drvdata(spi));
 	return 0;
 }
 
 static struct spi_driver wm8731_spi_driver = {
 	.driver = {
-		.name	= "wm8731",
+		.name	= "wm8731-codec",
 		.bus	= &spi_bus_type,
 		.owner	= THIS_MODULE,
 	},
@@ -677,26 +613,26 @@
 				      const struct i2c_device_id *id)
 {
 	struct wm8731_priv *wm8731;
-	struct snd_soc_codec *codec;
+	int ret;
 
 	wm8731 = kzalloc(sizeof(struct wm8731_priv), GFP_KERNEL);
 	if (wm8731 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8731->codec;
-
 	i2c_set_clientdata(i2c, wm8731);
-	codec->control_data = i2c;
+	wm8731->control_type = SND_SOC_I2C;
 
-	codec->dev = &i2c->dev;
-
-	return wm8731_register(wm8731, SND_SOC_I2C);
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8731, &wm8731_dai, 1);
+	if (ret < 0)
+		kfree(wm8731);
+	return ret;
 }
 
 static __devexit int wm8731_i2c_remove(struct i2c_client *client)
 {
-	struct wm8731_priv *wm8731 = i2c_get_clientdata(client);
-	wm8731_unregister(wm8731);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -708,7 +644,7 @@
 
 static struct i2c_driver wm8731_i2c_driver = {
 	.driver = {
-		.name = "wm8731",
+		.name = "wm8731-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8731_i2c_probe,
@@ -719,7 +655,7 @@
 
 static int __init wm8731_modinit(void)
 {
-	int ret;
+	int ret = 0;
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	ret = i2c_add_driver(&wm8731_i2c_driver);
 	if (ret != 0) {
@@ -734,7 +670,7 @@
 		       ret);
 	}
 #endif
-	return 0;
+	return ret;
 }
 module_init(wm8731_modinit);
 
diff --git a/sound/soc/codecs/wm8731.h b/sound/soc/codecs/wm8731.h
index cd7b806..e9c0c76 100644
--- a/sound/soc/codecs/wm8731.h
+++ b/sound/soc/codecs/wm8731.h
@@ -31,10 +31,9 @@
 
 #define WM8731_CACHEREGNUM 	10
 
-#define WM8731_SYSCLK	0
-#define WM8731_DAI		0
+#define WM8731_SYSCLK_XTAL 1
+#define WM8731_SYSCLK_MCLK 2
 
-extern struct snd_soc_dai wm8731_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8731;
+#define WM8731_DAI		0
 
 #endif
diff --git a/sound/soc/codecs/wm8741.c b/sound/soc/codecs/wm8741.c
index b9ea890..90e31e9 100644
--- a/sound/soc/codecs/wm8741.c
+++ b/sound/soc/codecs/wm8741.c
@@ -30,25 +30,21 @@
 
 #include "wm8741.h"
 
-static struct snd_soc_codec *wm8741_codec;
-struct snd_soc_codec_device soc_codec_dev_wm8741;
-
 #define WM8741_NUM_SUPPLIES 2
 static const char *wm8741_supply_names[WM8741_NUM_SUPPLIES] = {
 	"AVDD",
 	"DVDD",
 };
 
-#define WM8741_NUM_RATES 4
+#define WM8741_NUM_RATES 6
 
 /* codec private data */
 struct wm8741_priv {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
 	u16 reg_cache[WM8741_REGISTER_COUNT];
 	struct regulator_bulk_data supplies[WM8741_NUM_SUPPLIES];
 	unsigned int sysclk;
-	unsigned int rate_constraint_list[WM8741_NUM_RATES];
-	struct snd_pcm_hw_constraint_list rate_constraint;
+	struct snd_pcm_hw_constraint_list *sysclk_constraints;
 };
 
 static const u16 wm8741_reg_defaults[WM8741_REGISTER_COUNT] = {
@@ -111,10 +107,84 @@
 	int value;
 	int ratio;
 } lrclk_ratios[WM8741_NUM_RATES] = {
-	{ 1, 256 },
-	{ 2, 384 },
-	{ 3, 512 },
-	{ 4, 768 },
+	{ 1, 128 },
+	{ 2, 192 },
+	{ 3, 256 },
+	{ 4, 384 },
+	{ 5, 512 },
+	{ 6, 768 },
+};
+
+static unsigned int rates_11289[] = {
+	44100, 88235,
+};
+
+static struct snd_pcm_hw_constraint_list constraints_11289 = {
+	.count	= ARRAY_SIZE(rates_11289),
+	.list	= rates_11289,
+};
+
+static unsigned int rates_12288[] = {
+	32000, 48000, 96000,
+};
+
+static struct snd_pcm_hw_constraint_list constraints_12288 = {
+	.count	= ARRAY_SIZE(rates_12288),
+	.list	= rates_12288,
+};
+
+static unsigned int rates_16384[] = {
+	32000,
+};
+
+static struct snd_pcm_hw_constraint_list constraints_16384 = {
+	.count	= ARRAY_SIZE(rates_16384),
+	.list	= rates_16384,
+};
+
+static unsigned int rates_16934[] = {
+	44100, 88235,
+};
+
+static struct snd_pcm_hw_constraint_list constraints_16934 = {
+	.count	= ARRAY_SIZE(rates_16934),
+	.list	= rates_16934,
+};
+
+static unsigned int rates_18432[] = {
+	48000, 96000,
+};
+
+static struct snd_pcm_hw_constraint_list constraints_18432 = {
+	.count	= ARRAY_SIZE(rates_18432),
+	.list	= rates_18432,
+};
+
+static unsigned int rates_22579[] = {
+	44100, 88235, 1764000
+};
+
+static struct snd_pcm_hw_constraint_list constraints_22579 = {
+	.count	= ARRAY_SIZE(rates_22579),
+	.list	= rates_22579,
+};
+
+static unsigned int rates_24576[] = {
+	32000, 48000, 96000, 192000
+};
+
+static struct snd_pcm_hw_constraint_list constraints_24576 = {
+	.count	= ARRAY_SIZE(rates_24576),
+	.list	= rates_24576,
+};
+
+static unsigned int rates_36864[] = {
+	48000, 96000, 19200
+};
+
+static struct snd_pcm_hw_constraint_list constraints_36864 = {
+	.count	= ARRAY_SIZE(rates_36864),
+	.list	= rates_36864,
 };
 
 
@@ -135,7 +205,7 @@
 
 	snd_pcm_hw_constraint_list(substream->runtime, 0,
 				   SNDRV_PCM_HW_PARAM_RATE,
-				   &wm8741->rate_constraint);
+				   wm8741->sysclk_constraints);
 
 	return 0;
 }
@@ -145,8 +215,7 @@
 			    struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct wm8741_priv *wm8741 = snd_soc_codec_get_drvdata(codec);
 	u16 iface = snd_soc_read(codec, WM8741_FORMAT_CONTROL) & 0x1FC;
 	int i;
@@ -196,47 +265,52 @@
 {
 	struct snd_soc_codec *codec = codec_dai->codec;
 	struct wm8741_priv *wm8741 = snd_soc_codec_get_drvdata(codec);
-	unsigned int val;
-	int i;
 
 	dev_dbg(codec->dev, "wm8741_set_dai_sysclk info: freq=%dHz\n", freq);
 
-	wm8741->sysclk = freq;
+	switch (freq) {
+	case 11289600:
+		wm8741->sysclk_constraints = &constraints_11289;
+		wm8741->sysclk = freq;
+		return 0;
 
-	wm8741->rate_constraint.count = 0;
+	case 12288000:
+		wm8741->sysclk_constraints = &constraints_12288;
+		wm8741->sysclk = freq;
+		return 0;
 
-	for (i = 0; i < ARRAY_SIZE(lrclk_ratios); i++) {
-		dev_dbg(codec->dev, "index = %d, ratio = %d, freq = %d",
-				i, lrclk_ratios[i].ratio, freq);
+	case 16384000:
+		wm8741->sysclk_constraints = &constraints_16384;
+		wm8741->sysclk = freq;
+		return 0;
 
-		val = freq / lrclk_ratios[i].ratio;
-		/* Check that it's a standard rate since core can't
-		 * cope with others and having the odd rates confuses
-		 * constraint matching.
-		 */
-		switch (val) {
-		case 32000:
-		case 44100:
-		case 48000:
-		case 64000:
-		case 88200:
-		case 96000:
-			dev_dbg(codec->dev, "Supported sample rate: %dHz\n",
-				val);
-			wm8741->rate_constraint_list[i] = val;
-			wm8741->rate_constraint.count++;
-			break;
-		default:
-			dev_dbg(codec->dev, "Skipping sample rate: %dHz\n",
-				val);
-		}
+	case 16934400:
+		wm8741->sysclk_constraints = &constraints_16934;
+		wm8741->sysclk = freq;
+		return 0;
+
+	case 18432000:
+		wm8741->sysclk_constraints = &constraints_18432;
+		wm8741->sysclk = freq;
+		return 0;
+
+	case 22579200:
+	case 33868800:
+		wm8741->sysclk_constraints = &constraints_22579;
+		wm8741->sysclk = freq;
+		return 0;
+
+	case 24576000:
+		wm8741->sysclk_constraints = &constraints_24576;
+		wm8741->sysclk = freq;
+		return 0;
+
+	case 36864000:
+		wm8741->sysclk_constraints = &constraints_36864;
+		wm8741->sysclk = freq;
+		return 0;
 	}
-
-	/* Need at least one supported rate... */
-	if (wm8741->rate_constraint.count == 0)
-		return -EINVAL;
-
-	return 0;
+	return -EINVAL;
 }
 
 static int wm8741_set_dai_fmt(struct snd_soc_dai *codec_dai,
@@ -314,8 +388,8 @@
 	.set_fmt	= wm8741_set_dai_fmt,
 };
 
-struct snd_soc_dai wm8741_dai = {
-	.name = "WM8741",
+static struct snd_soc_dai_driver wm8741_dai = {
+	.name = "wm8741",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 2,  /* Mono modes not yet supported */
@@ -325,13 +399,10 @@
 	},
 	.ops = &wm8741_dai_ops,
 };
-EXPORT_SYMBOL_GPL(wm8741_dai);
 
 #ifdef CONFIG_PM
-static int wm8741_resume(struct platform_device *pdev)
+static int wm8741_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	u16 *cache = codec->reg_cache;
 	int i;
 
@@ -348,189 +419,99 @@
 #define wm8741_resume NULL
 #endif
 
-static int wm8741_probe(struct platform_device *pdev)
+static int wm8741_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
+	struct wm8741_priv *wm8741 = snd_soc_codec_get_drvdata(codec);
 	int ret = 0;
 
-	if (wm8741_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8741_codec;
-	codec = wm8741_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
-	snd_soc_add_controls(codec, wm8741_snd_controls,
-			     ARRAY_SIZE(wm8741_snd_controls));
-	wm8741_add_widgets(codec);
-
-	return ret;
-
-pcm_err:
-	return ret;
-}
-
-static int wm8741_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8741 = {
-	.probe =	wm8741_probe,
-	.remove =	wm8741_remove,
-	.resume =	wm8741_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8741);
-
-static int wm8741_register(struct wm8741_priv *wm8741,
-			   enum snd_soc_control_type control)
-{
-	int ret;
-	struct snd_soc_codec *codec = &wm8741->codec;
-	int i;
-
-	if (wm8741_codec) {
-		dev_err(codec->dev, "Another WM8741 is registered\n");
-		return -EINVAL;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm8741);
-	codec->name = "WM8741";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = NULL;
-	codec->dai = &wm8741_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = WM8741_REGISTER_COUNT;
-	codec->reg_cache = &wm8741->reg_cache;
-
-	wm8741->rate_constraint.list = &wm8741->rate_constraint_list[0];
-	wm8741->rate_constraint.count =
-		ARRAY_SIZE(wm8741->rate_constraint_list);
-
-	memcpy(codec->reg_cache, wm8741_reg_defaults,
-		sizeof(wm8741->reg_cache));
-
-	ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9, wm8741->control_type);
 	if (ret != 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
-	}
-
-	for (i = 0; i < ARRAY_SIZE(wm8741->supplies); i++)
-		wm8741->supplies[i].supply = wm8741_supply_names[i];
-
-	ret = regulator_bulk_get(codec->dev, ARRAY_SIZE(wm8741->supplies),
-				 wm8741->supplies);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to request supplies: %d\n", ret);
-		goto err;
-	}
-
-	ret = regulator_bulk_enable(ARRAY_SIZE(wm8741->supplies),
-				    wm8741->supplies);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to enable supplies: %d\n", ret);
-		goto err_get;
+		return ret;
 	}
 
 	ret = wm8741_reset(codec);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to issue reset\n");
-		goto err_enable;
+		return ret;
 	}
 
-	wm8741_dai.dev = codec->dev;
-
 	/* Change some default settings - latch VU */
 	wm8741->reg_cache[WM8741_DACLLSB_ATTENUATION] |= WM8741_UPDATELL;
 	wm8741->reg_cache[WM8741_DACLMSB_ATTENUATION] |= WM8741_UPDATELM;
 	wm8741->reg_cache[WM8741_DACRLSB_ATTENUATION] |= WM8741_UPDATERL;
 	wm8741->reg_cache[WM8741_DACRLSB_ATTENUATION] |= WM8741_UPDATERM;
 
-	wm8741_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		return ret;
-	}
-
-	ret = snd_soc_register_dai(&wm8741_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		snd_soc_unregister_codec(codec);
-		return ret;
-	}
+	snd_soc_add_controls(codec, wm8741_snd_controls,
+			     ARRAY_SIZE(wm8741_snd_controls));
+	wm8741_add_widgets(codec);
 
 	dev_dbg(codec->dev, "Successful registration\n");
-	return 0;
+	return ret;
+}
+
+static struct snd_soc_codec_driver soc_codec_dev_wm8741 = {
+	.probe =	wm8741_probe,
+	.resume =	wm8741_resume,
+	.reg_cache_size = ARRAY_SIZE(wm8741_reg_defaults),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = &wm8741_reg_defaults,
+};
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+static int wm8741_i2c_probe(struct i2c_client *i2c,
+			    const struct i2c_device_id *id)
+{
+	struct wm8741_priv *wm8741;
+	int ret, i;
+
+	wm8741 = kzalloc(sizeof(struct wm8741_priv), GFP_KERNEL);
+	if (wm8741 == NULL)
+		return -ENOMEM;
+
+	for (i = 0; i < ARRAY_SIZE(wm8741->supplies); i++)
+		wm8741->supplies[i].supply = wm8741_supply_names[i];
+
+	ret = regulator_bulk_get(&i2c->dev, ARRAY_SIZE(wm8741->supplies),
+				 wm8741->supplies);
+	if (ret != 0) {
+		dev_err(&i2c->dev, "Failed to request supplies: %d\n", ret);
+		goto err;
+	}
+
+	ret = regulator_bulk_enable(ARRAY_SIZE(wm8741->supplies),
+				    wm8741->supplies);
+	if (ret != 0) {
+		dev_err(&i2c->dev, "Failed to enable supplies: %d\n", ret);
+		goto err_get;
+	}
+
+	i2c_set_clientdata(i2c, wm8741);
+	wm8741->control_type = SND_SOC_I2C;
+
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8741, &wm8741_dai, 1);
+	if (ret < 0)
+		goto err_enable;
+	return ret;
 
 err_enable:
 	regulator_bulk_disable(ARRAY_SIZE(wm8741->supplies), wm8741->supplies);
 
 err_get:
 	regulator_bulk_free(ARRAY_SIZE(wm8741->supplies), wm8741->supplies);
-
 err:
 	kfree(wm8741);
 	return ret;
 }
 
-static void wm8741_unregister(struct wm8741_priv *wm8741)
-{
-	regulator_bulk_free(ARRAY_SIZE(wm8741->supplies), wm8741->supplies);
-
-	snd_soc_unregister_dai(&wm8741_dai);
-	snd_soc_unregister_codec(&wm8741->codec);
-	kfree(wm8741);
-	wm8741_codec = NULL;
-}
-
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-static __devinit int wm8741_i2c_probe(struct i2c_client *i2c,
-				      const struct i2c_device_id *id)
-{
-	struct wm8741_priv *wm8741;
-	struct snd_soc_codec *codec;
-
-	wm8741 = kzalloc(sizeof(struct wm8741_priv), GFP_KERNEL);
-	if (wm8741 == NULL)
-		return -ENOMEM;
-
-	codec = &wm8741->codec;
-	codec->hw_write = (hw_write_t)i2c_master_send;
-
-	i2c_set_clientdata(i2c, wm8741);
-	codec->control_data = i2c;
-
-	codec->dev = &i2c->dev;
-
-	return wm8741_register(wm8741, SND_SOC_I2C);
-}
-
-static __devexit int wm8741_i2c_remove(struct i2c_client *client)
+static int wm8741_i2c_remove(struct i2c_client *client)
 {
 	struct wm8741_priv *wm8741 = i2c_get_clientdata(client);
-	wm8741_unregister(wm8741);
+
+	snd_soc_unregister_codec(&client->dev);
+	regulator_bulk_free(ARRAY_SIZE(wm8741->supplies), wm8741->supplies);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -540,29 +521,28 @@
 };
 MODULE_DEVICE_TABLE(i2c, wm8741_i2c_id);
 
-
 static struct i2c_driver wm8741_i2c_driver = {
 	.driver = {
-		.name = "WM8741",
+		.name = "wm8741-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8741_i2c_probe,
-	.remove =   __devexit_p(wm8741_i2c_remove),
+	.remove =   wm8741_i2c_remove,
 	.id_table = wm8741_i2c_id,
 };
 #endif
 
 static int __init wm8741_modinit(void)
 {
-	int ret;
+	int ret = 0;
+
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	ret = i2c_add_driver(&wm8741_i2c_driver);
-	if (ret != 0) {
-		printk(KERN_ERR "Failed to register WM8741 I2C driver: %d\n",
-		       ret);
-	}
+	if (ret != 0)
+		pr_err("Failed to register WM8741 I2C driver: %d\n", ret);
 #endif
-	return 0;
+
+	return ret;
 }
 module_init(wm8741_modinit);
 
diff --git a/sound/soc/codecs/wm8741.h b/sound/soc/codecs/wm8741.h
index fdef6ec..56c1b1d 100644
--- a/sound/soc/codecs/wm8741.h
+++ b/sound/soc/codecs/wm8741.h
@@ -208,7 +208,4 @@
 
 #define  WM8741_SYSCLK 0
 
-extern struct snd_soc_dai wm8741_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8741;
-
 #endif
diff --git a/sound/soc/codecs/wm8750.c b/sound/soc/codecs/wm8750.c
index e2c05e3..4d1ec9d 100644
--- a/sound/soc/codecs/wm8750.c
+++ b/sound/soc/codecs/wm8750.c
@@ -52,7 +52,7 @@
 /* codec private data */
 struct wm8750_priv {
 	unsigned int sysclk;
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
 	u16 reg_cache[ARRAY_SIZE(wm8750_reg)];
 };
 
@@ -560,8 +560,7 @@
 				struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct wm8750_priv *wm8750 = snd_soc_codec_get_drvdata(codec);
 	u16 iface = snd_soc_read(codec, WM8750_IFACE) & 0x1f3;
 	u16 srate = snd_soc_read(codec, WM8750_SRATE) & 0x1c0;
@@ -649,8 +648,8 @@
 	.set_sysclk	= wm8750_set_dai_sysclk,
 };
 
-struct snd_soc_dai wm8750_dai = {
-	.name = "WM8750",
+static struct snd_soc_dai_driver wm8750_dai = {
+	.name = "wm8750-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -665,21 +664,15 @@
 		.formats = WM8750_FORMATS,},
 	.ops = &wm8750_dai_ops,
 };
-EXPORT_SYMBOL_GPL(wm8750_dai);
 
-static int wm8750_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8750_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8750_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int wm8750_resume(struct platform_device *pdev)
+static int wm8750_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	int i;
 	u8 data[2];
 	u16 *cache = codec->reg_cache;
@@ -698,100 +691,21 @@
 	return 0;
 }
 
-static struct snd_soc_codec *wm8750_codec;
-
-static int wm8750_probe(struct platform_device *pdev)
+static int wm8750_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
+	struct wm8750_priv *wm8750 = snd_soc_codec_get_drvdata(codec);
+	int reg, ret;
 
-	if (!wm8750_codec) {
-		dev_err(&pdev->dev, "WM8750 codec not yet registered\n");
-		return -EINVAL;
-	}
-
-	socdev->card->codec = wm8750_codec;
-	codec = wm8750_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "wm8750: failed to create pcms\n");
-		goto err;
-	}
-
-	snd_soc_add_controls(codec, wm8750_snd_controls,
-				ARRAY_SIZE(wm8750_snd_controls));
-	wm8750_add_widgets(codec);
-
-	return 0;
-
-err:
-	return ret;
-}
-
-/* power down chip */
-static int wm8750_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8750 = {
-	.probe		= wm8750_probe,
-	.remove		= wm8750_remove,
-	.suspend	= wm8750_suspend,
-	.resume		= wm8750_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8750);
-
-/*
- * initialise the WM8750 driver
- * register the mixer and dsp interfaces with the kernel
- */
-static int wm8750_register(struct wm8750_priv *wm8750,
-			enum snd_soc_control_type control)
-{
-	struct snd_soc_codec *codec = &wm8750->codec;
-	int reg, ret = 0;
-
-	if (wm8750_codec) {
-		dev_err(codec->dev, "Multiple WM8750 devices not supported\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->name = "WM8750";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_STANDBY;
-	codec->set_bias_level = wm8750_set_bias_level;
-	codec->dai = &wm8750_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = ARRAY_SIZE(wm8750->reg_cache) + 1;
-	codec->reg_cache = &wm8750->reg_cache;
-	snd_soc_codec_set_drvdata(codec, wm8750);
-
-	memcpy(codec->reg_cache, wm8750_reg, sizeof(wm8750->reg_cache));
-
-	ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9, wm8750->control_type);
 	if (ret < 0) {
 		printk(KERN_ERR "wm8750: failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	ret = wm8750_reset(codec);
 	if (ret < 0) {
 		printk(KERN_ERR "wm8750: failed to reset: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	/* charge output caps */
@@ -815,150 +729,131 @@
 	reg = snd_soc_read(codec, WM8750_RINVOL);
 	snd_soc_write(codec, WM8750_RINVOL, reg | 0x0100);
 
-	wm8750_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err;
-	}
-
-	ret = snd_soc_register_dais(&wm8750_dai, 1);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAIs: %d\n", ret);
-		goto err_codec;
-	}
-
-	return 0;
-
-err_codec:
-	snd_soc_unregister_codec(codec);
-err:
-	kfree(wm8750);
+	snd_soc_add_controls(codec, wm8750_snd_controls,
+				ARRAY_SIZE(wm8750_snd_controls));
+	wm8750_add_widgets(codec);
 	return ret;
 }
 
-static void wm8750_unregister(struct wm8750_priv *wm8750)
+static int wm8750_remove(struct snd_soc_codec *codec)
 {
-	wm8750_set_bias_level(&wm8750->codec, SND_SOC_BIAS_OFF);
-	snd_soc_unregister_dais(&wm8750_dai, 1);
-	snd_soc_unregister_codec(&wm8750->codec);
-	kfree(wm8750);
-	wm8750_codec = NULL;
+	wm8750_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
 }
 
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+static struct snd_soc_codec_driver soc_codec_dev_wm8750 = {
+	.probe =	wm8750_probe,
+	.remove =	wm8750_remove,
+	.suspend =	wm8750_suspend,
+	.resume =	wm8750_resume,
+	.set_bias_level = wm8750_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8750_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8750_reg,
+};
 
-/*
- * WM8750 2 wire address is determined by GPIO5
- * state during powerup.
- *    low  = 0x1a
- *    high = 0x1b
- */
-
-static int wm8750_i2c_probe(struct i2c_client *i2c,
-			    const struct i2c_device_id *id)
+#if defined(CONFIG_SPI_MASTER)
+static int __devinit wm8750_spi_probe(struct spi_device *spi)
 {
-	struct snd_soc_codec *codec;
 	struct wm8750_priv *wm8750;
+	int ret;
 
 	wm8750 = kzalloc(sizeof(struct wm8750_priv), GFP_KERNEL);
 	if (wm8750 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8750->codec;
-	codec->control_data = i2c;
-	i2c_set_clientdata(i2c, wm8750);
+	wm8750->control_type = SND_SOC_SPI;
+	spi_set_drvdata(spi, wm8750);
 
-	codec->dev = &i2c->dev;
-
-	return wm8750_register(wm8750, SND_SOC_I2C);
+	ret = snd_soc_register_codec(&spi->dev,
+			&soc_codec_dev_wm8750, &wm8750_dai, 1);
+	if (ret < 0)
+		kfree(wm8750);
+	return ret;
 }
 
-static int wm8750_i2c_remove(struct i2c_client *client)
+static int __devexit wm8750_spi_remove(struct spi_device *spi)
 {
-	struct wm8750_priv *wm8750 = i2c_get_clientdata(client);
-	wm8750_unregister(wm8750);
+	snd_soc_unregister_codec(&spi->dev);
+	kfree(spi_get_drvdata(spi));
+	return 0;
+}
+
+static struct spi_driver wm8750_spi_driver = {
+	.driver = {
+		.name	= "wm8750-codec",
+		.bus	= &spi_bus_type,
+		.owner	= THIS_MODULE,
+	},
+	.probe		= wm8750_spi_probe,
+	.remove		= __devexit_p(wm8750_spi_remove),
+};
+#endif /* CONFIG_SPI_MASTER */
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+static __devinit int wm8750_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
+{
+	struct wm8750_priv *wm8750;
+	int ret;
+
+	wm8750 = kzalloc(sizeof(struct wm8750_priv), GFP_KERNEL);
+	if (wm8750 == NULL)
+		return -ENOMEM;
+
+	i2c_set_clientdata(i2c, wm8750);
+	wm8750->control_type = SND_SOC_I2C;
+
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8750, &wm8750_dai, 1);
+	if (ret < 0)
+		kfree(wm8750);
+	return ret;
+}
+
+static __devexit int wm8750_i2c_remove(struct i2c_client *client)
+{
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
 static const struct i2c_device_id wm8750_i2c_id[] = {
 	{ "wm8750", 0 },
-	{ "wm8987", 0 }, /* WM8987 is register compatible with WM8750 */
+	{ "wm8987", 0 },
 	{ }
 };
 MODULE_DEVICE_TABLE(i2c, wm8750_i2c_id);
 
 static struct i2c_driver wm8750_i2c_driver = {
 	.driver = {
-		.name = "WM8750 I2C Codec",
+		.name = "wm8750-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8750_i2c_probe,
-	.remove =   wm8750_i2c_remove,
+	.remove =   __devexit_p(wm8750_i2c_remove),
 	.id_table = wm8750_i2c_id,
 };
 #endif
 
-#if defined(CONFIG_SPI_MASTER)
-static int __devinit wm8750_spi_probe(struct spi_device *spi)
-{
-	struct snd_soc_codec *codec;
-	struct wm8750_priv *wm8750;
-
-	wm8750 = kzalloc(sizeof(struct wm8750_priv), GFP_KERNEL);
-	if (wm8750 == NULL)
-		return -ENOMEM;
-
-	codec = &wm8750->codec;
-	codec->control_data = spi;
-	codec->dev = &spi->dev;
-
-	dev_set_drvdata(&spi->dev, wm8750);
-
-	return wm8750_register(wm8750, SND_SOC_SPI);
-}
-
-static int __devexit wm8750_spi_remove(struct spi_device *spi)
-{
-	struct wm8750_priv *wm8750 = dev_get_drvdata(&spi->dev);
-	wm8750_unregister(wm8750);
-	return 0;
-}
-
-static const struct spi_device_id wm8750_spi_id[] = {
-	{ "wm8750", 0 },
-	{ "wm8987", 0 },
-	{ }
-};
-MODULE_DEVICE_TABLE(spi, wm8750_spi_id);
-
-static struct spi_driver wm8750_spi_driver = {
-	.driver = {
-		.name	= "WM8750 SPI Codec",
-		.bus	= &spi_bus_type,
-		.owner	= THIS_MODULE,
-	},
-	.probe		= wm8750_spi_probe,
-	.remove		= __devexit_p(wm8750_spi_remove),
-	.id_table	= wm8750_spi_id,
-};
-#endif
-
 static int __init wm8750_modinit(void)
 {
-	int ret;
+	int ret = 0;
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	ret = i2c_add_driver(&wm8750_i2c_driver);
-	if (ret != 0)
-		pr_err("Failed to register WM8750 I2C driver: %d\n", ret);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register wm8750 I2C driver: %d\n",
+		       ret);
+	}
 #endif
 #if defined(CONFIG_SPI_MASTER)
 	ret = spi_register_driver(&wm8750_spi_driver);
-	if (ret != 0)
-		pr_err("Failed to register WM8750 SPI driver: %d\n", ret);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register wm8750 SPI driver: %d\n",
+		       ret);
+	}
 #endif
-	return 0;
+	return ret;
 }
 module_init(wm8750_modinit);
 
diff --git a/sound/soc/codecs/wm8750.h b/sound/soc/codecs/wm8750.h
index 1dc100e..121427c 100644
--- a/sound/soc/codecs/wm8750.h
+++ b/sound/soc/codecs/wm8750.h
@@ -57,13 +57,4 @@
 
 #define WM8750_SYSCLK	0
 
-struct wm8750_setup_data {
-	int spi;
-	int i2c_bus;
-	unsigned short i2c_address;
-};
-
-extern struct snd_soc_dai wm8750_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8750;
-
 #endif
diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c
index b59f349..64ea066 100644
--- a/sound/soc/codecs/wm8753.c
+++ b/sound/soc/codecs/wm8753.c
@@ -57,7 +57,7 @@
 MODULE_PARM_DESC(caps_charge, "WM8753 cap charge time (msecs)");
 
 static void wm8753_set_dai_mode(struct snd_soc_codec *codec,
-	unsigned int mode);
+		struct snd_soc_dai *dai, unsigned int hifi);
 
 /*
  * wm8753 register cache
@@ -85,10 +85,11 @@
 
 /* codec private data */
 struct wm8753_priv {
+	enum snd_soc_control_type control_type;
 	unsigned int sysclk;
 	unsigned int pcmclk;
-	struct snd_soc_codec codec;
 	u16 reg_cache[ARRAY_SIZE(wm8753_reg)];
+	int dai_func;
 };
 
 /*
@@ -228,6 +229,7 @@
 {
 	struct snd_soc_codec *codec =  snd_kcontrol_chip(kcontrol);
 	int mode = wm8753_read_reg_cache(codec, WM8753_IOCTL);
+	struct wm8753_priv *wm8753 = snd_soc_codec_get_drvdata(codec);
 
 	if (((mode & 0xc) >> 2) == ucontrol->value.integer.value[0])
 		return 0;
@@ -235,8 +237,7 @@
 	mode &= 0xfff3;
 	mode |= (ucontrol->value.integer.value[0] << 2);
 
-	wm8753_write(codec, WM8753_IOCTL, mode);
-	wm8753_set_dai_mode(codec, ucontrol->value.integer.value[0]);
+	wm8753->dai_func =  ucontrol->value.integer.value[0];
 	return 1;
 }
 
@@ -904,6 +905,13 @@
 	return 0;
 }
 
+static int wm8753_pcm_startup(struct snd_pcm_substream *substream,
+				struct snd_soc_dai *dai)
+{
+	wm8753_set_dai_mode(dai->codec, dai, 0);
+	return 0;
+}
+
 /*
  * Set PCM DAI bit size and sample rate.
  */
@@ -912,8 +920,7 @@
 				struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct wm8753_priv *wm8753 = snd_soc_codec_get_drvdata(codec);
 	u16 voice = wm8753_read_reg_cache(codec, WM8753_PCM) & 0x01f3;
 	u16 srate = wm8753_read_reg_cache(codec, WM8753_SRATE1) & 0x017f;
@@ -1138,6 +1145,13 @@
 	return 0;
 }
 
+static int wm8753_i2s_startup(struct snd_pcm_substream *substream,
+				struct snd_soc_dai *dai)
+{
+	wm8753_set_dai_mode(dai->codec, dai, 1);
+	return 0;
+}
+
 /*
  * Set PCM DAI bit size and sample rate.
  */
@@ -1146,8 +1160,7 @@
 				struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct wm8753_priv *wm8753 = snd_soc_codec_get_drvdata(codec);
 	u16 srate = wm8753_read_reg_cache(codec, WM8753_SRATE1) & 0x01c0;
 	u16 hifi = wm8753_read_reg_cache(codec, WM8753_HIFI) & 0x01f3;
@@ -1240,12 +1253,12 @@
 {
 	struct snd_soc_codec *codec = dai->codec;
 	u16 mute_reg = wm8753_read_reg_cache(codec, WM8753_DAC) & 0xfff7;
+	struct wm8753_priv *wm8753 = snd_soc_codec_get_drvdata(codec);
 
 	/* the digital mute covers the HiFi and Voice DAC's on the WM8753.
 	 * make sure we check if they are not both active when we mute */
-	if (mute && dai->id == 1) {
-		if (!wm8753_dai[WM8753_DAI_VOICE].playback.active ||
-			!wm8753_dai[WM8753_DAI_HIFI].playback.active)
+	if (mute && wm8753->dai_func == 1) {
+		if (!codec->active)
 			wm8753_write(codec, WM8753_DAC, mute_reg | 0x8);
 	} else {
 		if (mute)
@@ -1303,6 +1316,7 @@
  * 4. Voice disabled - HIFI over HIFI, uses voice DAI LRC for capture
  */
 static struct snd_soc_dai_ops wm8753_dai_ops_hifi_mode1 = {
+	.startup = wm8753_i2s_startup,
 	.hw_params	= wm8753_i2s_hw_params,
 	.digital_mute	= wm8753_mute,
 	.set_fmt	= wm8753_mode1h_set_dai_fmt,
@@ -1312,6 +1326,7 @@
 };
 
 static struct snd_soc_dai_ops wm8753_dai_ops_voice_mode1 = {
+	.startup = wm8753_pcm_startup,
 	.hw_params	= wm8753_pcm_hw_params,
 	.digital_mute	= wm8753_mute,
 	.set_fmt	= wm8753_mode1v_set_dai_fmt,
@@ -1321,6 +1336,7 @@
 };
 
 static struct snd_soc_dai_ops wm8753_dai_ops_voice_mode2 = {
+	.startup = wm8753_pcm_startup,
 	.hw_params	= wm8753_pcm_hw_params,
 	.digital_mute	= wm8753_mute,
 	.set_fmt	= wm8753_mode2_set_dai_fmt,
@@ -1330,6 +1346,7 @@
 };
 
 static struct snd_soc_dai_ops wm8753_dai_ops_hifi_mode3	= {
+	.startup = wm8753_i2s_startup,
 	.hw_params	= wm8753_i2s_hw_params,
 	.digital_mute	= wm8753_mute,
 	.set_fmt	= wm8753_mode3_4_set_dai_fmt,
@@ -1339,6 +1356,7 @@
 };
 
 static struct snd_soc_dai_ops wm8753_dai_ops_hifi_mode4	= {
+	.startup = wm8753_i2s_startup,
 	.hw_params	= wm8753_i2s_hw_params,
 	.digital_mute	= wm8753_mute,
 	.set_fmt	= wm8753_mode3_4_set_dai_fmt,
@@ -1347,10 +1365,9 @@
 	.set_sysclk	= wm8753_set_dai_sysclk,
 };
 
-static const struct snd_soc_dai wm8753_all_dai[] = {
+static struct snd_soc_dai_driver wm8753_all_dai[] = {
 /* DAI HiFi mode 1 */
-{	.name = "WM8753 HiFi",
-	.id = 1,
+{	.name = "wm8753-hifi",
 	.playback = {
 		.stream_name = "HiFi Playback",
 		.channels_min = 1,
@@ -1366,8 +1383,7 @@
 	.ops = &wm8753_dai_ops_hifi_mode1,
 },
 /* DAI Voice mode 1 */
-{	.name = "WM8753 Voice",
-	.id = 1,
+{	.name = "wm8753-voice",
 	.playback = {
 		.stream_name = "Voice Playback",
 		.channels_min = 1,
@@ -1383,12 +1399,10 @@
 	.ops = &wm8753_dai_ops_voice_mode1,
 },
 /* DAI HiFi mode 2 - dummy */
-{	.name = "WM8753 HiFi",
-	.id = 2,
+{	.name = "wm8753-hifi",
 },
 /* DAI Voice mode 2 */
-{	.name = "WM8753 Voice",
-	.id = 2,
+{	.name = "wm8753-voice",
 	.playback = {
 		.stream_name = "Voice Playback",
 		.channels_min = 1,
@@ -1404,8 +1418,7 @@
 	.ops = &wm8753_dai_ops_voice_mode2,
 },
 /* DAI HiFi mode 3 */
-{	.name = "WM8753 HiFi",
-	.id = 3,
+{	.name = "wm8753-hifi",
 	.playback = {
 		.stream_name = "HiFi Playback",
 		.channels_min = 1,
@@ -1421,12 +1434,10 @@
 	.ops = &wm8753_dai_ops_hifi_mode3,
 },
 /* DAI Voice mode 3 - dummy */
-{	.name = "WM8753 Voice",
-	.id = 3,
+{	.name = "wm8753-voice",
 },
 /* DAI HiFi mode 4 */
-{	.name = "WM8753 HiFi",
-	.id = 4,
+{	.name = "wm8753-hifi",
 	.playback = {
 		.stream_name = "HiFi Playback",
 		.channels_min = 1,
@@ -1442,58 +1453,31 @@
 	.ops = &wm8753_dai_ops_hifi_mode4,
 },
 /* DAI Voice mode 4 - dummy */
-{	.name = "WM8753 Voice",
-	.id = 4,
+{	.name = "wm8753-voice",
 },
 };
 
-struct snd_soc_dai wm8753_dai[] = {
+static struct snd_soc_dai_driver wm8753_dai[] = {
 	{
-		.name = "WM8753 DAI 0",
+		.name = "wm8753-aif0",
 	},
 	{
-		.name = "WM8753 DAI 1",
+		.name = "wm8753-aif1",
 	},
 };
-EXPORT_SYMBOL_GPL(wm8753_dai);
 
-static void wm8753_set_dai_mode(struct snd_soc_codec *codec, unsigned int mode)
+static void wm8753_set_dai_mode(struct snd_soc_codec *codec,
+		struct snd_soc_dai *dai, unsigned int hifi)
 {
-	if (mode < 4) {
-		int playback_active, capture_active, codec_active, pop_wait;
-		void *private_data;
-		struct list_head list;
+	struct wm8753_priv *wm8753 = snd_soc_codec_get_drvdata(codec);
 
-		playback_active = wm8753_dai[0].playback.active;
-		capture_active = wm8753_dai[0].capture.active;
-		codec_active = wm8753_dai[0].active;
-		private_data = wm8753_dai[0].private_data;
-		pop_wait = wm8753_dai[0].pop_wait;
-		list = wm8753_dai[0].list;
-		wm8753_dai[0] = wm8753_all_dai[mode << 1];
-		wm8753_dai[0].playback.active = playback_active;
-		wm8753_dai[0].capture.active = capture_active;
-		wm8753_dai[0].active = codec_active;
-		wm8753_dai[0].private_data = private_data;
-		wm8753_dai[0].pop_wait = pop_wait;
-		wm8753_dai[0].list = list;
-
-		playback_active = wm8753_dai[1].playback.active;
-		capture_active = wm8753_dai[1].capture.active;
-		codec_active = wm8753_dai[1].active;
-		private_data = wm8753_dai[1].private_data;
-		pop_wait = wm8753_dai[1].pop_wait;
-		list = wm8753_dai[1].list;
-		wm8753_dai[1] = wm8753_all_dai[(mode << 1) + 1];
-		wm8753_dai[1].playback.active = playback_active;
-		wm8753_dai[1].capture.active = capture_active;
-		wm8753_dai[1].active = codec_active;
-		wm8753_dai[1].private_data = private_data;
-		wm8753_dai[1].pop_wait = pop_wait;
-		wm8753_dai[1].list = list;
+	if (wm8753->dai_func < 4) {
+		if (hifi)
+			dai->driver = &wm8753_all_dai[wm8753->dai_func << 1];
+		else
+			dai->driver = &wm8753_all_dai[(wm8753->dai_func << 1) + 1];
 	}
-	wm8753_dai[0].codec = codec;
-	wm8753_dai[1].codec = codec;
+	wm8753_write(codec, WM8753_IOCTL, wm8753->dai_func);
 }
 
 static void wm8753_work(struct work_struct *work)
@@ -1503,19 +1487,14 @@
 	wm8753_set_bias_level(codec, codec->bias_level);
 }
 
-static int wm8753_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8753_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8753_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int wm8753_resume(struct platform_device *pdev)
+static int wm8753_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	int i;
 	u8 data[2];
 	u16 *cache = codec->reg_cache;
@@ -1547,41 +1526,6 @@
 	return 0;
 }
 
-static struct snd_soc_codec *wm8753_codec;
-
-static int wm8753_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
-
-	if (!wm8753_codec) {
-		dev_err(&pdev->dev, "WM8753 codec not yet registered\n");
-		return -EINVAL;
-	}
-
-	socdev->card->codec = wm8753_codec;
-	codec = wm8753_codec;
-
-	wm8753_set_dai_mode(codec, 0);
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "wm8753: failed to create pcms\n");
-		goto pcm_err;
-	}
-
-	snd_soc_add_controls(codec, wm8753_snd_controls,
-			     ARRAY_SIZE(wm8753_snd_controls));
-	wm8753_add_widgets(codec);
-
-	return 0;
-
-pcm_err:
-	return ret;
-}
-
 /*
  * This function forces any delayed work to be queued and run.
  */
@@ -1601,62 +1545,28 @@
 	return ret;
 }
 
-/* power down chip */
-static int wm8753_remove(struct platform_device *pdev)
+static int wm8753_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
+	struct wm8753_priv *wm8753 = snd_soc_codec_get_drvdata(codec);
+	int ret = 0, reg;
 
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8753 = {
-	.probe = 	wm8753_probe,
-	.remove = 	wm8753_remove,
-	.suspend = 	wm8753_suspend,
-	.resume =	wm8753_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8753);
-
-static int wm8753_register(struct wm8753_priv *wm8753)
-{
-	int ret, i;
-	struct snd_soc_codec *codec = &wm8753->codec;
-	u16 reg;
-
-	if (wm8753_codec) {
-		dev_err(codec->dev, "Multiple WM8753 devices not supported\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->name = "WM8753";
-	codec->owner = THIS_MODULE;
-	codec->read = wm8753_read_reg_cache;
-	codec->write = wm8753_write;
-	codec->bias_level = SND_SOC_BIAS_STANDBY;
-	codec->set_bias_level = wm8753_set_bias_level;
-	codec->dai = wm8753_dai;
-	codec->num_dai = 2;
-	codec->reg_cache_size = ARRAY_SIZE(wm8753->reg_cache) + 1;
-	codec->reg_cache = &wm8753->reg_cache;
-	snd_soc_codec_set_drvdata(codec, wm8753);
-
-	memcpy(codec->reg_cache, wm8753_reg, sizeof(wm8753->reg_cache));
 	INIT_DELAYED_WORK(&codec->delayed_work, wm8753_work);
 
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9, wm8753->control_type);
+	if (ret < 0) {
+		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
+		return ret;
+	}
+
 	ret = wm8753_reset(codec);
 	if (ret < 0) {
-		dev_err(codec->dev, "Failed to issue reset\n");
-		goto err;
+		dev_err(codec->dev, "Failed to issue reset: %d\n", ret);
+		return ret;
 	}
 
+	wm8753_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
+	wm8753->dai_func = 0;
+
 	/* charge output caps */
 	wm8753_set_bias_level(codec, SND_SOC_BIAS_PREPARE);
 	schedule_delayed_work(&codec->delayed_work,
@@ -1684,70 +1594,97 @@
 	reg = wm8753_read_reg_cache(codec, WM8753_RINVOL);
 	wm8753_write(codec, WM8753_RINVOL, reg | 0x0100);
 
-	wm8753_codec = codec;
-
-	for (i = 0; i < ARRAY_SIZE(wm8753_dai); i++)
-		wm8753_dai[i].dev = codec->dev;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err;
-	}
-
-	ret = snd_soc_register_dais(&wm8753_dai[0], ARRAY_SIZE(wm8753_dai));
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAIs: %d\n", ret);
-		goto err_codec;
-	}
+	snd_soc_add_controls(codec, wm8753_snd_controls,
+			     ARRAY_SIZE(wm8753_snd_controls));
+	wm8753_add_widgets(codec);
 
 	return 0;
+}
 
-err_codec:
+/* power down chip */
+static int wm8753_remove(struct snd_soc_codec *codec)
+{
 	run_delayed_work(&codec->delayed_work);
-	snd_soc_unregister_codec(codec);
-err:
-	kfree(wm8753);
-	return ret;
+	wm8753_set_bias_level(codec, SND_SOC_BIAS_OFF);
+
+	return 0;
 }
 
-static void wm8753_unregister(struct wm8753_priv *wm8753)
-{
-	wm8753_set_bias_level(&wm8753->codec, SND_SOC_BIAS_OFF);
-	run_delayed_work(&wm8753->codec.delayed_work);
-	snd_soc_unregister_dais(&wm8753_dai[0], ARRAY_SIZE(wm8753_dai));
-	snd_soc_unregister_codec(&wm8753->codec);
-	kfree(wm8753);
-	wm8753_codec = NULL;
-}
+static struct snd_soc_codec_driver soc_codec_dev_wm8753 = {
+	.probe =	wm8753_probe,
+	.remove =	wm8753_remove,
+	.suspend =	wm8753_suspend,
+	.resume =	wm8753_resume,
+	.set_bias_level = wm8753_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8753_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8753_reg,
+};
 
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-
-static int wm8753_i2c_probe(struct i2c_client *i2c,
-			    const struct i2c_device_id *id)
+#if defined(CONFIG_SPI_MASTER)
+static int __devinit wm8753_spi_probe(struct spi_device *spi)
 {
-	struct snd_soc_codec *codec;
 	struct wm8753_priv *wm8753;
+	int ret;
 
 	wm8753 = kzalloc(sizeof(struct wm8753_priv), GFP_KERNEL);
 	if (wm8753 == NULL)
 		return -ENOMEM;
 
-        codec = &wm8753->codec;
-        codec->hw_write = (hw_write_t)i2c_master_send;
-        codec->control_data = i2c;
-        i2c_set_clientdata(i2c, wm8753);
+	wm8753->control_type = SND_SOC_SPI;
+	spi_set_drvdata(spi, wm8753);
 
-        codec->dev = &i2c->dev;
-
-	return wm8753_register(wm8753);
+	ret = snd_soc_register_codec(&spi->dev,
+			&soc_codec_dev_wm8753, wm8753_dai, ARRAY_SIZE(wm8753_dai));
+	if (ret < 0)
+		kfree(wm8753);
+	return ret;
 }
 
-static int wm8753_i2c_remove(struct i2c_client *client)
+static int __devexit wm8753_spi_remove(struct spi_device *spi)
 {
-        struct wm8753_priv *wm8753 = i2c_get_clientdata(client);
-        wm8753_unregister(wm8753);
-        return 0;
+	snd_soc_unregister_codec(&spi->dev);
+	kfree(spi_get_drvdata(spi));
+	return 0;
+}
+
+static struct spi_driver wm8753_spi_driver = {
+	.driver = {
+		.name	= "wm8753-codec",
+		.bus	= &spi_bus_type,
+		.owner	= THIS_MODULE,
+	},
+	.probe		= wm8753_spi_probe,
+	.remove		= __devexit_p(wm8753_spi_remove),
+};
+#endif /* CONFIG_SPI_MASTER */
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+static __devinit int wm8753_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
+{
+	struct wm8753_priv *wm8753;
+	int ret;
+
+	wm8753 = kzalloc(sizeof(struct wm8753_priv), GFP_KERNEL);
+	if (wm8753 == NULL)
+		return -ENOMEM;
+
+	i2c_set_clientdata(i2c, wm8753);
+	wm8753->control_type = SND_SOC_I2C;
+
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8753, wm8753_dai, ARRAY_SIZE(wm8753_dai));
+	if (ret < 0)
+		kfree(wm8753);
+	return ret;
+}
+
+static __devexit int wm8753_i2c_remove(struct i2c_client *client)
+{
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
+	return 0;
 }
 
 static const struct i2c_device_id wm8753_i2c_id[] = {
@@ -1758,91 +1695,33 @@
 
 static struct i2c_driver wm8753_i2c_driver = {
 	.driver = {
-		.name = "wm8753",
+		.name = "wm8753-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8753_i2c_probe,
-	.remove =   wm8753_i2c_remove,
+	.remove =   __devexit_p(wm8753_i2c_remove),
 	.id_table = wm8753_i2c_id,
 };
 #endif
 
-#if defined(CONFIG_SPI_MASTER)
-static int wm8753_spi_write(struct spi_device *spi, const char *data, int len)
-{
-	struct spi_transfer t;
-	struct spi_message m;
-	u8 msg[2];
-
-	if (len <= 0)
-		return 0;
-
-	msg[0] = data[0];
-	msg[1] = data[1];
-
-	spi_message_init(&m);
-	memset(&t, 0, (sizeof t));
-
-	t.tx_buf = &msg[0];
-	t.len = len;
-
-	spi_message_add_tail(&t, &m);
-	spi_sync(spi, &m);
-
-	return len;
-}
-
-static int __devinit wm8753_spi_probe(struct spi_device *spi)
-{
-	struct snd_soc_codec *codec;
-	struct wm8753_priv *wm8753;
-
-	wm8753 = kzalloc(sizeof(struct wm8753_priv), GFP_KERNEL);
-	if (wm8753 == NULL)
-		return -ENOMEM;
-
-	codec = &wm8753->codec;
-	codec->control_data = spi;
-	codec->hw_write = (hw_write_t)wm8753_spi_write;
-	codec->dev = &spi->dev;
-
-	dev_set_drvdata(&spi->dev, wm8753);
-
-	return wm8753_register(wm8753);
-}
-
-static int __devexit wm8753_spi_remove(struct spi_device *spi)
-{
-	struct wm8753_priv *wm8753 = dev_get_drvdata(&spi->dev);
-	wm8753_unregister(wm8753);
-	return 0;
-}
-
-static struct spi_driver wm8753_spi_driver = {
-	.driver = {
-		.name	= "wm8753",
-		.bus	= &spi_bus_type,
-		.owner	= THIS_MODULE,
-	},
-	.probe		= wm8753_spi_probe,
-	.remove		= __devexit_p(wm8753_spi_remove),
-};
-#endif
-
 static int __init wm8753_modinit(void)
 {
-	int ret;
+	int ret = 0;
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	ret = i2c_add_driver(&wm8753_i2c_driver);
-	if (ret != 0)
-		pr_err("Failed to register WM8753 I2C driver: %d\n", ret);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register wm8753 I2C driver: %d\n",
+		       ret);
+	}
 #endif
 #if defined(CONFIG_SPI_MASTER)
 	ret = spi_register_driver(&wm8753_spi_driver);
-	if (ret != 0)
-		pr_err("Failed to register WM8753 SPI driver: %d\n", ret);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register wm8753 SPI driver: %d\n",
+		       ret);
+	}
 #endif
-	return 0;
+	return ret;
 }
 module_init(wm8753_modinit);
 
diff --git a/sound/soc/codecs/wm8753.h b/sound/soc/codecs/wm8753.h
index 57b2ba2..94edac1 100644
--- a/sound/soc/codecs/wm8753.h
+++ b/sound/soc/codecs/wm8753.h
@@ -115,7 +115,4 @@
 #define WM8753_DAI_HIFI		0
 #define WM8753_DAI_VOICE		1
 
-extern struct snd_soc_dai wm8753_dai[2];
-extern struct snd_soc_codec_device soc_codec_dev_wm8753;
-
 #endif
diff --git a/sound/soc/codecs/wm8776.c b/sound/soc/codecs/wm8776.c
index f8154e6..c0b6917 100644
--- a/sound/soc/codecs/wm8776.c
+++ b/sound/soc/codecs/wm8776.c
@@ -31,20 +31,13 @@
 
 #include "wm8776.h"
 
-static struct snd_soc_codec *wm8776_codec;
-struct snd_soc_codec_device soc_codec_dev_wm8776;
-
 /* codec private data */
 struct wm8776_priv {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
 	u16 reg_cache[WM8776_CACHEREGNUM];
 	int sysclk[2];
 };
 
-#ifdef CONFIG_SPI_MASTER
-static int wm8776_spi_write(struct spi_device *spi, const char *data, int len);
-#endif
-
 static const u16 wm8776_reg[WM8776_CACHEREGNUM] = {
 	0x79, 0x79, 0x79, 0xff, 0xff,  /* 4 */
 	0xff, 0x00, 0x90, 0x00, 0x00,  /* 9 */
@@ -144,7 +137,7 @@
 	struct snd_soc_codec *codec = dai->codec;
 	int reg, iface, master;
 
-	switch (dai->id) {
+	switch (dai->driver->id) {
 	case WM8776_DAI_DAC:
 		reg = WM8776_DACIFCTRL;
 		master = 0x80;
@@ -226,7 +219,7 @@
 
 	iface = 0;
 
-	switch (dai->id) {
+	switch (dai->driver->id) {
 	case WM8776_DAI_DAC:
 		iface_reg = WM8776_DACIFCTRL;
 		master = 0x80;
@@ -260,7 +253,7 @@
 	/* Only need to set MCLK/LRCLK ratio if we're master */
 	if (snd_soc_read(codec, WM8776_MSTRCTRL) & master) {
 		for (i = 0; i < ARRAY_SIZE(mclk_ratios); i++) {
-			if (wm8776->sysclk[dai->id] / params_rate(params)
+			if (wm8776->sysclk[dai->driver->id] / params_rate(params)
 			    == mclk_ratios[i])
 				break;
 		}
@@ -268,7 +261,7 @@
 		if (i == ARRAY_SIZE(mclk_ratios)) {
 			dev_err(codec->dev,
 				"Unable to configure MCLK ratio %d/%d\n",
-				wm8776->sysclk[dai->id], params_rate(params));
+				wm8776->sysclk[dai->driver->id], params_rate(params));
 			return -EINVAL;
 		}
 
@@ -298,9 +291,9 @@
 	struct snd_soc_codec *codec = dai->codec;
 	struct wm8776_priv *wm8776 = snd_soc_codec_get_drvdata(codec);
 
-	BUG_ON(dai->id >= ARRAY_SIZE(wm8776->sysclk));
+	BUG_ON(dai->driver->id >= ARRAY_SIZE(wm8776->sysclk));
 
-	wm8776->sysclk[dai->id] = freq;
+	wm8776->sysclk[dai->driver->id] = freq;
 
 	return 0;
 }
@@ -350,10 +343,10 @@
 	.set_sysclk     = wm8776_set_sysclk,
 };
 
-struct snd_soc_dai wm8776_dai[] = {
+static struct snd_soc_dai_driver wm8776_dai[] = {
 	{
-		.name = "WM8776 Playback",
-		.id = WM8776_DAI_DAC,
+		.name = "wm8776-hifi-playback",
+		.id	= WM8776_DAI_DAC,
 		.playback = {
 			.stream_name = "Playback",
 			.channels_min = 2,
@@ -364,8 +357,8 @@
 		.ops = &wm8776_dac_ops,
 	},
 	{
-		.name = "WM8776 Capture",
-		.id = WM8776_DAI_ADC,
+		.name = "wm8776-hifi-capture",
+		.id	= WM8776_DAI_ADC,
 		.capture = {
 			.stream_name = "Capture",
 			.channels_min = 2,
@@ -376,23 +369,17 @@
 		.ops = &wm8776_adc_ops,
 	},
 };
-EXPORT_SYMBOL_GPL(wm8776_dai);
 
 #ifdef CONFIG_PM
-static int wm8776_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8776_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8776_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
 	return 0;
 }
 
-static int wm8776_resume(struct platform_device *pdev)
+static int wm8776_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	int i;
 	u8 data[2];
 	u16 *cache = codec->reg_cache;
@@ -415,99 +402,21 @@
 #define wm8776_resume NULL
 #endif
 
-static int wm8776_probe(struct platform_device *pdev)
+static int wm8776_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
+	struct wm8776_priv *wm8776 = snd_soc_codec_get_drvdata(codec);
 	int ret = 0;
 
-	if (wm8776_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8776_codec;
-	codec = wm8776_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
-	snd_soc_add_controls(codec, wm8776_snd_controls,
-			     ARRAY_SIZE(wm8776_snd_controls));
-	snd_soc_dapm_new_controls(codec, wm8776_dapm_widgets,
-				  ARRAY_SIZE(wm8776_dapm_widgets));
-	snd_soc_dapm_add_routes(codec, routes, ARRAY_SIZE(routes));
-
-	return ret;
-
-pcm_err:
-	return ret;
-}
-
-/* power down chip */
-static int wm8776_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8776 = {
-	.probe = 	wm8776_probe,
-	.remove = 	wm8776_remove,
-	.suspend = 	wm8776_suspend,
-	.resume =	wm8776_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8776);
-
-static int wm8776_register(struct wm8776_priv *wm8776,
-			   enum snd_soc_control_type control)
-{
-	int ret, i;
-	struct snd_soc_codec *codec = &wm8776->codec;
-
-	if (wm8776_codec) {
-		dev_err(codec->dev, "Another WM8776 is registered\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm8776);
-	codec->name = "WM8776";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8776_set_bias_level;
-	codec->dai = wm8776_dai;
-	codec->num_dai = ARRAY_SIZE(wm8776_dai);
-	codec->reg_cache_size = WM8776_CACHEREGNUM;
-	codec->reg_cache = &wm8776->reg_cache;
-
-	memcpy(codec->reg_cache, wm8776_reg, sizeof(wm8776_reg));
-
-	ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9, wm8776->control_type);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
-	for (i = 0; i < ARRAY_SIZE(wm8776_dai); i++)
-		wm8776_dai[i].dev = codec->dev;
-
 	ret = wm8776_reset(codec);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to issue reset: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	wm8776_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
@@ -517,94 +426,63 @@
 	snd_soc_update_bits(codec, WM8776_HPRVOL, 0x100, 0x100);
 	snd_soc_update_bits(codec, WM8776_DACRVOL, 0x100, 0x100);
 
-	wm8776_codec = codec;
+	snd_soc_add_controls(codec, wm8776_snd_controls,
+			     ARRAY_SIZE(wm8776_snd_controls));
+	snd_soc_dapm_new_controls(codec, wm8776_dapm_widgets,
+				  ARRAY_SIZE(wm8776_dapm_widgets));
+	snd_soc_dapm_add_routes(codec, routes, ARRAY_SIZE(routes));
 
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err;
-	}
-
-	ret = snd_soc_register_dais(wm8776_dai, ARRAY_SIZE(wm8776_dai));
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAIs: %d\n", ret);
-		goto err_codec;
-	}
-
-	return 0;
-
-err_codec:
-	snd_soc_unregister_codec(codec);
-err:
-	kfree(wm8776);
 	return ret;
 }
 
-static void wm8776_unregister(struct wm8776_priv *wm8776)
+/* power down chip */
+static int wm8776_remove(struct snd_soc_codec *codec)
 {
-	wm8776_set_bias_level(&wm8776->codec, SND_SOC_BIAS_OFF);
-	snd_soc_unregister_dais(wm8776_dai, ARRAY_SIZE(wm8776_dai));
-	snd_soc_unregister_codec(&wm8776->codec);
-	kfree(wm8776);
-	wm8776_codec = NULL;
+	wm8776_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_wm8776 = {
+	.probe = 	wm8776_probe,
+	.remove = 	wm8776_remove,
+	.suspend = 	wm8776_suspend,
+	.resume =	wm8776_resume,
+	.set_bias_level = wm8776_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8776_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8776_reg,
+};
+
 #if defined(CONFIG_SPI_MASTER)
-static int wm8776_spi_write(struct spi_device *spi, const char *data, int len)
-{
-	struct spi_transfer t;
-	struct spi_message m;
-	u8 msg[2];
-
-	if (len <= 0)
-		return 0;
-
-	msg[0] = data[0];
-	msg[1] = data[1];
-
-	spi_message_init(&m);
-	memset(&t, 0, (sizeof t));
-
-	t.tx_buf = &msg[0];
-	t.len = len;
-
-	spi_message_add_tail(&t, &m);
-	spi_sync(spi, &m);
-
-	return len;
-}
-
 static int __devinit wm8776_spi_probe(struct spi_device *spi)
 {
-	struct snd_soc_codec *codec;
 	struct wm8776_priv *wm8776;
+	int ret;
 
 	wm8776 = kzalloc(sizeof(struct wm8776_priv), GFP_KERNEL);
 	if (wm8776 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8776->codec;
-	codec->control_data = spi;
-	codec->hw_write = (hw_write_t)wm8776_spi_write;
-	codec->dev = &spi->dev;
+	wm8776->control_type = SND_SOC_SPI;
+	spi_set_drvdata(spi, wm8776);
 
-	dev_set_drvdata(&spi->dev, wm8776);
-
-	return wm8776_register(wm8776, SND_SOC_SPI);
+	ret = snd_soc_register_codec(&spi->dev,
+			&soc_codec_dev_wm8776, wm8776_dai, ARRAY_SIZE(wm8776_dai));
+	if (ret < 0)
+		kfree(wm8776);
+	return ret;
 }
 
 static int __devexit wm8776_spi_remove(struct spi_device *spi)
 {
-	struct wm8776_priv *wm8776 = dev_get_drvdata(&spi->dev);
-
-	wm8776_unregister(wm8776);
-
+	snd_soc_unregister_codec(&spi->dev);
+	kfree(spi_get_drvdata(spi));
 	return 0;
 }
 
 static struct spi_driver wm8776_spi_driver = {
 	.driver = {
-		.name	= "wm8776",
+		.name	= "wm8776-codec",
 		.bus	= &spi_bus_type,
 		.owner	= THIS_MODULE,
 	},
@@ -618,27 +496,26 @@
 				      const struct i2c_device_id *id)
 {
 	struct wm8776_priv *wm8776;
-	struct snd_soc_codec *codec;
+	int ret;
 
 	wm8776 = kzalloc(sizeof(struct wm8776_priv), GFP_KERNEL);
 	if (wm8776 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8776->codec;
-	codec->hw_write = (hw_write_t)i2c_master_send;
-
 	i2c_set_clientdata(i2c, wm8776);
-	codec->control_data = i2c;
+	wm8776->control_type = SND_SOC_I2C;
 
-	codec->dev = &i2c->dev;
-
-	return wm8776_register(wm8776, SND_SOC_I2C);
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8776, wm8776_dai, ARRAY_SIZE(wm8776_dai));
+	if (ret < 0)
+		kfree(wm8776);
+	return ret;
 }
 
 static __devexit int wm8776_i2c_remove(struct i2c_client *client)
 {
-	struct wm8776_priv *wm8776 = i2c_get_clientdata(client);
-	wm8776_unregister(wm8776);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -650,7 +527,7 @@
 
 static struct i2c_driver wm8776_i2c_driver = {
 	.driver = {
-		.name = "wm8776",
+		.name = "wm8776-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8776_i2c_probe,
@@ -661,22 +538,22 @@
 
 static int __init wm8776_modinit(void)
 {
-	int ret;
+	int ret = 0;
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	ret = i2c_add_driver(&wm8776_i2c_driver);
 	if (ret != 0) {
-		printk(KERN_ERR "Failed to register WM8776 I2C driver: %d\n",
+		printk(KERN_ERR "Failed to register wm8776 I2C driver: %d\n",
 		       ret);
 	}
 #endif
 #if defined(CONFIG_SPI_MASTER)
 	ret = spi_register_driver(&wm8776_spi_driver);
 	if (ret != 0) {
-		printk(KERN_ERR "Failed to register WM8776 SPI driver: %d\n",
+		printk(KERN_ERR "Failed to register wm8776 SPI driver: %d\n",
 		       ret);
 	}
 #endif
-	return 0;
+	return ret;
 }
 module_init(wm8776_modinit);
 
diff --git a/sound/soc/codecs/wm8776.h b/sound/soc/codecs/wm8776.h
index 6606d25..4cf1c8e 100644
--- a/sound/soc/codecs/wm8776.h
+++ b/sound/soc/codecs/wm8776.h
@@ -45,7 +45,4 @@
 #define WM8776_DAI_DAC 0
 #define WM8776_DAI_ADC 1
 
-extern struct snd_soc_dai wm8776_dai[];
-extern struct snd_soc_codec_device soc_codec_dev_wm8776;
-
 #endif
diff --git a/sound/soc/codecs/wm8900.c b/sound/soc/codecs/wm8900.c
index 5da17a7..25c8ccd 100644
--- a/sound/soc/codecs/wm8900.c
+++ b/sound/soc/codecs/wm8900.c
@@ -23,6 +23,7 @@
 #include <linux/delay.h>
 #include <linux/pm.h>
 #include <linux/i2c.h>
+#include <linux/spi/spi.h>
 #include <linux/platform_device.h>
 #include <linux/slab.h>
 #include <sound/core.h>
@@ -137,11 +138,8 @@
 
 #define WM8900_LRC_MASK 0xfc00
 
-struct snd_soc_codec_device soc_codec_dev_wm8900;
-
 struct wm8900_priv {
-	struct snd_soc_codec codec;
-
+	enum snd_soc_control_type control_type;
 	u16 reg_cache[WM8900_MAXREG];
 
 	u32 fll_in; /* FLL input frequency */
@@ -627,8 +625,7 @@
 	struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	u16 reg;
 
 	reg = snd_soc_read(codec, WM8900_REG_AUDIO1) & ~0x60;
@@ -1015,8 +1012,8 @@
 	.digital_mute	= wm8900_digital_mute,
 };
 
-struct snd_soc_dai wm8900_dai = {
-	.name = "WM8900 HiFi",
+static struct snd_soc_dai_driver wm8900_dai = {
+	.name = "wm8900-hifi",
 	.playback = {
 		.stream_name = "HiFi Playback",
 		.channels_min = 1,
@@ -1033,7 +1030,6 @@
 	 },
 	.ops = &wm8900_dai_ops,
 };
-EXPORT_SYMBOL_GPL(wm8900_dai);
 
 static int wm8900_set_bias_level(struct snd_soc_codec *codec,
 				 enum snd_soc_bias_level level)
@@ -1128,10 +1124,8 @@
 	return 0;
 }
 
-static int wm8900_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8900_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	struct wm8900_priv *wm8900 = snd_soc_codec_get_drvdata(codec);
 	int fll_out = wm8900->fll_out;
 	int fll_in  = wm8900->fll_in;
@@ -1140,7 +1134,7 @@
 	/* Stop the FLL in an orderly fashion */
 	ret = wm8900_set_fll(codec, 0, 0, 0);
 	if (ret != 0) {
-		dev_err(&pdev->dev, "Failed to stop FLL\n");
+		dev_err(codec->dev, "Failed to stop FLL\n");
 		return ret;
 	}
 
@@ -1152,10 +1146,8 @@
 	return 0;
 }
 
-static int wm8900_resume(struct platform_device *pdev)
+static int wm8900_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	struct wm8900_priv *wm8900 = snd_soc_codec_get_drvdata(codec);
 	u16 *cache;
 	int i, ret;
@@ -1176,7 +1168,7 @@
 
 		ret = wm8900_set_fll(codec, 0, fll_in, fll_out);
 		if (ret != 0) {
-			dev_err(&pdev->dev, "Failed to restart FLL\n");
+			dev_err(codec->dev, "Failed to restart FLL\n");
 			return ret;
 		}
 	}
@@ -1186,60 +1178,32 @@
 			snd_soc_write(codec, i, cache[i]);
 		kfree(cache);
 	} else
-		dev_err(&pdev->dev, "Unable to allocate register cache\n");
+		dev_err(codec->dev, "Unable to allocate register cache\n");
 
 	return 0;
 }
 
-static struct snd_soc_codec *wm8900_codec;
-
-static __devinit int wm8900_i2c_probe(struct i2c_client *i2c,
-				      const struct i2c_device_id *id)
+static int wm8900_probe(struct snd_soc_codec *codec)
 {
-	struct wm8900_priv *wm8900;
-	struct snd_soc_codec *codec;
-	unsigned int reg;
-	int ret;
+	struct wm8900_priv *wm8900 = snd_soc_codec_get_drvdata(codec);
+	int ret = 0, reg;
 
-	wm8900 = kzalloc(sizeof(struct wm8900_priv), GFP_KERNEL);
-	if (wm8900 == NULL)
-		return -ENOMEM;
-
-	codec = &wm8900->codec;
-	snd_soc_codec_set_drvdata(codec, wm8900);
-	codec->reg_cache = &wm8900->reg_cache[0];
-	codec->reg_cache_size = WM8900_MAXREG;
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->name = "WM8900";
-	codec->owner = THIS_MODULE;
-	codec->dai = &wm8900_dai;
-	codec->num_dai = 1;
-	codec->control_data = i2c;
-	codec->set_bias_level = wm8900_set_bias_level;
-	codec->volatile_register = wm8900_volatile_register;
-	codec->dev = &i2c->dev;
-
-	ret = snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_I2C);
+	ret = snd_soc_codec_set_cache_io(codec, 8, 16, wm8900->control_type);
 	if (ret != 0) {
-		dev_err(&i2c->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
+		return ret;
 	}
 
 	reg = snd_soc_read(codec, WM8900_REG_ID);
 	if (reg != 0x8900) {
-		dev_err(&i2c->dev, "Device is not a WM8900 - ID %x\n", reg);
-		ret = -ENODEV;
-		goto err;
+		dev_err(codec->dev, "Device is not a WM8900 - ID %x\n", reg);
+		return -ENODEV;
 	}
 
 	/* Read back from the chip */
 	reg = snd_soc_read(codec, WM8900_REG_POWER1);
 	reg = (reg >> 12) & 0xf;
-	dev_info(&i2c->dev, "WM8900 revision %d\n", reg);
+	dev_info(codec->dev, "WM8900 revision %d\n", reg);
 
 	wm8900_reset(codec);
 
@@ -1271,43 +1235,95 @@
 	/* Set the DAC and mixer output bias */
 	snd_soc_write(codec, WM8900_REG_OUTBIASCTL, 0x81);
 
-	wm8900_dai.dev = &i2c->dev;
+	snd_soc_add_controls(codec, wm8900_snd_controls,
+				ARRAY_SIZE(wm8900_snd_controls));
+	wm8900_add_widgets(codec);
 
-	wm8900_codec = codec;
+	return 0;
+}
 
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(&i2c->dev, "Failed to register codec: %d\n", ret);
-		goto err;
-	}
+/* power down chip */
+static int wm8900_remove(struct snd_soc_codec *codec)
+{
+	wm8900_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
+}
 
-	ret = snd_soc_register_dai(&wm8900_dai);
-	if (ret != 0) {
-		dev_err(&i2c->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
+static struct snd_soc_codec_driver soc_codec_dev_wm8900 = {
+	.probe =	wm8900_probe,
+	.remove =	wm8900_remove,
+	.suspend =	wm8900_suspend,
+	.resume =	wm8900_resume,
+	.set_bias_level = wm8900_set_bias_level,
+	.volatile_register = wm8900_volatile_register,
+	.reg_cache_size = ARRAY_SIZE(wm8900_reg_defaults),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8900_reg_defaults,
+};
 
+#if defined(CONFIG_SPI_MASTER)
+static int __devinit wm8900_spi_probe(struct spi_device *spi)
+{
+	struct wm8900_priv *wm8900;
+	int ret;
+
+	wm8900 = kzalloc(sizeof(struct wm8900_priv), GFP_KERNEL);
+	if (wm8900 == NULL)
+		return -ENOMEM;
+
+	wm8900->control_type = SND_SOC_SPI;
+	spi_set_drvdata(spi, wm8900);
+
+	ret = snd_soc_register_codec(&spi->dev,
+			&soc_codec_dev_wm8900, &wm8900_dai, 1);
+	if (ret < 0)
+		kfree(wm8900);
 	return ret;
+}
 
-err_codec:
-	snd_soc_unregister_codec(codec);
-err:
-	kfree(wm8900);
-	wm8900_codec = NULL;
+static int __devexit wm8900_spi_remove(struct spi_device *spi)
+{
+	snd_soc_unregister_codec(&spi->dev);
+	kfree(spi_get_drvdata(spi));
+	return 0;
+}
+
+static struct spi_driver wm8900_spi_driver = {
+	.driver = {
+		.name	= "wm8900-codec",
+		.bus	= &spi_bus_type,
+		.owner	= THIS_MODULE,
+	},
+	.probe		= wm8900_spi_probe,
+	.remove		= __devexit_p(wm8900_spi_remove),
+};
+#endif /* CONFIG_SPI_MASTER */
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+static __devinit int wm8900_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
+{
+	struct wm8900_priv *wm8900;
+	int ret;
+
+	wm8900 = kzalloc(sizeof(struct wm8900_priv), GFP_KERNEL);
+	if (wm8900 == NULL)
+		return -ENOMEM;
+
+	i2c_set_clientdata(i2c, wm8900);
+	wm8900->control_type = SND_SOC_I2C;
+
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8900, &wm8900_dai, 1);
+	if (ret < 0)
+		kfree(wm8900);
 	return ret;
 }
 
 static __devexit int wm8900_i2c_remove(struct i2c_client *client)
 {
-	snd_soc_unregister_dai(&wm8900_dai);
-	snd_soc_unregister_codec(wm8900_codec);
-
-	wm8900_set_bias_level(wm8900_codec, SND_SOC_BIAS_OFF);
-
-	wm8900_dai.dev = NULL;
-	kfree(snd_soc_codec_get_drvdata(wm8900_codec));
-	wm8900_codec = NULL;
-
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -1319,71 +1335,44 @@
 
 static struct i2c_driver wm8900_i2c_driver = {
 	.driver = {
-		.name = "WM8900",
+		.name = "wm8900-codec",
 		.owner = THIS_MODULE,
 	},
-	.probe = wm8900_i2c_probe,
-	.remove = __devexit_p(wm8900_i2c_remove),
+	.probe =    wm8900_i2c_probe,
+	.remove =   __devexit_p(wm8900_i2c_remove),
 	.id_table = wm8900_i2c_id,
 };
-
-static int wm8900_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
-
-	if (!wm8900_codec) {
-		dev_err(&pdev->dev, "I2C client not yet instantiated\n");
-		return -ENODEV;
-	}
-
-	codec = wm8900_codec;
-	socdev->card->codec = codec;
-
-	/* Register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(&pdev->dev, "Failed to register new PCMs\n");
-		goto pcm_err;
-	}
-
-	snd_soc_add_controls(codec, wm8900_snd_controls,
-				ARRAY_SIZE(wm8900_snd_controls));
-	wm8900_add_widgets(codec);
-
-pcm_err:
-	return ret;
-}
-
-/* power down chip */
-static int wm8900_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8900 = {
-	.probe = 	wm8900_probe,
-	.remove = 	wm8900_remove,
-	.suspend = 	wm8900_suspend,
-	.resume =	wm8900_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8900);
+#endif
 
 static int __init wm8900_modinit(void)
 {
-	return i2c_add_driver(&wm8900_i2c_driver);
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	ret = i2c_add_driver(&wm8900_i2c_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register wm8900 I2C driver: %d\n",
+		       ret);
+	}
+#endif
+#if defined(CONFIG_SPI_MASTER)
+	ret = spi_register_driver(&wm8900_spi_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register wm8900 SPI driver: %d\n",
+		       ret);
+	}
+#endif
+	return ret;
 }
 module_init(wm8900_modinit);
 
 static void __exit wm8900_exit(void)
 {
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	i2c_del_driver(&wm8900_i2c_driver);
+#endif
+#if defined(CONFIG_SPI_MASTER)
+	spi_unregister_driver(&wm8900_spi_driver);
+#endif
 }
 module_exit(wm8900_exit);
 
diff --git a/sound/soc/codecs/wm8900.h b/sound/soc/codecs/wm8900.h
index fd15007..583f257 100644
--- a/sound/soc/codecs/wm8900.h
+++ b/sound/soc/codecs/wm8900.h
@@ -52,7 +52,4 @@
 #define WM8900_DAC_CLKDIV_5_5 0x14
 #define WM8900_DAC_CLKDIV_6   0x18
 
-extern struct snd_soc_dai wm8900_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8900;
-
 #endif
diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c
index bf08282..622b602 100644
--- a/sound/soc/codecs/wm8903.c
+++ b/sound/soc/codecs/wm8903.c
@@ -213,10 +213,11 @@
 };
 
 struct wm8903_priv {
-	struct snd_soc_codec codec;
+
 	u16 reg_cache[ARRAY_SIZE(wm8903_reg_defaults)];
 
 	int sysclk;
+	int irq;
 
 	/* Reference counts */
 	int class_w_users;
@@ -252,7 +253,6 @@
 static int wm8903_run_sequence(struct snd_soc_codec *codec, unsigned int start)
 {
 	u16 reg[5];
-	struct i2c_client *i2c = codec->control_data;
 	struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
 
 	BUG_ON(start > 48);
@@ -262,7 +262,7 @@
 	snd_soc_write(codec, WM8903_WRITE_SEQUENCER_0,
 		      reg[0] | WM8903_WSEQ_ENA);
 
-	dev_dbg(&i2c->dev, "Starting sequence at %d\n", start);
+	dev_dbg(codec->dev, "Starting sequence at %d\n", start);
 
 	snd_soc_write(codec, WM8903_WRITE_SEQUENCER_3,
 		     start | WM8903_WSEQ_START);
@@ -277,7 +277,7 @@
 		reg[4] = snd_soc_read(codec, WM8903_WRITE_SEQUENCER_4);
 	} while (reg[4] & WM8903_WSEQ_BUSY);
 
-	dev_dbg(&i2c->dev, "Sequence complete\n");
+	dev_dbg(codec->dev, "Sequence complete\n");
 
 	/* Disable the sequencer again if we enabled it */
 	snd_soc_write(codec, WM8903_WRITE_SEQUENCER_0, reg[0]);
@@ -422,7 +422,6 @@
 	struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
 	struct snd_soc_codec *codec = widget->codec;
 	struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
-	struct i2c_client *i2c = codec->control_data;
 	u16 reg;
 	int ret;
 
@@ -431,7 +430,7 @@
 	/* Turn it off if we're about to enable bypass */
 	if (ucontrol->value.integer.value[0]) {
 		if (wm8903->class_w_users == 0) {
-			dev_dbg(&i2c->dev, "Disabling Class W\n");
+			dev_dbg(codec->dev, "Disabling Class W\n");
 			snd_soc_write(codec, WM8903_CLASS_W_0, reg &
 				     ~(WM8903_CP_DYN_FREQ | WM8903_CP_DYN_V));
 		}
@@ -444,14 +443,14 @@
 	/* If we've just disabled the last bypass path turn Class W on */
 	if (!ucontrol->value.integer.value[0]) {
 		if (wm8903->class_w_users == 1) {
-			dev_dbg(&i2c->dev, "Enabling Class W\n");
+			dev_dbg(codec->dev, "Enabling Class W\n");
 			snd_soc_write(codec, WM8903_CLASS_W_0, reg |
 				     WM8903_CP_DYN_FREQ | WM8903_CP_DYN_V);
 		}
 		wm8903->class_w_users--;
 	}
 
-	dev_dbg(&i2c->dev, "Bypass use count now %d\n",
+	dev_dbg(codec->dev, "Bypass use count now %d\n",
 		wm8903->class_w_users);
 
 	return ret;
@@ -935,7 +934,6 @@
 static int wm8903_set_bias_level(struct snd_soc_codec *codec,
 				 enum snd_soc_bias_level level)
 {
-	struct i2c_client *i2c = codec->control_data;
 	u16 reg, reg2;
 
 	switch (level) {
@@ -974,7 +972,7 @@
 			/* By default no bypass paths are enabled so
 			 * enable Class W support.
 			 */
-			dev_dbg(&i2c->dev, "Enabling Class W\n");
+			dev_dbg(codec->dev, "Enabling Class W\n");
 			snd_soc_write(codec, WM8903_CLASS_W_0, reg |
 				     WM8903_CP_DYN_FREQ | WM8903_CP_DYN_V);
 		}
@@ -1228,10 +1226,8 @@
 			  struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
-	struct i2c_client *i2c = codec->control_data;
 	struct snd_pcm_runtime *master_runtime;
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
@@ -1245,7 +1241,7 @@
 	if (wm8903->master_substream) {
 		master_runtime = wm8903->master_substream->runtime;
 
-		dev_dbg(&i2c->dev, "Constraining to %d bits\n",
+		dev_dbg(codec->dev, "Constraining to %d bits\n",
 			master_runtime->sample_bits);
 
 		snd_pcm_hw_constraint_minmax(substream->runtime,
@@ -1264,8 +1260,7 @@
 			    struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
@@ -1284,10 +1279,8 @@
 			    struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec =rtd->codec;
 	struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
-	struct i2c_client *i2c = codec->control_data;
 	int fs = params_rate(params);
 	int bclk;
 	int bclk_div;
@@ -1306,7 +1299,7 @@
 	u16 dac_digital1 = snd_soc_read(codec, WM8903_DAC_DIGITAL_1);
 
 	if (substream == wm8903->slave_substream) {
-		dev_dbg(&i2c->dev, "Ignoring hw_params for slave substream\n");
+		dev_dbg(codec->dev, "Ignoring hw_params for slave substream\n");
 		return 0;
 	}
 
@@ -1332,7 +1325,7 @@
 		switch (sample_rates[dsp_config].rate) {
 		case 88200:
 		case 96000:
-			dev_err(&i2c->dev, "%dHz unsupported by ADC\n",
+			dev_err(codec->dev, "%dHz unsupported by ADC\n",
 				fs);
 			return -EINVAL;
 
@@ -1340,7 +1333,7 @@
 			break;
 		}
 
-	dev_dbg(&i2c->dev, "DSP fs = %dHz\n", sample_rates[dsp_config].rate);
+	dev_dbg(codec->dev, "DSP fs = %dHz\n", sample_rates[dsp_config].rate);
 	clock1 &= ~WM8903_SAMPLE_RATE_MASK;
 	clock1 |= sample_rates[dsp_config].value;
 
@@ -1366,7 +1359,7 @@
 		return -EINVAL;
 	}
 
-	dev_dbg(&i2c->dev, "MCLK = %dHz, target sample rate = %dHz\n",
+	dev_dbg(codec->dev, "MCLK = %dHz, target sample rate = %dHz\n",
 		wm8903->sysclk, fs);
 
 	/* We may not have an MCLK which allows us to generate exactly
@@ -1401,12 +1394,12 @@
 	clock1 |= clk_sys_ratios[clk_config].rate << WM8903_CLK_SYS_RATE_SHIFT;
 	clock1 |= clk_sys_ratios[clk_config].mode << WM8903_CLK_SYS_MODE_SHIFT;
 
-	dev_dbg(&i2c->dev, "CLK_SYS_RATE=%x, CLK_SYS_MODE=%x div=%d\n",
+	dev_dbg(codec->dev, "CLK_SYS_RATE=%x, CLK_SYS_MODE=%x div=%d\n",
 		clk_sys_ratios[clk_config].rate,
 		clk_sys_ratios[clk_config].mode,
 		clk_sys_ratios[clk_config].div);
 
-	dev_dbg(&i2c->dev, "Actual CLK_SYS = %dHz\n", clk_sys);
+	dev_dbg(codec->dev, "Actual CLK_SYS = %dHz\n", clk_sys);
 
 	/* We may not get quite the right frequency if using
 	 * approximate clocks so look for the closest match that is
@@ -1428,7 +1421,7 @@
 	aif2 &= ~WM8903_BCLK_DIV_MASK;
 	aif3 &= ~WM8903_LRCLK_RATE_MASK;
 
-	dev_dbg(&i2c->dev, "BCLK ratio %d for %dHz - actual BCLK = %dHz\n",
+	dev_dbg(codec->dev, "BCLK ratio %d for %dHz - actual BCLK = %dHz\n",
 		bclk_divs[bclk_div].ratio / 10, bclk,
 		(clk_sys * 10) / bclk_divs[bclk_div].ratio);
 
@@ -1504,8 +1497,8 @@
 
 static irqreturn_t wm8903_irq(int irq, void *data)
 {
-	struct wm8903_priv *wm8903 = data;
-	struct snd_soc_codec *codec = &wm8903->codec;
+	struct snd_soc_codec *codec = data;
+	struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
 	int mic_report;
 	int int_pol;
 	int int_val = 0;
@@ -1586,8 +1579,8 @@
 	.set_sysclk	= wm8903_set_dai_sysclk,
 };
 
-struct snd_soc_dai wm8903_dai = {
-	.name = "WM8903",
+static struct snd_soc_dai_driver wm8903_dai = {
+	.name = "wm8903-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 2,
@@ -1605,23 +1598,16 @@
 	.ops = &wm8903_dai_ops,
 	.symmetric_rates = 1,
 };
-EXPORT_SYMBOL_GPL(wm8903_dai);
 
-static int wm8903_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8903_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8903_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
 	return 0;
 }
 
-static int wm8903_resume(struct platform_device *pdev)
+static int wm8903_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-	struct i2c_client *i2c = codec->control_data;
 	int i;
 	u16 *reg_cache = codec->reg_cache;
 	u16 *tmp_cache = kmemdup(reg_cache, sizeof(wm8903_reg_defaults),
@@ -1637,65 +1623,37 @@
 				snd_soc_write(codec, i, tmp_cache[i]);
 		kfree(tmp_cache);
 	} else {
-		dev_err(&i2c->dev, "Failed to allocate temporary cache\n");
+		dev_err(codec->dev, "Failed to allocate temporary cache\n");
 	}
 
 	return 0;
 }
 
-static struct snd_soc_codec *wm8903_codec;
-
-static __devinit int wm8903_i2c_probe(struct i2c_client *i2c,
-				      const struct i2c_device_id *id)
+static int wm8903_probe(struct snd_soc_codec *codec)
 {
-	struct wm8903_platform_data *pdata = dev_get_platdata(&i2c->dev);
-	struct wm8903_priv *wm8903;
-	struct snd_soc_codec *codec;
+	struct wm8903_platform_data *pdata = dev_get_platdata(codec->dev);
+	struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
 	int ret, i;
 	int trigger, irq_pol;
 	u16 val;
 
-	wm8903 = kzalloc(sizeof(struct wm8903_priv), GFP_KERNEL);
-	if (wm8903 == NULL)
-		return -ENOMEM;
-
-	codec = &wm8903->codec;
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->dev = &i2c->dev;
-	codec->name = "WM8903";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8903_set_bias_level;
-	codec->dai = &wm8903_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = ARRAY_SIZE(wm8903->reg_cache);
-	codec->reg_cache = &wm8903->reg_cache[0];
-	snd_soc_codec_set_drvdata(codec, wm8903);
-	codec->volatile_register = wm8903_volatile_register;
 	init_completion(&wm8903->wseq);
 
-	i2c_set_clientdata(i2c, codec);
-	codec->control_data = i2c;
-
 	ret = snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_I2C);
 	if (ret != 0) {
-		dev_err(&i2c->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
+		return ret;
 	}
 
 	val = snd_soc_read(codec, WM8903_SW_RESET_AND_ID);
 	if (val != wm8903_reg_defaults[WM8903_SW_RESET_AND_ID]) {
-		dev_err(&i2c->dev,
+		dev_err(codec->dev,
 			"Device with ID register %x is not a WM8903\n", val);
 		return -ENODEV;
 	}
 
 	val = snd_soc_read(codec, WM8903_REVISION_NUMBER);
-	dev_info(&i2c->dev, "WM8903 revision %d\n",
+	dev_info(codec->dev, "WM8903 revision %d\n",
 		 val & WM8903_CHIP_REV_MASK);
 
 	wm8903_reset(codec);
@@ -1721,7 +1679,7 @@
 		wm8903->mic_delay = pdata->micdet_delay;
 	}
 	
-	if (i2c->irq) {
+	if (wm8903->irq) {
 		if (pdata && pdata->irq_active_low) {
 			trigger = IRQF_TRIGGER_LOW;
 			irq_pol = WM8903_IRQ_POL;
@@ -1733,13 +1691,13 @@
 		snd_soc_update_bits(codec, WM8903_INTERRUPT_CONTROL,
 				    WM8903_IRQ_POL, irq_pol);
 		
-		ret = request_threaded_irq(i2c->irq, NULL, wm8903_irq,
+		ret = request_threaded_irq(wm8903->irq, NULL, wm8903_irq,
 					   trigger | IRQF_ONESHOT,
-					   "wm8903", wm8903);
+					   "wm8903", codec);
 		if (ret != 0) {
-			dev_err(&i2c->dev, "Failed to request IRQ: %d\n",
+			dev_err(codec->dev, "Failed to request IRQ: %d\n",
 				ret);
-			goto err;
+			return ret;
 		}
 
 		/* Enable write sequencer interrupts */
@@ -1781,133 +1739,96 @@
 	val |= WM8903_DAC_MUTEMODE;
 	snd_soc_write(codec, WM8903_DAC_DIGITAL_1, val);
 
-	wm8903_dai.dev = &i2c->dev;
-	wm8903_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(&i2c->dev, "Failed to register codec: %d\n", ret);
-		goto err_irq;
-	}
-
-	ret = snd_soc_register_dai(&wm8903_dai);
-	if (ret != 0) {
-		dev_err(&i2c->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
+	snd_soc_add_controls(codec, wm8903_snd_controls,
+				ARRAY_SIZE(wm8903_snd_controls));
+	wm8903_add_widgets(codec);
 
 	return ret;
+}
 
-err_codec:
-	snd_soc_unregister_codec(codec);
-err_irq:
-	if (i2c->irq)
-		free_irq(i2c->irq, wm8903);
-err:
-	wm8903_codec = NULL;
-	kfree(wm8903);
+/* power down chip */
+static int wm8903_remove(struct snd_soc_codec *codec)
+{
+	wm8903_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
+}
+
+static struct snd_soc_codec_driver soc_codec_dev_wm8903 = {
+	.probe =	wm8903_probe,
+	.remove =	wm8903_remove,
+	.suspend =	wm8903_suspend,
+	.resume =	wm8903_resume,
+	.set_bias_level = wm8903_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8903_reg_defaults),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8903_reg_defaults,
+	.volatile_register = wm8903_volatile_register,
+};
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+static __devinit int wm8903_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
+{
+	struct wm8903_priv *wm8903;
+	int ret;
+
+	wm8903 = kzalloc(sizeof(struct wm8903_priv), GFP_KERNEL);
+	if (wm8903 == NULL)
+		return -ENOMEM;
+
+	i2c_set_clientdata(i2c, wm8903);
+	wm8903->irq = i2c->irq;
+
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8903, &wm8903_dai, 1);
+	if (ret < 0)
+		kfree(wm8903);
 	return ret;
 }
 
 static __devexit int wm8903_i2c_remove(struct i2c_client *client)
 {
-	struct snd_soc_codec *codec = i2c_get_clientdata(client);
-	struct wm8903_priv *priv = snd_soc_codec_get_drvdata(codec);
-
-	snd_soc_unregister_dai(&wm8903_dai);
-	snd_soc_unregister_codec(codec);
-
-	wm8903_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-	if (client->irq)
-		free_irq(client->irq, priv);
-
-	kfree(priv);
-
-	wm8903_codec = NULL;
-	wm8903_dai.dev = NULL;
-
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
-/* i2c codec control layer */
 static const struct i2c_device_id wm8903_i2c_id[] = {
-       { "wm8903", 0 },
-       { }
+	{ "wm8903", 0 },
+	{ }
 };
 MODULE_DEVICE_TABLE(i2c, wm8903_i2c_id);
 
 static struct i2c_driver wm8903_i2c_driver = {
 	.driver = {
-		.name = "WM8903",
+		.name = "wm8903-codec",
 		.owner = THIS_MODULE,
 	},
-	.probe    = wm8903_i2c_probe,
-	.remove   = __devexit_p(wm8903_i2c_remove),
+	.probe =    wm8903_i2c_probe,
+	.remove =   __devexit_p(wm8903_i2c_remove),
 	.id_table = wm8903_i2c_id,
 };
-
-static int wm8903_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	int ret = 0;
-
-	if (!wm8903_codec) {
-		dev_err(&pdev->dev, "I2C device not yet probed\n");
-		goto err;
-	}
-
-	socdev->card->codec = wm8903_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to create pcms\n");
-		goto err;
-	}
-
-	snd_soc_add_controls(socdev->card->codec, wm8903_snd_controls,
-				ARRAY_SIZE(wm8903_snd_controls));
-	wm8903_add_widgets(socdev->card->codec);
-
-	return ret;
-
-err:
-	return ret;
-}
-
-/* power down chip */
-static int wm8903_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (codec->control_data)
-		wm8903_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8903 = {
-	.probe = 	wm8903_probe,
-	.remove = 	wm8903_remove,
-	.suspend = 	wm8903_suspend,
-	.resume =	wm8903_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8903);
+#endif
 
 static int __init wm8903_modinit(void)
 {
-	return i2c_add_driver(&wm8903_i2c_driver);
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	ret = i2c_add_driver(&wm8903_i2c_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register wm8903 I2C driver: %d\n",
+		       ret);
+	}
+#endif
+	return ret;
 }
 module_init(wm8903_modinit);
 
 static void __exit wm8903_exit(void)
 {
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	i2c_del_driver(&wm8903_i2c_driver);
+#endif
 }
 module_exit(wm8903_exit);
 
diff --git a/sound/soc/codecs/wm8903.h b/sound/soc/codecs/wm8903.h
index ce384a2..996435e 100644
--- a/sound/soc/codecs/wm8903.h
+++ b/sound/soc/codecs/wm8903.h
@@ -15,9 +15,6 @@
 
 #include <linux/i2c.h>
 
-extern struct snd_soc_dai wm8903_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8903;
-
 extern int wm8903_mic_detect(struct snd_soc_codec *codec,
 			     struct snd_soc_jack *jack,
 			     int det, int shrt);
diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c
index f7dcabf..33be84e 100644
--- a/sound/soc/codecs/wm8904.c
+++ b/sound/soc/codecs/wm8904.c
@@ -31,9 +31,6 @@
 
 #include "wm8904.h"
 
-static struct snd_soc_codec *wm8904_codec;
-struct snd_soc_codec_device soc_codec_dev_wm8904;
-
 enum wm8904_type {
 	WM8904,
 	WM8912,
@@ -52,10 +49,11 @@
 
 /* codec private data */
 struct wm8904_priv {
-	struct snd_soc_codec codec;
+
 	u16 reg_cache[WM8904_MAX_REGISTER + 1];
 
 	enum wm8904_type devtype;
+	void *control_data;
 
 	struct regulator_bulk_data supplies[WM8904_NUM_SUPPLIES];
 
@@ -689,7 +687,7 @@
 			       struct snd_ctl_elem_value *ucontrol)
 {
 	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-	struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);	
+	struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
 	struct wm8904_pdata *pdata = wm8904->pdata;
 	int value = ucontrol->value.integer.value[0];
 
@@ -760,7 +758,7 @@
 					 struct snd_ctl_elem_value *ucontrol)
 {
 	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-	struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);	
+	struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
 	struct wm8904_pdata *pdata = wm8904->pdata;
 	int value = ucontrol->value.integer.value[0];
 
@@ -2218,8 +2216,8 @@
 	.digital_mute = wm8904_digital_mute,
 };
 
-struct snd_soc_dai wm8904_dai = {
-	.name = "WM8904",
+static struct snd_soc_dai_driver wm8904_dai = {
+	.name = "wm8904-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 2,
@@ -2237,24 +2235,17 @@
 	.ops = &wm8904_dai_ops,
 	.symmetric_rates = 1,
 };
-EXPORT_SYMBOL_GPL(wm8904_dai);
 
 #ifdef CONFIG_PM
-static int wm8904_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8904_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8904_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
 	return 0;
 }
 
-static int wm8904_resume(struct platform_device *pdev)
+static int wm8904_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8904_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	return 0;
@@ -2264,9 +2255,9 @@
 #define wm8904_resume NULL
 #endif
 
-static void wm8904_handle_retune_mobile_pdata(struct wm8904_priv *wm8904)
+static void wm8904_handle_retune_mobile_pdata(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = &wm8904->codec;
+	struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
 	struct wm8904_pdata *pdata = wm8904->pdata;
 	struct snd_kcontrol_new control =
 		SOC_ENUM_EXT("EQ Mode",
@@ -2315,20 +2306,20 @@
 	wm8904->retune_mobile_enum.max = wm8904->num_retune_mobile_texts;
 	wm8904->retune_mobile_enum.texts = wm8904->retune_mobile_texts;
 
-	ret = snd_soc_add_controls(&wm8904->codec, &control, 1);
+	ret = snd_soc_add_controls(codec, &control, 1);
 	if (ret != 0)
-		dev_err(wm8904->codec.dev,
+		dev_err(codec->dev,
 			"Failed to add ReTune Mobile control: %d\n", ret);
 }
 
-static void wm8904_handle_pdata(struct wm8904_priv *wm8904)
+static void wm8904_handle_pdata(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = &wm8904->codec;
+	struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
 	struct wm8904_pdata *pdata = wm8904->pdata;
 	int ret, i;
 
 	if (!pdata) {
-		snd_soc_add_controls(&wm8904->codec, wm8904_eq_controls,
+		snd_soc_add_controls(codec, wm8904_eq_controls,
 				     ARRAY_SIZE(wm8904_eq_controls));
 		return;
 	}
@@ -2344,7 +2335,7 @@
 		wm8904->drc_texts = kmalloc(sizeof(char *)
 					    * pdata->num_drc_cfgs, GFP_KERNEL);
 		if (!wm8904->drc_texts) {
-			dev_err(wm8904->codec.dev,
+			dev_err(codec->dev,
 				"Failed to allocate %d DRC config texts\n",
 				pdata->num_drc_cfgs);
 			return;
@@ -2356,9 +2347,9 @@
 		wm8904->drc_enum.max = pdata->num_drc_cfgs;
 		wm8904->drc_enum.texts = wm8904->drc_texts;
 
-		ret = snd_soc_add_controls(&wm8904->codec, &control, 1);
+		ret = snd_soc_add_controls(codec, &control, 1);
 		if (ret != 0)
-			dev_err(wm8904->codec.dev,
+			dev_err(codec->dev,
 				"Failed to add DRC mode control: %d\n", ret);
 
 		wm8904_set_drc(codec);
@@ -2368,89 +2359,19 @@
 		pdata->num_retune_mobile_cfgs);
 
 	if (pdata->num_retune_mobile_cfgs)
-		wm8904_handle_retune_mobile_pdata(wm8904);
+		wm8904_handle_retune_mobile_pdata(codec);
 	else
-		snd_soc_add_controls(&wm8904->codec, wm8904_eq_controls,
+		snd_soc_add_controls(codec, wm8904_eq_controls,
 				     ARRAY_SIZE(wm8904_eq_controls));
 }
 
-static int wm8904_probe(struct platform_device *pdev)
+
+static int wm8904_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
-
-	if (wm8904_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8904_codec;
-	codec = wm8904_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
-	wm8904_handle_pdata(snd_soc_codec_get_drvdata(codec));
-
-	wm8904_add_widgets(codec);
-
-	return ret;
-
-pcm_err:
-	return ret;
-}
-
-static int wm8904_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8904 = {
-	.probe = 	wm8904_probe,
-	.remove = 	wm8904_remove,
-	.suspend = 	wm8904_suspend,
-	.resume =	wm8904_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8904);
-
-static int wm8904_register(struct wm8904_priv *wm8904,
-			   enum snd_soc_control_type control)
-{
+	struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
 	struct wm8904_pdata *pdata = wm8904->pdata;
-	int ret;
-	struct snd_soc_codec *codec = &wm8904->codec;
-	int i;
+	int ret, i;
 
-	if (wm8904_codec) {
-		dev_err(codec->dev, "Another WM8904 is registered\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm8904);
-	codec->name = "WM8904";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8904_set_bias_level;
-	codec->dai = &wm8904_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = WM8904_MAX_REGISTER;
-	codec->reg_cache = &wm8904->reg_cache;
-	codec->volatile_register = wm8904_volatile_register;
 	codec->cache_sync = 1;
 	codec->idle_bias_off = 1;
 
@@ -2463,16 +2384,13 @@
 	default:
 		dev_err(codec->dev, "Unknown device type %d\n",
 			wm8904->devtype);
-		ret = -EINVAL;
-		goto err;
+		return -EINVAL;
 	}
 
-	memcpy(codec->reg_cache, wm8904_reg, sizeof(wm8904_reg));
-
-	ret = snd_soc_codec_set_cache_io(codec, 8, 16, control);
+	ret = snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_I2C);
 	if (ret != 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	for (i = 0; i < ARRAY_SIZE(wm8904->supplies); i++)
@@ -2482,7 +2400,7 @@
 				 wm8904->supplies);
 	if (ret != 0) {
 		dev_err(codec->dev, "Failed to request supplies: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	ret = regulator_bulk_enable(ARRAY_SIZE(wm8904->supplies),
@@ -2517,8 +2435,6 @@
 		goto err_enable;
 	}
 
-	wm8904_dai.dev = codec->dev;
-
 	/* Change some default settings - latch VU and enable ZC */
 	wm8904->reg_cache[WM8904_ADC_DIGITAL_VOLUME_LEFT] |= WM8904_ADC_VU;
 	wm8904->reg_cache[WM8904_ADC_DIGITAL_VOLUME_RIGHT] |= WM8904_ADC_VU;
@@ -2563,72 +2479,68 @@
 	/* Bias level configuration will have done an extra enable */
 	regulator_bulk_disable(ARRAY_SIZE(wm8904->supplies), wm8904->supplies);
 
-	wm8904_codec = codec;
+	wm8904_handle_pdata(codec);
 
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err_enable;
-	}
-
-	ret = snd_soc_register_dai(&wm8904_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
+	wm8904_add_widgets(codec);
 
 	return 0;
 
-err_codec:
-	snd_soc_unregister_codec(codec);
 err_enable:
 	regulator_bulk_disable(ARRAY_SIZE(wm8904->supplies), wm8904->supplies);
 err_get:
 	regulator_bulk_free(ARRAY_SIZE(wm8904->supplies), wm8904->supplies);
-err:
-	kfree(wm8904);
 	return ret;
 }
 
-static void wm8904_unregister(struct wm8904_priv *wm8904)
+static int wm8904_remove(struct snd_soc_codec *codec)
 {
-	wm8904_set_bias_level(&wm8904->codec, SND_SOC_BIAS_OFF);
+	struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
+
+	wm8904_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	regulator_bulk_free(ARRAY_SIZE(wm8904->supplies), wm8904->supplies);
-	snd_soc_unregister_dai(&wm8904_dai);
-	snd_soc_unregister_codec(&wm8904->codec);
-	kfree(wm8904);
-	wm8904_codec = NULL;
+
+	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_wm8904 = {
+	.probe =	wm8904_probe,
+	.remove =	wm8904_remove,
+	.suspend =	wm8904_suspend,
+	.resume =	wm8904_resume,
+	.set_bias_level = wm8904_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8904_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8904_reg,
+	.volatile_register = wm8904_volatile_register,
+};
+
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 static __devinit int wm8904_i2c_probe(struct i2c_client *i2c,
 				      const struct i2c_device_id *id)
 {
 	struct wm8904_priv *wm8904;
-	struct snd_soc_codec *codec;
+	int ret;
 
 	wm8904 = kzalloc(sizeof(struct wm8904_priv), GFP_KERNEL);
 	if (wm8904 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8904->codec;
-	codec->hw_write = (hw_write_t)i2c_master_send;
-
 	wm8904->devtype = id->driver_data;
-
 	i2c_set_clientdata(i2c, wm8904);
-	codec->control_data = i2c;
+	wm8904->control_data = i2c;
 	wm8904->pdata = i2c->dev.platform_data;
 
-	codec->dev = &i2c->dev;
-
-	return wm8904_register(wm8904, SND_SOC_I2C);
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8904, &wm8904_dai, 1);
+	if (ret < 0)
+		kfree(wm8904);
+	return ret;
 }
 
 static __devexit int wm8904_i2c_remove(struct i2c_client *client)
 {
-	struct wm8904_priv *wm8904 = i2c_get_clientdata(client);
-	wm8904_unregister(wm8904);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -2641,7 +2553,7 @@
 
 static struct i2c_driver wm8904_i2c_driver = {
 	.driver = {
-		.name = "WM8904",
+		.name = "wm8904-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8904_i2c_probe,
@@ -2652,15 +2564,15 @@
 
 static int __init wm8904_modinit(void)
 {
-	int ret;
+	int ret = 0;
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	ret = i2c_add_driver(&wm8904_i2c_driver);
 	if (ret != 0) {
-		printk(KERN_ERR "Failed to register WM8904 I2C driver: %d\n",
+		printk(KERN_ERR "Failed to register wm8904 I2C driver: %d\n",
 		       ret);
 	}
 #endif
-	return 0;
+	return ret;
 }
 module_init(wm8904_modinit);
 
diff --git a/sound/soc/codecs/wm8904.h b/sound/soc/codecs/wm8904.h
index abe5059..9e8c841 100644
--- a/sound/soc/codecs/wm8904.h
+++ b/sound/soc/codecs/wm8904.h
@@ -21,9 +21,6 @@
 #define WM8904_FLL_LRCLK         3
 #define WM8904_FLL_FREE_RUNNING  4
 
-extern struct snd_soc_dai wm8904_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8904;
-
 /*
  * Register values.
  */
diff --git a/sound/soc/codecs/wm8940.c b/sound/soc/codecs/wm8940.c
index f0c1113..2cb16f8 100644
--- a/sound/soc/codecs/wm8940.c
+++ b/sound/soc/codecs/wm8940.c
@@ -44,7 +44,8 @@
 struct wm8940_priv {
 	unsigned int sysclk;
 	u16 reg_cache[WM8940_CACHEREGNUM];
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
+	void *control_data;
 };
 
 static u16 wm8940_reg_defaults[] = {
@@ -365,8 +366,7 @@
 				struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	u16 iface = snd_soc_read(codec, WM8940_IFACE) & 0xFD9F;
 	u16 addcntrl = snd_soc_read(codec, WM8940_ADDCNTRL) & 0xFFF1;
 	u16 companding =  snd_soc_read(codec,
@@ -636,8 +636,8 @@
 	.set_pll = wm8940_set_dai_pll,
 };
 
-struct snd_soc_dai wm8940_dai = {
-	.name = "WM8940",
+static struct snd_soc_dai_driver wm8940_dai = {
+	.name = "wm8940-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -655,20 +655,14 @@
 	.ops = &wm8940_dai_ops,
 	.symmetric_rates = 1,
 };
-EXPORT_SYMBOL_GPL(wm8940_dai);
 
-static int wm8940_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8940_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	return wm8940_set_bias_level(codec, SND_SOC_BIAS_OFF);
 }
 
-static int wm8940_resume(struct platform_device *pdev)
+static int wm8940_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	int i;
 	int ret;
 	u8 data[3];
@@ -697,108 +691,26 @@
 	return ret;
 }
 
-static struct snd_soc_codec *wm8940_codec;
-
-static int wm8940_probe(struct platform_device *pdev)
+static int wm8940_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-
-	int ret = 0;
-
-	if (wm8940_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8940_codec;
-	codec = wm8940_codec;
-
-	mutex_init(&codec->mutex);
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
-	ret = snd_soc_add_controls(codec, wm8940_snd_controls,
-			     ARRAY_SIZE(wm8940_snd_controls));
-	if (ret)
-		goto error_free_pcms;
-	ret = wm8940_add_widgets(codec);
-	if (ret)
-		goto error_free_pcms;
-
-	return ret;
-
-error_free_pcms:
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-pcm_err:
-	return ret;
-}
-
-static int wm8940_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8940 = {
-	.probe = wm8940_probe,
-	.remove = wm8940_remove,
-	.suspend = wm8940_suspend,
-	.resume = wm8940_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8940);
-
-static int wm8940_register(struct wm8940_priv *wm8940,
-			   enum snd_soc_control_type control)
-{
-	struct wm8940_setup_data *pdata = wm8940->codec.dev->platform_data;
-	struct snd_soc_codec *codec = &wm8940->codec;
+	struct wm8940_priv *wm8940 = snd_soc_codec_get_drvdata(codec);
+	struct wm8940_setup_data *pdata = codec->dev->platform_data;
 	int ret;
 	u16 reg;
-	if (wm8940_codec) {
-		dev_err(codec->dev, "Another WM8940 is registered\n");
-		return -EINVAL;
-	}
 
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm8940);
-	codec->name = "WM8940";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8940_set_bias_level;
-	codec->dai = &wm8940_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = ARRAY_SIZE(wm8940_reg_defaults);
-	codec->reg_cache = &wm8940->reg_cache;
-
-	ret = snd_soc_codec_set_cache_io(codec, 8, 16, control);
+	codec->control_data = wm8940->control_data;
+	ret = snd_soc_codec_set_cache_io(codec, 8, 16, wm8940->control_type);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
 		return ret;
 	}
 
-	memcpy(codec->reg_cache, wm8940_reg_defaults,
-	       sizeof(wm8940_reg_defaults));
-
 	ret = wm8940_reset(codec);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to issue reset\n");
 		return ret;
 	}
 
-	wm8940_dai.dev = codec->dev;
-
 	wm8940_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	ret = snd_soc_write(codec, WM8940_POWER1, 0x180);
@@ -814,64 +726,60 @@
 			return ret;
 	}
 
-
-	wm8940_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
+	ret = snd_soc_add_controls(codec, wm8940_snd_controls,
+			     ARRAY_SIZE(wm8940_snd_controls));
+	if (ret)
 		return ret;
-	}
-
-	ret = snd_soc_register_dai(&wm8940_dai);
-	if (ret) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		snd_soc_unregister_codec(codec);
+	ret = wm8940_add_widgets(codec);
+	if (ret)
 		return ret;
-	}
 
+	return ret;
+;
+}
+
+static int wm8940_remove(struct snd_soc_codec *codec)
+{
+	wm8940_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static void wm8940_unregister(struct wm8940_priv *wm8940)
-{
-	wm8940_set_bias_level(&wm8940->codec, SND_SOC_BIAS_OFF);
-	snd_soc_unregister_dai(&wm8940_dai);
-	snd_soc_unregister_codec(&wm8940->codec);
-	kfree(wm8940);
-	wm8940_codec = NULL;
-}
+static struct snd_soc_codec_driver soc_codec_dev_wm8940 = {
+	.probe =	wm8940_probe,
+	.remove =	wm8940_remove,
+	.suspend =	wm8940_suspend,
+	.resume =	wm8940_resume,
+	.set_bias_level = wm8940_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8940_reg_defaults),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8940_reg_defaults,
+};
 
-static int wm8940_i2c_probe(struct i2c_client *i2c,
-			    const struct i2c_device_id *id)
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+static __devinit int wm8940_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
 {
-	int ret;
 	struct wm8940_priv *wm8940;
-	struct snd_soc_codec *codec;
+	int ret;
 
-	wm8940 = kzalloc(sizeof *wm8940, GFP_KERNEL);
+	wm8940 = kzalloc(sizeof(struct wm8940_priv), GFP_KERNEL);
 	if (wm8940 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8940->codec;
-	codec->hw_write = (hw_write_t)i2c_master_send;
 	i2c_set_clientdata(i2c, wm8940);
-	codec->control_data = i2c;
-	codec->dev = &i2c->dev;
+	wm8940->control_data = i2c;
 
-	ret = wm8940_register(wm8940, SND_SOC_I2C);
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8940, &wm8940_dai, 1);
 	if (ret < 0)
 		kfree(wm8940);
-
 	return ret;
 }
 
-static int __devexit wm8940_i2c_remove(struct i2c_client *client)
+static __devexit int wm8940_i2c_remove(struct i2c_client *client)
 {
-	struct wm8940_priv *wm8940 = i2c_get_clientdata(client);
-
-	wm8940_unregister(wm8940);
-
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -883,29 +791,34 @@
 
 static struct i2c_driver wm8940_i2c_driver = {
 	.driver = {
-		.name = "WM8940 I2C Codec",
+		.name = "wm8940-codec",
 		.owner = THIS_MODULE,
 	},
-	.probe = wm8940_i2c_probe,
-	.remove = __devexit_p(wm8940_i2c_remove),
+	.probe =    wm8940_i2c_probe,
+	.remove =   __devexit_p(wm8940_i2c_remove),
 	.id_table = wm8940_i2c_id,
 };
+#endif
 
 static int __init wm8940_modinit(void)
 {
-	int ret;
-
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	ret = i2c_add_driver(&wm8940_i2c_driver);
-	if (ret)
-		printk(KERN_ERR "Failed to register WM8940 I2C driver: %d\n",
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register wm8940 I2C driver: %d\n",
 		       ret);
+	}
+#endif
 	return ret;
 }
 module_init(wm8940_modinit);
 
 static void __exit wm8940_exit(void)
 {
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	i2c_del_driver(&wm8940_i2c_driver);
+#endif
 }
 module_exit(wm8940_exit);
 
diff --git a/sound/soc/codecs/wm8940.h b/sound/soc/codecs/wm8940.h
index 8410eed..907fe19 100644
--- a/sound/soc/codecs/wm8940.h
+++ b/sound/soc/codecs/wm8940.h
@@ -15,8 +15,6 @@
 #define WM8940_VROI_30K 1
 	unsigned int vroi:1;
 };
-extern struct snd_soc_dai wm8940_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8940;
 
 /* WM8940 register space */
 #define WM8940_SOFTRESET	0x00
diff --git a/sound/soc/codecs/wm8955.c b/sound/soc/codecs/wm8955.c
index 5f02559..f89ad6c 100644
--- a/sound/soc/codecs/wm8955.c
+++ b/sound/soc/codecs/wm8955.c
@@ -30,9 +30,6 @@
 
 #include "wm8955.h"
 
-static struct snd_soc_codec *wm8955_codec;
-struct snd_soc_codec_device soc_codec_dev_wm8955;
-
 #define WM8955_NUM_SUPPLIES 4
 static const char *wm8955_supply_names[WM8955_NUM_SUPPLIES] = {
 	"DCVDD",
@@ -43,7 +40,8 @@
 
 /* codec private data */
 struct wm8955_priv {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
+
 	u16 reg_cache[WM8955_MAX_REGISTER + 1];
 
 	unsigned int mclk_rate;
@@ -52,8 +50,6 @@
 	int fs;
 
 	struct regulator_bulk_data supplies[WM8955_NUM_SUPPLIES];
-
-	struct wm8955_pdata *pdata;
 };
 
 static const u16 wm8955_reg[WM8955_MAX_REGISTER + 1] = {
@@ -870,8 +866,8 @@
 	.digital_mute = wm8955_digital_mute,
 };
 
-struct snd_soc_dai wm8955_dai = {
-	.name = "WM8955",
+static struct snd_soc_dai_driver wm8955_dai = {
+	.name = "wm8955-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 2,
@@ -881,24 +877,17 @@
 	},
 	.ops = &wm8955_dai_ops,
 };
-EXPORT_SYMBOL_GPL(wm8955_dai);
 
 #ifdef CONFIG_PM
-static int wm8955_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8955_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8955_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
 	return 0;
 }
 
-static int wm8955_resume(struct platform_device *pdev)
+static int wm8955_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8955_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	return 0;
@@ -908,86 +897,16 @@
 #define wm8955_resume NULL
 #endif
 
-static int wm8955_probe(struct platform_device *pdev)
+static int wm8955_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
+	struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec);
+	struct wm8955_pdata *pdata = dev_get_platdata(codec->dev);
+	int ret, i;
 
-	if (wm8955_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8955_codec;
-	codec = wm8955_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
-	wm8955_add_widgets(codec);
-
-	return ret;
-
-pcm_err:
-	return ret;
-}
-
-static int wm8955_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8955 = {
-	.probe = 	wm8955_probe,
-	.remove = 	wm8955_remove,
-	.suspend = 	wm8955_suspend,
-	.resume =	wm8955_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8955);
-
-static int wm8955_register(struct wm8955_priv *wm8955,
-			   enum snd_soc_control_type control)
-{
-	int ret;
-	struct snd_soc_codec *codec = &wm8955->codec;
-	int i;
-
-	if (wm8955_codec) {
-		dev_err(codec->dev, "Another WM8955 is registered\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm8955);
-	codec->name = "WM8955";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8955_set_bias_level;
-	codec->dai = &wm8955_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = WM8955_MAX_REGISTER;
-	codec->reg_cache = &wm8955->reg_cache;
-
-	memcpy(codec->reg_cache, wm8955_reg, sizeof(wm8955_reg));
-
-	ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9, wm8955->control_type);
 	if (ret != 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	for (i = 0; i < ARRAY_SIZE(wm8955->supplies); i++)
@@ -997,7 +916,7 @@
 				 wm8955->supplies);
 	if (ret != 0) {
 		dev_err(codec->dev, "Failed to request supplies: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	ret = regulator_bulk_enable(ARRAY_SIZE(wm8955->supplies),
@@ -1013,8 +932,6 @@
 		goto err_enable;
 	}
 
-	wm8955_dai.dev = codec->dev;
-
 	/* Change some default settings - latch VU and enable ZC */
 	wm8955->reg_cache[WM8955_LEFT_DAC_VOLUME] |= WM8955_LDVU;
 	wm8955->reg_cache[WM8955_RIGHT_DAC_VOLUME] |= WM8955_RDVU;
@@ -1028,12 +945,12 @@
 	wm8955->reg_cache[WM8955_BASS_CONTROL] |= WM8955_BB;
 
 	/* Set platform data values */
-	if (wm8955->pdata) {
-		if (wm8955->pdata->out2_speaker)
+	if (pdata) {
+		if (pdata->out2_speaker)
 			wm8955->reg_cache[WM8955_ADDITIONAL_CONTROL_2]
 				|= WM8955_ROUT2INV;
 
-		if (wm8955->pdata->monoin_diff)
+		if (pdata->monoin_diff)
 			wm8955->reg_cache[WM8955_MONO_OUT_MIX_1]
 				|= WM8955_DMEN;
 	}
@@ -1043,70 +960,60 @@
 	/* Bias level configuration will have done an extra enable */
 	regulator_bulk_disable(ARRAY_SIZE(wm8955->supplies), wm8955->supplies);
 
-	wm8955_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err_enable;
-	}
-
-	ret = snd_soc_register_dai(&wm8955_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
-
+	wm8955_add_widgets(codec);
 	return 0;
 
-err_codec:
-	snd_soc_unregister_codec(codec);
 err_enable:
 	regulator_bulk_disable(ARRAY_SIZE(wm8955->supplies), wm8955->supplies);
 err_get:
 	regulator_bulk_free(ARRAY_SIZE(wm8955->supplies), wm8955->supplies);
-err:
-	kfree(wm8955);
 	return ret;
 }
 
-static void wm8955_unregister(struct wm8955_priv *wm8955)
+static int wm8955_remove(struct snd_soc_codec *codec)
 {
-	wm8955_set_bias_level(&wm8955->codec, SND_SOC_BIAS_OFF);
+	struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec);
+
+	wm8955_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	regulator_bulk_free(ARRAY_SIZE(wm8955->supplies), wm8955->supplies);
-	snd_soc_unregister_dai(&wm8955_dai);
-	snd_soc_unregister_codec(&wm8955->codec);
-	kfree(wm8955);
-	wm8955_codec = NULL;
+	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_wm8955 = {
+	.probe =	wm8955_probe,
+	.remove =	wm8955_remove,
+	.suspend =	wm8955_suspend,
+	.resume =	wm8955_resume,
+	.set_bias_level = wm8955_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8955_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8955_reg,
+};
+
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 static __devinit int wm8955_i2c_probe(struct i2c_client *i2c,
 				      const struct i2c_device_id *id)
 {
 	struct wm8955_priv *wm8955;
-	struct snd_soc_codec *codec;
+	int ret;
 
 	wm8955 = kzalloc(sizeof(struct wm8955_priv), GFP_KERNEL);
 	if (wm8955 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8955->codec;
-	codec->hw_write = (hw_write_t)i2c_master_send;
-
 	i2c_set_clientdata(i2c, wm8955);
-	codec->control_data = i2c;
-	wm8955->pdata = i2c->dev.platform_data;
 
-	codec->dev = &i2c->dev;
-
-	return wm8955_register(wm8955, SND_SOC_I2C);
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8955, &wm8955_dai, 1);
+	if (ret < 0)
+		kfree(wm8955);
+	return ret;
 }
 
 static __devexit int wm8955_i2c_remove(struct i2c_client *client)
 {
-	struct wm8955_priv *wm8955 = i2c_get_clientdata(client);
-	wm8955_unregister(wm8955);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -1118,7 +1025,7 @@
 
 static struct i2c_driver wm8955_i2c_driver = {
 	.driver = {
-		.name = "wm8955",
+		.name = "wm8955-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8955_i2c_probe,
@@ -1129,7 +1036,7 @@
 
 static int __init wm8955_modinit(void)
 {
-	int ret;
+	int ret = 0;
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	ret = i2c_add_driver(&wm8955_i2c_driver);
 	if (ret != 0) {
@@ -1137,7 +1044,7 @@
 		       ret);
 	}
 #endif
-	return 0;
+	return ret;
 }
 module_init(wm8955_modinit);
 
diff --git a/sound/soc/codecs/wm8955.h b/sound/soc/codecs/wm8955.h
index ae349c8..d13fd5c 100644
--- a/sound/soc/codecs/wm8955.h
+++ b/sound/soc/codecs/wm8955.h
@@ -15,9 +15,6 @@
 
 #define WM8955_CLK_MCLK 1
 
-extern struct snd_soc_dai wm8955_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8955;
-
 /*
  * Register values.
  */
diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c
index 3c6ee61..8d5efb3 100644
--- a/sound/soc/codecs/wm8960.c
+++ b/sound/soc/codecs/wm8960.c
@@ -29,8 +29,6 @@
 
 #define AUDIO_NAME "wm8960"
 
-struct snd_soc_codec_device soc_codec_dev_wm8960;
-
 /* R25 - Power 1 */
 #define WM8960_VMID_MASK 0x180
 #define WM8960_VREF      0x40
@@ -75,7 +73,10 @@
 
 struct wm8960_priv {
 	u16 reg_cache[WM8960_CACHEREGNUM];
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
+	void *control_data;
+	int (*set_bias_level)(struct snd_soc_codec *,
+			      enum snd_soc_bias_level level);
 	struct snd_soc_dapm_widget *lout1;
 	struct snd_soc_dapm_widget *rout1;
 	struct snd_soc_dapm_widget *out3;
@@ -507,8 +508,7 @@
 			    struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
 	u16 iface = snd_soc_read(codec, WM8960_IFACE1) & 0xfff3;
 	int i;
@@ -849,6 +849,14 @@
 	return 0;
 }
 
+static int wm8960_set_bias_level(struct snd_soc_codec *codec,
+				 enum snd_soc_bias_level level)
+{
+	struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
+
+	return wm8960->set_bias_level(codec, level);
+}
+
 #define WM8960_RATES SNDRV_PCM_RATE_8000_48000
 
 #define WM8960_FORMATS \
@@ -863,8 +871,8 @@
 	.set_pll = wm8960_set_dai_pll,
 };
 
-struct snd_soc_dai wm8960_dai = {
-	.name = "WM8960",
+static struct snd_soc_dai_driver wm8960_dai = {
+	.name = "wm8960-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -880,21 +888,18 @@
 	.ops = &wm8960_dai_ops,
 	.symmetric_rates = 1,
 };
-EXPORT_SYMBOL_GPL(wm8960_dai);
 
-static int wm8960_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8960_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
 
-	codec->set_bias_level(codec, SND_SOC_BIAS_OFF);
+	wm8960->set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int wm8960_resume(struct platform_device *pdev)
+static int wm8960_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
 	int i;
 	u8 data[2];
 	u16 *cache = codec->reg_cache;
@@ -906,78 +911,19 @@
 		codec->hw_write(codec->control_data, data, 2);
 	}
 
-	codec->set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
+	wm8960->set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 	return 0;
 }
 
-static struct snd_soc_codec *wm8960_codec;
-
-static int wm8960_probe(struct platform_device *pdev)
+static int wm8960_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
-
-	if (wm8960_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8960_codec;
-	codec = wm8960_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
-	snd_soc_add_controls(codec, wm8960_snd_controls,
-			     ARRAY_SIZE(wm8960_snd_controls));
-	wm8960_add_widgets(codec);
-
-	return ret;
-
-pcm_err:
-	return ret;
-}
-
-/* power down chip */
-static int wm8960_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8960 = {
-	.probe = 	wm8960_probe,
-	.remove = 	wm8960_remove,
-	.suspend = 	wm8960_suspend,
-	.resume =	wm8960_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8960);
-
-static int wm8960_register(struct wm8960_priv *wm8960,
-			   enum snd_soc_control_type control)
-{
-	struct wm8960_data *pdata = wm8960->codec.dev->platform_data;
-	struct snd_soc_codec *codec = &wm8960->codec;
+	struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
+	struct wm8960_data *pdata = dev_get_platdata(codec->dev);
 	int ret;
 	u16 reg;
 
-	if (wm8960_codec) {
-		dev_err(codec->dev, "Another WM8960 is registered\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	codec->set_bias_level = wm8960_set_bias_level_out3;
+	wm8960->set_bias_level = wm8960_set_bias_level_out3;
+	codec->control_data = wm8960->control_data;
 
 	if (!pdata) {
 		dev_warn(codec->dev, "No platform data supplied\n");
@@ -988,39 +934,22 @@
 		}
 
 		if (pdata->capless)
-			codec->set_bias_level = wm8960_set_bias_level_capless;
+			wm8960->set_bias_level = wm8960_set_bias_level_capless;
 	}
 
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm8960);
-	codec->name = "WM8960";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->dai = &wm8960_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = WM8960_CACHEREGNUM;
-	codec->reg_cache = &wm8960->reg_cache;
-
-	memcpy(codec->reg_cache, wm8960_reg, sizeof(wm8960_reg));
-
-	ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9, wm8960->control_type);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	ret = wm8960_reset(codec);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to issue reset\n");
-		goto err;
+		return ret;
 	}
 
-	wm8960_dai.dev = codec->dev;
-
-	codec->set_bias_level(codec, SND_SOC_BIAS_STANDBY);
+	wm8960->set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	/* Latch the update bits */
 	reg = snd_soc_read(codec, WM8960_LINVOL);
@@ -1044,62 +973,58 @@
 	reg = snd_soc_read(codec, WM8960_ROUT2);
 	snd_soc_write(codec, WM8960_ROUT2, reg | 0x100);
 
-	wm8960_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err;
-	}
-
-	ret = snd_soc_register_dai(&wm8960_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
+	snd_soc_add_controls(codec, wm8960_snd_controls,
+				     ARRAY_SIZE(wm8960_snd_controls));
+	wm8960_add_widgets(codec);
 
 	return 0;
-
-err_codec:
-	snd_soc_unregister_codec(codec);
-err:
-	kfree(wm8960);
-	return ret;
 }
 
-static void wm8960_unregister(struct wm8960_priv *wm8960)
+/* power down chip */
+static int wm8960_remove(struct snd_soc_codec *codec)
 {
-	wm8960->codec.set_bias_level(&wm8960->codec, SND_SOC_BIAS_OFF);
-	snd_soc_unregister_dai(&wm8960_dai);
-	snd_soc_unregister_codec(&wm8960->codec);
-	kfree(wm8960);
-	wm8960_codec = NULL;
+	struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
+
+	wm8960->set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_wm8960 = {
+	.probe =	wm8960_probe,
+	.remove =	wm8960_remove,
+	.suspend =	wm8960_suspend,
+	.resume =	wm8960_resume,
+	.set_bias_level = wm8960_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8960_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8960_reg,
+};
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 static __devinit int wm8960_i2c_probe(struct i2c_client *i2c,
 				      const struct i2c_device_id *id)
 {
 	struct wm8960_priv *wm8960;
-	struct snd_soc_codec *codec;
+	int ret;
 
 	wm8960 = kzalloc(sizeof(struct wm8960_priv), GFP_KERNEL);
 	if (wm8960 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8960->codec;
-
 	i2c_set_clientdata(i2c, wm8960);
-	codec->control_data = i2c;
+	wm8960->control_data = i2c;
 
-	codec->dev = &i2c->dev;
-
-	return wm8960_register(wm8960, SND_SOC_I2C);
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8960, &wm8960_dai, 1);
+	if (ret < 0)
+		kfree(wm8960);
+	return ret;
 }
 
 static __devexit int wm8960_i2c_remove(struct i2c_client *client)
 {
-	struct wm8960_priv *wm8960 = i2c_get_clientdata(client);
-	wm8960_unregister(wm8960);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -1111,35 +1036,37 @@
 
 static struct i2c_driver wm8960_i2c_driver = {
 	.driver = {
-		.name = "wm8960",
+		.name = "wm8960-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8960_i2c_probe,
 	.remove =   __devexit_p(wm8960_i2c_remove),
 	.id_table = wm8960_i2c_id,
 };
+#endif
 
 static int __init wm8960_modinit(void)
 {
-	int ret;
-
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	ret = i2c_add_driver(&wm8960_i2c_driver);
 	if (ret != 0) {
 		printk(KERN_ERR "Failed to register WM8960 I2C driver: %d\n",
 		       ret);
 	}
-
+#endif
 	return ret;
 }
 module_init(wm8960_modinit);
 
 static void __exit wm8960_exit(void)
 {
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	i2c_del_driver(&wm8960_i2c_driver);
+#endif
 }
 module_exit(wm8960_exit);
 
-
 MODULE_DESCRIPTION("ASoC WM8960 driver");
 MODULE_AUTHOR("Liam Girdwood");
 MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/wm8960.h b/sound/soc/codecs/wm8960.h
index a5ef6548..2d8163d 100644
--- a/sound/soc/codecs/wm8960.h
+++ b/sound/soc/codecs/wm8960.h
@@ -110,7 +110,4 @@
 #define WM8960_OPCLK_DIV_5_5		(4 << 0)
 #define WM8960_OPCLK_DIV_6		(5 << 0)
 
-extern struct snd_soc_dai wm8960_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8960;
-
 #endif
diff --git a/sound/soc/codecs/wm8961.c b/sound/soc/codecs/wm8961.c
index 2549d3a..4f326f6 100644
--- a/sound/soc/codecs/wm8961.c
+++ b/sound/soc/codecs/wm8961.c
@@ -288,7 +288,7 @@
 };
 
 struct wm8961_priv {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
 	int sysclk;
 	u16 reg_cache[WM8961_MAX_REGISTER];
 };
@@ -940,8 +940,8 @@
 	.set_clkdiv = wm8961_set_clkdiv,
 };
 
-struct snd_soc_dai wm8961_dai = {
-	.name = "WM8961",
+static struct snd_soc_dai_driver wm8961_dai = {
+	.name = "wm8961-hifi",
 	.playback = {
 		.stream_name = "HiFi Playback",
 		.channels_min = 1,
@@ -956,140 +956,22 @@
 		.formats = WM8961_FORMATS,},
 	.ops = &wm8961_dai_ops,
 };
-EXPORT_SYMBOL_GPL(wm8961_dai);
 
-
-static struct snd_soc_codec *wm8961_codec;
-
-static int wm8961_probe(struct platform_device *pdev)
+static int wm8961_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
 	int ret = 0;
-
-	if (wm8961_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8961_codec;
-	codec = wm8961_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
-	snd_soc_add_controls(codec, wm8961_snd_controls,
-				ARRAY_SIZE(wm8961_snd_controls));
-	snd_soc_dapm_new_controls(codec, wm8961_dapm_widgets,
-				  ARRAY_SIZE(wm8961_dapm_widgets));
-	snd_soc_dapm_add_routes(codec, audio_paths, ARRAY_SIZE(audio_paths));
-
-	return ret;
-
-pcm_err:
-	return ret;
-}
-
-static int wm8961_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-#ifdef CONFIG_PM
-static int wm8961_suspend(struct platform_device *pdev, pm_message_t state)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	wm8961_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-	return 0;
-}
-
-static int wm8961_resume(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-	u16 *reg_cache = codec->reg_cache;
-	int i;
-
-	for (i = 0; i < codec->reg_cache_size; i++) {
-		if (reg_cache[i] == wm8961_reg_defaults[i])
-			continue;
-
-		if (i == WM8961_SOFTWARE_RESET)
-			continue;
-
-		snd_soc_write(codec, i, reg_cache[i]);
-	}
-
-	wm8961_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
-	return 0;
-}
-#else
-#define wm8961_suspend NULL
-#define wm8961_resume NULL
-#endif
-
-struct snd_soc_codec_device soc_codec_dev_wm8961 = {
-	.probe = 	wm8961_probe,
-	.remove = 	wm8961_remove,
-	.suspend =	wm8961_suspend,
-	.resume =	wm8961_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8961);
-
-static int wm8961_register(struct wm8961_priv *wm8961)
-{
-	struct snd_soc_codec *codec = &wm8961->codec;
-	int ret;
 	u16 reg;
 
-	if (wm8961_codec) {
-		dev_err(codec->dev, "Another WM8961 is registered\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm8961);
-	codec->name = "WM8961";
-	codec->owner = THIS_MODULE;
-	codec->dai = &wm8961_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = ARRAY_SIZE(wm8961->reg_cache);
-	codec->reg_cache = &wm8961->reg_cache;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8961_set_bias_level;
-	codec->volatile_register = wm8961_volatile_register;
-
-	memcpy(codec->reg_cache, wm8961_reg_defaults,
-	       sizeof(wm8961_reg_defaults));
-
 	ret = snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_I2C);
 	if (ret != 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	reg = snd_soc_read(codec, WM8961_SOFTWARE_RESET);
 	if (reg != 0x1801) {
 		dev_err(codec->dev, "Device is not a WM8961: ID=0x%x\n", reg);
-		ret = -EINVAL;
-		goto err;
+		return -EINVAL;
 	}
 
 	/* This isn't volatile - readback doesn't correspond to write */
@@ -1102,7 +984,7 @@
 	ret = wm8961_reset(codec);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to issue reset\n");
-		goto err;
+		return ret;
 	}
 
 	/* Enable class W */
@@ -1140,64 +1022,89 @@
 
 	wm8961_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
-	wm8961_dai.dev = codec->dev;
-
-	wm8961_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err;
-	}
-
-	ret = snd_soc_register_dai(&wm8961_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
+	snd_soc_add_controls(codec, wm8961_snd_controls,
+				ARRAY_SIZE(wm8961_snd_controls));
+	snd_soc_dapm_new_controls(codec, wm8961_dapm_widgets,
+				  ARRAY_SIZE(wm8961_dapm_widgets));
+	snd_soc_dapm_add_routes(codec, audio_paths, ARRAY_SIZE(audio_paths));
 
 	return 0;
-
-err_codec:
-	snd_soc_unregister_codec(codec);
-err:
-	kfree(wm8961);
-	return ret;
 }
 
-static void wm8961_unregister(struct wm8961_priv *wm8961)
+static int wm8961_remove(struct snd_soc_codec *codec)
 {
-	wm8961_set_bias_level(&wm8961->codec, SND_SOC_BIAS_OFF);
-	snd_soc_unregister_dai(&wm8961_dai);
-	snd_soc_unregister_codec(&wm8961->codec);
-	kfree(wm8961);
-	wm8961_codec = NULL;
+	wm8961_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
 }
 
+#ifdef CONFIG_PM
+static int wm8961_suspend(struct snd_soc_codec *codec, pm_message_t state)
+{
+	wm8961_set_bias_level(codec, SND_SOC_BIAS_OFF);
+
+	return 0;
+}
+
+static int wm8961_resume(struct snd_soc_codec *codec)
+{
+	u16 *reg_cache = codec->reg_cache;
+	int i;
+
+	for (i = 0; i < codec->driver->reg_cache_size; i++) {
+		if (reg_cache[i] == wm8961_reg_defaults[i])
+			continue;
+
+		if (i == WM8961_SOFTWARE_RESET)
+			continue;
+
+		snd_soc_write(codec, i, reg_cache[i]);
+	}
+
+	wm8961_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
+
+	return 0;
+}
+#else
+#define wm8961_suspend NULL
+#define wm8961_resume NULL
+#endif
+
+static struct snd_soc_codec_driver soc_codec_dev_wm8961 = {
+	.probe =	wm8961_probe,
+	.remove =	wm8961_remove,
+	.suspend =	wm8961_suspend,
+	.resume =	wm8961_resume,
+	.set_bias_level = wm8961_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8961_reg_defaults),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8961_reg_defaults,
+	.volatile_register = wm8961_volatile_register,
+};
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 static __devinit int wm8961_i2c_probe(struct i2c_client *i2c,
 				      const struct i2c_device_id *id)
 {
 	struct wm8961_priv *wm8961;
-	struct snd_soc_codec *codec;
+	int ret;
 
 	wm8961 = kzalloc(sizeof(struct wm8961_priv), GFP_KERNEL);
 	if (wm8961 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8961->codec;
-
 	i2c_set_clientdata(i2c, wm8961);
-	codec->control_data = i2c;
 
-	codec->dev = &i2c->dev;
-
-	return wm8961_register(wm8961);
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8961, &wm8961_dai, 1);
+	if (ret < 0)
+		kfree(wm8961);
+	return ret;
 }
 
 static __devexit int wm8961_i2c_remove(struct i2c_client *client)
 {
-	struct wm8961_priv *wm8961 = i2c_get_clientdata(client);
-	wm8961_unregister(wm8961);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -1209,35 +1116,37 @@
 
 static struct i2c_driver wm8961_i2c_driver = {
 	.driver = {
-		.name = "wm8961",
+		.name = "wm8961-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8961_i2c_probe,
 	.remove =   __devexit_p(wm8961_i2c_remove),
 	.id_table = wm8961_i2c_id,
 };
+#endif
 
 static int __init wm8961_modinit(void)
 {
-	int ret;
-
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	ret = i2c_add_driver(&wm8961_i2c_driver);
 	if (ret != 0) {
-		printk(KERN_ERR "Failed to register WM8961 I2C driver: %d\n",
+		printk(KERN_ERR "Failed to register wm8961 I2C driver: %d\n",
 		       ret);
 	}
-
+#endif
 	return ret;
 }
 module_init(wm8961_modinit);
 
 static void __exit wm8961_exit(void)
 {
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	i2c_del_driver(&wm8961_i2c_driver);
+#endif
 }
 module_exit(wm8961_exit);
 
-
 MODULE_DESCRIPTION("ASoC WM8961 driver");
 MODULE_AUTHOR("Mark Brown <broonie@opensource.wolfsonmicro.com>");
 MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/wm8961.h b/sound/soc/codecs/wm8961.h
index 5513bfd7..1d736e5 100644
--- a/sound/soc/codecs/wm8961.h
+++ b/sound/soc/codecs/wm8961.h
@@ -11,9 +11,6 @@
 
 #include <sound/soc.h>
 
-extern struct snd_soc_codec_device soc_codec_dev_wm8961;
-extern struct snd_soc_dai wm8961_dai;
-
 #define WM8961_BCLK  1
 #define WM8961_LRCLK 2
 
diff --git a/sound/soc/codecs/wm8962-tables.c b/sound/soc/codecs/wm8962-tables.c
new file mode 100644
index 0000000..f21a8c1
--- /dev/null
+++ b/sound/soc/codecs/wm8962-tables.c
@@ -0,0 +1,42299 @@
+/*
+ * wm8962-tables.c  --  WM8962 ASoC driver
+ *
+ * Copyright 2010 Wolfson Microelectronics, plc
+ *
+ * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include "wm8962.h"
+
+const u16 wm8962_reg[WM8962_MAX_REGISTER + 1] = {
+	0x009F,     /* R0     - Left Input volume */
+	0x049F,     /* R1     - Right Input volume */
+	0x0000,     /* R2     - HPOUTL volume */
+	0x0000,     /* R3     - HPOUTR volume */
+	0x0020,     /* R4     - Clocking1 */
+	0x0018,     /* R5     - ADC & DAC Control 1 */
+	0x2008,     /* R6     - ADC & DAC Control 2 */
+	0x000A,     /* R7     - Audio Interface 0 */
+	0x01E4,     /* R8     - Clocking2 */
+	0x0300,     /* R9     - Audio Interface 1 */
+	0x00C0,     /* R10    - Left DAC volume */
+	0x00C0,     /* R11    - Right DAC volume */
+	0x0000,     /* R12 */
+	0x0000,     /* R13 */
+	0x0040,     /* R14    - Audio Interface 2 */
+	0x6243,     /* R15    - Software Reset */
+	0x0000,     /* R16 */
+	0x007B,     /* R17    - ALC1 */
+	0x0000,     /* R18    - ALC2 */
+	0x1C32,     /* R19    - ALC3 */
+	0x3200,     /* R20    - Noise Gate */
+	0x00C0,     /* R21    - Left ADC volume */
+	0x00C0,     /* R22    - Right ADC volume */
+	0x0160,     /* R23    - Additional control(1) */
+	0x0000,     /* R24    - Additional control(2) */
+	0x0000,     /* R25    - Pwr Mgmt (1) */
+	0x0000,     /* R26    - Pwr Mgmt (2) */
+	0x0010,     /* R27    - Additional Control (3) */
+	0x0000,     /* R28    - Anti-pop */
+	0x0000,     /* R29 */
+	0x005E,     /* R30    - Clocking 3 */
+	0x0000,     /* R31    - Input mixer control (1) */
+	0x0145,     /* R32    - Left input mixer volume */
+	0x0145,     /* R33    - Right input mixer volume */
+	0x0009,     /* R34    - Input mixer control (2) */
+	0x0003,     /* R35    - Input bias control */
+	0x0000,     /* R36 */
+	0x0008,     /* R37    - Left input PGA control */
+	0x0008,     /* R38    - Right input PGA control */
+	0x0000,     /* R39 */
+	0x0000,     /* R40    - SPKOUTL volume */
+	0x0000,     /* R41    - SPKOUTR volume */
+	0x0000,     /* R42 */
+	0x0000,     /* R43 */
+	0x0000,     /* R44 */
+	0x0000,     /* R45 */
+	0x0000,     /* R46 */
+	0x0000,     /* R47    - Thermal Shutdown Status */
+	0x8027,     /* R48    - Additional Control (4) */
+	0x0010,     /* R49    - Class D Control 1 */
+	0x0000,     /* R50 */
+	0x0003,     /* R51    - Class D Control 2 */
+	0x0000,     /* R52 */
+	0x0000,     /* R53 */
+	0x0000,     /* R54 */
+	0x0000,     /* R55 */
+	0x0506,     /* R56    - Clocking 4 */
+	0x0000,     /* R57    - DAC DSP Mixing (1) */
+	0x0000,     /* R58    - DAC DSP Mixing (2) */
+	0x0000,     /* R59 */
+	0x0300,     /* R60    - DC Servo 0 */
+	0x0300,     /* R61    - DC Servo 1 */
+	0x0000,     /* R62 */
+	0x0000,     /* R63 */
+	0x0810,     /* R64    - DC Servo 4 */
+	0x0000,     /* R65 */
+	0x0000,     /* R66    - DC Servo 6 */
+	0x0000,     /* R67 */
+	0x001B,     /* R68    - Analogue PGA Bias */
+	0x0000,     /* R69    - Analogue HP 0 */
+	0x0000,     /* R70 */
+	0x01FB,     /* R71    - Analogue HP 2 */
+	0x0000,     /* R72    - Charge Pump 1 */
+	0x0000,     /* R73 */
+	0x0000,     /* R74 */
+	0x0000,     /* R75 */
+	0x0000,     /* R76 */
+	0x0000,     /* R77 */
+	0x0000,     /* R78 */
+	0x0000,     /* R79 */
+	0x0000,     /* R80 */
+	0x0000,     /* R81 */
+	0x0004,     /* R82    - Charge Pump B */
+	0x0000,     /* R83 */
+	0x0000,     /* R84 */
+	0x0000,     /* R85 */
+	0x0000,     /* R86 */
+	0x0000,     /* R87    - Write Sequencer Control 1 */
+	0x0000,     /* R88 */
+	0x0000,     /* R89 */
+	0x0000,     /* R90    - Write Sequencer Control 2 */
+	0x0000,     /* R91 */
+	0x0000,     /* R92 */
+	0x0000,     /* R93    - Write Sequencer Control 3 */
+	0x0000,     /* R94    - Control Interface */
+	0x0000,     /* R95 */
+	0x0000,     /* R96 */
+	0x0000,     /* R97 */
+	0x0000,     /* R98 */
+	0x0000,     /* R99    - Mixer Enables */
+	0x0000,     /* R100   - Headphone Mixer (1) */
+	0x0000,     /* R101   - Headphone Mixer (2) */
+	0x013F,     /* R102   - Headphone Mixer (3) */
+	0x013F,     /* R103   - Headphone Mixer (4) */
+	0x0000,     /* R104 */
+	0x0000,     /* R105   - Speaker Mixer (1) */
+	0x0000,     /* R106   - Speaker Mixer (2) */
+	0x013F,     /* R107   - Speaker Mixer (3) */
+	0x013F,     /* R108   - Speaker Mixer (4) */
+	0x0003,     /* R109   - Speaker Mixer (5) */
+	0x0002,     /* R110   - Beep Generator (1) */
+	0x0000,     /* R111 */
+	0x0000,     /* R112 */
+	0x0000,     /* R113 */
+	0x0000,     /* R114 */
+	0x0006,     /* R115   - Oscillator Trim (3) */
+	0x0026,     /* R116   - Oscillator Trim (4) */
+	0x0000,     /* R117 */
+	0x0000,     /* R118 */
+	0x0000,     /* R119   - Oscillator Trim (7) */
+	0x0000,     /* R120 */
+	0x0000,     /* R121 */
+	0x0000,     /* R122 */
+	0x0000,     /* R123 */
+	0x0011,     /* R124   - Analogue Clocking1 */
+	0x004B,     /* R125   - Analogue Clocking2 */
+	0x000D,     /* R126   - Analogue Clocking3 */
+	0x0000,     /* R127   - PLL Software Reset */
+	0x0000,     /* R128 */
+	0x0000,     /* R129   - PLL2 */
+	0x0000,     /* R130 */
+	0x0000,     /* R131   - PLL 4 */
+	0x0000,     /* R132 */
+	0x0000,     /* R133 */
+	0x0000,     /* R134 */
+	0x0000,     /* R135 */
+	0x0067,     /* R136   - PLL 9 */
+	0x001C,     /* R137   - PLL 10 */
+	0x0071,     /* R138   - PLL 11 */
+	0x00C7,     /* R139   - PLL 12 */
+	0x0067,     /* R140   - PLL 13 */
+	0x0048,     /* R141   - PLL 14 */
+	0x0022,     /* R142   - PLL 15 */
+	0x0097,     /* R143   - PLL 16 */
+	0x0000,     /* R144 */
+	0x0000,     /* R145 */
+	0x0000,     /* R146 */
+	0x0000,     /* R147 */
+	0x0000,     /* R148 */
+	0x0000,     /* R149 */
+	0x0000,     /* R150 */
+	0x0000,     /* R151 */
+	0x0000,     /* R152 */
+	0x0000,     /* R153 */
+	0x0000,     /* R154 */
+	0x000C,     /* R155   - FLL Control (1) */
+	0x0039,     /* R156   - FLL Control (2) */
+	0x0180,     /* R157   - FLL Control (3) */
+	0x0000,     /* R158 */
+	0x0032,     /* R159   - FLL Control (5) */
+	0x0018,     /* R160   - FLL Control (6) */
+	0x007D,     /* R161   - FLL Control (7) */
+	0x0008,     /* R162   - FLL Control (8) */
+	0x0000,     /* R163 */
+	0x0000,     /* R164 */
+	0x0000,     /* R165 */
+	0x0000,     /* R166 */
+	0x0000,     /* R167 */
+	0x0000,     /* R168 */
+	0x0000,     /* R169 */
+	0x0000,     /* R170 */
+	0x0000,     /* R171 */
+	0x0000,     /* R172 */
+	0x0000,     /* R173 */
+	0x0000,     /* R174 */
+	0x0000,     /* R175 */
+	0x0000,     /* R176 */
+	0x0000,     /* R177 */
+	0x0000,     /* R178 */
+	0x0000,     /* R179 */
+	0x0000,     /* R180 */
+	0x0000,     /* R181 */
+	0x0000,     /* R182 */
+	0x0000,     /* R183 */
+	0x0000,     /* R184 */
+	0x0000,     /* R185 */
+	0x0000,     /* R186 */
+	0x0000,     /* R187 */
+	0x0000,     /* R188 */
+	0x0000,     /* R189 */
+	0x0000,     /* R190 */
+	0x0000,     /* R191 */
+	0x0000,     /* R192 */
+	0x0000,     /* R193 */
+	0x0000,     /* R194 */
+	0x0000,     /* R195 */
+	0x0000,     /* R196 */
+	0x0000,     /* R197 */
+	0x0000,     /* R198 */
+	0x0000,     /* R199 */
+	0x0000,     /* R200 */
+	0x0000,     /* R201 */
+	0x0000,     /* R202 */
+	0x0000,     /* R203 */
+	0x0000,     /* R204 */
+	0x0000,     /* R205 */
+	0x0000,     /* R206 */
+	0x0000,     /* R207 */
+	0x0000,     /* R208 */
+	0x0000,     /* R209 */
+	0x0000,     /* R210 */
+	0x0000,     /* R211 */
+	0x0000,     /* R212 */
+	0x0000,     /* R213 */
+	0x0000,     /* R214 */
+	0x0000,     /* R215 */
+	0x0000,     /* R216 */
+	0x0000,     /* R217 */
+	0x0000,     /* R218 */
+	0x0000,     /* R219 */
+	0x0000,     /* R220 */
+	0x0000,     /* R221 */
+	0x0000,     /* R222 */
+	0x0000,     /* R223 */
+	0x0000,     /* R224 */
+	0x0000,     /* R225 */
+	0x0000,     /* R226 */
+	0x0000,     /* R227 */
+	0x0000,     /* R228 */
+	0x0000,     /* R229 */
+	0x0000,     /* R230 */
+	0x0000,     /* R231 */
+	0x0000,     /* R232 */
+	0x0000,     /* R233 */
+	0x0000,     /* R234 */
+	0x0000,     /* R235 */
+	0x0000,     /* R236 */
+	0x0000,     /* R237 */
+	0x0000,     /* R238 */
+	0x0000,     /* R239 */
+	0x0000,     /* R240 */
+	0x0000,     /* R241 */
+	0x0000,     /* R242 */
+	0x0000,     /* R243 */
+	0x0000,     /* R244 */
+	0x0000,     /* R245 */
+	0x0000,     /* R246 */
+	0x0000,     /* R247 */
+	0x0000,     /* R248 */
+	0x0000,     /* R249 */
+	0x0000,     /* R250 */
+	0x0000,     /* R251 */
+	0x0005,     /* R252   - General test 1 */
+	0x0000,     /* R253 */
+	0x0000,     /* R254 */
+	0x0000,     /* R255 */
+	0x0000,     /* R256   - DF1 */
+	0x0000,     /* R257   - DF2 */
+	0x0000,     /* R258   - DF3 */
+	0x0000,     /* R259   - DF4 */
+	0x0000,     /* R260   - DF5 */
+	0x0000,     /* R261   - DF6 */
+	0x0000,     /* R262   - DF7 */
+	0x0000,     /* R263 */
+	0x0000,     /* R264   - LHPF1 */
+	0x0000,     /* R265   - LHPF2 */
+	0x0000,     /* R266 */
+	0x0000,     /* R267 */
+	0x0000,     /* R268   - THREED1 */
+	0x0000,     /* R269   - THREED2 */
+	0x0000,     /* R270   - THREED3 */
+	0x0000,     /* R271   - THREED4 */
+	0x0000,     /* R272 */
+	0x0000,     /* R273 */
+	0x0000,     /* R274 */
+	0x0000,     /* R275 */
+	0x000C,     /* R276   - DRC 1 */
+	0x0925,     /* R277   - DRC 2 */
+	0x0000,     /* R278   - DRC 3 */
+	0x0000,     /* R279   - DRC 4 */
+	0x0000,     /* R280   - DRC 5 */
+	0x0000,     /* R281 */
+	0x0000,     /* R282 */
+	0x0000,     /* R283 */
+	0x0000,     /* R284 */
+	0x0000,     /* R285   - Tloopback */
+	0x0000,     /* R286 */
+	0x0000,     /* R287 */
+	0x0000,     /* R288 */
+	0x0000,     /* R289 */
+	0x0000,     /* R290 */
+	0x0000,     /* R291 */
+	0x0000,     /* R292 */
+	0x0000,     /* R293 */
+	0x0000,     /* R294 */
+	0x0000,     /* R295 */
+	0x0000,     /* R296 */
+	0x0000,     /* R297 */
+	0x0000,     /* R298 */
+	0x0000,     /* R299 */
+	0x0000,     /* R300 */
+	0x0000,     /* R301 */
+	0x0000,     /* R302 */
+	0x0000,     /* R303 */
+	0x0000,     /* R304 */
+	0x0000,     /* R305 */
+	0x0000,     /* R306 */
+	0x0000,     /* R307 */
+	0x0000,     /* R308 */
+	0x0000,     /* R309 */
+	0x0000,     /* R310 */
+	0x0000,     /* R311 */
+	0x0000,     /* R312 */
+	0x0000,     /* R313 */
+	0x0000,     /* R314 */
+	0x0000,     /* R315 */
+	0x0000,     /* R316 */
+	0x0000,     /* R317 */
+	0x0000,     /* R318 */
+	0x0000,     /* R319 */
+	0x0000,     /* R320 */
+	0x0000,     /* R321 */
+	0x0000,     /* R322 */
+	0x0000,     /* R323 */
+	0x0000,     /* R324 */
+	0x0000,     /* R325 */
+	0x0000,     /* R326 */
+	0x0000,     /* R327 */
+	0x0000,     /* R328 */
+	0x0000,     /* R329 */
+	0x0000,     /* R330 */
+	0x0000,     /* R331 */
+	0x0000,     /* R332 */
+	0x0000,     /* R333 */
+	0x0000,     /* R334 */
+	0x0004,     /* R335   - EQ1 */
+	0x6318,     /* R336   - EQ2 */
+	0x6300,     /* R337   - EQ3 */
+	0x0FCA,     /* R338   - EQ4 */
+	0x0400,     /* R339   - EQ5 */
+	0x00D8,     /* R340   - EQ6 */
+	0x1EB5,     /* R341   - EQ7 */
+	0xF145,     /* R342   - EQ8 */
+	0x0B75,     /* R343   - EQ9 */
+	0x01C5,     /* R344   - EQ10 */
+	0x1C58,     /* R345   - EQ11 */
+	0xF373,     /* R346   - EQ12 */
+	0x0A54,     /* R347   - EQ13 */
+	0x0558,     /* R348   - EQ14 */
+	0x168E,     /* R349   - EQ15 */
+	0xF829,     /* R350   - EQ16 */
+	0x07AD,     /* R351   - EQ17 */
+	0x1103,     /* R352   - EQ18 */
+	0x0564,     /* R353   - EQ19 */
+	0x0559,     /* R354   - EQ20 */
+	0x4000,     /* R355   - EQ21 */
+	0x6318,     /* R356   - EQ22 */
+	0x6300,     /* R357   - EQ23 */
+	0x0FCA,     /* R358   - EQ24 */
+	0x0400,     /* R359   - EQ25 */
+	0x00D8,     /* R360   - EQ26 */
+	0x1EB5,     /* R361   - EQ27 */
+	0xF145,     /* R362   - EQ28 */
+	0x0B75,     /* R363   - EQ29 */
+	0x01C5,     /* R364   - EQ30 */
+	0x1C58,     /* R365   - EQ31 */
+	0xF373,     /* R366   - EQ32 */
+	0x0A54,     /* R367   - EQ33 */
+	0x0558,     /* R368   - EQ34 */
+	0x168E,     /* R369   - EQ35 */
+	0xF829,     /* R370   - EQ36 */
+	0x07AD,     /* R371   - EQ37 */
+	0x1103,     /* R372   - EQ38 */
+	0x0564,     /* R373   - EQ39 */
+	0x0559,     /* R374   - EQ40 */
+	0x4000,     /* R375   - EQ41 */
+	0x0000,     /* R376 */
+	0x0000,     /* R377 */
+	0x0000,     /* R378 */
+	0x0000,     /* R379 */
+	0x0000,     /* R380 */
+	0x0000,     /* R381 */
+	0x0000,     /* R382 */
+	0x0000,     /* R383 */
+	0x0000,     /* R384 */
+	0x0000,     /* R385 */
+	0x0000,     /* R386 */
+	0x0000,     /* R387 */
+	0x0000,     /* R388 */
+	0x0000,     /* R389 */
+	0x0000,     /* R390 */
+	0x0000,     /* R391 */
+	0x0000,     /* R392 */
+	0x0000,     /* R393 */
+	0x0000,     /* R394 */
+	0x0000,     /* R395 */
+	0x0000,     /* R396 */
+	0x0000,     /* R397 */
+	0x0000,     /* R398 */
+	0x0000,     /* R399 */
+	0x0000,     /* R400 */
+	0x0000,     /* R401 */
+	0x0000,     /* R402 */
+	0x0000,     /* R403 */
+	0x0000,     /* R404 */
+	0x0000,     /* R405 */
+	0x0000,     /* R406 */
+	0x0000,     /* R407 */
+	0x0000,     /* R408 */
+	0x0000,     /* R409 */
+	0x0000,     /* R410 */
+	0x0000,     /* R411 */
+	0x0000,     /* R412 */
+	0x0000,     /* R413 */
+	0x0000,     /* R414 */
+	0x0000,     /* R415 */
+	0x0000,     /* R416 */
+	0x0000,     /* R417 */
+	0x0000,     /* R418 */
+	0x0000,     /* R419 */
+	0x0000,     /* R420 */
+	0x0000,     /* R421 */
+	0x0000,     /* R422 */
+	0x0000,     /* R423 */
+	0x0000,     /* R424 */
+	0x0000,     /* R425 */
+	0x0000,     /* R426 */
+	0x0000,     /* R427 */
+	0x0000,     /* R428 */
+	0x0000,     /* R429 */
+	0x0000,     /* R430 */
+	0x0000,     /* R431 */
+	0x0000,     /* R432 */
+	0x0000,     /* R433 */
+	0x0000,     /* R434 */
+	0x0000,     /* R435 */
+	0x0000,     /* R436 */
+	0x0000,     /* R437 */
+	0x0000,     /* R438 */
+	0x0000,     /* R439 */
+	0x0000,     /* R440 */
+	0x0000,     /* R441 */
+	0x0000,     /* R442 */
+	0x0000,     /* R443 */
+	0x0000,     /* R444 */
+	0x0000,     /* R445 */
+	0x0000,     /* R446 */
+	0x0000,     /* R447 */
+	0x0000,     /* R448 */
+	0x0000,     /* R449 */
+	0x0000,     /* R450 */
+	0x0000,     /* R451 */
+	0x0000,     /* R452 */
+	0x0000,     /* R453 */
+	0x0000,     /* R454 */
+	0x0000,     /* R455 */
+	0x0000,     /* R456 */
+	0x0000,     /* R457 */
+	0x0000,     /* R458 */
+	0x0000,     /* R459 */
+	0x0000,     /* R460 */
+	0x0000,     /* R461 */
+	0x0000,     /* R462 */
+	0x0000,     /* R463 */
+	0x0000,     /* R464 */
+	0x0000,     /* R465 */
+	0x0000,     /* R466 */
+	0x0000,     /* R467 */
+	0x0000,     /* R468 */
+	0x0000,     /* R469 */
+	0x0000,     /* R470 */
+	0x0000,     /* R471 */
+	0x0000,     /* R472 */
+	0x0000,     /* R473 */
+	0x0000,     /* R474 */
+	0x0000,     /* R475 */
+	0x0000,     /* R476 */
+	0x0000,     /* R477 */
+	0x0000,     /* R478 */
+	0x0000,     /* R479 */
+	0x0000,     /* R480 */
+	0x0000,     /* R481 */
+	0x0000,     /* R482 */
+	0x0000,     /* R483 */
+	0x0000,     /* R484 */
+	0x0000,     /* R485 */
+	0x0000,     /* R486 */
+	0x0000,     /* R487 */
+	0x0000,     /* R488 */
+	0x0000,     /* R489 */
+	0x0000,     /* R490 */
+	0x0000,     /* R491 */
+	0x0000,     /* R492 */
+	0x0000,     /* R493 */
+	0x0000,     /* R494 */
+	0x0000,     /* R495 */
+	0x0000,     /* R496 */
+	0x0000,     /* R497 */
+	0x0000,     /* R498 */
+	0x0000,     /* R499 */
+	0x0000,     /* R500 */
+	0x0000,     /* R501 */
+	0x0000,     /* R502 */
+	0x0000,     /* R503 */
+	0x0000,     /* R504 */
+	0x0000,     /* R505 */
+	0x0000,     /* R506 */
+	0x0000,     /* R507 */
+	0x0000,     /* R508 */
+	0x0000,     /* R509 */
+	0x0000,     /* R510 */
+	0x0000,     /* R511 */
+	0x0000,     /* R512 */
+	0x0000,     /* R513   - GPIO 2 */
+	0x0000,     /* R514   - GPIO 3 */
+	0x0000,     /* R515 */
+	0x8100,     /* R516   - GPIO 5 */
+	0x8100,     /* R517   - GPIO 6 */
+	0x0000,     /* R518 */
+	0x0000,     /* R519 */
+	0x0000,     /* R520 */
+	0x0000,     /* R521 */
+	0x0000,     /* R522 */
+	0x0000,     /* R523 */
+	0x0000,     /* R524 */
+	0x0000,     /* R525 */
+	0x0000,     /* R526 */
+	0x0000,     /* R527 */
+	0x0000,     /* R528 */
+	0x0000,     /* R529 */
+	0x0000,     /* R530 */
+	0x0000,     /* R531 */
+	0x0000,     /* R532 */
+	0x0000,     /* R533 */
+	0x0000,     /* R534 */
+	0x0000,     /* R535 */
+	0x0000,     /* R536 */
+	0x0000,     /* R537 */
+	0x0000,     /* R538 */
+	0x0000,     /* R539 */
+	0x0000,     /* R540 */
+	0x0000,     /* R541 */
+	0x0000,     /* R542 */
+	0x0000,     /* R543 */
+	0x0000,     /* R544 */
+	0x0000,     /* R545 */
+	0x0000,     /* R546 */
+	0x0000,     /* R547 */
+	0x0000,     /* R548 */
+	0x0000,     /* R549 */
+	0x0000,     /* R550 */
+	0x0000,     /* R551 */
+	0x0000,     /* R552 */
+	0x0000,     /* R553 */
+	0x0000,     /* R554 */
+	0x0000,     /* R555 */
+	0x0000,     /* R556 */
+	0x0000,     /* R557 */
+	0x0000,     /* R558 */
+	0x0000,     /* R559 */
+	0x0000,     /* R560   - Interrupt Status 1 */
+	0x0000,     /* R561   - Interrupt Status 2 */
+	0x0000,     /* R562 */
+	0x0000,     /* R563 */
+	0x0000,     /* R564 */
+	0x0000,     /* R565 */
+	0x0000,     /* R566 */
+	0x0000,     /* R567 */
+	0x0030,     /* R568   - Interrupt Status 1 Mask */
+	0xFFED,     /* R569   - Interrupt Status 2 Mask */
+	0x0000,     /* R570 */
+	0x0000,     /* R571 */
+	0x0000,     /* R572 */
+	0x0000,     /* R573 */
+	0x0000,     /* R574 */
+	0x0000,     /* R575 */
+	0x0000,     /* R576   - Interrupt Control */
+	0x0000,     /* R577 */
+	0x0000,     /* R578 */
+	0x0000,     /* R579 */
+	0x0000,     /* R580 */
+	0x0000,     /* R581 */
+	0x0000,     /* R582 */
+	0x0000,     /* R583 */
+	0x002D,     /* R584   - IRQ Debounce */
+	0x0000,     /* R585 */
+	0x0000,     /* R586   -  MICINT Source Pol */
+	0x0000,     /* R587 */
+	0x0000,     /* R588 */
+	0x0000,     /* R589 */
+	0x0000,     /* R590 */
+	0x0000,     /* R591 */
+	0x0000,     /* R592 */
+	0x0000,     /* R593 */
+	0x0000,     /* R594 */
+	0x0000,     /* R595 */
+	0x0000,     /* R596 */
+	0x0000,     /* R597 */
+	0x0000,     /* R598 */
+	0x0000,     /* R599 */
+	0x0000,     /* R600 */
+	0x0000,     /* R601 */
+	0x0000,     /* R602 */
+	0x0000,     /* R603 */
+	0x0000,     /* R604 */
+	0x0000,     /* R605 */
+	0x0000,     /* R606 */
+	0x0000,     /* R607 */
+	0x0000,     /* R608 */
+	0x0000,     /* R609 */
+	0x0000,     /* R610 */
+	0x0000,     /* R611 */
+	0x0000,     /* R612 */
+	0x0000,     /* R613 */
+	0x0000,     /* R614 */
+	0x0000,     /* R615 */
+	0x0000,     /* R616 */
+	0x0000,     /* R617 */
+	0x0000,     /* R618 */
+	0x0000,     /* R619 */
+	0x0000,     /* R620 */
+	0x0000,     /* R621 */
+	0x0000,     /* R622 */
+	0x0000,     /* R623 */
+	0x0000,     /* R624 */
+	0x0000,     /* R625 */
+	0x0000,     /* R626 */
+	0x0000,     /* R627 */
+	0x0000,     /* R628 */
+	0x0000,     /* R629 */
+	0x0000,     /* R630 */
+	0x0000,     /* R631 */
+	0x0000,     /* R632 */
+	0x0000,     /* R633 */
+	0x0000,     /* R634 */
+	0x0000,     /* R635 */
+	0x0000,     /* R636 */
+	0x0000,     /* R637 */
+	0x0000,     /* R638 */
+	0x0000,     /* R639 */
+	0x0000,     /* R640 */
+	0x0000,     /* R641 */
+	0x0000,     /* R642 */
+	0x0000,     /* R643 */
+	0x0000,     /* R644 */
+	0x0000,     /* R645 */
+	0x0000,     /* R646 */
+	0x0000,     /* R647 */
+	0x0000,     /* R648 */
+	0x0000,     /* R649 */
+	0x0000,     /* R650 */
+	0x0000,     /* R651 */
+	0x0000,     /* R652 */
+	0x0000,     /* R653 */
+	0x0000,     /* R654 */
+	0x0000,     /* R655 */
+	0x0000,     /* R656 */
+	0x0000,     /* R657 */
+	0x0000,     /* R658 */
+	0x0000,     /* R659 */
+	0x0000,     /* R660 */
+	0x0000,     /* R661 */
+	0x0000,     /* R662 */
+	0x0000,     /* R663 */
+	0x0000,     /* R664 */
+	0x0000,     /* R665 */
+	0x0000,     /* R666 */
+	0x0000,     /* R667 */
+	0x0000,     /* R668 */
+	0x0000,     /* R669 */
+	0x0000,     /* R670 */
+	0x0000,     /* R671 */
+	0x0000,     /* R672 */
+	0x0000,     /* R673 */
+	0x0000,     /* R674 */
+	0x0000,     /* R675 */
+	0x0000,     /* R676 */
+	0x0000,     /* R677 */
+	0x0000,     /* R678 */
+	0x0000,     /* R679 */
+	0x0000,     /* R680 */
+	0x0000,     /* R681 */
+	0x0000,     /* R682 */
+	0x0000,     /* R683 */
+	0x0000,     /* R684 */
+	0x0000,     /* R685 */
+	0x0000,     /* R686 */
+	0x0000,     /* R687 */
+	0x0000,     /* R688 */
+	0x0000,     /* R689 */
+	0x0000,     /* R690 */
+	0x0000,     /* R691 */
+	0x0000,     /* R692 */
+	0x0000,     /* R693 */
+	0x0000,     /* R694 */
+	0x0000,     /* R695 */
+	0x0000,     /* R696 */
+	0x0000,     /* R697 */
+	0x0000,     /* R698 */
+	0x0000,     /* R699 */
+	0x0000,     /* R700 */
+	0x0000,     /* R701 */
+	0x0000,     /* R702 */
+	0x0000,     /* R703 */
+	0x0000,     /* R704 */
+	0x0000,     /* R705 */
+	0x0000,     /* R706 */
+	0x0000,     /* R707 */
+	0x0000,     /* R708 */
+	0x0000,     /* R709 */
+	0x0000,     /* R710 */
+	0x0000,     /* R711 */
+	0x0000,     /* R712 */
+	0x0000,     /* R713 */
+	0x0000,     /* R714 */
+	0x0000,     /* R715 */
+	0x0000,     /* R716 */
+	0x0000,     /* R717 */
+	0x0000,     /* R718 */
+	0x0000,     /* R719 */
+	0x0000,     /* R720 */
+	0x0000,     /* R721 */
+	0x0000,     /* R722 */
+	0x0000,     /* R723 */
+	0x0000,     /* R724 */
+	0x0000,     /* R725 */
+	0x0000,     /* R726 */
+	0x0000,     /* R727 */
+	0x0000,     /* R728 */
+	0x0000,     /* R729 */
+	0x0000,     /* R730 */
+	0x0000,     /* R731 */
+	0x0000,     /* R732 */
+	0x0000,     /* R733 */
+	0x0000,     /* R734 */
+	0x0000,     /* R735 */
+	0x0000,     /* R736 */
+	0x0000,     /* R737 */
+	0x0000,     /* R738 */
+	0x0000,     /* R739 */
+	0x0000,     /* R740 */
+	0x0000,     /* R741 */
+	0x0000,     /* R742 */
+	0x0000,     /* R743 */
+	0x0000,     /* R744 */
+	0x0000,     /* R745 */
+	0x0000,     /* R746 */
+	0x0000,     /* R747 */
+	0x0000,     /* R748 */
+	0x0000,     /* R749 */
+	0x0000,     /* R750 */
+	0x0000,     /* R751 */
+	0x0000,     /* R752 */
+	0x0000,     /* R753 */
+	0x0000,     /* R754 */
+	0x0000,     /* R755 */
+	0x0000,     /* R756 */
+	0x0000,     /* R757 */
+	0x0000,     /* R758 */
+	0x0000,     /* R759 */
+	0x0000,     /* R760 */
+	0x0000,     /* R761 */
+	0x0000,     /* R762 */
+	0x0000,     /* R763 */
+	0x0000,     /* R764 */
+	0x0000,     /* R765 */
+	0x0000,     /* R766 */
+	0x0000,     /* R767 */
+	0x1C00,     /* R768   - DSP2 Power Management */
+	0x0000,     /* R769 */
+	0x0000,     /* R770 */
+	0x0000,     /* R771 */
+	0x0000,     /* R772 */
+	0x0000,     /* R773 */
+	0x0000,     /* R774 */
+	0x0000,     /* R775 */
+	0x0000,     /* R776 */
+	0x0000,     /* R777 */
+	0x0000,     /* R778 */
+	0x0000,     /* R779 */
+	0x0000,     /* R780 */
+	0x0000,     /* R781 */
+	0x0000,     /* R782 */
+	0x0000,     /* R783 */
+	0x0000,     /* R784 */
+	0x0000,     /* R785 */
+	0x0000,     /* R786 */
+	0x0000,     /* R787 */
+	0x0000,     /* R788 */
+	0x0000,     /* R789 */
+	0x0000,     /* R790 */
+	0x0000,     /* R791 */
+	0x0000,     /* R792 */
+	0x0000,     /* R793 */
+	0x0000,     /* R794 */
+	0x0000,     /* R795 */
+	0x0000,     /* R796 */
+	0x0000,     /* R797 */
+	0x0000,     /* R798 */
+	0x0000,     /* R799 */
+	0x0000,     /* R800 */
+	0x0000,     /* R801 */
+	0x0000,     /* R802 */
+	0x0000,     /* R803 */
+	0x0000,     /* R804 */
+	0x0000,     /* R805 */
+	0x0000,     /* R806 */
+	0x0000,     /* R807 */
+	0x0000,     /* R808 */
+	0x0000,     /* R809 */
+	0x0000,     /* R810 */
+	0x0000,     /* R811 */
+	0x0000,     /* R812 */
+	0x0000,     /* R813 */
+	0x0000,     /* R814 */
+	0x0000,     /* R815 */
+	0x0000,     /* R816 */
+	0x0000,     /* R817 */
+	0x0000,     /* R818 */
+	0x0000,     /* R819 */
+	0x0000,     /* R820 */
+	0x0000,     /* R821 */
+	0x0000,     /* R822 */
+	0x0000,     /* R823 */
+	0x0000,     /* R824 */
+	0x0000,     /* R825 */
+	0x0000,     /* R826 */
+	0x0000,     /* R827 */
+	0x0000,     /* R828 */
+	0x0000,     /* R829 */
+	0x0000,     /* R830 */
+	0x0000,     /* R831 */
+	0x0000,     /* R832 */
+	0x0000,     /* R833 */
+	0x0000,     /* R834 */
+	0x0000,     /* R835 */
+	0x0000,     /* R836 */
+	0x0000,     /* R837 */
+	0x0000,     /* R838 */
+	0x0000,     /* R839 */
+	0x0000,     /* R840 */
+	0x0000,     /* R841 */
+	0x0000,     /* R842 */
+	0x0000,     /* R843 */
+	0x0000,     /* R844 */
+	0x0000,     /* R845 */
+	0x0000,     /* R846 */
+	0x0000,     /* R847 */
+	0x0000,     /* R848 */
+	0x0000,     /* R849 */
+	0x0000,     /* R850 */
+	0x0000,     /* R851 */
+	0x0000,     /* R852 */
+	0x0000,     /* R853 */
+	0x0000,     /* R854 */
+	0x0000,     /* R855 */
+	0x0000,     /* R856 */
+	0x0000,     /* R857 */
+	0x0000,     /* R858 */
+	0x0000,     /* R859 */
+	0x0000,     /* R860 */
+	0x0000,     /* R861 */
+	0x0000,     /* R862 */
+	0x0000,     /* R863 */
+	0x0000,     /* R864 */
+	0x0000,     /* R865 */
+	0x0000,     /* R866 */
+	0x0000,     /* R867 */
+	0x0000,     /* R868 */
+	0x0000,     /* R869 */
+	0x0000,     /* R870 */
+	0x0000,     /* R871 */
+	0x0000,     /* R872 */
+	0x0000,     /* R873 */
+	0x0000,     /* R874 */
+	0x0000,     /* R875 */
+	0x0000,     /* R876 */
+	0x0000,     /* R877 */
+	0x0000,     /* R878 */
+	0x0000,     /* R879 */
+	0x0000,     /* R880 */
+	0x0000,     /* R881 */
+	0x0000,     /* R882 */
+	0x0000,     /* R883 */
+	0x0000,     /* R884 */
+	0x0000,     /* R885 */
+	0x0000,     /* R886 */
+	0x0000,     /* R887 */
+	0x0000,     /* R888 */
+	0x0000,     /* R889 */
+	0x0000,     /* R890 */
+	0x0000,     /* R891 */
+	0x0000,     /* R892 */
+	0x0000,     /* R893 */
+	0x0000,     /* R894 */
+	0x0000,     /* R895 */
+	0x0000,     /* R896 */
+	0x0000,     /* R897 */
+	0x0000,     /* R898 */
+	0x0000,     /* R899 */
+	0x0000,     /* R900 */
+	0x0000,     /* R901 */
+	0x0000,     /* R902 */
+	0x0000,     /* R903 */
+	0x0000,     /* R904 */
+	0x0000,     /* R905 */
+	0x0000,     /* R906 */
+	0x0000,     /* R907 */
+	0x0000,     /* R908 */
+	0x0000,     /* R909 */
+	0x0000,     /* R910 */
+	0x0000,     /* R911 */
+	0x0000,     /* R912 */
+	0x0000,     /* R913 */
+	0x0000,     /* R914 */
+	0x0000,     /* R915 */
+	0x0000,     /* R916 */
+	0x0000,     /* R917 */
+	0x0000,     /* R918 */
+	0x0000,     /* R919 */
+	0x0000,     /* R920 */
+	0x0000,     /* R921 */
+	0x0000,     /* R922 */
+	0x0000,     /* R923 */
+	0x0000,     /* R924 */
+	0x0000,     /* R925 */
+	0x0000,     /* R926 */
+	0x0000,     /* R927 */
+	0x0000,     /* R928 */
+	0x0000,     /* R929 */
+	0x0000,     /* R930 */
+	0x0000,     /* R931 */
+	0x0000,     /* R932 */
+	0x0000,     /* R933 */
+	0x0000,     /* R934 */
+	0x0000,     /* R935 */
+	0x0000,     /* R936 */
+	0x0000,     /* R937 */
+	0x0000,     /* R938 */
+	0x0000,     /* R939 */
+	0x0000,     /* R940 */
+	0x0000,     /* R941 */
+	0x0000,     /* R942 */
+	0x0000,     /* R943 */
+	0x0000,     /* R944 */
+	0x0000,     /* R945 */
+	0x0000,     /* R946 */
+	0x0000,     /* R947 */
+	0x0000,     /* R948 */
+	0x0000,     /* R949 */
+	0x0000,     /* R950 */
+	0x0000,     /* R951 */
+	0x0000,     /* R952 */
+	0x0000,     /* R953 */
+	0x0000,     /* R954 */
+	0x0000,     /* R955 */
+	0x0000,     /* R956 */
+	0x0000,     /* R957 */
+	0x0000,     /* R958 */
+	0x0000,     /* R959 */
+	0x0000,     /* R960 */
+	0x0000,     /* R961 */
+	0x0000,     /* R962 */
+	0x0000,     /* R963 */
+	0x0000,     /* R964 */
+	0x0000,     /* R965 */
+	0x0000,     /* R966 */
+	0x0000,     /* R967 */
+	0x0000,     /* R968 */
+	0x0000,     /* R969 */
+	0x0000,     /* R970 */
+	0x0000,     /* R971 */
+	0x0000,     /* R972 */
+	0x0000,     /* R973 */
+	0x0000,     /* R974 */
+	0x0000,     /* R975 */
+	0x0000,     /* R976 */
+	0x0000,     /* R977 */
+	0x0000,     /* R978 */
+	0x0000,     /* R979 */
+	0x0000,     /* R980 */
+	0x0000,     /* R981 */
+	0x0000,     /* R982 */
+	0x0000,     /* R983 */
+	0x0000,     /* R984 */
+	0x0000,     /* R985 */
+	0x0000,     /* R986 */
+	0x0000,     /* R987 */
+	0x0000,     /* R988 */
+	0x0000,     /* R989 */
+	0x0000,     /* R990 */
+	0x0000,     /* R991 */
+	0x0000,     /* R992 */
+	0x0000,     /* R993 */
+	0x0000,     /* R994 */
+	0x0000,     /* R995 */
+	0x0000,     /* R996 */
+	0x0000,     /* R997 */
+	0x0000,     /* R998 */
+	0x0000,     /* R999 */
+	0x0000,     /* R1000 */
+	0x0000,     /* R1001 */
+	0x0000,     /* R1002 */
+	0x0000,     /* R1003 */
+	0x0000,     /* R1004 */
+	0x0000,     /* R1005 */
+	0x0000,     /* R1006 */
+	0x0000,     /* R1007 */
+	0x0000,     /* R1008 */
+	0x0000,     /* R1009 */
+	0x0000,     /* R1010 */
+	0x0000,     /* R1011 */
+	0x0000,     /* R1012 */
+	0x0000,     /* R1013 */
+	0x0000,     /* R1014 */
+	0x0000,     /* R1015 */
+	0x0000,     /* R1016 */
+	0x0000,     /* R1017 */
+	0x0000,     /* R1018 */
+	0x0000,     /* R1019 */
+	0x0000,     /* R1020 */
+	0x0000,     /* R1021 */
+	0x0000,     /* R1022 */
+	0x0000,     /* R1023 */
+	0x0000,     /* R1024 */
+	0x0000,     /* R1025 */
+	0x0000,     /* R1026 */
+	0x0000,     /* R1027 */
+	0x0000,     /* R1028 */
+	0x0000,     /* R1029 */
+	0x0000,     /* R1030 */
+	0x0000,     /* R1031 */
+	0x0000,     /* R1032 */
+	0x0000,     /* R1033 */
+	0x0000,     /* R1034 */
+	0x0000,     /* R1035 */
+	0x0000,     /* R1036 */
+	0x0000,     /* R1037  - DSP2_ExecControl */
+	0x0000,     /* R1038 */
+	0x0000,     /* R1039 */
+	0x0000,     /* R1040 */
+	0x0000,     /* R1041 */
+	0x0000,     /* R1042 */
+	0x0000,     /* R1043 */
+	0x0000,     /* R1044 */
+	0x0000,     /* R1045 */
+	0x0000,     /* R1046 */
+	0x0000,     /* R1047 */
+	0x0000,     /* R1048 */
+	0x0000,     /* R1049 */
+	0x0000,     /* R1050 */
+	0x0000,     /* R1051 */
+	0x0000,     /* R1052 */
+	0x0000,     /* R1053 */
+	0x0000,     /* R1054 */
+	0x0000,     /* R1055 */
+	0x0000,     /* R1056 */
+	0x0000,     /* R1057 */
+	0x0000,     /* R1058 */
+	0x0000,     /* R1059 */
+	0x0000,     /* R1060 */
+	0x0000,     /* R1061 */
+	0x0000,     /* R1062 */
+	0x0000,     /* R1063 */
+	0x0000,     /* R1064 */
+	0x0000,     /* R1065 */
+	0x0000,     /* R1066 */
+	0x0000,     /* R1067 */
+	0x0000,     /* R1068 */
+	0x0000,     /* R1069 */
+	0x0000,     /* R1070 */
+	0x0000,     /* R1071 */
+	0x0000,     /* R1072 */
+	0x0000,     /* R1073 */
+	0x0000,     /* R1074 */
+	0x0000,     /* R1075 */
+	0x0000,     /* R1076 */
+	0x0000,     /* R1077 */
+	0x0000,     /* R1078 */
+	0x0000,     /* R1079 */
+	0x0000,     /* R1080 */
+	0x0000,     /* R1081 */
+	0x0000,     /* R1082 */
+	0x0000,     /* R1083 */
+	0x0000,     /* R1084 */
+	0x0000,     /* R1085 */
+	0x0000,     /* R1086 */
+	0x0000,     /* R1087 */
+	0x0000,     /* R1088 */
+	0x0000,     /* R1089 */
+	0x0000,     /* R1090 */
+	0x0000,     /* R1091 */
+	0x0000,     /* R1092 */
+	0x0000,     /* R1093 */
+	0x0000,     /* R1094 */
+	0x0000,     /* R1095 */
+	0x0000,     /* R1096 */
+	0x0000,     /* R1097 */
+	0x0000,     /* R1098 */
+	0x0000,     /* R1099 */
+	0x0000,     /* R1100 */
+	0x0000,     /* R1101 */
+	0x0000,     /* R1102 */
+	0x0000,     /* R1103 */
+	0x0000,     /* R1104 */
+	0x0000,     /* R1105 */
+	0x0000,     /* R1106 */
+	0x0000,     /* R1107 */
+	0x0000,     /* R1108 */
+	0x0000,     /* R1109 */
+	0x0000,     /* R1110 */
+	0x0000,     /* R1111 */
+	0x0000,     /* R1112 */
+	0x0000,     /* R1113 */
+	0x0000,     /* R1114 */
+	0x0000,     /* R1115 */
+	0x0000,     /* R1116 */
+	0x0000,     /* R1117 */
+	0x0000,     /* R1118 */
+	0x0000,     /* R1119 */
+	0x0000,     /* R1120 */
+	0x0000,     /* R1121 */
+	0x0000,     /* R1122 */
+	0x0000,     /* R1123 */
+	0x0000,     /* R1124 */
+	0x0000,     /* R1125 */
+	0x0000,     /* R1126 */
+	0x0000,     /* R1127 */
+	0x0000,     /* R1128 */
+	0x0000,     /* R1129 */
+	0x0000,     /* R1130 */
+	0x0000,     /* R1131 */
+	0x0000,     /* R1132 */
+	0x0000,     /* R1133 */
+	0x0000,     /* R1134 */
+	0x0000,     /* R1135 */
+	0x0000,     /* R1136 */
+	0x0000,     /* R1137 */
+	0x0000,     /* R1138 */
+	0x0000,     /* R1139 */
+	0x0000,     /* R1140 */
+	0x0000,     /* R1141 */
+	0x0000,     /* R1142 */
+	0x0000,     /* R1143 */
+	0x0000,     /* R1144 */
+	0x0000,     /* R1145 */
+	0x0000,     /* R1146 */
+	0x0000,     /* R1147 */
+	0x0000,     /* R1148 */
+	0x0000,     /* R1149 */
+	0x0000,     /* R1150 */
+	0x0000,     /* R1151 */
+	0x0000,     /* R1152 */
+	0x0000,     /* R1153 */
+	0x0000,     /* R1154 */
+	0x0000,     /* R1155 */
+	0x0000,     /* R1156 */
+	0x0000,     /* R1157 */
+	0x0000,     /* R1158 */
+	0x0000,     /* R1159 */
+	0x0000,     /* R1160 */
+	0x0000,     /* R1161 */
+	0x0000,     /* R1162 */
+	0x0000,     /* R1163 */
+	0x0000,     /* R1164 */
+	0x0000,     /* R1165 */
+	0x0000,     /* R1166 */
+	0x0000,     /* R1167 */
+	0x0000,     /* R1168 */
+	0x0000,     /* R1169 */
+	0x0000,     /* R1170 */
+	0x0000,     /* R1171 */
+	0x0000,     /* R1172 */
+	0x0000,     /* R1173 */
+	0x0000,     /* R1174 */
+	0x0000,     /* R1175 */
+	0x0000,     /* R1176 */
+	0x0000,     /* R1177 */
+	0x0000,     /* R1178 */
+	0x0000,     /* R1179 */
+	0x0000,     /* R1180 */
+	0x0000,     /* R1181 */
+	0x0000,     /* R1182 */
+	0x0000,     /* R1183 */
+	0x0000,     /* R1184 */
+	0x0000,     /* R1185 */
+	0x0000,     /* R1186 */
+	0x0000,     /* R1187 */
+	0x0000,     /* R1188 */
+	0x0000,     /* R1189 */
+	0x0000,     /* R1190 */
+	0x0000,     /* R1191 */
+	0x0000,     /* R1192 */
+	0x0000,     /* R1193 */
+	0x0000,     /* R1194 */
+	0x0000,     /* R1195 */
+	0x0000,     /* R1196 */
+	0x0000,     /* R1197 */
+	0x0000,     /* R1198 */
+	0x0000,     /* R1199 */
+	0x0000,     /* R1200 */
+	0x0000,     /* R1201 */
+	0x0000,     /* R1202 */
+	0x0000,     /* R1203 */
+	0x0000,     /* R1204 */
+	0x0000,     /* R1205 */
+	0x0000,     /* R1206 */
+	0x0000,     /* R1207 */
+	0x0000,     /* R1208 */
+	0x0000,     /* R1209 */
+	0x0000,     /* R1210 */
+	0x0000,     /* R1211 */
+	0x0000,     /* R1212 */
+	0x0000,     /* R1213 */
+	0x0000,     /* R1214 */
+	0x0000,     /* R1215 */
+	0x0000,     /* R1216 */
+	0x0000,     /* R1217 */
+	0x0000,     /* R1218 */
+	0x0000,     /* R1219 */
+	0x0000,     /* R1220 */
+	0x0000,     /* R1221 */
+	0x0000,     /* R1222 */
+	0x0000,     /* R1223 */
+	0x0000,     /* R1224 */
+	0x0000,     /* R1225 */
+	0x0000,     /* R1226 */
+	0x0000,     /* R1227 */
+	0x0000,     /* R1228 */
+	0x0000,     /* R1229 */
+	0x0000,     /* R1230 */
+	0x0000,     /* R1231 */
+	0x0000,     /* R1232 */
+	0x0000,     /* R1233 */
+	0x0000,     /* R1234 */
+	0x0000,     /* R1235 */
+	0x0000,     /* R1236 */
+	0x0000,     /* R1237 */
+	0x0000,     /* R1238 */
+	0x0000,     /* R1239 */
+	0x0000,     /* R1240 */
+	0x0000,     /* R1241 */
+	0x0000,     /* R1242 */
+	0x0000,     /* R1243 */
+	0x0000,     /* R1244 */
+	0x0000,     /* R1245 */
+	0x0000,     /* R1246 */
+	0x0000,     /* R1247 */
+	0x0000,     /* R1248 */
+	0x0000,     /* R1249 */
+	0x0000,     /* R1250 */
+	0x0000,     /* R1251 */
+	0x0000,     /* R1252 */
+	0x0000,     /* R1253 */
+	0x0000,     /* R1254 */
+	0x0000,     /* R1255 */
+	0x0000,     /* R1256 */
+	0x0000,     /* R1257 */
+	0x0000,     /* R1258 */
+	0x0000,     /* R1259 */
+	0x0000,     /* R1260 */
+	0x0000,     /* R1261 */
+	0x0000,     /* R1262 */
+	0x0000,     /* R1263 */
+	0x0000,     /* R1264 */
+	0x0000,     /* R1265 */
+	0x0000,     /* R1266 */
+	0x0000,     /* R1267 */
+	0x0000,     /* R1268 */
+	0x0000,     /* R1269 */
+	0x0000,     /* R1270 */
+	0x0000,     /* R1271 */
+	0x0000,     /* R1272 */
+	0x0000,     /* R1273 */
+	0x0000,     /* R1274 */
+	0x0000,     /* R1275 */
+	0x0000,     /* R1276 */
+	0x0000,     /* R1277 */
+	0x0000,     /* R1278 */
+	0x0000,     /* R1279 */
+	0x0000,     /* R1280 */
+	0x0000,     /* R1281 */
+	0x0000,     /* R1282 */
+	0x0000,     /* R1283 */
+	0x0000,     /* R1284 */
+	0x0000,     /* R1285 */
+	0x0000,     /* R1286 */
+	0x0000,     /* R1287 */
+	0x0000,     /* R1288 */
+	0x0000,     /* R1289 */
+	0x0000,     /* R1290 */
+	0x0000,     /* R1291 */
+	0x0000,     /* R1292 */
+	0x0000,     /* R1293 */
+	0x0000,     /* R1294 */
+	0x0000,     /* R1295 */
+	0x0000,     /* R1296 */
+	0x0000,     /* R1297 */
+	0x0000,     /* R1298 */
+	0x0000,     /* R1299 */
+	0x0000,     /* R1300 */
+	0x0000,     /* R1301 */
+	0x0000,     /* R1302 */
+	0x0000,     /* R1303 */
+	0x0000,     /* R1304 */
+	0x0000,     /* R1305 */
+	0x0000,     /* R1306 */
+	0x0000,     /* R1307 */
+	0x0000,     /* R1308 */
+	0x0000,     /* R1309 */
+	0x0000,     /* R1310 */
+	0x0000,     /* R1311 */
+	0x0000,     /* R1312 */
+	0x0000,     /* R1313 */
+	0x0000,     /* R1314 */
+	0x0000,     /* R1315 */
+	0x0000,     /* R1316 */
+	0x0000,     /* R1317 */
+	0x0000,     /* R1318 */
+	0x0000,     /* R1319 */
+	0x0000,     /* R1320 */
+	0x0000,     /* R1321 */
+	0x0000,     /* R1322 */
+	0x0000,     /* R1323 */
+	0x0000,     /* R1324 */
+	0x0000,     /* R1325 */
+	0x0000,     /* R1326 */
+	0x0000,     /* R1327 */
+	0x0000,     /* R1328 */
+	0x0000,     /* R1329 */
+	0x0000,     /* R1330 */
+	0x0000,     /* R1331 */
+	0x0000,     /* R1332 */
+	0x0000,     /* R1333 */
+	0x0000,     /* R1334 */
+	0x0000,     /* R1335 */
+	0x0000,     /* R1336 */
+	0x0000,     /* R1337 */
+	0x0000,     /* R1338 */
+	0x0000,     /* R1339 */
+	0x0000,     /* R1340 */
+	0x0000,     /* R1341 */
+	0x0000,     /* R1342 */
+	0x0000,     /* R1343 */
+	0x0000,     /* R1344 */
+	0x0000,     /* R1345 */
+	0x0000,     /* R1346 */
+	0x0000,     /* R1347 */
+	0x0000,     /* R1348 */
+	0x0000,     /* R1349 */
+	0x0000,     /* R1350 */
+	0x0000,     /* R1351 */
+	0x0000,     /* R1352 */
+	0x0000,     /* R1353 */
+	0x0000,     /* R1354 */
+	0x0000,     /* R1355 */
+	0x0000,     /* R1356 */
+	0x0000,     /* R1357 */
+	0x0000,     /* R1358 */
+	0x0000,     /* R1359 */
+	0x0000,     /* R1360 */
+	0x0000,     /* R1361 */
+	0x0000,     /* R1362 */
+	0x0000,     /* R1363 */
+	0x0000,     /* R1364 */
+	0x0000,     /* R1365 */
+	0x0000,     /* R1366 */
+	0x0000,     /* R1367 */
+	0x0000,     /* R1368 */
+	0x0000,     /* R1369 */
+	0x0000,     /* R1370 */
+	0x0000,     /* R1371 */
+	0x0000,     /* R1372 */
+	0x0000,     /* R1373 */
+	0x0000,     /* R1374 */
+	0x0000,     /* R1375 */
+	0x0000,     /* R1376 */
+	0x0000,     /* R1377 */
+	0x0000,     /* R1378 */
+	0x0000,     /* R1379 */
+	0x0000,     /* R1380 */
+	0x0000,     /* R1381 */
+	0x0000,     /* R1382 */
+	0x0000,     /* R1383 */
+	0x0000,     /* R1384 */
+	0x0000,     /* R1385 */
+	0x0000,     /* R1386 */
+	0x0000,     /* R1387 */
+	0x0000,     /* R1388 */
+	0x0000,     /* R1389 */
+	0x0000,     /* R1390 */
+	0x0000,     /* R1391 */
+	0x0000,     /* R1392 */
+	0x0000,     /* R1393 */
+	0x0000,     /* R1394 */
+	0x0000,     /* R1395 */
+	0x0000,     /* R1396 */
+	0x0000,     /* R1397 */
+	0x0000,     /* R1398 */
+	0x0000,     /* R1399 */
+	0x0000,     /* R1400 */
+	0x0000,     /* R1401 */
+	0x0000,     /* R1402 */
+	0x0000,     /* R1403 */
+	0x0000,     /* R1404 */
+	0x0000,     /* R1405 */
+	0x0000,     /* R1406 */
+	0x0000,     /* R1407 */
+	0x0000,     /* R1408 */
+	0x0000,     /* R1409 */
+	0x0000,     /* R1410 */
+	0x0000,     /* R1411 */
+	0x0000,     /* R1412 */
+	0x0000,     /* R1413 */
+	0x0000,     /* R1414 */
+	0x0000,     /* R1415 */
+	0x0000,     /* R1416 */
+	0x0000,     /* R1417 */
+	0x0000,     /* R1418 */
+	0x0000,     /* R1419 */
+	0x0000,     /* R1420 */
+	0x0000,     /* R1421 */
+	0x0000,     /* R1422 */
+	0x0000,     /* R1423 */
+	0x0000,     /* R1424 */
+	0x0000,     /* R1425 */
+	0x0000,     /* R1426 */
+	0x0000,     /* R1427 */
+	0x0000,     /* R1428 */
+	0x0000,     /* R1429 */
+	0x0000,     /* R1430 */
+	0x0000,     /* R1431 */
+	0x0000,     /* R1432 */
+	0x0000,     /* R1433 */
+    0x0000,     /* R1434 */
+    0x0000,     /* R1435 */
+    0x0000,     /* R1436 */
+    0x0000,     /* R1437 */
+    0x0000,     /* R1438 */
+    0x0000,     /* R1439 */
+    0x0000,     /* R1440 */
+    0x0000,     /* R1441 */
+    0x0000,     /* R1442 */
+    0x0000,     /* R1443 */
+    0x0000,     /* R1444 */
+    0x0000,     /* R1445 */
+    0x0000,     /* R1446 */
+    0x0000,     /* R1447 */
+    0x0000,     /* R1448 */
+    0x0000,     /* R1449 */
+    0x0000,     /* R1450 */
+    0x0000,     /* R1451 */
+    0x0000,     /* R1452 */
+    0x0000,     /* R1453 */
+    0x0000,     /* R1454 */
+    0x0000,     /* R1455 */
+    0x0000,     /* R1456 */
+    0x0000,     /* R1457 */
+    0x0000,     /* R1458 */
+    0x0000,     /* R1459 */
+    0x0000,     /* R1460 */
+    0x0000,     /* R1461 */
+    0x0000,     /* R1462 */
+    0x0000,     /* R1463 */
+    0x0000,     /* R1464 */
+    0x0000,     /* R1465 */
+    0x0000,     /* R1466 */
+    0x0000,     /* R1467 */
+    0x0000,     /* R1468 */
+    0x0000,     /* R1469 */
+    0x0000,     /* R1470 */
+    0x0000,     /* R1471 */
+    0x0000,     /* R1472 */
+    0x0000,     /* R1473 */
+    0x0000,     /* R1474 */
+    0x0000,     /* R1475 */
+    0x0000,     /* R1476 */
+    0x0000,     /* R1477 */
+    0x0000,     /* R1478 */
+    0x0000,     /* R1479 */
+    0x0000,     /* R1480 */
+    0x0000,     /* R1481 */
+    0x0000,     /* R1482 */
+    0x0000,     /* R1483 */
+    0x0000,     /* R1484 */
+    0x0000,     /* R1485 */
+    0x0000,     /* R1486 */
+    0x0000,     /* R1487 */
+    0x0000,     /* R1488 */
+    0x0000,     /* R1489 */
+    0x0000,     /* R1490 */
+    0x0000,     /* R1491 */
+    0x0000,     /* R1492 */
+    0x0000,     /* R1493 */
+    0x0000,     /* R1494 */
+    0x0000,     /* R1495 */
+    0x0000,     /* R1496 */
+    0x0000,     /* R1497 */
+    0x0000,     /* R1498 */
+    0x0000,     /* R1499 */
+    0x0000,     /* R1500 */
+    0x0000,     /* R1501 */
+    0x0000,     /* R1502 */
+    0x0000,     /* R1503 */
+    0x0000,     /* R1504 */
+    0x0000,     /* R1505 */
+    0x0000,     /* R1506 */
+    0x0000,     /* R1507 */
+    0x0000,     /* R1508 */
+    0x0000,     /* R1509 */
+    0x0000,     /* R1510 */
+    0x0000,     /* R1511 */
+    0x0000,     /* R1512 */
+    0x0000,     /* R1513 */
+    0x0000,     /* R1514 */
+    0x0000,     /* R1515 */
+    0x0000,     /* R1516 */
+    0x0000,     /* R1517 */
+    0x0000,     /* R1518 */
+    0x0000,     /* R1519 */
+    0x0000,     /* R1520 */
+    0x0000,     /* R1521 */
+    0x0000,     /* R1522 */
+    0x0000,     /* R1523 */
+    0x0000,     /* R1524 */
+    0x0000,     /* R1525 */
+    0x0000,     /* R1526 */
+    0x0000,     /* R1527 */
+    0x0000,     /* R1528 */
+    0x0000,     /* R1529 */
+    0x0000,     /* R1530 */
+    0x0000,     /* R1531 */
+    0x0000,     /* R1532 */
+    0x0000,     /* R1533 */
+    0x0000,     /* R1534 */
+    0x0000,     /* R1535 */
+    0x0000,     /* R1536 */
+    0x0000,     /* R1537 */
+    0x0000,     /* R1538 */
+    0x0000,     /* R1539 */
+    0x0000,     /* R1540 */
+    0x0000,     /* R1541 */
+    0x0000,     /* R1542 */
+    0x0000,     /* R1543 */
+    0x0000,     /* R1544 */
+    0x0000,     /* R1545 */
+    0x0000,     /* R1546 */
+    0x0000,     /* R1547 */
+    0x0000,     /* R1548 */
+    0x0000,     /* R1549 */
+    0x0000,     /* R1550 */
+    0x0000,     /* R1551 */
+    0x0000,     /* R1552 */
+    0x0000,     /* R1553 */
+    0x0000,     /* R1554 */
+    0x0000,     /* R1555 */
+    0x0000,     /* R1556 */
+    0x0000,     /* R1557 */
+    0x0000,     /* R1558 */
+    0x0000,     /* R1559 */
+    0x0000,     /* R1560 */
+    0x0000,     /* R1561 */
+    0x0000,     /* R1562 */
+    0x0000,     /* R1563 */
+    0x0000,     /* R1564 */
+    0x0000,     /* R1565 */
+    0x0000,     /* R1566 */
+    0x0000,     /* R1567 */
+    0x0000,     /* R1568 */
+    0x0000,     /* R1569 */
+    0x0000,     /* R1570 */
+    0x0000,     /* R1571 */
+    0x0000,     /* R1572 */
+    0x0000,     /* R1573 */
+    0x0000,     /* R1574 */
+    0x0000,     /* R1575 */
+    0x0000,     /* R1576 */
+    0x0000,     /* R1577 */
+    0x0000,     /* R1578 */
+    0x0000,     /* R1579 */
+    0x0000,     /* R1580 */
+    0x0000,     /* R1581 */
+    0x0000,     /* R1582 */
+    0x0000,     /* R1583 */
+    0x0000,     /* R1584 */
+    0x0000,     /* R1585 */
+    0x0000,     /* R1586 */
+    0x0000,     /* R1587 */
+    0x0000,     /* R1588 */
+    0x0000,     /* R1589 */
+    0x0000,     /* R1590 */
+    0x0000,     /* R1591 */
+    0x0000,     /* R1592 */
+    0x0000,     /* R1593 */
+    0x0000,     /* R1594 */
+    0x0000,     /* R1595 */
+    0x0000,     /* R1596 */
+    0x0000,     /* R1597 */
+    0x0000,     /* R1598 */
+    0x0000,     /* R1599 */
+    0x0000,     /* R1600 */
+    0x0000,     /* R1601 */
+    0x0000,     /* R1602 */
+    0x0000,     /* R1603 */
+    0x0000,     /* R1604 */
+    0x0000,     /* R1605 */
+    0x0000,     /* R1606 */
+    0x0000,     /* R1607 */
+    0x0000,     /* R1608 */
+    0x0000,     /* R1609 */
+    0x0000,     /* R1610 */
+    0x0000,     /* R1611 */
+    0x0000,     /* R1612 */
+    0x0000,     /* R1613 */
+    0x0000,     /* R1614 */
+    0x0000,     /* R1615 */
+    0x0000,     /* R1616 */
+    0x0000,     /* R1617 */
+    0x0000,     /* R1618 */
+    0x0000,     /* R1619 */
+    0x0000,     /* R1620 */
+    0x0000,     /* R1621 */
+    0x0000,     /* R1622 */
+    0x0000,     /* R1623 */
+    0x0000,     /* R1624 */
+    0x0000,     /* R1625 */
+    0x0000,     /* R1626 */
+    0x0000,     /* R1627 */
+    0x0000,     /* R1628 */
+    0x0000,     /* R1629 */
+    0x0000,     /* R1630 */
+    0x0000,     /* R1631 */
+    0x0000,     /* R1632 */
+    0x0000,     /* R1633 */
+    0x0000,     /* R1634 */
+    0x0000,     /* R1635 */
+    0x0000,     /* R1636 */
+    0x0000,     /* R1637 */
+    0x0000,     /* R1638 */
+    0x0000,     /* R1639 */
+    0x0000,     /* R1640 */
+    0x0000,     /* R1641 */
+    0x0000,     /* R1642 */
+    0x0000,     /* R1643 */
+    0x0000,     /* R1644 */
+    0x0000,     /* R1645 */
+    0x0000,     /* R1646 */
+    0x0000,     /* R1647 */
+    0x0000,     /* R1648 */
+    0x0000,     /* R1649 */
+    0x0000,     /* R1650 */
+    0x0000,     /* R1651 */
+    0x0000,     /* R1652 */
+    0x0000,     /* R1653 */
+    0x0000,     /* R1654 */
+    0x0000,     /* R1655 */
+    0x0000,     /* R1656 */
+    0x0000,     /* R1657 */
+    0x0000,     /* R1658 */
+    0x0000,     /* R1659 */
+    0x0000,     /* R1660 */
+    0x0000,     /* R1661 */
+    0x0000,     /* R1662 */
+    0x0000,     /* R1663 */
+    0x0000,     /* R1664 */
+    0x0000,     /* R1665 */
+    0x0000,     /* R1666 */
+    0x0000,     /* R1667 */
+    0x0000,     /* R1668 */
+    0x0000,     /* R1669 */
+    0x0000,     /* R1670 */
+    0x0000,     /* R1671 */
+    0x0000,     /* R1672 */
+    0x0000,     /* R1673 */
+    0x0000,     /* R1674 */
+    0x0000,     /* R1675 */
+    0x0000,     /* R1676 */
+    0x0000,     /* R1677 */
+    0x0000,     /* R1678 */
+    0x0000,     /* R1679 */
+    0x0000,     /* R1680 */
+    0x0000,     /* R1681 */
+    0x0000,     /* R1682 */
+    0x0000,     /* R1683 */
+    0x0000,     /* R1684 */
+    0x0000,     /* R1685 */
+    0x0000,     /* R1686 */
+    0x0000,     /* R1687 */
+    0x0000,     /* R1688 */
+    0x0000,     /* R1689 */
+    0x0000,     /* R1690 */
+    0x0000,     /* R1691 */
+    0x0000,     /* R1692 */
+    0x0000,     /* R1693 */
+    0x0000,     /* R1694 */
+    0x0000,     /* R1695 */
+    0x0000,     /* R1696 */
+    0x0000,     /* R1697 */
+    0x0000,     /* R1698 */
+    0x0000,     /* R1699 */
+    0x0000,     /* R1700 */
+    0x0000,     /* R1701 */
+    0x0000,     /* R1702 */
+    0x0000,     /* R1703 */
+    0x0000,     /* R1704 */
+    0x0000,     /* R1705 */
+    0x0000,     /* R1706 */
+    0x0000,     /* R1707 */
+    0x0000,     /* R1708 */
+    0x0000,     /* R1709 */
+    0x0000,     /* R1710 */
+    0x0000,     /* R1711 */
+    0x0000,     /* R1712 */
+    0x0000,     /* R1713 */
+    0x0000,     /* R1714 */
+    0x0000,     /* R1715 */
+    0x0000,     /* R1716 */
+    0x0000,     /* R1717 */
+    0x0000,     /* R1718 */
+    0x0000,     /* R1719 */
+    0x0000,     /* R1720 */
+    0x0000,     /* R1721 */
+    0x0000,     /* R1722 */
+    0x0000,     /* R1723 */
+    0x0000,     /* R1724 */
+    0x0000,     /* R1725 */
+    0x0000,     /* R1726 */
+    0x0000,     /* R1727 */
+    0x0000,     /* R1728 */
+    0x0000,     /* R1729 */
+    0x0000,     /* R1730 */
+    0x0000,     /* R1731 */
+    0x0000,     /* R1732 */
+    0x0000,     /* R1733 */
+    0x0000,     /* R1734 */
+    0x0000,     /* R1735 */
+    0x0000,     /* R1736 */
+    0x0000,     /* R1737 */
+    0x0000,     /* R1738 */
+    0x0000,     /* R1739 */
+    0x0000,     /* R1740 */
+    0x0000,     /* R1741 */
+    0x0000,     /* R1742 */
+    0x0000,     /* R1743 */
+    0x0000,     /* R1744 */
+    0x0000,     /* R1745 */
+    0x0000,     /* R1746 */
+    0x0000,     /* R1747 */
+    0x0000,     /* R1748 */
+    0x0000,     /* R1749 */
+    0x0000,     /* R1750 */
+    0x0000,     /* R1751 */
+    0x0000,     /* R1752 */
+    0x0000,     /* R1753 */
+    0x0000,     /* R1754 */
+    0x0000,     /* R1755 */
+    0x0000,     /* R1756 */
+    0x0000,     /* R1757 */
+    0x0000,     /* R1758 */
+    0x0000,     /* R1759 */
+    0x0000,     /* R1760 */
+    0x0000,     /* R1761 */
+    0x0000,     /* R1762 */
+    0x0000,     /* R1763 */
+    0x0000,     /* R1764 */
+    0x0000,     /* R1765 */
+    0x0000,     /* R1766 */
+    0x0000,     /* R1767 */
+    0x0000,     /* R1768 */
+    0x0000,     /* R1769 */
+    0x0000,     /* R1770 */
+    0x0000,     /* R1771 */
+    0x0000,     /* R1772 */
+    0x0000,     /* R1773 */
+    0x0000,     /* R1774 */
+    0x0000,     /* R1775 */
+    0x0000,     /* R1776 */
+    0x0000,     /* R1777 */
+    0x0000,     /* R1778 */
+    0x0000,     /* R1779 */
+    0x0000,     /* R1780 */
+    0x0000,     /* R1781 */
+    0x0000,     /* R1782 */
+    0x0000,     /* R1783 */
+    0x0000,     /* R1784 */
+    0x0000,     /* R1785 */
+    0x0000,     /* R1786 */
+    0x0000,     /* R1787 */
+    0x0000,     /* R1788 */
+    0x0000,     /* R1789 */
+    0x0000,     /* R1790 */
+    0x0000,     /* R1791 */
+    0x0000,     /* R1792 */
+    0x0000,     /* R1793 */
+    0x0000,     /* R1794 */
+    0x0000,     /* R1795 */
+    0x0000,     /* R1796 */
+    0x0000,     /* R1797 */
+    0x0000,     /* R1798 */
+    0x0000,     /* R1799 */
+    0x0000,     /* R1800 */
+    0x0000,     /* R1801 */
+    0x0000,     /* R1802 */
+    0x0000,     /* R1803 */
+    0x0000,     /* R1804 */
+    0x0000,     /* R1805 */
+    0x0000,     /* R1806 */
+    0x0000,     /* R1807 */
+    0x0000,     /* R1808 */
+    0x0000,     /* R1809 */
+    0x0000,     /* R1810 */
+    0x0000,     /* R1811 */
+    0x0000,     /* R1812 */
+    0x0000,     /* R1813 */
+    0x0000,     /* R1814 */
+    0x0000,     /* R1815 */
+    0x0000,     /* R1816 */
+    0x0000,     /* R1817 */
+    0x0000,     /* R1818 */
+    0x0000,     /* R1819 */
+    0x0000,     /* R1820 */
+    0x0000,     /* R1821 */
+    0x0000,     /* R1822 */
+    0x0000,     /* R1823 */
+    0x0000,     /* R1824 */
+    0x0000,     /* R1825 */
+    0x0000,     /* R1826 */
+    0x0000,     /* R1827 */
+    0x0000,     /* R1828 */
+    0x0000,     /* R1829 */
+    0x0000,     /* R1830 */
+    0x0000,     /* R1831 */
+    0x0000,     /* R1832 */
+    0x0000,     /* R1833 */
+    0x0000,     /* R1834 */
+    0x0000,     /* R1835 */
+    0x0000,     /* R1836 */
+    0x0000,     /* R1837 */
+    0x0000,     /* R1838 */
+    0x0000,     /* R1839 */
+    0x0000,     /* R1840 */
+    0x0000,     /* R1841 */
+    0x0000,     /* R1842 */
+    0x0000,     /* R1843 */
+    0x0000,     /* R1844 */
+    0x0000,     /* R1845 */
+    0x0000,     /* R1846 */
+    0x0000,     /* R1847 */
+    0x0000,     /* R1848 */
+    0x0000,     /* R1849 */
+    0x0000,     /* R1850 */
+    0x0000,     /* R1851 */
+    0x0000,     /* R1852 */
+    0x0000,     /* R1853 */
+    0x0000,     /* R1854 */
+    0x0000,     /* R1855 */
+    0x0000,     /* R1856 */
+    0x0000,     /* R1857 */
+    0x0000,     /* R1858 */
+    0x0000,     /* R1859 */
+    0x0000,     /* R1860 */
+    0x0000,     /* R1861 */
+    0x0000,     /* R1862 */
+    0x0000,     /* R1863 */
+    0x0000,     /* R1864 */
+    0x0000,     /* R1865 */
+    0x0000,     /* R1866 */
+    0x0000,     /* R1867 */
+    0x0000,     /* R1868 */
+    0x0000,     /* R1869 */
+    0x0000,     /* R1870 */
+    0x0000,     /* R1871 */
+    0x0000,     /* R1872 */
+    0x0000,     /* R1873 */
+    0x0000,     /* R1874 */
+    0x0000,     /* R1875 */
+    0x0000,     /* R1876 */
+    0x0000,     /* R1877 */
+    0x0000,     /* R1878 */
+    0x0000,     /* R1879 */
+    0x0000,     /* R1880 */
+    0x0000,     /* R1881 */
+    0x0000,     /* R1882 */
+    0x0000,     /* R1883 */
+    0x0000,     /* R1884 */
+    0x0000,     /* R1885 */
+    0x0000,     /* R1886 */
+    0x0000,     /* R1887 */
+    0x0000,     /* R1888 */
+    0x0000,     /* R1889 */
+    0x0000,     /* R1890 */
+    0x0000,     /* R1891 */
+    0x0000,     /* R1892 */
+    0x0000,     /* R1893 */
+    0x0000,     /* R1894 */
+    0x0000,     /* R1895 */
+    0x0000,     /* R1896 */
+    0x0000,     /* R1897 */
+    0x0000,     /* R1898 */
+    0x0000,     /* R1899 */
+    0x0000,     /* R1900 */
+    0x0000,     /* R1901 */
+    0x0000,     /* R1902 */
+    0x0000,     /* R1903 */
+    0x0000,     /* R1904 */
+    0x0000,     /* R1905 */
+    0x0000,     /* R1906 */
+    0x0000,     /* R1907 */
+    0x0000,     /* R1908 */
+    0x0000,     /* R1909 */
+    0x0000,     /* R1910 */
+    0x0000,     /* R1911 */
+    0x0000,     /* R1912 */
+    0x0000,     /* R1913 */
+    0x0000,     /* R1914 */
+    0x0000,     /* R1915 */
+    0x0000,     /* R1916 */
+    0x0000,     /* R1917 */
+    0x0000,     /* R1918 */
+    0x0000,     /* R1919 */
+    0x0000,     /* R1920 */
+    0x0000,     /* R1921 */
+    0x0000,     /* R1922 */
+    0x0000,     /* R1923 */
+    0x0000,     /* R1924 */
+    0x0000,     /* R1925 */
+    0x0000,     /* R1926 */
+    0x0000,     /* R1927 */
+    0x0000,     /* R1928 */
+    0x0000,     /* R1929 */
+    0x0000,     /* R1930 */
+    0x0000,     /* R1931 */
+    0x0000,     /* R1932 */
+    0x0000,     /* R1933 */
+    0x0000,     /* R1934 */
+    0x0000,     /* R1935 */
+    0x0000,     /* R1936 */
+    0x0000,     /* R1937 */
+    0x0000,     /* R1938 */
+    0x0000,     /* R1939 */
+    0x0000,     /* R1940 */
+    0x0000,     /* R1941 */
+    0x0000,     /* R1942 */
+    0x0000,     /* R1943 */
+    0x0000,     /* R1944 */
+    0x0000,     /* R1945 */
+    0x0000,     /* R1946 */
+    0x0000,     /* R1947 */
+    0x0000,     /* R1948 */
+    0x0000,     /* R1949 */
+    0x0000,     /* R1950 */
+    0x0000,     /* R1951 */
+    0x0000,     /* R1952 */
+    0x0000,     /* R1953 */
+    0x0000,     /* R1954 */
+    0x0000,     /* R1955 */
+    0x0000,     /* R1956 */
+    0x0000,     /* R1957 */
+    0x0000,     /* R1958 */
+    0x0000,     /* R1959 */
+    0x0000,     /* R1960 */
+    0x0000,     /* R1961 */
+    0x0000,     /* R1962 */
+    0x0000,     /* R1963 */
+    0x0000,     /* R1964 */
+    0x0000,     /* R1965 */
+    0x0000,     /* R1966 */
+    0x0000,     /* R1967 */
+    0x0000,     /* R1968 */
+    0x0000,     /* R1969 */
+    0x0000,     /* R1970 */
+    0x0000,     /* R1971 */
+    0x0000,     /* R1972 */
+    0x0000,     /* R1973 */
+    0x0000,     /* R1974 */
+    0x0000,     /* R1975 */
+    0x0000,     /* R1976 */
+    0x0000,     /* R1977 */
+    0x0000,     /* R1978 */
+    0x0000,     /* R1979 */
+    0x0000,     /* R1980 */
+    0x0000,     /* R1981 */
+    0x0000,     /* R1982 */
+    0x0000,     /* R1983 */
+    0x0000,     /* R1984 */
+    0x0000,     /* R1985 */
+    0x0000,     /* R1986 */
+    0x0000,     /* R1987 */
+    0x0000,     /* R1988 */
+    0x0000,     /* R1989 */
+    0x0000,     /* R1990 */
+    0x0000,     /* R1991 */
+    0x0000,     /* R1992 */
+    0x0000,     /* R1993 */
+    0x0000,     /* R1994 */
+    0x0000,     /* R1995 */
+    0x0000,     /* R1996 */
+    0x0000,     /* R1997 */
+    0x0000,     /* R1998 */
+    0x0000,     /* R1999 */
+    0x0000,     /* R2000 */
+    0x0000,     /* R2001 */
+    0x0000,     /* R2002 */
+    0x0000,     /* R2003 */
+    0x0000,     /* R2004 */
+    0x0000,     /* R2005 */
+    0x0000,     /* R2006 */
+    0x0000,     /* R2007 */
+    0x0000,     /* R2008 */
+    0x0000,     /* R2009 */
+    0x0000,     /* R2010 */
+    0x0000,     /* R2011 */
+    0x0000,     /* R2012 */
+    0x0000,     /* R2013 */
+    0x0000,     /* R2014 */
+    0x0000,     /* R2015 */
+    0x0000,     /* R2016 */
+    0x0000,     /* R2017 */
+    0x0000,     /* R2018 */
+    0x0000,     /* R2019 */
+    0x0000,     /* R2020 */
+    0x0000,     /* R2021 */
+    0x0000,     /* R2022 */
+    0x0000,     /* R2023 */
+    0x0000,     /* R2024 */
+    0x0000,     /* R2025 */
+    0x0000,     /* R2026 */
+    0x0000,     /* R2027 */
+    0x0000,     /* R2028 */
+    0x0000,     /* R2029 */
+    0x0000,     /* R2030 */
+    0x0000,     /* R2031 */
+    0x0000,     /* R2032 */
+    0x0000,     /* R2033 */
+    0x0000,     /* R2034 */
+    0x0000,     /* R2035 */
+    0x0000,     /* R2036 */
+    0x0000,     /* R2037 */
+    0x0000,     /* R2038 */
+    0x0000,     /* R2039 */
+    0x0000,     /* R2040 */
+    0x0000,     /* R2041 */
+    0x0000,     /* R2042 */
+    0x0000,     /* R2043 */
+    0x0000,     /* R2044 */
+    0x0000,     /* R2045 */
+    0x0000,     /* R2046 */
+    0x0000,     /* R2047 */
+    0x0000,     /* R2048 */
+    0x0000,     /* R2049 */
+    0x0000,     /* R2050 */
+    0x0000,     /* R2051 */
+    0x0000,     /* R2052 */
+    0x0000,     /* R2053 */
+    0x0000,     /* R2054 */
+    0x0000,     /* R2055 */
+    0x0000,     /* R2056 */
+    0x0000,     /* R2057 */
+    0x0000,     /* R2058 */
+    0x0000,     /* R2059 */
+    0x0000,     /* R2060 */
+    0x0000,     /* R2061 */
+    0x0000,     /* R2062 */
+    0x0000,     /* R2063 */
+    0x0000,     /* R2064 */
+    0x0000,     /* R2065 */
+    0x0000,     /* R2066 */
+    0x0000,     /* R2067 */
+    0x0000,     /* R2068 */
+    0x0000,     /* R2069 */
+    0x0000,     /* R2070 */
+    0x0000,     /* R2071 */
+    0x0000,     /* R2072 */
+    0x0000,     /* R2073 */
+    0x0000,     /* R2074 */
+    0x0000,     /* R2075 */
+    0x0000,     /* R2076 */
+    0x0000,     /* R2077 */
+    0x0000,     /* R2078 */
+    0x0000,     /* R2079 */
+    0x0000,     /* R2080 */
+    0x0000,     /* R2081 */
+    0x0000,     /* R2082 */
+    0x0000,     /* R2083 */
+    0x0000,     /* R2084 */
+    0x0000,     /* R2085 */
+    0x0000,     /* R2086 */
+    0x0000,     /* R2087 */
+    0x0000,     /* R2088 */
+    0x0000,     /* R2089 */
+    0x0000,     /* R2090 */
+    0x0000,     /* R2091 */
+    0x0000,     /* R2092 */
+    0x0000,     /* R2093 */
+    0x0000,     /* R2094 */
+    0x0000,     /* R2095 */
+    0x0000,     /* R2096 */
+    0x0000,     /* R2097 */
+    0x0000,     /* R2098 */
+    0x0000,     /* R2099 */
+    0x0000,     /* R2100 */
+    0x0000,     /* R2101 */
+    0x0000,     /* R2102 */
+    0x0000,     /* R2103 */
+    0x0000,     /* R2104 */
+    0x0000,     /* R2105 */
+    0x0000,     /* R2106 */
+    0x0000,     /* R2107 */
+    0x0000,     /* R2108 */
+    0x0000,     /* R2109 */
+    0x0000,     /* R2110 */
+    0x0000,     /* R2111 */
+    0x0000,     /* R2112 */
+    0x0000,     /* R2113 */
+    0x0000,     /* R2114 */
+    0x0000,     /* R2115 */
+    0x0000,     /* R2116 */
+    0x0000,     /* R2117 */
+    0x0000,     /* R2118 */
+    0x0000,     /* R2119 */
+    0x0000,     /* R2120 */
+    0x0000,     /* R2121 */
+    0x0000,     /* R2122 */
+    0x0000,     /* R2123 */
+    0x0000,     /* R2124 */
+    0x0000,     /* R2125 */
+    0x0000,     /* R2126 */
+    0x0000,     /* R2127 */
+    0x0000,     /* R2128 */
+    0x0000,     /* R2129 */
+    0x0000,     /* R2130 */
+    0x0000,     /* R2131 */
+    0x0000,     /* R2132 */
+    0x0000,     /* R2133 */
+    0x0000,     /* R2134 */
+    0x0000,     /* R2135 */
+    0x0000,     /* R2136 */
+    0x0000,     /* R2137 */
+    0x0000,     /* R2138 */
+    0x0000,     /* R2139 */
+    0x0000,     /* R2140 */
+    0x0000,     /* R2141 */
+    0x0000,     /* R2142 */
+    0x0000,     /* R2143 */
+    0x0000,     /* R2144 */
+    0x0000,     /* R2145 */
+    0x0000,     /* R2146 */
+    0x0000,     /* R2147 */
+    0x0000,     /* R2148 */
+    0x0000,     /* R2149 */
+    0x0000,     /* R2150 */
+    0x0000,     /* R2151 */
+    0x0000,     /* R2152 */
+    0x0000,     /* R2153 */
+    0x0000,     /* R2154 */
+    0x0000,     /* R2155 */
+    0x0000,     /* R2156 */
+    0x0000,     /* R2157 */
+    0x0000,     /* R2158 */
+    0x0000,     /* R2159 */
+    0x0000,     /* R2160 */
+    0x0000,     /* R2161 */
+    0x0000,     /* R2162 */
+    0x0000,     /* R2163 */
+    0x0000,     /* R2164 */
+    0x0000,     /* R2165 */
+    0x0000,     /* R2166 */
+    0x0000,     /* R2167 */
+    0x0000,     /* R2168 */
+    0x0000,     /* R2169 */
+    0x0000,     /* R2170 */
+    0x0000,     /* R2171 */
+    0x0000,     /* R2172 */
+    0x0000,     /* R2173 */
+    0x0000,     /* R2174 */
+    0x0000,     /* R2175 */
+    0x0000,     /* R2176 */
+    0x0000,     /* R2177 */
+    0x0000,     /* R2178 */
+    0x0000,     /* R2179 */
+    0x0000,     /* R2180 */
+    0x0000,     /* R2181 */
+    0x0000,     /* R2182 */
+    0x0000,     /* R2183 */
+    0x0000,     /* R2184 */
+    0x0000,     /* R2185 */
+    0x0000,     /* R2186 */
+    0x0000,     /* R2187 */
+    0x0000,     /* R2188 */
+    0x0000,     /* R2189 */
+    0x0000,     /* R2190 */
+    0x0000,     /* R2191 */
+    0x0000,     /* R2192 */
+    0x0000,     /* R2193 */
+    0x0000,     /* R2194 */
+    0x0000,     /* R2195 */
+    0x0000,     /* R2196 */
+    0x0000,     /* R2197 */
+    0x0000,     /* R2198 */
+    0x0000,     /* R2199 */
+    0x0000,     /* R2200 */
+    0x0000,     /* R2201 */
+    0x0000,     /* R2202 */
+    0x0000,     /* R2203 */
+    0x0000,     /* R2204 */
+    0x0000,     /* R2205 */
+    0x0000,     /* R2206 */
+    0x0000,     /* R2207 */
+    0x0000,     /* R2208 */
+    0x0000,     /* R2209 */
+    0x0000,     /* R2210 */
+    0x0000,     /* R2211 */
+    0x0000,     /* R2212 */
+    0x0000,     /* R2213 */
+    0x0000,     /* R2214 */
+    0x0000,     /* R2215 */
+    0x0000,     /* R2216 */
+    0x0000,     /* R2217 */
+    0x0000,     /* R2218 */
+    0x0000,     /* R2219 */
+    0x0000,     /* R2220 */
+    0x0000,     /* R2221 */
+    0x0000,     /* R2222 */
+    0x0000,     /* R2223 */
+    0x0000,     /* R2224 */
+    0x0000,     /* R2225 */
+    0x0000,     /* R2226 */
+    0x0000,     /* R2227 */
+    0x0000,     /* R2228 */
+    0x0000,     /* R2229 */
+    0x0000,     /* R2230 */
+    0x0000,     /* R2231 */
+    0x0000,     /* R2232 */
+    0x0000,     /* R2233 */
+    0x0000,     /* R2234 */
+    0x0000,     /* R2235 */
+    0x0000,     /* R2236 */
+    0x0000,     /* R2237 */
+    0x0000,     /* R2238 */
+    0x0000,     /* R2239 */
+    0x0000,     /* R2240 */
+    0x0000,     /* R2241 */
+    0x0000,     /* R2242 */
+    0x0000,     /* R2243 */
+    0x0000,     /* R2244 */
+    0x0000,     /* R2245 */
+    0x0000,     /* R2246 */
+    0x0000,     /* R2247 */
+    0x0000,     /* R2248 */
+    0x0000,     /* R2249 */
+    0x0000,     /* R2250 */
+    0x0000,     /* R2251 */
+    0x0000,     /* R2252 */
+    0x0000,     /* R2253 */
+    0x0000,     /* R2254 */
+    0x0000,     /* R2255 */
+    0x0000,     /* R2256 */
+    0x0000,     /* R2257 */
+    0x0000,     /* R2258 */
+    0x0000,     /* R2259 */
+    0x0000,     /* R2260 */
+    0x0000,     /* R2261 */
+    0x0000,     /* R2262 */
+    0x0000,     /* R2263 */
+    0x0000,     /* R2264 */
+    0x0000,     /* R2265 */
+    0x0000,     /* R2266 */
+    0x0000,     /* R2267 */
+    0x0000,     /* R2268 */
+    0x0000,     /* R2269 */
+    0x0000,     /* R2270 */
+    0x0000,     /* R2271 */
+    0x0000,     /* R2272 */
+    0x0000,     /* R2273 */
+    0x0000,     /* R2274 */
+    0x0000,     /* R2275 */
+    0x0000,     /* R2276 */
+    0x0000,     /* R2277 */
+    0x0000,     /* R2278 */
+    0x0000,     /* R2279 */
+    0x0000,     /* R2280 */
+    0x0000,     /* R2281 */
+    0x0000,     /* R2282 */
+    0x0000,     /* R2283 */
+    0x0000,     /* R2284 */
+    0x0000,     /* R2285 */
+    0x0000,     /* R2286 */
+    0x0000,     /* R2287 */
+    0x0000,     /* R2288 */
+    0x0000,     /* R2289 */
+    0x0000,     /* R2290 */
+    0x0000,     /* R2291 */
+    0x0000,     /* R2292 */
+    0x0000,     /* R2293 */
+    0x0000,     /* R2294 */
+    0x0000,     /* R2295 */
+    0x0000,     /* R2296 */
+    0x0000,     /* R2297 */
+    0x0000,     /* R2298 */
+    0x0000,     /* R2299 */
+    0x0000,     /* R2300 */
+    0x0000,     /* R2301 */
+    0x0000,     /* R2302 */
+    0x0000,     /* R2303 */
+    0x0000,     /* R2304 */
+    0x0000,     /* R2305 */
+    0x0000,     /* R2306 */
+    0x0000,     /* R2307 */
+    0x0000,     /* R2308 */
+    0x0000,     /* R2309 */
+    0x0000,     /* R2310 */
+    0x0000,     /* R2311 */
+    0x0000,     /* R2312 */
+    0x0000,     /* R2313 */
+    0x0000,     /* R2314 */
+    0x0000,     /* R2315 */
+    0x0000,     /* R2316 */
+    0x0000,     /* R2317 */
+    0x0000,     /* R2318 */
+    0x0000,     /* R2319 */
+    0x0000,     /* R2320 */
+    0x0000,     /* R2321 */
+    0x0000,     /* R2322 */
+    0x0000,     /* R2323 */
+    0x0000,     /* R2324 */
+    0x0000,     /* R2325 */
+    0x0000,     /* R2326 */
+    0x0000,     /* R2327 */
+    0x0000,     /* R2328 */
+    0x0000,     /* R2329 */
+    0x0000,     /* R2330 */
+    0x0000,     /* R2331 */
+    0x0000,     /* R2332 */
+    0x0000,     /* R2333 */
+    0x0000,     /* R2334 */
+    0x0000,     /* R2335 */
+    0x0000,     /* R2336 */
+    0x0000,     /* R2337 */
+    0x0000,     /* R2338 */
+    0x0000,     /* R2339 */
+    0x0000,     /* R2340 */
+    0x0000,     /* R2341 */
+    0x0000,     /* R2342 */
+    0x0000,     /* R2343 */
+    0x0000,     /* R2344 */
+    0x0000,     /* R2345 */
+    0x0000,     /* R2346 */
+    0x0000,     /* R2347 */
+    0x0000,     /* R2348 */
+    0x0000,     /* R2349 */
+    0x0000,     /* R2350 */
+    0x0000,     /* R2351 */
+    0x0000,     /* R2352 */
+    0x0000,     /* R2353 */
+    0x0000,     /* R2354 */
+    0x0000,     /* R2355 */
+    0x0000,     /* R2356 */
+    0x0000,     /* R2357 */
+    0x0000,     /* R2358 */
+    0x0000,     /* R2359 */
+    0x0000,     /* R2360 */
+    0x0000,     /* R2361 */
+    0x0000,     /* R2362 */
+    0x0000,     /* R2363 */
+    0x0000,     /* R2364 */
+    0x0000,     /* R2365 */
+    0x0000,     /* R2366 */
+    0x0000,     /* R2367 */
+    0x0000,     /* R2368 */
+    0x0000,     /* R2369 */
+    0x0000,     /* R2370 */
+    0x0000,     /* R2371 */
+    0x0000,     /* R2372 */
+    0x0000,     /* R2373 */
+    0x0000,     /* R2374 */
+    0x0000,     /* R2375 */
+    0x0000,     /* R2376 */
+    0x0000,     /* R2377 */
+    0x0000,     /* R2378 */
+    0x0000,     /* R2379 */
+    0x0000,     /* R2380 */
+    0x0000,     /* R2381 */
+    0x0000,     /* R2382 */
+    0x0000,     /* R2383 */
+    0x0000,     /* R2384 */
+    0x0000,     /* R2385 */
+    0x0000,     /* R2386 */
+    0x0000,     /* R2387 */
+    0x0000,     /* R2388 */
+    0x0000,     /* R2389 */
+    0x0000,     /* R2390 */
+    0x0000,     /* R2391 */
+    0x0000,     /* R2392 */
+    0x0000,     /* R2393 */
+    0x0000,     /* R2394 */
+    0x0000,     /* R2395 */
+    0x0000,     /* R2396 */
+    0x0000,     /* R2397 */
+    0x0000,     /* R2398 */
+    0x0000,     /* R2399 */
+    0x0000,     /* R2400 */
+    0x0000,     /* R2401 */
+    0x0000,     /* R2402 */
+    0x0000,     /* R2403 */
+    0x0000,     /* R2404 */
+    0x0000,     /* R2405 */
+    0x0000,     /* R2406 */
+    0x0000,     /* R2407 */
+    0x0000,     /* R2408 */
+    0x0000,     /* R2409 */
+    0x0000,     /* R2410 */
+    0x0000,     /* R2411 */
+    0x0000,     /* R2412 */
+    0x0000,     /* R2413 */
+    0x0000,     /* R2414 */
+    0x0000,     /* R2415 */
+    0x0000,     /* R2416 */
+    0x0000,     /* R2417 */
+    0x0000,     /* R2418 */
+    0x0000,     /* R2419 */
+    0x0000,     /* R2420 */
+    0x0000,     /* R2421 */
+    0x0000,     /* R2422 */
+    0x0000,     /* R2423 */
+    0x0000,     /* R2424 */
+    0x0000,     /* R2425 */
+    0x0000,     /* R2426 */
+    0x0000,     /* R2427 */
+    0x0000,     /* R2428 */
+    0x0000,     /* R2429 */
+    0x0000,     /* R2430 */
+    0x0000,     /* R2431 */
+    0x0000,     /* R2432 */
+    0x0000,     /* R2433 */
+    0x0000,     /* R2434 */
+    0x0000,     /* R2435 */
+    0x0000,     /* R2436 */
+    0x0000,     /* R2437 */
+    0x0000,     /* R2438 */
+    0x0000,     /* R2439 */
+    0x0000,     /* R2440 */
+    0x0000,     /* R2441 */
+    0x0000,     /* R2442 */
+    0x0000,     /* R2443 */
+    0x0000,     /* R2444 */
+    0x0000,     /* R2445 */
+    0x0000,     /* R2446 */
+    0x0000,     /* R2447 */
+    0x0000,     /* R2448 */
+    0x0000,     /* R2449 */
+    0x0000,     /* R2450 */
+    0x0000,     /* R2451 */
+    0x0000,     /* R2452 */
+    0x0000,     /* R2453 */
+    0x0000,     /* R2454 */
+    0x0000,     /* R2455 */
+    0x0000,     /* R2456 */
+    0x0000,     /* R2457 */
+    0x0000,     /* R2458 */
+    0x0000,     /* R2459 */
+    0x0000,     /* R2460 */
+    0x0000,     /* R2461 */
+    0x0000,     /* R2462 */
+    0x0000,     /* R2463 */
+    0x0000,     /* R2464 */
+    0x0000,     /* R2465 */
+    0x0000,     /* R2466 */
+    0x0000,     /* R2467 */
+    0x0000,     /* R2468 */
+    0x0000,     /* R2469 */
+    0x0000,     /* R2470 */
+    0x0000,     /* R2471 */
+    0x0000,     /* R2472 */
+    0x0000,     /* R2473 */
+    0x0000,     /* R2474 */
+    0x0000,     /* R2475 */
+    0x0000,     /* R2476 */
+    0x0000,     /* R2477 */
+    0x0000,     /* R2478 */
+    0x0000,     /* R2479 */
+    0x0000,     /* R2480 */
+    0x0000,     /* R2481 */
+    0x0000,     /* R2482 */
+    0x0000,     /* R2483 */
+    0x0000,     /* R2484 */
+    0x0000,     /* R2485 */
+    0x0000,     /* R2486 */
+    0x0000,     /* R2487 */
+    0x0000,     /* R2488 */
+    0x0000,     /* R2489 */
+    0x0000,     /* R2490 */
+    0x0000,     /* R2491 */
+    0x0000,     /* R2492 */
+    0x0000,     /* R2493 */
+    0x0000,     /* R2494 */
+    0x0000,     /* R2495 */
+    0x0000,     /* R2496 */
+    0x0000,     /* R2497 */
+    0x0000,     /* R2498 */
+    0x0000,     /* R2499 */
+    0x0000,     /* R2500 */
+    0x0000,     /* R2501 */
+    0x0000,     /* R2502 */
+    0x0000,     /* R2503 */
+    0x0000,     /* R2504 */
+    0x0000,     /* R2505 */
+    0x0000,     /* R2506 */
+    0x0000,     /* R2507 */
+    0x0000,     /* R2508 */
+    0x0000,     /* R2509 */
+    0x0000,     /* R2510 */
+    0x0000,     /* R2511 */
+    0x0000,     /* R2512 */
+    0x0000,     /* R2513 */
+    0x0000,     /* R2514 */
+    0x0000,     /* R2515 */
+    0x0000,     /* R2516 */
+    0x0000,     /* R2517 */
+    0x0000,     /* R2518 */
+    0x0000,     /* R2519 */
+    0x0000,     /* R2520 */
+    0x0000,     /* R2521 */
+    0x0000,     /* R2522 */
+    0x0000,     /* R2523 */
+    0x0000,     /* R2524 */
+    0x0000,     /* R2525 */
+    0x0000,     /* R2526 */
+    0x0000,     /* R2527 */
+    0x0000,     /* R2528 */
+    0x0000,     /* R2529 */
+    0x0000,     /* R2530 */
+    0x0000,     /* R2531 */
+    0x0000,     /* R2532 */
+    0x0000,     /* R2533 */
+    0x0000,     /* R2534 */
+    0x0000,     /* R2535 */
+    0x0000,     /* R2536 */
+    0x0000,     /* R2537 */
+    0x0000,     /* R2538 */
+    0x0000,     /* R2539 */
+    0x0000,     /* R2540 */
+    0x0000,     /* R2541 */
+    0x0000,     /* R2542 */
+    0x0000,     /* R2543 */
+    0x0000,     /* R2544 */
+    0x0000,     /* R2545 */
+    0x0000,     /* R2546 */
+    0x0000,     /* R2547 */
+    0x0000,     /* R2548 */
+    0x0000,     /* R2549 */
+    0x0000,     /* R2550 */
+    0x0000,     /* R2551 */
+    0x0000,     /* R2552 */
+    0x0000,     /* R2553 */
+    0x0000,     /* R2554 */
+    0x0000,     /* R2555 */
+    0x0000,     /* R2556 */
+    0x0000,     /* R2557 */
+    0x0000,     /* R2558 */
+    0x0000,     /* R2559 */
+    0x0000,     /* R2560 */
+    0x0000,     /* R2561 */
+    0x0000,     /* R2562 */
+    0x0000,     /* R2563 */
+    0x0000,     /* R2564 */
+    0x0000,     /* R2565 */
+    0x0000,     /* R2566 */
+    0x0000,     /* R2567 */
+    0x0000,     /* R2568 */
+    0x0000,     /* R2569 */
+    0x0000,     /* R2570 */
+    0x0000,     /* R2571 */
+    0x0000,     /* R2572 */
+    0x0000,     /* R2573 */
+    0x0000,     /* R2574 */
+    0x0000,     /* R2575 */
+    0x0000,     /* R2576 */
+    0x0000,     /* R2577 */
+    0x0000,     /* R2578 */
+    0x0000,     /* R2579 */
+    0x0000,     /* R2580 */
+    0x0000,     /* R2581 */
+    0x0000,     /* R2582 */
+    0x0000,     /* R2583 */
+    0x0000,     /* R2584 */
+    0x0000,     /* R2585 */
+    0x0000,     /* R2586 */
+    0x0000,     /* R2587 */
+    0x0000,     /* R2588 */
+    0x0000,     /* R2589 */
+    0x0000,     /* R2590 */
+    0x0000,     /* R2591 */
+    0x0000,     /* R2592 */
+    0x0000,     /* R2593 */
+    0x0000,     /* R2594 */
+    0x0000,     /* R2595 */
+    0x0000,     /* R2596 */
+    0x0000,     /* R2597 */
+    0x0000,     /* R2598 */
+    0x0000,     /* R2599 */
+    0x0000,     /* R2600 */
+    0x0000,     /* R2601 */
+    0x0000,     /* R2602 */
+    0x0000,     /* R2603 */
+    0x0000,     /* R2604 */
+    0x0000,     /* R2605 */
+    0x0000,     /* R2606 */
+    0x0000,     /* R2607 */
+    0x0000,     /* R2608 */
+    0x0000,     /* R2609 */
+    0x0000,     /* R2610 */
+    0x0000,     /* R2611 */
+    0x0000,     /* R2612 */
+    0x0000,     /* R2613 */
+    0x0000,     /* R2614 */
+    0x0000,     /* R2615 */
+    0x0000,     /* R2616 */
+    0x0000,     /* R2617 */
+    0x0000,     /* R2618 */
+    0x0000,     /* R2619 */
+    0x0000,     /* R2620 */
+    0x0000,     /* R2621 */
+    0x0000,     /* R2622 */
+    0x0000,     /* R2623 */
+    0x0000,     /* R2624 */
+    0x0000,     /* R2625 */
+    0x0000,     /* R2626 */
+    0x0000,     /* R2627 */
+    0x0000,     /* R2628 */
+    0x0000,     /* R2629 */
+    0x0000,     /* R2630 */
+    0x0000,     /* R2631 */
+    0x0000,     /* R2632 */
+    0x0000,     /* R2633 */
+    0x0000,     /* R2634 */
+    0x0000,     /* R2635 */
+    0x0000,     /* R2636 */
+    0x0000,     /* R2637 */
+    0x0000,     /* R2638 */
+    0x0000,     /* R2639 */
+    0x0000,     /* R2640 */
+    0x0000,     /* R2641 */
+    0x0000,     /* R2642 */
+    0x0000,     /* R2643 */
+    0x0000,     /* R2644 */
+    0x0000,     /* R2645 */
+    0x0000,     /* R2646 */
+    0x0000,     /* R2647 */
+    0x0000,     /* R2648 */
+    0x0000,     /* R2649 */
+    0x0000,     /* R2650 */
+    0x0000,     /* R2651 */
+    0x0000,     /* R2652 */
+    0x0000,     /* R2653 */
+    0x0000,     /* R2654 */
+    0x0000,     /* R2655 */
+    0x0000,     /* R2656 */
+    0x0000,     /* R2657 */
+    0x0000,     /* R2658 */
+    0x0000,     /* R2659 */
+    0x0000,     /* R2660 */
+    0x0000,     /* R2661 */
+    0x0000,     /* R2662 */
+    0x0000,     /* R2663 */
+    0x0000,     /* R2664 */
+    0x0000,     /* R2665 */
+    0x0000,     /* R2666 */
+    0x0000,     /* R2667 */
+    0x0000,     /* R2668 */
+    0x0000,     /* R2669 */
+    0x0000,     /* R2670 */
+    0x0000,     /* R2671 */
+    0x0000,     /* R2672 */
+    0x0000,     /* R2673 */
+    0x0000,     /* R2674 */
+    0x0000,     /* R2675 */
+    0x0000,     /* R2676 */
+    0x0000,     /* R2677 */
+    0x0000,     /* R2678 */
+    0x0000,     /* R2679 */
+    0x0000,     /* R2680 */
+    0x0000,     /* R2681 */
+    0x0000,     /* R2682 */
+    0x0000,     /* R2683 */
+    0x0000,     /* R2684 */
+    0x0000,     /* R2685 */
+    0x0000,     /* R2686 */
+    0x0000,     /* R2687 */
+    0x0000,     /* R2688 */
+    0x0000,     /* R2689 */
+    0x0000,     /* R2690 */
+    0x0000,     /* R2691 */
+    0x0000,     /* R2692 */
+    0x0000,     /* R2693 */
+    0x0000,     /* R2694 */
+    0x0000,     /* R2695 */
+    0x0000,     /* R2696 */
+    0x0000,     /* R2697 */
+    0x0000,     /* R2698 */
+    0x0000,     /* R2699 */
+    0x0000,     /* R2700 */
+    0x0000,     /* R2701 */
+    0x0000,     /* R2702 */
+    0x0000,     /* R2703 */
+    0x0000,     /* R2704 */
+    0x0000,     /* R2705 */
+    0x0000,     /* R2706 */
+    0x0000,     /* R2707 */
+    0x0000,     /* R2708 */
+    0x0000,     /* R2709 */
+    0x0000,     /* R2710 */
+    0x0000,     /* R2711 */
+    0x0000,     /* R2712 */
+    0x0000,     /* R2713 */
+    0x0000,     /* R2714 */
+    0x0000,     /* R2715 */
+    0x0000,     /* R2716 */
+    0x0000,     /* R2717 */
+    0x0000,     /* R2718 */
+    0x0000,     /* R2719 */
+    0x0000,     /* R2720 */
+    0x0000,     /* R2721 */
+    0x0000,     /* R2722 */
+    0x0000,     /* R2723 */
+    0x0000,     /* R2724 */
+    0x0000,     /* R2725 */
+    0x0000,     /* R2726 */
+    0x0000,     /* R2727 */
+    0x0000,     /* R2728 */
+    0x0000,     /* R2729 */
+    0x0000,     /* R2730 */
+    0x0000,     /* R2731 */
+    0x0000,     /* R2732 */
+    0x0000,     /* R2733 */
+    0x0000,     /* R2734 */
+    0x0000,     /* R2735 */
+    0x0000,     /* R2736 */
+    0x0000,     /* R2737 */
+    0x0000,     /* R2738 */
+    0x0000,     /* R2739 */
+    0x0000,     /* R2740 */
+    0x0000,     /* R2741 */
+    0x0000,     /* R2742 */
+    0x0000,     /* R2743 */
+    0x0000,     /* R2744 */
+    0x0000,     /* R2745 */
+    0x0000,     /* R2746 */
+    0x0000,     /* R2747 */
+    0x0000,     /* R2748 */
+    0x0000,     /* R2749 */
+    0x0000,     /* R2750 */
+    0x0000,     /* R2751 */
+    0x0000,     /* R2752 */
+    0x0000,     /* R2753 */
+    0x0000,     /* R2754 */
+    0x0000,     /* R2755 */
+    0x0000,     /* R2756 */
+    0x0000,     /* R2757 */
+    0x0000,     /* R2758 */
+    0x0000,     /* R2759 */
+    0x0000,     /* R2760 */
+    0x0000,     /* R2761 */
+    0x0000,     /* R2762 */
+    0x0000,     /* R2763 */
+    0x0000,     /* R2764 */
+    0x0000,     /* R2765 */
+    0x0000,     /* R2766 */
+    0x0000,     /* R2767 */
+    0x0000,     /* R2768 */
+    0x0000,     /* R2769 */
+    0x0000,     /* R2770 */
+    0x0000,     /* R2771 */
+    0x0000,     /* R2772 */
+    0x0000,     /* R2773 */
+    0x0000,     /* R2774 */
+    0x0000,     /* R2775 */
+    0x0000,     /* R2776 */
+    0x0000,     /* R2777 */
+    0x0000,     /* R2778 */
+    0x0000,     /* R2779 */
+    0x0000,     /* R2780 */
+    0x0000,     /* R2781 */
+    0x0000,     /* R2782 */
+    0x0000,     /* R2783 */
+    0x0000,     /* R2784 */
+    0x0000,     /* R2785 */
+    0x0000,     /* R2786 */
+    0x0000,     /* R2787 */
+    0x0000,     /* R2788 */
+    0x0000,     /* R2789 */
+    0x0000,     /* R2790 */
+    0x0000,     /* R2791 */
+    0x0000,     /* R2792 */
+    0x0000,     /* R2793 */
+    0x0000,     /* R2794 */
+    0x0000,     /* R2795 */
+    0x0000,     /* R2796 */
+    0x0000,     /* R2797 */
+    0x0000,     /* R2798 */
+    0x0000,     /* R2799 */
+    0x0000,     /* R2800 */
+    0x0000,     /* R2801 */
+    0x0000,     /* R2802 */
+    0x0000,     /* R2803 */
+    0x0000,     /* R2804 */
+    0x0000,     /* R2805 */
+    0x0000,     /* R2806 */
+    0x0000,     /* R2807 */
+    0x0000,     /* R2808 */
+    0x0000,     /* R2809 */
+    0x0000,     /* R2810 */
+    0x0000,     /* R2811 */
+    0x0000,     /* R2812 */
+    0x0000,     /* R2813 */
+    0x0000,     /* R2814 */
+    0x0000,     /* R2815 */
+    0x0000,     /* R2816 */
+    0x0000,     /* R2817 */
+    0x0000,     /* R2818 */
+    0x0000,     /* R2819 */
+    0x0000,     /* R2820 */
+    0x0000,     /* R2821 */
+    0x0000,     /* R2822 */
+    0x0000,     /* R2823 */
+    0x0000,     /* R2824 */
+    0x0000,     /* R2825 */
+    0x0000,     /* R2826 */
+    0x0000,     /* R2827 */
+    0x0000,     /* R2828 */
+    0x0000,     /* R2829 */
+    0x0000,     /* R2830 */
+    0x0000,     /* R2831 */
+    0x0000,     /* R2832 */
+    0x0000,     /* R2833 */
+    0x0000,     /* R2834 */
+    0x0000,     /* R2835 */
+    0x0000,     /* R2836 */
+    0x0000,     /* R2837 */
+    0x0000,     /* R2838 */
+    0x0000,     /* R2839 */
+    0x0000,     /* R2840 */
+    0x0000,     /* R2841 */
+    0x0000,     /* R2842 */
+    0x0000,     /* R2843 */
+    0x0000,     /* R2844 */
+    0x0000,     /* R2845 */
+    0x0000,     /* R2846 */
+    0x0000,     /* R2847 */
+    0x0000,     /* R2848 */
+    0x0000,     /* R2849 */
+    0x0000,     /* R2850 */
+    0x0000,     /* R2851 */
+    0x0000,     /* R2852 */
+    0x0000,     /* R2853 */
+    0x0000,     /* R2854 */
+    0x0000,     /* R2855 */
+    0x0000,     /* R2856 */
+    0x0000,     /* R2857 */
+    0x0000,     /* R2858 */
+    0x0000,     /* R2859 */
+    0x0000,     /* R2860 */
+    0x0000,     /* R2861 */
+    0x0000,     /* R2862 */
+    0x0000,     /* R2863 */
+    0x0000,     /* R2864 */
+    0x0000,     /* R2865 */
+    0x0000,     /* R2866 */
+    0x0000,     /* R2867 */
+    0x0000,     /* R2868 */
+    0x0000,     /* R2869 */
+    0x0000,     /* R2870 */
+    0x0000,     /* R2871 */
+    0x0000,     /* R2872 */
+    0x0000,     /* R2873 */
+    0x0000,     /* R2874 */
+    0x0000,     /* R2875 */
+    0x0000,     /* R2876 */
+    0x0000,     /* R2877 */
+    0x0000,     /* R2878 */
+    0x0000,     /* R2879 */
+    0x0000,     /* R2880 */
+    0x0000,     /* R2881 */
+    0x0000,     /* R2882 */
+    0x0000,     /* R2883 */
+    0x0000,     /* R2884 */
+    0x0000,     /* R2885 */
+    0x0000,     /* R2886 */
+    0x0000,     /* R2887 */
+    0x0000,     /* R2888 */
+    0x0000,     /* R2889 */
+    0x0000,     /* R2890 */
+    0x0000,     /* R2891 */
+    0x0000,     /* R2892 */
+    0x0000,     /* R2893 */
+    0x0000,     /* R2894 */
+    0x0000,     /* R2895 */
+    0x0000,     /* R2896 */
+    0x0000,     /* R2897 */
+    0x0000,     /* R2898 */
+    0x0000,     /* R2899 */
+    0x0000,     /* R2900 */
+    0x0000,     /* R2901 */
+    0x0000,     /* R2902 */
+    0x0000,     /* R2903 */
+    0x0000,     /* R2904 */
+    0x0000,     /* R2905 */
+    0x0000,     /* R2906 */
+    0x0000,     /* R2907 */
+    0x0000,     /* R2908 */
+    0x0000,     /* R2909 */
+    0x0000,     /* R2910 */
+    0x0000,     /* R2911 */
+    0x0000,     /* R2912 */
+    0x0000,     /* R2913 */
+    0x0000,     /* R2914 */
+    0x0000,     /* R2915 */
+    0x0000,     /* R2916 */
+    0x0000,     /* R2917 */
+    0x0000,     /* R2918 */
+    0x0000,     /* R2919 */
+    0x0000,     /* R2920 */
+    0x0000,     /* R2921 */
+    0x0000,     /* R2922 */
+    0x0000,     /* R2923 */
+    0x0000,     /* R2924 */
+    0x0000,     /* R2925 */
+    0x0000,     /* R2926 */
+    0x0000,     /* R2927 */
+    0x0000,     /* R2928 */
+    0x0000,     /* R2929 */
+    0x0000,     /* R2930 */
+    0x0000,     /* R2931 */
+    0x0000,     /* R2932 */
+    0x0000,     /* R2933 */
+    0x0000,     /* R2934 */
+    0x0000,     /* R2935 */
+    0x0000,     /* R2936 */
+    0x0000,     /* R2937 */
+    0x0000,     /* R2938 */
+    0x0000,     /* R2939 */
+    0x0000,     /* R2940 */
+    0x0000,     /* R2941 */
+    0x0000,     /* R2942 */
+    0x0000,     /* R2943 */
+    0x0000,     /* R2944 */
+    0x0000,     /* R2945 */
+    0x0000,     /* R2946 */
+    0x0000,     /* R2947 */
+    0x0000,     /* R2948 */
+    0x0000,     /* R2949 */
+    0x0000,     /* R2950 */
+    0x0000,     /* R2951 */
+    0x0000,     /* R2952 */
+    0x0000,     /* R2953 */
+    0x0000,     /* R2954 */
+    0x0000,     /* R2955 */
+    0x0000,     /* R2956 */
+    0x0000,     /* R2957 */
+    0x0000,     /* R2958 */
+    0x0000,     /* R2959 */
+    0x0000,     /* R2960 */
+    0x0000,     /* R2961 */
+    0x0000,     /* R2962 */
+    0x0000,     /* R2963 */
+    0x0000,     /* R2964 */
+    0x0000,     /* R2965 */
+    0x0000,     /* R2966 */
+    0x0000,     /* R2967 */
+    0x0000,     /* R2968 */
+    0x0000,     /* R2969 */
+    0x0000,     /* R2970 */
+    0x0000,     /* R2971 */
+    0x0000,     /* R2972 */
+    0x0000,     /* R2973 */
+    0x0000,     /* R2974 */
+    0x0000,     /* R2975 */
+    0x0000,     /* R2976 */
+    0x0000,     /* R2977 */
+    0x0000,     /* R2978 */
+    0x0000,     /* R2979 */
+    0x0000,     /* R2980 */
+    0x0000,     /* R2981 */
+    0x0000,     /* R2982 */
+    0x0000,     /* R2983 */
+    0x0000,     /* R2984 */
+    0x0000,     /* R2985 */
+    0x0000,     /* R2986 */
+    0x0000,     /* R2987 */
+    0x0000,     /* R2988 */
+    0x0000,     /* R2989 */
+    0x0000,     /* R2990 */
+    0x0000,     /* R2991 */
+    0x0000,     /* R2992 */
+    0x0000,     /* R2993 */
+    0x0000,     /* R2994 */
+    0x0000,     /* R2995 */
+    0x0000,     /* R2996 */
+    0x0000,     /* R2997 */
+    0x0000,     /* R2998 */
+    0x0000,     /* R2999 */
+    0x0000,     /* R3000 */
+    0x0000,     /* R3001 */
+    0x0000,     /* R3002 */
+    0x0000,     /* R3003 */
+    0x0000,     /* R3004 */
+    0x0000,     /* R3005 */
+    0x0000,     /* R3006 */
+    0x0000,     /* R3007 */
+    0x0000,     /* R3008 */
+    0x0000,     /* R3009 */
+    0x0000,     /* R3010 */
+    0x0000,     /* R3011 */
+    0x0000,     /* R3012 */
+    0x0000,     /* R3013 */
+    0x0000,     /* R3014 */
+    0x0000,     /* R3015 */
+    0x0000,     /* R3016 */
+    0x0000,     /* R3017 */
+    0x0000,     /* R3018 */
+    0x0000,     /* R3019 */
+    0x0000,     /* R3020 */
+    0x0000,     /* R3021 */
+    0x0000,     /* R3022 */
+    0x0000,     /* R3023 */
+    0x0000,     /* R3024 */
+    0x0000,     /* R3025 */
+    0x0000,     /* R3026 */
+    0x0000,     /* R3027 */
+    0x0000,     /* R3028 */
+    0x0000,     /* R3029 */
+    0x0000,     /* R3030 */
+    0x0000,     /* R3031 */
+    0x0000,     /* R3032 */
+    0x0000,     /* R3033 */
+    0x0000,     /* R3034 */
+    0x0000,     /* R3035 */
+    0x0000,     /* R3036 */
+    0x0000,     /* R3037 */
+    0x0000,     /* R3038 */
+    0x0000,     /* R3039 */
+    0x0000,     /* R3040 */
+    0x0000,     /* R3041 */
+    0x0000,     /* R3042 */
+    0x0000,     /* R3043 */
+    0x0000,     /* R3044 */
+    0x0000,     /* R3045 */
+    0x0000,     /* R3046 */
+    0x0000,     /* R3047 */
+    0x0000,     /* R3048 */
+    0x0000,     /* R3049 */
+    0x0000,     /* R3050 */
+    0x0000,     /* R3051 */
+    0x0000,     /* R3052 */
+    0x0000,     /* R3053 */
+    0x0000,     /* R3054 */
+    0x0000,     /* R3055 */
+    0x0000,     /* R3056 */
+    0x0000,     /* R3057 */
+    0x0000,     /* R3058 */
+    0x0000,     /* R3059 */
+    0x0000,     /* R3060 */
+    0x0000,     /* R3061 */
+    0x0000,     /* R3062 */
+    0x0000,     /* R3063 */
+    0x0000,     /* R3064 */
+    0x0000,     /* R3065 */
+    0x0000,     /* R3066 */
+    0x0000,     /* R3067 */
+    0x0000,     /* R3068 */
+    0x0000,     /* R3069 */
+    0x0000,     /* R3070 */
+    0x0000,     /* R3071 */
+    0x0000,     /* R3072 */
+    0x0000,     /* R3073 */
+    0x0000,     /* R3074 */
+    0x0000,     /* R3075 */
+    0x0000,     /* R3076 */
+    0x0000,     /* R3077 */
+    0x0000,     /* R3078 */
+    0x0000,     /* R3079 */
+    0x0000,     /* R3080 */
+    0x0000,     /* R3081 */
+    0x0000,     /* R3082 */
+    0x0000,     /* R3083 */
+    0x0000,     /* R3084 */
+    0x0000,     /* R3085 */
+    0x0000,     /* R3086 */
+    0x0000,     /* R3087 */
+    0x0000,     /* R3088 */
+    0x0000,     /* R3089 */
+    0x0000,     /* R3090 */
+    0x0000,     /* R3091 */
+    0x0000,     /* R3092 */
+    0x0000,     /* R3093 */
+    0x0000,     /* R3094 */
+    0x0000,     /* R3095 */
+    0x0000,     /* R3096 */
+    0x0000,     /* R3097 */
+    0x0000,     /* R3098 */
+    0x0000,     /* R3099 */
+    0x0000,     /* R3100 */
+    0x0000,     /* R3101 */
+    0x0000,     /* R3102 */
+    0x0000,     /* R3103 */
+    0x0000,     /* R3104 */
+    0x0000,     /* R3105 */
+    0x0000,     /* R3106 */
+    0x0000,     /* R3107 */
+    0x0000,     /* R3108 */
+    0x0000,     /* R3109 */
+    0x0000,     /* R3110 */
+    0x0000,     /* R3111 */
+    0x0000,     /* R3112 */
+    0x0000,     /* R3113 */
+    0x0000,     /* R3114 */
+    0x0000,     /* R3115 */
+    0x0000,     /* R3116 */
+    0x0000,     /* R3117 */
+    0x0000,     /* R3118 */
+    0x0000,     /* R3119 */
+    0x0000,     /* R3120 */
+    0x0000,     /* R3121 */
+    0x0000,     /* R3122 */
+    0x0000,     /* R3123 */
+    0x0000,     /* R3124 */
+    0x0000,     /* R3125 */
+    0x0000,     /* R3126 */
+    0x0000,     /* R3127 */
+    0x0000,     /* R3128 */
+    0x0000,     /* R3129 */
+    0x0000,     /* R3130 */
+    0x0000,     /* R3131 */
+    0x0000,     /* R3132 */
+    0x0000,     /* R3133 */
+    0x0000,     /* R3134 */
+    0x0000,     /* R3135 */
+    0x0000,     /* R3136 */
+    0x0000,     /* R3137 */
+    0x0000,     /* R3138 */
+    0x0000,     /* R3139 */
+    0x0000,     /* R3140 */
+    0x0000,     /* R3141 */
+    0x0000,     /* R3142 */
+    0x0000,     /* R3143 */
+    0x0000,     /* R3144 */
+    0x0000,     /* R3145 */
+    0x0000,     /* R3146 */
+    0x0000,     /* R3147 */
+    0x0000,     /* R3148 */
+    0x0000,     /* R3149 */
+    0x0000,     /* R3150 */
+    0x0000,     /* R3151 */
+    0x0000,     /* R3152 */
+    0x0000,     /* R3153 */
+    0x0000,     /* R3154 */
+    0x0000,     /* R3155 */
+    0x0000,     /* R3156 */
+    0x0000,     /* R3157 */
+    0x0000,     /* R3158 */
+    0x0000,     /* R3159 */
+    0x0000,     /* R3160 */
+    0x0000,     /* R3161 */
+    0x0000,     /* R3162 */
+    0x0000,     /* R3163 */
+    0x0000,     /* R3164 */
+    0x0000,     /* R3165 */
+    0x0000,     /* R3166 */
+    0x0000,     /* R3167 */
+    0x0000,     /* R3168 */
+    0x0000,     /* R3169 */
+    0x0000,     /* R3170 */
+    0x0000,     /* R3171 */
+    0x0000,     /* R3172 */
+    0x0000,     /* R3173 */
+    0x0000,     /* R3174 */
+    0x0000,     /* R3175 */
+    0x0000,     /* R3176 */
+    0x0000,     /* R3177 */
+    0x0000,     /* R3178 */
+    0x0000,     /* R3179 */
+    0x0000,     /* R3180 */
+    0x0000,     /* R3181 */
+    0x0000,     /* R3182 */
+    0x0000,     /* R3183 */
+    0x0000,     /* R3184 */
+    0x0000,     /* R3185 */
+    0x0000,     /* R3186 */
+    0x0000,     /* R3187 */
+    0x0000,     /* R3188 */
+    0x0000,     /* R3189 */
+    0x0000,     /* R3190 */
+    0x0000,     /* R3191 */
+    0x0000,     /* R3192 */
+    0x0000,     /* R3193 */
+    0x0000,     /* R3194 */
+    0x0000,     /* R3195 */
+    0x0000,     /* R3196 */
+    0x0000,     /* R3197 */
+    0x0000,     /* R3198 */
+    0x0000,     /* R3199 */
+    0x0000,     /* R3200 */
+    0x0000,     /* R3201 */
+    0x0000,     /* R3202 */
+    0x0000,     /* R3203 */
+    0x0000,     /* R3204 */
+    0x0000,     /* R3205 */
+    0x0000,     /* R3206 */
+    0x0000,     /* R3207 */
+    0x0000,     /* R3208 */
+    0x0000,     /* R3209 */
+    0x0000,     /* R3210 */
+    0x0000,     /* R3211 */
+    0x0000,     /* R3212 */
+    0x0000,     /* R3213 */
+    0x0000,     /* R3214 */
+    0x0000,     /* R3215 */
+    0x0000,     /* R3216 */
+    0x0000,     /* R3217 */
+    0x0000,     /* R3218 */
+    0x0000,     /* R3219 */
+    0x0000,     /* R3220 */
+    0x0000,     /* R3221 */
+    0x0000,     /* R3222 */
+    0x0000,     /* R3223 */
+    0x0000,     /* R3224 */
+    0x0000,     /* R3225 */
+    0x0000,     /* R3226 */
+    0x0000,     /* R3227 */
+    0x0000,     /* R3228 */
+    0x0000,     /* R3229 */
+    0x0000,     /* R3230 */
+    0x0000,     /* R3231 */
+    0x0000,     /* R3232 */
+    0x0000,     /* R3233 */
+    0x0000,     /* R3234 */
+    0x0000,     /* R3235 */
+    0x0000,     /* R3236 */
+    0x0000,     /* R3237 */
+    0x0000,     /* R3238 */
+    0x0000,     /* R3239 */
+    0x0000,     /* R3240 */
+    0x0000,     /* R3241 */
+    0x0000,     /* R3242 */
+    0x0000,     /* R3243 */
+    0x0000,     /* R3244 */
+    0x0000,     /* R3245 */
+    0x0000,     /* R3246 */
+    0x0000,     /* R3247 */
+    0x0000,     /* R3248 */
+    0x0000,     /* R3249 */
+    0x0000,     /* R3250 */
+    0x0000,     /* R3251 */
+    0x0000,     /* R3252 */
+    0x0000,     /* R3253 */
+    0x0000,     /* R3254 */
+    0x0000,     /* R3255 */
+    0x0000,     /* R3256 */
+    0x0000,     /* R3257 */
+    0x0000,     /* R3258 */
+    0x0000,     /* R3259 */
+    0x0000,     /* R3260 */
+    0x0000,     /* R3261 */
+    0x0000,     /* R3262 */
+    0x0000,     /* R3263 */
+    0x0000,     /* R3264 */
+    0x0000,     /* R3265 */
+    0x0000,     /* R3266 */
+    0x0000,     /* R3267 */
+    0x0000,     /* R3268 */
+    0x0000,     /* R3269 */
+    0x0000,     /* R3270 */
+    0x0000,     /* R3271 */
+    0x0000,     /* R3272 */
+    0x0000,     /* R3273 */
+    0x0000,     /* R3274 */
+    0x0000,     /* R3275 */
+    0x0000,     /* R3276 */
+    0x0000,     /* R3277 */
+    0x0000,     /* R3278 */
+    0x0000,     /* R3279 */
+    0x0000,     /* R3280 */
+    0x0000,     /* R3281 */
+    0x0000,     /* R3282 */
+    0x0000,     /* R3283 */
+    0x0000,     /* R3284 */
+    0x0000,     /* R3285 */
+    0x0000,     /* R3286 */
+    0x0000,     /* R3287 */
+    0x0000,     /* R3288 */
+    0x0000,     /* R3289 */
+    0x0000,     /* R3290 */
+    0x0000,     /* R3291 */
+    0x0000,     /* R3292 */
+    0x0000,     /* R3293 */
+    0x0000,     /* R3294 */
+    0x0000,     /* R3295 */
+    0x0000,     /* R3296 */
+    0x0000,     /* R3297 */
+    0x0000,     /* R3298 */
+    0x0000,     /* R3299 */
+    0x0000,     /* R3300 */
+    0x0000,     /* R3301 */
+    0x0000,     /* R3302 */
+    0x0000,     /* R3303 */
+    0x0000,     /* R3304 */
+    0x0000,     /* R3305 */
+    0x0000,     /* R3306 */
+    0x0000,     /* R3307 */
+    0x0000,     /* R3308 */
+    0x0000,     /* R3309 */
+    0x0000,     /* R3310 */
+    0x0000,     /* R3311 */
+    0x0000,     /* R3312 */
+    0x0000,     /* R3313 */
+    0x0000,     /* R3314 */
+    0x0000,     /* R3315 */
+    0x0000,     /* R3316 */
+    0x0000,     /* R3317 */
+    0x0000,     /* R3318 */
+    0x0000,     /* R3319 */
+    0x0000,     /* R3320 */
+    0x0000,     /* R3321 */
+    0x0000,     /* R3322 */
+    0x0000,     /* R3323 */
+    0x0000,     /* R3324 */
+    0x0000,     /* R3325 */
+    0x0000,     /* R3326 */
+    0x0000,     /* R3327 */
+    0x0000,     /* R3328 */
+    0x0000,     /* R3329 */
+    0x0000,     /* R3330 */
+    0x0000,     /* R3331 */
+    0x0000,     /* R3332 */
+    0x0000,     /* R3333 */
+    0x0000,     /* R3334 */
+    0x0000,     /* R3335 */
+    0x0000,     /* R3336 */
+    0x0000,     /* R3337 */
+    0x0000,     /* R3338 */
+    0x0000,     /* R3339 */
+    0x0000,     /* R3340 */
+    0x0000,     /* R3341 */
+    0x0000,     /* R3342 */
+    0x0000,     /* R3343 */
+    0x0000,     /* R3344 */
+    0x0000,     /* R3345 */
+    0x0000,     /* R3346 */
+    0x0000,     /* R3347 */
+    0x0000,     /* R3348 */
+    0x0000,     /* R3349 */
+    0x0000,     /* R3350 */
+    0x0000,     /* R3351 */
+    0x0000,     /* R3352 */
+    0x0000,     /* R3353 */
+    0x0000,     /* R3354 */
+    0x0000,     /* R3355 */
+    0x0000,     /* R3356 */
+    0x0000,     /* R3357 */
+    0x0000,     /* R3358 */
+    0x0000,     /* R3359 */
+    0x0000,     /* R3360 */
+    0x0000,     /* R3361 */
+    0x0000,     /* R3362 */
+    0x0000,     /* R3363 */
+    0x0000,     /* R3364 */
+    0x0000,     /* R3365 */
+    0x0000,     /* R3366 */
+    0x0000,     /* R3367 */
+    0x0000,     /* R3368 */
+    0x0000,     /* R3369 */
+    0x0000,     /* R3370 */
+    0x0000,     /* R3371 */
+    0x0000,     /* R3372 */
+    0x0000,     /* R3373 */
+    0x0000,     /* R3374 */
+    0x0000,     /* R3375 */
+    0x0000,     /* R3376 */
+    0x0000,     /* R3377 */
+    0x0000,     /* R3378 */
+    0x0000,     /* R3379 */
+    0x0000,     /* R3380 */
+    0x0000,     /* R3381 */
+    0x0000,     /* R3382 */
+    0x0000,     /* R3383 */
+    0x0000,     /* R3384 */
+    0x0000,     /* R3385 */
+    0x0000,     /* R3386 */
+    0x0000,     /* R3387 */
+    0x0000,     /* R3388 */
+    0x0000,     /* R3389 */
+    0x0000,     /* R3390 */
+    0x0000,     /* R3391 */
+    0x0000,     /* R3392 */
+    0x0000,     /* R3393 */
+    0x0000,     /* R3394 */
+    0x0000,     /* R3395 */
+    0x0000,     /* R3396 */
+    0x0000,     /* R3397 */
+    0x0000,     /* R3398 */
+    0x0000,     /* R3399 */
+    0x0000,     /* R3400 */
+    0x0000,     /* R3401 */
+    0x0000,     /* R3402 */
+    0x0000,     /* R3403 */
+    0x0000,     /* R3404 */
+    0x0000,     /* R3405 */
+    0x0000,     /* R3406 */
+    0x0000,     /* R3407 */
+    0x0000,     /* R3408 */
+    0x0000,     /* R3409 */
+    0x0000,     /* R3410 */
+    0x0000,     /* R3411 */
+    0x0000,     /* R3412 */
+    0x0000,     /* R3413 */
+    0x0000,     /* R3414 */
+    0x0000,     /* R3415 */
+    0x0000,     /* R3416 */
+    0x0000,     /* R3417 */
+    0x0000,     /* R3418 */
+    0x0000,     /* R3419 */
+    0x0000,     /* R3420 */
+    0x0000,     /* R3421 */
+    0x0000,     /* R3422 */
+    0x0000,     /* R3423 */
+    0x0000,     /* R3424 */
+    0x0000,     /* R3425 */
+    0x0000,     /* R3426 */
+    0x0000,     /* R3427 */
+    0x0000,     /* R3428 */
+    0x0000,     /* R3429 */
+    0x0000,     /* R3430 */
+    0x0000,     /* R3431 */
+    0x0000,     /* R3432 */
+    0x0000,     /* R3433 */
+    0x0000,     /* R3434 */
+    0x0000,     /* R3435 */
+    0x0000,     /* R3436 */
+    0x0000,     /* R3437 */
+    0x0000,     /* R3438 */
+    0x0000,     /* R3439 */
+    0x0000,     /* R3440 */
+    0x0000,     /* R3441 */
+    0x0000,     /* R3442 */
+    0x0000,     /* R3443 */
+    0x0000,     /* R3444 */
+    0x0000,     /* R3445 */
+    0x0000,     /* R3446 */
+    0x0000,     /* R3447 */
+    0x0000,     /* R3448 */
+    0x0000,     /* R3449 */
+    0x0000,     /* R3450 */
+    0x0000,     /* R3451 */
+    0x0000,     /* R3452 */
+    0x0000,     /* R3453 */
+    0x0000,     /* R3454 */
+    0x0000,     /* R3455 */
+    0x0000,     /* R3456 */
+    0x0000,     /* R3457 */
+    0x0000,     /* R3458 */
+    0x0000,     /* R3459 */
+    0x0000,     /* R3460 */
+    0x0000,     /* R3461 */
+    0x0000,     /* R3462 */
+    0x0000,     /* R3463 */
+    0x0000,     /* R3464 */
+    0x0000,     /* R3465 */
+    0x0000,     /* R3466 */
+    0x0000,     /* R3467 */
+    0x0000,     /* R3468 */
+    0x0000,     /* R3469 */
+    0x0000,     /* R3470 */
+    0x0000,     /* R3471 */
+    0x0000,     /* R3472 */
+    0x0000,     /* R3473 */
+    0x0000,     /* R3474 */
+    0x0000,     /* R3475 */
+    0x0000,     /* R3476 */
+    0x0000,     /* R3477 */
+    0x0000,     /* R3478 */
+    0x0000,     /* R3479 */
+    0x0000,     /* R3480 */
+    0x0000,     /* R3481 */
+    0x0000,     /* R3482 */
+    0x0000,     /* R3483 */
+    0x0000,     /* R3484 */
+    0x0000,     /* R3485 */
+    0x0000,     /* R3486 */
+    0x0000,     /* R3487 */
+    0x0000,     /* R3488 */
+    0x0000,     /* R3489 */
+    0x0000,     /* R3490 */
+    0x0000,     /* R3491 */
+    0x0000,     /* R3492 */
+    0x0000,     /* R3493 */
+    0x0000,     /* R3494 */
+    0x0000,     /* R3495 */
+    0x0000,     /* R3496 */
+    0x0000,     /* R3497 */
+    0x0000,     /* R3498 */
+    0x0000,     /* R3499 */
+    0x0000,     /* R3500 */
+    0x0000,     /* R3501 */
+    0x0000,     /* R3502 */
+    0x0000,     /* R3503 */
+    0x0000,     /* R3504 */
+    0x0000,     /* R3505 */
+    0x0000,     /* R3506 */
+    0x0000,     /* R3507 */
+    0x0000,     /* R3508 */
+    0x0000,     /* R3509 */
+    0x0000,     /* R3510 */
+    0x0000,     /* R3511 */
+    0x0000,     /* R3512 */
+    0x0000,     /* R3513 */
+    0x0000,     /* R3514 */
+    0x0000,     /* R3515 */
+    0x0000,     /* R3516 */
+    0x0000,     /* R3517 */
+    0x0000,     /* R3518 */
+    0x0000,     /* R3519 */
+    0x0000,     /* R3520 */
+    0x0000,     /* R3521 */
+    0x0000,     /* R3522 */
+    0x0000,     /* R3523 */
+    0x0000,     /* R3524 */
+    0x0000,     /* R3525 */
+    0x0000,     /* R3526 */
+    0x0000,     /* R3527 */
+    0x0000,     /* R3528 */
+    0x0000,     /* R3529 */
+    0x0000,     /* R3530 */
+    0x0000,     /* R3531 */
+    0x0000,     /* R3532 */
+    0x0000,     /* R3533 */
+    0x0000,     /* R3534 */
+    0x0000,     /* R3535 */
+    0x0000,     /* R3536 */
+    0x0000,     /* R3537 */
+    0x0000,     /* R3538 */
+    0x0000,     /* R3539 */
+    0x0000,     /* R3540 */
+    0x0000,     /* R3541 */
+    0x0000,     /* R3542 */
+    0x0000,     /* R3543 */
+    0x0000,     /* R3544 */
+    0x0000,     /* R3545 */
+    0x0000,     /* R3546 */
+    0x0000,     /* R3547 */
+    0x0000,     /* R3548 */
+    0x0000,     /* R3549 */
+    0x0000,     /* R3550 */
+    0x0000,     /* R3551 */
+    0x0000,     /* R3552 */
+    0x0000,     /* R3553 */
+    0x0000,     /* R3554 */
+    0x0000,     /* R3555 */
+    0x0000,     /* R3556 */
+    0x0000,     /* R3557 */
+    0x0000,     /* R3558 */
+    0x0000,     /* R3559 */
+    0x0000,     /* R3560 */
+    0x0000,     /* R3561 */
+    0x0000,     /* R3562 */
+    0x0000,     /* R3563 */
+    0x0000,     /* R3564 */
+    0x0000,     /* R3565 */
+    0x0000,     /* R3566 */
+    0x0000,     /* R3567 */
+    0x0000,     /* R3568 */
+    0x0000,     /* R3569 */
+    0x0000,     /* R3570 */
+    0x0000,     /* R3571 */
+    0x0000,     /* R3572 */
+    0x0000,     /* R3573 */
+    0x0000,     /* R3574 */
+    0x0000,     /* R3575 */
+    0x0000,     /* R3576 */
+    0x0000,     /* R3577 */
+    0x0000,     /* R3578 */
+    0x0000,     /* R3579 */
+    0x0000,     /* R3580 */
+    0x0000,     /* R3581 */
+    0x0000,     /* R3582 */
+    0x0000,     /* R3583 */
+    0x0000,     /* R3584 */
+    0x0000,     /* R3585 */
+    0x0000,     /* R3586 */
+    0x0000,     /* R3587 */
+    0x0000,     /* R3588 */
+    0x0000,     /* R3589 */
+    0x0000,     /* R3590 */
+    0x0000,     /* R3591 */
+    0x0000,     /* R3592 */
+    0x0000,     /* R3593 */
+    0x0000,     /* R3594 */
+    0x0000,     /* R3595 */
+    0x0000,     /* R3596 */
+    0x0000,     /* R3597 */
+    0x0000,     /* R3598 */
+    0x0000,     /* R3599 */
+    0x0000,     /* R3600 */
+    0x0000,     /* R3601 */
+    0x0000,     /* R3602 */
+    0x0000,     /* R3603 */
+    0x0000,     /* R3604 */
+    0x0000,     /* R3605 */
+    0x0000,     /* R3606 */
+    0x0000,     /* R3607 */
+    0x0000,     /* R3608 */
+    0x0000,     /* R3609 */
+    0x0000,     /* R3610 */
+    0x0000,     /* R3611 */
+    0x0000,     /* R3612 */
+    0x0000,     /* R3613 */
+    0x0000,     /* R3614 */
+    0x0000,     /* R3615 */
+    0x0000,     /* R3616 */
+    0x0000,     /* R3617 */
+    0x0000,     /* R3618 */
+    0x0000,     /* R3619 */
+    0x0000,     /* R3620 */
+    0x0000,     /* R3621 */
+    0x0000,     /* R3622 */
+    0x0000,     /* R3623 */
+    0x0000,     /* R3624 */
+    0x0000,     /* R3625 */
+    0x0000,     /* R3626 */
+    0x0000,     /* R3627 */
+    0x0000,     /* R3628 */
+    0x0000,     /* R3629 */
+    0x0000,     /* R3630 */
+    0x0000,     /* R3631 */
+    0x0000,     /* R3632 */
+    0x0000,     /* R3633 */
+    0x0000,     /* R3634 */
+    0x0000,     /* R3635 */
+    0x0000,     /* R3636 */
+    0x0000,     /* R3637 */
+    0x0000,     /* R3638 */
+    0x0000,     /* R3639 */
+    0x0000,     /* R3640 */
+    0x0000,     /* R3641 */
+    0x0000,     /* R3642 */
+    0x0000,     /* R3643 */
+    0x0000,     /* R3644 */
+    0x0000,     /* R3645 */
+    0x0000,     /* R3646 */
+    0x0000,     /* R3647 */
+    0x0000,     /* R3648 */
+    0x0000,     /* R3649 */
+    0x0000,     /* R3650 */
+    0x0000,     /* R3651 */
+    0x0000,     /* R3652 */
+    0x0000,     /* R3653 */
+    0x0000,     /* R3654 */
+    0x0000,     /* R3655 */
+    0x0000,     /* R3656 */
+    0x0000,     /* R3657 */
+    0x0000,     /* R3658 */
+    0x0000,     /* R3659 */
+    0x0000,     /* R3660 */
+    0x0000,     /* R3661 */
+    0x0000,     /* R3662 */
+    0x0000,     /* R3663 */
+    0x0000,     /* R3664 */
+    0x0000,     /* R3665 */
+    0x0000,     /* R3666 */
+    0x0000,     /* R3667 */
+    0x0000,     /* R3668 */
+    0x0000,     /* R3669 */
+    0x0000,     /* R3670 */
+    0x0000,     /* R3671 */
+    0x0000,     /* R3672 */
+    0x0000,     /* R3673 */
+    0x0000,     /* R3674 */
+    0x0000,     /* R3675 */
+    0x0000,     /* R3676 */
+    0x0000,     /* R3677 */
+    0x0000,     /* R3678 */
+    0x0000,     /* R3679 */
+    0x0000,     /* R3680 */
+    0x0000,     /* R3681 */
+    0x0000,     /* R3682 */
+    0x0000,     /* R3683 */
+    0x0000,     /* R3684 */
+    0x0000,     /* R3685 */
+    0x0000,     /* R3686 */
+    0x0000,     /* R3687 */
+    0x0000,     /* R3688 */
+    0x0000,     /* R3689 */
+    0x0000,     /* R3690 */
+    0x0000,     /* R3691 */
+    0x0000,     /* R3692 */
+    0x0000,     /* R3693 */
+    0x0000,     /* R3694 */
+    0x0000,     /* R3695 */
+    0x0000,     /* R3696 */
+    0x0000,     /* R3697 */
+    0x0000,     /* R3698 */
+    0x0000,     /* R3699 */
+    0x0000,     /* R3700 */
+    0x0000,     /* R3701 */
+    0x0000,     /* R3702 */
+    0x0000,     /* R3703 */
+    0x0000,     /* R3704 */
+    0x0000,     /* R3705 */
+    0x0000,     /* R3706 */
+    0x0000,     /* R3707 */
+    0x0000,     /* R3708 */
+    0x0000,     /* R3709 */
+    0x0000,     /* R3710 */
+    0x0000,     /* R3711 */
+    0x0000,     /* R3712 */
+    0x0000,     /* R3713 */
+    0x0000,     /* R3714 */
+    0x0000,     /* R3715 */
+    0x0000,     /* R3716 */
+    0x0000,     /* R3717 */
+    0x0000,     /* R3718 */
+    0x0000,     /* R3719 */
+    0x0000,     /* R3720 */
+    0x0000,     /* R3721 */
+    0x0000,     /* R3722 */
+    0x0000,     /* R3723 */
+    0x0000,     /* R3724 */
+    0x0000,     /* R3725 */
+    0x0000,     /* R3726 */
+    0x0000,     /* R3727 */
+    0x0000,     /* R3728 */
+    0x0000,     /* R3729 */
+    0x0000,     /* R3730 */
+    0x0000,     /* R3731 */
+    0x0000,     /* R3732 */
+    0x0000,     /* R3733 */
+    0x0000,     /* R3734 */
+    0x0000,     /* R3735 */
+    0x0000,     /* R3736 */
+    0x0000,     /* R3737 */
+    0x0000,     /* R3738 */
+    0x0000,     /* R3739 */
+    0x0000,     /* R3740 */
+    0x0000,     /* R3741 */
+    0x0000,     /* R3742 */
+    0x0000,     /* R3743 */
+    0x0000,     /* R3744 */
+    0x0000,     /* R3745 */
+    0x0000,     /* R3746 */
+    0x0000,     /* R3747 */
+    0x0000,     /* R3748 */
+    0x0000,     /* R3749 */
+    0x0000,     /* R3750 */
+    0x0000,     /* R3751 */
+    0x0000,     /* R3752 */
+    0x0000,     /* R3753 */
+    0x0000,     /* R3754 */
+    0x0000,     /* R3755 */
+    0x0000,     /* R3756 */
+    0x0000,     /* R3757 */
+    0x0000,     /* R3758 */
+    0x0000,     /* R3759 */
+    0x0000,     /* R3760 */
+    0x0000,     /* R3761 */
+    0x0000,     /* R3762 */
+    0x0000,     /* R3763 */
+    0x0000,     /* R3764 */
+    0x0000,     /* R3765 */
+    0x0000,     /* R3766 */
+    0x0000,     /* R3767 */
+    0x0000,     /* R3768 */
+    0x0000,     /* R3769 */
+    0x0000,     /* R3770 */
+    0x0000,     /* R3771 */
+    0x0000,     /* R3772 */
+    0x0000,     /* R3773 */
+    0x0000,     /* R3774 */
+    0x0000,     /* R3775 */
+    0x0000,     /* R3776 */
+    0x0000,     /* R3777 */
+    0x0000,     /* R3778 */
+    0x0000,     /* R3779 */
+    0x0000,     /* R3780 */
+    0x0000,     /* R3781 */
+    0x0000,     /* R3782 */
+    0x0000,     /* R3783 */
+    0x0000,     /* R3784 */
+    0x0000,     /* R3785 */
+    0x0000,     /* R3786 */
+    0x0000,     /* R3787 */
+    0x0000,     /* R3788 */
+    0x0000,     /* R3789 */
+    0x0000,     /* R3790 */
+    0x0000,     /* R3791 */
+    0x0000,     /* R3792 */
+    0x0000,     /* R3793 */
+    0x0000,     /* R3794 */
+    0x0000,     /* R3795 */
+    0x0000,     /* R3796 */
+    0x0000,     /* R3797 */
+    0x0000,     /* R3798 */
+    0x0000,     /* R3799 */
+    0x0000,     /* R3800 */
+    0x0000,     /* R3801 */
+    0x0000,     /* R3802 */
+    0x0000,     /* R3803 */
+    0x0000,     /* R3804 */
+    0x0000,     /* R3805 */
+    0x0000,     /* R3806 */
+    0x0000,     /* R3807 */
+    0x0000,     /* R3808 */
+    0x0000,     /* R3809 */
+    0x0000,     /* R3810 */
+    0x0000,     /* R3811 */
+    0x0000,     /* R3812 */
+    0x0000,     /* R3813 */
+    0x0000,     /* R3814 */
+    0x0000,     /* R3815 */
+    0x0000,     /* R3816 */
+    0x0000,     /* R3817 */
+    0x0000,     /* R3818 */
+    0x0000,     /* R3819 */
+    0x0000,     /* R3820 */
+    0x0000,     /* R3821 */
+    0x0000,     /* R3822 */
+    0x0000,     /* R3823 */
+    0x0000,     /* R3824 */
+    0x0000,     /* R3825 */
+    0x0000,     /* R3826 */
+    0x0000,     /* R3827 */
+    0x0000,     /* R3828 */
+    0x0000,     /* R3829 */
+    0x0000,     /* R3830 */
+    0x0000,     /* R3831 */
+    0x0000,     /* R3832 */
+    0x0000,     /* R3833 */
+    0x0000,     /* R3834 */
+    0x0000,     /* R3835 */
+    0x0000,     /* R3836 */
+    0x0000,     /* R3837 */
+    0x0000,     /* R3838 */
+    0x0000,     /* R3839 */
+    0x0000,     /* R3840 */
+    0x0000,     /* R3841 */
+    0x0000,     /* R3842 */
+    0x0000,     /* R3843 */
+    0x0000,     /* R3844 */
+    0x0000,     /* R3845 */
+    0x0000,     /* R3846 */
+    0x0000,     /* R3847 */
+    0x0000,     /* R3848 */
+    0x0000,     /* R3849 */
+    0x0000,     /* R3850 */
+    0x0000,     /* R3851 */
+    0x0000,     /* R3852 */
+    0x0000,     /* R3853 */
+    0x0000,     /* R3854 */
+    0x0000,     /* R3855 */
+    0x0000,     /* R3856 */
+    0x0000,     /* R3857 */
+    0x0000,     /* R3858 */
+    0x0000,     /* R3859 */
+    0x0000,     /* R3860 */
+    0x0000,     /* R3861 */
+    0x0000,     /* R3862 */
+    0x0000,     /* R3863 */
+    0x0000,     /* R3864 */
+    0x0000,     /* R3865 */
+    0x0000,     /* R3866 */
+    0x0000,     /* R3867 */
+    0x0000,     /* R3868 */
+    0x0000,     /* R3869 */
+    0x0000,     /* R3870 */
+    0x0000,     /* R3871 */
+    0x0000,     /* R3872 */
+    0x0000,     /* R3873 */
+    0x0000,     /* R3874 */
+    0x0000,     /* R3875 */
+    0x0000,     /* R3876 */
+    0x0000,     /* R3877 */
+    0x0000,     /* R3878 */
+    0x0000,     /* R3879 */
+    0x0000,     /* R3880 */
+    0x0000,     /* R3881 */
+    0x0000,     /* R3882 */
+    0x0000,     /* R3883 */
+    0x0000,     /* R3884 */
+    0x0000,     /* R3885 */
+    0x0000,     /* R3886 */
+    0x0000,     /* R3887 */
+    0x0000,     /* R3888 */
+    0x0000,     /* R3889 */
+    0x0000,     /* R3890 */
+    0x0000,     /* R3891 */
+    0x0000,     /* R3892 */
+    0x0000,     /* R3893 */
+    0x0000,     /* R3894 */
+    0x0000,     /* R3895 */
+    0x0000,     /* R3896 */
+    0x0000,     /* R3897 */
+    0x0000,     /* R3898 */
+    0x0000,     /* R3899 */
+    0x0000,     /* R3900 */
+    0x0000,     /* R3901 */
+    0x0000,     /* R3902 */
+    0x0000,     /* R3903 */
+    0x0000,     /* R3904 */
+    0x0000,     /* R3905 */
+    0x0000,     /* R3906 */
+    0x0000,     /* R3907 */
+    0x0000,     /* R3908 */
+    0x0000,     /* R3909 */
+    0x0000,     /* R3910 */
+    0x0000,     /* R3911 */
+    0x0000,     /* R3912 */
+    0x0000,     /* R3913 */
+    0x0000,     /* R3914 */
+    0x0000,     /* R3915 */
+    0x0000,     /* R3916 */
+    0x0000,     /* R3917 */
+    0x0000,     /* R3918 */
+    0x0000,     /* R3919 */
+    0x0000,     /* R3920 */
+    0x0000,     /* R3921 */
+    0x0000,     /* R3922 */
+    0x0000,     /* R3923 */
+    0x0000,     /* R3924 */
+    0x0000,     /* R3925 */
+    0x0000,     /* R3926 */
+    0x0000,     /* R3927 */
+    0x0000,     /* R3928 */
+    0x0000,     /* R3929 */
+    0x0000,     /* R3930 */
+    0x0000,     /* R3931 */
+    0x0000,     /* R3932 */
+    0x0000,     /* R3933 */
+    0x0000,     /* R3934 */
+    0x0000,     /* R3935 */
+    0x0000,     /* R3936 */
+    0x0000,     /* R3937 */
+    0x0000,     /* R3938 */
+    0x0000,     /* R3939 */
+    0x0000,     /* R3940 */
+    0x0000,     /* R3941 */
+    0x0000,     /* R3942 */
+    0x0000,     /* R3943 */
+    0x0000,     /* R3944 */
+    0x0000,     /* R3945 */
+    0x0000,     /* R3946 */
+    0x0000,     /* R3947 */
+    0x0000,     /* R3948 */
+    0x0000,     /* R3949 */
+    0x0000,     /* R3950 */
+    0x0000,     /* R3951 */
+    0x0000,     /* R3952 */
+    0x0000,     /* R3953 */
+    0x0000,     /* R3954 */
+    0x0000,     /* R3955 */
+    0x0000,     /* R3956 */
+    0x0000,     /* R3957 */
+    0x0000,     /* R3958 */
+    0x0000,     /* R3959 */
+    0x0000,     /* R3960 */
+    0x0000,     /* R3961 */
+    0x0000,     /* R3962 */
+    0x0000,     /* R3963 */
+    0x0000,     /* R3964 */
+    0x0000,     /* R3965 */
+    0x0000,     /* R3966 */
+    0x0000,     /* R3967 */
+    0x0000,     /* R3968 */
+    0x0000,     /* R3969 */
+    0x0000,     /* R3970 */
+    0x0000,     /* R3971 */
+    0x0000,     /* R3972 */
+    0x0000,     /* R3973 */
+    0x0000,     /* R3974 */
+    0x0000,     /* R3975 */
+    0x0000,     /* R3976 */
+    0x0000,     /* R3977 */
+    0x0000,     /* R3978 */
+    0x0000,     /* R3979 */
+    0x0000,     /* R3980 */
+    0x0000,     /* R3981 */
+    0x0000,     /* R3982 */
+    0x0000,     /* R3983 */
+    0x0000,     /* R3984 */
+    0x0000,     /* R3985 */
+    0x0000,     /* R3986 */
+    0x0000,     /* R3987 */
+    0x0000,     /* R3988 */
+    0x0000,     /* R3989 */
+    0x0000,     /* R3990 */
+    0x0000,     /* R3991 */
+    0x0000,     /* R3992 */
+    0x0000,     /* R3993 */
+    0x0000,     /* R3994 */
+    0x0000,     /* R3995 */
+    0x0000,     /* R3996 */
+    0x0000,     /* R3997 */
+    0x0000,     /* R3998 */
+    0x0000,     /* R3999 */
+    0x0000,     /* R4000 */
+    0x0000,     /* R4001 */
+    0x0000,     /* R4002 */
+    0x0000,     /* R4003 */
+    0x0000,     /* R4004 */
+    0x0000,     /* R4005 */
+    0x0000,     /* R4006 */
+    0x0000,     /* R4007 */
+    0x0000,     /* R4008 */
+    0x0000,     /* R4009 */
+    0x0000,     /* R4010 */
+    0x0000,     /* R4011 */
+    0x0000,     /* R4012 */
+    0x0000,     /* R4013 */
+    0x0000,     /* R4014 */
+    0x0000,     /* R4015 */
+    0x0000,     /* R4016 */
+    0x0000,     /* R4017 */
+    0x0000,     /* R4018 */
+    0x0000,     /* R4019 */
+    0x0000,     /* R4020 */
+    0x0000,     /* R4021 */
+    0x0000,     /* R4022 */
+    0x0000,     /* R4023 */
+    0x0000,     /* R4024 */
+    0x0000,     /* R4025 */
+    0x0000,     /* R4026 */
+    0x0000,     /* R4027 */
+    0x0000,     /* R4028 */
+    0x0000,     /* R4029 */
+    0x0000,     /* R4030 */
+    0x0000,     /* R4031 */
+    0x0000,     /* R4032 */
+    0x0000,     /* R4033 */
+    0x0000,     /* R4034 */
+    0x0000,     /* R4035 */
+    0x0000,     /* R4036 */
+    0x0000,     /* R4037 */
+    0x0000,     /* R4038 */
+    0x0000,     /* R4039 */
+    0x0000,     /* R4040 */
+    0x0000,     /* R4041 */
+    0x0000,     /* R4042 */
+    0x0000,     /* R4043 */
+    0x0000,     /* R4044 */
+    0x0000,     /* R4045 */
+    0x0000,     /* R4046 */
+    0x0000,     /* R4047 */
+    0x0000,     /* R4048 */
+    0x0000,     /* R4049 */
+    0x0000,     /* R4050 */
+    0x0000,     /* R4051 */
+    0x0000,     /* R4052 */
+    0x0000,     /* R4053 */
+    0x0000,     /* R4054 */
+    0x0000,     /* R4055 */
+    0x0000,     /* R4056 */
+    0x0000,     /* R4057 */
+    0x0000,     /* R4058 */
+    0x0000,     /* R4059 */
+    0x0000,     /* R4060 */
+    0x0000,     /* R4061 */
+    0x0000,     /* R4062 */
+    0x0000,     /* R4063 */
+    0x0000,     /* R4064 */
+    0x0000,     /* R4065 */
+    0x0000,     /* R4066 */
+    0x0000,     /* R4067 */
+    0x0000,     /* R4068 */
+    0x0000,     /* R4069 */
+    0x0000,     /* R4070 */
+    0x0000,     /* R4071 */
+    0x0000,     /* R4072 */
+    0x0000,     /* R4073 */
+    0x0000,     /* R4074 */
+    0x0000,     /* R4075 */
+    0x0000,     /* R4076 */
+    0x0000,     /* R4077 */
+    0x0000,     /* R4078 */
+    0x0000,     /* R4079 */
+    0x0000,     /* R4080 */
+    0x0000,     /* R4081 */
+    0x0000,     /* R4082 */
+    0x0000,     /* R4083 */
+    0x0000,     /* R4084 */
+    0x0000,     /* R4085 */
+    0x0000,     /* R4086 */
+    0x0000,     /* R4087 */
+    0x0000,     /* R4088 */
+    0x0000,     /* R4089 */
+    0x0000,     /* R4090 */
+    0x0000,     /* R4091 */
+    0x0000,     /* R4092 */
+    0x0000,     /* R4093 */
+    0x0000,     /* R4094 */
+    0x0000,     /* R4095 */
+    0x001C,     /* R4096  - Write Sequencer 0 */
+    0x0003,     /* R4097  - Write Sequencer 1 */
+    0x0103,     /* R4098  - Write Sequencer 2 */
+    0x0000,     /* R4099  - Write Sequencer 3 */
+    0x0019,     /* R4100  - Write Sequencer 4 */
+    0x0007,     /* R4101  - Write Sequencer 5 */
+    0x0206,     /* R4102  - Write Sequencer 6 */
+    0x0000,     /* R4103  - Write Sequencer 7 */
+    0x0048,     /* R4104  - Write Sequencer 8 */
+    0x0001,     /* R4105  - Write Sequencer 9 */
+    0x0000,     /* R4106  - Write Sequencer 10 */
+    0x0006,     /* R4107  - Write Sequencer 11 */
+    0x001A,     /* R4108  - Write Sequencer 12 */
+    0x000F,     /* R4109  - Write Sequencer 13 */
+    0x0305,     /* R4110  - Write Sequencer 14 */
+    0x0000,     /* R4111  - Write Sequencer 15 */
+    0x0045,     /* R4112  - Write Sequencer 16 */
+    0x0011,     /* R4113  - Write Sequencer 17 */
+    0x0400,     /* R4114  - Write Sequencer 18 */
+    0x0000,     /* R4115  - Write Sequencer 19 */
+    0x0045,     /* R4116  - Write Sequencer 20 */
+    0x0019,     /* R4117  - Write Sequencer 21 */
+    0x0401,     /* R4118  - Write Sequencer 22 */
+    0x0000,     /* R4119  - Write Sequencer 23 */
+    0x0002,     /* R4120  - Write Sequencer 24 */
+    0x0030,     /* R4121  - Write Sequencer 25 */
+    0x0600,     /* R4122  - Write Sequencer 26 */
+    0x0000,     /* R4123  - Write Sequencer 27 */
+    0x0003,     /* R4124  - Write Sequencer 28 */
+    0x0030,     /* R4125  - Write Sequencer 29 */
+    0x0600,     /* R4126  - Write Sequencer 30 */
+    0x0000,     /* R4127  - Write Sequencer 31 */
+    0x0003,     /* R4128  - Write Sequencer 32 */
+    0x0001,     /* R4129  - Write Sequencer 33 */
+    0x0008,     /* R4130  - Write Sequencer 34 */
+    0x0000,     /* R4131  - Write Sequencer 35 */
+    0x003D,     /* R4132  - Write Sequencer 36 */
+    0x0033,     /* R4133  - Write Sequencer 37 */
+    0x0502,     /* R4134  - Write Sequencer 38 */
+    0x000A,     /* R4135  - Write Sequencer 39 */
+    0x00FE,     /* R4136  - Write Sequencer 40 */
+    0x0000,     /* R4137  - Write Sequencer 41 */
+    0x0000,     /* R4138  - Write Sequencer 42 */
+    0x0000,     /* R4139  - Write Sequencer 43 */
+    0x0007,     /* R4140  - Write Sequencer 44 */
+    0x0000,     /* R4141  - Write Sequencer 45 */
+    0x0102,     /* R4142  - Write Sequencer 46 */
+    0x0000,     /* R4143  - Write Sequencer 47 */
+    0x0045,     /* R4144  - Write Sequencer 48 */
+    0x001D,     /* R4145  - Write Sequencer 49 */
+    0x0402,     /* R4146  - Write Sequencer 50 */
+    0x0000,     /* R4147  - Write Sequencer 51 */
+    0x0045,     /* R4148  - Write Sequencer 52 */
+    0x001F,     /* R4149  - Write Sequencer 53 */
+    0x0403,     /* R4150  - Write Sequencer 54 */
+    0x0000,     /* R4151  - Write Sequencer 55 */
+    0x00FE,     /* R4152  - Write Sequencer 56 */
+    0x0000,     /* R4153  - Write Sequencer 57 */
+    0x0000,     /* R4154  - Write Sequencer 58 */
+    0x0000,     /* R4155  - Write Sequencer 59 */
+    0x0005,     /* R4156  - Write Sequencer 60 */
+    0x0000,     /* R4157  - Write Sequencer 61 */
+    0x0003,     /* R4158  - Write Sequencer 62 */
+    0x0107,     /* R4159  - Write Sequencer 63 */
+    0x00FE,     /* R4160  - Write Sequencer 64 */
+    0x0000,     /* R4161  - Write Sequencer 65 */
+    0x0000,     /* R4162  - Write Sequencer 66 */
+    0x0000,     /* R4163  - Write Sequencer 67 */
+    0x00FE,     /* R4164  - Write Sequencer 68 */
+    0x0000,     /* R4165  - Write Sequencer 69 */
+    0x0000,     /* R4166  - Write Sequencer 70 */
+    0x0000,     /* R4167  - Write Sequencer 71 */
+    0x0020,     /* R4168  - Write Sequencer 72 */
+    0x0007,     /* R4169  - Write Sequencer 73 */
+    0x0203,     /* R4170  - Write Sequencer 74 */
+    0x0000,     /* R4171  - Write Sequencer 75 */
+    0x0021,     /* R4172  - Write Sequencer 76 */
+    0x0007,     /* R4173  - Write Sequencer 77 */
+    0x0203,     /* R4174  - Write Sequencer 78 */
+    0x0000,     /* R4175  - Write Sequencer 79 */
+    0x0019,     /* R4176  - Write Sequencer 80 */
+    0x0019,     /* R4177  - Write Sequencer 81 */
+    0x0401,     /* R4178  - Write Sequencer 82 */
+    0x0000,     /* R4179  - Write Sequencer 83 */
+    0x003C,     /* R4180  - Write Sequencer 84 */
+    0x0033,     /* R4181  - Write Sequencer 85 */
+    0x0502,     /* R4182  - Write Sequencer 86 */
+    0x000A,     /* R4183  - Write Sequencer 87 */
+    0x00FE,     /* R4184  - Write Sequencer 88 */
+    0x0000,     /* R4185  - Write Sequencer 89 */
+    0x0000,     /* R4186  - Write Sequencer 90 */
+    0x0000,     /* R4187  - Write Sequencer 91 */
+    0x0019,     /* R4188  - Write Sequencer 92 */
+    0x0003,     /* R4189  - Write Sequencer 93 */
+    0x0102,     /* R4190  - Write Sequencer 94 */
+    0x0000,     /* R4191  - Write Sequencer 95 */
+    0x0020,     /* R4192  - Write Sequencer 96 */
+    0x0000,     /* R4193  - Write Sequencer 97 */
+    0x0203,     /* R4194  - Write Sequencer 98 */
+    0x0000,     /* R4195  - Write Sequencer 99 */
+    0x0021,     /* R4196  - Write Sequencer 100 */
+    0x0000,     /* R4197  - Write Sequencer 101 */
+    0x0203,     /* R4198  - Write Sequencer 102 */
+    0x0100,     /* R4199  - Write Sequencer 103 */
+    0x00FE,     /* R4200  - Write Sequencer 104 */
+    0x0000,     /* R4201  - Write Sequencer 105 */
+    0x0000,     /* R4202  - Write Sequencer 106 */
+    0x0000,     /* R4203  - Write Sequencer 107 */
+    0x0005,     /* R4204  - Write Sequencer 108 */
+    0x0001,     /* R4205  - Write Sequencer 109 */
+    0x0003,     /* R4206  - Write Sequencer 110 */
+    0x0008,     /* R4207  - Write Sequencer 111 */
+    0x0000,     /* R4208  - Write Sequencer 112 */
+    0x0001,     /* R4209  - Write Sequencer 113 */
+    0x0007,     /* R4210  - Write Sequencer 114 */
+    0x0000,     /* R4211  - Write Sequencer 115 */
+    0x0001,     /* R4212  - Write Sequencer 116 */
+    0x0003,     /* R4213  - Write Sequencer 117 */
+    0x0107,     /* R4214  - Write Sequencer 118 */
+    0x0000,     /* R4215  - Write Sequencer 119 */
+    0x0045,     /* R4216  - Write Sequencer 120 */
+    0x000E,     /* R4217  - Write Sequencer 121 */
+    0x0403,     /* R4218  - Write Sequencer 122 */
+    0x0000,     /* R4219  - Write Sequencer 123 */
+    0x0060,     /* R4220  - Write Sequencer 124 */
+    0x000E,     /* R4221  - Write Sequencer 125 */
+    0x0403,     /* R4222  - Write Sequencer 126 */
+    0x0000,     /* R4223  - Write Sequencer 127 */
+    0x0002,     /* R4224  - Write Sequencer 128 */
+    0x0000,     /* R4225  - Write Sequencer 129 */
+    0x0600,     /* R4226  - Write Sequencer 130 */
+    0x0000,     /* R4227  - Write Sequencer 131 */
+    0x0003,     /* R4228  - Write Sequencer 132 */
+    0x0000,     /* R4229  - Write Sequencer 133 */
+    0x0600,     /* R4230  - Write Sequencer 134 */
+    0x0000,     /* R4231  - Write Sequencer 135 */
+    0x0003,     /* R4232  - Write Sequencer 136 */
+    0x0001,     /* R4233  - Write Sequencer 137 */
+    0x0008,     /* R4234  - Write Sequencer 138 */
+    0x0000,     /* R4235  - Write Sequencer 139 */
+    0x0028,     /* R4236  - Write Sequencer 140 */
+    0x0000,     /* R4237  - Write Sequencer 141 */
+    0x0600,     /* R4238  - Write Sequencer 142 */
+    0x0000,     /* R4239  - Write Sequencer 143 */
+    0x0029,     /* R4240  - Write Sequencer 144 */
+    0x0000,     /* R4241  - Write Sequencer 145 */
+    0x0600,     /* R4242  - Write Sequencer 146 */
+    0x0000,     /* R4243  - Write Sequencer 147 */
+    0x0029,     /* R4244  - Write Sequencer 148 */
+    0x0001,     /* R4245  - Write Sequencer 149 */
+    0x0008,     /* R4246  - Write Sequencer 150 */
+    0x0000,     /* R4247  - Write Sequencer 151 */
+    0x003C,     /* R4248  - Write Sequencer 152 */
+    0x0000,     /* R4249  - Write Sequencer 153 */
+    0x0403,     /* R4250  - Write Sequencer 154 */
+    0x0000,     /* R4251  - Write Sequencer 155 */
+    0x003D,     /* R4252  - Write Sequencer 156 */
+    0x0000,     /* R4253  - Write Sequencer 157 */
+    0x0403,     /* R4254  - Write Sequencer 158 */
+    0x0000,     /* R4255  - Write Sequencer 159 */
+    0x003E,     /* R4256  - Write Sequencer 160 */
+    0x0000,     /* R4257  - Write Sequencer 161 */
+    0x0403,     /* R4258  - Write Sequencer 162 */
+    0x0000,     /* R4259  - Write Sequencer 163 */
+    0x0045,     /* R4260  - Write Sequencer 164 */
+    0x0000,     /* R4261  - Write Sequencer 165 */
+    0x0700,     /* R4262  - Write Sequencer 166 */
+    0x0000,     /* R4263  - Write Sequencer 167 */
+    0x0060,     /* R4264  - Write Sequencer 168 */
+    0x0000,     /* R4265  - Write Sequencer 169 */
+    0x0700,     /* R4266  - Write Sequencer 170 */
+    0x0000,     /* R4267  - Write Sequencer 171 */
+    0x0031,     /* R4268  - Write Sequencer 172 */
+    0x0000,     /* R4269  - Write Sequencer 173 */
+    0x0106,     /* R4270  - Write Sequencer 174 */
+    0x0000,     /* R4271  - Write Sequencer 175 */
+    0x0063,     /* R4272  - Write Sequencer 176 */
+    0x0000,     /* R4273  - Write Sequencer 177 */
+    0x0300,     /* R4274  - Write Sequencer 178 */
+    0x0000,     /* R4275  - Write Sequencer 179 */
+    0x001A,     /* R4276  - Write Sequencer 180 */
+    0x0000,     /* R4277  - Write Sequencer 181 */
+    0x0503,     /* R4278  - Write Sequencer 182 */
+    0x0000,     /* R4279  - Write Sequencer 183 */
+    0x0048,     /* R4280  - Write Sequencer 184 */
+    0x0000,     /* R4281  - Write Sequencer 185 */
+    0x0000,     /* R4282  - Write Sequencer 186 */
+    0x0000,     /* R4283  - Write Sequencer 187 */
+    0x0019,     /* R4284  - Write Sequencer 188 */
+    0x0000,     /* R4285  - Write Sequencer 189 */
+    0x0501,     /* R4286  - Write Sequencer 190 */
+    0x0000,     /* R4287  - Write Sequencer 191 */
+    0x001C,     /* R4288  - Write Sequencer 192 */
+    0x0000,     /* R4289  - Write Sequencer 193 */
+    0x0103,     /* R4290  - Write Sequencer 194 */
+    0x0000,     /* R4291  - Write Sequencer 195 */
+    0x0019,     /* R4292  - Write Sequencer 196 */
+    0x0000,     /* R4293  - Write Sequencer 197 */
+    0x0107,     /* R4294  - Write Sequencer 198 */
+    0x0100,     /* R4295  - Write Sequencer 199 */
+    0x00FE,     /* R4296  - Write Sequencer 200 */
+    0x0000,     /* R4297  - Write Sequencer 201 */
+    0x0000,     /* R4298  - Write Sequencer 202 */
+    0x0000,     /* R4299  - Write Sequencer 203 */
+    0x00FE,     /* R4300  - Write Sequencer 204 */
+    0x0000,     /* R4301  - Write Sequencer 205 */
+    0x0000,     /* R4302  - Write Sequencer 206 */
+    0x0000,     /* R4303  - Write Sequencer 207 */
+    0x001C,     /* R4304  - Write Sequencer 208 */
+    0x0003,     /* R4305  - Write Sequencer 209 */
+    0x0103,     /* R4306  - Write Sequencer 210 */
+    0x0000,     /* R4307  - Write Sequencer 211 */
+    0x0019,     /* R4308  - Write Sequencer 212 */
+    0x0007,     /* R4309  - Write Sequencer 213 */
+    0x0206,     /* R4310  - Write Sequencer 214 */
+    0x0000,     /* R4311  - Write Sequencer 215 */
+    0x0048,     /* R4312  - Write Sequencer 216 */
+    0x0001,     /* R4313  - Write Sequencer 217 */
+    0x0000,     /* R4314  - Write Sequencer 218 */
+    0x0006,     /* R4315  - Write Sequencer 219 */
+    0x001A,     /* R4316  - Write Sequencer 220 */
+    0x000F,     /* R4317  - Write Sequencer 221 */
+    0x0305,     /* R4318  - Write Sequencer 222 */
+    0x0000,     /* R4319  - Write Sequencer 223 */
+    0x0045,     /* R4320  - Write Sequencer 224 */
+    0x0011,     /* R4321  - Write Sequencer 225 */
+    0x0400,     /* R4322  - Write Sequencer 226 */
+    0x0000,     /* R4323  - Write Sequencer 227 */
+    0x0045,     /* R4324  - Write Sequencer 228 */
+    0x0019,     /* R4325  - Write Sequencer 229 */
+    0x0401,     /* R4326  - Write Sequencer 230 */
+    0x0000,     /* R4327  - Write Sequencer 231 */
+    0x0060,     /* R4328  - Write Sequencer 232 */
+    0x0011,     /* R4329  - Write Sequencer 233 */
+    0x0400,     /* R4330  - Write Sequencer 234 */
+    0x0000,     /* R4331  - Write Sequencer 235 */
+    0x0060,     /* R4332  - Write Sequencer 236 */
+    0x0019,     /* R4333  - Write Sequencer 237 */
+    0x0401,     /* R4334  - Write Sequencer 238 */
+    0x0000,     /* R4335  - Write Sequencer 239 */
+    0x0002,     /* R4336  - Write Sequencer 240 */
+    0x0030,     /* R4337  - Write Sequencer 241 */
+    0x0600,     /* R4338  - Write Sequencer 242 */
+    0x0000,     /* R4339  - Write Sequencer 243 */
+    0x0003,     /* R4340  - Write Sequencer 244 */
+    0x0030,     /* R4341  - Write Sequencer 245 */
+    0x0600,     /* R4342  - Write Sequencer 246 */
+    0x0000,     /* R4343  - Write Sequencer 247 */
+    0x0003,     /* R4344  - Write Sequencer 248 */
+    0x0001,     /* R4345  - Write Sequencer 249 */
+    0x0008,     /* R4346  - Write Sequencer 250 */
+    0x0000,     /* R4347  - Write Sequencer 251 */
+    0x003D,     /* R4348  - Write Sequencer 252 */
+    0x0033,     /* R4349  - Write Sequencer 253 */
+    0x0502,     /* R4350  - Write Sequencer 254 */
+    0x000A,     /* R4351  - Write Sequencer 255 */
+    0x003E,     /* R4352  - Write Sequencer 256 */
+    0x0033,     /* R4353  - Write Sequencer 257 */
+    0x0502,     /* R4354  - Write Sequencer 258 */
+    0x000A,     /* R4355  - Write Sequencer 259 */
+    0x0007,     /* R4356  - Write Sequencer 260 */
+    0x0000,     /* R4357  - Write Sequencer 261 */
+    0x0102,     /* R4358  - Write Sequencer 262 */
+    0x0000,     /* R4359  - Write Sequencer 263 */
+    0x0045,     /* R4360  - Write Sequencer 264 */
+    0x001D,     /* R4361  - Write Sequencer 265 */
+    0x0402,     /* R4362  - Write Sequencer 266 */
+    0x0000,     /* R4363  - Write Sequencer 267 */
+    0x0045,     /* R4364  - Write Sequencer 268 */
+    0x001F,     /* R4365  - Write Sequencer 269 */
+    0x0403,     /* R4366  - Write Sequencer 270 */
+    0x0000,     /* R4367  - Write Sequencer 271 */
+    0x0060,     /* R4368  - Write Sequencer 272 */
+    0x001D,     /* R4369  - Write Sequencer 273 */
+    0x0402,     /* R4370  - Write Sequencer 274 */
+    0x0000,     /* R4371  - Write Sequencer 275 */
+    0x0060,     /* R4372  - Write Sequencer 276 */
+    0x001F,     /* R4373  - Write Sequencer 277 */
+    0x0403,     /* R4374  - Write Sequencer 278 */
+    0x0000,     /* R4375  - Write Sequencer 279 */
+    0x0005,     /* R4376  - Write Sequencer 280 */
+    0x0000,     /* R4377  - Write Sequencer 281 */
+    0x0003,     /* R4378  - Write Sequencer 282 */
+    0x0108,     /* R4379  - Write Sequencer 283 */
+    0x00FE,     /* R4380  - Write Sequencer 284 */
+    0x0000,     /* R4381  - Write Sequencer 285 */
+    0x0000,     /* R4382  - Write Sequencer 286 */
+    0x0000,     /* R4383  - Write Sequencer 287 */
+    0x0045,     /* R4384  - Write Sequencer 288 */
+    0x000E,     /* R4385  - Write Sequencer 289 */
+    0x0403,     /* R4386  - Write Sequencer 290 */
+    0x0000,     /* R4387  - Write Sequencer 291 */
+    0x001A,     /* R4388  - Write Sequencer 292 */
+    0x0003,     /* R4389  - Write Sequencer 293 */
+    0x0100,     /* R4390  - Write Sequencer 294 */
+    0x0000,     /* R4391  - Write Sequencer 295 */
+    0x0002,     /* R4392  - Write Sequencer 296 */
+    0x0001,     /* R4393  - Write Sequencer 297 */
+    0x0008,     /* R4394  - Write Sequencer 298 */
+    0x0000,     /* R4395  - Write Sequencer 299 */
+    0x0045,     /* R4396  - Write Sequencer 300 */
+    0x0000,     /* R4397  - Write Sequencer 301 */
+    0x0700,     /* R4398  - Write Sequencer 302 */
+    0x0000,     /* R4399  - Write Sequencer 303 */
+    0x0060,     /* R4400  - Write Sequencer 304 */
+    0x0011,     /* R4401  - Write Sequencer 305 */
+    0x0400,     /* R4402  - Write Sequencer 306 */
+    0x0000,     /* R4403  - Write Sequencer 307 */
+    0x0060,     /* R4404  - Write Sequencer 308 */
+    0x0019,     /* R4405  - Write Sequencer 309 */
+    0x0401,     /* R4406  - Write Sequencer 310 */
+    0x0000,     /* R4407  - Write Sequencer 311 */
+    0x001A,     /* R4408  - Write Sequencer 312 */
+    0x0000,     /* R4409  - Write Sequencer 313 */
+    0x0100,     /* R4410  - Write Sequencer 314 */
+    0x0000,     /* R4411  - Write Sequencer 315 */
+    0x0002,     /* R4412  - Write Sequencer 316 */
+    0x0001,     /* R4413  - Write Sequencer 317 */
+    0x0008,     /* R4414  - Write Sequencer 318 */
+    0x0000,     /* R4415  - Write Sequencer 319 */
+    0x0060,     /* R4416  - Write Sequencer 320 */
+    0x001D,     /* R4417  - Write Sequencer 321 */
+    0x0402,     /* R4418  - Write Sequencer 322 */
+    0x0000,     /* R4419  - Write Sequencer 323 */
+    0x0060,     /* R4420  - Write Sequencer 324 */
+    0x001F,     /* R4421  - Write Sequencer 325 */
+    0x0403,     /* R4422  - Write Sequencer 326 */
+    0x0000,     /* R4423  - Write Sequencer 327 */
+    0x0005,     /* R4424  - Write Sequencer 328 */
+    0x0000,     /* R4425  - Write Sequencer 329 */
+    0x0003,     /* R4426  - Write Sequencer 330 */
+    0x0100,     /* R4427  - Write Sequencer 331 */
+    0x00FE,     /* R4428  - Write Sequencer 332 */
+    0x0000,     /* R4429  - Write Sequencer 333 */
+    0x0000,     /* R4430  - Write Sequencer 334 */
+    0x0000,     /* R4431  - Write Sequencer 335 */
+    0x0060,     /* R4432  - Write Sequencer 336 */
+    0x000E,     /* R4433  - Write Sequencer 337 */
+    0x0403,     /* R4434  - Write Sequencer 338 */
+    0x0000,     /* R4435  - Write Sequencer 339 */
+    0x001A,     /* R4436  - Write Sequencer 340 */
+    0x0003,     /* R4437  - Write Sequencer 341 */
+    0x0100,     /* R4438  - Write Sequencer 342 */
+    0x0000,     /* R4439  - Write Sequencer 343 */
+    0x0002,     /* R4440  - Write Sequencer 344 */
+    0x0001,     /* R4441  - Write Sequencer 345 */
+    0x0008,     /* R4442  - Write Sequencer 346 */
+    0x0000,     /* R4443  - Write Sequencer 347 */
+    0x0060,     /* R4444  - Write Sequencer 348 */
+    0x0000,     /* R4445  - Write Sequencer 349 */
+    0x0700,     /* R4446  - Write Sequencer 350 */
+    0x0000,     /* R4447  - Write Sequencer 351 */
+    0x0045,     /* R4448  - Write Sequencer 352 */
+    0x0011,     /* R4449  - Write Sequencer 353 */
+    0x0400,     /* R4450  - Write Sequencer 354 */
+    0x0000,     /* R4451  - Write Sequencer 355 */
+    0x0045,     /* R4452  - Write Sequencer 356 */
+    0x0019,     /* R4453  - Write Sequencer 357 */
+    0x0401,     /* R4454  - Write Sequencer 358 */
+    0x0000,     /* R4455  - Write Sequencer 359 */
+    0x001A,     /* R4456  - Write Sequencer 360 */
+    0x0000,     /* R4457  - Write Sequencer 361 */
+    0x0100,     /* R4458  - Write Sequencer 362 */
+    0x0000,     /* R4459  - Write Sequencer 363 */
+    0x0002,     /* R4460  - Write Sequencer 364 */
+    0x0001,     /* R4461  - Write Sequencer 365 */
+    0x0008,     /* R4462  - Write Sequencer 366 */
+    0x0000,     /* R4463  - Write Sequencer 367 */
+    0x0045,     /* R4464  - Write Sequencer 368 */
+    0x001D,     /* R4465  - Write Sequencer 369 */
+    0x0402,     /* R4466  - Write Sequencer 370 */
+    0x0000,     /* R4467  - Write Sequencer 371 */
+    0x0045,     /* R4468  - Write Sequencer 372 */
+    0x001F,     /* R4469  - Write Sequencer 373 */
+    0x0403,     /* R4470  - Write Sequencer 374 */
+    0x0000,     /* R4471  - Write Sequencer 375 */
+    0x0005,     /* R4472  - Write Sequencer 376 */
+    0x0000,     /* R4473  - Write Sequencer 377 */
+    0x0003,     /* R4474  - Write Sequencer 378 */
+    0x0100,     /* R4475  - Write Sequencer 379 */
+    0x00FE,     /* R4476  - Write Sequencer 380 */
+    0x0000,     /* R4477  - Write Sequencer 381 */
+    0x0000,     /* R4478  - Write Sequencer 382 */
+    0x0000,     /* R4479  - Write Sequencer 383 */
+    0x00FE,     /* R4480  - Write Sequencer 384 */
+    0x0000,     /* R4481  - Write Sequencer 385 */
+    0x0000,     /* R4482  - Write Sequencer 386 */
+    0x0000,     /* R4483  - Write Sequencer 387 */
+    0x00FE,     /* R4484  - Write Sequencer 388 */
+    0x0000,     /* R4485  - Write Sequencer 389 */
+    0x0000,     /* R4486  - Write Sequencer 390 */
+    0x0000,     /* R4487  - Write Sequencer 391 */
+    0x00FE,     /* R4488  - Write Sequencer 392 */
+    0x0000,     /* R4489  - Write Sequencer 393 */
+    0x0000,     /* R4490  - Write Sequencer 394 */
+    0x0000,     /* R4491  - Write Sequencer 395 */
+    0x00FE,     /* R4492  - Write Sequencer 396 */
+    0x0000,     /* R4493  - Write Sequencer 397 */
+    0x0000,     /* R4494  - Write Sequencer 398 */
+    0x0000,     /* R4495  - Write Sequencer 399 */
+    0x0031,     /* R4496  - Write Sequencer 400 */
+    0x0001,     /* R4497  - Write Sequencer 401 */
+    0x0004,     /* R4498  - Write Sequencer 402 */
+    0x0000,     /* R4499  - Write Sequencer 403 */
+    0x0031,     /* R4500  - Write Sequencer 404 */
+    0x0007,     /* R4501  - Write Sequencer 405 */
+    0x0200,     /* R4502  - Write Sequencer 406 */
+    0x0000,     /* R4503  - Write Sequencer 407 */
+    0x0031,     /* R4504  - Write Sequencer 408 */
+    0x0000,     /* R4505  - Write Sequencer 409 */
+    0x0106,     /* R4506  - Write Sequencer 410 */
+    0x0100,     /* R4507  - Write Sequencer 411 */
+    0x00FE,     /* R4508  - Write Sequencer 412 */
+    0x0000,     /* R4509  - Write Sequencer 413 */
+    0x0000,     /* R4510  - Write Sequencer 414 */
+    0x0000,     /* R4511  - Write Sequencer 415 */
+    0x0031,     /* R4512  - Write Sequencer 416 */
+    0x0003,     /* R4513  - Write Sequencer 417 */
+    0x0106,     /* R4514  - Write Sequencer 418 */
+    0x0000,     /* R4515  - Write Sequencer 419 */
+    0x0031,     /* R4516  - Write Sequencer 420 */
+    0x0004,     /* R4517  - Write Sequencer 421 */
+    0x0200,     /* R4518  - Write Sequencer 422 */
+    0x0000,     /* R4519  - Write Sequencer 423 */
+    0x0031,     /* R4520  - Write Sequencer 424 */
+    0x0000,     /* R4521  - Write Sequencer 425 */
+    0x0004,     /* R4522  - Write Sequencer 426 */
+    0x0100,     /* R4523  - Write Sequencer 427 */
+    0x0000,     /* R4524  - Write Sequencer 428 */
+    0x0000,     /* R4525  - Write Sequencer 429 */
+    0x0000,     /* R4526  - Write Sequencer 430 */
+    0x0000,     /* R4527  - Write Sequencer 431 */
+    0x0000,     /* R4528  - Write Sequencer 432 */
+    0x0000,     /* R4529  - Write Sequencer 433 */
+    0x0000,     /* R4530  - Write Sequencer 434 */
+    0x0000,     /* R4531  - Write Sequencer 435 */
+    0x0000,     /* R4532  - Write Sequencer 436 */
+    0x0000,     /* R4533  - Write Sequencer 437 */
+    0x0000,     /* R4534  - Write Sequencer 438 */
+    0x0000,     /* R4535  - Write Sequencer 439 */
+    0x0000,     /* R4536  - Write Sequencer 440 */
+    0x0000,     /* R4537  - Write Sequencer 441 */
+    0x0000,     /* R4538  - Write Sequencer 442 */
+    0x0000,     /* R4539  - Write Sequencer 443 */
+    0x0000,     /* R4540  - Write Sequencer 444 */
+    0x0000,     /* R4541  - Write Sequencer 445 */
+    0x0000,     /* R4542  - Write Sequencer 446 */
+    0x0000,     /* R4543  - Write Sequencer 447 */
+    0x0000,     /* R4544  - Write Sequencer 448 */
+    0x0000,     /* R4545  - Write Sequencer 449 */
+    0x0000,     /* R4546  - Write Sequencer 450 */
+    0x0000,     /* R4547  - Write Sequencer 451 */
+    0x0000,     /* R4548  - Write Sequencer 452 */
+    0x0000,     /* R4549  - Write Sequencer 453 */
+    0x0000,     /* R4550  - Write Sequencer 454 */
+    0x0000,     /* R4551  - Write Sequencer 455 */
+    0x0000,     /* R4552  - Write Sequencer 456 */
+    0x0000,     /* R4553  - Write Sequencer 457 */
+    0x0000,     /* R4554  - Write Sequencer 458 */
+    0x0000,     /* R4555  - Write Sequencer 459 */
+    0x0000,     /* R4556  - Write Sequencer 460 */
+    0x0000,     /* R4557  - Write Sequencer 461 */
+    0x0000,     /* R4558  - Write Sequencer 462 */
+    0x0000,     /* R4559  - Write Sequencer 463 */
+    0x0000,     /* R4560  - Write Sequencer 464 */
+    0x0000,     /* R4561  - Write Sequencer 465 */
+    0x0000,     /* R4562  - Write Sequencer 466 */
+    0x0000,     /* R4563  - Write Sequencer 467 */
+    0x0000,     /* R4564  - Write Sequencer 468 */
+    0x0000,     /* R4565  - Write Sequencer 469 */
+    0x0000,     /* R4566  - Write Sequencer 470 */
+    0x0000,     /* R4567  - Write Sequencer 471 */
+    0x0000,     /* R4568  - Write Sequencer 472 */
+    0x0000,     /* R4569  - Write Sequencer 473 */
+    0x0000,     /* R4570  - Write Sequencer 474 */
+    0x0000,     /* R4571  - Write Sequencer 475 */
+    0x0000,     /* R4572  - Write Sequencer 476 */
+    0x0000,     /* R4573  - Write Sequencer 477 */
+    0x0000,     /* R4574  - Write Sequencer 478 */
+    0x0000,     /* R4575  - Write Sequencer 479 */
+    0x0000,     /* R4576  - Write Sequencer 480 */
+    0x0000,     /* R4577  - Write Sequencer 481 */
+    0x0000,     /* R4578  - Write Sequencer 482 */
+    0x0000,     /* R4579  - Write Sequencer 483 */
+    0x0000,     /* R4580  - Write Sequencer 484 */
+    0x0000,     /* R4581  - Write Sequencer 485 */
+    0x0000,     /* R4582  - Write Sequencer 486 */
+    0x0000,     /* R4583  - Write Sequencer 487 */
+    0x0000,     /* R4584  - Write Sequencer 488 */
+    0x0000,     /* R4585  - Write Sequencer 489 */
+    0x0000,     /* R4586  - Write Sequencer 490 */
+    0x0000,     /* R4587  - Write Sequencer 491 */
+    0x0000,     /* R4588  - Write Sequencer 492 */
+    0x0000,     /* R4589  - Write Sequencer 493 */
+    0x0000,     /* R4590  - Write Sequencer 494 */
+    0x0000,     /* R4591  - Write Sequencer 495 */
+    0x0000,     /* R4592  - Write Sequencer 496 */
+    0x0000,     /* R4593  - Write Sequencer 497 */
+    0x0000,     /* R4594  - Write Sequencer 498 */
+    0x0000,     /* R4595  - Write Sequencer 499 */
+    0x0000,     /* R4596  - Write Sequencer 500 */
+    0x0000,     /* R4597  - Write Sequencer 501 */
+    0x0000,     /* R4598  - Write Sequencer 502 */
+    0x0000,     /* R4599  - Write Sequencer 503 */
+    0x0000,     /* R4600  - Write Sequencer 504 */
+    0x0000,     /* R4601  - Write Sequencer 505 */
+    0x0000,     /* R4602  - Write Sequencer 506 */
+    0x0000,     /* R4603  - Write Sequencer 507 */
+    0x0000,     /* R4604  - Write Sequencer 508 */
+    0x0000,     /* R4605  - Write Sequencer 509 */
+    0x0000,     /* R4606  - Write Sequencer 510 */
+    0x0000,     /* R4607  - Write Sequencer 511 */
+    0x0000,     /* R4608 */
+    0x0000,     /* R4609 */
+    0x0000,     /* R4610 */
+    0x0000,     /* R4611 */
+    0x0000,     /* R4612 */
+    0x0000,     /* R4613 */
+    0x0000,     /* R4614 */
+    0x0000,     /* R4615 */
+    0x0000,     /* R4616 */
+    0x0000,     /* R4617 */
+    0x0000,     /* R4618 */
+    0x0000,     /* R4619 */
+    0x0000,     /* R4620 */
+    0x0000,     /* R4621 */
+    0x0000,     /* R4622 */
+    0x0000,     /* R4623 */
+    0x0000,     /* R4624 */
+    0x0000,     /* R4625 */
+    0x0000,     /* R4626 */
+    0x0000,     /* R4627 */
+    0x0000,     /* R4628 */
+    0x0000,     /* R4629 */
+    0x0000,     /* R4630 */
+    0x0000,     /* R4631 */
+    0x0000,     /* R4632 */
+    0x0000,     /* R4633 */
+    0x0000,     /* R4634 */
+    0x0000,     /* R4635 */
+    0x0000,     /* R4636 */
+    0x0000,     /* R4637 */
+    0x0000,     /* R4638 */
+    0x0000,     /* R4639 */
+    0x0000,     /* R4640 */
+    0x0000,     /* R4641 */
+    0x0000,     /* R4642 */
+    0x0000,     /* R4643 */
+    0x0000,     /* R4644 */
+    0x0000,     /* R4645 */
+    0x0000,     /* R4646 */
+    0x0000,     /* R4647 */
+    0x0000,     /* R4648 */
+    0x0000,     /* R4649 */
+    0x0000,     /* R4650 */
+    0x0000,     /* R4651 */
+    0x0000,     /* R4652 */
+    0x0000,     /* R4653 */
+    0x0000,     /* R4654 */
+    0x0000,     /* R4655 */
+    0x0000,     /* R4656 */
+    0x0000,     /* R4657 */
+    0x0000,     /* R4658 */
+    0x0000,     /* R4659 */
+    0x0000,     /* R4660 */
+    0x0000,     /* R4661 */
+    0x0000,     /* R4662 */
+    0x0000,     /* R4663 */
+    0x0000,     /* R4664 */
+    0x0000,     /* R4665 */
+    0x0000,     /* R4666 */
+    0x0000,     /* R4667 */
+    0x0000,     /* R4668 */
+    0x0000,     /* R4669 */
+    0x0000,     /* R4670 */
+    0x0000,     /* R4671 */
+    0x0000,     /* R4672 */
+    0x0000,     /* R4673 */
+    0x0000,     /* R4674 */
+    0x0000,     /* R4675 */
+    0x0000,     /* R4676 */
+    0x0000,     /* R4677 */
+    0x0000,     /* R4678 */
+    0x0000,     /* R4679 */
+    0x0000,     /* R4680 */
+    0x0000,     /* R4681 */
+    0x0000,     /* R4682 */
+    0x0000,     /* R4683 */
+    0x0000,     /* R4684 */
+    0x0000,     /* R4685 */
+    0x0000,     /* R4686 */
+    0x0000,     /* R4687 */
+    0x0000,     /* R4688 */
+    0x0000,     /* R4689 */
+    0x0000,     /* R4690 */
+    0x0000,     /* R4691 */
+    0x0000,     /* R4692 */
+    0x0000,     /* R4693 */
+    0x0000,     /* R4694 */
+    0x0000,     /* R4695 */
+    0x0000,     /* R4696 */
+    0x0000,     /* R4697 */
+    0x0000,     /* R4698 */
+    0x0000,     /* R4699 */
+    0x0000,     /* R4700 */
+    0x0000,     /* R4701 */
+    0x0000,     /* R4702 */
+    0x0000,     /* R4703 */
+    0x0000,     /* R4704 */
+    0x0000,     /* R4705 */
+    0x0000,     /* R4706 */
+    0x0000,     /* R4707 */
+    0x0000,     /* R4708 */
+    0x0000,     /* R4709 */
+    0x0000,     /* R4710 */
+    0x0000,     /* R4711 */
+    0x0000,     /* R4712 */
+    0x0000,     /* R4713 */
+    0x0000,     /* R4714 */
+    0x0000,     /* R4715 */
+    0x0000,     /* R4716 */
+    0x0000,     /* R4717 */
+    0x0000,     /* R4718 */
+    0x0000,     /* R4719 */
+    0x0000,     /* R4720 */
+    0x0000,     /* R4721 */
+    0x0000,     /* R4722 */
+    0x0000,     /* R4723 */
+    0x0000,     /* R4724 */
+    0x0000,     /* R4725 */
+    0x0000,     /* R4726 */
+    0x0000,     /* R4727 */
+    0x0000,     /* R4728 */
+    0x0000,     /* R4729 */
+    0x0000,     /* R4730 */
+    0x0000,     /* R4731 */
+    0x0000,     /* R4732 */
+    0x0000,     /* R4733 */
+    0x0000,     /* R4734 */
+    0x0000,     /* R4735 */
+    0x0000,     /* R4736 */
+    0x0000,     /* R4737 */
+    0x0000,     /* R4738 */
+    0x0000,     /* R4739 */
+    0x0000,     /* R4740 */
+    0x0000,     /* R4741 */
+    0x0000,     /* R4742 */
+    0x0000,     /* R4743 */
+    0x0000,     /* R4744 */
+    0x0000,     /* R4745 */
+    0x0000,     /* R4746 */
+    0x0000,     /* R4747 */
+    0x0000,     /* R4748 */
+    0x0000,     /* R4749 */
+    0x0000,     /* R4750 */
+    0x0000,     /* R4751 */
+    0x0000,     /* R4752 */
+    0x0000,     /* R4753 */
+    0x0000,     /* R4754 */
+    0x0000,     /* R4755 */
+    0x0000,     /* R4756 */
+    0x0000,     /* R4757 */
+    0x0000,     /* R4758 */
+    0x0000,     /* R4759 */
+    0x0000,     /* R4760 */
+    0x0000,     /* R4761 */
+    0x0000,     /* R4762 */
+    0x0000,     /* R4763 */
+    0x0000,     /* R4764 */
+    0x0000,     /* R4765 */
+    0x0000,     /* R4766 */
+    0x0000,     /* R4767 */
+    0x0000,     /* R4768 */
+    0x0000,     /* R4769 */
+    0x0000,     /* R4770 */
+    0x0000,     /* R4771 */
+    0x0000,     /* R4772 */
+    0x0000,     /* R4773 */
+    0x0000,     /* R4774 */
+    0x0000,     /* R4775 */
+    0x0000,     /* R4776 */
+    0x0000,     /* R4777 */
+    0x0000,     /* R4778 */
+    0x0000,     /* R4779 */
+    0x0000,     /* R4780 */
+    0x0000,     /* R4781 */
+    0x0000,     /* R4782 */
+    0x0000,     /* R4783 */
+    0x0000,     /* R4784 */
+    0x0000,     /* R4785 */
+    0x0000,     /* R4786 */
+    0x0000,     /* R4787 */
+    0x0000,     /* R4788 */
+    0x0000,     /* R4789 */
+    0x0000,     /* R4790 */
+    0x0000,     /* R4791 */
+    0x0000,     /* R4792 */
+    0x0000,     /* R4793 */
+    0x0000,     /* R4794 */
+    0x0000,     /* R4795 */
+    0x0000,     /* R4796 */
+    0x0000,     /* R4797 */
+    0x0000,     /* R4798 */
+    0x0000,     /* R4799 */
+    0x0000,     /* R4800 */
+    0x0000,     /* R4801 */
+    0x0000,     /* R4802 */
+    0x0000,     /* R4803 */
+    0x0000,     /* R4804 */
+    0x0000,     /* R4805 */
+    0x0000,     /* R4806 */
+    0x0000,     /* R4807 */
+    0x0000,     /* R4808 */
+    0x0000,     /* R4809 */
+    0x0000,     /* R4810 */
+    0x0000,     /* R4811 */
+    0x0000,     /* R4812 */
+    0x0000,     /* R4813 */
+    0x0000,     /* R4814 */
+    0x0000,     /* R4815 */
+    0x0000,     /* R4816 */
+    0x0000,     /* R4817 */
+    0x0000,     /* R4818 */
+    0x0000,     /* R4819 */
+    0x0000,     /* R4820 */
+    0x0000,     /* R4821 */
+    0x0000,     /* R4822 */
+    0x0000,     /* R4823 */
+    0x0000,     /* R4824 */
+    0x0000,     /* R4825 */
+    0x0000,     /* R4826 */
+    0x0000,     /* R4827 */
+    0x0000,     /* R4828 */
+    0x0000,     /* R4829 */
+    0x0000,     /* R4830 */
+    0x0000,     /* R4831 */
+    0x0000,     /* R4832 */
+    0x0000,     /* R4833 */
+    0x0000,     /* R4834 */
+    0x0000,     /* R4835 */
+    0x0000,     /* R4836 */
+    0x0000,     /* R4837 */
+    0x0000,     /* R4838 */
+    0x0000,     /* R4839 */
+    0x0000,     /* R4840 */
+    0x0000,     /* R4841 */
+    0x0000,     /* R4842 */
+    0x0000,     /* R4843 */
+    0x0000,     /* R4844 */
+    0x0000,     /* R4845 */
+    0x0000,     /* R4846 */
+    0x0000,     /* R4847 */
+    0x0000,     /* R4848 */
+    0x0000,     /* R4849 */
+    0x0000,     /* R4850 */
+    0x0000,     /* R4851 */
+    0x0000,     /* R4852 */
+    0x0000,     /* R4853 */
+    0x0000,     /* R4854 */
+    0x0000,     /* R4855 */
+    0x0000,     /* R4856 */
+    0x0000,     /* R4857 */
+    0x0000,     /* R4858 */
+    0x0000,     /* R4859 */
+    0x0000,     /* R4860 */
+    0x0000,     /* R4861 */
+    0x0000,     /* R4862 */
+    0x0000,     /* R4863 */
+    0x0000,     /* R4864 */
+    0x0000,     /* R4865 */
+    0x0000,     /* R4866 */
+    0x0000,     /* R4867 */
+    0x0000,     /* R4868 */
+    0x0000,     /* R4869 */
+    0x0000,     /* R4870 */
+    0x0000,     /* R4871 */
+    0x0000,     /* R4872 */
+    0x0000,     /* R4873 */
+    0x0000,     /* R4874 */
+    0x0000,     /* R4875 */
+    0x0000,     /* R4876 */
+    0x0000,     /* R4877 */
+    0x0000,     /* R4878 */
+    0x0000,     /* R4879 */
+    0x0000,     /* R4880 */
+    0x0000,     /* R4881 */
+    0x0000,     /* R4882 */
+    0x0000,     /* R4883 */
+    0x0000,     /* R4884 */
+    0x0000,     /* R4885 */
+    0x0000,     /* R4886 */
+    0x0000,     /* R4887 */
+    0x0000,     /* R4888 */
+    0x0000,     /* R4889 */
+    0x0000,     /* R4890 */
+    0x0000,     /* R4891 */
+    0x0000,     /* R4892 */
+    0x0000,     /* R4893 */
+    0x0000,     /* R4894 */
+    0x0000,     /* R4895 */
+    0x0000,     /* R4896 */
+    0x0000,     /* R4897 */
+    0x0000,     /* R4898 */
+    0x0000,     /* R4899 */
+    0x0000,     /* R4900 */
+    0x0000,     /* R4901 */
+    0x0000,     /* R4902 */
+    0x0000,     /* R4903 */
+    0x0000,     /* R4904 */
+    0x0000,     /* R4905 */
+    0x0000,     /* R4906 */
+    0x0000,     /* R4907 */
+    0x0000,     /* R4908 */
+    0x0000,     /* R4909 */
+    0x0000,     /* R4910 */
+    0x0000,     /* R4911 */
+    0x0000,     /* R4912 */
+    0x0000,     /* R4913 */
+    0x0000,     /* R4914 */
+    0x0000,     /* R4915 */
+    0x0000,     /* R4916 */
+    0x0000,     /* R4917 */
+    0x0000,     /* R4918 */
+    0x0000,     /* R4919 */
+    0x0000,     /* R4920 */
+    0x0000,     /* R4921 */
+    0x0000,     /* R4922 */
+    0x0000,     /* R4923 */
+    0x0000,     /* R4924 */
+    0x0000,     /* R4925 */
+    0x0000,     /* R4926 */
+    0x0000,     /* R4927 */
+    0x0000,     /* R4928 */
+    0x0000,     /* R4929 */
+    0x0000,     /* R4930 */
+    0x0000,     /* R4931 */
+    0x0000,     /* R4932 */
+    0x0000,     /* R4933 */
+    0x0000,     /* R4934 */
+    0x0000,     /* R4935 */
+    0x0000,     /* R4936 */
+    0x0000,     /* R4937 */
+    0x0000,     /* R4938 */
+    0x0000,     /* R4939 */
+    0x0000,     /* R4940 */
+    0x0000,     /* R4941 */
+    0x0000,     /* R4942 */
+    0x0000,     /* R4943 */
+    0x0000,     /* R4944 */
+    0x0000,     /* R4945 */
+    0x0000,     /* R4946 */
+    0x0000,     /* R4947 */
+    0x0000,     /* R4948 */
+    0x0000,     /* R4949 */
+    0x0000,     /* R4950 */
+    0x0000,     /* R4951 */
+    0x0000,     /* R4952 */
+    0x0000,     /* R4953 */
+    0x0000,     /* R4954 */
+    0x0000,     /* R4955 */
+    0x0000,     /* R4956 */
+    0x0000,     /* R4957 */
+    0x0000,     /* R4958 */
+    0x0000,     /* R4959 */
+    0x0000,     /* R4960 */
+    0x0000,     /* R4961 */
+    0x0000,     /* R4962 */
+    0x0000,     /* R4963 */
+    0x0000,     /* R4964 */
+    0x0000,     /* R4965 */
+    0x0000,     /* R4966 */
+    0x0000,     /* R4967 */
+    0x0000,     /* R4968 */
+    0x0000,     /* R4969 */
+    0x0000,     /* R4970 */
+    0x0000,     /* R4971 */
+    0x0000,     /* R4972 */
+    0x0000,     /* R4973 */
+    0x0000,     /* R4974 */
+    0x0000,     /* R4975 */
+    0x0000,     /* R4976 */
+    0x0000,     /* R4977 */
+    0x0000,     /* R4978 */
+    0x0000,     /* R4979 */
+    0x0000,     /* R4980 */
+    0x0000,     /* R4981 */
+    0x0000,     /* R4982 */
+    0x0000,     /* R4983 */
+    0x0000,     /* R4984 */
+    0x0000,     /* R4985 */
+    0x0000,     /* R4986 */
+    0x0000,     /* R4987 */
+    0x0000,     /* R4988 */
+    0x0000,     /* R4989 */
+    0x0000,     /* R4990 */
+    0x0000,     /* R4991 */
+    0x0000,     /* R4992 */
+    0x0000,     /* R4993 */
+    0x0000,     /* R4994 */
+    0x0000,     /* R4995 */
+    0x0000,     /* R4996 */
+    0x0000,     /* R4997 */
+    0x0000,     /* R4998 */
+    0x0000,     /* R4999 */
+    0x0000,     /* R5000 */
+    0x0000,     /* R5001 */
+    0x0000,     /* R5002 */
+    0x0000,     /* R5003 */
+    0x0000,     /* R5004 */
+    0x0000,     /* R5005 */
+    0x0000,     /* R5006 */
+    0x0000,     /* R5007 */
+    0x0000,     /* R5008 */
+    0x0000,     /* R5009 */
+    0x0000,     /* R5010 */
+    0x0000,     /* R5011 */
+    0x0000,     /* R5012 */
+    0x0000,     /* R5013 */
+    0x0000,     /* R5014 */
+    0x0000,     /* R5015 */
+    0x0000,     /* R5016 */
+    0x0000,     /* R5017 */
+    0x0000,     /* R5018 */
+    0x0000,     /* R5019 */
+    0x0000,     /* R5020 */
+    0x0000,     /* R5021 */
+    0x0000,     /* R5022 */
+    0x0000,     /* R5023 */
+    0x0000,     /* R5024 */
+    0x0000,     /* R5025 */
+    0x0000,     /* R5026 */
+    0x0000,     /* R5027 */
+    0x0000,     /* R5028 */
+    0x0000,     /* R5029 */
+    0x0000,     /* R5030 */
+    0x0000,     /* R5031 */
+    0x0000,     /* R5032 */
+    0x0000,     /* R5033 */
+    0x0000,     /* R5034 */
+    0x0000,     /* R5035 */
+    0x0000,     /* R5036 */
+    0x0000,     /* R5037 */
+    0x0000,     /* R5038 */
+    0x0000,     /* R5039 */
+    0x0000,     /* R5040 */
+    0x0000,     /* R5041 */
+    0x0000,     /* R5042 */
+    0x0000,     /* R5043 */
+    0x0000,     /* R5044 */
+    0x0000,     /* R5045 */
+    0x0000,     /* R5046 */
+    0x0000,     /* R5047 */
+    0x0000,     /* R5048 */
+    0x0000,     /* R5049 */
+    0x0000,     /* R5050 */
+    0x0000,     /* R5051 */
+    0x0000,     /* R5052 */
+    0x0000,     /* R5053 */
+    0x0000,     /* R5054 */
+    0x0000,     /* R5055 */
+    0x0000,     /* R5056 */
+    0x0000,     /* R5057 */
+    0x0000,     /* R5058 */
+    0x0000,     /* R5059 */
+    0x0000,     /* R5060 */
+    0x0000,     /* R5061 */
+    0x0000,     /* R5062 */
+    0x0000,     /* R5063 */
+    0x0000,     /* R5064 */
+    0x0000,     /* R5065 */
+    0x0000,     /* R5066 */
+    0x0000,     /* R5067 */
+    0x0000,     /* R5068 */
+    0x0000,     /* R5069 */
+    0x0000,     /* R5070 */
+    0x0000,     /* R5071 */
+    0x0000,     /* R5072 */
+    0x0000,     /* R5073 */
+    0x0000,     /* R5074 */
+    0x0000,     /* R5075 */
+    0x0000,     /* R5076 */
+    0x0000,     /* R5077 */
+    0x0000,     /* R5078 */
+    0x0000,     /* R5079 */
+    0x0000,     /* R5080 */
+    0x0000,     /* R5081 */
+    0x0000,     /* R5082 */
+    0x0000,     /* R5083 */
+    0x0000,     /* R5084 */
+    0x0000,     /* R5085 */
+    0x0000,     /* R5086 */
+    0x0000,     /* R5087 */
+    0x0000,     /* R5088 */
+    0x0000,     /* R5089 */
+    0x0000,     /* R5090 */
+    0x0000,     /* R5091 */
+    0x0000,     /* R5092 */
+    0x0000,     /* R5093 */
+    0x0000,     /* R5094 */
+    0x0000,     /* R5095 */
+    0x0000,     /* R5096 */
+    0x0000,     /* R5097 */
+    0x0000,     /* R5098 */
+    0x0000,     /* R5099 */
+    0x0000,     /* R5100 */
+    0x0000,     /* R5101 */
+    0x0000,     /* R5102 */
+    0x0000,     /* R5103 */
+    0x0000,     /* R5104 */
+    0x0000,     /* R5105 */
+    0x0000,     /* R5106 */
+    0x0000,     /* R5107 */
+    0x0000,     /* R5108 */
+    0x0000,     /* R5109 */
+    0x0000,     /* R5110 */
+    0x0000,     /* R5111 */
+    0x0000,     /* R5112 */
+    0x0000,     /* R5113 */
+    0x0000,     /* R5114 */
+    0x0000,     /* R5115 */
+    0x0000,     /* R5116 */
+    0x0000,     /* R5117 */
+    0x0000,     /* R5118 */
+    0x0000,     /* R5119 */
+    0x0000,     /* R5120 */
+    0x0000,     /* R5121 */
+    0x0000,     /* R5122 */
+    0x0000,     /* R5123 */
+    0x0000,     /* R5124 */
+    0x0000,     /* R5125 */
+    0x0000,     /* R5126 */
+    0x0000,     /* R5127 */
+    0x0000,     /* R5128 */
+    0x0000,     /* R5129 */
+    0x0000,     /* R5130 */
+    0x0000,     /* R5131 */
+    0x0000,     /* R5132 */
+    0x0000,     /* R5133 */
+    0x0000,     /* R5134 */
+    0x0000,     /* R5135 */
+    0x0000,     /* R5136 */
+    0x0000,     /* R5137 */
+    0x0000,     /* R5138 */
+    0x0000,     /* R5139 */
+    0x0000,     /* R5140 */
+    0x0000,     /* R5141 */
+    0x0000,     /* R5142 */
+    0x0000,     /* R5143 */
+    0x0000,     /* R5144 */
+    0x0000,     /* R5145 */
+    0x0000,     /* R5146 */
+    0x0000,     /* R5147 */
+    0x0000,     /* R5148 */
+    0x0000,     /* R5149 */
+    0x0000,     /* R5150 */
+    0x0000,     /* R5151 */
+    0x0000,     /* R5152 */
+    0x0000,     /* R5153 */
+    0x0000,     /* R5154 */
+    0x0000,     /* R5155 */
+    0x0000,     /* R5156 */
+    0x0000,     /* R5157 */
+    0x0000,     /* R5158 */
+    0x0000,     /* R5159 */
+    0x0000,     /* R5160 */
+    0x0000,     /* R5161 */
+    0x0000,     /* R5162 */
+    0x0000,     /* R5163 */
+    0x0000,     /* R5164 */
+    0x0000,     /* R5165 */
+    0x0000,     /* R5166 */
+    0x0000,     /* R5167 */
+    0x0000,     /* R5168 */
+    0x0000,     /* R5169 */
+    0x0000,     /* R5170 */
+    0x0000,     /* R5171 */
+    0x0000,     /* R5172 */
+    0x0000,     /* R5173 */
+    0x0000,     /* R5174 */
+    0x0000,     /* R5175 */
+    0x0000,     /* R5176 */
+    0x0000,     /* R5177 */
+    0x0000,     /* R5178 */
+    0x0000,     /* R5179 */
+    0x0000,     /* R5180 */
+    0x0000,     /* R5181 */
+    0x0000,     /* R5182 */
+    0x0000,     /* R5183 */
+    0x0000,     /* R5184 */
+    0x0000,     /* R5185 */
+    0x0000,     /* R5186 */
+    0x0000,     /* R5187 */
+    0x0000,     /* R5188 */
+    0x0000,     /* R5189 */
+    0x0000,     /* R5190 */
+    0x0000,     /* R5191 */
+    0x0000,     /* R5192 */
+    0x0000,     /* R5193 */
+    0x0000,     /* R5194 */
+    0x0000,     /* R5195 */
+    0x0000,     /* R5196 */
+    0x0000,     /* R5197 */
+    0x0000,     /* R5198 */
+    0x0000,     /* R5199 */
+    0x0000,     /* R5200 */
+    0x0000,     /* R5201 */
+    0x0000,     /* R5202 */
+    0x0000,     /* R5203 */
+    0x0000,     /* R5204 */
+    0x0000,     /* R5205 */
+    0x0000,     /* R5206 */
+    0x0000,     /* R5207 */
+    0x0000,     /* R5208 */
+    0x0000,     /* R5209 */
+    0x0000,     /* R5210 */
+    0x0000,     /* R5211 */
+    0x0000,     /* R5212 */
+    0x0000,     /* R5213 */
+    0x0000,     /* R5214 */
+    0x0000,     /* R5215 */
+    0x0000,     /* R5216 */
+    0x0000,     /* R5217 */
+    0x0000,     /* R5218 */
+    0x0000,     /* R5219 */
+    0x0000,     /* R5220 */
+    0x0000,     /* R5221 */
+    0x0000,     /* R5222 */
+    0x0000,     /* R5223 */
+    0x0000,     /* R5224 */
+    0x0000,     /* R5225 */
+    0x0000,     /* R5226 */
+    0x0000,     /* R5227 */
+    0x0000,     /* R5228 */
+    0x0000,     /* R5229 */
+    0x0000,     /* R5230 */
+    0x0000,     /* R5231 */
+    0x0000,     /* R5232 */
+    0x0000,     /* R5233 */
+    0x0000,     /* R5234 */
+    0x0000,     /* R5235 */
+    0x0000,     /* R5236 */
+    0x0000,     /* R5237 */
+    0x0000,     /* R5238 */
+    0x0000,     /* R5239 */
+    0x0000,     /* R5240 */
+    0x0000,     /* R5241 */
+    0x0000,     /* R5242 */
+    0x0000,     /* R5243 */
+    0x0000,     /* R5244 */
+    0x0000,     /* R5245 */
+    0x0000,     /* R5246 */
+    0x0000,     /* R5247 */
+    0x0000,     /* R5248 */
+    0x0000,     /* R5249 */
+    0x0000,     /* R5250 */
+    0x0000,     /* R5251 */
+    0x0000,     /* R5252 */
+    0x0000,     /* R5253 */
+    0x0000,     /* R5254 */
+    0x0000,     /* R5255 */
+    0x0000,     /* R5256 */
+    0x0000,     /* R5257 */
+    0x0000,     /* R5258 */
+    0x0000,     /* R5259 */
+    0x0000,     /* R5260 */
+    0x0000,     /* R5261 */
+    0x0000,     /* R5262 */
+    0x0000,     /* R5263 */
+    0x0000,     /* R5264 */
+    0x0000,     /* R5265 */
+    0x0000,     /* R5266 */
+    0x0000,     /* R5267 */
+    0x0000,     /* R5268 */
+    0x0000,     /* R5269 */
+    0x0000,     /* R5270 */
+    0x0000,     /* R5271 */
+    0x0000,     /* R5272 */
+    0x0000,     /* R5273 */
+    0x0000,     /* R5274 */
+    0x0000,     /* R5275 */
+    0x0000,     /* R5276 */
+    0x0000,     /* R5277 */
+    0x0000,     /* R5278 */
+    0x0000,     /* R5279 */
+    0x0000,     /* R5280 */
+    0x0000,     /* R5281 */
+    0x0000,     /* R5282 */
+    0x0000,     /* R5283 */
+    0x0000,     /* R5284 */
+    0x0000,     /* R5285 */
+    0x0000,     /* R5286 */
+    0x0000,     /* R5287 */
+    0x0000,     /* R5288 */
+    0x0000,     /* R5289 */
+    0x0000,     /* R5290 */
+    0x0000,     /* R5291 */
+    0x0000,     /* R5292 */
+    0x0000,     /* R5293 */
+    0x0000,     /* R5294 */
+    0x0000,     /* R5295 */
+    0x0000,     /* R5296 */
+    0x0000,     /* R5297 */
+    0x0000,     /* R5298 */
+    0x0000,     /* R5299 */
+    0x0000,     /* R5300 */
+    0x0000,     /* R5301 */
+    0x0000,     /* R5302 */
+    0x0000,     /* R5303 */
+    0x0000,     /* R5304 */
+    0x0000,     /* R5305 */
+    0x0000,     /* R5306 */
+    0x0000,     /* R5307 */
+    0x0000,     /* R5308 */
+    0x0000,     /* R5309 */
+    0x0000,     /* R5310 */
+    0x0000,     /* R5311 */
+    0x0000,     /* R5312 */
+    0x0000,     /* R5313 */
+    0x0000,     /* R5314 */
+    0x0000,     /* R5315 */
+    0x0000,     /* R5316 */
+    0x0000,     /* R5317 */
+    0x0000,     /* R5318 */
+    0x0000,     /* R5319 */
+    0x0000,     /* R5320 */
+    0x0000,     /* R5321 */
+    0x0000,     /* R5322 */
+    0x0000,     /* R5323 */
+    0x0000,     /* R5324 */
+    0x0000,     /* R5325 */
+    0x0000,     /* R5326 */
+    0x0000,     /* R5327 */
+    0x0000,     /* R5328 */
+    0x0000,     /* R5329 */
+    0x0000,     /* R5330 */
+    0x0000,     /* R5331 */
+    0x0000,     /* R5332 */
+    0x0000,     /* R5333 */
+    0x0000,     /* R5334 */
+    0x0000,     /* R5335 */
+    0x0000,     /* R5336 */
+    0x0000,     /* R5337 */
+    0x0000,     /* R5338 */
+    0x0000,     /* R5339 */
+    0x0000,     /* R5340 */
+    0x0000,     /* R5341 */
+    0x0000,     /* R5342 */
+    0x0000,     /* R5343 */
+    0x0000,     /* R5344 */
+    0x0000,     /* R5345 */
+    0x0000,     /* R5346 */
+    0x0000,     /* R5347 */
+    0x0000,     /* R5348 */
+    0x0000,     /* R5349 */
+    0x0000,     /* R5350 */
+    0x0000,     /* R5351 */
+    0x0000,     /* R5352 */
+    0x0000,     /* R5353 */
+    0x0000,     /* R5354 */
+    0x0000,     /* R5355 */
+    0x0000,     /* R5356 */
+    0x0000,     /* R5357 */
+    0x0000,     /* R5358 */
+    0x0000,     /* R5359 */
+    0x0000,     /* R5360 */
+    0x0000,     /* R5361 */
+    0x0000,     /* R5362 */
+    0x0000,     /* R5363 */
+    0x0000,     /* R5364 */
+    0x0000,     /* R5365 */
+    0x0000,     /* R5366 */
+    0x0000,     /* R5367 */
+    0x0000,     /* R5368 */
+    0x0000,     /* R5369 */
+    0x0000,     /* R5370 */
+    0x0000,     /* R5371 */
+    0x0000,     /* R5372 */
+    0x0000,     /* R5373 */
+    0x0000,     /* R5374 */
+    0x0000,     /* R5375 */
+    0x0000,     /* R5376 */
+    0x0000,     /* R5377 */
+    0x0000,     /* R5378 */
+    0x0000,     /* R5379 */
+    0x0000,     /* R5380 */
+    0x0000,     /* R5381 */
+    0x0000,     /* R5382 */
+    0x0000,     /* R5383 */
+    0x0000,     /* R5384 */
+    0x0000,     /* R5385 */
+    0x0000,     /* R5386 */
+    0x0000,     /* R5387 */
+    0x0000,     /* R5388 */
+    0x0000,     /* R5389 */
+    0x0000,     /* R5390 */
+    0x0000,     /* R5391 */
+    0x0000,     /* R5392 */
+    0x0000,     /* R5393 */
+    0x0000,     /* R5394 */
+    0x0000,     /* R5395 */
+    0x0000,     /* R5396 */
+    0x0000,     /* R5397 */
+    0x0000,     /* R5398 */
+    0x0000,     /* R5399 */
+    0x0000,     /* R5400 */
+    0x0000,     /* R5401 */
+    0x0000,     /* R5402 */
+    0x0000,     /* R5403 */
+    0x0000,     /* R5404 */
+    0x0000,     /* R5405 */
+    0x0000,     /* R5406 */
+    0x0000,     /* R5407 */
+    0x0000,     /* R5408 */
+    0x0000,     /* R5409 */
+    0x0000,     /* R5410 */
+    0x0000,     /* R5411 */
+    0x0000,     /* R5412 */
+    0x0000,     /* R5413 */
+    0x0000,     /* R5414 */
+    0x0000,     /* R5415 */
+    0x0000,     /* R5416 */
+    0x0000,     /* R5417 */
+    0x0000,     /* R5418 */
+    0x0000,     /* R5419 */
+    0x0000,     /* R5420 */
+    0x0000,     /* R5421 */
+    0x0000,     /* R5422 */
+    0x0000,     /* R5423 */
+    0x0000,     /* R5424 */
+    0x0000,     /* R5425 */
+    0x0000,     /* R5426 */
+    0x0000,     /* R5427 */
+    0x0000,     /* R5428 */
+    0x0000,     /* R5429 */
+    0x0000,     /* R5430 */
+    0x0000,     /* R5431 */
+    0x0000,     /* R5432 */
+    0x0000,     /* R5433 */
+    0x0000,     /* R5434 */
+    0x0000,     /* R5435 */
+    0x0000,     /* R5436 */
+    0x0000,     /* R5437 */
+    0x0000,     /* R5438 */
+    0x0000,     /* R5439 */
+    0x0000,     /* R5440 */
+    0x0000,     /* R5441 */
+    0x0000,     /* R5442 */
+    0x0000,     /* R5443 */
+    0x0000,     /* R5444 */
+    0x0000,     /* R5445 */
+    0x0000,     /* R5446 */
+    0x0000,     /* R5447 */
+    0x0000,     /* R5448 */
+    0x0000,     /* R5449 */
+    0x0000,     /* R5450 */
+    0x0000,     /* R5451 */
+    0x0000,     /* R5452 */
+    0x0000,     /* R5453 */
+    0x0000,     /* R5454 */
+    0x0000,     /* R5455 */
+    0x0000,     /* R5456 */
+    0x0000,     /* R5457 */
+    0x0000,     /* R5458 */
+    0x0000,     /* R5459 */
+    0x0000,     /* R5460 */
+    0x0000,     /* R5461 */
+    0x0000,     /* R5462 */
+    0x0000,     /* R5463 */
+    0x0000,     /* R5464 */
+    0x0000,     /* R5465 */
+    0x0000,     /* R5466 */
+    0x0000,     /* R5467 */
+    0x0000,     /* R5468 */
+    0x0000,     /* R5469 */
+    0x0000,     /* R5470 */
+    0x0000,     /* R5471 */
+    0x0000,     /* R5472 */
+    0x0000,     /* R5473 */
+    0x0000,     /* R5474 */
+    0x0000,     /* R5475 */
+    0x0000,     /* R5476 */
+    0x0000,     /* R5477 */
+    0x0000,     /* R5478 */
+    0x0000,     /* R5479 */
+    0x0000,     /* R5480 */
+    0x0000,     /* R5481 */
+    0x0000,     /* R5482 */
+    0x0000,     /* R5483 */
+    0x0000,     /* R5484 */
+    0x0000,     /* R5485 */
+    0x0000,     /* R5486 */
+    0x0000,     /* R5487 */
+    0x0000,     /* R5488 */
+    0x0000,     /* R5489 */
+    0x0000,     /* R5490 */
+    0x0000,     /* R5491 */
+    0x0000,     /* R5492 */
+    0x0000,     /* R5493 */
+    0x0000,     /* R5494 */
+    0x0000,     /* R5495 */
+    0x0000,     /* R5496 */
+    0x0000,     /* R5497 */
+    0x0000,     /* R5498 */
+    0x0000,     /* R5499 */
+    0x0000,     /* R5500 */
+    0x0000,     /* R5501 */
+    0x0000,     /* R5502 */
+    0x0000,     /* R5503 */
+    0x0000,     /* R5504 */
+    0x0000,     /* R5505 */
+    0x0000,     /* R5506 */
+    0x0000,     /* R5507 */
+    0x0000,     /* R5508 */
+    0x0000,     /* R5509 */
+    0x0000,     /* R5510 */
+    0x0000,     /* R5511 */
+    0x0000,     /* R5512 */
+    0x0000,     /* R5513 */
+    0x0000,     /* R5514 */
+    0x0000,     /* R5515 */
+    0x0000,     /* R5516 */
+    0x0000,     /* R5517 */
+    0x0000,     /* R5518 */
+    0x0000,     /* R5519 */
+    0x0000,     /* R5520 */
+    0x0000,     /* R5521 */
+    0x0000,     /* R5522 */
+    0x0000,     /* R5523 */
+    0x0000,     /* R5524 */
+    0x0000,     /* R5525 */
+    0x0000,     /* R5526 */
+    0x0000,     /* R5527 */
+    0x0000,     /* R5528 */
+    0x0000,     /* R5529 */
+    0x0000,     /* R5530 */
+    0x0000,     /* R5531 */
+    0x0000,     /* R5532 */
+    0x0000,     /* R5533 */
+    0x0000,     /* R5534 */
+    0x0000,     /* R5535 */
+    0x0000,     /* R5536 */
+    0x0000,     /* R5537 */
+    0x0000,     /* R5538 */
+    0x0000,     /* R5539 */
+    0x0000,     /* R5540 */
+    0x0000,     /* R5541 */
+    0x0000,     /* R5542 */
+    0x0000,     /* R5543 */
+    0x0000,     /* R5544 */
+    0x0000,     /* R5545 */
+    0x0000,     /* R5546 */
+    0x0000,     /* R5547 */
+    0x0000,     /* R5548 */
+    0x0000,     /* R5549 */
+    0x0000,     /* R5550 */
+    0x0000,     /* R5551 */
+    0x0000,     /* R5552 */
+    0x0000,     /* R5553 */
+    0x0000,     /* R5554 */
+    0x0000,     /* R5555 */
+    0x0000,     /* R5556 */
+    0x0000,     /* R5557 */
+    0x0000,     /* R5558 */
+    0x0000,     /* R5559 */
+    0x0000,     /* R5560 */
+    0x0000,     /* R5561 */
+    0x0000,     /* R5562 */
+    0x0000,     /* R5563 */
+    0x0000,     /* R5564 */
+    0x0000,     /* R5565 */
+    0x0000,     /* R5566 */
+    0x0000,     /* R5567 */
+    0x0000,     /* R5568 */
+    0x0000,     /* R5569 */
+    0x0000,     /* R5570 */
+    0x0000,     /* R5571 */
+    0x0000,     /* R5572 */
+    0x0000,     /* R5573 */
+    0x0000,     /* R5574 */
+    0x0000,     /* R5575 */
+    0x0000,     /* R5576 */
+    0x0000,     /* R5577 */
+    0x0000,     /* R5578 */
+    0x0000,     /* R5579 */
+    0x0000,     /* R5580 */
+    0x0000,     /* R5581 */
+    0x0000,     /* R5582 */
+    0x0000,     /* R5583 */
+    0x0000,     /* R5584 */
+    0x0000,     /* R5585 */
+    0x0000,     /* R5586 */
+    0x0000,     /* R5587 */
+    0x0000,     /* R5588 */
+    0x0000,     /* R5589 */
+    0x0000,     /* R5590 */
+    0x0000,     /* R5591 */
+    0x0000,     /* R5592 */
+    0x0000,     /* R5593 */
+    0x0000,     /* R5594 */
+    0x0000,     /* R5595 */
+    0x0000,     /* R5596 */
+    0x0000,     /* R5597 */
+    0x0000,     /* R5598 */
+    0x0000,     /* R5599 */
+    0x0000,     /* R5600 */
+    0x0000,     /* R5601 */
+    0x0000,     /* R5602 */
+    0x0000,     /* R5603 */
+    0x0000,     /* R5604 */
+    0x0000,     /* R5605 */
+    0x0000,     /* R5606 */
+    0x0000,     /* R5607 */
+    0x0000,     /* R5608 */
+    0x0000,     /* R5609 */
+    0x0000,     /* R5610 */
+    0x0000,     /* R5611 */
+    0x0000,     /* R5612 */
+    0x0000,     /* R5613 */
+    0x0000,     /* R5614 */
+    0x0000,     /* R5615 */
+    0x0000,     /* R5616 */
+    0x0000,     /* R5617 */
+    0x0000,     /* R5618 */
+    0x0000,     /* R5619 */
+    0x0000,     /* R5620 */
+    0x0000,     /* R5621 */
+    0x0000,     /* R5622 */
+    0x0000,     /* R5623 */
+    0x0000,     /* R5624 */
+    0x0000,     /* R5625 */
+    0x0000,     /* R5626 */
+    0x0000,     /* R5627 */
+    0x0000,     /* R5628 */
+    0x0000,     /* R5629 */
+    0x0000,     /* R5630 */
+    0x0000,     /* R5631 */
+    0x0000,     /* R5632 */
+    0x0000,     /* R5633 */
+    0x0000,     /* R5634 */
+    0x0000,     /* R5635 */
+    0x0000,     /* R5636 */
+    0x0000,     /* R5637 */
+    0x0000,     /* R5638 */
+    0x0000,     /* R5639 */
+    0x0000,     /* R5640 */
+    0x0000,     /* R5641 */
+    0x0000,     /* R5642 */
+    0x0000,     /* R5643 */
+    0x0000,     /* R5644 */
+    0x0000,     /* R5645 */
+    0x0000,     /* R5646 */
+    0x0000,     /* R5647 */
+    0x0000,     /* R5648 */
+    0x0000,     /* R5649 */
+    0x0000,     /* R5650 */
+    0x0000,     /* R5651 */
+    0x0000,     /* R5652 */
+    0x0000,     /* R5653 */
+    0x0000,     /* R5654 */
+    0x0000,     /* R5655 */
+    0x0000,     /* R5656 */
+    0x0000,     /* R5657 */
+    0x0000,     /* R5658 */
+    0x0000,     /* R5659 */
+    0x0000,     /* R5660 */
+    0x0000,     /* R5661 */
+    0x0000,     /* R5662 */
+    0x0000,     /* R5663 */
+    0x0000,     /* R5664 */
+    0x0000,     /* R5665 */
+    0x0000,     /* R5666 */
+    0x0000,     /* R5667 */
+    0x0000,     /* R5668 */
+    0x0000,     /* R5669 */
+    0x0000,     /* R5670 */
+    0x0000,     /* R5671 */
+    0x0000,     /* R5672 */
+    0x0000,     /* R5673 */
+    0x0000,     /* R5674 */
+    0x0000,     /* R5675 */
+    0x0000,     /* R5676 */
+    0x0000,     /* R5677 */
+    0x0000,     /* R5678 */
+    0x0000,     /* R5679 */
+    0x0000,     /* R5680 */
+    0x0000,     /* R5681 */
+    0x0000,     /* R5682 */
+    0x0000,     /* R5683 */
+    0x0000,     /* R5684 */
+    0x0000,     /* R5685 */
+    0x0000,     /* R5686 */
+    0x0000,     /* R5687 */
+    0x0000,     /* R5688 */
+    0x0000,     /* R5689 */
+    0x0000,     /* R5690 */
+    0x0000,     /* R5691 */
+    0x0000,     /* R5692 */
+    0x0000,     /* R5693 */
+    0x0000,     /* R5694 */
+    0x0000,     /* R5695 */
+    0x0000,     /* R5696 */
+    0x0000,     /* R5697 */
+    0x0000,     /* R5698 */
+    0x0000,     /* R5699 */
+    0x0000,     /* R5700 */
+    0x0000,     /* R5701 */
+    0x0000,     /* R5702 */
+    0x0000,     /* R5703 */
+    0x0000,     /* R5704 */
+    0x0000,     /* R5705 */
+    0x0000,     /* R5706 */
+    0x0000,     /* R5707 */
+    0x0000,     /* R5708 */
+    0x0000,     /* R5709 */
+    0x0000,     /* R5710 */
+    0x0000,     /* R5711 */
+    0x0000,     /* R5712 */
+    0x0000,     /* R5713 */
+    0x0000,     /* R5714 */
+    0x0000,     /* R5715 */
+    0x0000,     /* R5716 */
+    0x0000,     /* R5717 */
+    0x0000,     /* R5718 */
+    0x0000,     /* R5719 */
+    0x0000,     /* R5720 */
+    0x0000,     /* R5721 */
+    0x0000,     /* R5722 */
+    0x0000,     /* R5723 */
+    0x0000,     /* R5724 */
+    0x0000,     /* R5725 */
+    0x0000,     /* R5726 */
+    0x0000,     /* R5727 */
+    0x0000,     /* R5728 */
+    0x0000,     /* R5729 */
+    0x0000,     /* R5730 */
+    0x0000,     /* R5731 */
+    0x0000,     /* R5732 */
+    0x0000,     /* R5733 */
+    0x0000,     /* R5734 */
+    0x0000,     /* R5735 */
+    0x0000,     /* R5736 */
+    0x0000,     /* R5737 */
+    0x0000,     /* R5738 */
+    0x0000,     /* R5739 */
+    0x0000,     /* R5740 */
+    0x0000,     /* R5741 */
+    0x0000,     /* R5742 */
+    0x0000,     /* R5743 */
+    0x0000,     /* R5744 */
+    0x0000,     /* R5745 */
+    0x0000,     /* R5746 */
+    0x0000,     /* R5747 */
+    0x0000,     /* R5748 */
+    0x0000,     /* R5749 */
+    0x0000,     /* R5750 */
+    0x0000,     /* R5751 */
+    0x0000,     /* R5752 */
+    0x0000,     /* R5753 */
+    0x0000,     /* R5754 */
+    0x0000,     /* R5755 */
+    0x0000,     /* R5756 */
+    0x0000,     /* R5757 */
+    0x0000,     /* R5758 */
+    0x0000,     /* R5759 */
+    0x0000,     /* R5760 */
+    0x0000,     /* R5761 */
+    0x0000,     /* R5762 */
+    0x0000,     /* R5763 */
+    0x0000,     /* R5764 */
+    0x0000,     /* R5765 */
+    0x0000,     /* R5766 */
+    0x0000,     /* R5767 */
+    0x0000,     /* R5768 */
+    0x0000,     /* R5769 */
+    0x0000,     /* R5770 */
+    0x0000,     /* R5771 */
+    0x0000,     /* R5772 */
+    0x0000,     /* R5773 */
+    0x0000,     /* R5774 */
+    0x0000,     /* R5775 */
+    0x0000,     /* R5776 */
+    0x0000,     /* R5777 */
+    0x0000,     /* R5778 */
+    0x0000,     /* R5779 */
+    0x0000,     /* R5780 */
+    0x0000,     /* R5781 */
+    0x0000,     /* R5782 */
+    0x0000,     /* R5783 */
+    0x0000,     /* R5784 */
+    0x0000,     /* R5785 */
+    0x0000,     /* R5786 */
+    0x0000,     /* R5787 */
+    0x0000,     /* R5788 */
+    0x0000,     /* R5789 */
+    0x0000,     /* R5790 */
+    0x0000,     /* R5791 */
+    0x0000,     /* R5792 */
+    0x0000,     /* R5793 */
+    0x0000,     /* R5794 */
+    0x0000,     /* R5795 */
+    0x0000,     /* R5796 */
+    0x0000,     /* R5797 */
+    0x0000,     /* R5798 */
+    0x0000,     /* R5799 */
+    0x0000,     /* R5800 */
+    0x0000,     /* R5801 */
+    0x0000,     /* R5802 */
+    0x0000,     /* R5803 */
+    0x0000,     /* R5804 */
+    0x0000,     /* R5805 */
+    0x0000,     /* R5806 */
+    0x0000,     /* R5807 */
+    0x0000,     /* R5808 */
+    0x0000,     /* R5809 */
+    0x0000,     /* R5810 */
+    0x0000,     /* R5811 */
+    0x0000,     /* R5812 */
+    0x0000,     /* R5813 */
+    0x0000,     /* R5814 */
+    0x0000,     /* R5815 */
+    0x0000,     /* R5816 */
+    0x0000,     /* R5817 */
+    0x0000,     /* R5818 */
+    0x0000,     /* R5819 */
+    0x0000,     /* R5820 */
+    0x0000,     /* R5821 */
+    0x0000,     /* R5822 */
+    0x0000,     /* R5823 */
+    0x0000,     /* R5824 */
+    0x0000,     /* R5825 */
+    0x0000,     /* R5826 */
+    0x0000,     /* R5827 */
+    0x0000,     /* R5828 */
+    0x0000,     /* R5829 */
+    0x0000,     /* R5830 */
+    0x0000,     /* R5831 */
+    0x0000,     /* R5832 */
+    0x0000,     /* R5833 */
+    0x0000,     /* R5834 */
+    0x0000,     /* R5835 */
+    0x0000,     /* R5836 */
+    0x0000,     /* R5837 */
+    0x0000,     /* R5838 */
+    0x0000,     /* R5839 */
+    0x0000,     /* R5840 */
+    0x0000,     /* R5841 */
+    0x0000,     /* R5842 */
+    0x0000,     /* R5843 */
+    0x0000,     /* R5844 */
+    0x0000,     /* R5845 */
+    0x0000,     /* R5846 */
+    0x0000,     /* R5847 */
+    0x0000,     /* R5848 */
+    0x0000,     /* R5849 */
+    0x0000,     /* R5850 */
+    0x0000,     /* R5851 */
+    0x0000,     /* R5852 */
+    0x0000,     /* R5853 */
+    0x0000,     /* R5854 */
+    0x0000,     /* R5855 */
+    0x0000,     /* R5856 */
+    0x0000,     /* R5857 */
+    0x0000,     /* R5858 */
+    0x0000,     /* R5859 */
+    0x0000,     /* R5860 */
+    0x0000,     /* R5861 */
+    0x0000,     /* R5862 */
+    0x0000,     /* R5863 */
+    0x0000,     /* R5864 */
+    0x0000,     /* R5865 */
+    0x0000,     /* R5866 */
+    0x0000,     /* R5867 */
+    0x0000,     /* R5868 */
+    0x0000,     /* R5869 */
+    0x0000,     /* R5870 */
+    0x0000,     /* R5871 */
+    0x0000,     /* R5872 */
+    0x0000,     /* R5873 */
+    0x0000,     /* R5874 */
+    0x0000,     /* R5875 */
+    0x0000,     /* R5876 */
+    0x0000,     /* R5877 */
+    0x0000,     /* R5878 */
+    0x0000,     /* R5879 */
+    0x0000,     /* R5880 */
+    0x0000,     /* R5881 */
+    0x0000,     /* R5882 */
+    0x0000,     /* R5883 */
+    0x0000,     /* R5884 */
+    0x0000,     /* R5885 */
+    0x0000,     /* R5886 */
+    0x0000,     /* R5887 */
+    0x0000,     /* R5888 */
+    0x0000,     /* R5889 */
+    0x0000,     /* R5890 */
+    0x0000,     /* R5891 */
+    0x0000,     /* R5892 */
+    0x0000,     /* R5893 */
+    0x0000,     /* R5894 */
+    0x0000,     /* R5895 */
+    0x0000,     /* R5896 */
+    0x0000,     /* R5897 */
+    0x0000,     /* R5898 */
+    0x0000,     /* R5899 */
+    0x0000,     /* R5900 */
+    0x0000,     /* R5901 */
+    0x0000,     /* R5902 */
+    0x0000,     /* R5903 */
+    0x0000,     /* R5904 */
+    0x0000,     /* R5905 */
+    0x0000,     /* R5906 */
+    0x0000,     /* R5907 */
+    0x0000,     /* R5908 */
+    0x0000,     /* R5909 */
+    0x0000,     /* R5910 */
+    0x0000,     /* R5911 */
+    0x0000,     /* R5912 */
+    0x0000,     /* R5913 */
+    0x0000,     /* R5914 */
+    0x0000,     /* R5915 */
+    0x0000,     /* R5916 */
+    0x0000,     /* R5917 */
+    0x0000,     /* R5918 */
+    0x0000,     /* R5919 */
+    0x0000,     /* R5920 */
+    0x0000,     /* R5921 */
+    0x0000,     /* R5922 */
+    0x0000,     /* R5923 */
+    0x0000,     /* R5924 */
+    0x0000,     /* R5925 */
+    0x0000,     /* R5926 */
+    0x0000,     /* R5927 */
+    0x0000,     /* R5928 */
+    0x0000,     /* R5929 */
+    0x0000,     /* R5930 */
+    0x0000,     /* R5931 */
+    0x0000,     /* R5932 */
+    0x0000,     /* R5933 */
+    0x0000,     /* R5934 */
+    0x0000,     /* R5935 */
+    0x0000,     /* R5936 */
+    0x0000,     /* R5937 */
+    0x0000,     /* R5938 */
+    0x0000,     /* R5939 */
+    0x0000,     /* R5940 */
+    0x0000,     /* R5941 */
+    0x0000,     /* R5942 */
+    0x0000,     /* R5943 */
+    0x0000,     /* R5944 */
+    0x0000,     /* R5945 */
+    0x0000,     /* R5946 */
+    0x0000,     /* R5947 */
+    0x0000,     /* R5948 */
+    0x0000,     /* R5949 */
+    0x0000,     /* R5950 */
+    0x0000,     /* R5951 */
+    0x0000,     /* R5952 */
+    0x0000,     /* R5953 */
+    0x0000,     /* R5954 */
+    0x0000,     /* R5955 */
+    0x0000,     /* R5956 */
+    0x0000,     /* R5957 */
+    0x0000,     /* R5958 */
+    0x0000,     /* R5959 */
+    0x0000,     /* R5960 */
+    0x0000,     /* R5961 */
+    0x0000,     /* R5962 */
+    0x0000,     /* R5963 */
+    0x0000,     /* R5964 */
+    0x0000,     /* R5965 */
+    0x0000,     /* R5966 */
+    0x0000,     /* R5967 */
+    0x0000,     /* R5968 */
+    0x0000,     /* R5969 */
+    0x0000,     /* R5970 */
+    0x0000,     /* R5971 */
+    0x0000,     /* R5972 */
+    0x0000,     /* R5973 */
+    0x0000,     /* R5974 */
+    0x0000,     /* R5975 */
+    0x0000,     /* R5976 */
+    0x0000,     /* R5977 */
+    0x0000,     /* R5978 */
+    0x0000,     /* R5979 */
+    0x0000,     /* R5980 */
+    0x0000,     /* R5981 */
+    0x0000,     /* R5982 */
+    0x0000,     /* R5983 */
+    0x0000,     /* R5984 */
+    0x0000,     /* R5985 */
+    0x0000,     /* R5986 */
+    0x0000,     /* R5987 */
+    0x0000,     /* R5988 */
+    0x0000,     /* R5989 */
+    0x0000,     /* R5990 */
+    0x0000,     /* R5991 */
+    0x0000,     /* R5992 */
+    0x0000,     /* R5993 */
+    0x0000,     /* R5994 */
+    0x0000,     /* R5995 */
+    0x0000,     /* R5996 */
+    0x0000,     /* R5997 */
+    0x0000,     /* R5998 */
+    0x0000,     /* R5999 */
+    0x0000,     /* R6000 */
+    0x0000,     /* R6001 */
+    0x0000,     /* R6002 */
+    0x0000,     /* R6003 */
+    0x0000,     /* R6004 */
+    0x0000,     /* R6005 */
+    0x0000,     /* R6006 */
+    0x0000,     /* R6007 */
+    0x0000,     /* R6008 */
+    0x0000,     /* R6009 */
+    0x0000,     /* R6010 */
+    0x0000,     /* R6011 */
+    0x0000,     /* R6012 */
+    0x0000,     /* R6013 */
+    0x0000,     /* R6014 */
+    0x0000,     /* R6015 */
+    0x0000,     /* R6016 */
+    0x0000,     /* R6017 */
+    0x0000,     /* R6018 */
+    0x0000,     /* R6019 */
+    0x0000,     /* R6020 */
+    0x0000,     /* R6021 */
+    0x0000,     /* R6022 */
+    0x0000,     /* R6023 */
+    0x0000,     /* R6024 */
+    0x0000,     /* R6025 */
+    0x0000,     /* R6026 */
+    0x0000,     /* R6027 */
+    0x0000,     /* R6028 */
+    0x0000,     /* R6029 */
+    0x0000,     /* R6030 */
+    0x0000,     /* R6031 */
+    0x0000,     /* R6032 */
+    0x0000,     /* R6033 */
+    0x0000,     /* R6034 */
+    0x0000,     /* R6035 */
+    0x0000,     /* R6036 */
+    0x0000,     /* R6037 */
+    0x0000,     /* R6038 */
+    0x0000,     /* R6039 */
+    0x0000,     /* R6040 */
+    0x0000,     /* R6041 */
+    0x0000,     /* R6042 */
+    0x0000,     /* R6043 */
+    0x0000,     /* R6044 */
+    0x0000,     /* R6045 */
+    0x0000,     /* R6046 */
+    0x0000,     /* R6047 */
+    0x0000,     /* R6048 */
+    0x0000,     /* R6049 */
+    0x0000,     /* R6050 */
+    0x0000,     /* R6051 */
+    0x0000,     /* R6052 */
+    0x0000,     /* R6053 */
+    0x0000,     /* R6054 */
+    0x0000,     /* R6055 */
+    0x0000,     /* R6056 */
+    0x0000,     /* R6057 */
+    0x0000,     /* R6058 */
+    0x0000,     /* R6059 */
+    0x0000,     /* R6060 */
+    0x0000,     /* R6061 */
+    0x0000,     /* R6062 */
+    0x0000,     /* R6063 */
+    0x0000,     /* R6064 */
+    0x0000,     /* R6065 */
+    0x0000,     /* R6066 */
+    0x0000,     /* R6067 */
+    0x0000,     /* R6068 */
+    0x0000,     /* R6069 */
+    0x0000,     /* R6070 */
+    0x0000,     /* R6071 */
+    0x0000,     /* R6072 */
+    0x0000,     /* R6073 */
+    0x0000,     /* R6074 */
+    0x0000,     /* R6075 */
+    0x0000,     /* R6076 */
+    0x0000,     /* R6077 */
+    0x0000,     /* R6078 */
+    0x0000,     /* R6079 */
+    0x0000,     /* R6080 */
+    0x0000,     /* R6081 */
+    0x0000,     /* R6082 */
+    0x0000,     /* R6083 */
+    0x0000,     /* R6084 */
+    0x0000,     /* R6085 */
+    0x0000,     /* R6086 */
+    0x0000,     /* R6087 */
+    0x0000,     /* R6088 */
+    0x0000,     /* R6089 */
+    0x0000,     /* R6090 */
+    0x0000,     /* R6091 */
+    0x0000,     /* R6092 */
+    0x0000,     /* R6093 */
+    0x0000,     /* R6094 */
+    0x0000,     /* R6095 */
+    0x0000,     /* R6096 */
+    0x0000,     /* R6097 */
+    0x0000,     /* R6098 */
+    0x0000,     /* R6099 */
+    0x0000,     /* R6100 */
+    0x0000,     /* R6101 */
+    0x0000,     /* R6102 */
+    0x0000,     /* R6103 */
+    0x0000,     /* R6104 */
+    0x0000,     /* R6105 */
+    0x0000,     /* R6106 */
+    0x0000,     /* R6107 */
+    0x0000,     /* R6108 */
+    0x0000,     /* R6109 */
+    0x0000,     /* R6110 */
+    0x0000,     /* R6111 */
+    0x0000,     /* R6112 */
+    0x0000,     /* R6113 */
+    0x0000,     /* R6114 */
+    0x0000,     /* R6115 */
+    0x0000,     /* R6116 */
+    0x0000,     /* R6117 */
+    0x0000,     /* R6118 */
+    0x0000,     /* R6119 */
+    0x0000,     /* R6120 */
+    0x0000,     /* R6121 */
+    0x0000,     /* R6122 */
+    0x0000,     /* R6123 */
+    0x0000,     /* R6124 */
+    0x0000,     /* R6125 */
+    0x0000,     /* R6126 */
+    0x0000,     /* R6127 */
+    0x0000,     /* R6128 */
+    0x0000,     /* R6129 */
+    0x0000,     /* R6130 */
+    0x0000,     /* R6131 */
+    0x0000,     /* R6132 */
+    0x0000,     /* R6133 */
+    0x0000,     /* R6134 */
+    0x0000,     /* R6135 */
+    0x0000,     /* R6136 */
+    0x0000,     /* R6137 */
+    0x0000,     /* R6138 */
+    0x0000,     /* R6139 */
+    0x0000,     /* R6140 */
+    0x0000,     /* R6141 */
+    0x0000,     /* R6142 */
+    0x0000,     /* R6143 */
+    0x0000,     /* R6144 */
+    0x0000,     /* R6145 */
+    0x0000,     /* R6146 */
+    0x0000,     /* R6147 */
+    0x0000,     /* R6148 */
+    0x0000,     /* R6149 */
+    0x0000,     /* R6150 */
+    0x0000,     /* R6151 */
+    0x0000,     /* R6152 */
+    0x0000,     /* R6153 */
+    0x0000,     /* R6154 */
+    0x0000,     /* R6155 */
+    0x0000,     /* R6156 */
+    0x0000,     /* R6157 */
+    0x0000,     /* R6158 */
+    0x0000,     /* R6159 */
+    0x0000,     /* R6160 */
+    0x0000,     /* R6161 */
+    0x0000,     /* R6162 */
+    0x0000,     /* R6163 */
+    0x0000,     /* R6164 */
+    0x0000,     /* R6165 */
+    0x0000,     /* R6166 */
+    0x0000,     /* R6167 */
+    0x0000,     /* R6168 */
+    0x0000,     /* R6169 */
+    0x0000,     /* R6170 */
+    0x0000,     /* R6171 */
+    0x0000,     /* R6172 */
+    0x0000,     /* R6173 */
+    0x0000,     /* R6174 */
+    0x0000,     /* R6175 */
+    0x0000,     /* R6176 */
+    0x0000,     /* R6177 */
+    0x0000,     /* R6178 */
+    0x0000,     /* R6179 */
+    0x0000,     /* R6180 */
+    0x0000,     /* R6181 */
+    0x0000,     /* R6182 */
+    0x0000,     /* R6183 */
+    0x0000,     /* R6184 */
+    0x0000,     /* R6185 */
+    0x0000,     /* R6186 */
+    0x0000,     /* R6187 */
+    0x0000,     /* R6188 */
+    0x0000,     /* R6189 */
+    0x0000,     /* R6190 */
+    0x0000,     /* R6191 */
+    0x0000,     /* R6192 */
+    0x0000,     /* R6193 */
+    0x0000,     /* R6194 */
+    0x0000,     /* R6195 */
+    0x0000,     /* R6196 */
+    0x0000,     /* R6197 */
+    0x0000,     /* R6198 */
+    0x0000,     /* R6199 */
+    0x0000,     /* R6200 */
+    0x0000,     /* R6201 */
+    0x0000,     /* R6202 */
+    0x0000,     /* R6203 */
+    0x0000,     /* R6204 */
+    0x0000,     /* R6205 */
+    0x0000,     /* R6206 */
+    0x0000,     /* R6207 */
+    0x0000,     /* R6208 */
+    0x0000,     /* R6209 */
+    0x0000,     /* R6210 */
+    0x0000,     /* R6211 */
+    0x0000,     /* R6212 */
+    0x0000,     /* R6213 */
+    0x0000,     /* R6214 */
+    0x0000,     /* R6215 */
+    0x0000,     /* R6216 */
+    0x0000,     /* R6217 */
+    0x0000,     /* R6218 */
+    0x0000,     /* R6219 */
+    0x0000,     /* R6220 */
+    0x0000,     /* R6221 */
+    0x0000,     /* R6222 */
+    0x0000,     /* R6223 */
+    0x0000,     /* R6224 */
+    0x0000,     /* R6225 */
+    0x0000,     /* R6226 */
+    0x0000,     /* R6227 */
+    0x0000,     /* R6228 */
+    0x0000,     /* R6229 */
+    0x0000,     /* R6230 */
+    0x0000,     /* R6231 */
+    0x0000,     /* R6232 */
+    0x0000,     /* R6233 */
+    0x0000,     /* R6234 */
+    0x0000,     /* R6235 */
+    0x0000,     /* R6236 */
+    0x0000,     /* R6237 */
+    0x0000,     /* R6238 */
+    0x0000,     /* R6239 */
+    0x0000,     /* R6240 */
+    0x0000,     /* R6241 */
+    0x0000,     /* R6242 */
+    0x0000,     /* R6243 */
+    0x0000,     /* R6244 */
+    0x0000,     /* R6245 */
+    0x0000,     /* R6246 */
+    0x0000,     /* R6247 */
+    0x0000,     /* R6248 */
+    0x0000,     /* R6249 */
+    0x0000,     /* R6250 */
+    0x0000,     /* R6251 */
+    0x0000,     /* R6252 */
+    0x0000,     /* R6253 */
+    0x0000,     /* R6254 */
+    0x0000,     /* R6255 */
+    0x0000,     /* R6256 */
+    0x0000,     /* R6257 */
+    0x0000,     /* R6258 */
+    0x0000,     /* R6259 */
+    0x0000,     /* R6260 */
+    0x0000,     /* R6261 */
+    0x0000,     /* R6262 */
+    0x0000,     /* R6263 */
+    0x0000,     /* R6264 */
+    0x0000,     /* R6265 */
+    0x0000,     /* R6266 */
+    0x0000,     /* R6267 */
+    0x0000,     /* R6268 */
+    0x0000,     /* R6269 */
+    0x0000,     /* R6270 */
+    0x0000,     /* R6271 */
+    0x0000,     /* R6272 */
+    0x0000,     /* R6273 */
+    0x0000,     /* R6274 */
+    0x0000,     /* R6275 */
+    0x0000,     /* R6276 */
+    0x0000,     /* R6277 */
+    0x0000,     /* R6278 */
+    0x0000,     /* R6279 */
+    0x0000,     /* R6280 */
+    0x0000,     /* R6281 */
+    0x0000,     /* R6282 */
+    0x0000,     /* R6283 */
+    0x0000,     /* R6284 */
+    0x0000,     /* R6285 */
+    0x0000,     /* R6286 */
+    0x0000,     /* R6287 */
+    0x0000,     /* R6288 */
+    0x0000,     /* R6289 */
+    0x0000,     /* R6290 */
+    0x0000,     /* R6291 */
+    0x0000,     /* R6292 */
+    0x0000,     /* R6293 */
+    0x0000,     /* R6294 */
+    0x0000,     /* R6295 */
+    0x0000,     /* R6296 */
+    0x0000,     /* R6297 */
+    0x0000,     /* R6298 */
+    0x0000,     /* R6299 */
+    0x0000,     /* R6300 */
+    0x0000,     /* R6301 */
+    0x0000,     /* R6302 */
+    0x0000,     /* R6303 */
+    0x0000,     /* R6304 */
+    0x0000,     /* R6305 */
+    0x0000,     /* R6306 */
+    0x0000,     /* R6307 */
+    0x0000,     /* R6308 */
+    0x0000,     /* R6309 */
+    0x0000,     /* R6310 */
+    0x0000,     /* R6311 */
+    0x0000,     /* R6312 */
+    0x0000,     /* R6313 */
+    0x0000,     /* R6314 */
+    0x0000,     /* R6315 */
+    0x0000,     /* R6316 */
+    0x0000,     /* R6317 */
+    0x0000,     /* R6318 */
+    0x0000,     /* R6319 */
+    0x0000,     /* R6320 */
+    0x0000,     /* R6321 */
+    0x0000,     /* R6322 */
+    0x0000,     /* R6323 */
+    0x0000,     /* R6324 */
+    0x0000,     /* R6325 */
+    0x0000,     /* R6326 */
+    0x0000,     /* R6327 */
+    0x0000,     /* R6328 */
+    0x0000,     /* R6329 */
+    0x0000,     /* R6330 */
+    0x0000,     /* R6331 */
+    0x0000,     /* R6332 */
+    0x0000,     /* R6333 */
+    0x0000,     /* R6334 */
+    0x0000,     /* R6335 */
+    0x0000,     /* R6336 */
+    0x0000,     /* R6337 */
+    0x0000,     /* R6338 */
+    0x0000,     /* R6339 */
+    0x0000,     /* R6340 */
+    0x0000,     /* R6341 */
+    0x0000,     /* R6342 */
+    0x0000,     /* R6343 */
+    0x0000,     /* R6344 */
+    0x0000,     /* R6345 */
+    0x0000,     /* R6346 */
+    0x0000,     /* R6347 */
+    0x0000,     /* R6348 */
+    0x0000,     /* R6349 */
+    0x0000,     /* R6350 */
+    0x0000,     /* R6351 */
+    0x0000,     /* R6352 */
+    0x0000,     /* R6353 */
+    0x0000,     /* R6354 */
+    0x0000,     /* R6355 */
+    0x0000,     /* R6356 */
+    0x0000,     /* R6357 */
+    0x0000,     /* R6358 */
+    0x0000,     /* R6359 */
+    0x0000,     /* R6360 */
+    0x0000,     /* R6361 */
+    0x0000,     /* R6362 */
+    0x0000,     /* R6363 */
+    0x0000,     /* R6364 */
+    0x0000,     /* R6365 */
+    0x0000,     /* R6366 */
+    0x0000,     /* R6367 */
+    0x0000,     /* R6368 */
+    0x0000,     /* R6369 */
+    0x0000,     /* R6370 */
+    0x0000,     /* R6371 */
+    0x0000,     /* R6372 */
+    0x0000,     /* R6373 */
+    0x0000,     /* R6374 */
+    0x0000,     /* R6375 */
+    0x0000,     /* R6376 */
+    0x0000,     /* R6377 */
+    0x0000,     /* R6378 */
+    0x0000,     /* R6379 */
+    0x0000,     /* R6380 */
+    0x0000,     /* R6381 */
+    0x0000,     /* R6382 */
+    0x0000,     /* R6383 */
+    0x0000,     /* R6384 */
+    0x0000,     /* R6385 */
+    0x0000,     /* R6386 */
+    0x0000,     /* R6387 */
+    0x0000,     /* R6388 */
+    0x0000,     /* R6389 */
+    0x0000,     /* R6390 */
+    0x0000,     /* R6391 */
+    0x0000,     /* R6392 */
+    0x0000,     /* R6393 */
+    0x0000,     /* R6394 */
+    0x0000,     /* R6395 */
+    0x0000,     /* R6396 */
+    0x0000,     /* R6397 */
+    0x0000,     /* R6398 */
+    0x0000,     /* R6399 */
+    0x0000,     /* R6400 */
+    0x0000,     /* R6401 */
+    0x0000,     /* R6402 */
+    0x0000,     /* R6403 */
+    0x0000,     /* R6404 */
+    0x0000,     /* R6405 */
+    0x0000,     /* R6406 */
+    0x0000,     /* R6407 */
+    0x0000,     /* R6408 */
+    0x0000,     /* R6409 */
+    0x0000,     /* R6410 */
+    0x0000,     /* R6411 */
+    0x0000,     /* R6412 */
+    0x0000,     /* R6413 */
+    0x0000,     /* R6414 */
+    0x0000,     /* R6415 */
+    0x0000,     /* R6416 */
+    0x0000,     /* R6417 */
+    0x0000,     /* R6418 */
+    0x0000,     /* R6419 */
+    0x0000,     /* R6420 */
+    0x0000,     /* R6421 */
+    0x0000,     /* R6422 */
+    0x0000,     /* R6423 */
+    0x0000,     /* R6424 */
+    0x0000,     /* R6425 */
+    0x0000,     /* R6426 */
+    0x0000,     /* R6427 */
+    0x0000,     /* R6428 */
+    0x0000,     /* R6429 */
+    0x0000,     /* R6430 */
+    0x0000,     /* R6431 */
+    0x0000,     /* R6432 */
+    0x0000,     /* R6433 */
+    0x0000,     /* R6434 */
+    0x0000,     /* R6435 */
+    0x0000,     /* R6436 */
+    0x0000,     /* R6437 */
+    0x0000,     /* R6438 */
+    0x0000,     /* R6439 */
+    0x0000,     /* R6440 */
+    0x0000,     /* R6441 */
+    0x0000,     /* R6442 */
+    0x0000,     /* R6443 */
+    0x0000,     /* R6444 */
+    0x0000,     /* R6445 */
+    0x0000,     /* R6446 */
+    0x0000,     /* R6447 */
+    0x0000,     /* R6448 */
+    0x0000,     /* R6449 */
+    0x0000,     /* R6450 */
+    0x0000,     /* R6451 */
+    0x0000,     /* R6452 */
+    0x0000,     /* R6453 */
+    0x0000,     /* R6454 */
+    0x0000,     /* R6455 */
+    0x0000,     /* R6456 */
+    0x0000,     /* R6457 */
+    0x0000,     /* R6458 */
+    0x0000,     /* R6459 */
+    0x0000,     /* R6460 */
+    0x0000,     /* R6461 */
+    0x0000,     /* R6462 */
+    0x0000,     /* R6463 */
+    0x0000,     /* R6464 */
+    0x0000,     /* R6465 */
+    0x0000,     /* R6466 */
+    0x0000,     /* R6467 */
+    0x0000,     /* R6468 */
+    0x0000,     /* R6469 */
+    0x0000,     /* R6470 */
+    0x0000,     /* R6471 */
+    0x0000,     /* R6472 */
+    0x0000,     /* R6473 */
+    0x0000,     /* R6474 */
+    0x0000,     /* R6475 */
+    0x0000,     /* R6476 */
+    0x0000,     /* R6477 */
+    0x0000,     /* R6478 */
+    0x0000,     /* R6479 */
+    0x0000,     /* R6480 */
+    0x0000,     /* R6481 */
+    0x0000,     /* R6482 */
+    0x0000,     /* R6483 */
+    0x0000,     /* R6484 */
+    0x0000,     /* R6485 */
+    0x0000,     /* R6486 */
+    0x0000,     /* R6487 */
+    0x0000,     /* R6488 */
+    0x0000,     /* R6489 */
+    0x0000,     /* R6490 */
+    0x0000,     /* R6491 */
+    0x0000,     /* R6492 */
+    0x0000,     /* R6493 */
+    0x0000,     /* R6494 */
+    0x0000,     /* R6495 */
+    0x0000,     /* R6496 */
+    0x0000,     /* R6497 */
+    0x0000,     /* R6498 */
+    0x0000,     /* R6499 */
+    0x0000,     /* R6500 */
+    0x0000,     /* R6501 */
+    0x0000,     /* R6502 */
+    0x0000,     /* R6503 */
+    0x0000,     /* R6504 */
+    0x0000,     /* R6505 */
+    0x0000,     /* R6506 */
+    0x0000,     /* R6507 */
+    0x0000,     /* R6508 */
+    0x0000,     /* R6509 */
+    0x0000,     /* R6510 */
+    0x0000,     /* R6511 */
+    0x0000,     /* R6512 */
+    0x0000,     /* R6513 */
+    0x0000,     /* R6514 */
+    0x0000,     /* R6515 */
+    0x0000,     /* R6516 */
+    0x0000,     /* R6517 */
+    0x0000,     /* R6518 */
+    0x0000,     /* R6519 */
+    0x0000,     /* R6520 */
+    0x0000,     /* R6521 */
+    0x0000,     /* R6522 */
+    0x0000,     /* R6523 */
+    0x0000,     /* R6524 */
+    0x0000,     /* R6525 */
+    0x0000,     /* R6526 */
+    0x0000,     /* R6527 */
+    0x0000,     /* R6528 */
+    0x0000,     /* R6529 */
+    0x0000,     /* R6530 */
+    0x0000,     /* R6531 */
+    0x0000,     /* R6532 */
+    0x0000,     /* R6533 */
+    0x0000,     /* R6534 */
+    0x0000,     /* R6535 */
+    0x0000,     /* R6536 */
+    0x0000,     /* R6537 */
+    0x0000,     /* R6538 */
+    0x0000,     /* R6539 */
+    0x0000,     /* R6540 */
+    0x0000,     /* R6541 */
+    0x0000,     /* R6542 */
+    0x0000,     /* R6543 */
+    0x0000,     /* R6544 */
+    0x0000,     /* R6545 */
+    0x0000,     /* R6546 */
+    0x0000,     /* R6547 */
+    0x0000,     /* R6548 */
+    0x0000,     /* R6549 */
+    0x0000,     /* R6550 */
+    0x0000,     /* R6551 */
+    0x0000,     /* R6552 */
+    0x0000,     /* R6553 */
+    0x0000,     /* R6554 */
+    0x0000,     /* R6555 */
+    0x0000,     /* R6556 */
+    0x0000,     /* R6557 */
+    0x0000,     /* R6558 */
+    0x0000,     /* R6559 */
+    0x0000,     /* R6560 */
+    0x0000,     /* R6561 */
+    0x0000,     /* R6562 */
+    0x0000,     /* R6563 */
+    0x0000,     /* R6564 */
+    0x0000,     /* R6565 */
+    0x0000,     /* R6566 */
+    0x0000,     /* R6567 */
+    0x0000,     /* R6568 */
+    0x0000,     /* R6569 */
+    0x0000,     /* R6570 */
+    0x0000,     /* R6571 */
+    0x0000,     /* R6572 */
+    0x0000,     /* R6573 */
+    0x0000,     /* R6574 */
+    0x0000,     /* R6575 */
+    0x0000,     /* R6576 */
+    0x0000,     /* R6577 */
+    0x0000,     /* R6578 */
+    0x0000,     /* R6579 */
+    0x0000,     /* R6580 */
+    0x0000,     /* R6581 */
+    0x0000,     /* R6582 */
+    0x0000,     /* R6583 */
+    0x0000,     /* R6584 */
+    0x0000,     /* R6585 */
+    0x0000,     /* R6586 */
+    0x0000,     /* R6587 */
+    0x0000,     /* R6588 */
+    0x0000,     /* R6589 */
+    0x0000,     /* R6590 */
+    0x0000,     /* R6591 */
+    0x0000,     /* R6592 */
+    0x0000,     /* R6593 */
+    0x0000,     /* R6594 */
+    0x0000,     /* R6595 */
+    0x0000,     /* R6596 */
+    0x0000,     /* R6597 */
+    0x0000,     /* R6598 */
+    0x0000,     /* R6599 */
+    0x0000,     /* R6600 */
+    0x0000,     /* R6601 */
+    0x0000,     /* R6602 */
+    0x0000,     /* R6603 */
+    0x0000,     /* R6604 */
+    0x0000,     /* R6605 */
+    0x0000,     /* R6606 */
+    0x0000,     /* R6607 */
+    0x0000,     /* R6608 */
+    0x0000,     /* R6609 */
+    0x0000,     /* R6610 */
+    0x0000,     /* R6611 */
+    0x0000,     /* R6612 */
+    0x0000,     /* R6613 */
+    0x0000,     /* R6614 */
+    0x0000,     /* R6615 */
+    0x0000,     /* R6616 */
+    0x0000,     /* R6617 */
+    0x0000,     /* R6618 */
+    0x0000,     /* R6619 */
+    0x0000,     /* R6620 */
+    0x0000,     /* R6621 */
+    0x0000,     /* R6622 */
+    0x0000,     /* R6623 */
+    0x0000,     /* R6624 */
+    0x0000,     /* R6625 */
+    0x0000,     /* R6626 */
+    0x0000,     /* R6627 */
+    0x0000,     /* R6628 */
+    0x0000,     /* R6629 */
+    0x0000,     /* R6630 */
+    0x0000,     /* R6631 */
+    0x0000,     /* R6632 */
+    0x0000,     /* R6633 */
+    0x0000,     /* R6634 */
+    0x0000,     /* R6635 */
+    0x0000,     /* R6636 */
+    0x0000,     /* R6637 */
+    0x0000,     /* R6638 */
+    0x0000,     /* R6639 */
+    0x0000,     /* R6640 */
+    0x0000,     /* R6641 */
+    0x0000,     /* R6642 */
+    0x0000,     /* R6643 */
+    0x0000,     /* R6644 */
+    0x0000,     /* R6645 */
+    0x0000,     /* R6646 */
+    0x0000,     /* R6647 */
+    0x0000,     /* R6648 */
+    0x0000,     /* R6649 */
+    0x0000,     /* R6650 */
+    0x0000,     /* R6651 */
+    0x0000,     /* R6652 */
+    0x0000,     /* R6653 */
+    0x0000,     /* R6654 */
+    0x0000,     /* R6655 */
+    0x0000,     /* R6656 */
+    0x0000,     /* R6657 */
+    0x0000,     /* R6658 */
+    0x0000,     /* R6659 */
+    0x0000,     /* R6660 */
+    0x0000,     /* R6661 */
+    0x0000,     /* R6662 */
+    0x0000,     /* R6663 */
+    0x0000,     /* R6664 */
+    0x0000,     /* R6665 */
+    0x0000,     /* R6666 */
+    0x0000,     /* R6667 */
+    0x0000,     /* R6668 */
+    0x0000,     /* R6669 */
+    0x0000,     /* R6670 */
+    0x0000,     /* R6671 */
+    0x0000,     /* R6672 */
+    0x0000,     /* R6673 */
+    0x0000,     /* R6674 */
+    0x0000,     /* R6675 */
+    0x0000,     /* R6676 */
+    0x0000,     /* R6677 */
+    0x0000,     /* R6678 */
+    0x0000,     /* R6679 */
+    0x0000,     /* R6680 */
+    0x0000,     /* R6681 */
+    0x0000,     /* R6682 */
+    0x0000,     /* R6683 */
+    0x0000,     /* R6684 */
+    0x0000,     /* R6685 */
+    0x0000,     /* R6686 */
+    0x0000,     /* R6687 */
+    0x0000,     /* R6688 */
+    0x0000,     /* R6689 */
+    0x0000,     /* R6690 */
+    0x0000,     /* R6691 */
+    0x0000,     /* R6692 */
+    0x0000,     /* R6693 */
+    0x0000,     /* R6694 */
+    0x0000,     /* R6695 */
+    0x0000,     /* R6696 */
+    0x0000,     /* R6697 */
+    0x0000,     /* R6698 */
+    0x0000,     /* R6699 */
+    0x0000,     /* R6700 */
+    0x0000,     /* R6701 */
+    0x0000,     /* R6702 */
+    0x0000,     /* R6703 */
+    0x0000,     /* R6704 */
+    0x0000,     /* R6705 */
+    0x0000,     /* R6706 */
+    0x0000,     /* R6707 */
+    0x0000,     /* R6708 */
+    0x0000,     /* R6709 */
+    0x0000,     /* R6710 */
+    0x0000,     /* R6711 */
+    0x0000,     /* R6712 */
+    0x0000,     /* R6713 */
+    0x0000,     /* R6714 */
+    0x0000,     /* R6715 */
+    0x0000,     /* R6716 */
+    0x0000,     /* R6717 */
+    0x0000,     /* R6718 */
+    0x0000,     /* R6719 */
+    0x0000,     /* R6720 */
+    0x0000,     /* R6721 */
+    0x0000,     /* R6722 */
+    0x0000,     /* R6723 */
+    0x0000,     /* R6724 */
+    0x0000,     /* R6725 */
+    0x0000,     /* R6726 */
+    0x0000,     /* R6727 */
+    0x0000,     /* R6728 */
+    0x0000,     /* R6729 */
+    0x0000,     /* R6730 */
+    0x0000,     /* R6731 */
+    0x0000,     /* R6732 */
+    0x0000,     /* R6733 */
+    0x0000,     /* R6734 */
+    0x0000,     /* R6735 */
+    0x0000,     /* R6736 */
+    0x0000,     /* R6737 */
+    0x0000,     /* R6738 */
+    0x0000,     /* R6739 */
+    0x0000,     /* R6740 */
+    0x0000,     /* R6741 */
+    0x0000,     /* R6742 */
+    0x0000,     /* R6743 */
+    0x0000,     /* R6744 */
+    0x0000,     /* R6745 */
+    0x0000,     /* R6746 */
+    0x0000,     /* R6747 */
+    0x0000,     /* R6748 */
+    0x0000,     /* R6749 */
+    0x0000,     /* R6750 */
+    0x0000,     /* R6751 */
+    0x0000,     /* R6752 */
+    0x0000,     /* R6753 */
+    0x0000,     /* R6754 */
+    0x0000,     /* R6755 */
+    0x0000,     /* R6756 */
+    0x0000,     /* R6757 */
+    0x0000,     /* R6758 */
+    0x0000,     /* R6759 */
+    0x0000,     /* R6760 */
+    0x0000,     /* R6761 */
+    0x0000,     /* R6762 */
+    0x0000,     /* R6763 */
+    0x0000,     /* R6764 */
+    0x0000,     /* R6765 */
+    0x0000,     /* R6766 */
+    0x0000,     /* R6767 */
+    0x0000,     /* R6768 */
+    0x0000,     /* R6769 */
+    0x0000,     /* R6770 */
+    0x0000,     /* R6771 */
+    0x0000,     /* R6772 */
+    0x0000,     /* R6773 */
+    0x0000,     /* R6774 */
+    0x0000,     /* R6775 */
+    0x0000,     /* R6776 */
+    0x0000,     /* R6777 */
+    0x0000,     /* R6778 */
+    0x0000,     /* R6779 */
+    0x0000,     /* R6780 */
+    0x0000,     /* R6781 */
+    0x0000,     /* R6782 */
+    0x0000,     /* R6783 */
+    0x0000,     /* R6784 */
+    0x0000,     /* R6785 */
+    0x0000,     /* R6786 */
+    0x0000,     /* R6787 */
+    0x0000,     /* R6788 */
+    0x0000,     /* R6789 */
+    0x0000,     /* R6790 */
+    0x0000,     /* R6791 */
+    0x0000,     /* R6792 */
+    0x0000,     /* R6793 */
+    0x0000,     /* R6794 */
+    0x0000,     /* R6795 */
+    0x0000,     /* R6796 */
+    0x0000,     /* R6797 */
+    0x0000,     /* R6798 */
+    0x0000,     /* R6799 */
+    0x0000,     /* R6800 */
+    0x0000,     /* R6801 */
+    0x0000,     /* R6802 */
+    0x0000,     /* R6803 */
+    0x0000,     /* R6804 */
+    0x0000,     /* R6805 */
+    0x0000,     /* R6806 */
+    0x0000,     /* R6807 */
+    0x0000,     /* R6808 */
+    0x0000,     /* R6809 */
+    0x0000,     /* R6810 */
+    0x0000,     /* R6811 */
+    0x0000,     /* R6812 */
+    0x0000,     /* R6813 */
+    0x0000,     /* R6814 */
+    0x0000,     /* R6815 */
+    0x0000,     /* R6816 */
+    0x0000,     /* R6817 */
+    0x0000,     /* R6818 */
+    0x0000,     /* R6819 */
+    0x0000,     /* R6820 */
+    0x0000,     /* R6821 */
+    0x0000,     /* R6822 */
+    0x0000,     /* R6823 */
+    0x0000,     /* R6824 */
+    0x0000,     /* R6825 */
+    0x0000,     /* R6826 */
+    0x0000,     /* R6827 */
+    0x0000,     /* R6828 */
+    0x0000,     /* R6829 */
+    0x0000,     /* R6830 */
+    0x0000,     /* R6831 */
+    0x0000,     /* R6832 */
+    0x0000,     /* R6833 */
+    0x0000,     /* R6834 */
+    0x0000,     /* R6835 */
+    0x0000,     /* R6836 */
+    0x0000,     /* R6837 */
+    0x0000,     /* R6838 */
+    0x0000,     /* R6839 */
+    0x0000,     /* R6840 */
+    0x0000,     /* R6841 */
+    0x0000,     /* R6842 */
+    0x0000,     /* R6843 */
+    0x0000,     /* R6844 */
+    0x0000,     /* R6845 */
+    0x0000,     /* R6846 */
+    0x0000,     /* R6847 */
+    0x0000,     /* R6848 */
+    0x0000,     /* R6849 */
+    0x0000,     /* R6850 */
+    0x0000,     /* R6851 */
+    0x0000,     /* R6852 */
+    0x0000,     /* R6853 */
+    0x0000,     /* R6854 */
+    0x0000,     /* R6855 */
+    0x0000,     /* R6856 */
+    0x0000,     /* R6857 */
+    0x0000,     /* R6858 */
+    0x0000,     /* R6859 */
+    0x0000,     /* R6860 */
+    0x0000,     /* R6861 */
+    0x0000,     /* R6862 */
+    0x0000,     /* R6863 */
+    0x0000,     /* R6864 */
+    0x0000,     /* R6865 */
+    0x0000,     /* R6866 */
+    0x0000,     /* R6867 */
+    0x0000,     /* R6868 */
+    0x0000,     /* R6869 */
+    0x0000,     /* R6870 */
+    0x0000,     /* R6871 */
+    0x0000,     /* R6872 */
+    0x0000,     /* R6873 */
+    0x0000,     /* R6874 */
+    0x0000,     /* R6875 */
+    0x0000,     /* R6876 */
+    0x0000,     /* R6877 */
+    0x0000,     /* R6878 */
+    0x0000,     /* R6879 */
+    0x0000,     /* R6880 */
+    0x0000,     /* R6881 */
+    0x0000,     /* R6882 */
+    0x0000,     /* R6883 */
+    0x0000,     /* R6884 */
+    0x0000,     /* R6885 */
+    0x0000,     /* R6886 */
+    0x0000,     /* R6887 */
+    0x0000,     /* R6888 */
+    0x0000,     /* R6889 */
+    0x0000,     /* R6890 */
+    0x0000,     /* R6891 */
+    0x0000,     /* R6892 */
+    0x0000,     /* R6893 */
+    0x0000,     /* R6894 */
+    0x0000,     /* R6895 */
+    0x0000,     /* R6896 */
+    0x0000,     /* R6897 */
+    0x0000,     /* R6898 */
+    0x0000,     /* R6899 */
+    0x0000,     /* R6900 */
+    0x0000,     /* R6901 */
+    0x0000,     /* R6902 */
+    0x0000,     /* R6903 */
+    0x0000,     /* R6904 */
+    0x0000,     /* R6905 */
+    0x0000,     /* R6906 */
+    0x0000,     /* R6907 */
+    0x0000,     /* R6908 */
+    0x0000,     /* R6909 */
+    0x0000,     /* R6910 */
+    0x0000,     /* R6911 */
+    0x0000,     /* R6912 */
+    0x0000,     /* R6913 */
+    0x0000,     /* R6914 */
+    0x0000,     /* R6915 */
+    0x0000,     /* R6916 */
+    0x0000,     /* R6917 */
+    0x0000,     /* R6918 */
+    0x0000,     /* R6919 */
+    0x0000,     /* R6920 */
+    0x0000,     /* R6921 */
+    0x0000,     /* R6922 */
+    0x0000,     /* R6923 */
+    0x0000,     /* R6924 */
+    0x0000,     /* R6925 */
+    0x0000,     /* R6926 */
+    0x0000,     /* R6927 */
+    0x0000,     /* R6928 */
+    0x0000,     /* R6929 */
+    0x0000,     /* R6930 */
+    0x0000,     /* R6931 */
+    0x0000,     /* R6932 */
+    0x0000,     /* R6933 */
+    0x0000,     /* R6934 */
+    0x0000,     /* R6935 */
+    0x0000,     /* R6936 */
+    0x0000,     /* R6937 */
+    0x0000,     /* R6938 */
+    0x0000,     /* R6939 */
+    0x0000,     /* R6940 */
+    0x0000,     /* R6941 */
+    0x0000,     /* R6942 */
+    0x0000,     /* R6943 */
+    0x0000,     /* R6944 */
+    0x0000,     /* R6945 */
+    0x0000,     /* R6946 */
+    0x0000,     /* R6947 */
+    0x0000,     /* R6948 */
+    0x0000,     /* R6949 */
+    0x0000,     /* R6950 */
+    0x0000,     /* R6951 */
+    0x0000,     /* R6952 */
+    0x0000,     /* R6953 */
+    0x0000,     /* R6954 */
+    0x0000,     /* R6955 */
+    0x0000,     /* R6956 */
+    0x0000,     /* R6957 */
+    0x0000,     /* R6958 */
+    0x0000,     /* R6959 */
+    0x0000,     /* R6960 */
+    0x0000,     /* R6961 */
+    0x0000,     /* R6962 */
+    0x0000,     /* R6963 */
+    0x0000,     /* R6964 */
+    0x0000,     /* R6965 */
+    0x0000,     /* R6966 */
+    0x0000,     /* R6967 */
+    0x0000,     /* R6968 */
+    0x0000,     /* R6969 */
+    0x0000,     /* R6970 */
+    0x0000,     /* R6971 */
+    0x0000,     /* R6972 */
+    0x0000,     /* R6973 */
+    0x0000,     /* R6974 */
+    0x0000,     /* R6975 */
+    0x0000,     /* R6976 */
+    0x0000,     /* R6977 */
+    0x0000,     /* R6978 */
+    0x0000,     /* R6979 */
+    0x0000,     /* R6980 */
+    0x0000,     /* R6981 */
+    0x0000,     /* R6982 */
+    0x0000,     /* R6983 */
+    0x0000,     /* R6984 */
+    0x0000,     /* R6985 */
+    0x0000,     /* R6986 */
+    0x0000,     /* R6987 */
+    0x0000,     /* R6988 */
+    0x0000,     /* R6989 */
+    0x0000,     /* R6990 */
+    0x0000,     /* R6991 */
+    0x0000,     /* R6992 */
+    0x0000,     /* R6993 */
+    0x0000,     /* R6994 */
+    0x0000,     /* R6995 */
+    0x0000,     /* R6996 */
+    0x0000,     /* R6997 */
+    0x0000,     /* R6998 */
+    0x0000,     /* R6999 */
+    0x0000,     /* R7000 */
+    0x0000,     /* R7001 */
+    0x0000,     /* R7002 */
+    0x0000,     /* R7003 */
+    0x0000,     /* R7004 */
+    0x0000,     /* R7005 */
+    0x0000,     /* R7006 */
+    0x0000,     /* R7007 */
+    0x0000,     /* R7008 */
+    0x0000,     /* R7009 */
+    0x0000,     /* R7010 */
+    0x0000,     /* R7011 */
+    0x0000,     /* R7012 */
+    0x0000,     /* R7013 */
+    0x0000,     /* R7014 */
+    0x0000,     /* R7015 */
+    0x0000,     /* R7016 */
+    0x0000,     /* R7017 */
+    0x0000,     /* R7018 */
+    0x0000,     /* R7019 */
+    0x0000,     /* R7020 */
+    0x0000,     /* R7021 */
+    0x0000,     /* R7022 */
+    0x0000,     /* R7023 */
+    0x0000,     /* R7024 */
+    0x0000,     /* R7025 */
+    0x0000,     /* R7026 */
+    0x0000,     /* R7027 */
+    0x0000,     /* R7028 */
+    0x0000,     /* R7029 */
+    0x0000,     /* R7030 */
+    0x0000,     /* R7031 */
+    0x0000,     /* R7032 */
+    0x0000,     /* R7033 */
+    0x0000,     /* R7034 */
+    0x0000,     /* R7035 */
+    0x0000,     /* R7036 */
+    0x0000,     /* R7037 */
+    0x0000,     /* R7038 */
+    0x0000,     /* R7039 */
+    0x0000,     /* R7040 */
+    0x0000,     /* R7041 */
+    0x0000,     /* R7042 */
+    0x0000,     /* R7043 */
+    0x0000,     /* R7044 */
+    0x0000,     /* R7045 */
+    0x0000,     /* R7046 */
+    0x0000,     /* R7047 */
+    0x0000,     /* R7048 */
+    0x0000,     /* R7049 */
+    0x0000,     /* R7050 */
+    0x0000,     /* R7051 */
+    0x0000,     /* R7052 */
+    0x0000,     /* R7053 */
+    0x0000,     /* R7054 */
+    0x0000,     /* R7055 */
+    0x0000,     /* R7056 */
+    0x0000,     /* R7057 */
+    0x0000,     /* R7058 */
+    0x0000,     /* R7059 */
+    0x0000,     /* R7060 */
+    0x0000,     /* R7061 */
+    0x0000,     /* R7062 */
+    0x0000,     /* R7063 */
+    0x0000,     /* R7064 */
+    0x0000,     /* R7065 */
+    0x0000,     /* R7066 */
+    0x0000,     /* R7067 */
+    0x0000,     /* R7068 */
+    0x0000,     /* R7069 */
+    0x0000,     /* R7070 */
+    0x0000,     /* R7071 */
+    0x0000,     /* R7072 */
+    0x0000,     /* R7073 */
+    0x0000,     /* R7074 */
+    0x0000,     /* R7075 */
+    0x0000,     /* R7076 */
+    0x0000,     /* R7077 */
+    0x0000,     /* R7078 */
+    0x0000,     /* R7079 */
+    0x0000,     /* R7080 */
+    0x0000,     /* R7081 */
+    0x0000,     /* R7082 */
+    0x0000,     /* R7083 */
+    0x0000,     /* R7084 */
+    0x0000,     /* R7085 */
+    0x0000,     /* R7086 */
+    0x0000,     /* R7087 */
+    0x0000,     /* R7088 */
+    0x0000,     /* R7089 */
+    0x0000,     /* R7090 */
+    0x0000,     /* R7091 */
+    0x0000,     /* R7092 */
+    0x0000,     /* R7093 */
+    0x0000,     /* R7094 */
+    0x0000,     /* R7095 */
+    0x0000,     /* R7096 */
+    0x0000,     /* R7097 */
+    0x0000,     /* R7098 */
+    0x0000,     /* R7099 */
+    0x0000,     /* R7100 */
+    0x0000,     /* R7101 */
+    0x0000,     /* R7102 */
+    0x0000,     /* R7103 */
+    0x0000,     /* R7104 */
+    0x0000,     /* R7105 */
+    0x0000,     /* R7106 */
+    0x0000,     /* R7107 */
+    0x0000,     /* R7108 */
+    0x0000,     /* R7109 */
+    0x0000,     /* R7110 */
+    0x0000,     /* R7111 */
+    0x0000,     /* R7112 */
+    0x0000,     /* R7113 */
+    0x0000,     /* R7114 */
+    0x0000,     /* R7115 */
+    0x0000,     /* R7116 */
+    0x0000,     /* R7117 */
+    0x0000,     /* R7118 */
+    0x0000,     /* R7119 */
+    0x0000,     /* R7120 */
+    0x0000,     /* R7121 */
+    0x0000,     /* R7122 */
+    0x0000,     /* R7123 */
+    0x0000,     /* R7124 */
+    0x0000,     /* R7125 */
+    0x0000,     /* R7126 */
+    0x0000,     /* R7127 */
+    0x0000,     /* R7128 */
+    0x0000,     /* R7129 */
+    0x0000,     /* R7130 */
+    0x0000,     /* R7131 */
+    0x0000,     /* R7132 */
+    0x0000,     /* R7133 */
+    0x0000,     /* R7134 */
+    0x0000,     /* R7135 */
+    0x0000,     /* R7136 */
+    0x0000,     /* R7137 */
+    0x0000,     /* R7138 */
+    0x0000,     /* R7139 */
+    0x0000,     /* R7140 */
+    0x0000,     /* R7141 */
+    0x0000,     /* R7142 */
+    0x0000,     /* R7143 */
+    0x0000,     /* R7144 */
+    0x0000,     /* R7145 */
+    0x0000,     /* R7146 */
+    0x0000,     /* R7147 */
+    0x0000,     /* R7148 */
+    0x0000,     /* R7149 */
+    0x0000,     /* R7150 */
+    0x0000,     /* R7151 */
+    0x0000,     /* R7152 */
+    0x0000,     /* R7153 */
+    0x0000,     /* R7154 */
+    0x0000,     /* R7155 */
+    0x0000,     /* R7156 */
+    0x0000,     /* R7157 */
+    0x0000,     /* R7158 */
+    0x0000,     /* R7159 */
+    0x0000,     /* R7160 */
+    0x0000,     /* R7161 */
+    0x0000,     /* R7162 */
+    0x0000,     /* R7163 */
+    0x0000,     /* R7164 */
+    0x0000,     /* R7165 */
+    0x0000,     /* R7166 */
+    0x0000,     /* R7167 */
+    0x0000,     /* R7168 */
+    0x0000,     /* R7169 */
+    0x0000,     /* R7170 */
+    0x0000,     /* R7171 */
+    0x0000,     /* R7172 */
+    0x0000,     /* R7173 */
+    0x0000,     /* R7174 */
+    0x0000,     /* R7175 */
+    0x0000,     /* R7176 */
+    0x0000,     /* R7177 */
+    0x0000,     /* R7178 */
+    0x0000,     /* R7179 */
+    0x0000,     /* R7180 */
+    0x0000,     /* R7181 */
+    0x0000,     /* R7182 */
+    0x0000,     /* R7183 */
+    0x0000,     /* R7184 */
+    0x0000,     /* R7185 */
+    0x0000,     /* R7186 */
+    0x0000,     /* R7187 */
+    0x0000,     /* R7188 */
+    0x0000,     /* R7189 */
+    0x0000,     /* R7190 */
+    0x0000,     /* R7191 */
+    0x0000,     /* R7192 */
+    0x0000,     /* R7193 */
+    0x0000,     /* R7194 */
+    0x0000,     /* R7195 */
+    0x0000,     /* R7196 */
+    0x0000,     /* R7197 */
+    0x0000,     /* R7198 */
+    0x0000,     /* R7199 */
+    0x0000,     /* R7200 */
+    0x0000,     /* R7201 */
+    0x0000,     /* R7202 */
+    0x0000,     /* R7203 */
+    0x0000,     /* R7204 */
+    0x0000,     /* R7205 */
+    0x0000,     /* R7206 */
+    0x0000,     /* R7207 */
+    0x0000,     /* R7208 */
+    0x0000,     /* R7209 */
+    0x0000,     /* R7210 */
+    0x0000,     /* R7211 */
+    0x0000,     /* R7212 */
+    0x0000,     /* R7213 */
+    0x0000,     /* R7214 */
+    0x0000,     /* R7215 */
+    0x0000,     /* R7216 */
+    0x0000,     /* R7217 */
+    0x0000,     /* R7218 */
+    0x0000,     /* R7219 */
+    0x0000,     /* R7220 */
+    0x0000,     /* R7221 */
+    0x0000,     /* R7222 */
+    0x0000,     /* R7223 */
+    0x0000,     /* R7224 */
+    0x0000,     /* R7225 */
+    0x0000,     /* R7226 */
+    0x0000,     /* R7227 */
+    0x0000,     /* R7228 */
+    0x0000,     /* R7229 */
+    0x0000,     /* R7230 */
+    0x0000,     /* R7231 */
+    0x0000,     /* R7232 */
+    0x0000,     /* R7233 */
+    0x0000,     /* R7234 */
+    0x0000,     /* R7235 */
+    0x0000,     /* R7236 */
+    0x0000,     /* R7237 */
+    0x0000,     /* R7238 */
+    0x0000,     /* R7239 */
+    0x0000,     /* R7240 */
+    0x0000,     /* R7241 */
+    0x0000,     /* R7242 */
+    0x0000,     /* R7243 */
+    0x0000,     /* R7244 */
+    0x0000,     /* R7245 */
+    0x0000,     /* R7246 */
+    0x0000,     /* R7247 */
+    0x0000,     /* R7248 */
+    0x0000,     /* R7249 */
+    0x0000,     /* R7250 */
+    0x0000,     /* R7251 */
+    0x0000,     /* R7252 */
+    0x0000,     /* R7253 */
+    0x0000,     /* R7254 */
+    0x0000,     /* R7255 */
+    0x0000,     /* R7256 */
+    0x0000,     /* R7257 */
+    0x0000,     /* R7258 */
+    0x0000,     /* R7259 */
+    0x0000,     /* R7260 */
+    0x0000,     /* R7261 */
+    0x0000,     /* R7262 */
+    0x0000,     /* R7263 */
+    0x0000,     /* R7264 */
+    0x0000,     /* R7265 */
+    0x0000,     /* R7266 */
+    0x0000,     /* R7267 */
+    0x0000,     /* R7268 */
+    0x0000,     /* R7269 */
+    0x0000,     /* R7270 */
+    0x0000,     /* R7271 */
+    0x0000,     /* R7272 */
+    0x0000,     /* R7273 */
+    0x0000,     /* R7274 */
+    0x0000,     /* R7275 */
+    0x0000,     /* R7276 */
+    0x0000,     /* R7277 */
+    0x0000,     /* R7278 */
+    0x0000,     /* R7279 */
+    0x0000,     /* R7280 */
+    0x0000,     /* R7281 */
+    0x0000,     /* R7282 */
+    0x0000,     /* R7283 */
+    0x0000,     /* R7284 */
+    0x0000,     /* R7285 */
+    0x0000,     /* R7286 */
+    0x0000,     /* R7287 */
+    0x0000,     /* R7288 */
+    0x0000,     /* R7289 */
+    0x0000,     /* R7290 */
+    0x0000,     /* R7291 */
+    0x0000,     /* R7292 */
+    0x0000,     /* R7293 */
+    0x0000,     /* R7294 */
+    0x0000,     /* R7295 */
+    0x0000,     /* R7296 */
+    0x0000,     /* R7297 */
+    0x0000,     /* R7298 */
+    0x0000,     /* R7299 */
+    0x0000,     /* R7300 */
+    0x0000,     /* R7301 */
+    0x0000,     /* R7302 */
+    0x0000,     /* R7303 */
+    0x0000,     /* R7304 */
+    0x0000,     /* R7305 */
+    0x0000,     /* R7306 */
+    0x0000,     /* R7307 */
+    0x0000,     /* R7308 */
+    0x0000,     /* R7309 */
+    0x0000,     /* R7310 */
+    0x0000,     /* R7311 */
+    0x0000,     /* R7312 */
+    0x0000,     /* R7313 */
+    0x0000,     /* R7314 */
+    0x0000,     /* R7315 */
+    0x0000,     /* R7316 */
+    0x0000,     /* R7317 */
+    0x0000,     /* R7318 */
+    0x0000,     /* R7319 */
+    0x0000,     /* R7320 */
+    0x0000,     /* R7321 */
+    0x0000,     /* R7322 */
+    0x0000,     /* R7323 */
+    0x0000,     /* R7324 */
+    0x0000,     /* R7325 */
+    0x0000,     /* R7326 */
+    0x0000,     /* R7327 */
+    0x0000,     /* R7328 */
+    0x0000,     /* R7329 */
+    0x0000,     /* R7330 */
+    0x0000,     /* R7331 */
+    0x0000,     /* R7332 */
+    0x0000,     /* R7333 */
+    0x0000,     /* R7334 */
+    0x0000,     /* R7335 */
+    0x0000,     /* R7336 */
+    0x0000,     /* R7337 */
+    0x0000,     /* R7338 */
+    0x0000,     /* R7339 */
+    0x0000,     /* R7340 */
+    0x0000,     /* R7341 */
+    0x0000,     /* R7342 */
+    0x0000,     /* R7343 */
+    0x0000,     /* R7344 */
+    0x0000,     /* R7345 */
+    0x0000,     /* R7346 */
+    0x0000,     /* R7347 */
+    0x0000,     /* R7348 */
+    0x0000,     /* R7349 */
+    0x0000,     /* R7350 */
+    0x0000,     /* R7351 */
+    0x0000,     /* R7352 */
+    0x0000,     /* R7353 */
+    0x0000,     /* R7354 */
+    0x0000,     /* R7355 */
+    0x0000,     /* R7356 */
+    0x0000,     /* R7357 */
+    0x0000,     /* R7358 */
+    0x0000,     /* R7359 */
+    0x0000,     /* R7360 */
+    0x0000,     /* R7361 */
+    0x0000,     /* R7362 */
+    0x0000,     /* R7363 */
+    0x0000,     /* R7364 */
+    0x0000,     /* R7365 */
+    0x0000,     /* R7366 */
+    0x0000,     /* R7367 */
+    0x0000,     /* R7368 */
+    0x0000,     /* R7369 */
+    0x0000,     /* R7370 */
+    0x0000,     /* R7371 */
+    0x0000,     /* R7372 */
+    0x0000,     /* R7373 */
+    0x0000,     /* R7374 */
+    0x0000,     /* R7375 */
+    0x0000,     /* R7376 */
+    0x0000,     /* R7377 */
+    0x0000,     /* R7378 */
+    0x0000,     /* R7379 */
+    0x0000,     /* R7380 */
+    0x0000,     /* R7381 */
+    0x0000,     /* R7382 */
+    0x0000,     /* R7383 */
+    0x0000,     /* R7384 */
+    0x0000,     /* R7385 */
+    0x0000,     /* R7386 */
+    0x0000,     /* R7387 */
+    0x0000,     /* R7388 */
+    0x0000,     /* R7389 */
+    0x0000,     /* R7390 */
+    0x0000,     /* R7391 */
+    0x0000,     /* R7392 */
+    0x0000,     /* R7393 */
+    0x0000,     /* R7394 */
+    0x0000,     /* R7395 */
+    0x0000,     /* R7396 */
+    0x0000,     /* R7397 */
+    0x0000,     /* R7398 */
+    0x0000,     /* R7399 */
+    0x0000,     /* R7400 */
+    0x0000,     /* R7401 */
+    0x0000,     /* R7402 */
+    0x0000,     /* R7403 */
+    0x0000,     /* R7404 */
+    0x0000,     /* R7405 */
+    0x0000,     /* R7406 */
+    0x0000,     /* R7407 */
+    0x0000,     /* R7408 */
+    0x0000,     /* R7409 */
+    0x0000,     /* R7410 */
+    0x0000,     /* R7411 */
+    0x0000,     /* R7412 */
+    0x0000,     /* R7413 */
+    0x0000,     /* R7414 */
+    0x0000,     /* R7415 */
+    0x0000,     /* R7416 */
+    0x0000,     /* R7417 */
+    0x0000,     /* R7418 */
+    0x0000,     /* R7419 */
+    0x0000,     /* R7420 */
+    0x0000,     /* R7421 */
+    0x0000,     /* R7422 */
+    0x0000,     /* R7423 */
+    0x0000,     /* R7424 */
+    0x0000,     /* R7425 */
+    0x0000,     /* R7426 */
+    0x0000,     /* R7427 */
+    0x0000,     /* R7428 */
+    0x0000,     /* R7429 */
+    0x0000,     /* R7430 */
+    0x0000,     /* R7431 */
+    0x0000,     /* R7432 */
+    0x0000,     /* R7433 */
+    0x0000,     /* R7434 */
+    0x0000,     /* R7435 */
+    0x0000,     /* R7436 */
+    0x0000,     /* R7437 */
+    0x0000,     /* R7438 */
+    0x0000,     /* R7439 */
+    0x0000,     /* R7440 */
+    0x0000,     /* R7441 */
+    0x0000,     /* R7442 */
+    0x0000,     /* R7443 */
+    0x0000,     /* R7444 */
+    0x0000,     /* R7445 */
+    0x0000,     /* R7446 */
+    0x0000,     /* R7447 */
+    0x0000,     /* R7448 */
+    0x0000,     /* R7449 */
+    0x0000,     /* R7450 */
+    0x0000,     /* R7451 */
+    0x0000,     /* R7452 */
+    0x0000,     /* R7453 */
+    0x0000,     /* R7454 */
+    0x0000,     /* R7455 */
+    0x0000,     /* R7456 */
+    0x0000,     /* R7457 */
+    0x0000,     /* R7458 */
+    0x0000,     /* R7459 */
+    0x0000,     /* R7460 */
+    0x0000,     /* R7461 */
+    0x0000,     /* R7462 */
+    0x0000,     /* R7463 */
+    0x0000,     /* R7464 */
+    0x0000,     /* R7465 */
+    0x0000,     /* R7466 */
+    0x0000,     /* R7467 */
+    0x0000,     /* R7468 */
+    0x0000,     /* R7469 */
+    0x0000,     /* R7470 */
+    0x0000,     /* R7471 */
+    0x0000,     /* R7472 */
+    0x0000,     /* R7473 */
+    0x0000,     /* R7474 */
+    0x0000,     /* R7475 */
+    0x0000,     /* R7476 */
+    0x0000,     /* R7477 */
+    0x0000,     /* R7478 */
+    0x0000,     /* R7479 */
+    0x0000,     /* R7480 */
+    0x0000,     /* R7481 */
+    0x0000,     /* R7482 */
+    0x0000,     /* R7483 */
+    0x0000,     /* R7484 */
+    0x0000,     /* R7485 */
+    0x0000,     /* R7486 */
+    0x0000,     /* R7487 */
+    0x0000,     /* R7488 */
+    0x0000,     /* R7489 */
+    0x0000,     /* R7490 */
+    0x0000,     /* R7491 */
+    0x0000,     /* R7492 */
+    0x0000,     /* R7493 */
+    0x0000,     /* R7494 */
+    0x0000,     /* R7495 */
+    0x0000,     /* R7496 */
+    0x0000,     /* R7497 */
+    0x0000,     /* R7498 */
+    0x0000,     /* R7499 */
+    0x0000,     /* R7500 */
+    0x0000,     /* R7501 */
+    0x0000,     /* R7502 */
+    0x0000,     /* R7503 */
+    0x0000,     /* R7504 */
+    0x0000,     /* R7505 */
+    0x0000,     /* R7506 */
+    0x0000,     /* R7507 */
+    0x0000,     /* R7508 */
+    0x0000,     /* R7509 */
+    0x0000,     /* R7510 */
+    0x0000,     /* R7511 */
+    0x0000,     /* R7512 */
+    0x0000,     /* R7513 */
+    0x0000,     /* R7514 */
+    0x0000,     /* R7515 */
+    0x0000,     /* R7516 */
+    0x0000,     /* R7517 */
+    0x0000,     /* R7518 */
+    0x0000,     /* R7519 */
+    0x0000,     /* R7520 */
+    0x0000,     /* R7521 */
+    0x0000,     /* R7522 */
+    0x0000,     /* R7523 */
+    0x0000,     /* R7524 */
+    0x0000,     /* R7525 */
+    0x0000,     /* R7526 */
+    0x0000,     /* R7527 */
+    0x0000,     /* R7528 */
+    0x0000,     /* R7529 */
+    0x0000,     /* R7530 */
+    0x0000,     /* R7531 */
+    0x0000,     /* R7532 */
+    0x0000,     /* R7533 */
+    0x0000,     /* R7534 */
+    0x0000,     /* R7535 */
+    0x0000,     /* R7536 */
+    0x0000,     /* R7537 */
+    0x0000,     /* R7538 */
+    0x0000,     /* R7539 */
+    0x0000,     /* R7540 */
+    0x0000,     /* R7541 */
+    0x0000,     /* R7542 */
+    0x0000,     /* R7543 */
+    0x0000,     /* R7544 */
+    0x0000,     /* R7545 */
+    0x0000,     /* R7546 */
+    0x0000,     /* R7547 */
+    0x0000,     /* R7548 */
+    0x0000,     /* R7549 */
+    0x0000,     /* R7550 */
+    0x0000,     /* R7551 */
+    0x0000,     /* R7552 */
+    0x0000,     /* R7553 */
+    0x0000,     /* R7554 */
+    0x0000,     /* R7555 */
+    0x0000,     /* R7556 */
+    0x0000,     /* R7557 */
+    0x0000,     /* R7558 */
+    0x0000,     /* R7559 */
+    0x0000,     /* R7560 */
+    0x0000,     /* R7561 */
+    0x0000,     /* R7562 */
+    0x0000,     /* R7563 */
+    0x0000,     /* R7564 */
+    0x0000,     /* R7565 */
+    0x0000,     /* R7566 */
+    0x0000,     /* R7567 */
+    0x0000,     /* R7568 */
+    0x0000,     /* R7569 */
+    0x0000,     /* R7570 */
+    0x0000,     /* R7571 */
+    0x0000,     /* R7572 */
+    0x0000,     /* R7573 */
+    0x0000,     /* R7574 */
+    0x0000,     /* R7575 */
+    0x0000,     /* R7576 */
+    0x0000,     /* R7577 */
+    0x0000,     /* R7578 */
+    0x0000,     /* R7579 */
+    0x0000,     /* R7580 */
+    0x0000,     /* R7581 */
+    0x0000,     /* R7582 */
+    0x0000,     /* R7583 */
+    0x0000,     /* R7584 */
+    0x0000,     /* R7585 */
+    0x0000,     /* R7586 */
+    0x0000,     /* R7587 */
+    0x0000,     /* R7588 */
+    0x0000,     /* R7589 */
+    0x0000,     /* R7590 */
+    0x0000,     /* R7591 */
+    0x0000,     /* R7592 */
+    0x0000,     /* R7593 */
+    0x0000,     /* R7594 */
+    0x0000,     /* R7595 */
+    0x0000,     /* R7596 */
+    0x0000,     /* R7597 */
+    0x0000,     /* R7598 */
+    0x0000,     /* R7599 */
+    0x0000,     /* R7600 */
+    0x0000,     /* R7601 */
+    0x0000,     /* R7602 */
+    0x0000,     /* R7603 */
+    0x0000,     /* R7604 */
+    0x0000,     /* R7605 */
+    0x0000,     /* R7606 */
+    0x0000,     /* R7607 */
+    0x0000,     /* R7608 */
+    0x0000,     /* R7609 */
+    0x0000,     /* R7610 */
+    0x0000,     /* R7611 */
+    0x0000,     /* R7612 */
+    0x0000,     /* R7613 */
+    0x0000,     /* R7614 */
+    0x0000,     /* R7615 */
+    0x0000,     /* R7616 */
+    0x0000,     /* R7617 */
+    0x0000,     /* R7618 */
+    0x0000,     /* R7619 */
+    0x0000,     /* R7620 */
+    0x0000,     /* R7621 */
+    0x0000,     /* R7622 */
+    0x0000,     /* R7623 */
+    0x0000,     /* R7624 */
+    0x0000,     /* R7625 */
+    0x0000,     /* R7626 */
+    0x0000,     /* R7627 */
+    0x0000,     /* R7628 */
+    0x0000,     /* R7629 */
+    0x0000,     /* R7630 */
+    0x0000,     /* R7631 */
+    0x0000,     /* R7632 */
+    0x0000,     /* R7633 */
+    0x0000,     /* R7634 */
+    0x0000,     /* R7635 */
+    0x0000,     /* R7636 */
+    0x0000,     /* R7637 */
+    0x0000,     /* R7638 */
+    0x0000,     /* R7639 */
+    0x0000,     /* R7640 */
+    0x0000,     /* R7641 */
+    0x0000,     /* R7642 */
+    0x0000,     /* R7643 */
+    0x0000,     /* R7644 */
+    0x0000,     /* R7645 */
+    0x0000,     /* R7646 */
+    0x0000,     /* R7647 */
+    0x0000,     /* R7648 */
+    0x0000,     /* R7649 */
+    0x0000,     /* R7650 */
+    0x0000,     /* R7651 */
+    0x0000,     /* R7652 */
+    0x0000,     /* R7653 */
+    0x0000,     /* R7654 */
+    0x0000,     /* R7655 */
+    0x0000,     /* R7656 */
+    0x0000,     /* R7657 */
+    0x0000,     /* R7658 */
+    0x0000,     /* R7659 */
+    0x0000,     /* R7660 */
+    0x0000,     /* R7661 */
+    0x0000,     /* R7662 */
+    0x0000,     /* R7663 */
+    0x0000,     /* R7664 */
+    0x0000,     /* R7665 */
+    0x0000,     /* R7666 */
+    0x0000,     /* R7667 */
+    0x0000,     /* R7668 */
+    0x0000,     /* R7669 */
+    0x0000,     /* R7670 */
+    0x0000,     /* R7671 */
+    0x0000,     /* R7672 */
+    0x0000,     /* R7673 */
+    0x0000,     /* R7674 */
+    0x0000,     /* R7675 */
+    0x0000,     /* R7676 */
+    0x0000,     /* R7677 */
+    0x0000,     /* R7678 */
+    0x0000,     /* R7679 */
+    0x0000,     /* R7680 */
+    0x0000,     /* R7681 */
+    0x0000,     /* R7682 */
+    0x0000,     /* R7683 */
+    0x0000,     /* R7684 */
+    0x0000,     /* R7685 */
+    0x0000,     /* R7686 */
+    0x0000,     /* R7687 */
+    0x0000,     /* R7688 */
+    0x0000,     /* R7689 */
+    0x0000,     /* R7690 */
+    0x0000,     /* R7691 */
+    0x0000,     /* R7692 */
+    0x0000,     /* R7693 */
+    0x0000,     /* R7694 */
+    0x0000,     /* R7695 */
+    0x0000,     /* R7696 */
+    0x0000,     /* R7697 */
+    0x0000,     /* R7698 */
+    0x0000,     /* R7699 */
+    0x0000,     /* R7700 */
+    0x0000,     /* R7701 */
+    0x0000,     /* R7702 */
+    0x0000,     /* R7703 */
+    0x0000,     /* R7704 */
+    0x0000,     /* R7705 */
+    0x0000,     /* R7706 */
+    0x0000,     /* R7707 */
+    0x0000,     /* R7708 */
+    0x0000,     /* R7709 */
+    0x0000,     /* R7710 */
+    0x0000,     /* R7711 */
+    0x0000,     /* R7712 */
+    0x0000,     /* R7713 */
+    0x0000,     /* R7714 */
+    0x0000,     /* R7715 */
+    0x0000,     /* R7716 */
+    0x0000,     /* R7717 */
+    0x0000,     /* R7718 */
+    0x0000,     /* R7719 */
+    0x0000,     /* R7720 */
+    0x0000,     /* R7721 */
+    0x0000,     /* R7722 */
+    0x0000,     /* R7723 */
+    0x0000,     /* R7724 */
+    0x0000,     /* R7725 */
+    0x0000,     /* R7726 */
+    0x0000,     /* R7727 */
+    0x0000,     /* R7728 */
+    0x0000,     /* R7729 */
+    0x0000,     /* R7730 */
+    0x0000,     /* R7731 */
+    0x0000,     /* R7732 */
+    0x0000,     /* R7733 */
+    0x0000,     /* R7734 */
+    0x0000,     /* R7735 */
+    0x0000,     /* R7736 */
+    0x0000,     /* R7737 */
+    0x0000,     /* R7738 */
+    0x0000,     /* R7739 */
+    0x0000,     /* R7740 */
+    0x0000,     /* R7741 */
+    0x0000,     /* R7742 */
+    0x0000,     /* R7743 */
+    0x0000,     /* R7744 */
+    0x0000,     /* R7745 */
+    0x0000,     /* R7746 */
+    0x0000,     /* R7747 */
+    0x0000,     /* R7748 */
+    0x0000,     /* R7749 */
+    0x0000,     /* R7750 */
+    0x0000,     /* R7751 */
+    0x0000,     /* R7752 */
+    0x0000,     /* R7753 */
+    0x0000,     /* R7754 */
+    0x0000,     /* R7755 */
+    0x0000,     /* R7756 */
+    0x0000,     /* R7757 */
+    0x0000,     /* R7758 */
+    0x0000,     /* R7759 */
+    0x0000,     /* R7760 */
+    0x0000,     /* R7761 */
+    0x0000,     /* R7762 */
+    0x0000,     /* R7763 */
+    0x0000,     /* R7764 */
+    0x0000,     /* R7765 */
+    0x0000,     /* R7766 */
+    0x0000,     /* R7767 */
+    0x0000,     /* R7768 */
+    0x0000,     /* R7769 */
+    0x0000,     /* R7770 */
+    0x0000,     /* R7771 */
+    0x0000,     /* R7772 */
+    0x0000,     /* R7773 */
+    0x0000,     /* R7774 */
+    0x0000,     /* R7775 */
+    0x0000,     /* R7776 */
+    0x0000,     /* R7777 */
+    0x0000,     /* R7778 */
+    0x0000,     /* R7779 */
+    0x0000,     /* R7780 */
+    0x0000,     /* R7781 */
+    0x0000,     /* R7782 */
+    0x0000,     /* R7783 */
+    0x0000,     /* R7784 */
+    0x0000,     /* R7785 */
+    0x0000,     /* R7786 */
+    0x0000,     /* R7787 */
+    0x0000,     /* R7788 */
+    0x0000,     /* R7789 */
+    0x0000,     /* R7790 */
+    0x0000,     /* R7791 */
+    0x0000,     /* R7792 */
+    0x0000,     /* R7793 */
+    0x0000,     /* R7794 */
+    0x0000,     /* R7795 */
+    0x0000,     /* R7796 */
+    0x0000,     /* R7797 */
+    0x0000,     /* R7798 */
+    0x0000,     /* R7799 */
+    0x0000,     /* R7800 */
+    0x0000,     /* R7801 */
+    0x0000,     /* R7802 */
+    0x0000,     /* R7803 */
+    0x0000,     /* R7804 */
+    0x0000,     /* R7805 */
+    0x0000,     /* R7806 */
+    0x0000,     /* R7807 */
+    0x0000,     /* R7808 */
+    0x0000,     /* R7809 */
+    0x0000,     /* R7810 */
+    0x0000,     /* R7811 */
+    0x0000,     /* R7812 */
+    0x0000,     /* R7813 */
+    0x0000,     /* R7814 */
+    0x0000,     /* R7815 */
+    0x0000,     /* R7816 */
+    0x0000,     /* R7817 */
+    0x0000,     /* R7818 */
+    0x0000,     /* R7819 */
+    0x0000,     /* R7820 */
+    0x0000,     /* R7821 */
+    0x0000,     /* R7822 */
+    0x0000,     /* R7823 */
+    0x0000,     /* R7824 */
+    0x0000,     /* R7825 */
+    0x0000,     /* R7826 */
+    0x0000,     /* R7827 */
+    0x0000,     /* R7828 */
+    0x0000,     /* R7829 */
+    0x0000,     /* R7830 */
+    0x0000,     /* R7831 */
+    0x0000,     /* R7832 */
+    0x0000,     /* R7833 */
+    0x0000,     /* R7834 */
+    0x0000,     /* R7835 */
+    0x0000,     /* R7836 */
+    0x0000,     /* R7837 */
+    0x0000,     /* R7838 */
+    0x0000,     /* R7839 */
+    0x0000,     /* R7840 */
+    0x0000,     /* R7841 */
+    0x0000,     /* R7842 */
+    0x0000,     /* R7843 */
+    0x0000,     /* R7844 */
+    0x0000,     /* R7845 */
+    0x0000,     /* R7846 */
+    0x0000,     /* R7847 */
+    0x0000,     /* R7848 */
+    0x0000,     /* R7849 */
+    0x0000,     /* R7850 */
+    0x0000,     /* R7851 */
+    0x0000,     /* R7852 */
+    0x0000,     /* R7853 */
+    0x0000,     /* R7854 */
+    0x0000,     /* R7855 */
+    0x0000,     /* R7856 */
+    0x0000,     /* R7857 */
+    0x0000,     /* R7858 */
+    0x0000,     /* R7859 */
+    0x0000,     /* R7860 */
+    0x0000,     /* R7861 */
+    0x0000,     /* R7862 */
+    0x0000,     /* R7863 */
+    0x0000,     /* R7864 */
+    0x0000,     /* R7865 */
+    0x0000,     /* R7866 */
+    0x0000,     /* R7867 */
+    0x0000,     /* R7868 */
+    0x0000,     /* R7869 */
+    0x0000,     /* R7870 */
+    0x0000,     /* R7871 */
+    0x0000,     /* R7872 */
+    0x0000,     /* R7873 */
+    0x0000,     /* R7874 */
+    0x0000,     /* R7875 */
+    0x0000,     /* R7876 */
+    0x0000,     /* R7877 */
+    0x0000,     /* R7878 */
+    0x0000,     /* R7879 */
+    0x0000,     /* R7880 */
+    0x0000,     /* R7881 */
+    0x0000,     /* R7882 */
+    0x0000,     /* R7883 */
+    0x0000,     /* R7884 */
+    0x0000,     /* R7885 */
+    0x0000,     /* R7886 */
+    0x0000,     /* R7887 */
+    0x0000,     /* R7888 */
+    0x0000,     /* R7889 */
+    0x0000,     /* R7890 */
+    0x0000,     /* R7891 */
+    0x0000,     /* R7892 */
+    0x0000,     /* R7893 */
+    0x0000,     /* R7894 */
+    0x0000,     /* R7895 */
+    0x0000,     /* R7896 */
+    0x0000,     /* R7897 */
+    0x0000,     /* R7898 */
+    0x0000,     /* R7899 */
+    0x0000,     /* R7900 */
+    0x0000,     /* R7901 */
+    0x0000,     /* R7902 */
+    0x0000,     /* R7903 */
+    0x0000,     /* R7904 */
+    0x0000,     /* R7905 */
+    0x0000,     /* R7906 */
+    0x0000,     /* R7907 */
+    0x0000,     /* R7908 */
+    0x0000,     /* R7909 */
+    0x0000,     /* R7910 */
+    0x0000,     /* R7911 */
+    0x0000,     /* R7912 */
+    0x0000,     /* R7913 */
+    0x0000,     /* R7914 */
+    0x0000,     /* R7915 */
+    0x0000,     /* R7916 */
+    0x0000,     /* R7917 */
+    0x0000,     /* R7918 */
+    0x0000,     /* R7919 */
+    0x0000,     /* R7920 */
+    0x0000,     /* R7921 */
+    0x0000,     /* R7922 */
+    0x0000,     /* R7923 */
+    0x0000,     /* R7924 */
+    0x0000,     /* R7925 */
+    0x0000,     /* R7926 */
+    0x0000,     /* R7927 */
+    0x0000,     /* R7928 */
+    0x0000,     /* R7929 */
+    0x0000,     /* R7930 */
+    0x0000,     /* R7931 */
+    0x0000,     /* R7932 */
+    0x0000,     /* R7933 */
+    0x0000,     /* R7934 */
+    0x0000,     /* R7935 */
+    0x0000,     /* R7936 */
+    0x0000,     /* R7937 */
+    0x0000,     /* R7938 */
+    0x0000,     /* R7939 */
+    0x0000,     /* R7940 */
+    0x0000,     /* R7941 */
+    0x0000,     /* R7942 */
+    0x0000,     /* R7943 */
+    0x0000,     /* R7944 */
+    0x0000,     /* R7945 */
+    0x0000,     /* R7946 */
+    0x0000,     /* R7947 */
+    0x0000,     /* R7948 */
+    0x0000,     /* R7949 */
+    0x0000,     /* R7950 */
+    0x0000,     /* R7951 */
+    0x0000,     /* R7952 */
+    0x0000,     /* R7953 */
+    0x0000,     /* R7954 */
+    0x0000,     /* R7955 */
+    0x0000,     /* R7956 */
+    0x0000,     /* R7957 */
+    0x0000,     /* R7958 */
+    0x0000,     /* R7959 */
+    0x0000,     /* R7960 */
+    0x0000,     /* R7961 */
+    0x0000,     /* R7962 */
+    0x0000,     /* R7963 */
+    0x0000,     /* R7964 */
+    0x0000,     /* R7965 */
+    0x0000,     /* R7966 */
+    0x0000,     /* R7967 */
+    0x0000,     /* R7968 */
+    0x0000,     /* R7969 */
+    0x0000,     /* R7970 */
+    0x0000,     /* R7971 */
+    0x0000,     /* R7972 */
+    0x0000,     /* R7973 */
+    0x0000,     /* R7974 */
+    0x0000,     /* R7975 */
+    0x0000,     /* R7976 */
+    0x0000,     /* R7977 */
+    0x0000,     /* R7978 */
+    0x0000,     /* R7979 */
+    0x0000,     /* R7980 */
+    0x0000,     /* R7981 */
+    0x0000,     /* R7982 */
+    0x0000,     /* R7983 */
+    0x0000,     /* R7984 */
+    0x0000,     /* R7985 */
+    0x0000,     /* R7986 */
+    0x0000,     /* R7987 */
+    0x0000,     /* R7988 */
+    0x0000,     /* R7989 */
+    0x0000,     /* R7990 */
+    0x0000,     /* R7991 */
+    0x0000,     /* R7992 */
+    0x0000,     /* R7993 */
+    0x0000,     /* R7994 */
+    0x0000,     /* R7995 */
+    0x0000,     /* R7996 */
+    0x0000,     /* R7997 */
+    0x0000,     /* R7998 */
+    0x0000,     /* R7999 */
+    0x0000,     /* R8000 */
+    0x0000,     /* R8001 */
+    0x0000,     /* R8002 */
+    0x0000,     /* R8003 */
+    0x0000,     /* R8004 */
+    0x0000,     /* R8005 */
+    0x0000,     /* R8006 */
+    0x0000,     /* R8007 */
+    0x0000,     /* R8008 */
+    0x0000,     /* R8009 */
+    0x0000,     /* R8010 */
+    0x0000,     /* R8011 */
+    0x0000,     /* R8012 */
+    0x0000,     /* R8013 */
+    0x0000,     /* R8014 */
+    0x0000,     /* R8015 */
+    0x0000,     /* R8016 */
+    0x0000,     /* R8017 */
+    0x0000,     /* R8018 */
+    0x0000,     /* R8019 */
+    0x0000,     /* R8020 */
+    0x0000,     /* R8021 */
+    0x0000,     /* R8022 */
+    0x0000,     /* R8023 */
+    0x0000,     /* R8024 */
+    0x0000,     /* R8025 */
+    0x0000,     /* R8026 */
+    0x0000,     /* R8027 */
+    0x0000,     /* R8028 */
+    0x0000,     /* R8029 */
+    0x0000,     /* R8030 */
+    0x0000,     /* R8031 */
+    0x0000,     /* R8032 */
+    0x0000,     /* R8033 */
+    0x0000,     /* R8034 */
+    0x0000,     /* R8035 */
+    0x0000,     /* R8036 */
+    0x0000,     /* R8037 */
+    0x0000,     /* R8038 */
+    0x0000,     /* R8039 */
+    0x0000,     /* R8040 */
+    0x0000,     /* R8041 */
+    0x0000,     /* R8042 */
+    0x0000,     /* R8043 */
+    0x0000,     /* R8044 */
+    0x0000,     /* R8045 */
+    0x0000,     /* R8046 */
+    0x0000,     /* R8047 */
+    0x0000,     /* R8048 */
+    0x0000,     /* R8049 */
+    0x0000,     /* R8050 */
+    0x0000,     /* R8051 */
+    0x0000,     /* R8052 */
+    0x0000,     /* R8053 */
+    0x0000,     /* R8054 */
+    0x0000,     /* R8055 */
+    0x0000,     /* R8056 */
+    0x0000,     /* R8057 */
+    0x0000,     /* R8058 */
+    0x0000,     /* R8059 */
+    0x0000,     /* R8060 */
+    0x0000,     /* R8061 */
+    0x0000,     /* R8062 */
+    0x0000,     /* R8063 */
+    0x0000,     /* R8064 */
+    0x0000,     /* R8065 */
+    0x0000,     /* R8066 */
+    0x0000,     /* R8067 */
+    0x0000,     /* R8068 */
+    0x0000,     /* R8069 */
+    0x0000,     /* R8070 */
+    0x0000,     /* R8071 */
+    0x0000,     /* R8072 */
+    0x0000,     /* R8073 */
+    0x0000,     /* R8074 */
+    0x0000,     /* R8075 */
+    0x0000,     /* R8076 */
+    0x0000,     /* R8077 */
+    0x0000,     /* R8078 */
+    0x0000,     /* R8079 */
+    0x0000,     /* R8080 */
+    0x0000,     /* R8081 */
+    0x0000,     /* R8082 */
+    0x0000,     /* R8083 */
+    0x0000,     /* R8084 */
+    0x0000,     /* R8085 */
+    0x0000,     /* R8086 */
+    0x0000,     /* R8087 */
+    0x0000,     /* R8088 */
+    0x0000,     /* R8089 */
+    0x0000,     /* R8090 */
+    0x0000,     /* R8091 */
+    0x0000,     /* R8092 */
+    0x0000,     /* R8093 */
+    0x0000,     /* R8094 */
+    0x0000,     /* R8095 */
+    0x0000,     /* R8096 */
+    0x0000,     /* R8097 */
+    0x0000,     /* R8098 */
+    0x0000,     /* R8099 */
+    0x0000,     /* R8100 */
+    0x0000,     /* R8101 */
+    0x0000,     /* R8102 */
+    0x0000,     /* R8103 */
+    0x0000,     /* R8104 */
+    0x0000,     /* R8105 */
+    0x0000,     /* R8106 */
+    0x0000,     /* R8107 */
+    0x0000,     /* R8108 */
+    0x0000,     /* R8109 */
+    0x0000,     /* R8110 */
+    0x0000,     /* R8111 */
+    0x0000,     /* R8112 */
+    0x0000,     /* R8113 */
+    0x0000,     /* R8114 */
+    0x0000,     /* R8115 */
+    0x0000,     /* R8116 */
+    0x0000,     /* R8117 */
+    0x0000,     /* R8118 */
+    0x0000,     /* R8119 */
+    0x0000,     /* R8120 */
+    0x0000,     /* R8121 */
+    0x0000,     /* R8122 */
+    0x0000,     /* R8123 */
+    0x0000,     /* R8124 */
+    0x0000,     /* R8125 */
+    0x0000,     /* R8126 */
+    0x0000,     /* R8127 */
+    0x0000,     /* R8128 */
+    0x0000,     /* R8129 */
+    0x0000,     /* R8130 */
+    0x0000,     /* R8131 */
+    0x0000,     /* R8132 */
+    0x0000,     /* R8133 */
+    0x0000,     /* R8134 */
+    0x0000,     /* R8135 */
+    0x0000,     /* R8136 */
+    0x0000,     /* R8137 */
+    0x0000,     /* R8138 */
+    0x0000,     /* R8139 */
+    0x0000,     /* R8140 */
+    0x0000,     /* R8141 */
+    0x0000,     /* R8142 */
+    0x0000,     /* R8143 */
+    0x0000,     /* R8144 */
+    0x0000,     /* R8145 */
+    0x0000,     /* R8146 */
+    0x0000,     /* R8147 */
+    0x0000,     /* R8148 */
+    0x0000,     /* R8149 */
+    0x0000,     /* R8150 */
+    0x0000,     /* R8151 */
+    0x0000,     /* R8152 */
+    0x0000,     /* R8153 */
+    0x0000,     /* R8154 */
+    0x0000,     /* R8155 */
+    0x0000,     /* R8156 */
+    0x0000,     /* R8157 */
+    0x0000,     /* R8158 */
+    0x0000,     /* R8159 */
+    0x0000,     /* R8160 */
+    0x0000,     /* R8161 */
+    0x0000,     /* R8162 */
+    0x0000,     /* R8163 */
+    0x0000,     /* R8164 */
+    0x0000,     /* R8165 */
+    0x0000,     /* R8166 */
+    0x0000,     /* R8167 */
+    0x0000,     /* R8168 */
+    0x0000,     /* R8169 */
+    0x0000,     /* R8170 */
+    0x0000,     /* R8171 */
+    0x0000,     /* R8172 */
+    0x0000,     /* R8173 */
+    0x0000,     /* R8174 */
+    0x0000,     /* R8175 */
+    0x0000,     /* R8176 */
+    0x0000,     /* R8177 */
+    0x0000,     /* R8178 */
+    0x0000,     /* R8179 */
+    0x0000,     /* R8180 */
+    0x0000,     /* R8181 */
+    0x0000,     /* R8182 */
+    0x0000,     /* R8183 */
+    0x0000,     /* R8184 */
+    0x0000,     /* R8185 */
+    0x0000,     /* R8186 */
+    0x0000,     /* R8187 */
+    0x0000,     /* R8188 */
+    0x0000,     /* R8189 */
+    0x0000,     /* R8190 */
+    0x0000,     /* R8191 */
+    0x0000,     /* R8192  - DSP2 Instruction RAM 0 */
+    0x0000,     /* R8193 */
+    0x0000,     /* R8194 */
+    0x0000,     /* R8195 */
+    0x0000,     /* R8196 */
+    0x0000,     /* R8197 */
+    0x0000,     /* R8198 */
+    0x0000,     /* R8199 */
+    0x0000,     /* R8200 */
+    0x0000,     /* R8201 */
+    0x0000,     /* R8202 */
+    0x0000,     /* R8203 */
+    0x0000,     /* R8204 */
+    0x0000,     /* R8205 */
+    0x0000,     /* R8206 */
+    0x0000,     /* R8207 */
+    0x0000,     /* R8208 */
+    0x0000,     /* R8209 */
+    0x0000,     /* R8210 */
+    0x0000,     /* R8211 */
+    0x0000,     /* R8212 */
+    0x0000,     /* R8213 */
+    0x0000,     /* R8214 */
+    0x0000,     /* R8215 */
+    0x0000,     /* R8216 */
+    0x0000,     /* R8217 */
+    0x0000,     /* R8218 */
+    0x0000,     /* R8219 */
+    0x0000,     /* R8220 */
+    0x0000,     /* R8221 */
+    0x0000,     /* R8222 */
+    0x0000,     /* R8223 */
+    0x0000,     /* R8224 */
+    0x0000,     /* R8225 */
+    0x0000,     /* R8226 */
+    0x0000,     /* R8227 */
+    0x0000,     /* R8228 */
+    0x0000,     /* R8229 */
+    0x0000,     /* R8230 */
+    0x0000,     /* R8231 */
+    0x0000,     /* R8232 */
+    0x0000,     /* R8233 */
+    0x0000,     /* R8234 */
+    0x0000,     /* R8235 */
+    0x0000,     /* R8236 */
+    0x0000,     /* R8237 */
+    0x0000,     /* R8238 */
+    0x0000,     /* R8239 */
+    0x0000,     /* R8240 */
+    0x0000,     /* R8241 */
+    0x0000,     /* R8242 */
+    0x0000,     /* R8243 */
+    0x0000,     /* R8244 */
+    0x0000,     /* R8245 */
+    0x0000,     /* R8246 */
+    0x0000,     /* R8247 */
+    0x0000,     /* R8248 */
+    0x0000,     /* R8249 */
+    0x0000,     /* R8250 */
+    0x0000,     /* R8251 */
+    0x0000,     /* R8252 */
+    0x0000,     /* R8253 */
+    0x0000,     /* R8254 */
+    0x0000,     /* R8255 */
+    0x0000,     /* R8256 */
+    0x0000,     /* R8257 */
+    0x0000,     /* R8258 */
+    0x0000,     /* R8259 */
+    0x0000,     /* R8260 */
+    0x0000,     /* R8261 */
+    0x0000,     /* R8262 */
+    0x0000,     /* R8263 */
+    0x0000,     /* R8264 */
+    0x0000,     /* R8265 */
+    0x0000,     /* R8266 */
+    0x0000,     /* R8267 */
+    0x0000,     /* R8268 */
+    0x0000,     /* R8269 */
+    0x0000,     /* R8270 */
+    0x0000,     /* R8271 */
+    0x0000,     /* R8272 */
+    0x0000,     /* R8273 */
+    0x0000,     /* R8274 */
+    0x0000,     /* R8275 */
+    0x0000,     /* R8276 */
+    0x0000,     /* R8277 */
+    0x0000,     /* R8278 */
+    0x0000,     /* R8279 */
+    0x0000,     /* R8280 */
+    0x0000,     /* R8281 */
+    0x0000,     /* R8282 */
+    0x0000,     /* R8283 */
+    0x0000,     /* R8284 */
+    0x0000,     /* R8285 */
+    0x0000,     /* R8286 */
+    0x0000,     /* R8287 */
+    0x0000,     /* R8288 */
+    0x0000,     /* R8289 */
+    0x0000,     /* R8290 */
+    0x0000,     /* R8291 */
+    0x0000,     /* R8292 */
+    0x0000,     /* R8293 */
+    0x0000,     /* R8294 */
+    0x0000,     /* R8295 */
+    0x0000,     /* R8296 */
+    0x0000,     /* R8297 */
+    0x0000,     /* R8298 */
+    0x0000,     /* R8299 */
+    0x0000,     /* R8300 */
+    0x0000,     /* R8301 */
+    0x0000,     /* R8302 */
+    0x0000,     /* R8303 */
+    0x0000,     /* R8304 */
+    0x0000,     /* R8305 */
+    0x0000,     /* R8306 */
+    0x0000,     /* R8307 */
+    0x0000,     /* R8308 */
+    0x0000,     /* R8309 */
+    0x0000,     /* R8310 */
+    0x0000,     /* R8311 */
+    0x0000,     /* R8312 */
+    0x0000,     /* R8313 */
+    0x0000,     /* R8314 */
+    0x0000,     /* R8315 */
+    0x0000,     /* R8316 */
+    0x0000,     /* R8317 */
+    0x0000,     /* R8318 */
+    0x0000,     /* R8319 */
+    0x0000,     /* R8320 */
+    0x0000,     /* R8321 */
+    0x0000,     /* R8322 */
+    0x0000,     /* R8323 */
+    0x0000,     /* R8324 */
+    0x0000,     /* R8325 */
+    0x0000,     /* R8326 */
+    0x0000,     /* R8327 */
+    0x0000,     /* R8328 */
+    0x0000,     /* R8329 */
+    0x0000,     /* R8330 */
+    0x0000,     /* R8331 */
+    0x0000,     /* R8332 */
+    0x0000,     /* R8333 */
+    0x0000,     /* R8334 */
+    0x0000,     /* R8335 */
+    0x0000,     /* R8336 */
+    0x0000,     /* R8337 */
+    0x0000,     /* R8338 */
+    0x0000,     /* R8339 */
+    0x0000,     /* R8340 */
+    0x0000,     /* R8341 */
+    0x0000,     /* R8342 */
+    0x0000,     /* R8343 */
+    0x0000,     /* R8344 */
+    0x0000,     /* R8345 */
+    0x0000,     /* R8346 */
+    0x0000,     /* R8347 */
+    0x0000,     /* R8348 */
+    0x0000,     /* R8349 */
+    0x0000,     /* R8350 */
+    0x0000,     /* R8351 */
+    0x0000,     /* R8352 */
+    0x0000,     /* R8353 */
+    0x0000,     /* R8354 */
+    0x0000,     /* R8355 */
+    0x0000,     /* R8356 */
+    0x0000,     /* R8357 */
+    0x0000,     /* R8358 */
+    0x0000,     /* R8359 */
+    0x0000,     /* R8360 */
+    0x0000,     /* R8361 */
+    0x0000,     /* R8362 */
+    0x0000,     /* R8363 */
+    0x0000,     /* R8364 */
+    0x0000,     /* R8365 */
+    0x0000,     /* R8366 */
+    0x0000,     /* R8367 */
+    0x0000,     /* R8368 */
+    0x0000,     /* R8369 */
+    0x0000,     /* R8370 */
+    0x0000,     /* R8371 */
+    0x0000,     /* R8372 */
+    0x0000,     /* R8373 */
+    0x0000,     /* R8374 */
+    0x0000,     /* R8375 */
+    0x0000,     /* R8376 */
+    0x0000,     /* R8377 */
+    0x0000,     /* R8378 */
+    0x0000,     /* R8379 */
+    0x0000,     /* R8380 */
+    0x0000,     /* R8381 */
+    0x0000,     /* R8382 */
+    0x0000,     /* R8383 */
+    0x0000,     /* R8384 */
+    0x0000,     /* R8385 */
+    0x0000,     /* R8386 */
+    0x0000,     /* R8387 */
+    0x0000,     /* R8388 */
+    0x0000,     /* R8389 */
+    0x0000,     /* R8390 */
+    0x0000,     /* R8391 */
+    0x0000,     /* R8392 */
+    0x0000,     /* R8393 */
+    0x0000,     /* R8394 */
+    0x0000,     /* R8395 */
+    0x0000,     /* R8396 */
+    0x0000,     /* R8397 */
+    0x0000,     /* R8398 */
+    0x0000,     /* R8399 */
+    0x0000,     /* R8400 */
+    0x0000,     /* R8401 */
+    0x0000,     /* R8402 */
+    0x0000,     /* R8403 */
+    0x0000,     /* R8404 */
+    0x0000,     /* R8405 */
+    0x0000,     /* R8406 */
+    0x0000,     /* R8407 */
+    0x0000,     /* R8408 */
+    0x0000,     /* R8409 */
+    0x0000,     /* R8410 */
+    0x0000,     /* R8411 */
+    0x0000,     /* R8412 */
+    0x0000,     /* R8413 */
+    0x0000,     /* R8414 */
+    0x0000,     /* R8415 */
+    0x0000,     /* R8416 */
+    0x0000,     /* R8417 */
+    0x0000,     /* R8418 */
+    0x0000,     /* R8419 */
+    0x0000,     /* R8420 */
+    0x0000,     /* R8421 */
+    0x0000,     /* R8422 */
+    0x0000,     /* R8423 */
+    0x0000,     /* R8424 */
+    0x0000,     /* R8425 */
+    0x0000,     /* R8426 */
+    0x0000,     /* R8427 */
+    0x0000,     /* R8428 */
+    0x0000,     /* R8429 */
+    0x0000,     /* R8430 */
+    0x0000,     /* R8431 */
+    0x0000,     /* R8432 */
+    0x0000,     /* R8433 */
+    0x0000,     /* R8434 */
+    0x0000,     /* R8435 */
+    0x0000,     /* R8436 */
+    0x0000,     /* R8437 */
+    0x0000,     /* R8438 */
+    0x0000,     /* R8439 */
+    0x0000,     /* R8440 */
+    0x0000,     /* R8441 */
+    0x0000,     /* R8442 */
+    0x0000,     /* R8443 */
+    0x0000,     /* R8444 */
+    0x0000,     /* R8445 */
+    0x0000,     /* R8446 */
+    0x0000,     /* R8447 */
+    0x0000,     /* R8448 */
+    0x0000,     /* R8449 */
+    0x0000,     /* R8450 */
+    0x0000,     /* R8451 */
+    0x0000,     /* R8452 */
+    0x0000,     /* R8453 */
+    0x0000,     /* R8454 */
+    0x0000,     /* R8455 */
+    0x0000,     /* R8456 */
+    0x0000,     /* R8457 */
+    0x0000,     /* R8458 */
+    0x0000,     /* R8459 */
+    0x0000,     /* R8460 */
+    0x0000,     /* R8461 */
+    0x0000,     /* R8462 */
+    0x0000,     /* R8463 */
+    0x0000,     /* R8464 */
+    0x0000,     /* R8465 */
+    0x0000,     /* R8466 */
+    0x0000,     /* R8467 */
+    0x0000,     /* R8468 */
+    0x0000,     /* R8469 */
+    0x0000,     /* R8470 */
+    0x0000,     /* R8471 */
+    0x0000,     /* R8472 */
+    0x0000,     /* R8473 */
+    0x0000,     /* R8474 */
+    0x0000,     /* R8475 */
+    0x0000,     /* R8476 */
+    0x0000,     /* R8477 */
+    0x0000,     /* R8478 */
+    0x0000,     /* R8479 */
+    0x0000,     /* R8480 */
+    0x0000,     /* R8481 */
+    0x0000,     /* R8482 */
+    0x0000,     /* R8483 */
+    0x0000,     /* R8484 */
+    0x0000,     /* R8485 */
+    0x0000,     /* R8486 */
+    0x0000,     /* R8487 */
+    0x0000,     /* R8488 */
+    0x0000,     /* R8489 */
+    0x0000,     /* R8490 */
+    0x0000,     /* R8491 */
+    0x0000,     /* R8492 */
+    0x0000,     /* R8493 */
+    0x0000,     /* R8494 */
+    0x0000,     /* R8495 */
+    0x0000,     /* R8496 */
+    0x0000,     /* R8497 */
+    0x0000,     /* R8498 */
+    0x0000,     /* R8499 */
+    0x0000,     /* R8500 */
+    0x0000,     /* R8501 */
+    0x0000,     /* R8502 */
+    0x0000,     /* R8503 */
+    0x0000,     /* R8504 */
+    0x0000,     /* R8505 */
+    0x0000,     /* R8506 */
+    0x0000,     /* R8507 */
+    0x0000,     /* R8508 */
+    0x0000,     /* R8509 */
+    0x0000,     /* R8510 */
+    0x0000,     /* R8511 */
+    0x0000,     /* R8512 */
+    0x0000,     /* R8513 */
+    0x0000,     /* R8514 */
+    0x0000,     /* R8515 */
+    0x0000,     /* R8516 */
+    0x0000,     /* R8517 */
+    0x0000,     /* R8518 */
+    0x0000,     /* R8519 */
+    0x0000,     /* R8520 */
+    0x0000,     /* R8521 */
+    0x0000,     /* R8522 */
+    0x0000,     /* R8523 */
+    0x0000,     /* R8524 */
+    0x0000,     /* R8525 */
+    0x0000,     /* R8526 */
+    0x0000,     /* R8527 */
+    0x0000,     /* R8528 */
+    0x0000,     /* R8529 */
+    0x0000,     /* R8530 */
+    0x0000,     /* R8531 */
+    0x0000,     /* R8532 */
+    0x0000,     /* R8533 */
+    0x0000,     /* R8534 */
+    0x0000,     /* R8535 */
+    0x0000,     /* R8536 */
+    0x0000,     /* R8537 */
+    0x0000,     /* R8538 */
+    0x0000,     /* R8539 */
+    0x0000,     /* R8540 */
+    0x0000,     /* R8541 */
+    0x0000,     /* R8542 */
+    0x0000,     /* R8543 */
+    0x0000,     /* R8544 */
+    0x0000,     /* R8545 */
+    0x0000,     /* R8546 */
+    0x0000,     /* R8547 */
+    0x0000,     /* R8548 */
+    0x0000,     /* R8549 */
+    0x0000,     /* R8550 */
+    0x0000,     /* R8551 */
+    0x0000,     /* R8552 */
+    0x0000,     /* R8553 */
+    0x0000,     /* R8554 */
+    0x0000,     /* R8555 */
+    0x0000,     /* R8556 */
+    0x0000,     /* R8557 */
+    0x0000,     /* R8558 */
+    0x0000,     /* R8559 */
+    0x0000,     /* R8560 */
+    0x0000,     /* R8561 */
+    0x0000,     /* R8562 */
+    0x0000,     /* R8563 */
+    0x0000,     /* R8564 */
+    0x0000,     /* R8565 */
+    0x0000,     /* R8566 */
+    0x0000,     /* R8567 */
+    0x0000,     /* R8568 */
+    0x0000,     /* R8569 */
+    0x0000,     /* R8570 */
+    0x0000,     /* R8571 */
+    0x0000,     /* R8572 */
+    0x0000,     /* R8573 */
+    0x0000,     /* R8574 */
+    0x0000,     /* R8575 */
+    0x0000,     /* R8576 */
+    0x0000,     /* R8577 */
+    0x0000,     /* R8578 */
+    0x0000,     /* R8579 */
+    0x0000,     /* R8580 */
+    0x0000,     /* R8581 */
+    0x0000,     /* R8582 */
+    0x0000,     /* R8583 */
+    0x0000,     /* R8584 */
+    0x0000,     /* R8585 */
+    0x0000,     /* R8586 */
+    0x0000,     /* R8587 */
+    0x0000,     /* R8588 */
+    0x0000,     /* R8589 */
+    0x0000,     /* R8590 */
+    0x0000,     /* R8591 */
+    0x0000,     /* R8592 */
+    0x0000,     /* R8593 */
+    0x0000,     /* R8594 */
+    0x0000,     /* R8595 */
+    0x0000,     /* R8596 */
+    0x0000,     /* R8597 */
+    0x0000,     /* R8598 */
+    0x0000,     /* R8599 */
+    0x0000,     /* R8600 */
+    0x0000,     /* R8601 */
+    0x0000,     /* R8602 */
+    0x0000,     /* R8603 */
+    0x0000,     /* R8604 */
+    0x0000,     /* R8605 */
+    0x0000,     /* R8606 */
+    0x0000,     /* R8607 */
+    0x0000,     /* R8608 */
+    0x0000,     /* R8609 */
+    0x0000,     /* R8610 */
+    0x0000,     /* R8611 */
+    0x0000,     /* R8612 */
+    0x0000,     /* R8613 */
+    0x0000,     /* R8614 */
+    0x0000,     /* R8615 */
+    0x0000,     /* R8616 */
+    0x0000,     /* R8617 */
+    0x0000,     /* R8618 */
+    0x0000,     /* R8619 */
+    0x0000,     /* R8620 */
+    0x0000,     /* R8621 */
+    0x0000,     /* R8622 */
+    0x0000,     /* R8623 */
+    0x0000,     /* R8624 */
+    0x0000,     /* R8625 */
+    0x0000,     /* R8626 */
+    0x0000,     /* R8627 */
+    0x0000,     /* R8628 */
+    0x0000,     /* R8629 */
+    0x0000,     /* R8630 */
+    0x0000,     /* R8631 */
+    0x0000,     /* R8632 */
+    0x0000,     /* R8633 */
+    0x0000,     /* R8634 */
+    0x0000,     /* R8635 */
+    0x0000,     /* R8636 */
+    0x0000,     /* R8637 */
+    0x0000,     /* R8638 */
+    0x0000,     /* R8639 */
+    0x0000,     /* R8640 */
+    0x0000,     /* R8641 */
+    0x0000,     /* R8642 */
+    0x0000,     /* R8643 */
+    0x0000,     /* R8644 */
+    0x0000,     /* R8645 */
+    0x0000,     /* R8646 */
+    0x0000,     /* R8647 */
+    0x0000,     /* R8648 */
+    0x0000,     /* R8649 */
+    0x0000,     /* R8650 */
+    0x0000,     /* R8651 */
+    0x0000,     /* R8652 */
+    0x0000,     /* R8653 */
+    0x0000,     /* R8654 */
+    0x0000,     /* R8655 */
+    0x0000,     /* R8656 */
+    0x0000,     /* R8657 */
+    0x0000,     /* R8658 */
+    0x0000,     /* R8659 */
+    0x0000,     /* R8660 */
+    0x0000,     /* R8661 */
+    0x0000,     /* R8662 */
+    0x0000,     /* R8663 */
+    0x0000,     /* R8664 */
+    0x0000,     /* R8665 */
+    0x0000,     /* R8666 */
+    0x0000,     /* R8667 */
+    0x0000,     /* R8668 */
+    0x0000,     /* R8669 */
+    0x0000,     /* R8670 */
+    0x0000,     /* R8671 */
+    0x0000,     /* R8672 */
+    0x0000,     /* R8673 */
+    0x0000,     /* R8674 */
+    0x0000,     /* R8675 */
+    0x0000,     /* R8676 */
+    0x0000,     /* R8677 */
+    0x0000,     /* R8678 */
+    0x0000,     /* R8679 */
+    0x0000,     /* R8680 */
+    0x0000,     /* R8681 */
+    0x0000,     /* R8682 */
+    0x0000,     /* R8683 */
+    0x0000,     /* R8684 */
+    0x0000,     /* R8685 */
+    0x0000,     /* R8686 */
+    0x0000,     /* R8687 */
+    0x0000,     /* R8688 */
+    0x0000,     /* R8689 */
+    0x0000,     /* R8690 */
+    0x0000,     /* R8691 */
+    0x0000,     /* R8692 */
+    0x0000,     /* R8693 */
+    0x0000,     /* R8694 */
+    0x0000,     /* R8695 */
+    0x0000,     /* R8696 */
+    0x0000,     /* R8697 */
+    0x0000,     /* R8698 */
+    0x0000,     /* R8699 */
+    0x0000,     /* R8700 */
+    0x0000,     /* R8701 */
+    0x0000,     /* R8702 */
+    0x0000,     /* R8703 */
+    0x0000,     /* R8704 */
+    0x0000,     /* R8705 */
+    0x0000,     /* R8706 */
+    0x0000,     /* R8707 */
+    0x0000,     /* R8708 */
+    0x0000,     /* R8709 */
+    0x0000,     /* R8710 */
+    0x0000,     /* R8711 */
+    0x0000,     /* R8712 */
+    0x0000,     /* R8713 */
+    0x0000,     /* R8714 */
+    0x0000,     /* R8715 */
+    0x0000,     /* R8716 */
+    0x0000,     /* R8717 */
+    0x0000,     /* R8718 */
+    0x0000,     /* R8719 */
+    0x0000,     /* R8720 */
+    0x0000,     /* R8721 */
+    0x0000,     /* R8722 */
+    0x0000,     /* R8723 */
+    0x0000,     /* R8724 */
+    0x0000,     /* R8725 */
+    0x0000,     /* R8726 */
+    0x0000,     /* R8727 */
+    0x0000,     /* R8728 */
+    0x0000,     /* R8729 */
+    0x0000,     /* R8730 */
+    0x0000,     /* R8731 */
+    0x0000,     /* R8732 */
+    0x0000,     /* R8733 */
+    0x0000,     /* R8734 */
+    0x0000,     /* R8735 */
+    0x0000,     /* R8736 */
+    0x0000,     /* R8737 */
+    0x0000,     /* R8738 */
+    0x0000,     /* R8739 */
+    0x0000,     /* R8740 */
+    0x0000,     /* R8741 */
+    0x0000,     /* R8742 */
+    0x0000,     /* R8743 */
+    0x0000,     /* R8744 */
+    0x0000,     /* R8745 */
+    0x0000,     /* R8746 */
+    0x0000,     /* R8747 */
+    0x0000,     /* R8748 */
+    0x0000,     /* R8749 */
+    0x0000,     /* R8750 */
+    0x0000,     /* R8751 */
+    0x0000,     /* R8752 */
+    0x0000,     /* R8753 */
+    0x0000,     /* R8754 */
+    0x0000,     /* R8755 */
+    0x0000,     /* R8756 */
+    0x0000,     /* R8757 */
+    0x0000,     /* R8758 */
+    0x0000,     /* R8759 */
+    0x0000,     /* R8760 */
+    0x0000,     /* R8761 */
+    0x0000,     /* R8762 */
+    0x0000,     /* R8763 */
+    0x0000,     /* R8764 */
+    0x0000,     /* R8765 */
+    0x0000,     /* R8766 */
+    0x0000,     /* R8767 */
+    0x0000,     /* R8768 */
+    0x0000,     /* R8769 */
+    0x0000,     /* R8770 */
+    0x0000,     /* R8771 */
+    0x0000,     /* R8772 */
+    0x0000,     /* R8773 */
+    0x0000,     /* R8774 */
+    0x0000,     /* R8775 */
+    0x0000,     /* R8776 */
+    0x0000,     /* R8777 */
+    0x0000,     /* R8778 */
+    0x0000,     /* R8779 */
+    0x0000,     /* R8780 */
+    0x0000,     /* R8781 */
+    0x0000,     /* R8782 */
+    0x0000,     /* R8783 */
+    0x0000,     /* R8784 */
+    0x0000,     /* R8785 */
+    0x0000,     /* R8786 */
+    0x0000,     /* R8787 */
+    0x0000,     /* R8788 */
+    0x0000,     /* R8789 */
+    0x0000,     /* R8790 */
+    0x0000,     /* R8791 */
+    0x0000,     /* R8792 */
+    0x0000,     /* R8793 */
+    0x0000,     /* R8794 */
+    0x0000,     /* R8795 */
+    0x0000,     /* R8796 */
+    0x0000,     /* R8797 */
+    0x0000,     /* R8798 */
+    0x0000,     /* R8799 */
+    0x0000,     /* R8800 */
+    0x0000,     /* R8801 */
+    0x0000,     /* R8802 */
+    0x0000,     /* R8803 */
+    0x0000,     /* R8804 */
+    0x0000,     /* R8805 */
+    0x0000,     /* R8806 */
+    0x0000,     /* R8807 */
+    0x0000,     /* R8808 */
+    0x0000,     /* R8809 */
+    0x0000,     /* R8810 */
+    0x0000,     /* R8811 */
+    0x0000,     /* R8812 */
+    0x0000,     /* R8813 */
+    0x0000,     /* R8814 */
+    0x0000,     /* R8815 */
+    0x0000,     /* R8816 */
+    0x0000,     /* R8817 */
+    0x0000,     /* R8818 */
+    0x0000,     /* R8819 */
+    0x0000,     /* R8820 */
+    0x0000,     /* R8821 */
+    0x0000,     /* R8822 */
+    0x0000,     /* R8823 */
+    0x0000,     /* R8824 */
+    0x0000,     /* R8825 */
+    0x0000,     /* R8826 */
+    0x0000,     /* R8827 */
+    0x0000,     /* R8828 */
+    0x0000,     /* R8829 */
+    0x0000,     /* R8830 */
+    0x0000,     /* R8831 */
+    0x0000,     /* R8832 */
+    0x0000,     /* R8833 */
+    0x0000,     /* R8834 */
+    0x0000,     /* R8835 */
+    0x0000,     /* R8836 */
+    0x0000,     /* R8837 */
+    0x0000,     /* R8838 */
+    0x0000,     /* R8839 */
+    0x0000,     /* R8840 */
+    0x0000,     /* R8841 */
+    0x0000,     /* R8842 */
+    0x0000,     /* R8843 */
+    0x0000,     /* R8844 */
+    0x0000,     /* R8845 */
+    0x0000,     /* R8846 */
+    0x0000,     /* R8847 */
+    0x0000,     /* R8848 */
+    0x0000,     /* R8849 */
+    0x0000,     /* R8850 */
+    0x0000,     /* R8851 */
+    0x0000,     /* R8852 */
+    0x0000,     /* R8853 */
+    0x0000,     /* R8854 */
+    0x0000,     /* R8855 */
+    0x0000,     /* R8856 */
+    0x0000,     /* R8857 */
+    0x0000,     /* R8858 */
+    0x0000,     /* R8859 */
+    0x0000,     /* R8860 */
+    0x0000,     /* R8861 */
+    0x0000,     /* R8862 */
+    0x0000,     /* R8863 */
+    0x0000,     /* R8864 */
+    0x0000,     /* R8865 */
+    0x0000,     /* R8866 */
+    0x0000,     /* R8867 */
+    0x0000,     /* R8868 */
+    0x0000,     /* R8869 */
+    0x0000,     /* R8870 */
+    0x0000,     /* R8871 */
+    0x0000,     /* R8872 */
+    0x0000,     /* R8873 */
+    0x0000,     /* R8874 */
+    0x0000,     /* R8875 */
+    0x0000,     /* R8876 */
+    0x0000,     /* R8877 */
+    0x0000,     /* R8878 */
+    0x0000,     /* R8879 */
+    0x0000,     /* R8880 */
+    0x0000,     /* R8881 */
+    0x0000,     /* R8882 */
+    0x0000,     /* R8883 */
+    0x0000,     /* R8884 */
+    0x0000,     /* R8885 */
+    0x0000,     /* R8886 */
+    0x0000,     /* R8887 */
+    0x0000,     /* R8888 */
+    0x0000,     /* R8889 */
+    0x0000,     /* R8890 */
+    0x0000,     /* R8891 */
+    0x0000,     /* R8892 */
+    0x0000,     /* R8893 */
+    0x0000,     /* R8894 */
+    0x0000,     /* R8895 */
+    0x0000,     /* R8896 */
+    0x0000,     /* R8897 */
+    0x0000,     /* R8898 */
+    0x0000,     /* R8899 */
+    0x0000,     /* R8900 */
+    0x0000,     /* R8901 */
+    0x0000,     /* R8902 */
+    0x0000,     /* R8903 */
+    0x0000,     /* R8904 */
+    0x0000,     /* R8905 */
+    0x0000,     /* R8906 */
+    0x0000,     /* R8907 */
+    0x0000,     /* R8908 */
+    0x0000,     /* R8909 */
+    0x0000,     /* R8910 */
+    0x0000,     /* R8911 */
+    0x0000,     /* R8912 */
+    0x0000,     /* R8913 */
+    0x0000,     /* R8914 */
+    0x0000,     /* R8915 */
+    0x0000,     /* R8916 */
+    0x0000,     /* R8917 */
+    0x0000,     /* R8918 */
+    0x0000,     /* R8919 */
+    0x0000,     /* R8920 */
+    0x0000,     /* R8921 */
+    0x0000,     /* R8922 */
+    0x0000,     /* R8923 */
+    0x0000,     /* R8924 */
+    0x0000,     /* R8925 */
+    0x0000,     /* R8926 */
+    0x0000,     /* R8927 */
+    0x0000,     /* R8928 */
+    0x0000,     /* R8929 */
+    0x0000,     /* R8930 */
+    0x0000,     /* R8931 */
+    0x0000,     /* R8932 */
+    0x0000,     /* R8933 */
+    0x0000,     /* R8934 */
+    0x0000,     /* R8935 */
+    0x0000,     /* R8936 */
+    0x0000,     /* R8937 */
+    0x0000,     /* R8938 */
+    0x0000,     /* R8939 */
+    0x0000,     /* R8940 */
+    0x0000,     /* R8941 */
+    0x0000,     /* R8942 */
+    0x0000,     /* R8943 */
+    0x0000,     /* R8944 */
+    0x0000,     /* R8945 */
+    0x0000,     /* R8946 */
+    0x0000,     /* R8947 */
+    0x0000,     /* R8948 */
+    0x0000,     /* R8949 */
+    0x0000,     /* R8950 */
+    0x0000,     /* R8951 */
+    0x0000,     /* R8952 */
+    0x0000,     /* R8953 */
+    0x0000,     /* R8954 */
+    0x0000,     /* R8955 */
+    0x0000,     /* R8956 */
+    0x0000,     /* R8957 */
+    0x0000,     /* R8958 */
+    0x0000,     /* R8959 */
+    0x0000,     /* R8960 */
+    0x0000,     /* R8961 */
+    0x0000,     /* R8962 */
+    0x0000,     /* R8963 */
+    0x0000,     /* R8964 */
+    0x0000,     /* R8965 */
+    0x0000,     /* R8966 */
+    0x0000,     /* R8967 */
+    0x0000,     /* R8968 */
+    0x0000,     /* R8969 */
+    0x0000,     /* R8970 */
+    0x0000,     /* R8971 */
+    0x0000,     /* R8972 */
+    0x0000,     /* R8973 */
+    0x0000,     /* R8974 */
+    0x0000,     /* R8975 */
+    0x0000,     /* R8976 */
+    0x0000,     /* R8977 */
+    0x0000,     /* R8978 */
+    0x0000,     /* R8979 */
+    0x0000,     /* R8980 */
+    0x0000,     /* R8981 */
+    0x0000,     /* R8982 */
+    0x0000,     /* R8983 */
+    0x0000,     /* R8984 */
+    0x0000,     /* R8985 */
+    0x0000,     /* R8986 */
+    0x0000,     /* R8987 */
+    0x0000,     /* R8988 */
+    0x0000,     /* R8989 */
+    0x0000,     /* R8990 */
+    0x0000,     /* R8991 */
+    0x0000,     /* R8992 */
+    0x0000,     /* R8993 */
+    0x0000,     /* R8994 */
+    0x0000,     /* R8995 */
+    0x0000,     /* R8996 */
+    0x0000,     /* R8997 */
+    0x0000,     /* R8998 */
+    0x0000,     /* R8999 */
+    0x0000,     /* R9000 */
+    0x0000,     /* R9001 */
+    0x0000,     /* R9002 */
+    0x0000,     /* R9003 */
+    0x0000,     /* R9004 */
+    0x0000,     /* R9005 */
+    0x0000,     /* R9006 */
+    0x0000,     /* R9007 */
+    0x0000,     /* R9008 */
+    0x0000,     /* R9009 */
+    0x0000,     /* R9010 */
+    0x0000,     /* R9011 */
+    0x0000,     /* R9012 */
+    0x0000,     /* R9013 */
+    0x0000,     /* R9014 */
+    0x0000,     /* R9015 */
+    0x0000,     /* R9016 */
+    0x0000,     /* R9017 */
+    0x0000,     /* R9018 */
+    0x0000,     /* R9019 */
+    0x0000,     /* R9020 */
+    0x0000,     /* R9021 */
+    0x0000,     /* R9022 */
+    0x0000,     /* R9023 */
+    0x0000,     /* R9024 */
+    0x0000,     /* R9025 */
+    0x0000,     /* R9026 */
+    0x0000,     /* R9027 */
+    0x0000,     /* R9028 */
+    0x0000,     /* R9029 */
+    0x0000,     /* R9030 */
+    0x0000,     /* R9031 */
+    0x0000,     /* R9032 */
+    0x0000,     /* R9033 */
+    0x0000,     /* R9034 */
+    0x0000,     /* R9035 */
+    0x0000,     /* R9036 */
+    0x0000,     /* R9037 */
+    0x0000,     /* R9038 */
+    0x0000,     /* R9039 */
+    0x0000,     /* R9040 */
+    0x0000,     /* R9041 */
+    0x0000,     /* R9042 */
+    0x0000,     /* R9043 */
+    0x0000,     /* R9044 */
+    0x0000,     /* R9045 */
+    0x0000,     /* R9046 */
+    0x0000,     /* R9047 */
+    0x0000,     /* R9048 */
+    0x0000,     /* R9049 */
+    0x0000,     /* R9050 */
+    0x0000,     /* R9051 */
+    0x0000,     /* R9052 */
+    0x0000,     /* R9053 */
+    0x0000,     /* R9054 */
+    0x0000,     /* R9055 */
+    0x0000,     /* R9056 */
+    0x0000,     /* R9057 */
+    0x0000,     /* R9058 */
+    0x0000,     /* R9059 */
+    0x0000,     /* R9060 */
+    0x0000,     /* R9061 */
+    0x0000,     /* R9062 */
+    0x0000,     /* R9063 */
+    0x0000,     /* R9064 */
+    0x0000,     /* R9065 */
+    0x0000,     /* R9066 */
+    0x0000,     /* R9067 */
+    0x0000,     /* R9068 */
+    0x0000,     /* R9069 */
+    0x0000,     /* R9070 */
+    0x0000,     /* R9071 */
+    0x0000,     /* R9072 */
+    0x0000,     /* R9073 */
+    0x0000,     /* R9074 */
+    0x0000,     /* R9075 */
+    0x0000,     /* R9076 */
+    0x0000,     /* R9077 */
+    0x0000,     /* R9078 */
+    0x0000,     /* R9079 */
+    0x0000,     /* R9080 */
+    0x0000,     /* R9081 */
+    0x0000,     /* R9082 */
+    0x0000,     /* R9083 */
+    0x0000,     /* R9084 */
+    0x0000,     /* R9085 */
+    0x0000,     /* R9086 */
+    0x0000,     /* R9087 */
+    0x0000,     /* R9088 */
+    0x0000,     /* R9089 */
+    0x0000,     /* R9090 */
+    0x0000,     /* R9091 */
+    0x0000,     /* R9092 */
+    0x0000,     /* R9093 */
+    0x0000,     /* R9094 */
+    0x0000,     /* R9095 */
+    0x0000,     /* R9096 */
+    0x0000,     /* R9097 */
+    0x0000,     /* R9098 */
+    0x0000,     /* R9099 */
+    0x0000,     /* R9100 */
+    0x0000,     /* R9101 */
+    0x0000,     /* R9102 */
+    0x0000,     /* R9103 */
+    0x0000,     /* R9104 */
+    0x0000,     /* R9105 */
+    0x0000,     /* R9106 */
+    0x0000,     /* R9107 */
+    0x0000,     /* R9108 */
+    0x0000,     /* R9109 */
+    0x0000,     /* R9110 */
+    0x0000,     /* R9111 */
+    0x0000,     /* R9112 */
+    0x0000,     /* R9113 */
+    0x0000,     /* R9114 */
+    0x0000,     /* R9115 */
+    0x0000,     /* R9116 */
+    0x0000,     /* R9117 */
+    0x0000,     /* R9118 */
+    0x0000,     /* R9119 */
+    0x0000,     /* R9120 */
+    0x0000,     /* R9121 */
+    0x0000,     /* R9122 */
+    0x0000,     /* R9123 */
+    0x0000,     /* R9124 */
+    0x0000,     /* R9125 */
+    0x0000,     /* R9126 */
+    0x0000,     /* R9127 */
+    0x0000,     /* R9128 */
+    0x0000,     /* R9129 */
+    0x0000,     /* R9130 */
+    0x0000,     /* R9131 */
+    0x0000,     /* R9132 */
+    0x0000,     /* R9133 */
+    0x0000,     /* R9134 */
+    0x0000,     /* R9135 */
+    0x0000,     /* R9136 */
+    0x0000,     /* R9137 */
+    0x0000,     /* R9138 */
+    0x0000,     /* R9139 */
+    0x0000,     /* R9140 */
+    0x0000,     /* R9141 */
+    0x0000,     /* R9142 */
+    0x0000,     /* R9143 */
+    0x0000,     /* R9144 */
+    0x0000,     /* R9145 */
+    0x0000,     /* R9146 */
+    0x0000,     /* R9147 */
+    0x0000,     /* R9148 */
+    0x0000,     /* R9149 */
+    0x0000,     /* R9150 */
+    0x0000,     /* R9151 */
+    0x0000,     /* R9152 */
+    0x0000,     /* R9153 */
+    0x0000,     /* R9154 */
+    0x0000,     /* R9155 */
+    0x0000,     /* R9156 */
+    0x0000,     /* R9157 */
+    0x0000,     /* R9158 */
+    0x0000,     /* R9159 */
+    0x0000,     /* R9160 */
+    0x0000,     /* R9161 */
+    0x0000,     /* R9162 */
+    0x0000,     /* R9163 */
+    0x0000,     /* R9164 */
+    0x0000,     /* R9165 */
+    0x0000,     /* R9166 */
+    0x0000,     /* R9167 */
+    0x0000,     /* R9168 */
+    0x0000,     /* R9169 */
+    0x0000,     /* R9170 */
+    0x0000,     /* R9171 */
+    0x0000,     /* R9172 */
+    0x0000,     /* R9173 */
+    0x0000,     /* R9174 */
+    0x0000,     /* R9175 */
+    0x0000,     /* R9176 */
+    0x0000,     /* R9177 */
+    0x0000,     /* R9178 */
+    0x0000,     /* R9179 */
+    0x0000,     /* R9180 */
+    0x0000,     /* R9181 */
+    0x0000,     /* R9182 */
+    0x0000,     /* R9183 */
+    0x0000,     /* R9184 */
+    0x0000,     /* R9185 */
+    0x0000,     /* R9186 */
+    0x0000,     /* R9187 */
+    0x0000,     /* R9188 */
+    0x0000,     /* R9189 */
+    0x0000,     /* R9190 */
+    0x0000,     /* R9191 */
+    0x0000,     /* R9192 */
+    0x0000,     /* R9193 */
+    0x0000,     /* R9194 */
+    0x0000,     /* R9195 */
+    0x0000,     /* R9196 */
+    0x0000,     /* R9197 */
+    0x0000,     /* R9198 */
+    0x0000,     /* R9199 */
+    0x0000,     /* R9200 */
+    0x0000,     /* R9201 */
+    0x0000,     /* R9202 */
+    0x0000,     /* R9203 */
+    0x0000,     /* R9204 */
+    0x0000,     /* R9205 */
+    0x0000,     /* R9206 */
+    0x0000,     /* R9207 */
+    0x0000,     /* R9208 */
+    0x0000,     /* R9209 */
+    0x0000,     /* R9210 */
+    0x0000,     /* R9211 */
+    0x0000,     /* R9212 */
+    0x0000,     /* R9213 */
+    0x0000,     /* R9214 */
+    0x0000,     /* R9215 */
+    0x0030,     /* R9216  - DSP2 Address RAM 2 */
+    0x0000,     /* R9217  - DSP2 Address RAM 1 */
+    0x0000,     /* R9218  - DSP2 Address RAM 0 */
+    0x0000,     /* R9219 */
+    0x0000,     /* R9220 */
+    0x0000,     /* R9221 */
+    0x0000,     /* R9222 */
+    0x0000,     /* R9223 */
+    0x0000,     /* R9224 */
+    0x0000,     /* R9225 */
+    0x0000,     /* R9226 */
+    0x0000,     /* R9227 */
+    0x0000,     /* R9228 */
+    0x0000,     /* R9229 */
+    0x0000,     /* R9230 */
+    0x0000,     /* R9231 */
+    0x0000,     /* R9232 */
+    0x0000,     /* R9233 */
+    0x0000,     /* R9234 */
+    0x0000,     /* R9235 */
+    0x0000,     /* R9236 */
+    0x0000,     /* R9237 */
+    0x0000,     /* R9238 */
+    0x0000,     /* R9239 */
+    0x0000,     /* R9240 */
+    0x0000,     /* R9241 */
+    0x0000,     /* R9242 */
+    0x0000,     /* R9243 */
+    0x0000,     /* R9244 */
+    0x0000,     /* R9245 */
+    0x0000,     /* R9246 */
+    0x0000,     /* R9247 */
+    0x0000,     /* R9248 */
+    0x0000,     /* R9249 */
+    0x0000,     /* R9250 */
+    0x0000,     /* R9251 */
+    0x0000,     /* R9252 */
+    0x0000,     /* R9253 */
+    0x0000,     /* R9254 */
+    0x0000,     /* R9255 */
+    0x0000,     /* R9256 */
+    0x0000,     /* R9257 */
+    0x0000,     /* R9258 */
+    0x0000,     /* R9259 */
+    0x0000,     /* R9260 */
+    0x0000,     /* R9261 */
+    0x0000,     /* R9262 */
+    0x0000,     /* R9263 */
+    0x0000,     /* R9264 */
+    0x0000,     /* R9265 */
+    0x0000,     /* R9266 */
+    0x0000,     /* R9267 */
+    0x0000,     /* R9268 */
+    0x0000,     /* R9269 */
+    0x0000,     /* R9270 */
+    0x0000,     /* R9271 */
+    0x0000,     /* R9272 */
+    0x0000,     /* R9273 */
+    0x0000,     /* R9274 */
+    0x0000,     /* R9275 */
+    0x0000,     /* R9276 */
+    0x0000,     /* R9277 */
+    0x0000,     /* R9278 */
+    0x0000,     /* R9279 */
+    0x0000,     /* R9280 */
+    0x0000,     /* R9281 */
+    0x0000,     /* R9282 */
+    0x0000,     /* R9283 */
+    0x0000,     /* R9284 */
+    0x0000,     /* R9285 */
+    0x0000,     /* R9286 */
+    0x0000,     /* R9287 */
+    0x0000,     /* R9288 */
+    0x0000,     /* R9289 */
+    0x0000,     /* R9290 */
+    0x0000,     /* R9291 */
+    0x0000,     /* R9292 */
+    0x0000,     /* R9293 */
+    0x0000,     /* R9294 */
+    0x0000,     /* R9295 */
+    0x0000,     /* R9296 */
+    0x0000,     /* R9297 */
+    0x0000,     /* R9298 */
+    0x0000,     /* R9299 */
+    0x0000,     /* R9300 */
+    0x0000,     /* R9301 */
+    0x0000,     /* R9302 */
+    0x0000,     /* R9303 */
+    0x0000,     /* R9304 */
+    0x0000,     /* R9305 */
+    0x0000,     /* R9306 */
+    0x0000,     /* R9307 */
+    0x0000,     /* R9308 */
+    0x0000,     /* R9309 */
+    0x0000,     /* R9310 */
+    0x0000,     /* R9311 */
+    0x0000,     /* R9312 */
+    0x0000,     /* R9313 */
+    0x0000,     /* R9314 */
+    0x0000,     /* R9315 */
+    0x0000,     /* R9316 */
+    0x0000,     /* R9317 */
+    0x0000,     /* R9318 */
+    0x0000,     /* R9319 */
+    0x0000,     /* R9320 */
+    0x0000,     /* R9321 */
+    0x0000,     /* R9322 */
+    0x0000,     /* R9323 */
+    0x0000,     /* R9324 */
+    0x0000,     /* R9325 */
+    0x0000,     /* R9326 */
+    0x0000,     /* R9327 */
+    0x0000,     /* R9328 */
+    0x0000,     /* R9329 */
+    0x0000,     /* R9330 */
+    0x0000,     /* R9331 */
+    0x0000,     /* R9332 */
+    0x0000,     /* R9333 */
+    0x0000,     /* R9334 */
+    0x0000,     /* R9335 */
+    0x0000,     /* R9336 */
+    0x0000,     /* R9337 */
+    0x0000,     /* R9338 */
+    0x0000,     /* R9339 */
+    0x0000,     /* R9340 */
+    0x0000,     /* R9341 */
+    0x0000,     /* R9342 */
+    0x0000,     /* R9343 */
+    0x0000,     /* R9344 */
+    0x0000,     /* R9345 */
+    0x0000,     /* R9346 */
+    0x0000,     /* R9347 */
+    0x0000,     /* R9348 */
+    0x0000,     /* R9349 */
+    0x0000,     /* R9350 */
+    0x0000,     /* R9351 */
+    0x0000,     /* R9352 */
+    0x0000,     /* R9353 */
+    0x0000,     /* R9354 */
+    0x0000,     /* R9355 */
+    0x0000,     /* R9356 */
+    0x0000,     /* R9357 */
+    0x0000,     /* R9358 */
+    0x0000,     /* R9359 */
+    0x0000,     /* R9360 */
+    0x0000,     /* R9361 */
+    0x0000,     /* R9362 */
+    0x0000,     /* R9363 */
+    0x0000,     /* R9364 */
+    0x0000,     /* R9365 */
+    0x0000,     /* R9366 */
+    0x0000,     /* R9367 */
+    0x0000,     /* R9368 */
+    0x0000,     /* R9369 */
+    0x0000,     /* R9370 */
+    0x0000,     /* R9371 */
+    0x0000,     /* R9372 */
+    0x0000,     /* R9373 */
+    0x0000,     /* R9374 */
+    0x0000,     /* R9375 */
+    0x0000,     /* R9376 */
+    0x0000,     /* R9377 */
+    0x0000,     /* R9378 */
+    0x0000,     /* R9379 */
+    0x0000,     /* R9380 */
+    0x0000,     /* R9381 */
+    0x0000,     /* R9382 */
+    0x0000,     /* R9383 */
+    0x0000,     /* R9384 */
+    0x0000,     /* R9385 */
+    0x0000,     /* R9386 */
+    0x0000,     /* R9387 */
+    0x0000,     /* R9388 */
+    0x0000,     /* R9389 */
+    0x0000,     /* R9390 */
+    0x0000,     /* R9391 */
+    0x0000,     /* R9392 */
+    0x0000,     /* R9393 */
+    0x0000,     /* R9394 */
+    0x0000,     /* R9395 */
+    0x0000,     /* R9396 */
+    0x0000,     /* R9397 */
+    0x0000,     /* R9398 */
+    0x0000,     /* R9399 */
+    0x0000,     /* R9400 */
+    0x0000,     /* R9401 */
+    0x0000,     /* R9402 */
+    0x0000,     /* R9403 */
+    0x0000,     /* R9404 */
+    0x0000,     /* R9405 */
+    0x0000,     /* R9406 */
+    0x0000,     /* R9407 */
+    0x0000,     /* R9408 */
+    0x0000,     /* R9409 */
+    0x0000,     /* R9410 */
+    0x0000,     /* R9411 */
+    0x0000,     /* R9412 */
+    0x0000,     /* R9413 */
+    0x0000,     /* R9414 */
+    0x0000,     /* R9415 */
+    0x0000,     /* R9416 */
+    0x0000,     /* R9417 */
+    0x0000,     /* R9418 */
+    0x0000,     /* R9419 */
+    0x0000,     /* R9420 */
+    0x0000,     /* R9421 */
+    0x0000,     /* R9422 */
+    0x0000,     /* R9423 */
+    0x0000,     /* R9424 */
+    0x0000,     /* R9425 */
+    0x0000,     /* R9426 */
+    0x0000,     /* R9427 */
+    0x0000,     /* R9428 */
+    0x0000,     /* R9429 */
+    0x0000,     /* R9430 */
+    0x0000,     /* R9431 */
+    0x0000,     /* R9432 */
+    0x0000,     /* R9433 */
+    0x0000,     /* R9434 */
+    0x0000,     /* R9435 */
+    0x0000,     /* R9436 */
+    0x0000,     /* R9437 */
+    0x0000,     /* R9438 */
+    0x0000,     /* R9439 */
+    0x0000,     /* R9440 */
+    0x0000,     /* R9441 */
+    0x0000,     /* R9442 */
+    0x0000,     /* R9443 */
+    0x0000,     /* R9444 */
+    0x0000,     /* R9445 */
+    0x0000,     /* R9446 */
+    0x0000,     /* R9447 */
+    0x0000,     /* R9448 */
+    0x0000,     /* R9449 */
+    0x0000,     /* R9450 */
+    0x0000,     /* R9451 */
+    0x0000,     /* R9452 */
+    0x0000,     /* R9453 */
+    0x0000,     /* R9454 */
+    0x0000,     /* R9455 */
+    0x0000,     /* R9456 */
+    0x0000,     /* R9457 */
+    0x0000,     /* R9458 */
+    0x0000,     /* R9459 */
+    0x0000,     /* R9460 */
+    0x0000,     /* R9461 */
+    0x0000,     /* R9462 */
+    0x0000,     /* R9463 */
+    0x0000,     /* R9464 */
+    0x0000,     /* R9465 */
+    0x0000,     /* R9466 */
+    0x0000,     /* R9467 */
+    0x0000,     /* R9468 */
+    0x0000,     /* R9469 */
+    0x0000,     /* R9470 */
+    0x0000,     /* R9471 */
+    0x0000,     /* R9472 */
+    0x0000,     /* R9473 */
+    0x0000,     /* R9474 */
+    0x0000,     /* R9475 */
+    0x0000,     /* R9476 */
+    0x0000,     /* R9477 */
+    0x0000,     /* R9478 */
+    0x0000,     /* R9479 */
+    0x0000,     /* R9480 */
+    0x0000,     /* R9481 */
+    0x0000,     /* R9482 */
+    0x0000,     /* R9483 */
+    0x0000,     /* R9484 */
+    0x0000,     /* R9485 */
+    0x0000,     /* R9486 */
+    0x0000,     /* R9487 */
+    0x0000,     /* R9488 */
+    0x0000,     /* R9489 */
+    0x0000,     /* R9490 */
+    0x0000,     /* R9491 */
+    0x0000,     /* R9492 */
+    0x0000,     /* R9493 */
+    0x0000,     /* R9494 */
+    0x0000,     /* R9495 */
+    0x0000,     /* R9496 */
+    0x0000,     /* R9497 */
+    0x0000,     /* R9498 */
+    0x0000,     /* R9499 */
+    0x0000,     /* R9500 */
+    0x0000,     /* R9501 */
+    0x0000,     /* R9502 */
+    0x0000,     /* R9503 */
+    0x0000,     /* R9504 */
+    0x0000,     /* R9505 */
+    0x0000,     /* R9506 */
+    0x0000,     /* R9507 */
+    0x0000,     /* R9508 */
+    0x0000,     /* R9509 */
+    0x0000,     /* R9510 */
+    0x0000,     /* R9511 */
+    0x0000,     /* R9512 */
+    0x0000,     /* R9513 */
+    0x0000,     /* R9514 */
+    0x0000,     /* R9515 */
+    0x0000,     /* R9516 */
+    0x0000,     /* R9517 */
+    0x0000,     /* R9518 */
+    0x0000,     /* R9519 */
+    0x0000,     /* R9520 */
+    0x0000,     /* R9521 */
+    0x0000,     /* R9522 */
+    0x0000,     /* R9523 */
+    0x0000,     /* R9524 */
+    0x0000,     /* R9525 */
+    0x0000,     /* R9526 */
+    0x0000,     /* R9527 */
+    0x0000,     /* R9528 */
+    0x0000,     /* R9529 */
+    0x0000,     /* R9530 */
+    0x0000,     /* R9531 */
+    0x0000,     /* R9532 */
+    0x0000,     /* R9533 */
+    0x0000,     /* R9534 */
+    0x0000,     /* R9535 */
+    0x0000,     /* R9536 */
+    0x0000,     /* R9537 */
+    0x0000,     /* R9538 */
+    0x0000,     /* R9539 */
+    0x0000,     /* R9540 */
+    0x0000,     /* R9541 */
+    0x0000,     /* R9542 */
+    0x0000,     /* R9543 */
+    0x0000,     /* R9544 */
+    0x0000,     /* R9545 */
+    0x0000,     /* R9546 */
+    0x0000,     /* R9547 */
+    0x0000,     /* R9548 */
+    0x0000,     /* R9549 */
+    0x0000,     /* R9550 */
+    0x0000,     /* R9551 */
+    0x0000,     /* R9552 */
+    0x0000,     /* R9553 */
+    0x0000,     /* R9554 */
+    0x0000,     /* R9555 */
+    0x0000,     /* R9556 */
+    0x0000,     /* R9557 */
+    0x0000,     /* R9558 */
+    0x0000,     /* R9559 */
+    0x0000,     /* R9560 */
+    0x0000,     /* R9561 */
+    0x0000,     /* R9562 */
+    0x0000,     /* R9563 */
+    0x0000,     /* R9564 */
+    0x0000,     /* R9565 */
+    0x0000,     /* R9566 */
+    0x0000,     /* R9567 */
+    0x0000,     /* R9568 */
+    0x0000,     /* R9569 */
+    0x0000,     /* R9570 */
+    0x0000,     /* R9571 */
+    0x0000,     /* R9572 */
+    0x0000,     /* R9573 */
+    0x0000,     /* R9574 */
+    0x0000,     /* R9575 */
+    0x0000,     /* R9576 */
+    0x0000,     /* R9577 */
+    0x0000,     /* R9578 */
+    0x0000,     /* R9579 */
+    0x0000,     /* R9580 */
+    0x0000,     /* R9581 */
+    0x0000,     /* R9582 */
+    0x0000,     /* R9583 */
+    0x0000,     /* R9584 */
+    0x0000,     /* R9585 */
+    0x0000,     /* R9586 */
+    0x0000,     /* R9587 */
+    0x0000,     /* R9588 */
+    0x0000,     /* R9589 */
+    0x0000,     /* R9590 */
+    0x0000,     /* R9591 */
+    0x0000,     /* R9592 */
+    0x0000,     /* R9593 */
+    0x0000,     /* R9594 */
+    0x0000,     /* R9595 */
+    0x0000,     /* R9596 */
+    0x0000,     /* R9597 */
+    0x0000,     /* R9598 */
+    0x0000,     /* R9599 */
+    0x0000,     /* R9600 */
+    0x0000,     /* R9601 */
+    0x0000,     /* R9602 */
+    0x0000,     /* R9603 */
+    0x0000,     /* R9604 */
+    0x0000,     /* R9605 */
+    0x0000,     /* R9606 */
+    0x0000,     /* R9607 */
+    0x0000,     /* R9608 */
+    0x0000,     /* R9609 */
+    0x0000,     /* R9610 */
+    0x0000,     /* R9611 */
+    0x0000,     /* R9612 */
+    0x0000,     /* R9613 */
+    0x0000,     /* R9614 */
+    0x0000,     /* R9615 */
+    0x0000,     /* R9616 */
+    0x0000,     /* R9617 */
+    0x0000,     /* R9618 */
+    0x0000,     /* R9619 */
+    0x0000,     /* R9620 */
+    0x0000,     /* R9621 */
+    0x0000,     /* R9622 */
+    0x0000,     /* R9623 */
+    0x0000,     /* R9624 */
+    0x0000,     /* R9625 */
+    0x0000,     /* R9626 */
+    0x0000,     /* R9627 */
+    0x0000,     /* R9628 */
+    0x0000,     /* R9629 */
+    0x0000,     /* R9630 */
+    0x0000,     /* R9631 */
+    0x0000,     /* R9632 */
+    0x0000,     /* R9633 */
+    0x0000,     /* R9634 */
+    0x0000,     /* R9635 */
+    0x0000,     /* R9636 */
+    0x0000,     /* R9637 */
+    0x0000,     /* R9638 */
+    0x0000,     /* R9639 */
+    0x0000,     /* R9640 */
+    0x0000,     /* R9641 */
+    0x0000,     /* R9642 */
+    0x0000,     /* R9643 */
+    0x0000,     /* R9644 */
+    0x0000,     /* R9645 */
+    0x0000,     /* R9646 */
+    0x0000,     /* R9647 */
+    0x0000,     /* R9648 */
+    0x0000,     /* R9649 */
+    0x0000,     /* R9650 */
+    0x0000,     /* R9651 */
+    0x0000,     /* R9652 */
+    0x0000,     /* R9653 */
+    0x0000,     /* R9654 */
+    0x0000,     /* R9655 */
+    0x0000,     /* R9656 */
+    0x0000,     /* R9657 */
+    0x0000,     /* R9658 */
+    0x0000,     /* R9659 */
+    0x0000,     /* R9660 */
+    0x0000,     /* R9661 */
+    0x0000,     /* R9662 */
+    0x0000,     /* R9663 */
+    0x0000,     /* R9664 */
+    0x0000,     /* R9665 */
+    0x0000,     /* R9666 */
+    0x0000,     /* R9667 */
+    0x0000,     /* R9668 */
+    0x0000,     /* R9669 */
+    0x0000,     /* R9670 */
+    0x0000,     /* R9671 */
+    0x0000,     /* R9672 */
+    0x0000,     /* R9673 */
+    0x0000,     /* R9674 */
+    0x0000,     /* R9675 */
+    0x0000,     /* R9676 */
+    0x0000,     /* R9677 */
+    0x0000,     /* R9678 */
+    0x0000,     /* R9679 */
+    0x0000,     /* R9680 */
+    0x0000,     /* R9681 */
+    0x0000,     /* R9682 */
+    0x0000,     /* R9683 */
+    0x0000,     /* R9684 */
+    0x0000,     /* R9685 */
+    0x0000,     /* R9686 */
+    0x0000,     /* R9687 */
+    0x0000,     /* R9688 */
+    0x0000,     /* R9689 */
+    0x0000,     /* R9690 */
+    0x0000,     /* R9691 */
+    0x0000,     /* R9692 */
+    0x0000,     /* R9693 */
+    0x0000,     /* R9694 */
+    0x0000,     /* R9695 */
+    0x0000,     /* R9696 */
+    0x0000,     /* R9697 */
+    0x0000,     /* R9698 */
+    0x0000,     /* R9699 */
+    0x0000,     /* R9700 */
+    0x0000,     /* R9701 */
+    0x0000,     /* R9702 */
+    0x0000,     /* R9703 */
+    0x0000,     /* R9704 */
+    0x0000,     /* R9705 */
+    0x0000,     /* R9706 */
+    0x0000,     /* R9707 */
+    0x0000,     /* R9708 */
+    0x0000,     /* R9709 */
+    0x0000,     /* R9710 */
+    0x0000,     /* R9711 */
+    0x0000,     /* R9712 */
+    0x0000,     /* R9713 */
+    0x0000,     /* R9714 */
+    0x0000,     /* R9715 */
+    0x0000,     /* R9716 */
+    0x0000,     /* R9717 */
+    0x0000,     /* R9718 */
+    0x0000,     /* R9719 */
+    0x0000,     /* R9720 */
+    0x0000,     /* R9721 */
+    0x0000,     /* R9722 */
+    0x0000,     /* R9723 */
+    0x0000,     /* R9724 */
+    0x0000,     /* R9725 */
+    0x0000,     /* R9726 */
+    0x0000,     /* R9727 */
+    0x0000,     /* R9728 */
+    0x0000,     /* R9729 */
+    0x0000,     /* R9730 */
+    0x0000,     /* R9731 */
+    0x0000,     /* R9732 */
+    0x0000,     /* R9733 */
+    0x0000,     /* R9734 */
+    0x0000,     /* R9735 */
+    0x0000,     /* R9736 */
+    0x0000,     /* R9737 */
+    0x0000,     /* R9738 */
+    0x0000,     /* R9739 */
+    0x0000,     /* R9740 */
+    0x0000,     /* R9741 */
+    0x0000,     /* R9742 */
+    0x0000,     /* R9743 */
+    0x0000,     /* R9744 */
+    0x0000,     /* R9745 */
+    0x0000,     /* R9746 */
+    0x0000,     /* R9747 */
+    0x0000,     /* R9748 */
+    0x0000,     /* R9749 */
+    0x0000,     /* R9750 */
+    0x0000,     /* R9751 */
+    0x0000,     /* R9752 */
+    0x0000,     /* R9753 */
+    0x0000,     /* R9754 */
+    0x0000,     /* R9755 */
+    0x0000,     /* R9756 */
+    0x0000,     /* R9757 */
+    0x0000,     /* R9758 */
+    0x0000,     /* R9759 */
+    0x0000,     /* R9760 */
+    0x0000,     /* R9761 */
+    0x0000,     /* R9762 */
+    0x0000,     /* R9763 */
+    0x0000,     /* R9764 */
+    0x0000,     /* R9765 */
+    0x0000,     /* R9766 */
+    0x0000,     /* R9767 */
+    0x0000,     /* R9768 */
+    0x0000,     /* R9769 */
+    0x0000,     /* R9770 */
+    0x0000,     /* R9771 */
+    0x0000,     /* R9772 */
+    0x0000,     /* R9773 */
+    0x0000,     /* R9774 */
+    0x0000,     /* R9775 */
+    0x0000,     /* R9776 */
+    0x0000,     /* R9777 */
+    0x0000,     /* R9778 */
+    0x0000,     /* R9779 */
+    0x0000,     /* R9780 */
+    0x0000,     /* R9781 */
+    0x0000,     /* R9782 */
+    0x0000,     /* R9783 */
+    0x0000,     /* R9784 */
+    0x0000,     /* R9785 */
+    0x0000,     /* R9786 */
+    0x0000,     /* R9787 */
+    0x0000,     /* R9788 */
+    0x0000,     /* R9789 */
+    0x0000,     /* R9790 */
+    0x0000,     /* R9791 */
+    0x0000,     /* R9792 */
+    0x0000,     /* R9793 */
+    0x0000,     /* R9794 */
+    0x0000,     /* R9795 */
+    0x0000,     /* R9796 */
+    0x0000,     /* R9797 */
+    0x0000,     /* R9798 */
+    0x0000,     /* R9799 */
+    0x0000,     /* R9800 */
+    0x0000,     /* R9801 */
+    0x0000,     /* R9802 */
+    0x0000,     /* R9803 */
+    0x0000,     /* R9804 */
+    0x0000,     /* R9805 */
+    0x0000,     /* R9806 */
+    0x0000,     /* R9807 */
+    0x0000,     /* R9808 */
+    0x0000,     /* R9809 */
+    0x0000,     /* R9810 */
+    0x0000,     /* R9811 */
+    0x0000,     /* R9812 */
+    0x0000,     /* R9813 */
+    0x0000,     /* R9814 */
+    0x0000,     /* R9815 */
+    0x0000,     /* R9816 */
+    0x0000,     /* R9817 */
+    0x0000,     /* R9818 */
+    0x0000,     /* R9819 */
+    0x0000,     /* R9820 */
+    0x0000,     /* R9821 */
+    0x0000,     /* R9822 */
+    0x0000,     /* R9823 */
+    0x0000,     /* R9824 */
+    0x0000,     /* R9825 */
+    0x0000,     /* R9826 */
+    0x0000,     /* R9827 */
+    0x0000,     /* R9828 */
+    0x0000,     /* R9829 */
+    0x0000,     /* R9830 */
+    0x0000,     /* R9831 */
+    0x0000,     /* R9832 */
+    0x0000,     /* R9833 */
+    0x0000,     /* R9834 */
+    0x0000,     /* R9835 */
+    0x0000,     /* R9836 */
+    0x0000,     /* R9837 */
+    0x0000,     /* R9838 */
+    0x0000,     /* R9839 */
+    0x0000,     /* R9840 */
+    0x0000,     /* R9841 */
+    0x0000,     /* R9842 */
+    0x0000,     /* R9843 */
+    0x0000,     /* R9844 */
+    0x0000,     /* R9845 */
+    0x0000,     /* R9846 */
+    0x0000,     /* R9847 */
+    0x0000,     /* R9848 */
+    0x0000,     /* R9849 */
+    0x0000,     /* R9850 */
+    0x0000,     /* R9851 */
+    0x0000,     /* R9852 */
+    0x0000,     /* R9853 */
+    0x0000,     /* R9854 */
+    0x0000,     /* R9855 */
+    0x0000,     /* R9856 */
+    0x0000,     /* R9857 */
+    0x0000,     /* R9858 */
+    0x0000,     /* R9859 */
+    0x0000,     /* R9860 */
+    0x0000,     /* R9861 */
+    0x0000,     /* R9862 */
+    0x0000,     /* R9863 */
+    0x0000,     /* R9864 */
+    0x0000,     /* R9865 */
+    0x0000,     /* R9866 */
+    0x0000,     /* R9867 */
+    0x0000,     /* R9868 */
+    0x0000,     /* R9869 */
+    0x0000,     /* R9870 */
+    0x0000,     /* R9871 */
+    0x0000,     /* R9872 */
+    0x0000,     /* R9873 */
+    0x0000,     /* R9874 */
+    0x0000,     /* R9875 */
+    0x0000,     /* R9876 */
+    0x0000,     /* R9877 */
+    0x0000,     /* R9878 */
+    0x0000,     /* R9879 */
+    0x0000,     /* R9880 */
+    0x0000,     /* R9881 */
+    0x0000,     /* R9882 */
+    0x0000,     /* R9883 */
+    0x0000,     /* R9884 */
+    0x0000,     /* R9885 */
+    0x0000,     /* R9886 */
+    0x0000,     /* R9887 */
+    0x0000,     /* R9888 */
+    0x0000,     /* R9889 */
+    0x0000,     /* R9890 */
+    0x0000,     /* R9891 */
+    0x0000,     /* R9892 */
+    0x0000,     /* R9893 */
+    0x0000,     /* R9894 */
+    0x0000,     /* R9895 */
+    0x0000,     /* R9896 */
+    0x0000,     /* R9897 */
+    0x0000,     /* R9898 */
+    0x0000,     /* R9899 */
+    0x0000,     /* R9900 */
+    0x0000,     /* R9901 */
+    0x0000,     /* R9902 */
+    0x0000,     /* R9903 */
+    0x0000,     /* R9904 */
+    0x0000,     /* R9905 */
+    0x0000,     /* R9906 */
+    0x0000,     /* R9907 */
+    0x0000,     /* R9908 */
+    0x0000,     /* R9909 */
+    0x0000,     /* R9910 */
+    0x0000,     /* R9911 */
+    0x0000,     /* R9912 */
+    0x0000,     /* R9913 */
+    0x0000,     /* R9914 */
+    0x0000,     /* R9915 */
+    0x0000,     /* R9916 */
+    0x0000,     /* R9917 */
+    0x0000,     /* R9918 */
+    0x0000,     /* R9919 */
+    0x0000,     /* R9920 */
+    0x0000,     /* R9921 */
+    0x0000,     /* R9922 */
+    0x0000,     /* R9923 */
+    0x0000,     /* R9924 */
+    0x0000,     /* R9925 */
+    0x0000,     /* R9926 */
+    0x0000,     /* R9927 */
+    0x0000,     /* R9928 */
+    0x0000,     /* R9929 */
+    0x0000,     /* R9930 */
+    0x0000,     /* R9931 */
+    0x0000,     /* R9932 */
+    0x0000,     /* R9933 */
+    0x0000,     /* R9934 */
+    0x0000,     /* R9935 */
+    0x0000,     /* R9936 */
+    0x0000,     /* R9937 */
+    0x0000,     /* R9938 */
+    0x0000,     /* R9939 */
+    0x0000,     /* R9940 */
+    0x0000,     /* R9941 */
+    0x0000,     /* R9942 */
+    0x0000,     /* R9943 */
+    0x0000,     /* R9944 */
+    0x0000,     /* R9945 */
+    0x0000,     /* R9946 */
+    0x0000,     /* R9947 */
+    0x0000,     /* R9948 */
+    0x0000,     /* R9949 */
+    0x0000,     /* R9950 */
+    0x0000,     /* R9951 */
+    0x0000,     /* R9952 */
+    0x0000,     /* R9953 */
+    0x0000,     /* R9954 */
+    0x0000,     /* R9955 */
+    0x0000,     /* R9956 */
+    0x0000,     /* R9957 */
+    0x0000,     /* R9958 */
+    0x0000,     /* R9959 */
+    0x0000,     /* R9960 */
+    0x0000,     /* R9961 */
+    0x0000,     /* R9962 */
+    0x0000,     /* R9963 */
+    0x0000,     /* R9964 */
+    0x0000,     /* R9965 */
+    0x0000,     /* R9966 */
+    0x0000,     /* R9967 */
+    0x0000,     /* R9968 */
+    0x0000,     /* R9969 */
+    0x0000,     /* R9970 */
+    0x0000,     /* R9971 */
+    0x0000,     /* R9972 */
+    0x0000,     /* R9973 */
+    0x0000,     /* R9974 */
+    0x0000,     /* R9975 */
+    0x0000,     /* R9976 */
+    0x0000,     /* R9977 */
+    0x0000,     /* R9978 */
+    0x0000,     /* R9979 */
+    0x0000,     /* R9980 */
+    0x0000,     /* R9981 */
+    0x0000,     /* R9982 */
+    0x0000,     /* R9983 */
+    0x0000,     /* R9984 */
+    0x0000,     /* R9985 */
+    0x0000,     /* R9986 */
+    0x0000,     /* R9987 */
+    0x0000,     /* R9988 */
+    0x0000,     /* R9989 */
+    0x0000,     /* R9990 */
+    0x0000,     /* R9991 */
+    0x0000,     /* R9992 */
+    0x0000,     /* R9993 */
+    0x0000,     /* R9994 */
+    0x0000,     /* R9995 */
+    0x0000,     /* R9996 */
+    0x0000,     /* R9997 */
+    0x0000,     /* R9998 */
+    0x0000,     /* R9999 */
+    0x0000,     /* R10000 */
+    0x0000,     /* R10001 */
+    0x0000,     /* R10002 */
+    0x0000,     /* R10003 */
+    0x0000,     /* R10004 */
+    0x0000,     /* R10005 */
+    0x0000,     /* R10006 */
+    0x0000,     /* R10007 */
+    0x0000,     /* R10008 */
+    0x0000,     /* R10009 */
+    0x0000,     /* R10010 */
+    0x0000,     /* R10011 */
+    0x0000,     /* R10012 */
+    0x0000,     /* R10013 */
+    0x0000,     /* R10014 */
+    0x0000,     /* R10015 */
+    0x0000,     /* R10016 */
+    0x0000,     /* R10017 */
+    0x0000,     /* R10018 */
+    0x0000,     /* R10019 */
+    0x0000,     /* R10020 */
+    0x0000,     /* R10021 */
+    0x0000,     /* R10022 */
+    0x0000,     /* R10023 */
+    0x0000,     /* R10024 */
+    0x0000,     /* R10025 */
+    0x0000,     /* R10026 */
+    0x0000,     /* R10027 */
+    0x0000,     /* R10028 */
+    0x0000,     /* R10029 */
+    0x0000,     /* R10030 */
+    0x0000,     /* R10031 */
+    0x0000,     /* R10032 */
+    0x0000,     /* R10033 */
+    0x0000,     /* R10034 */
+    0x0000,     /* R10035 */
+    0x0000,     /* R10036 */
+    0x0000,     /* R10037 */
+    0x0000,     /* R10038 */
+    0x0000,     /* R10039 */
+    0x0000,     /* R10040 */
+    0x0000,     /* R10041 */
+    0x0000,     /* R10042 */
+    0x0000,     /* R10043 */
+    0x0000,     /* R10044 */
+    0x0000,     /* R10045 */
+    0x0000,     /* R10046 */
+    0x0000,     /* R10047 */
+    0x0000,     /* R10048 */
+    0x0000,     /* R10049 */
+    0x0000,     /* R10050 */
+    0x0000,     /* R10051 */
+    0x0000,     /* R10052 */
+    0x0000,     /* R10053 */
+    0x0000,     /* R10054 */
+    0x0000,     /* R10055 */
+    0x0000,     /* R10056 */
+    0x0000,     /* R10057 */
+    0x0000,     /* R10058 */
+    0x0000,     /* R10059 */
+    0x0000,     /* R10060 */
+    0x0000,     /* R10061 */
+    0x0000,     /* R10062 */
+    0x0000,     /* R10063 */
+    0x0000,     /* R10064 */
+    0x0000,     /* R10065 */
+    0x0000,     /* R10066 */
+    0x0000,     /* R10067 */
+    0x0000,     /* R10068 */
+    0x0000,     /* R10069 */
+    0x0000,     /* R10070 */
+    0x0000,     /* R10071 */
+    0x0000,     /* R10072 */
+    0x0000,     /* R10073 */
+    0x0000,     /* R10074 */
+    0x0000,     /* R10075 */
+    0x0000,     /* R10076 */
+    0x0000,     /* R10077 */
+    0x0000,     /* R10078 */
+    0x0000,     /* R10079 */
+    0x0000,     /* R10080 */
+    0x0000,     /* R10081 */
+    0x0000,     /* R10082 */
+    0x0000,     /* R10083 */
+    0x0000,     /* R10084 */
+    0x0000,     /* R10085 */
+    0x0000,     /* R10086 */
+    0x0000,     /* R10087 */
+    0x0000,     /* R10088 */
+    0x0000,     /* R10089 */
+    0x0000,     /* R10090 */
+    0x0000,     /* R10091 */
+    0x0000,     /* R10092 */
+    0x0000,     /* R10093 */
+    0x0000,     /* R10094 */
+    0x0000,     /* R10095 */
+    0x0000,     /* R10096 */
+    0x0000,     /* R10097 */
+    0x0000,     /* R10098 */
+    0x0000,     /* R10099 */
+    0x0000,     /* R10100 */
+    0x0000,     /* R10101 */
+    0x0000,     /* R10102 */
+    0x0000,     /* R10103 */
+    0x0000,     /* R10104 */
+    0x0000,     /* R10105 */
+    0x0000,     /* R10106 */
+    0x0000,     /* R10107 */
+    0x0000,     /* R10108 */
+    0x0000,     /* R10109 */
+    0x0000,     /* R10110 */
+    0x0000,     /* R10111 */
+    0x0000,     /* R10112 */
+    0x0000,     /* R10113 */
+    0x0000,     /* R10114 */
+    0x0000,     /* R10115 */
+    0x0000,     /* R10116 */
+    0x0000,     /* R10117 */
+    0x0000,     /* R10118 */
+    0x0000,     /* R10119 */
+    0x0000,     /* R10120 */
+    0x0000,     /* R10121 */
+    0x0000,     /* R10122 */
+    0x0000,     /* R10123 */
+    0x0000,     /* R10124 */
+    0x0000,     /* R10125 */
+    0x0000,     /* R10126 */
+    0x0000,     /* R10127 */
+    0x0000,     /* R10128 */
+    0x0000,     /* R10129 */
+    0x0000,     /* R10130 */
+    0x0000,     /* R10131 */
+    0x0000,     /* R10132 */
+    0x0000,     /* R10133 */
+    0x0000,     /* R10134 */
+    0x0000,     /* R10135 */
+    0x0000,     /* R10136 */
+    0x0000,     /* R10137 */
+    0x0000,     /* R10138 */
+    0x0000,     /* R10139 */
+    0x0000,     /* R10140 */
+    0x0000,     /* R10141 */
+    0x0000,     /* R10142 */
+    0x0000,     /* R10143 */
+    0x0000,     /* R10144 */
+    0x0000,     /* R10145 */
+    0x0000,     /* R10146 */
+    0x0000,     /* R10147 */
+    0x0000,     /* R10148 */
+    0x0000,     /* R10149 */
+    0x0000,     /* R10150 */
+    0x0000,     /* R10151 */
+    0x0000,     /* R10152 */
+    0x0000,     /* R10153 */
+    0x0000,     /* R10154 */
+    0x0000,     /* R10155 */
+    0x0000,     /* R10156 */
+    0x0000,     /* R10157 */
+    0x0000,     /* R10158 */
+    0x0000,     /* R10159 */
+    0x0000,     /* R10160 */
+    0x0000,     /* R10161 */
+    0x0000,     /* R10162 */
+    0x0000,     /* R10163 */
+    0x0000,     /* R10164 */
+    0x0000,     /* R10165 */
+    0x0000,     /* R10166 */
+    0x0000,     /* R10167 */
+    0x0000,     /* R10168 */
+    0x0000,     /* R10169 */
+    0x0000,     /* R10170 */
+    0x0000,     /* R10171 */
+    0x0000,     /* R10172 */
+    0x0000,     /* R10173 */
+    0x0000,     /* R10174 */
+    0x0000,     /* R10175 */
+    0x0000,     /* R10176 */
+    0x0000,     /* R10177 */
+    0x0000,     /* R10178 */
+    0x0000,     /* R10179 */
+    0x0000,     /* R10180 */
+    0x0000,     /* R10181 */
+    0x0000,     /* R10182 */
+    0x0000,     /* R10183 */
+    0x0000,     /* R10184 */
+    0x0000,     /* R10185 */
+    0x0000,     /* R10186 */
+    0x0000,     /* R10187 */
+    0x0000,     /* R10188 */
+    0x0000,     /* R10189 */
+    0x0000,     /* R10190 */
+    0x0000,     /* R10191 */
+    0x0000,     /* R10192 */
+    0x0000,     /* R10193 */
+    0x0000,     /* R10194 */
+    0x0000,     /* R10195 */
+    0x0000,     /* R10196 */
+    0x0000,     /* R10197 */
+    0x0000,     /* R10198 */
+    0x0000,     /* R10199 */
+    0x0000,     /* R10200 */
+    0x0000,     /* R10201 */
+    0x0000,     /* R10202 */
+    0x0000,     /* R10203 */
+    0x0000,     /* R10204 */
+    0x0000,     /* R10205 */
+    0x0000,     /* R10206 */
+    0x0000,     /* R10207 */
+    0x0000,     /* R10208 */
+    0x0000,     /* R10209 */
+    0x0000,     /* R10210 */
+    0x0000,     /* R10211 */
+    0x0000,     /* R10212 */
+    0x0000,     /* R10213 */
+    0x0000,     /* R10214 */
+    0x0000,     /* R10215 */
+    0x0000,     /* R10216 */
+    0x0000,     /* R10217 */
+    0x0000,     /* R10218 */
+    0x0000,     /* R10219 */
+    0x0000,     /* R10220 */
+    0x0000,     /* R10221 */
+    0x0000,     /* R10222 */
+    0x0000,     /* R10223 */
+    0x0000,     /* R10224 */
+    0x0000,     /* R10225 */
+    0x0000,     /* R10226 */
+    0x0000,     /* R10227 */
+    0x0000,     /* R10228 */
+    0x0000,     /* R10229 */
+    0x0000,     /* R10230 */
+    0x0000,     /* R10231 */
+    0x0000,     /* R10232 */
+    0x0000,     /* R10233 */
+    0x0000,     /* R10234 */
+    0x0000,     /* R10235 */
+    0x0000,     /* R10236 */
+    0x0000,     /* R10237 */
+    0x0000,     /* R10238 */
+    0x0000,     /* R10239 */
+    0x0000,     /* R10240 */
+    0x0000,     /* R10241 */
+    0x0000,     /* R10242 */
+    0x0000,     /* R10243 */
+    0x0000,     /* R10244 */
+    0x0000,     /* R10245 */
+    0x0000,     /* R10246 */
+    0x0000,     /* R10247 */
+    0x0000,     /* R10248 */
+    0x0000,     /* R10249 */
+    0x0000,     /* R10250 */
+    0x0000,     /* R10251 */
+    0x0000,     /* R10252 */
+    0x0000,     /* R10253 */
+    0x0000,     /* R10254 */
+    0x0000,     /* R10255 */
+    0x0000,     /* R10256 */
+    0x0000,     /* R10257 */
+    0x0000,     /* R10258 */
+    0x0000,     /* R10259 */
+    0x0000,     /* R10260 */
+    0x0000,     /* R10261 */
+    0x0000,     /* R10262 */
+    0x0000,     /* R10263 */
+    0x0000,     /* R10264 */
+    0x0000,     /* R10265 */
+    0x0000,     /* R10266 */
+    0x0000,     /* R10267 */
+    0x0000,     /* R10268 */
+    0x0000,     /* R10269 */
+    0x0000,     /* R10270 */
+    0x0000,     /* R10271 */
+    0x0000,     /* R10272 */
+    0x0000,     /* R10273 */
+    0x0000,     /* R10274 */
+    0x0000,     /* R10275 */
+    0x0000,     /* R10276 */
+    0x0000,     /* R10277 */
+    0x0000,     /* R10278 */
+    0x0000,     /* R10279 */
+    0x0000,     /* R10280 */
+    0x0000,     /* R10281 */
+    0x0000,     /* R10282 */
+    0x0000,     /* R10283 */
+    0x0000,     /* R10284 */
+    0x0000,     /* R10285 */
+    0x0000,     /* R10286 */
+    0x0000,     /* R10287 */
+    0x0000,     /* R10288 */
+    0x0000,     /* R10289 */
+    0x0000,     /* R10290 */
+    0x0000,     /* R10291 */
+    0x0000,     /* R10292 */
+    0x0000,     /* R10293 */
+    0x0000,     /* R10294 */
+    0x0000,     /* R10295 */
+    0x0000,     /* R10296 */
+    0x0000,     /* R10297 */
+    0x0000,     /* R10298 */
+    0x0000,     /* R10299 */
+    0x0000,     /* R10300 */
+    0x0000,     /* R10301 */
+    0x0000,     /* R10302 */
+    0x0000,     /* R10303 */
+    0x0000,     /* R10304 */
+    0x0000,     /* R10305 */
+    0x0000,     /* R10306 */
+    0x0000,     /* R10307 */
+    0x0000,     /* R10308 */
+    0x0000,     /* R10309 */
+    0x0000,     /* R10310 */
+    0x0000,     /* R10311 */
+    0x0000,     /* R10312 */
+    0x0000,     /* R10313 */
+    0x0000,     /* R10314 */
+    0x0000,     /* R10315 */
+    0x0000,     /* R10316 */
+    0x0000,     /* R10317 */
+    0x0000,     /* R10318 */
+    0x0000,     /* R10319 */
+    0x0000,     /* R10320 */
+    0x0000,     /* R10321 */
+    0x0000,     /* R10322 */
+    0x0000,     /* R10323 */
+    0x0000,     /* R10324 */
+    0x0000,     /* R10325 */
+    0x0000,     /* R10326 */
+    0x0000,     /* R10327 */
+    0x0000,     /* R10328 */
+    0x0000,     /* R10329 */
+    0x0000,     /* R10330 */
+    0x0000,     /* R10331 */
+    0x0000,     /* R10332 */
+    0x0000,     /* R10333 */
+    0x0000,     /* R10334 */
+    0x0000,     /* R10335 */
+    0x0000,     /* R10336 */
+    0x0000,     /* R10337 */
+    0x0000,     /* R10338 */
+    0x0000,     /* R10339 */
+    0x0000,     /* R10340 */
+    0x0000,     /* R10341 */
+    0x0000,     /* R10342 */
+    0x0000,     /* R10343 */
+    0x0000,     /* R10344 */
+    0x0000,     /* R10345 */
+    0x0000,     /* R10346 */
+    0x0000,     /* R10347 */
+    0x0000,     /* R10348 */
+    0x0000,     /* R10349 */
+    0x0000,     /* R10350 */
+    0x0000,     /* R10351 */
+    0x0000,     /* R10352 */
+    0x0000,     /* R10353 */
+    0x0000,     /* R10354 */
+    0x0000,     /* R10355 */
+    0x0000,     /* R10356 */
+    0x0000,     /* R10357 */
+    0x0000,     /* R10358 */
+    0x0000,     /* R10359 */
+    0x0000,     /* R10360 */
+    0x0000,     /* R10361 */
+    0x0000,     /* R10362 */
+    0x0000,     /* R10363 */
+    0x0000,     /* R10364 */
+    0x0000,     /* R10365 */
+    0x0000,     /* R10366 */
+    0x0000,     /* R10367 */
+    0x0000,     /* R10368 */
+    0x0000,     /* R10369 */
+    0x0000,     /* R10370 */
+    0x0000,     /* R10371 */
+    0x0000,     /* R10372 */
+    0x0000,     /* R10373 */
+    0x0000,     /* R10374 */
+    0x0000,     /* R10375 */
+    0x0000,     /* R10376 */
+    0x0000,     /* R10377 */
+    0x0000,     /* R10378 */
+    0x0000,     /* R10379 */
+    0x0000,     /* R10380 */
+    0x0000,     /* R10381 */
+    0x0000,     /* R10382 */
+    0x0000,     /* R10383 */
+    0x0000,     /* R10384 */
+    0x0000,     /* R10385 */
+    0x0000,     /* R10386 */
+    0x0000,     /* R10387 */
+    0x0000,     /* R10388 */
+    0x0000,     /* R10389 */
+    0x0000,     /* R10390 */
+    0x0000,     /* R10391 */
+    0x0000,     /* R10392 */
+    0x0000,     /* R10393 */
+    0x0000,     /* R10394 */
+    0x0000,     /* R10395 */
+    0x0000,     /* R10396 */
+    0x0000,     /* R10397 */
+    0x0000,     /* R10398 */
+    0x0000,     /* R10399 */
+    0x0000,     /* R10400 */
+    0x0000,     /* R10401 */
+    0x0000,     /* R10402 */
+    0x0000,     /* R10403 */
+    0x0000,     /* R10404 */
+    0x0000,     /* R10405 */
+    0x0000,     /* R10406 */
+    0x0000,     /* R10407 */
+    0x0000,     /* R10408 */
+    0x0000,     /* R10409 */
+    0x0000,     /* R10410 */
+    0x0000,     /* R10411 */
+    0x0000,     /* R10412 */
+    0x0000,     /* R10413 */
+    0x0000,     /* R10414 */
+    0x0000,     /* R10415 */
+    0x0000,     /* R10416 */
+    0x0000,     /* R10417 */
+    0x0000,     /* R10418 */
+    0x0000,     /* R10419 */
+    0x0000,     /* R10420 */
+    0x0000,     /* R10421 */
+    0x0000,     /* R10422 */
+    0x0000,     /* R10423 */
+    0x0000,     /* R10424 */
+    0x0000,     /* R10425 */
+    0x0000,     /* R10426 */
+    0x0000,     /* R10427 */
+    0x0000,     /* R10428 */
+    0x0000,     /* R10429 */
+    0x0000,     /* R10430 */
+    0x0000,     /* R10431 */
+    0x0000,     /* R10432 */
+    0x0000,     /* R10433 */
+    0x0000,     /* R10434 */
+    0x0000,     /* R10435 */
+    0x0000,     /* R10436 */
+    0x0000,     /* R10437 */
+    0x0000,     /* R10438 */
+    0x0000,     /* R10439 */
+    0x0000,     /* R10440 */
+    0x0000,     /* R10441 */
+    0x0000,     /* R10442 */
+    0x0000,     /* R10443 */
+    0x0000,     /* R10444 */
+    0x0000,     /* R10445 */
+    0x0000,     /* R10446 */
+    0x0000,     /* R10447 */
+    0x0000,     /* R10448 */
+    0x0000,     /* R10449 */
+    0x0000,     /* R10450 */
+    0x0000,     /* R10451 */
+    0x0000,     /* R10452 */
+    0x0000,     /* R10453 */
+    0x0000,     /* R10454 */
+    0x0000,     /* R10455 */
+    0x0000,     /* R10456 */
+    0x0000,     /* R10457 */
+    0x0000,     /* R10458 */
+    0x0000,     /* R10459 */
+    0x0000,     /* R10460 */
+    0x0000,     /* R10461 */
+    0x0000,     /* R10462 */
+    0x0000,     /* R10463 */
+    0x0000,     /* R10464 */
+    0x0000,     /* R10465 */
+    0x0000,     /* R10466 */
+    0x0000,     /* R10467 */
+    0x0000,     /* R10468 */
+    0x0000,     /* R10469 */
+    0x0000,     /* R10470 */
+    0x0000,     /* R10471 */
+    0x0000,     /* R10472 */
+    0x0000,     /* R10473 */
+    0x0000,     /* R10474 */
+    0x0000,     /* R10475 */
+    0x0000,     /* R10476 */
+    0x0000,     /* R10477 */
+    0x0000,     /* R10478 */
+    0x0000,     /* R10479 */
+    0x0000,     /* R10480 */
+    0x0000,     /* R10481 */
+    0x0000,     /* R10482 */
+    0x0000,     /* R10483 */
+    0x0000,     /* R10484 */
+    0x0000,     /* R10485 */
+    0x0000,     /* R10486 */
+    0x0000,     /* R10487 */
+    0x0000,     /* R10488 */
+    0x0000,     /* R10489 */
+    0x0000,     /* R10490 */
+    0x0000,     /* R10491 */
+    0x0000,     /* R10492 */
+    0x0000,     /* R10493 */
+    0x0000,     /* R10494 */
+    0x0000,     /* R10495 */
+    0x0000,     /* R10496 */
+    0x0000,     /* R10497 */
+    0x0000,     /* R10498 */
+    0x0000,     /* R10499 */
+    0x0000,     /* R10500 */
+    0x0000,     /* R10501 */
+    0x0000,     /* R10502 */
+    0x0000,     /* R10503 */
+    0x0000,     /* R10504 */
+    0x0000,     /* R10505 */
+    0x0000,     /* R10506 */
+    0x0000,     /* R10507 */
+    0x0000,     /* R10508 */
+    0x0000,     /* R10509 */
+    0x0000,     /* R10510 */
+    0x0000,     /* R10511 */
+    0x0000,     /* R10512 */
+    0x0000,     /* R10513 */
+    0x0000,     /* R10514 */
+    0x0000,     /* R10515 */
+    0x0000,     /* R10516 */
+    0x0000,     /* R10517 */
+    0x0000,     /* R10518 */
+    0x0000,     /* R10519 */
+    0x0000,     /* R10520 */
+    0x0000,     /* R10521 */
+    0x0000,     /* R10522 */
+    0x0000,     /* R10523 */
+    0x0000,     /* R10524 */
+    0x0000,     /* R10525 */
+    0x0000,     /* R10526 */
+    0x0000,     /* R10527 */
+    0x0000,     /* R10528 */
+    0x0000,     /* R10529 */
+    0x0000,     /* R10530 */
+    0x0000,     /* R10531 */
+    0x0000,     /* R10532 */
+    0x0000,     /* R10533 */
+    0x0000,     /* R10534 */
+    0x0000,     /* R10535 */
+    0x0000,     /* R10536 */
+    0x0000,     /* R10537 */
+    0x0000,     /* R10538 */
+    0x0000,     /* R10539 */
+    0x0000,     /* R10540 */
+    0x0000,     /* R10541 */
+    0x0000,     /* R10542 */
+    0x0000,     /* R10543 */
+    0x0000,     /* R10544 */
+    0x0000,     /* R10545 */
+    0x0000,     /* R10546 */
+    0x0000,     /* R10547 */
+    0x0000,     /* R10548 */
+    0x0000,     /* R10549 */
+    0x0000,     /* R10550 */
+    0x0000,     /* R10551 */
+    0x0000,     /* R10552 */
+    0x0000,     /* R10553 */
+    0x0000,     /* R10554 */
+    0x0000,     /* R10555 */
+    0x0000,     /* R10556 */
+    0x0000,     /* R10557 */
+    0x0000,     /* R10558 */
+    0x0000,     /* R10559 */
+    0x0000,     /* R10560 */
+    0x0000,     /* R10561 */
+    0x0000,     /* R10562 */
+    0x0000,     /* R10563 */
+    0x0000,     /* R10564 */
+    0x0000,     /* R10565 */
+    0x0000,     /* R10566 */
+    0x0000,     /* R10567 */
+    0x0000,     /* R10568 */
+    0x0000,     /* R10569 */
+    0x0000,     /* R10570 */
+    0x0000,     /* R10571 */
+    0x0000,     /* R10572 */
+    0x0000,     /* R10573 */
+    0x0000,     /* R10574 */
+    0x0000,     /* R10575 */
+    0x0000,     /* R10576 */
+    0x0000,     /* R10577 */
+    0x0000,     /* R10578 */
+    0x0000,     /* R10579 */
+    0x0000,     /* R10580 */
+    0x0000,     /* R10581 */
+    0x0000,     /* R10582 */
+    0x0000,     /* R10583 */
+    0x0000,     /* R10584 */
+    0x0000,     /* R10585 */
+    0x0000,     /* R10586 */
+    0x0000,     /* R10587 */
+    0x0000,     /* R10588 */
+    0x0000,     /* R10589 */
+    0x0000,     /* R10590 */
+    0x0000,     /* R10591 */
+    0x0000,     /* R10592 */
+    0x0000,     /* R10593 */
+    0x0000,     /* R10594 */
+    0x0000,     /* R10595 */
+    0x0000,     /* R10596 */
+    0x0000,     /* R10597 */
+    0x0000,     /* R10598 */
+    0x0000,     /* R10599 */
+    0x0000,     /* R10600 */
+    0x0000,     /* R10601 */
+    0x0000,     /* R10602 */
+    0x0000,     /* R10603 */
+    0x0000,     /* R10604 */
+    0x0000,     /* R10605 */
+    0x0000,     /* R10606 */
+    0x0000,     /* R10607 */
+    0x0000,     /* R10608 */
+    0x0000,     /* R10609 */
+    0x0000,     /* R10610 */
+    0x0000,     /* R10611 */
+    0x0000,     /* R10612 */
+    0x0000,     /* R10613 */
+    0x0000,     /* R10614 */
+    0x0000,     /* R10615 */
+    0x0000,     /* R10616 */
+    0x0000,     /* R10617 */
+    0x0000,     /* R10618 */
+    0x0000,     /* R10619 */
+    0x0000,     /* R10620 */
+    0x0000,     /* R10621 */
+    0x0000,     /* R10622 */
+    0x0000,     /* R10623 */
+    0x0000,     /* R10624 */
+    0x0000,     /* R10625 */
+    0x0000,     /* R10626 */
+    0x0000,     /* R10627 */
+    0x0000,     /* R10628 */
+    0x0000,     /* R10629 */
+    0x0000,     /* R10630 */
+    0x0000,     /* R10631 */
+    0x0000,     /* R10632 */
+    0x0000,     /* R10633 */
+    0x0000,     /* R10634 */
+    0x0000,     /* R10635 */
+    0x0000,     /* R10636 */
+    0x0000,     /* R10637 */
+    0x0000,     /* R10638 */
+    0x0000,     /* R10639 */
+    0x0000,     /* R10640 */
+    0x0000,     /* R10641 */
+    0x0000,     /* R10642 */
+    0x0000,     /* R10643 */
+    0x0000,     /* R10644 */
+    0x0000,     /* R10645 */
+    0x0000,     /* R10646 */
+    0x0000,     /* R10647 */
+    0x0000,     /* R10648 */
+    0x0000,     /* R10649 */
+    0x0000,     /* R10650 */
+    0x0000,     /* R10651 */
+    0x0000,     /* R10652 */
+    0x0000,     /* R10653 */
+    0x0000,     /* R10654 */
+    0x0000,     /* R10655 */
+    0x0000,     /* R10656 */
+    0x0000,     /* R10657 */
+    0x0000,     /* R10658 */
+    0x0000,     /* R10659 */
+    0x0000,     /* R10660 */
+    0x0000,     /* R10661 */
+    0x0000,     /* R10662 */
+    0x0000,     /* R10663 */
+    0x0000,     /* R10664 */
+    0x0000,     /* R10665 */
+    0x0000,     /* R10666 */
+    0x0000,     /* R10667 */
+    0x0000,     /* R10668 */
+    0x0000,     /* R10669 */
+    0x0000,     /* R10670 */
+    0x0000,     /* R10671 */
+    0x0000,     /* R10672 */
+    0x0000,     /* R10673 */
+    0x0000,     /* R10674 */
+    0x0000,     /* R10675 */
+    0x0000,     /* R10676 */
+    0x0000,     /* R10677 */
+    0x0000,     /* R10678 */
+    0x0000,     /* R10679 */
+    0x0000,     /* R10680 */
+    0x0000,     /* R10681 */
+    0x0000,     /* R10682 */
+    0x0000,     /* R10683 */
+    0x0000,     /* R10684 */
+    0x0000,     /* R10685 */
+    0x0000,     /* R10686 */
+    0x0000,     /* R10687 */
+    0x0000,     /* R10688 */
+    0x0000,     /* R10689 */
+    0x0000,     /* R10690 */
+    0x0000,     /* R10691 */
+    0x0000,     /* R10692 */
+    0x0000,     /* R10693 */
+    0x0000,     /* R10694 */
+    0x0000,     /* R10695 */
+    0x0000,     /* R10696 */
+    0x0000,     /* R10697 */
+    0x0000,     /* R10698 */
+    0x0000,     /* R10699 */
+    0x0000,     /* R10700 */
+    0x0000,     /* R10701 */
+    0x0000,     /* R10702 */
+    0x0000,     /* R10703 */
+    0x0000,     /* R10704 */
+    0x0000,     /* R10705 */
+    0x0000,     /* R10706 */
+    0x0000,     /* R10707 */
+    0x0000,     /* R10708 */
+    0x0000,     /* R10709 */
+    0x0000,     /* R10710 */
+    0x0000,     /* R10711 */
+    0x0000,     /* R10712 */
+    0x0000,     /* R10713 */
+    0x0000,     /* R10714 */
+    0x0000,     /* R10715 */
+    0x0000,     /* R10716 */
+    0x0000,     /* R10717 */
+    0x0000,     /* R10718 */
+    0x0000,     /* R10719 */
+    0x0000,     /* R10720 */
+    0x0000,     /* R10721 */
+    0x0000,     /* R10722 */
+    0x0000,     /* R10723 */
+    0x0000,     /* R10724 */
+    0x0000,     /* R10725 */
+    0x0000,     /* R10726 */
+    0x0000,     /* R10727 */
+    0x0000,     /* R10728 */
+    0x0000,     /* R10729 */
+    0x0000,     /* R10730 */
+    0x0000,     /* R10731 */
+    0x0000,     /* R10732 */
+    0x0000,     /* R10733 */
+    0x0000,     /* R10734 */
+    0x0000,     /* R10735 */
+    0x0000,     /* R10736 */
+    0x0000,     /* R10737 */
+    0x0000,     /* R10738 */
+    0x0000,     /* R10739 */
+    0x0000,     /* R10740 */
+    0x0000,     /* R10741 */
+    0x0000,     /* R10742 */
+    0x0000,     /* R10743 */
+    0x0000,     /* R10744 */
+    0x0000,     /* R10745 */
+    0x0000,     /* R10746 */
+    0x0000,     /* R10747 */
+    0x0000,     /* R10748 */
+    0x0000,     /* R10749 */
+    0x0000,     /* R10750 */
+    0x0000,     /* R10751 */
+    0x0000,     /* R10752 */
+    0x0000,     /* R10753 */
+    0x0000,     /* R10754 */
+    0x0000,     /* R10755 */
+    0x0000,     /* R10756 */
+    0x0000,     /* R10757 */
+    0x0000,     /* R10758 */
+    0x0000,     /* R10759 */
+    0x0000,     /* R10760 */
+    0x0000,     /* R10761 */
+    0x0000,     /* R10762 */
+    0x0000,     /* R10763 */
+    0x0000,     /* R10764 */
+    0x0000,     /* R10765 */
+    0x0000,     /* R10766 */
+    0x0000,     /* R10767 */
+    0x0000,     /* R10768 */
+    0x0000,     /* R10769 */
+    0x0000,     /* R10770 */
+    0x0000,     /* R10771 */
+    0x0000,     /* R10772 */
+    0x0000,     /* R10773 */
+    0x0000,     /* R10774 */
+    0x0000,     /* R10775 */
+    0x0000,     /* R10776 */
+    0x0000,     /* R10777 */
+    0x0000,     /* R10778 */
+    0x0000,     /* R10779 */
+    0x0000,     /* R10780 */
+    0x0000,     /* R10781 */
+    0x0000,     /* R10782 */
+    0x0000,     /* R10783 */
+    0x0000,     /* R10784 */
+    0x0000,     /* R10785 */
+    0x0000,     /* R10786 */
+    0x0000,     /* R10787 */
+    0x0000,     /* R10788 */
+    0x0000,     /* R10789 */
+    0x0000,     /* R10790 */
+    0x0000,     /* R10791 */
+    0x0000,     /* R10792 */
+    0x0000,     /* R10793 */
+    0x0000,     /* R10794 */
+    0x0000,     /* R10795 */
+    0x0000,     /* R10796 */
+    0x0000,     /* R10797 */
+    0x0000,     /* R10798 */
+    0x0000,     /* R10799 */
+    0x0000,     /* R10800 */
+    0x0000,     /* R10801 */
+    0x0000,     /* R10802 */
+    0x0000,     /* R10803 */
+    0x0000,     /* R10804 */
+    0x0000,     /* R10805 */
+    0x0000,     /* R10806 */
+    0x0000,     /* R10807 */
+    0x0000,     /* R10808 */
+    0x0000,     /* R10809 */
+    0x0000,     /* R10810 */
+    0x0000,     /* R10811 */
+    0x0000,     /* R10812 */
+    0x0000,     /* R10813 */
+    0x0000,     /* R10814 */
+    0x0000,     /* R10815 */
+    0x0000,     /* R10816 */
+    0x0000,     /* R10817 */
+    0x0000,     /* R10818 */
+    0x0000,     /* R10819 */
+    0x0000,     /* R10820 */
+    0x0000,     /* R10821 */
+    0x0000,     /* R10822 */
+    0x0000,     /* R10823 */
+    0x0000,     /* R10824 */
+    0x0000,     /* R10825 */
+    0x0000,     /* R10826 */
+    0x0000,     /* R10827 */
+    0x0000,     /* R10828 */
+    0x0000,     /* R10829 */
+    0x0000,     /* R10830 */
+    0x0000,     /* R10831 */
+    0x0000,     /* R10832 */
+    0x0000,     /* R10833 */
+    0x0000,     /* R10834 */
+    0x0000,     /* R10835 */
+    0x0000,     /* R10836 */
+    0x0000,     /* R10837 */
+    0x0000,     /* R10838 */
+    0x0000,     /* R10839 */
+    0x0000,     /* R10840 */
+    0x0000,     /* R10841 */
+    0x0000,     /* R10842 */
+    0x0000,     /* R10843 */
+    0x0000,     /* R10844 */
+    0x0000,     /* R10845 */
+    0x0000,     /* R10846 */
+    0x0000,     /* R10847 */
+    0x0000,     /* R10848 */
+    0x0000,     /* R10849 */
+    0x0000,     /* R10850 */
+    0x0000,     /* R10851 */
+    0x0000,     /* R10852 */
+    0x0000,     /* R10853 */
+    0x0000,     /* R10854 */
+    0x0000,     /* R10855 */
+    0x0000,     /* R10856 */
+    0x0000,     /* R10857 */
+    0x0000,     /* R10858 */
+    0x0000,     /* R10859 */
+    0x0000,     /* R10860 */
+    0x0000,     /* R10861 */
+    0x0000,     /* R10862 */
+    0x0000,     /* R10863 */
+    0x0000,     /* R10864 */
+    0x0000,     /* R10865 */
+    0x0000,     /* R10866 */
+    0x0000,     /* R10867 */
+    0x0000,     /* R10868 */
+    0x0000,     /* R10869 */
+    0x0000,     /* R10870 */
+    0x0000,     /* R10871 */
+    0x0000,     /* R10872 */
+    0x0000,     /* R10873 */
+    0x0000,     /* R10874 */
+    0x0000,     /* R10875 */
+    0x0000,     /* R10876 */
+    0x0000,     /* R10877 */
+    0x0000,     /* R10878 */
+    0x0000,     /* R10879 */
+    0x0000,     /* R10880 */
+    0x0000,     /* R10881 */
+    0x0000,     /* R10882 */
+    0x0000,     /* R10883 */
+    0x0000,     /* R10884 */
+    0x0000,     /* R10885 */
+    0x0000,     /* R10886 */
+    0x0000,     /* R10887 */
+    0x0000,     /* R10888 */
+    0x0000,     /* R10889 */
+    0x0000,     /* R10890 */
+    0x0000,     /* R10891 */
+    0x0000,     /* R10892 */
+    0x0000,     /* R10893 */
+    0x0000,     /* R10894 */
+    0x0000,     /* R10895 */
+    0x0000,     /* R10896 */
+    0x0000,     /* R10897 */
+    0x0000,     /* R10898 */
+    0x0000,     /* R10899 */
+    0x0000,     /* R10900 */
+    0x0000,     /* R10901 */
+    0x0000,     /* R10902 */
+    0x0000,     /* R10903 */
+    0x0000,     /* R10904 */
+    0x0000,     /* R10905 */
+    0x0000,     /* R10906 */
+    0x0000,     /* R10907 */
+    0x0000,     /* R10908 */
+    0x0000,     /* R10909 */
+    0x0000,     /* R10910 */
+    0x0000,     /* R10911 */
+    0x0000,     /* R10912 */
+    0x0000,     /* R10913 */
+    0x0000,     /* R10914 */
+    0x0000,     /* R10915 */
+    0x0000,     /* R10916 */
+    0x0000,     /* R10917 */
+    0x0000,     /* R10918 */
+    0x0000,     /* R10919 */
+    0x0000,     /* R10920 */
+    0x0000,     /* R10921 */
+    0x0000,     /* R10922 */
+    0x0000,     /* R10923 */
+    0x0000,     /* R10924 */
+    0x0000,     /* R10925 */
+    0x0000,     /* R10926 */
+    0x0000,     /* R10927 */
+    0x0000,     /* R10928 */
+    0x0000,     /* R10929 */
+    0x0000,     /* R10930 */
+    0x0000,     /* R10931 */
+    0x0000,     /* R10932 */
+    0x0000,     /* R10933 */
+    0x0000,     /* R10934 */
+    0x0000,     /* R10935 */
+    0x0000,     /* R10936 */
+    0x0000,     /* R10937 */
+    0x0000,     /* R10938 */
+    0x0000,     /* R10939 */
+    0x0000,     /* R10940 */
+    0x0000,     /* R10941 */
+    0x0000,     /* R10942 */
+    0x0000,     /* R10943 */
+    0x0000,     /* R10944 */
+    0x0000,     /* R10945 */
+    0x0000,     /* R10946 */
+    0x0000,     /* R10947 */
+    0x0000,     /* R10948 */
+    0x0000,     /* R10949 */
+    0x0000,     /* R10950 */
+    0x0000,     /* R10951 */
+    0x0000,     /* R10952 */
+    0x0000,     /* R10953 */
+    0x0000,     /* R10954 */
+    0x0000,     /* R10955 */
+    0x0000,     /* R10956 */
+    0x0000,     /* R10957 */
+    0x0000,     /* R10958 */
+    0x0000,     /* R10959 */
+    0x0000,     /* R10960 */
+    0x0000,     /* R10961 */
+    0x0000,     /* R10962 */
+    0x0000,     /* R10963 */
+    0x0000,     /* R10964 */
+    0x0000,     /* R10965 */
+    0x0000,     /* R10966 */
+    0x0000,     /* R10967 */
+    0x0000,     /* R10968 */
+    0x0000,     /* R10969 */
+    0x0000,     /* R10970 */
+    0x0000,     /* R10971 */
+    0x0000,     /* R10972 */
+    0x0000,     /* R10973 */
+    0x0000,     /* R10974 */
+    0x0000,     /* R10975 */
+    0x0000,     /* R10976 */
+    0x0000,     /* R10977 */
+    0x0000,     /* R10978 */
+    0x0000,     /* R10979 */
+    0x0000,     /* R10980 */
+    0x0000,     /* R10981 */
+    0x0000,     /* R10982 */
+    0x0000,     /* R10983 */
+    0x0000,     /* R10984 */
+    0x0000,     /* R10985 */
+    0x0000,     /* R10986 */
+    0x0000,     /* R10987 */
+    0x0000,     /* R10988 */
+    0x0000,     /* R10989 */
+    0x0000,     /* R10990 */
+    0x0000,     /* R10991 */
+    0x0000,     /* R10992 */
+    0x0000,     /* R10993 */
+    0x0000,     /* R10994 */
+    0x0000,     /* R10995 */
+    0x0000,     /* R10996 */
+    0x0000,     /* R10997 */
+    0x0000,     /* R10998 */
+    0x0000,     /* R10999 */
+    0x0000,     /* R11000 */
+    0x0000,     /* R11001 */
+    0x0000,     /* R11002 */
+    0x0000,     /* R11003 */
+    0x0000,     /* R11004 */
+    0x0000,     /* R11005 */
+    0x0000,     /* R11006 */
+    0x0000,     /* R11007 */
+    0x0000,     /* R11008 */
+    0x0000,     /* R11009 */
+    0x0000,     /* R11010 */
+    0x0000,     /* R11011 */
+    0x0000,     /* R11012 */
+    0x0000,     /* R11013 */
+    0x0000,     /* R11014 */
+    0x0000,     /* R11015 */
+    0x0000,     /* R11016 */
+    0x0000,     /* R11017 */
+    0x0000,     /* R11018 */
+    0x0000,     /* R11019 */
+    0x0000,     /* R11020 */
+    0x0000,     /* R11021 */
+    0x0000,     /* R11022 */
+    0x0000,     /* R11023 */
+    0x0000,     /* R11024 */
+    0x0000,     /* R11025 */
+    0x0000,     /* R11026 */
+    0x0000,     /* R11027 */
+    0x0000,     /* R11028 */
+    0x0000,     /* R11029 */
+    0x0000,     /* R11030 */
+    0x0000,     /* R11031 */
+    0x0000,     /* R11032 */
+    0x0000,     /* R11033 */
+    0x0000,     /* R11034 */
+    0x0000,     /* R11035 */
+    0x0000,     /* R11036 */
+    0x0000,     /* R11037 */
+    0x0000,     /* R11038 */
+    0x0000,     /* R11039 */
+    0x0000,     /* R11040 */
+    0x0000,     /* R11041 */
+    0x0000,     /* R11042 */
+    0x0000,     /* R11043 */
+    0x0000,     /* R11044 */
+    0x0000,     /* R11045 */
+    0x0000,     /* R11046 */
+    0x0000,     /* R11047 */
+    0x0000,     /* R11048 */
+    0x0000,     /* R11049 */
+    0x0000,     /* R11050 */
+    0x0000,     /* R11051 */
+    0x0000,     /* R11052 */
+    0x0000,     /* R11053 */
+    0x0000,     /* R11054 */
+    0x0000,     /* R11055 */
+    0x0000,     /* R11056 */
+    0x0000,     /* R11057 */
+    0x0000,     /* R11058 */
+    0x0000,     /* R11059 */
+    0x0000,     /* R11060 */
+    0x0000,     /* R11061 */
+    0x0000,     /* R11062 */
+    0x0000,     /* R11063 */
+    0x0000,     /* R11064 */
+    0x0000,     /* R11065 */
+    0x0000,     /* R11066 */
+    0x0000,     /* R11067 */
+    0x0000,     /* R11068 */
+    0x0000,     /* R11069 */
+    0x0000,     /* R11070 */
+    0x0000,     /* R11071 */
+    0x0000,     /* R11072 */
+    0x0000,     /* R11073 */
+    0x0000,     /* R11074 */
+    0x0000,     /* R11075 */
+    0x0000,     /* R11076 */
+    0x0000,     /* R11077 */
+    0x0000,     /* R11078 */
+    0x0000,     /* R11079 */
+    0x0000,     /* R11080 */
+    0x0000,     /* R11081 */
+    0x0000,     /* R11082 */
+    0x0000,     /* R11083 */
+    0x0000,     /* R11084 */
+    0x0000,     /* R11085 */
+    0x0000,     /* R11086 */
+    0x0000,     /* R11087 */
+    0x0000,     /* R11088 */
+    0x0000,     /* R11089 */
+    0x0000,     /* R11090 */
+    0x0000,     /* R11091 */
+    0x0000,     /* R11092 */
+    0x0000,     /* R11093 */
+    0x0000,     /* R11094 */
+    0x0000,     /* R11095 */
+    0x0000,     /* R11096 */
+    0x0000,     /* R11097 */
+    0x0000,     /* R11098 */
+    0x0000,     /* R11099 */
+    0x0000,     /* R11100 */
+    0x0000,     /* R11101 */
+    0x0000,     /* R11102 */
+    0x0000,     /* R11103 */
+    0x0000,     /* R11104 */
+    0x0000,     /* R11105 */
+    0x0000,     /* R11106 */
+    0x0000,     /* R11107 */
+    0x0000,     /* R11108 */
+    0x0000,     /* R11109 */
+    0x0000,     /* R11110 */
+    0x0000,     /* R11111 */
+    0x0000,     /* R11112 */
+    0x0000,     /* R11113 */
+    0x0000,     /* R11114 */
+    0x0000,     /* R11115 */
+    0x0000,     /* R11116 */
+    0x0000,     /* R11117 */
+    0x0000,     /* R11118 */
+    0x0000,     /* R11119 */
+    0x0000,     /* R11120 */
+    0x0000,     /* R11121 */
+    0x0000,     /* R11122 */
+    0x0000,     /* R11123 */
+    0x0000,     /* R11124 */
+    0x0000,     /* R11125 */
+    0x0000,     /* R11126 */
+    0x0000,     /* R11127 */
+    0x0000,     /* R11128 */
+    0x0000,     /* R11129 */
+    0x0000,     /* R11130 */
+    0x0000,     /* R11131 */
+    0x0000,     /* R11132 */
+    0x0000,     /* R11133 */
+    0x0000,     /* R11134 */
+    0x0000,     /* R11135 */
+    0x0000,     /* R11136 */
+    0x0000,     /* R11137 */
+    0x0000,     /* R11138 */
+    0x0000,     /* R11139 */
+    0x0000,     /* R11140 */
+    0x0000,     /* R11141 */
+    0x0000,     /* R11142 */
+    0x0000,     /* R11143 */
+    0x0000,     /* R11144 */
+    0x0000,     /* R11145 */
+    0x0000,     /* R11146 */
+    0x0000,     /* R11147 */
+    0x0000,     /* R11148 */
+    0x0000,     /* R11149 */
+    0x0000,     /* R11150 */
+    0x0000,     /* R11151 */
+    0x0000,     /* R11152 */
+    0x0000,     /* R11153 */
+    0x0000,     /* R11154 */
+    0x0000,     /* R11155 */
+    0x0000,     /* R11156 */
+    0x0000,     /* R11157 */
+    0x0000,     /* R11158 */
+    0x0000,     /* R11159 */
+    0x0000,     /* R11160 */
+    0x0000,     /* R11161 */
+    0x0000,     /* R11162 */
+    0x0000,     /* R11163 */
+    0x0000,     /* R11164 */
+    0x0000,     /* R11165 */
+    0x0000,     /* R11166 */
+    0x0000,     /* R11167 */
+    0x0000,     /* R11168 */
+    0x0000,     /* R11169 */
+    0x0000,     /* R11170 */
+    0x0000,     /* R11171 */
+    0x0000,     /* R11172 */
+    0x0000,     /* R11173 */
+    0x0000,     /* R11174 */
+    0x0000,     /* R11175 */
+    0x0000,     /* R11176 */
+    0x0000,     /* R11177 */
+    0x0000,     /* R11178 */
+    0x0000,     /* R11179 */
+    0x0000,     /* R11180 */
+    0x0000,     /* R11181 */
+    0x0000,     /* R11182 */
+    0x0000,     /* R11183 */
+    0x0000,     /* R11184 */
+    0x0000,     /* R11185 */
+    0x0000,     /* R11186 */
+    0x0000,     /* R11187 */
+    0x0000,     /* R11188 */
+    0x0000,     /* R11189 */
+    0x0000,     /* R11190 */
+    0x0000,     /* R11191 */
+    0x0000,     /* R11192 */
+    0x0000,     /* R11193 */
+    0x0000,     /* R11194 */
+    0x0000,     /* R11195 */
+    0x0000,     /* R11196 */
+    0x0000,     /* R11197 */
+    0x0000,     /* R11198 */
+    0x0000,     /* R11199 */
+    0x0000,     /* R11200 */
+    0x0000,     /* R11201 */
+    0x0000,     /* R11202 */
+    0x0000,     /* R11203 */
+    0x0000,     /* R11204 */
+    0x0000,     /* R11205 */
+    0x0000,     /* R11206 */
+    0x0000,     /* R11207 */
+    0x0000,     /* R11208 */
+    0x0000,     /* R11209 */
+    0x0000,     /* R11210 */
+    0x0000,     /* R11211 */
+    0x0000,     /* R11212 */
+    0x0000,     /* R11213 */
+    0x0000,     /* R11214 */
+    0x0000,     /* R11215 */
+    0x0000,     /* R11216 */
+    0x0000,     /* R11217 */
+    0x0000,     /* R11218 */
+    0x0000,     /* R11219 */
+    0x0000,     /* R11220 */
+    0x0000,     /* R11221 */
+    0x0000,     /* R11222 */
+    0x0000,     /* R11223 */
+    0x0000,     /* R11224 */
+    0x0000,     /* R11225 */
+    0x0000,     /* R11226 */
+    0x0000,     /* R11227 */
+    0x0000,     /* R11228 */
+    0x0000,     /* R11229 */
+    0x0000,     /* R11230 */
+    0x0000,     /* R11231 */
+    0x0000,     /* R11232 */
+    0x0000,     /* R11233 */
+    0x0000,     /* R11234 */
+    0x0000,     /* R11235 */
+    0x0000,     /* R11236 */
+    0x0000,     /* R11237 */
+    0x0000,     /* R11238 */
+    0x0000,     /* R11239 */
+    0x0000,     /* R11240 */
+    0x0000,     /* R11241 */
+    0x0000,     /* R11242 */
+    0x0000,     /* R11243 */
+    0x0000,     /* R11244 */
+    0x0000,     /* R11245 */
+    0x0000,     /* R11246 */
+    0x0000,     /* R11247 */
+    0x0000,     /* R11248 */
+    0x0000,     /* R11249 */
+    0x0000,     /* R11250 */
+    0x0000,     /* R11251 */
+    0x0000,     /* R11252 */
+    0x0000,     /* R11253 */
+    0x0000,     /* R11254 */
+    0x0000,     /* R11255 */
+    0x0000,     /* R11256 */
+    0x0000,     /* R11257 */
+    0x0000,     /* R11258 */
+    0x0000,     /* R11259 */
+    0x0000,     /* R11260 */
+    0x0000,     /* R11261 */
+    0x0000,     /* R11262 */
+    0x0000,     /* R11263 */
+    0x0000,     /* R11264 */
+    0x0000,     /* R11265 */
+    0x0000,     /* R11266 */
+    0x0000,     /* R11267 */
+    0x0000,     /* R11268 */
+    0x0000,     /* R11269 */
+    0x0000,     /* R11270 */
+    0x0000,     /* R11271 */
+    0x0000,     /* R11272 */
+    0x0000,     /* R11273 */
+    0x0000,     /* R11274 */
+    0x0000,     /* R11275 */
+    0x0000,     /* R11276 */
+    0x0000,     /* R11277 */
+    0x0000,     /* R11278 */
+    0x0000,     /* R11279 */
+    0x0000,     /* R11280 */
+    0x0000,     /* R11281 */
+    0x0000,     /* R11282 */
+    0x0000,     /* R11283 */
+    0x0000,     /* R11284 */
+    0x0000,     /* R11285 */
+    0x0000,     /* R11286 */
+    0x0000,     /* R11287 */
+    0x0000,     /* R11288 */
+    0x0000,     /* R11289 */
+    0x0000,     /* R11290 */
+    0x0000,     /* R11291 */
+    0x0000,     /* R11292 */
+    0x0000,     /* R11293 */
+    0x0000,     /* R11294 */
+    0x0000,     /* R11295 */
+    0x0000,     /* R11296 */
+    0x0000,     /* R11297 */
+    0x0000,     /* R11298 */
+    0x0000,     /* R11299 */
+    0x0000,     /* R11300 */
+    0x0000,     /* R11301 */
+    0x0000,     /* R11302 */
+    0x0000,     /* R11303 */
+    0x0000,     /* R11304 */
+    0x0000,     /* R11305 */
+    0x0000,     /* R11306 */
+    0x0000,     /* R11307 */
+    0x0000,     /* R11308 */
+    0x0000,     /* R11309 */
+    0x0000,     /* R11310 */
+    0x0000,     /* R11311 */
+    0x0000,     /* R11312 */
+    0x0000,     /* R11313 */
+    0x0000,     /* R11314 */
+    0x0000,     /* R11315 */
+    0x0000,     /* R11316 */
+    0x0000,     /* R11317 */
+    0x0000,     /* R11318 */
+    0x0000,     /* R11319 */
+    0x0000,     /* R11320 */
+    0x0000,     /* R11321 */
+    0x0000,     /* R11322 */
+    0x0000,     /* R11323 */
+    0x0000,     /* R11324 */
+    0x0000,     /* R11325 */
+    0x0000,     /* R11326 */
+    0x0000,     /* R11327 */
+    0x0000,     /* R11328 */
+    0x0000,     /* R11329 */
+    0x0000,     /* R11330 */
+    0x0000,     /* R11331 */
+    0x0000,     /* R11332 */
+    0x0000,     /* R11333 */
+    0x0000,     /* R11334 */
+    0x0000,     /* R11335 */
+    0x0000,     /* R11336 */
+    0x0000,     /* R11337 */
+    0x0000,     /* R11338 */
+    0x0000,     /* R11339 */
+    0x0000,     /* R11340 */
+    0x0000,     /* R11341 */
+    0x0000,     /* R11342 */
+    0x0000,     /* R11343 */
+    0x0000,     /* R11344 */
+    0x0000,     /* R11345 */
+    0x0000,     /* R11346 */
+    0x0000,     /* R11347 */
+    0x0000,     /* R11348 */
+    0x0000,     /* R11349 */
+    0x0000,     /* R11350 */
+    0x0000,     /* R11351 */
+    0x0000,     /* R11352 */
+    0x0000,     /* R11353 */
+    0x0000,     /* R11354 */
+    0x0000,     /* R11355 */
+    0x0000,     /* R11356 */
+    0x0000,     /* R11357 */
+    0x0000,     /* R11358 */
+    0x0000,     /* R11359 */
+    0x0000,     /* R11360 */
+    0x0000,     /* R11361 */
+    0x0000,     /* R11362 */
+    0x0000,     /* R11363 */
+    0x0000,     /* R11364 */
+    0x0000,     /* R11365 */
+    0x0000,     /* R11366 */
+    0x0000,     /* R11367 */
+    0x0000,     /* R11368 */
+    0x0000,     /* R11369 */
+    0x0000,     /* R11370 */
+    0x0000,     /* R11371 */
+    0x0000,     /* R11372 */
+    0x0000,     /* R11373 */
+    0x0000,     /* R11374 */
+    0x0000,     /* R11375 */
+    0x0000,     /* R11376 */
+    0x0000,     /* R11377 */
+    0x0000,     /* R11378 */
+    0x0000,     /* R11379 */
+    0x0000,     /* R11380 */
+    0x0000,     /* R11381 */
+    0x0000,     /* R11382 */
+    0x0000,     /* R11383 */
+    0x0000,     /* R11384 */
+    0x0000,     /* R11385 */
+    0x0000,     /* R11386 */
+    0x0000,     /* R11387 */
+    0x0000,     /* R11388 */
+    0x0000,     /* R11389 */
+    0x0000,     /* R11390 */
+    0x0000,     /* R11391 */
+    0x0000,     /* R11392 */
+    0x0000,     /* R11393 */
+    0x0000,     /* R11394 */
+    0x0000,     /* R11395 */
+    0x0000,     /* R11396 */
+    0x0000,     /* R11397 */
+    0x0000,     /* R11398 */
+    0x0000,     /* R11399 */
+    0x0000,     /* R11400 */
+    0x0000,     /* R11401 */
+    0x0000,     /* R11402 */
+    0x0000,     /* R11403 */
+    0x0000,     /* R11404 */
+    0x0000,     /* R11405 */
+    0x0000,     /* R11406 */
+    0x0000,     /* R11407 */
+    0x0000,     /* R11408 */
+    0x0000,     /* R11409 */
+    0x0000,     /* R11410 */
+    0x0000,     /* R11411 */
+    0x0000,     /* R11412 */
+    0x0000,     /* R11413 */
+    0x0000,     /* R11414 */
+    0x0000,     /* R11415 */
+    0x0000,     /* R11416 */
+    0x0000,     /* R11417 */
+    0x0000,     /* R11418 */
+    0x0000,     /* R11419 */
+    0x0000,     /* R11420 */
+    0x0000,     /* R11421 */
+    0x0000,     /* R11422 */
+    0x0000,     /* R11423 */
+    0x0000,     /* R11424 */
+    0x0000,     /* R11425 */
+    0x0000,     /* R11426 */
+    0x0000,     /* R11427 */
+    0x0000,     /* R11428 */
+    0x0000,     /* R11429 */
+    0x0000,     /* R11430 */
+    0x0000,     /* R11431 */
+    0x0000,     /* R11432 */
+    0x0000,     /* R11433 */
+    0x0000,     /* R11434 */
+    0x0000,     /* R11435 */
+    0x0000,     /* R11436 */
+    0x0000,     /* R11437 */
+    0x0000,     /* R11438 */
+    0x0000,     /* R11439 */
+    0x0000,     /* R11440 */
+    0x0000,     /* R11441 */
+    0x0000,     /* R11442 */
+    0x0000,     /* R11443 */
+    0x0000,     /* R11444 */
+    0x0000,     /* R11445 */
+    0x0000,     /* R11446 */
+    0x0000,     /* R11447 */
+    0x0000,     /* R11448 */
+    0x0000,     /* R11449 */
+    0x0000,     /* R11450 */
+    0x0000,     /* R11451 */
+    0x0000,     /* R11452 */
+    0x0000,     /* R11453 */
+    0x0000,     /* R11454 */
+    0x0000,     /* R11455 */
+    0x0000,     /* R11456 */
+    0x0000,     /* R11457 */
+    0x0000,     /* R11458 */
+    0x0000,     /* R11459 */
+    0x0000,     /* R11460 */
+    0x0000,     /* R11461 */
+    0x0000,     /* R11462 */
+    0x0000,     /* R11463 */
+    0x0000,     /* R11464 */
+    0x0000,     /* R11465 */
+    0x0000,     /* R11466 */
+    0x0000,     /* R11467 */
+    0x0000,     /* R11468 */
+    0x0000,     /* R11469 */
+    0x0000,     /* R11470 */
+    0x0000,     /* R11471 */
+    0x0000,     /* R11472 */
+    0x0000,     /* R11473 */
+    0x0000,     /* R11474 */
+    0x0000,     /* R11475 */
+    0x0000,     /* R11476 */
+    0x0000,     /* R11477 */
+    0x0000,     /* R11478 */
+    0x0000,     /* R11479 */
+    0x0000,     /* R11480 */
+    0x0000,     /* R11481 */
+    0x0000,     /* R11482 */
+    0x0000,     /* R11483 */
+    0x0000,     /* R11484 */
+    0x0000,     /* R11485 */
+    0x0000,     /* R11486 */
+    0x0000,     /* R11487 */
+    0x0000,     /* R11488 */
+    0x0000,     /* R11489 */
+    0x0000,     /* R11490 */
+    0x0000,     /* R11491 */
+    0x0000,     /* R11492 */
+    0x0000,     /* R11493 */
+    0x0000,     /* R11494 */
+    0x0000,     /* R11495 */
+    0x0000,     /* R11496 */
+    0x0000,     /* R11497 */
+    0x0000,     /* R11498 */
+    0x0000,     /* R11499 */
+    0x0000,     /* R11500 */
+    0x0000,     /* R11501 */
+    0x0000,     /* R11502 */
+    0x0000,     /* R11503 */
+    0x0000,     /* R11504 */
+    0x0000,     /* R11505 */
+    0x0000,     /* R11506 */
+    0x0000,     /* R11507 */
+    0x0000,     /* R11508 */
+    0x0000,     /* R11509 */
+    0x0000,     /* R11510 */
+    0x0000,     /* R11511 */
+    0x0000,     /* R11512 */
+    0x0000,     /* R11513 */
+    0x0000,     /* R11514 */
+    0x0000,     /* R11515 */
+    0x0000,     /* R11516 */
+    0x0000,     /* R11517 */
+    0x0000,     /* R11518 */
+    0x0000,     /* R11519 */
+    0x0000,     /* R11520 */
+    0x0000,     /* R11521 */
+    0x0000,     /* R11522 */
+    0x0000,     /* R11523 */
+    0x0000,     /* R11524 */
+    0x0000,     /* R11525 */
+    0x0000,     /* R11526 */
+    0x0000,     /* R11527 */
+    0x0000,     /* R11528 */
+    0x0000,     /* R11529 */
+    0x0000,     /* R11530 */
+    0x0000,     /* R11531 */
+    0x0000,     /* R11532 */
+    0x0000,     /* R11533 */
+    0x0000,     /* R11534 */
+    0x0000,     /* R11535 */
+    0x0000,     /* R11536 */
+    0x0000,     /* R11537 */
+    0x0000,     /* R11538 */
+    0x0000,     /* R11539 */
+    0x0000,     /* R11540 */
+    0x0000,     /* R11541 */
+    0x0000,     /* R11542 */
+    0x0000,     /* R11543 */
+    0x0000,     /* R11544 */
+    0x0000,     /* R11545 */
+    0x0000,     /* R11546 */
+    0x0000,     /* R11547 */
+    0x0000,     /* R11548 */
+    0x0000,     /* R11549 */
+    0x0000,     /* R11550 */
+    0x0000,     /* R11551 */
+    0x0000,     /* R11552 */
+    0x0000,     /* R11553 */
+    0x0000,     /* R11554 */
+    0x0000,     /* R11555 */
+    0x0000,     /* R11556 */
+    0x0000,     /* R11557 */
+    0x0000,     /* R11558 */
+    0x0000,     /* R11559 */
+    0x0000,     /* R11560 */
+    0x0000,     /* R11561 */
+    0x0000,     /* R11562 */
+    0x0000,     /* R11563 */
+    0x0000,     /* R11564 */
+    0x0000,     /* R11565 */
+    0x0000,     /* R11566 */
+    0x0000,     /* R11567 */
+    0x0000,     /* R11568 */
+    0x0000,     /* R11569 */
+    0x0000,     /* R11570 */
+    0x0000,     /* R11571 */
+    0x0000,     /* R11572 */
+    0x0000,     /* R11573 */
+    0x0000,     /* R11574 */
+    0x0000,     /* R11575 */
+    0x0000,     /* R11576 */
+    0x0000,     /* R11577 */
+    0x0000,     /* R11578 */
+    0x0000,     /* R11579 */
+    0x0000,     /* R11580 */
+    0x0000,     /* R11581 */
+    0x0000,     /* R11582 */
+    0x0000,     /* R11583 */
+    0x0000,     /* R11584 */
+    0x0000,     /* R11585 */
+    0x0000,     /* R11586 */
+    0x0000,     /* R11587 */
+    0x0000,     /* R11588 */
+    0x0000,     /* R11589 */
+    0x0000,     /* R11590 */
+    0x0000,     /* R11591 */
+    0x0000,     /* R11592 */
+    0x0000,     /* R11593 */
+    0x0000,     /* R11594 */
+    0x0000,     /* R11595 */
+    0x0000,     /* R11596 */
+    0x0000,     /* R11597 */
+    0x0000,     /* R11598 */
+    0x0000,     /* R11599 */
+    0x0000,     /* R11600 */
+    0x0000,     /* R11601 */
+    0x0000,     /* R11602 */
+    0x0000,     /* R11603 */
+    0x0000,     /* R11604 */
+    0x0000,     /* R11605 */
+    0x0000,     /* R11606 */
+    0x0000,     /* R11607 */
+    0x0000,     /* R11608 */
+    0x0000,     /* R11609 */
+    0x0000,     /* R11610 */
+    0x0000,     /* R11611 */
+    0x0000,     /* R11612 */
+    0x0000,     /* R11613 */
+    0x0000,     /* R11614 */
+    0x0000,     /* R11615 */
+    0x0000,     /* R11616 */
+    0x0000,     /* R11617 */
+    0x0000,     /* R11618 */
+    0x0000,     /* R11619 */
+    0x0000,     /* R11620 */
+    0x0000,     /* R11621 */
+    0x0000,     /* R11622 */
+    0x0000,     /* R11623 */
+    0x0000,     /* R11624 */
+    0x0000,     /* R11625 */
+    0x0000,     /* R11626 */
+    0x0000,     /* R11627 */
+    0x0000,     /* R11628 */
+    0x0000,     /* R11629 */
+    0x0000,     /* R11630 */
+    0x0000,     /* R11631 */
+    0x0000,     /* R11632 */
+    0x0000,     /* R11633 */
+    0x0000,     /* R11634 */
+    0x0000,     /* R11635 */
+    0x0000,     /* R11636 */
+    0x0000,     /* R11637 */
+    0x0000,     /* R11638 */
+    0x0000,     /* R11639 */
+    0x0000,     /* R11640 */
+    0x0000,     /* R11641 */
+    0x0000,     /* R11642 */
+    0x0000,     /* R11643 */
+    0x0000,     /* R11644 */
+    0x0000,     /* R11645 */
+    0x0000,     /* R11646 */
+    0x0000,     /* R11647 */
+    0x0000,     /* R11648 */
+    0x0000,     /* R11649 */
+    0x0000,     /* R11650 */
+    0x0000,     /* R11651 */
+    0x0000,     /* R11652 */
+    0x0000,     /* R11653 */
+    0x0000,     /* R11654 */
+    0x0000,     /* R11655 */
+    0x0000,     /* R11656 */
+    0x0000,     /* R11657 */
+    0x0000,     /* R11658 */
+    0x0000,     /* R11659 */
+    0x0000,     /* R11660 */
+    0x0000,     /* R11661 */
+    0x0000,     /* R11662 */
+    0x0000,     /* R11663 */
+    0x0000,     /* R11664 */
+    0x0000,     /* R11665 */
+    0x0000,     /* R11666 */
+    0x0000,     /* R11667 */
+    0x0000,     /* R11668 */
+    0x0000,     /* R11669 */
+    0x0000,     /* R11670 */
+    0x0000,     /* R11671 */
+    0x0000,     /* R11672 */
+    0x0000,     /* R11673 */
+    0x0000,     /* R11674 */
+    0x0000,     /* R11675 */
+    0x0000,     /* R11676 */
+    0x0000,     /* R11677 */
+    0x0000,     /* R11678 */
+    0x0000,     /* R11679 */
+    0x0000,     /* R11680 */
+    0x0000,     /* R11681 */
+    0x0000,     /* R11682 */
+    0x0000,     /* R11683 */
+    0x0000,     /* R11684 */
+    0x0000,     /* R11685 */
+    0x0000,     /* R11686 */
+    0x0000,     /* R11687 */
+    0x0000,     /* R11688 */
+    0x0000,     /* R11689 */
+    0x0000,     /* R11690 */
+    0x0000,     /* R11691 */
+    0x0000,     /* R11692 */
+    0x0000,     /* R11693 */
+    0x0000,     /* R11694 */
+    0x0000,     /* R11695 */
+    0x0000,     /* R11696 */
+    0x0000,     /* R11697 */
+    0x0000,     /* R11698 */
+    0x0000,     /* R11699 */
+    0x0000,     /* R11700 */
+    0x0000,     /* R11701 */
+    0x0000,     /* R11702 */
+    0x0000,     /* R11703 */
+    0x0000,     /* R11704 */
+    0x0000,     /* R11705 */
+    0x0000,     /* R11706 */
+    0x0000,     /* R11707 */
+    0x0000,     /* R11708 */
+    0x0000,     /* R11709 */
+    0x0000,     /* R11710 */
+    0x0000,     /* R11711 */
+    0x0000,     /* R11712 */
+    0x0000,     /* R11713 */
+    0x0000,     /* R11714 */
+    0x0000,     /* R11715 */
+    0x0000,     /* R11716 */
+    0x0000,     /* R11717 */
+    0x0000,     /* R11718 */
+    0x0000,     /* R11719 */
+    0x0000,     /* R11720 */
+    0x0000,     /* R11721 */
+    0x0000,     /* R11722 */
+    0x0000,     /* R11723 */
+    0x0000,     /* R11724 */
+    0x0000,     /* R11725 */
+    0x0000,     /* R11726 */
+    0x0000,     /* R11727 */
+    0x0000,     /* R11728 */
+    0x0000,     /* R11729 */
+    0x0000,     /* R11730 */
+    0x0000,     /* R11731 */
+    0x0000,     /* R11732 */
+    0x0000,     /* R11733 */
+    0x0000,     /* R11734 */
+    0x0000,     /* R11735 */
+    0x0000,     /* R11736 */
+    0x0000,     /* R11737 */
+    0x0000,     /* R11738 */
+    0x0000,     /* R11739 */
+    0x0000,     /* R11740 */
+    0x0000,     /* R11741 */
+    0x0000,     /* R11742 */
+    0x0000,     /* R11743 */
+    0x0000,     /* R11744 */
+    0x0000,     /* R11745 */
+    0x0000,     /* R11746 */
+    0x0000,     /* R11747 */
+    0x0000,     /* R11748 */
+    0x0000,     /* R11749 */
+    0x0000,     /* R11750 */
+    0x0000,     /* R11751 */
+    0x0000,     /* R11752 */
+    0x0000,     /* R11753 */
+    0x0000,     /* R11754 */
+    0x0000,     /* R11755 */
+    0x0000,     /* R11756 */
+    0x0000,     /* R11757 */
+    0x0000,     /* R11758 */
+    0x0000,     /* R11759 */
+    0x0000,     /* R11760 */
+    0x0000,     /* R11761 */
+    0x0000,     /* R11762 */
+    0x0000,     /* R11763 */
+    0x0000,     /* R11764 */
+    0x0000,     /* R11765 */
+    0x0000,     /* R11766 */
+    0x0000,     /* R11767 */
+    0x0000,     /* R11768 */
+    0x0000,     /* R11769 */
+    0x0000,     /* R11770 */
+    0x0000,     /* R11771 */
+    0x0000,     /* R11772 */
+    0x0000,     /* R11773 */
+    0x0000,     /* R11774 */
+    0x0000,     /* R11775 */
+    0x0000,     /* R11776 */
+    0x0000,     /* R11777 */
+    0x0000,     /* R11778 */
+    0x0000,     /* R11779 */
+    0x0000,     /* R11780 */
+    0x0000,     /* R11781 */
+    0x0000,     /* R11782 */
+    0x0000,     /* R11783 */
+    0x0000,     /* R11784 */
+    0x0000,     /* R11785 */
+    0x0000,     /* R11786 */
+    0x0000,     /* R11787 */
+    0x0000,     /* R11788 */
+    0x0000,     /* R11789 */
+    0x0000,     /* R11790 */
+    0x0000,     /* R11791 */
+    0x0000,     /* R11792 */
+    0x0000,     /* R11793 */
+    0x0000,     /* R11794 */
+    0x0000,     /* R11795 */
+    0x0000,     /* R11796 */
+    0x0000,     /* R11797 */
+    0x0000,     /* R11798 */
+    0x0000,     /* R11799 */
+    0x0000,     /* R11800 */
+    0x0000,     /* R11801 */
+    0x0000,     /* R11802 */
+    0x0000,     /* R11803 */
+    0x0000,     /* R11804 */
+    0x0000,     /* R11805 */
+    0x0000,     /* R11806 */
+    0x0000,     /* R11807 */
+    0x0000,     /* R11808 */
+    0x0000,     /* R11809 */
+    0x0000,     /* R11810 */
+    0x0000,     /* R11811 */
+    0x0000,     /* R11812 */
+    0x0000,     /* R11813 */
+    0x0000,     /* R11814 */
+    0x0000,     /* R11815 */
+    0x0000,     /* R11816 */
+    0x0000,     /* R11817 */
+    0x0000,     /* R11818 */
+    0x0000,     /* R11819 */
+    0x0000,     /* R11820 */
+    0x0000,     /* R11821 */
+    0x0000,     /* R11822 */
+    0x0000,     /* R11823 */
+    0x0000,     /* R11824 */
+    0x0000,     /* R11825 */
+    0x0000,     /* R11826 */
+    0x0000,     /* R11827 */
+    0x0000,     /* R11828 */
+    0x0000,     /* R11829 */
+    0x0000,     /* R11830 */
+    0x0000,     /* R11831 */
+    0x0000,     /* R11832 */
+    0x0000,     /* R11833 */
+    0x0000,     /* R11834 */
+    0x0000,     /* R11835 */
+    0x0000,     /* R11836 */
+    0x0000,     /* R11837 */
+    0x0000,     /* R11838 */
+    0x0000,     /* R11839 */
+    0x0000,     /* R11840 */
+    0x0000,     /* R11841 */
+    0x0000,     /* R11842 */
+    0x0000,     /* R11843 */
+    0x0000,     /* R11844 */
+    0x0000,     /* R11845 */
+    0x0000,     /* R11846 */
+    0x0000,     /* R11847 */
+    0x0000,     /* R11848 */
+    0x0000,     /* R11849 */
+    0x0000,     /* R11850 */
+    0x0000,     /* R11851 */
+    0x0000,     /* R11852 */
+    0x0000,     /* R11853 */
+    0x0000,     /* R11854 */
+    0x0000,     /* R11855 */
+    0x0000,     /* R11856 */
+    0x0000,     /* R11857 */
+    0x0000,     /* R11858 */
+    0x0000,     /* R11859 */
+    0x0000,     /* R11860 */
+    0x0000,     /* R11861 */
+    0x0000,     /* R11862 */
+    0x0000,     /* R11863 */
+    0x0000,     /* R11864 */
+    0x0000,     /* R11865 */
+    0x0000,     /* R11866 */
+    0x0000,     /* R11867 */
+    0x0000,     /* R11868 */
+    0x0000,     /* R11869 */
+    0x0000,     /* R11870 */
+    0x0000,     /* R11871 */
+    0x0000,     /* R11872 */
+    0x0000,     /* R11873 */
+    0x0000,     /* R11874 */
+    0x0000,     /* R11875 */
+    0x0000,     /* R11876 */
+    0x0000,     /* R11877 */
+    0x0000,     /* R11878 */
+    0x0000,     /* R11879 */
+    0x0000,     /* R11880 */
+    0x0000,     /* R11881 */
+    0x0000,     /* R11882 */
+    0x0000,     /* R11883 */
+    0x0000,     /* R11884 */
+    0x0000,     /* R11885 */
+    0x0000,     /* R11886 */
+    0x0000,     /* R11887 */
+    0x0000,     /* R11888 */
+    0x0000,     /* R11889 */
+    0x0000,     /* R11890 */
+    0x0000,     /* R11891 */
+    0x0000,     /* R11892 */
+    0x0000,     /* R11893 */
+    0x0000,     /* R11894 */
+    0x0000,     /* R11895 */
+    0x0000,     /* R11896 */
+    0x0000,     /* R11897 */
+    0x0000,     /* R11898 */
+    0x0000,     /* R11899 */
+    0x0000,     /* R11900 */
+    0x0000,     /* R11901 */
+    0x0000,     /* R11902 */
+    0x0000,     /* R11903 */
+    0x0000,     /* R11904 */
+    0x0000,     /* R11905 */
+    0x0000,     /* R11906 */
+    0x0000,     /* R11907 */
+    0x0000,     /* R11908 */
+    0x0000,     /* R11909 */
+    0x0000,     /* R11910 */
+    0x0000,     /* R11911 */
+    0x0000,     /* R11912 */
+    0x0000,     /* R11913 */
+    0x0000,     /* R11914 */
+    0x0000,     /* R11915 */
+    0x0000,     /* R11916 */
+    0x0000,     /* R11917 */
+    0x0000,     /* R11918 */
+    0x0000,     /* R11919 */
+    0x0000,     /* R11920 */
+    0x0000,     /* R11921 */
+    0x0000,     /* R11922 */
+    0x0000,     /* R11923 */
+    0x0000,     /* R11924 */
+    0x0000,     /* R11925 */
+    0x0000,     /* R11926 */
+    0x0000,     /* R11927 */
+    0x0000,     /* R11928 */
+    0x0000,     /* R11929 */
+    0x0000,     /* R11930 */
+    0x0000,     /* R11931 */
+    0x0000,     /* R11932 */
+    0x0000,     /* R11933 */
+    0x0000,     /* R11934 */
+    0x0000,     /* R11935 */
+    0x0000,     /* R11936 */
+    0x0000,     /* R11937 */
+    0x0000,     /* R11938 */
+    0x0000,     /* R11939 */
+    0x0000,     /* R11940 */
+    0x0000,     /* R11941 */
+    0x0000,     /* R11942 */
+    0x0000,     /* R11943 */
+    0x0000,     /* R11944 */
+    0x0000,     /* R11945 */
+    0x0000,     /* R11946 */
+    0x0000,     /* R11947 */
+    0x0000,     /* R11948 */
+    0x0000,     /* R11949 */
+    0x0000,     /* R11950 */
+    0x0000,     /* R11951 */
+    0x0000,     /* R11952 */
+    0x0000,     /* R11953 */
+    0x0000,     /* R11954 */
+    0x0000,     /* R11955 */
+    0x0000,     /* R11956 */
+    0x0000,     /* R11957 */
+    0x0000,     /* R11958 */
+    0x0000,     /* R11959 */
+    0x0000,     /* R11960 */
+    0x0000,     /* R11961 */
+    0x0000,     /* R11962 */
+    0x0000,     /* R11963 */
+    0x0000,     /* R11964 */
+    0x0000,     /* R11965 */
+    0x0000,     /* R11966 */
+    0x0000,     /* R11967 */
+    0x0000,     /* R11968 */
+    0x0000,     /* R11969 */
+    0x0000,     /* R11970 */
+    0x0000,     /* R11971 */
+    0x0000,     /* R11972 */
+    0x0000,     /* R11973 */
+    0x0000,     /* R11974 */
+    0x0000,     /* R11975 */
+    0x0000,     /* R11976 */
+    0x0000,     /* R11977 */
+    0x0000,     /* R11978 */
+    0x0000,     /* R11979 */
+    0x0000,     /* R11980 */
+    0x0000,     /* R11981 */
+    0x0000,     /* R11982 */
+    0x0000,     /* R11983 */
+    0x0000,     /* R11984 */
+    0x0000,     /* R11985 */
+    0x0000,     /* R11986 */
+    0x0000,     /* R11987 */
+    0x0000,     /* R11988 */
+    0x0000,     /* R11989 */
+    0x0000,     /* R11990 */
+    0x0000,     /* R11991 */
+    0x0000,     /* R11992 */
+    0x0000,     /* R11993 */
+    0x0000,     /* R11994 */
+    0x0000,     /* R11995 */
+    0x0000,     /* R11996 */
+    0x0000,     /* R11997 */
+    0x0000,     /* R11998 */
+    0x0000,     /* R11999 */
+    0x0000,     /* R12000 */
+    0x0000,     /* R12001 */
+    0x0000,     /* R12002 */
+    0x0000,     /* R12003 */
+    0x0000,     /* R12004 */
+    0x0000,     /* R12005 */
+    0x0000,     /* R12006 */
+    0x0000,     /* R12007 */
+    0x0000,     /* R12008 */
+    0x0000,     /* R12009 */
+    0x0000,     /* R12010 */
+    0x0000,     /* R12011 */
+    0x0000,     /* R12012 */
+    0x0000,     /* R12013 */
+    0x0000,     /* R12014 */
+    0x0000,     /* R12015 */
+    0x0000,     /* R12016 */
+    0x0000,     /* R12017 */
+    0x0000,     /* R12018 */
+    0x0000,     /* R12019 */
+    0x0000,     /* R12020 */
+    0x0000,     /* R12021 */
+    0x0000,     /* R12022 */
+    0x0000,     /* R12023 */
+    0x0000,     /* R12024 */
+    0x0000,     /* R12025 */
+    0x0000,     /* R12026 */
+    0x0000,     /* R12027 */
+    0x0000,     /* R12028 */
+    0x0000,     /* R12029 */
+    0x0000,     /* R12030 */
+    0x0000,     /* R12031 */
+    0x0000,     /* R12032 */
+    0x0000,     /* R12033 */
+    0x0000,     /* R12034 */
+    0x0000,     /* R12035 */
+    0x0000,     /* R12036 */
+    0x0000,     /* R12037 */
+    0x0000,     /* R12038 */
+    0x0000,     /* R12039 */
+    0x0000,     /* R12040 */
+    0x0000,     /* R12041 */
+    0x0000,     /* R12042 */
+    0x0000,     /* R12043 */
+    0x0000,     /* R12044 */
+    0x0000,     /* R12045 */
+    0x0000,     /* R12046 */
+    0x0000,     /* R12047 */
+    0x0000,     /* R12048 */
+    0x0000,     /* R12049 */
+    0x0000,     /* R12050 */
+    0x0000,     /* R12051 */
+    0x0000,     /* R12052 */
+    0x0000,     /* R12053 */
+    0x0000,     /* R12054 */
+    0x0000,     /* R12055 */
+    0x0000,     /* R12056 */
+    0x0000,     /* R12057 */
+    0x0000,     /* R12058 */
+    0x0000,     /* R12059 */
+    0x0000,     /* R12060 */
+    0x0000,     /* R12061 */
+    0x0000,     /* R12062 */
+    0x0000,     /* R12063 */
+    0x0000,     /* R12064 */
+    0x0000,     /* R12065 */
+    0x0000,     /* R12066 */
+    0x0000,     /* R12067 */
+    0x0000,     /* R12068 */
+    0x0000,     /* R12069 */
+    0x0000,     /* R12070 */
+    0x0000,     /* R12071 */
+    0x0000,     /* R12072 */
+    0x0000,     /* R12073 */
+    0x0000,     /* R12074 */
+    0x0000,     /* R12075 */
+    0x0000,     /* R12076 */
+    0x0000,     /* R12077 */
+    0x0000,     /* R12078 */
+    0x0000,     /* R12079 */
+    0x0000,     /* R12080 */
+    0x0000,     /* R12081 */
+    0x0000,     /* R12082 */
+    0x0000,     /* R12083 */
+    0x0000,     /* R12084 */
+    0x0000,     /* R12085 */
+    0x0000,     /* R12086 */
+    0x0000,     /* R12087 */
+    0x0000,     /* R12088 */
+    0x0000,     /* R12089 */
+    0x0000,     /* R12090 */
+    0x0000,     /* R12091 */
+    0x0000,     /* R12092 */
+    0x0000,     /* R12093 */
+    0x0000,     /* R12094 */
+    0x0000,     /* R12095 */
+    0x0000,     /* R12096 */
+    0x0000,     /* R12097 */
+    0x0000,     /* R12098 */
+    0x0000,     /* R12099 */
+    0x0000,     /* R12100 */
+    0x0000,     /* R12101 */
+    0x0000,     /* R12102 */
+    0x0000,     /* R12103 */
+    0x0000,     /* R12104 */
+    0x0000,     /* R12105 */
+    0x0000,     /* R12106 */
+    0x0000,     /* R12107 */
+    0x0000,     /* R12108 */
+    0x0000,     /* R12109 */
+    0x0000,     /* R12110 */
+    0x0000,     /* R12111 */
+    0x0000,     /* R12112 */
+    0x0000,     /* R12113 */
+    0x0000,     /* R12114 */
+    0x0000,     /* R12115 */
+    0x0000,     /* R12116 */
+    0x0000,     /* R12117 */
+    0x0000,     /* R12118 */
+    0x0000,     /* R12119 */
+    0x0000,     /* R12120 */
+    0x0000,     /* R12121 */
+    0x0000,     /* R12122 */
+    0x0000,     /* R12123 */
+    0x0000,     /* R12124 */
+    0x0000,     /* R12125 */
+    0x0000,     /* R12126 */
+    0x0000,     /* R12127 */
+    0x0000,     /* R12128 */
+    0x0000,     /* R12129 */
+    0x0000,     /* R12130 */
+    0x0000,     /* R12131 */
+    0x0000,     /* R12132 */
+    0x0000,     /* R12133 */
+    0x0000,     /* R12134 */
+    0x0000,     /* R12135 */
+    0x0000,     /* R12136 */
+    0x0000,     /* R12137 */
+    0x0000,     /* R12138 */
+    0x0000,     /* R12139 */
+    0x0000,     /* R12140 */
+    0x0000,     /* R12141 */
+    0x0000,     /* R12142 */
+    0x0000,     /* R12143 */
+    0x0000,     /* R12144 */
+    0x0000,     /* R12145 */
+    0x0000,     /* R12146 */
+    0x0000,     /* R12147 */
+    0x0000,     /* R12148 */
+    0x0000,     /* R12149 */
+    0x0000,     /* R12150 */
+    0x0000,     /* R12151 */
+    0x0000,     /* R12152 */
+    0x0000,     /* R12153 */
+    0x0000,     /* R12154 */
+    0x0000,     /* R12155 */
+    0x0000,     /* R12156 */
+    0x0000,     /* R12157 */
+    0x0000,     /* R12158 */
+    0x0000,     /* R12159 */
+    0x0000,     /* R12160 */
+    0x0000,     /* R12161 */
+    0x0000,     /* R12162 */
+    0x0000,     /* R12163 */
+    0x0000,     /* R12164 */
+    0x0000,     /* R12165 */
+    0x0000,     /* R12166 */
+    0x0000,     /* R12167 */
+    0x0000,     /* R12168 */
+    0x0000,     /* R12169 */
+    0x0000,     /* R12170 */
+    0x0000,     /* R12171 */
+    0x0000,     /* R12172 */
+    0x0000,     /* R12173 */
+    0x0000,     /* R12174 */
+    0x0000,     /* R12175 */
+    0x0000,     /* R12176 */
+    0x0000,     /* R12177 */
+    0x0000,     /* R12178 */
+    0x0000,     /* R12179 */
+    0x0000,     /* R12180 */
+    0x0000,     /* R12181 */
+    0x0000,     /* R12182 */
+    0x0000,     /* R12183 */
+    0x0000,     /* R12184 */
+    0x0000,     /* R12185 */
+    0x0000,     /* R12186 */
+    0x0000,     /* R12187 */
+    0x0000,     /* R12188 */
+    0x0000,     /* R12189 */
+    0x0000,     /* R12190 */
+    0x0000,     /* R12191 */
+    0x0000,     /* R12192 */
+    0x0000,     /* R12193 */
+    0x0000,     /* R12194 */
+    0x0000,     /* R12195 */
+    0x0000,     /* R12196 */
+    0x0000,     /* R12197 */
+    0x0000,     /* R12198 */
+    0x0000,     /* R12199 */
+    0x0000,     /* R12200 */
+    0x0000,     /* R12201 */
+    0x0000,     /* R12202 */
+    0x0000,     /* R12203 */
+    0x0000,     /* R12204 */
+    0x0000,     /* R12205 */
+    0x0000,     /* R12206 */
+    0x0000,     /* R12207 */
+    0x0000,     /* R12208 */
+    0x0000,     /* R12209 */
+    0x0000,     /* R12210 */
+    0x0000,     /* R12211 */
+    0x0000,     /* R12212 */
+    0x0000,     /* R12213 */
+    0x0000,     /* R12214 */
+    0x0000,     /* R12215 */
+    0x0000,     /* R12216 */
+    0x0000,     /* R12217 */
+    0x0000,     /* R12218 */
+    0x0000,     /* R12219 */
+    0x0000,     /* R12220 */
+    0x0000,     /* R12221 */
+    0x0000,     /* R12222 */
+    0x0000,     /* R12223 */
+    0x0000,     /* R12224 */
+    0x0000,     /* R12225 */
+    0x0000,     /* R12226 */
+    0x0000,     /* R12227 */
+    0x0000,     /* R12228 */
+    0x0000,     /* R12229 */
+    0x0000,     /* R12230 */
+    0x0000,     /* R12231 */
+    0x0000,     /* R12232 */
+    0x0000,     /* R12233 */
+    0x0000,     /* R12234 */
+    0x0000,     /* R12235 */
+    0x0000,     /* R12236 */
+    0x0000,     /* R12237 */
+    0x0000,     /* R12238 */
+    0x0000,     /* R12239 */
+    0x0000,     /* R12240 */
+    0x0000,     /* R12241 */
+    0x0000,     /* R12242 */
+    0x0000,     /* R12243 */
+    0x0000,     /* R12244 */
+    0x0000,     /* R12245 */
+    0x0000,     /* R12246 */
+    0x0000,     /* R12247 */
+    0x0000,     /* R12248 */
+    0x0000,     /* R12249 */
+    0x0000,     /* R12250 */
+    0x0000,     /* R12251 */
+    0x0000,     /* R12252 */
+    0x0000,     /* R12253 */
+    0x0000,     /* R12254 */
+    0x0000,     /* R12255 */
+    0x0000,     /* R12256 */
+    0x0000,     /* R12257 */
+    0x0000,     /* R12258 */
+    0x0000,     /* R12259 */
+    0x0000,     /* R12260 */
+    0x0000,     /* R12261 */
+    0x0000,     /* R12262 */
+    0x0000,     /* R12263 */
+    0x0000,     /* R12264 */
+    0x0000,     /* R12265 */
+    0x0000,     /* R12266 */
+    0x0000,     /* R12267 */
+    0x0000,     /* R12268 */
+    0x0000,     /* R12269 */
+    0x0000,     /* R12270 */
+    0x0000,     /* R12271 */
+    0x0000,     /* R12272 */
+    0x0000,     /* R12273 */
+    0x0000,     /* R12274 */
+    0x0000,     /* R12275 */
+    0x0000,     /* R12276 */
+    0x0000,     /* R12277 */
+    0x0000,     /* R12278 */
+    0x0000,     /* R12279 */
+    0x0000,     /* R12280 */
+    0x0000,     /* R12281 */
+    0x0000,     /* R12282 */
+    0x0000,     /* R12283 */
+    0x0000,     /* R12284 */
+    0x0000,     /* R12285 */
+    0x0000,     /* R12286 */
+    0x0000,     /* R12287 */
+    0x0000,     /* R12288 - DSP2 Data1 RAM 1 */
+    0x0000,     /* R12289 - DSP2 Data1 RAM 0 */
+    0x0000,     /* R12290 */
+    0x0000,     /* R12291 */
+    0x0000,     /* R12292 */
+    0x0000,     /* R12293 */
+    0x0000,     /* R12294 */
+    0x0000,     /* R12295 */
+    0x0000,     /* R12296 */
+    0x0000,     /* R12297 */
+    0x0000,     /* R12298 */
+    0x0000,     /* R12299 */
+    0x0000,     /* R12300 */
+    0x0000,     /* R12301 */
+    0x0000,     /* R12302 */
+    0x0000,     /* R12303 */
+    0x0000,     /* R12304 */
+    0x0000,     /* R12305 */
+    0x0000,     /* R12306 */
+    0x0000,     /* R12307 */
+    0x0000,     /* R12308 */
+    0x0000,     /* R12309 */
+    0x0000,     /* R12310 */
+    0x0000,     /* R12311 */
+    0x0000,     /* R12312 */
+    0x0000,     /* R12313 */
+    0x0000,     /* R12314 */
+    0x0000,     /* R12315 */
+    0x0000,     /* R12316 */
+    0x0000,     /* R12317 */
+    0x0000,     /* R12318 */
+    0x0000,     /* R12319 */
+    0x0000,     /* R12320 */
+    0x0000,     /* R12321 */
+    0x0000,     /* R12322 */
+    0x0000,     /* R12323 */
+    0x0000,     /* R12324 */
+    0x0000,     /* R12325 */
+    0x0000,     /* R12326 */
+    0x0000,     /* R12327 */
+    0x0000,     /* R12328 */
+    0x0000,     /* R12329 */
+    0x0000,     /* R12330 */
+    0x0000,     /* R12331 */
+    0x0000,     /* R12332 */
+    0x0000,     /* R12333 */
+    0x0000,     /* R12334 */
+    0x0000,     /* R12335 */
+    0x0000,     /* R12336 */
+    0x0000,     /* R12337 */
+    0x0000,     /* R12338 */
+    0x0000,     /* R12339 */
+    0x0000,     /* R12340 */
+    0x0000,     /* R12341 */
+    0x0000,     /* R12342 */
+    0x0000,     /* R12343 */
+    0x0000,     /* R12344 */
+    0x0000,     /* R12345 */
+    0x0000,     /* R12346 */
+    0x0000,     /* R12347 */
+    0x0000,     /* R12348 */
+    0x0000,     /* R12349 */
+    0x0000,     /* R12350 */
+    0x0000,     /* R12351 */
+    0x0000,     /* R12352 */
+    0x0000,     /* R12353 */
+    0x0000,     /* R12354 */
+    0x0000,     /* R12355 */
+    0x0000,     /* R12356 */
+    0x0000,     /* R12357 */
+    0x0000,     /* R12358 */
+    0x0000,     /* R12359 */
+    0x0000,     /* R12360 */
+    0x0000,     /* R12361 */
+    0x0000,     /* R12362 */
+    0x0000,     /* R12363 */
+    0x0000,     /* R12364 */
+    0x0000,     /* R12365 */
+    0x0000,     /* R12366 */
+    0x0000,     /* R12367 */
+    0x0000,     /* R12368 */
+    0x0000,     /* R12369 */
+    0x0000,     /* R12370 */
+    0x0000,     /* R12371 */
+    0x0000,     /* R12372 */
+    0x0000,     /* R12373 */
+    0x0000,     /* R12374 */
+    0x0000,     /* R12375 */
+    0x0000,     /* R12376 */
+    0x0000,     /* R12377 */
+    0x0000,     /* R12378 */
+    0x0000,     /* R12379 */
+    0x0000,     /* R12380 */
+    0x0000,     /* R12381 */
+    0x0000,     /* R12382 */
+    0x0000,     /* R12383 */
+    0x0000,     /* R12384 */
+    0x0000,     /* R12385 */
+    0x0000,     /* R12386 */
+    0x0000,     /* R12387 */
+    0x0000,     /* R12388 */
+    0x0000,     /* R12389 */
+    0x0000,     /* R12390 */
+    0x0000,     /* R12391 */
+    0x0000,     /* R12392 */
+    0x0000,     /* R12393 */
+    0x0000,     /* R12394 */
+    0x0000,     /* R12395 */
+    0x0000,     /* R12396 */
+    0x0000,     /* R12397 */
+    0x0000,     /* R12398 */
+    0x0000,     /* R12399 */
+    0x0000,     /* R12400 */
+    0x0000,     /* R12401 */
+    0x0000,     /* R12402 */
+    0x0000,     /* R12403 */
+    0x0000,     /* R12404 */
+    0x0000,     /* R12405 */
+    0x0000,     /* R12406 */
+    0x0000,     /* R12407 */
+    0x0000,     /* R12408 */
+    0x0000,     /* R12409 */
+    0x0000,     /* R12410 */
+    0x0000,     /* R12411 */
+    0x0000,     /* R12412 */
+    0x0000,     /* R12413 */
+    0x0000,     /* R12414 */
+    0x0000,     /* R12415 */
+    0x0000,     /* R12416 */
+    0x0000,     /* R12417 */
+    0x0000,     /* R12418 */
+    0x0000,     /* R12419 */
+    0x0000,     /* R12420 */
+    0x0000,     /* R12421 */
+    0x0000,     /* R12422 */
+    0x0000,     /* R12423 */
+    0x0000,     /* R12424 */
+    0x0000,     /* R12425 */
+    0x0000,     /* R12426 */
+    0x0000,     /* R12427 */
+    0x0000,     /* R12428 */
+    0x0000,     /* R12429 */
+    0x0000,     /* R12430 */
+    0x0000,     /* R12431 */
+    0x0000,     /* R12432 */
+    0x0000,     /* R12433 */
+    0x0000,     /* R12434 */
+    0x0000,     /* R12435 */
+    0x0000,     /* R12436 */
+    0x0000,     /* R12437 */
+    0x0000,     /* R12438 */
+    0x0000,     /* R12439 */
+    0x0000,     /* R12440 */
+    0x0000,     /* R12441 */
+    0x0000,     /* R12442 */
+    0x0000,     /* R12443 */
+    0x0000,     /* R12444 */
+    0x0000,     /* R12445 */
+    0x0000,     /* R12446 */
+    0x0000,     /* R12447 */
+    0x0000,     /* R12448 */
+    0x0000,     /* R12449 */
+    0x0000,     /* R12450 */
+    0x0000,     /* R12451 */
+    0x0000,     /* R12452 */
+    0x0000,     /* R12453 */
+    0x0000,     /* R12454 */
+    0x0000,     /* R12455 */
+    0x0000,     /* R12456 */
+    0x0000,     /* R12457 */
+    0x0000,     /* R12458 */
+    0x0000,     /* R12459 */
+    0x0000,     /* R12460 */
+    0x0000,     /* R12461 */
+    0x0000,     /* R12462 */
+    0x0000,     /* R12463 */
+    0x0000,     /* R12464 */
+    0x0000,     /* R12465 */
+    0x0000,     /* R12466 */
+    0x0000,     /* R12467 */
+    0x0000,     /* R12468 */
+    0x0000,     /* R12469 */
+    0x0000,     /* R12470 */
+    0x0000,     /* R12471 */
+    0x0000,     /* R12472 */
+    0x0000,     /* R12473 */
+    0x0000,     /* R12474 */
+    0x0000,     /* R12475 */
+    0x0000,     /* R12476 */
+    0x0000,     /* R12477 */
+    0x0000,     /* R12478 */
+    0x0000,     /* R12479 */
+    0x0000,     /* R12480 */
+    0x0000,     /* R12481 */
+    0x0000,     /* R12482 */
+    0x0000,     /* R12483 */
+    0x0000,     /* R12484 */
+    0x0000,     /* R12485 */
+    0x0000,     /* R12486 */
+    0x0000,     /* R12487 */
+    0x0000,     /* R12488 */
+    0x0000,     /* R12489 */
+    0x0000,     /* R12490 */
+    0x0000,     /* R12491 */
+    0x0000,     /* R12492 */
+    0x0000,     /* R12493 */
+    0x0000,     /* R12494 */
+    0x0000,     /* R12495 */
+    0x0000,     /* R12496 */
+    0x0000,     /* R12497 */
+    0x0000,     /* R12498 */
+    0x0000,     /* R12499 */
+    0x0000,     /* R12500 */
+    0x0000,     /* R12501 */
+    0x0000,     /* R12502 */
+    0x0000,     /* R12503 */
+    0x0000,     /* R12504 */
+    0x0000,     /* R12505 */
+    0x0000,     /* R12506 */
+    0x0000,     /* R12507 */
+    0x0000,     /* R12508 */
+    0x0000,     /* R12509 */
+    0x0000,     /* R12510 */
+    0x0000,     /* R12511 */
+    0x0000,     /* R12512 */
+    0x0000,     /* R12513 */
+    0x0000,     /* R12514 */
+    0x0000,     /* R12515 */
+    0x0000,     /* R12516 */
+    0x0000,     /* R12517 */
+    0x0000,     /* R12518 */
+    0x0000,     /* R12519 */
+    0x0000,     /* R12520 */
+    0x0000,     /* R12521 */
+    0x0000,     /* R12522 */
+    0x0000,     /* R12523 */
+    0x0000,     /* R12524 */
+    0x0000,     /* R12525 */
+    0x0000,     /* R12526 */
+    0x0000,     /* R12527 */
+    0x0000,     /* R12528 */
+    0x0000,     /* R12529 */
+    0x0000,     /* R12530 */
+    0x0000,     /* R12531 */
+    0x0000,     /* R12532 */
+    0x0000,     /* R12533 */
+    0x0000,     /* R12534 */
+    0x0000,     /* R12535 */
+    0x0000,     /* R12536 */
+    0x0000,     /* R12537 */
+    0x0000,     /* R12538 */
+    0x0000,     /* R12539 */
+    0x0000,     /* R12540 */
+    0x0000,     /* R12541 */
+    0x0000,     /* R12542 */
+    0x0000,     /* R12543 */
+    0x0000,     /* R12544 */
+    0x0000,     /* R12545 */
+    0x0000,     /* R12546 */
+    0x0000,     /* R12547 */
+    0x0000,     /* R12548 */
+    0x0000,     /* R12549 */
+    0x0000,     /* R12550 */
+    0x0000,     /* R12551 */
+    0x0000,     /* R12552 */
+    0x0000,     /* R12553 */
+    0x0000,     /* R12554 */
+    0x0000,     /* R12555 */
+    0x0000,     /* R12556 */
+    0x0000,     /* R12557 */
+    0x0000,     /* R12558 */
+    0x0000,     /* R12559 */
+    0x0000,     /* R12560 */
+    0x0000,     /* R12561 */
+    0x0000,     /* R12562 */
+    0x0000,     /* R12563 */
+    0x0000,     /* R12564 */
+    0x0000,     /* R12565 */
+    0x0000,     /* R12566 */
+    0x0000,     /* R12567 */
+    0x0000,     /* R12568 */
+    0x0000,     /* R12569 */
+    0x0000,     /* R12570 */
+    0x0000,     /* R12571 */
+    0x0000,     /* R12572 */
+    0x0000,     /* R12573 */
+    0x0000,     /* R12574 */
+    0x0000,     /* R12575 */
+    0x0000,     /* R12576 */
+    0x0000,     /* R12577 */
+    0x0000,     /* R12578 */
+    0x0000,     /* R12579 */
+    0x0000,     /* R12580 */
+    0x0000,     /* R12581 */
+    0x0000,     /* R12582 */
+    0x0000,     /* R12583 */
+    0x0000,     /* R12584 */
+    0x0000,     /* R12585 */
+    0x0000,     /* R12586 */
+    0x0000,     /* R12587 */
+    0x0000,     /* R12588 */
+    0x0000,     /* R12589 */
+    0x0000,     /* R12590 */
+    0x0000,     /* R12591 */
+    0x0000,     /* R12592 */
+    0x0000,     /* R12593 */
+    0x0000,     /* R12594 */
+    0x0000,     /* R12595 */
+    0x0000,     /* R12596 */
+    0x0000,     /* R12597 */
+    0x0000,     /* R12598 */
+    0x0000,     /* R12599 */
+    0x0000,     /* R12600 */
+    0x0000,     /* R12601 */
+    0x0000,     /* R12602 */
+    0x0000,     /* R12603 */
+    0x0000,     /* R12604 */
+    0x0000,     /* R12605 */
+    0x0000,     /* R12606 */
+    0x0000,     /* R12607 */
+    0x0000,     /* R12608 */
+    0x0000,     /* R12609 */
+    0x0000,     /* R12610 */
+    0x0000,     /* R12611 */
+    0x0000,     /* R12612 */
+    0x0000,     /* R12613 */
+    0x0000,     /* R12614 */
+    0x0000,     /* R12615 */
+    0x0000,     /* R12616 */
+    0x0000,     /* R12617 */
+    0x0000,     /* R12618 */
+    0x0000,     /* R12619 */
+    0x0000,     /* R12620 */
+    0x0000,     /* R12621 */
+    0x0000,     /* R12622 */
+    0x0000,     /* R12623 */
+    0x0000,     /* R12624 */
+    0x0000,     /* R12625 */
+    0x0000,     /* R12626 */
+    0x0000,     /* R12627 */
+    0x0000,     /* R12628 */
+    0x0000,     /* R12629 */
+    0x0000,     /* R12630 */
+    0x0000,     /* R12631 */
+    0x0000,     /* R12632 */
+    0x0000,     /* R12633 */
+    0x0000,     /* R12634 */
+    0x0000,     /* R12635 */
+    0x0000,     /* R12636 */
+    0x0000,     /* R12637 */
+    0x0000,     /* R12638 */
+    0x0000,     /* R12639 */
+    0x0000,     /* R12640 */
+    0x0000,     /* R12641 */
+    0x0000,     /* R12642 */
+    0x0000,     /* R12643 */
+    0x0000,     /* R12644 */
+    0x0000,     /* R12645 */
+    0x0000,     /* R12646 */
+    0x0000,     /* R12647 */
+    0x0000,     /* R12648 */
+    0x0000,     /* R12649 */
+    0x0000,     /* R12650 */
+    0x0000,     /* R12651 */
+    0x0000,     /* R12652 */
+    0x0000,     /* R12653 */
+    0x0000,     /* R12654 */
+    0x0000,     /* R12655 */
+    0x0000,     /* R12656 */
+    0x0000,     /* R12657 */
+    0x0000,     /* R12658 */
+    0x0000,     /* R12659 */
+    0x0000,     /* R12660 */
+    0x0000,     /* R12661 */
+    0x0000,     /* R12662 */
+    0x0000,     /* R12663 */
+    0x0000,     /* R12664 */
+    0x0000,     /* R12665 */
+    0x0000,     /* R12666 */
+    0x0000,     /* R12667 */
+    0x0000,     /* R12668 */
+    0x0000,     /* R12669 */
+    0x0000,     /* R12670 */
+    0x0000,     /* R12671 */
+    0x0000,     /* R12672 */
+    0x0000,     /* R12673 */
+    0x0000,     /* R12674 */
+    0x0000,     /* R12675 */
+    0x0000,     /* R12676 */
+    0x0000,     /* R12677 */
+    0x0000,     /* R12678 */
+    0x0000,     /* R12679 */
+    0x0000,     /* R12680 */
+    0x0000,     /* R12681 */
+    0x0000,     /* R12682 */
+    0x0000,     /* R12683 */
+    0x0000,     /* R12684 */
+    0x0000,     /* R12685 */
+    0x0000,     /* R12686 */
+    0x0000,     /* R12687 */
+    0x0000,     /* R12688 */
+    0x0000,     /* R12689 */
+    0x0000,     /* R12690 */
+    0x0000,     /* R12691 */
+    0x0000,     /* R12692 */
+    0x0000,     /* R12693 */
+    0x0000,     /* R12694 */
+    0x0000,     /* R12695 */
+    0x0000,     /* R12696 */
+    0x0000,     /* R12697 */
+    0x0000,     /* R12698 */
+    0x0000,     /* R12699 */
+    0x0000,     /* R12700 */
+    0x0000,     /* R12701 */
+    0x0000,     /* R12702 */
+    0x0000,     /* R12703 */
+    0x0000,     /* R12704 */
+    0x0000,     /* R12705 */
+    0x0000,     /* R12706 */
+    0x0000,     /* R12707 */
+    0x0000,     /* R12708 */
+    0x0000,     /* R12709 */
+    0x0000,     /* R12710 */
+    0x0000,     /* R12711 */
+    0x0000,     /* R12712 */
+    0x0000,     /* R12713 */
+    0x0000,     /* R12714 */
+    0x0000,     /* R12715 */
+    0x0000,     /* R12716 */
+    0x0000,     /* R12717 */
+    0x0000,     /* R12718 */
+    0x0000,     /* R12719 */
+    0x0000,     /* R12720 */
+    0x0000,     /* R12721 */
+    0x0000,     /* R12722 */
+    0x0000,     /* R12723 */
+    0x0000,     /* R12724 */
+    0x0000,     /* R12725 */
+    0x0000,     /* R12726 */
+    0x0000,     /* R12727 */
+    0x0000,     /* R12728 */
+    0x0000,     /* R12729 */
+    0x0000,     /* R12730 */
+    0x0000,     /* R12731 */
+    0x0000,     /* R12732 */
+    0x0000,     /* R12733 */
+    0x0000,     /* R12734 */
+    0x0000,     /* R12735 */
+    0x0000,     /* R12736 */
+    0x0000,     /* R12737 */
+    0x0000,     /* R12738 */
+    0x0000,     /* R12739 */
+    0x0000,     /* R12740 */
+    0x0000,     /* R12741 */
+    0x0000,     /* R12742 */
+    0x0000,     /* R12743 */
+    0x0000,     /* R12744 */
+    0x0000,     /* R12745 */
+    0x0000,     /* R12746 */
+    0x0000,     /* R12747 */
+    0x0000,     /* R12748 */
+    0x0000,     /* R12749 */
+    0x0000,     /* R12750 */
+    0x0000,     /* R12751 */
+    0x0000,     /* R12752 */
+    0x0000,     /* R12753 */
+    0x0000,     /* R12754 */
+    0x0000,     /* R12755 */
+    0x0000,     /* R12756 */
+    0x0000,     /* R12757 */
+    0x0000,     /* R12758 */
+    0x0000,     /* R12759 */
+    0x0000,     /* R12760 */
+    0x0000,     /* R12761 */
+    0x0000,     /* R12762 */
+    0x0000,     /* R12763 */
+    0x0000,     /* R12764 */
+    0x0000,     /* R12765 */
+    0x0000,     /* R12766 */
+    0x0000,     /* R12767 */
+    0x0000,     /* R12768 */
+    0x0000,     /* R12769 */
+    0x0000,     /* R12770 */
+    0x0000,     /* R12771 */
+    0x0000,     /* R12772 */
+    0x0000,     /* R12773 */
+    0x0000,     /* R12774 */
+    0x0000,     /* R12775 */
+    0x0000,     /* R12776 */
+    0x0000,     /* R12777 */
+    0x0000,     /* R12778 */
+    0x0000,     /* R12779 */
+    0x0000,     /* R12780 */
+    0x0000,     /* R12781 */
+    0x0000,     /* R12782 */
+    0x0000,     /* R12783 */
+    0x0000,     /* R12784 */
+    0x0000,     /* R12785 */
+    0x0000,     /* R12786 */
+    0x0000,     /* R12787 */
+    0x0000,     /* R12788 */
+    0x0000,     /* R12789 */
+    0x0000,     /* R12790 */
+    0x0000,     /* R12791 */
+    0x0000,     /* R12792 */
+    0x0000,     /* R12793 */
+    0x0000,     /* R12794 */
+    0x0000,     /* R12795 */
+    0x0000,     /* R12796 */
+    0x0000,     /* R12797 */
+    0x0000,     /* R12798 */
+    0x0000,     /* R12799 */
+    0x0000,     /* R12800 */
+    0x0000,     /* R12801 */
+    0x0000,     /* R12802 */
+    0x0000,     /* R12803 */
+    0x0000,     /* R12804 */
+    0x0000,     /* R12805 */
+    0x0000,     /* R12806 */
+    0x0000,     /* R12807 */
+    0x0000,     /* R12808 */
+    0x0000,     /* R12809 */
+    0x0000,     /* R12810 */
+    0x0000,     /* R12811 */
+    0x0000,     /* R12812 */
+    0x0000,     /* R12813 */
+    0x0000,     /* R12814 */
+    0x0000,     /* R12815 */
+    0x0000,     /* R12816 */
+    0x0000,     /* R12817 */
+    0x0000,     /* R12818 */
+    0x0000,     /* R12819 */
+    0x0000,     /* R12820 */
+    0x0000,     /* R12821 */
+    0x0000,     /* R12822 */
+    0x0000,     /* R12823 */
+    0x0000,     /* R12824 */
+    0x0000,     /* R12825 */
+    0x0000,     /* R12826 */
+    0x0000,     /* R12827 */
+    0x0000,     /* R12828 */
+    0x0000,     /* R12829 */
+    0x0000,     /* R12830 */
+    0x0000,     /* R12831 */
+    0x0000,     /* R12832 */
+    0x0000,     /* R12833 */
+    0x0000,     /* R12834 */
+    0x0000,     /* R12835 */
+    0x0000,     /* R12836 */
+    0x0000,     /* R12837 */
+    0x0000,     /* R12838 */
+    0x0000,     /* R12839 */
+    0x0000,     /* R12840 */
+    0x0000,     /* R12841 */
+    0x0000,     /* R12842 */
+    0x0000,     /* R12843 */
+    0x0000,     /* R12844 */
+    0x0000,     /* R12845 */
+    0x0000,     /* R12846 */
+    0x0000,     /* R12847 */
+    0x0000,     /* R12848 */
+    0x0000,     /* R12849 */
+    0x0000,     /* R12850 */
+    0x0000,     /* R12851 */
+    0x0000,     /* R12852 */
+    0x0000,     /* R12853 */
+    0x0000,     /* R12854 */
+    0x0000,     /* R12855 */
+    0x0000,     /* R12856 */
+    0x0000,     /* R12857 */
+    0x0000,     /* R12858 */
+    0x0000,     /* R12859 */
+    0x0000,     /* R12860 */
+    0x0000,     /* R12861 */
+    0x0000,     /* R12862 */
+    0x0000,     /* R12863 */
+    0x0000,     /* R12864 */
+    0x0000,     /* R12865 */
+    0x0000,     /* R12866 */
+    0x0000,     /* R12867 */
+    0x0000,     /* R12868 */
+    0x0000,     /* R12869 */
+    0x0000,     /* R12870 */
+    0x0000,     /* R12871 */
+    0x0000,     /* R12872 */
+    0x0000,     /* R12873 */
+    0x0000,     /* R12874 */
+    0x0000,     /* R12875 */
+    0x0000,     /* R12876 */
+    0x0000,     /* R12877 */
+    0x0000,     /* R12878 */
+    0x0000,     /* R12879 */
+    0x0000,     /* R12880 */
+    0x0000,     /* R12881 */
+    0x0000,     /* R12882 */
+    0x0000,     /* R12883 */
+    0x0000,     /* R12884 */
+    0x0000,     /* R12885 */
+    0x0000,     /* R12886 */
+    0x0000,     /* R12887 */
+    0x0000,     /* R12888 */
+    0x0000,     /* R12889 */
+    0x0000,     /* R12890 */
+    0x0000,     /* R12891 */
+    0x0000,     /* R12892 */
+    0x0000,     /* R12893 */
+    0x0000,     /* R12894 */
+    0x0000,     /* R12895 */
+    0x0000,     /* R12896 */
+    0x0000,     /* R12897 */
+    0x0000,     /* R12898 */
+    0x0000,     /* R12899 */
+    0x0000,     /* R12900 */
+    0x0000,     /* R12901 */
+    0x0000,     /* R12902 */
+    0x0000,     /* R12903 */
+    0x0000,     /* R12904 */
+    0x0000,     /* R12905 */
+    0x0000,     /* R12906 */
+    0x0000,     /* R12907 */
+    0x0000,     /* R12908 */
+    0x0000,     /* R12909 */
+    0x0000,     /* R12910 */
+    0x0000,     /* R12911 */
+    0x0000,     /* R12912 */
+    0x0000,     /* R12913 */
+    0x0000,     /* R12914 */
+    0x0000,     /* R12915 */
+    0x0000,     /* R12916 */
+    0x0000,     /* R12917 */
+    0x0000,     /* R12918 */
+    0x0000,     /* R12919 */
+    0x0000,     /* R12920 */
+    0x0000,     /* R12921 */
+    0x0000,     /* R12922 */
+    0x0000,     /* R12923 */
+    0x0000,     /* R12924 */
+    0x0000,     /* R12925 */
+    0x0000,     /* R12926 */
+    0x0000,     /* R12927 */
+    0x0000,     /* R12928 */
+    0x0000,     /* R12929 */
+    0x0000,     /* R12930 */
+    0x0000,     /* R12931 */
+    0x0000,     /* R12932 */
+    0x0000,     /* R12933 */
+    0x0000,     /* R12934 */
+    0x0000,     /* R12935 */
+    0x0000,     /* R12936 */
+    0x0000,     /* R12937 */
+    0x0000,     /* R12938 */
+    0x0000,     /* R12939 */
+    0x0000,     /* R12940 */
+    0x0000,     /* R12941 */
+    0x0000,     /* R12942 */
+    0x0000,     /* R12943 */
+    0x0000,     /* R12944 */
+    0x0000,     /* R12945 */
+    0x0000,     /* R12946 */
+    0x0000,     /* R12947 */
+    0x0000,     /* R12948 */
+    0x0000,     /* R12949 */
+    0x0000,     /* R12950 */
+    0x0000,     /* R12951 */
+    0x0000,     /* R12952 */
+    0x0000,     /* R12953 */
+    0x0000,     /* R12954 */
+    0x0000,     /* R12955 */
+    0x0000,     /* R12956 */
+    0x0000,     /* R12957 */
+    0x0000,     /* R12958 */
+    0x0000,     /* R12959 */
+    0x0000,     /* R12960 */
+    0x0000,     /* R12961 */
+    0x0000,     /* R12962 */
+    0x0000,     /* R12963 */
+    0x0000,     /* R12964 */
+    0x0000,     /* R12965 */
+    0x0000,     /* R12966 */
+    0x0000,     /* R12967 */
+    0x0000,     /* R12968 */
+    0x0000,     /* R12969 */
+    0x0000,     /* R12970 */
+    0x0000,     /* R12971 */
+    0x0000,     /* R12972 */
+    0x0000,     /* R12973 */
+    0x0000,     /* R12974 */
+    0x0000,     /* R12975 */
+    0x0000,     /* R12976 */
+    0x0000,     /* R12977 */
+    0x0000,     /* R12978 */
+    0x0000,     /* R12979 */
+    0x0000,     /* R12980 */
+    0x0000,     /* R12981 */
+    0x0000,     /* R12982 */
+    0x0000,     /* R12983 */
+    0x0000,     /* R12984 */
+    0x0000,     /* R12985 */
+    0x0000,     /* R12986 */
+    0x0000,     /* R12987 */
+    0x0000,     /* R12988 */
+    0x0000,     /* R12989 */
+    0x0000,     /* R12990 */
+    0x0000,     /* R12991 */
+    0x0000,     /* R12992 */
+    0x0000,     /* R12993 */
+    0x0000,     /* R12994 */
+    0x0000,     /* R12995 */
+    0x0000,     /* R12996 */
+    0x0000,     /* R12997 */
+    0x0000,     /* R12998 */
+    0x0000,     /* R12999 */
+    0x0000,     /* R13000 */
+    0x0000,     /* R13001 */
+    0x0000,     /* R13002 */
+    0x0000,     /* R13003 */
+    0x0000,     /* R13004 */
+    0x0000,     /* R13005 */
+    0x0000,     /* R13006 */
+    0x0000,     /* R13007 */
+    0x0000,     /* R13008 */
+    0x0000,     /* R13009 */
+    0x0000,     /* R13010 */
+    0x0000,     /* R13011 */
+    0x0000,     /* R13012 */
+    0x0000,     /* R13013 */
+    0x0000,     /* R13014 */
+    0x0000,     /* R13015 */
+    0x0000,     /* R13016 */
+    0x0000,     /* R13017 */
+    0x0000,     /* R13018 */
+    0x0000,     /* R13019 */
+    0x0000,     /* R13020 */
+    0x0000,     /* R13021 */
+    0x0000,     /* R13022 */
+    0x0000,     /* R13023 */
+    0x0000,     /* R13024 */
+    0x0000,     /* R13025 */
+    0x0000,     /* R13026 */
+    0x0000,     /* R13027 */
+    0x0000,     /* R13028 */
+    0x0000,     /* R13029 */
+    0x0000,     /* R13030 */
+    0x0000,     /* R13031 */
+    0x0000,     /* R13032 */
+    0x0000,     /* R13033 */
+    0x0000,     /* R13034 */
+    0x0000,     /* R13035 */
+    0x0000,     /* R13036 */
+    0x0000,     /* R13037 */
+    0x0000,     /* R13038 */
+    0x0000,     /* R13039 */
+    0x0000,     /* R13040 */
+    0x0000,     /* R13041 */
+    0x0000,     /* R13042 */
+    0x0000,     /* R13043 */
+    0x0000,     /* R13044 */
+    0x0000,     /* R13045 */
+    0x0000,     /* R13046 */
+    0x0000,     /* R13047 */
+    0x0000,     /* R13048 */
+    0x0000,     /* R13049 */
+    0x0000,     /* R13050 */
+    0x0000,     /* R13051 */
+    0x0000,     /* R13052 */
+    0x0000,     /* R13053 */
+    0x0000,     /* R13054 */
+    0x0000,     /* R13055 */
+    0x0000,     /* R13056 */
+    0x0000,     /* R13057 */
+    0x0000,     /* R13058 */
+    0x0000,     /* R13059 */
+    0x0000,     /* R13060 */
+    0x0000,     /* R13061 */
+    0x0000,     /* R13062 */
+    0x0000,     /* R13063 */
+    0x0000,     /* R13064 */
+    0x0000,     /* R13065 */
+    0x0000,     /* R13066 */
+    0x0000,     /* R13067 */
+    0x0000,     /* R13068 */
+    0x0000,     /* R13069 */
+    0x0000,     /* R13070 */
+    0x0000,     /* R13071 */
+    0x0000,     /* R13072 */
+    0x0000,     /* R13073 */
+    0x0000,     /* R13074 */
+    0x0000,     /* R13075 */
+    0x0000,     /* R13076 */
+    0x0000,     /* R13077 */
+    0x0000,     /* R13078 */
+    0x0000,     /* R13079 */
+    0x0000,     /* R13080 */
+    0x0000,     /* R13081 */
+    0x0000,     /* R13082 */
+    0x0000,     /* R13083 */
+    0x0000,     /* R13084 */
+    0x0000,     /* R13085 */
+    0x0000,     /* R13086 */
+    0x0000,     /* R13087 */
+    0x0000,     /* R13088 */
+    0x0000,     /* R13089 */
+    0x0000,     /* R13090 */
+    0x0000,     /* R13091 */
+    0x0000,     /* R13092 */
+    0x0000,     /* R13093 */
+    0x0000,     /* R13094 */
+    0x0000,     /* R13095 */
+    0x0000,     /* R13096 */
+    0x0000,     /* R13097 */
+    0x0000,     /* R13098 */
+    0x0000,     /* R13099 */
+    0x0000,     /* R13100 */
+    0x0000,     /* R13101 */
+    0x0000,     /* R13102 */
+    0x0000,     /* R13103 */
+    0x0000,     /* R13104 */
+    0x0000,     /* R13105 */
+    0x0000,     /* R13106 */
+    0x0000,     /* R13107 */
+    0x0000,     /* R13108 */
+    0x0000,     /* R13109 */
+    0x0000,     /* R13110 */
+    0x0000,     /* R13111 */
+    0x0000,     /* R13112 */
+    0x0000,     /* R13113 */
+    0x0000,     /* R13114 */
+    0x0000,     /* R13115 */
+    0x0000,     /* R13116 */
+    0x0000,     /* R13117 */
+    0x0000,     /* R13118 */
+    0x0000,     /* R13119 */
+    0x0000,     /* R13120 */
+    0x0000,     /* R13121 */
+    0x0000,     /* R13122 */
+    0x0000,     /* R13123 */
+    0x0000,     /* R13124 */
+    0x0000,     /* R13125 */
+    0x0000,     /* R13126 */
+    0x0000,     /* R13127 */
+    0x0000,     /* R13128 */
+    0x0000,     /* R13129 */
+    0x0000,     /* R13130 */
+    0x0000,     /* R13131 */
+    0x0000,     /* R13132 */
+    0x0000,     /* R13133 */
+    0x0000,     /* R13134 */
+    0x0000,     /* R13135 */
+    0x0000,     /* R13136 */
+    0x0000,     /* R13137 */
+    0x0000,     /* R13138 */
+    0x0000,     /* R13139 */
+    0x0000,     /* R13140 */
+    0x0000,     /* R13141 */
+    0x0000,     /* R13142 */
+    0x0000,     /* R13143 */
+    0x0000,     /* R13144 */
+    0x0000,     /* R13145 */
+    0x0000,     /* R13146 */
+    0x0000,     /* R13147 */
+    0x0000,     /* R13148 */
+    0x0000,     /* R13149 */
+    0x0000,     /* R13150 */
+    0x0000,     /* R13151 */
+    0x0000,     /* R13152 */
+    0x0000,     /* R13153 */
+    0x0000,     /* R13154 */
+    0x0000,     /* R13155 */
+    0x0000,     /* R13156 */
+    0x0000,     /* R13157 */
+    0x0000,     /* R13158 */
+    0x0000,     /* R13159 */
+    0x0000,     /* R13160 */
+    0x0000,     /* R13161 */
+    0x0000,     /* R13162 */
+    0x0000,     /* R13163 */
+    0x0000,     /* R13164 */
+    0x0000,     /* R13165 */
+    0x0000,     /* R13166 */
+    0x0000,     /* R13167 */
+    0x0000,     /* R13168 */
+    0x0000,     /* R13169 */
+    0x0000,     /* R13170 */
+    0x0000,     /* R13171 */
+    0x0000,     /* R13172 */
+    0x0000,     /* R13173 */
+    0x0000,     /* R13174 */
+    0x0000,     /* R13175 */
+    0x0000,     /* R13176 */
+    0x0000,     /* R13177 */
+    0x0000,     /* R13178 */
+    0x0000,     /* R13179 */
+    0x0000,     /* R13180 */
+    0x0000,     /* R13181 */
+    0x0000,     /* R13182 */
+    0x0000,     /* R13183 */
+    0x0000,     /* R13184 */
+    0x0000,     /* R13185 */
+    0x0000,     /* R13186 */
+    0x0000,     /* R13187 */
+    0x0000,     /* R13188 */
+    0x0000,     /* R13189 */
+    0x0000,     /* R13190 */
+    0x0000,     /* R13191 */
+    0x0000,     /* R13192 */
+    0x0000,     /* R13193 */
+    0x0000,     /* R13194 */
+    0x0000,     /* R13195 */
+    0x0000,     /* R13196 */
+    0x0000,     /* R13197 */
+    0x0000,     /* R13198 */
+    0x0000,     /* R13199 */
+    0x0000,     /* R13200 */
+    0x0000,     /* R13201 */
+    0x0000,     /* R13202 */
+    0x0000,     /* R13203 */
+    0x0000,     /* R13204 */
+    0x0000,     /* R13205 */
+    0x0000,     /* R13206 */
+    0x0000,     /* R13207 */
+    0x0000,     /* R13208 */
+    0x0000,     /* R13209 */
+    0x0000,     /* R13210 */
+    0x0000,     /* R13211 */
+    0x0000,     /* R13212 */
+    0x0000,     /* R13213 */
+    0x0000,     /* R13214 */
+    0x0000,     /* R13215 */
+    0x0000,     /* R13216 */
+    0x0000,     /* R13217 */
+    0x0000,     /* R13218 */
+    0x0000,     /* R13219 */
+    0x0000,     /* R13220 */
+    0x0000,     /* R13221 */
+    0x0000,     /* R13222 */
+    0x0000,     /* R13223 */
+    0x0000,     /* R13224 */
+    0x0000,     /* R13225 */
+    0x0000,     /* R13226 */
+    0x0000,     /* R13227 */
+    0x0000,     /* R13228 */
+    0x0000,     /* R13229 */
+    0x0000,     /* R13230 */
+    0x0000,     /* R13231 */
+    0x0000,     /* R13232 */
+    0x0000,     /* R13233 */
+    0x0000,     /* R13234 */
+    0x0000,     /* R13235 */
+    0x0000,     /* R13236 */
+    0x0000,     /* R13237 */
+    0x0000,     /* R13238 */
+    0x0000,     /* R13239 */
+    0x0000,     /* R13240 */
+    0x0000,     /* R13241 */
+    0x0000,     /* R13242 */
+    0x0000,     /* R13243 */
+    0x0000,     /* R13244 */
+    0x0000,     /* R13245 */
+    0x0000,     /* R13246 */
+    0x0000,     /* R13247 */
+    0x0000,     /* R13248 */
+    0x0000,     /* R13249 */
+    0x0000,     /* R13250 */
+    0x0000,     /* R13251 */
+    0x0000,     /* R13252 */
+    0x0000,     /* R13253 */
+    0x0000,     /* R13254 */
+    0x0000,     /* R13255 */
+    0x0000,     /* R13256 */
+    0x0000,     /* R13257 */
+    0x0000,     /* R13258 */
+    0x0000,     /* R13259 */
+    0x0000,     /* R13260 */
+    0x0000,     /* R13261 */
+    0x0000,     /* R13262 */
+    0x0000,     /* R13263 */
+    0x0000,     /* R13264 */
+    0x0000,     /* R13265 */
+    0x0000,     /* R13266 */
+    0x0000,     /* R13267 */
+    0x0000,     /* R13268 */
+    0x0000,     /* R13269 */
+    0x0000,     /* R13270 */
+    0x0000,     /* R13271 */
+    0x0000,     /* R13272 */
+    0x0000,     /* R13273 */
+    0x0000,     /* R13274 */
+    0x0000,     /* R13275 */
+    0x0000,     /* R13276 */
+    0x0000,     /* R13277 */
+    0x0000,     /* R13278 */
+    0x0000,     /* R13279 */
+    0x0000,     /* R13280 */
+    0x0000,     /* R13281 */
+    0x0000,     /* R13282 */
+    0x0000,     /* R13283 */
+    0x0000,     /* R13284 */
+    0x0000,     /* R13285 */
+    0x0000,     /* R13286 */
+    0x0000,     /* R13287 */
+    0x0000,     /* R13288 */
+    0x0000,     /* R13289 */
+    0x0000,     /* R13290 */
+    0x0000,     /* R13291 */
+    0x0000,     /* R13292 */
+    0x0000,     /* R13293 */
+    0x0000,     /* R13294 */
+    0x0000,     /* R13295 */
+    0x0000,     /* R13296 */
+    0x0000,     /* R13297 */
+    0x0000,     /* R13298 */
+    0x0000,     /* R13299 */
+    0x0000,     /* R13300 */
+    0x0000,     /* R13301 */
+    0x0000,     /* R13302 */
+    0x0000,     /* R13303 */
+    0x0000,     /* R13304 */
+    0x0000,     /* R13305 */
+    0x0000,     /* R13306 */
+    0x0000,     /* R13307 */
+    0x0000,     /* R13308 */
+    0x0000,     /* R13309 */
+    0x0000,     /* R13310 */
+    0x0000,     /* R13311 */
+    0x0000,     /* R13312 - DSP2 Data2 RAM 1 */
+    0x0000,     /* R13313 - DSP2 Data2 RAM 0 */
+    0x0000,     /* R13314 */
+    0x0000,     /* R13315 */
+    0x0000,     /* R13316 */
+    0x0000,     /* R13317 */
+    0x0000,     /* R13318 */
+    0x0000,     /* R13319 */
+    0x0000,     /* R13320 */
+    0x0000,     /* R13321 */
+    0x0000,     /* R13322 */
+    0x0000,     /* R13323 */
+    0x0000,     /* R13324 */
+    0x0000,     /* R13325 */
+    0x0000,     /* R13326 */
+    0x0000,     /* R13327 */
+    0x0000,     /* R13328 */
+    0x0000,     /* R13329 */
+    0x0000,     /* R13330 */
+    0x0000,     /* R13331 */
+    0x0000,     /* R13332 */
+    0x0000,     /* R13333 */
+    0x0000,     /* R13334 */
+    0x0000,     /* R13335 */
+    0x0000,     /* R13336 */
+    0x0000,     /* R13337 */
+    0x0000,     /* R13338 */
+    0x0000,     /* R13339 */
+    0x0000,     /* R13340 */
+    0x0000,     /* R13341 */
+    0x0000,     /* R13342 */
+    0x0000,     /* R13343 */
+    0x0000,     /* R13344 */
+    0x0000,     /* R13345 */
+    0x0000,     /* R13346 */
+    0x0000,     /* R13347 */
+    0x0000,     /* R13348 */
+    0x0000,     /* R13349 */
+    0x0000,     /* R13350 */
+    0x0000,     /* R13351 */
+    0x0000,     /* R13352 */
+    0x0000,     /* R13353 */
+    0x0000,     /* R13354 */
+    0x0000,     /* R13355 */
+    0x0000,     /* R13356 */
+    0x0000,     /* R13357 */
+    0x0000,     /* R13358 */
+    0x0000,     /* R13359 */
+    0x0000,     /* R13360 */
+    0x0000,     /* R13361 */
+    0x0000,     /* R13362 */
+    0x0000,     /* R13363 */
+    0x0000,     /* R13364 */
+    0x0000,     /* R13365 */
+    0x0000,     /* R13366 */
+    0x0000,     /* R13367 */
+    0x0000,     /* R13368 */
+    0x0000,     /* R13369 */
+    0x0000,     /* R13370 */
+    0x0000,     /* R13371 */
+    0x0000,     /* R13372 */
+    0x0000,     /* R13373 */
+    0x0000,     /* R13374 */
+    0x0000,     /* R13375 */
+    0x0000,     /* R13376 */
+    0x0000,     /* R13377 */
+    0x0000,     /* R13378 */
+    0x0000,     /* R13379 */
+    0x0000,     /* R13380 */
+    0x0000,     /* R13381 */
+    0x0000,     /* R13382 */
+    0x0000,     /* R13383 */
+    0x0000,     /* R13384 */
+    0x0000,     /* R13385 */
+    0x0000,     /* R13386 */
+    0x0000,     /* R13387 */
+    0x0000,     /* R13388 */
+    0x0000,     /* R13389 */
+    0x0000,     /* R13390 */
+    0x0000,     /* R13391 */
+    0x0000,     /* R13392 */
+    0x0000,     /* R13393 */
+    0x0000,     /* R13394 */
+    0x0000,     /* R13395 */
+    0x0000,     /* R13396 */
+    0x0000,     /* R13397 */
+    0x0000,     /* R13398 */
+    0x0000,     /* R13399 */
+    0x0000,     /* R13400 */
+    0x0000,     /* R13401 */
+    0x0000,     /* R13402 */
+    0x0000,     /* R13403 */
+    0x0000,     /* R13404 */
+    0x0000,     /* R13405 */
+    0x0000,     /* R13406 */
+    0x0000,     /* R13407 */
+    0x0000,     /* R13408 */
+    0x0000,     /* R13409 */
+    0x0000,     /* R13410 */
+    0x0000,     /* R13411 */
+    0x0000,     /* R13412 */
+    0x0000,     /* R13413 */
+    0x0000,     /* R13414 */
+    0x0000,     /* R13415 */
+    0x0000,     /* R13416 */
+    0x0000,     /* R13417 */
+    0x0000,     /* R13418 */
+    0x0000,     /* R13419 */
+    0x0000,     /* R13420 */
+    0x0000,     /* R13421 */
+    0x0000,     /* R13422 */
+    0x0000,     /* R13423 */
+    0x0000,     /* R13424 */
+    0x0000,     /* R13425 */
+    0x0000,     /* R13426 */
+    0x0000,     /* R13427 */
+    0x0000,     /* R13428 */
+    0x0000,     /* R13429 */
+    0x0000,     /* R13430 */
+    0x0000,     /* R13431 */
+    0x0000,     /* R13432 */
+    0x0000,     /* R13433 */
+    0x0000,     /* R13434 */
+    0x0000,     /* R13435 */
+    0x0000,     /* R13436 */
+    0x0000,     /* R13437 */
+    0x0000,     /* R13438 */
+    0x0000,     /* R13439 */
+    0x0000,     /* R13440 */
+    0x0000,     /* R13441 */
+    0x0000,     /* R13442 */
+    0x0000,     /* R13443 */
+    0x0000,     /* R13444 */
+    0x0000,     /* R13445 */
+    0x0000,     /* R13446 */
+    0x0000,     /* R13447 */
+    0x0000,     /* R13448 */
+    0x0000,     /* R13449 */
+    0x0000,     /* R13450 */
+    0x0000,     /* R13451 */
+    0x0000,     /* R13452 */
+    0x0000,     /* R13453 */
+    0x0000,     /* R13454 */
+    0x0000,     /* R13455 */
+    0x0000,     /* R13456 */
+    0x0000,     /* R13457 */
+    0x0000,     /* R13458 */
+    0x0000,     /* R13459 */
+    0x0000,     /* R13460 */
+    0x0000,     /* R13461 */
+    0x0000,     /* R13462 */
+    0x0000,     /* R13463 */
+    0x0000,     /* R13464 */
+    0x0000,     /* R13465 */
+    0x0000,     /* R13466 */
+    0x0000,     /* R13467 */
+    0x0000,     /* R13468 */
+    0x0000,     /* R13469 */
+    0x0000,     /* R13470 */
+    0x0000,     /* R13471 */
+    0x0000,     /* R13472 */
+    0x0000,     /* R13473 */
+    0x0000,     /* R13474 */
+    0x0000,     /* R13475 */
+    0x0000,     /* R13476 */
+    0x0000,     /* R13477 */
+    0x0000,     /* R13478 */
+    0x0000,     /* R13479 */
+    0x0000,     /* R13480 */
+    0x0000,     /* R13481 */
+    0x0000,     /* R13482 */
+    0x0000,     /* R13483 */
+    0x0000,     /* R13484 */
+    0x0000,     /* R13485 */
+    0x0000,     /* R13486 */
+    0x0000,     /* R13487 */
+    0x0000,     /* R13488 */
+    0x0000,     /* R13489 */
+    0x0000,     /* R13490 */
+    0x0000,     /* R13491 */
+    0x0000,     /* R13492 */
+    0x0000,     /* R13493 */
+    0x0000,     /* R13494 */
+    0x0000,     /* R13495 */
+    0x0000,     /* R13496 */
+    0x0000,     /* R13497 */
+    0x0000,     /* R13498 */
+    0x0000,     /* R13499 */
+    0x0000,     /* R13500 */
+    0x0000,     /* R13501 */
+    0x0000,     /* R13502 */
+    0x0000,     /* R13503 */
+    0x0000,     /* R13504 */
+    0x0000,     /* R13505 */
+    0x0000,     /* R13506 */
+    0x0000,     /* R13507 */
+    0x0000,     /* R13508 */
+    0x0000,     /* R13509 */
+    0x0000,     /* R13510 */
+    0x0000,     /* R13511 */
+    0x0000,     /* R13512 */
+    0x0000,     /* R13513 */
+    0x0000,     /* R13514 */
+    0x0000,     /* R13515 */
+    0x0000,     /* R13516 */
+    0x0000,     /* R13517 */
+    0x0000,     /* R13518 */
+    0x0000,     /* R13519 */
+    0x0000,     /* R13520 */
+    0x0000,     /* R13521 */
+    0x0000,     /* R13522 */
+    0x0000,     /* R13523 */
+    0x0000,     /* R13524 */
+    0x0000,     /* R13525 */
+    0x0000,     /* R13526 */
+    0x0000,     /* R13527 */
+    0x0000,     /* R13528 */
+    0x0000,     /* R13529 */
+    0x0000,     /* R13530 */
+    0x0000,     /* R13531 */
+    0x0000,     /* R13532 */
+    0x0000,     /* R13533 */
+    0x0000,     /* R13534 */
+    0x0000,     /* R13535 */
+    0x0000,     /* R13536 */
+    0x0000,     /* R13537 */
+    0x0000,     /* R13538 */
+    0x0000,     /* R13539 */
+    0x0000,     /* R13540 */
+    0x0000,     /* R13541 */
+    0x0000,     /* R13542 */
+    0x0000,     /* R13543 */
+    0x0000,     /* R13544 */
+    0x0000,     /* R13545 */
+    0x0000,     /* R13546 */
+    0x0000,     /* R13547 */
+    0x0000,     /* R13548 */
+    0x0000,     /* R13549 */
+    0x0000,     /* R13550 */
+    0x0000,     /* R13551 */
+    0x0000,     /* R13552 */
+    0x0000,     /* R13553 */
+    0x0000,     /* R13554 */
+    0x0000,     /* R13555 */
+    0x0000,     /* R13556 */
+    0x0000,     /* R13557 */
+    0x0000,     /* R13558 */
+    0x0000,     /* R13559 */
+    0x0000,     /* R13560 */
+    0x0000,     /* R13561 */
+    0x0000,     /* R13562 */
+    0x0000,     /* R13563 */
+    0x0000,     /* R13564 */
+    0x0000,     /* R13565 */
+    0x0000,     /* R13566 */
+    0x0000,     /* R13567 */
+    0x0000,     /* R13568 */
+    0x0000,     /* R13569 */
+    0x0000,     /* R13570 */
+    0x0000,     /* R13571 */
+    0x0000,     /* R13572 */
+    0x0000,     /* R13573 */
+    0x0000,     /* R13574 */
+    0x0000,     /* R13575 */
+    0x0000,     /* R13576 */
+    0x0000,     /* R13577 */
+    0x0000,     /* R13578 */
+    0x0000,     /* R13579 */
+    0x0000,     /* R13580 */
+    0x0000,     /* R13581 */
+    0x0000,     /* R13582 */
+    0x0000,     /* R13583 */
+    0x0000,     /* R13584 */
+    0x0000,     /* R13585 */
+    0x0000,     /* R13586 */
+    0x0000,     /* R13587 */
+    0x0000,     /* R13588 */
+    0x0000,     /* R13589 */
+    0x0000,     /* R13590 */
+    0x0000,     /* R13591 */
+    0x0000,     /* R13592 */
+    0x0000,     /* R13593 */
+    0x0000,     /* R13594 */
+    0x0000,     /* R13595 */
+    0x0000,     /* R13596 */
+    0x0000,     /* R13597 */
+    0x0000,     /* R13598 */
+    0x0000,     /* R13599 */
+    0x0000,     /* R13600 */
+    0x0000,     /* R13601 */
+    0x0000,     /* R13602 */
+    0x0000,     /* R13603 */
+    0x0000,     /* R13604 */
+    0x0000,     /* R13605 */
+    0x0000,     /* R13606 */
+    0x0000,     /* R13607 */
+    0x0000,     /* R13608 */
+    0x0000,     /* R13609 */
+    0x0000,     /* R13610 */
+    0x0000,     /* R13611 */
+    0x0000,     /* R13612 */
+    0x0000,     /* R13613 */
+    0x0000,     /* R13614 */
+    0x0000,     /* R13615 */
+    0x0000,     /* R13616 */
+    0x0000,     /* R13617 */
+    0x0000,     /* R13618 */
+    0x0000,     /* R13619 */
+    0x0000,     /* R13620 */
+    0x0000,     /* R13621 */
+    0x0000,     /* R13622 */
+    0x0000,     /* R13623 */
+    0x0000,     /* R13624 */
+    0x0000,     /* R13625 */
+    0x0000,     /* R13626 */
+    0x0000,     /* R13627 */
+    0x0000,     /* R13628 */
+    0x0000,     /* R13629 */
+    0x0000,     /* R13630 */
+    0x0000,     /* R13631 */
+    0x0000,     /* R13632 */
+    0x0000,     /* R13633 */
+    0x0000,     /* R13634 */
+    0x0000,     /* R13635 */
+    0x0000,     /* R13636 */
+    0x0000,     /* R13637 */
+    0x0000,     /* R13638 */
+    0x0000,     /* R13639 */
+    0x0000,     /* R13640 */
+    0x0000,     /* R13641 */
+    0x0000,     /* R13642 */
+    0x0000,     /* R13643 */
+    0x0000,     /* R13644 */
+    0x0000,     /* R13645 */
+    0x0000,     /* R13646 */
+    0x0000,     /* R13647 */
+    0x0000,     /* R13648 */
+    0x0000,     /* R13649 */
+    0x0000,     /* R13650 */
+    0x0000,     /* R13651 */
+    0x0000,     /* R13652 */
+    0x0000,     /* R13653 */
+    0x0000,     /* R13654 */
+    0x0000,     /* R13655 */
+    0x0000,     /* R13656 */
+    0x0000,     /* R13657 */
+    0x0000,     /* R13658 */
+    0x0000,     /* R13659 */
+    0x0000,     /* R13660 */
+    0x0000,     /* R13661 */
+    0x0000,     /* R13662 */
+    0x0000,     /* R13663 */
+    0x0000,     /* R13664 */
+    0x0000,     /* R13665 */
+    0x0000,     /* R13666 */
+    0x0000,     /* R13667 */
+    0x0000,     /* R13668 */
+    0x0000,     /* R13669 */
+    0x0000,     /* R13670 */
+    0x0000,     /* R13671 */
+    0x0000,     /* R13672 */
+    0x0000,     /* R13673 */
+    0x0000,     /* R13674 */
+    0x0000,     /* R13675 */
+    0x0000,     /* R13676 */
+    0x0000,     /* R13677 */
+    0x0000,     /* R13678 */
+    0x0000,     /* R13679 */
+    0x0000,     /* R13680 */
+    0x0000,     /* R13681 */
+    0x0000,     /* R13682 */
+    0x0000,     /* R13683 */
+    0x0000,     /* R13684 */
+    0x0000,     /* R13685 */
+    0x0000,     /* R13686 */
+    0x0000,     /* R13687 */
+    0x0000,     /* R13688 */
+    0x0000,     /* R13689 */
+    0x0000,     /* R13690 */
+    0x0000,     /* R13691 */
+    0x0000,     /* R13692 */
+    0x0000,     /* R13693 */
+    0x0000,     /* R13694 */
+    0x0000,     /* R13695 */
+    0x0000,     /* R13696 */
+    0x0000,     /* R13697 */
+    0x0000,     /* R13698 */
+    0x0000,     /* R13699 */
+    0x0000,     /* R13700 */
+    0x0000,     /* R13701 */
+    0x0000,     /* R13702 */
+    0x0000,     /* R13703 */
+    0x0000,     /* R13704 */
+    0x0000,     /* R13705 */
+    0x0000,     /* R13706 */
+    0x0000,     /* R13707 */
+    0x0000,     /* R13708 */
+    0x0000,     /* R13709 */
+    0x0000,     /* R13710 */
+    0x0000,     /* R13711 */
+    0x0000,     /* R13712 */
+    0x0000,     /* R13713 */
+    0x0000,     /* R13714 */
+    0x0000,     /* R13715 */
+    0x0000,     /* R13716 */
+    0x0000,     /* R13717 */
+    0x0000,     /* R13718 */
+    0x0000,     /* R13719 */
+    0x0000,     /* R13720 */
+    0x0000,     /* R13721 */
+    0x0000,     /* R13722 */
+    0x0000,     /* R13723 */
+    0x0000,     /* R13724 */
+    0x0000,     /* R13725 */
+    0x0000,     /* R13726 */
+    0x0000,     /* R13727 */
+    0x0000,     /* R13728 */
+    0x0000,     /* R13729 */
+    0x0000,     /* R13730 */
+    0x0000,     /* R13731 */
+    0x0000,     /* R13732 */
+    0x0000,     /* R13733 */
+    0x0000,     /* R13734 */
+    0x0000,     /* R13735 */
+    0x0000,     /* R13736 */
+    0x0000,     /* R13737 */
+    0x0000,     /* R13738 */
+    0x0000,     /* R13739 */
+    0x0000,     /* R13740 */
+    0x0000,     /* R13741 */
+    0x0000,     /* R13742 */
+    0x0000,     /* R13743 */
+    0x0000,     /* R13744 */
+    0x0000,     /* R13745 */
+    0x0000,     /* R13746 */
+    0x0000,     /* R13747 */
+    0x0000,     /* R13748 */
+    0x0000,     /* R13749 */
+    0x0000,     /* R13750 */
+    0x0000,     /* R13751 */
+    0x0000,     /* R13752 */
+    0x0000,     /* R13753 */
+    0x0000,     /* R13754 */
+    0x0000,     /* R13755 */
+    0x0000,     /* R13756 */
+    0x0000,     /* R13757 */
+    0x0000,     /* R13758 */
+    0x0000,     /* R13759 */
+    0x0000,     /* R13760 */
+    0x0000,     /* R13761 */
+    0x0000,     /* R13762 */
+    0x0000,     /* R13763 */
+    0x0000,     /* R13764 */
+    0x0000,     /* R13765 */
+    0x0000,     /* R13766 */
+    0x0000,     /* R13767 */
+    0x0000,     /* R13768 */
+    0x0000,     /* R13769 */
+    0x0000,     /* R13770 */
+    0x0000,     /* R13771 */
+    0x0000,     /* R13772 */
+    0x0000,     /* R13773 */
+    0x0000,     /* R13774 */
+    0x0000,     /* R13775 */
+    0x0000,     /* R13776 */
+    0x0000,     /* R13777 */
+    0x0000,     /* R13778 */
+    0x0000,     /* R13779 */
+    0x0000,     /* R13780 */
+    0x0000,     /* R13781 */
+    0x0000,     /* R13782 */
+    0x0000,     /* R13783 */
+    0x0000,     /* R13784 */
+    0x0000,     /* R13785 */
+    0x0000,     /* R13786 */
+    0x0000,     /* R13787 */
+    0x0000,     /* R13788 */
+    0x0000,     /* R13789 */
+    0x0000,     /* R13790 */
+    0x0000,     /* R13791 */
+    0x0000,     /* R13792 */
+    0x0000,     /* R13793 */
+    0x0000,     /* R13794 */
+    0x0000,     /* R13795 */
+    0x0000,     /* R13796 */
+    0x0000,     /* R13797 */
+    0x0000,     /* R13798 */
+    0x0000,     /* R13799 */
+    0x0000,     /* R13800 */
+    0x0000,     /* R13801 */
+    0x0000,     /* R13802 */
+    0x0000,     /* R13803 */
+    0x0000,     /* R13804 */
+    0x0000,     /* R13805 */
+    0x0000,     /* R13806 */
+    0x0000,     /* R13807 */
+    0x0000,     /* R13808 */
+    0x0000,     /* R13809 */
+    0x0000,     /* R13810 */
+    0x0000,     /* R13811 */
+    0x0000,     /* R13812 */
+    0x0000,     /* R13813 */
+    0x0000,     /* R13814 */
+    0x0000,     /* R13815 */
+    0x0000,     /* R13816 */
+    0x0000,     /* R13817 */
+    0x0000,     /* R13818 */
+    0x0000,     /* R13819 */
+    0x0000,     /* R13820 */
+    0x0000,     /* R13821 */
+    0x0000,     /* R13822 */
+    0x0000,     /* R13823 */
+    0x0000,     /* R13824 */
+    0x0000,     /* R13825 */
+    0x0000,     /* R13826 */
+    0x0000,     /* R13827 */
+    0x0000,     /* R13828 */
+    0x0000,     /* R13829 */
+    0x0000,     /* R13830 */
+    0x0000,     /* R13831 */
+    0x0000,     /* R13832 */
+    0x0000,     /* R13833 */
+    0x0000,     /* R13834 */
+    0x0000,     /* R13835 */
+    0x0000,     /* R13836 */
+    0x0000,     /* R13837 */
+    0x0000,     /* R13838 */
+    0x0000,     /* R13839 */
+    0x0000,     /* R13840 */
+    0x0000,     /* R13841 */
+    0x0000,     /* R13842 */
+    0x0000,     /* R13843 */
+    0x0000,     /* R13844 */
+    0x0000,     /* R13845 */
+    0x0000,     /* R13846 */
+    0x0000,     /* R13847 */
+    0x0000,     /* R13848 */
+    0x0000,     /* R13849 */
+    0x0000,     /* R13850 */
+    0x0000,     /* R13851 */
+    0x0000,     /* R13852 */
+    0x0000,     /* R13853 */
+    0x0000,     /* R13854 */
+    0x0000,     /* R13855 */
+    0x0000,     /* R13856 */
+    0x0000,     /* R13857 */
+    0x0000,     /* R13858 */
+    0x0000,     /* R13859 */
+    0x0000,     /* R13860 */
+    0x0000,     /* R13861 */
+    0x0000,     /* R13862 */
+    0x0000,     /* R13863 */
+    0x0000,     /* R13864 */
+    0x0000,     /* R13865 */
+    0x0000,     /* R13866 */
+    0x0000,     /* R13867 */
+    0x0000,     /* R13868 */
+    0x0000,     /* R13869 */
+    0x0000,     /* R13870 */
+    0x0000,     /* R13871 */
+    0x0000,     /* R13872 */
+    0x0000,     /* R13873 */
+    0x0000,     /* R13874 */
+    0x0000,     /* R13875 */
+    0x0000,     /* R13876 */
+    0x0000,     /* R13877 */
+    0x0000,     /* R13878 */
+    0x0000,     /* R13879 */
+    0x0000,     /* R13880 */
+    0x0000,     /* R13881 */
+    0x0000,     /* R13882 */
+    0x0000,     /* R13883 */
+    0x0000,     /* R13884 */
+    0x0000,     /* R13885 */
+    0x0000,     /* R13886 */
+    0x0000,     /* R13887 */
+    0x0000,     /* R13888 */
+    0x0000,     /* R13889 */
+    0x0000,     /* R13890 */
+    0x0000,     /* R13891 */
+    0x0000,     /* R13892 */
+    0x0000,     /* R13893 */
+    0x0000,     /* R13894 */
+    0x0000,     /* R13895 */
+    0x0000,     /* R13896 */
+    0x0000,     /* R13897 */
+    0x0000,     /* R13898 */
+    0x0000,     /* R13899 */
+    0x0000,     /* R13900 */
+    0x0000,     /* R13901 */
+    0x0000,     /* R13902 */
+    0x0000,     /* R13903 */
+    0x0000,     /* R13904 */
+    0x0000,     /* R13905 */
+    0x0000,     /* R13906 */
+    0x0000,     /* R13907 */
+    0x0000,     /* R13908 */
+    0x0000,     /* R13909 */
+    0x0000,     /* R13910 */
+    0x0000,     /* R13911 */
+    0x0000,     /* R13912 */
+    0x0000,     /* R13913 */
+    0x0000,     /* R13914 */
+    0x0000,     /* R13915 */
+    0x0000,     /* R13916 */
+    0x0000,     /* R13917 */
+    0x0000,     /* R13918 */
+    0x0000,     /* R13919 */
+    0x0000,     /* R13920 */
+    0x0000,     /* R13921 */
+    0x0000,     /* R13922 */
+    0x0000,     /* R13923 */
+    0x0000,     /* R13924 */
+    0x0000,     /* R13925 */
+    0x0000,     /* R13926 */
+    0x0000,     /* R13927 */
+    0x0000,     /* R13928 */
+    0x0000,     /* R13929 */
+    0x0000,     /* R13930 */
+    0x0000,     /* R13931 */
+    0x0000,     /* R13932 */
+    0x0000,     /* R13933 */
+    0x0000,     /* R13934 */
+    0x0000,     /* R13935 */
+    0x0000,     /* R13936 */
+    0x0000,     /* R13937 */
+    0x0000,     /* R13938 */
+    0x0000,     /* R13939 */
+    0x0000,     /* R13940 */
+    0x0000,     /* R13941 */
+    0x0000,     /* R13942 */
+    0x0000,     /* R13943 */
+    0x0000,     /* R13944 */
+    0x0000,     /* R13945 */
+    0x0000,     /* R13946 */
+    0x0000,     /* R13947 */
+    0x0000,     /* R13948 */
+    0x0000,     /* R13949 */
+    0x0000,     /* R13950 */
+    0x0000,     /* R13951 */
+    0x0000,     /* R13952 */
+    0x0000,     /* R13953 */
+    0x0000,     /* R13954 */
+    0x0000,     /* R13955 */
+    0x0000,     /* R13956 */
+    0x0000,     /* R13957 */
+    0x0000,     /* R13958 */
+    0x0000,     /* R13959 */
+    0x0000,     /* R13960 */
+    0x0000,     /* R13961 */
+    0x0000,     /* R13962 */
+    0x0000,     /* R13963 */
+    0x0000,     /* R13964 */
+    0x0000,     /* R13965 */
+    0x0000,     /* R13966 */
+    0x0000,     /* R13967 */
+    0x0000,     /* R13968 */
+    0x0000,     /* R13969 */
+    0x0000,     /* R13970 */
+    0x0000,     /* R13971 */
+    0x0000,     /* R13972 */
+    0x0000,     /* R13973 */
+    0x0000,     /* R13974 */
+    0x0000,     /* R13975 */
+    0x0000,     /* R13976 */
+    0x0000,     /* R13977 */
+    0x0000,     /* R13978 */
+    0x0000,     /* R13979 */
+    0x0000,     /* R13980 */
+    0x0000,     /* R13981 */
+    0x0000,     /* R13982 */
+    0x0000,     /* R13983 */
+    0x0000,     /* R13984 */
+    0x0000,     /* R13985 */
+    0x0000,     /* R13986 */
+    0x0000,     /* R13987 */
+    0x0000,     /* R13988 */
+    0x0000,     /* R13989 */
+    0x0000,     /* R13990 */
+    0x0000,     /* R13991 */
+    0x0000,     /* R13992 */
+    0x0000,     /* R13993 */
+    0x0000,     /* R13994 */
+    0x0000,     /* R13995 */
+    0x0000,     /* R13996 */
+    0x0000,     /* R13997 */
+    0x0000,     /* R13998 */
+    0x0000,     /* R13999 */
+    0x0000,     /* R14000 */
+    0x0000,     /* R14001 */
+    0x0000,     /* R14002 */
+    0x0000,     /* R14003 */
+    0x0000,     /* R14004 */
+    0x0000,     /* R14005 */
+    0x0000,     /* R14006 */
+    0x0000,     /* R14007 */
+    0x0000,     /* R14008 */
+    0x0000,     /* R14009 */
+    0x0000,     /* R14010 */
+    0x0000,     /* R14011 */
+    0x0000,     /* R14012 */
+    0x0000,     /* R14013 */
+    0x0000,     /* R14014 */
+    0x0000,     /* R14015 */
+    0x0000,     /* R14016 */
+    0x0000,     /* R14017 */
+    0x0000,     /* R14018 */
+    0x0000,     /* R14019 */
+    0x0000,     /* R14020 */
+    0x0000,     /* R14021 */
+    0x0000,     /* R14022 */
+    0x0000,     /* R14023 */
+    0x0000,     /* R14024 */
+    0x0000,     /* R14025 */
+    0x0000,     /* R14026 */
+    0x0000,     /* R14027 */
+    0x0000,     /* R14028 */
+    0x0000,     /* R14029 */
+    0x0000,     /* R14030 */
+    0x0000,     /* R14031 */
+    0x0000,     /* R14032 */
+    0x0000,     /* R14033 */
+    0x0000,     /* R14034 */
+    0x0000,     /* R14035 */
+    0x0000,     /* R14036 */
+    0x0000,     /* R14037 */
+    0x0000,     /* R14038 */
+    0x0000,     /* R14039 */
+    0x0000,     /* R14040 */
+    0x0000,     /* R14041 */
+    0x0000,     /* R14042 */
+    0x0000,     /* R14043 */
+    0x0000,     /* R14044 */
+    0x0000,     /* R14045 */
+    0x0000,     /* R14046 */
+    0x0000,     /* R14047 */
+    0x0000,     /* R14048 */
+    0x0000,     /* R14049 */
+    0x0000,     /* R14050 */
+    0x0000,     /* R14051 */
+    0x0000,     /* R14052 */
+    0x0000,     /* R14053 */
+    0x0000,     /* R14054 */
+    0x0000,     /* R14055 */
+    0x0000,     /* R14056 */
+    0x0000,     /* R14057 */
+    0x0000,     /* R14058 */
+    0x0000,     /* R14059 */
+    0x0000,     /* R14060 */
+    0x0000,     /* R14061 */
+    0x0000,     /* R14062 */
+    0x0000,     /* R14063 */
+    0x0000,     /* R14064 */
+    0x0000,     /* R14065 */
+    0x0000,     /* R14066 */
+    0x0000,     /* R14067 */
+    0x0000,     /* R14068 */
+    0x0000,     /* R14069 */
+    0x0000,     /* R14070 */
+    0x0000,     /* R14071 */
+    0x0000,     /* R14072 */
+    0x0000,     /* R14073 */
+    0x0000,     /* R14074 */
+    0x0000,     /* R14075 */
+    0x0000,     /* R14076 */
+    0x0000,     /* R14077 */
+    0x0000,     /* R14078 */
+    0x0000,     /* R14079 */
+    0x0000,     /* R14080 */
+    0x0000,     /* R14081 */
+    0x0000,     /* R14082 */
+    0x0000,     /* R14083 */
+    0x0000,     /* R14084 */
+    0x0000,     /* R14085 */
+    0x0000,     /* R14086 */
+    0x0000,     /* R14087 */
+    0x0000,     /* R14088 */
+    0x0000,     /* R14089 */
+    0x0000,     /* R14090 */
+    0x0000,     /* R14091 */
+    0x0000,     /* R14092 */
+    0x0000,     /* R14093 */
+    0x0000,     /* R14094 */
+    0x0000,     /* R14095 */
+    0x0000,     /* R14096 */
+    0x0000,     /* R14097 */
+    0x0000,     /* R14098 */
+    0x0000,     /* R14099 */
+    0x0000,     /* R14100 */
+    0x0000,     /* R14101 */
+    0x0000,     /* R14102 */
+    0x0000,     /* R14103 */
+    0x0000,     /* R14104 */
+    0x0000,     /* R14105 */
+    0x0000,     /* R14106 */
+    0x0000,     /* R14107 */
+    0x0000,     /* R14108 */
+    0x0000,     /* R14109 */
+    0x0000,     /* R14110 */
+    0x0000,     /* R14111 */
+    0x0000,     /* R14112 */
+    0x0000,     /* R14113 */
+    0x0000,     /* R14114 */
+    0x0000,     /* R14115 */
+    0x0000,     /* R14116 */
+    0x0000,     /* R14117 */
+    0x0000,     /* R14118 */
+    0x0000,     /* R14119 */
+    0x0000,     /* R14120 */
+    0x0000,     /* R14121 */
+    0x0000,     /* R14122 */
+    0x0000,     /* R14123 */
+    0x0000,     /* R14124 */
+    0x0000,     /* R14125 */
+    0x0000,     /* R14126 */
+    0x0000,     /* R14127 */
+    0x0000,     /* R14128 */
+    0x0000,     /* R14129 */
+    0x0000,     /* R14130 */
+    0x0000,     /* R14131 */
+    0x0000,     /* R14132 */
+    0x0000,     /* R14133 */
+    0x0000,     /* R14134 */
+    0x0000,     /* R14135 */
+    0x0000,     /* R14136 */
+    0x0000,     /* R14137 */
+    0x0000,     /* R14138 */
+    0x0000,     /* R14139 */
+    0x0000,     /* R14140 */
+    0x0000,     /* R14141 */
+    0x0000,     /* R14142 */
+    0x0000,     /* R14143 */
+    0x0000,     /* R14144 */
+    0x0000,     /* R14145 */
+    0x0000,     /* R14146 */
+    0x0000,     /* R14147 */
+    0x0000,     /* R14148 */
+    0x0000,     /* R14149 */
+    0x0000,     /* R14150 */
+    0x0000,     /* R14151 */
+    0x0000,     /* R14152 */
+    0x0000,     /* R14153 */
+    0x0000,     /* R14154 */
+    0x0000,     /* R14155 */
+    0x0000,     /* R14156 */
+    0x0000,     /* R14157 */
+    0x0000,     /* R14158 */
+    0x0000,     /* R14159 */
+    0x0000,     /* R14160 */
+    0x0000,     /* R14161 */
+    0x0000,     /* R14162 */
+    0x0000,     /* R14163 */
+    0x0000,     /* R14164 */
+    0x0000,     /* R14165 */
+    0x0000,     /* R14166 */
+    0x0000,     /* R14167 */
+    0x0000,     /* R14168 */
+    0x0000,     /* R14169 */
+    0x0000,     /* R14170 */
+    0x0000,     /* R14171 */
+    0x0000,     /* R14172 */
+    0x0000,     /* R14173 */
+    0x0000,     /* R14174 */
+    0x0000,     /* R14175 */
+    0x0000,     /* R14176 */
+    0x0000,     /* R14177 */
+    0x0000,     /* R14178 */
+    0x0000,     /* R14179 */
+    0x0000,     /* R14180 */
+    0x0000,     /* R14181 */
+    0x0000,     /* R14182 */
+    0x0000,     /* R14183 */
+    0x0000,     /* R14184 */
+    0x0000,     /* R14185 */
+    0x0000,     /* R14186 */
+    0x0000,     /* R14187 */
+    0x0000,     /* R14188 */
+    0x0000,     /* R14189 */
+    0x0000,     /* R14190 */
+    0x0000,     /* R14191 */
+    0x0000,     /* R14192 */
+    0x0000,     /* R14193 */
+    0x0000,     /* R14194 */
+    0x0000,     /* R14195 */
+    0x0000,     /* R14196 */
+    0x0000,     /* R14197 */
+    0x0000,     /* R14198 */
+    0x0000,     /* R14199 */
+    0x0000,     /* R14200 */
+    0x0000,     /* R14201 */
+    0x0000,     /* R14202 */
+    0x0000,     /* R14203 */
+    0x0000,     /* R14204 */
+    0x0000,     /* R14205 */
+    0x0000,     /* R14206 */
+    0x0000,     /* R14207 */
+    0x0000,     /* R14208 */
+    0x0000,     /* R14209 */
+    0x0000,     /* R14210 */
+    0x0000,     /* R14211 */
+    0x0000,     /* R14212 */
+    0x0000,     /* R14213 */
+    0x0000,     /* R14214 */
+    0x0000,     /* R14215 */
+    0x0000,     /* R14216 */
+    0x0000,     /* R14217 */
+    0x0000,     /* R14218 */
+    0x0000,     /* R14219 */
+    0x0000,     /* R14220 */
+    0x0000,     /* R14221 */
+    0x0000,     /* R14222 */
+    0x0000,     /* R14223 */
+    0x0000,     /* R14224 */
+    0x0000,     /* R14225 */
+    0x0000,     /* R14226 */
+    0x0000,     /* R14227 */
+    0x0000,     /* R14228 */
+    0x0000,     /* R14229 */
+    0x0000,     /* R14230 */
+    0x0000,     /* R14231 */
+    0x0000,     /* R14232 */
+    0x0000,     /* R14233 */
+    0x0000,     /* R14234 */
+    0x0000,     /* R14235 */
+    0x0000,     /* R14236 */
+    0x0000,     /* R14237 */
+    0x0000,     /* R14238 */
+    0x0000,     /* R14239 */
+    0x0000,     /* R14240 */
+    0x0000,     /* R14241 */
+    0x0000,     /* R14242 */
+    0x0000,     /* R14243 */
+    0x0000,     /* R14244 */
+    0x0000,     /* R14245 */
+    0x0000,     /* R14246 */
+    0x0000,     /* R14247 */
+    0x0000,     /* R14248 */
+    0x0000,     /* R14249 */
+    0x0000,     /* R14250 */
+    0x0000,     /* R14251 */
+    0x0000,     /* R14252 */
+    0x0000,     /* R14253 */
+    0x0000,     /* R14254 */
+    0x0000,     /* R14255 */
+    0x0000,     /* R14256 */
+    0x0000,     /* R14257 */
+    0x0000,     /* R14258 */
+    0x0000,     /* R14259 */
+    0x0000,     /* R14260 */
+    0x0000,     /* R14261 */
+    0x0000,     /* R14262 */
+    0x0000,     /* R14263 */
+    0x0000,     /* R14264 */
+    0x0000,     /* R14265 */
+    0x0000,     /* R14266 */
+    0x0000,     /* R14267 */
+    0x0000,     /* R14268 */
+    0x0000,     /* R14269 */
+    0x0000,     /* R14270 */
+    0x0000,     /* R14271 */
+    0x0000,     /* R14272 */
+    0x0000,     /* R14273 */
+    0x0000,     /* R14274 */
+    0x0000,     /* R14275 */
+    0x0000,     /* R14276 */
+    0x0000,     /* R14277 */
+    0x0000,     /* R14278 */
+    0x0000,     /* R14279 */
+    0x0000,     /* R14280 */
+    0x0000,     /* R14281 */
+    0x0000,     /* R14282 */
+    0x0000,     /* R14283 */
+    0x0000,     /* R14284 */
+    0x0000,     /* R14285 */
+    0x0000,     /* R14286 */
+    0x0000,     /* R14287 */
+    0x0000,     /* R14288 */
+    0x0000,     /* R14289 */
+    0x0000,     /* R14290 */
+    0x0000,     /* R14291 */
+    0x0000,     /* R14292 */
+    0x0000,     /* R14293 */
+    0x0000,     /* R14294 */
+    0x0000,     /* R14295 */
+    0x0000,     /* R14296 */
+    0x0000,     /* R14297 */
+    0x0000,     /* R14298 */
+    0x0000,     /* R14299 */
+    0x0000,     /* R14300 */
+    0x0000,     /* R14301 */
+    0x0000,     /* R14302 */
+    0x0000,     /* R14303 */
+    0x0000,     /* R14304 */
+    0x0000,     /* R14305 */
+    0x0000,     /* R14306 */
+    0x0000,     /* R14307 */
+    0x0000,     /* R14308 */
+    0x0000,     /* R14309 */
+    0x0000,     /* R14310 */
+    0x0000,     /* R14311 */
+    0x0000,     /* R14312 */
+    0x0000,     /* R14313 */
+    0x0000,     /* R14314 */
+    0x0000,     /* R14315 */
+    0x0000,     /* R14316 */
+    0x0000,     /* R14317 */
+    0x0000,     /* R14318 */
+    0x0000,     /* R14319 */
+    0x0000,     /* R14320 */
+    0x0000,     /* R14321 */
+    0x0000,     /* R14322 */
+    0x0000,     /* R14323 */
+    0x0000,     /* R14324 */
+    0x0000,     /* R14325 */
+    0x0000,     /* R14326 */
+    0x0000,     /* R14327 */
+    0x0000,     /* R14328 */
+    0x0000,     /* R14329 */
+    0x0000,     /* R14330 */
+    0x0000,     /* R14331 */
+    0x0000,     /* R14332 */
+    0x0000,     /* R14333 */
+    0x0000,     /* R14334 */
+    0x0000,     /* R14335 */
+    0x0000,     /* R14336 - DSP2 Data3 RAM 1 */
+    0x0000,     /* R14337 - DSP2 Data3 RAM 0 */
+    0x0000,     /* R14338 */
+    0x0000,     /* R14339 */
+    0x0000,     /* R14340 */
+    0x0000,     /* R14341 */
+    0x0000,     /* R14342 */
+    0x0000,     /* R14343 */
+    0x0000,     /* R14344 */
+    0x0000,     /* R14345 */
+    0x0000,     /* R14346 */
+    0x0000,     /* R14347 */
+    0x0000,     /* R14348 */
+    0x0000,     /* R14349 */
+    0x0000,     /* R14350 */
+    0x0000,     /* R14351 */
+    0x0000,     /* R14352 */
+    0x0000,     /* R14353 */
+    0x0000,     /* R14354 */
+    0x0000,     /* R14355 */
+    0x0000,     /* R14356 */
+    0x0000,     /* R14357 */
+    0x0000,     /* R14358 */
+    0x0000,     /* R14359 */
+    0x0000,     /* R14360 */
+    0x0000,     /* R14361 */
+    0x0000,     /* R14362 */
+    0x0000,     /* R14363 */
+    0x0000,     /* R14364 */
+    0x0000,     /* R14365 */
+    0x0000,     /* R14366 */
+    0x0000,     /* R14367 */
+    0x0000,     /* R14368 */
+    0x0000,     /* R14369 */
+    0x0000,     /* R14370 */
+    0x0000,     /* R14371 */
+    0x0000,     /* R14372 */
+    0x0000,     /* R14373 */
+    0x0000,     /* R14374 */
+    0x0000,     /* R14375 */
+    0x0000,     /* R14376 */
+    0x0000,     /* R14377 */
+    0x0000,     /* R14378 */
+    0x0000,     /* R14379 */
+    0x0000,     /* R14380 */
+    0x0000,     /* R14381 */
+    0x0000,     /* R14382 */
+    0x0000,     /* R14383 */
+    0x0000,     /* R14384 */
+    0x0000,     /* R14385 */
+    0x0000,     /* R14386 */
+    0x0000,     /* R14387 */
+    0x0000,     /* R14388 */
+    0x0000,     /* R14389 */
+    0x0000,     /* R14390 */
+    0x0000,     /* R14391 */
+    0x0000,     /* R14392 */
+    0x0000,     /* R14393 */
+    0x0000,     /* R14394 */
+    0x0000,     /* R14395 */
+    0x0000,     /* R14396 */
+    0x0000,     /* R14397 */
+    0x0000,     /* R14398 */
+    0x0000,     /* R14399 */
+    0x0000,     /* R14400 */
+    0x0000,     /* R14401 */
+    0x0000,     /* R14402 */
+    0x0000,     /* R14403 */
+    0x0000,     /* R14404 */
+    0x0000,     /* R14405 */
+    0x0000,     /* R14406 */
+    0x0000,     /* R14407 */
+    0x0000,     /* R14408 */
+    0x0000,     /* R14409 */
+    0x0000,     /* R14410 */
+    0x0000,     /* R14411 */
+    0x0000,     /* R14412 */
+    0x0000,     /* R14413 */
+    0x0000,     /* R14414 */
+    0x0000,     /* R14415 */
+    0x0000,     /* R14416 */
+    0x0000,     /* R14417 */
+    0x0000,     /* R14418 */
+    0x0000,     /* R14419 */
+    0x0000,     /* R14420 */
+    0x0000,     /* R14421 */
+    0x0000,     /* R14422 */
+    0x0000,     /* R14423 */
+    0x0000,     /* R14424 */
+    0x0000,     /* R14425 */
+    0x0000,     /* R14426 */
+    0x0000,     /* R14427 */
+    0x0000,     /* R14428 */
+    0x0000,     /* R14429 */
+    0x0000,     /* R14430 */
+    0x0000,     /* R14431 */
+    0x0000,     /* R14432 */
+    0x0000,     /* R14433 */
+    0x0000,     /* R14434 */
+    0x0000,     /* R14435 */
+    0x0000,     /* R14436 */
+    0x0000,     /* R14437 */
+    0x0000,     /* R14438 */
+    0x0000,     /* R14439 */
+    0x0000,     /* R14440 */
+    0x0000,     /* R14441 */
+    0x0000,     /* R14442 */
+    0x0000,     /* R14443 */
+    0x0000,     /* R14444 */
+    0x0000,     /* R14445 */
+    0x0000,     /* R14446 */
+    0x0000,     /* R14447 */
+    0x0000,     /* R14448 */
+    0x0000,     /* R14449 */
+    0x0000,     /* R14450 */
+    0x0000,     /* R14451 */
+    0x0000,     /* R14452 */
+    0x0000,     /* R14453 */
+    0x0000,     /* R14454 */
+    0x0000,     /* R14455 */
+    0x0000,     /* R14456 */
+    0x0000,     /* R14457 */
+    0x0000,     /* R14458 */
+    0x0000,     /* R14459 */
+    0x0000,     /* R14460 */
+    0x0000,     /* R14461 */
+    0x0000,     /* R14462 */
+    0x0000,     /* R14463 */
+    0x0000,     /* R14464 */
+    0x0000,     /* R14465 */
+    0x0000,     /* R14466 */
+    0x0000,     /* R14467 */
+    0x0000,     /* R14468 */
+    0x0000,     /* R14469 */
+    0x0000,     /* R14470 */
+    0x0000,     /* R14471 */
+    0x0000,     /* R14472 */
+    0x0000,     /* R14473 */
+    0x0000,     /* R14474 */
+    0x0000,     /* R14475 */
+    0x0000,     /* R14476 */
+    0x0000,     /* R14477 */
+    0x0000,     /* R14478 */
+    0x0000,     /* R14479 */
+    0x0000,     /* R14480 */
+    0x0000,     /* R14481 */
+    0x0000,     /* R14482 */
+    0x0000,     /* R14483 */
+    0x0000,     /* R14484 */
+    0x0000,     /* R14485 */
+    0x0000,     /* R14486 */
+    0x0000,     /* R14487 */
+    0x0000,     /* R14488 */
+    0x0000,     /* R14489 */
+    0x0000,     /* R14490 */
+    0x0000,     /* R14491 */
+    0x0000,     /* R14492 */
+    0x0000,     /* R14493 */
+    0x0000,     /* R14494 */
+    0x0000,     /* R14495 */
+    0x0000,     /* R14496 */
+    0x0000,     /* R14497 */
+    0x0000,     /* R14498 */
+    0x0000,     /* R14499 */
+    0x0000,     /* R14500 */
+    0x0000,     /* R14501 */
+    0x0000,     /* R14502 */
+    0x0000,     /* R14503 */
+    0x0000,     /* R14504 */
+    0x0000,     /* R14505 */
+    0x0000,     /* R14506 */
+    0x0000,     /* R14507 */
+    0x0000,     /* R14508 */
+    0x0000,     /* R14509 */
+    0x0000,     /* R14510 */
+    0x0000,     /* R14511 */
+    0x0000,     /* R14512 */
+    0x0000,     /* R14513 */
+    0x0000,     /* R14514 */
+    0x0000,     /* R14515 */
+    0x0000,     /* R14516 */
+    0x0000,     /* R14517 */
+    0x0000,     /* R14518 */
+    0x0000,     /* R14519 */
+    0x0000,     /* R14520 */
+    0x0000,     /* R14521 */
+    0x0000,     /* R14522 */
+    0x0000,     /* R14523 */
+    0x0000,     /* R14524 */
+    0x0000,     /* R14525 */
+    0x0000,     /* R14526 */
+    0x0000,     /* R14527 */
+    0x0000,     /* R14528 */
+    0x0000,     /* R14529 */
+    0x0000,     /* R14530 */
+    0x0000,     /* R14531 */
+    0x0000,     /* R14532 */
+    0x0000,     /* R14533 */
+    0x0000,     /* R14534 */
+    0x0000,     /* R14535 */
+    0x0000,     /* R14536 */
+    0x0000,     /* R14537 */
+    0x0000,     /* R14538 */
+    0x0000,     /* R14539 */
+    0x0000,     /* R14540 */
+    0x0000,     /* R14541 */
+    0x0000,     /* R14542 */
+    0x0000,     /* R14543 */
+    0x0000,     /* R14544 */
+    0x0000,     /* R14545 */
+    0x0000,     /* R14546 */
+    0x0000,     /* R14547 */
+    0x0000,     /* R14548 */
+    0x0000,     /* R14549 */
+    0x0000,     /* R14550 */
+    0x0000,     /* R14551 */
+    0x0000,     /* R14552 */
+    0x0000,     /* R14553 */
+    0x0000,     /* R14554 */
+    0x0000,     /* R14555 */
+    0x0000,     /* R14556 */
+    0x0000,     /* R14557 */
+    0x0000,     /* R14558 */
+    0x0000,     /* R14559 */
+    0x0000,     /* R14560 */
+    0x0000,     /* R14561 */
+    0x0000,     /* R14562 */
+    0x0000,     /* R14563 */
+    0x0000,     /* R14564 */
+    0x0000,     /* R14565 */
+    0x0000,     /* R14566 */
+    0x0000,     /* R14567 */
+    0x0000,     /* R14568 */
+    0x0000,     /* R14569 */
+    0x0000,     /* R14570 */
+    0x0000,     /* R14571 */
+    0x0000,     /* R14572 */
+    0x0000,     /* R14573 */
+    0x0000,     /* R14574 */
+    0x0000,     /* R14575 */
+    0x0000,     /* R14576 */
+    0x0000,     /* R14577 */
+    0x0000,     /* R14578 */
+    0x0000,     /* R14579 */
+    0x0000,     /* R14580 */
+    0x0000,     /* R14581 */
+    0x0000,     /* R14582 */
+    0x0000,     /* R14583 */
+    0x0000,     /* R14584 */
+    0x0000,     /* R14585 */
+    0x0000,     /* R14586 */
+    0x0000,     /* R14587 */
+    0x0000,     /* R14588 */
+    0x0000,     /* R14589 */
+    0x0000,     /* R14590 */
+    0x0000,     /* R14591 */
+    0x0000,     /* R14592 */
+    0x0000,     /* R14593 */
+    0x0000,     /* R14594 */
+    0x0000,     /* R14595 */
+    0x0000,     /* R14596 */
+    0x0000,     /* R14597 */
+    0x0000,     /* R14598 */
+    0x0000,     /* R14599 */
+    0x0000,     /* R14600 */
+    0x0000,     /* R14601 */
+    0x0000,     /* R14602 */
+    0x0000,     /* R14603 */
+    0x0000,     /* R14604 */
+    0x0000,     /* R14605 */
+    0x0000,     /* R14606 */
+    0x0000,     /* R14607 */
+    0x0000,     /* R14608 */
+    0x0000,     /* R14609 */
+    0x0000,     /* R14610 */
+    0x0000,     /* R14611 */
+    0x0000,     /* R14612 */
+    0x0000,     /* R14613 */
+    0x0000,     /* R14614 */
+    0x0000,     /* R14615 */
+    0x0000,     /* R14616 */
+    0x0000,     /* R14617 */
+    0x0000,     /* R14618 */
+    0x0000,     /* R14619 */
+    0x0000,     /* R14620 */
+    0x0000,     /* R14621 */
+    0x0000,     /* R14622 */
+    0x0000,     /* R14623 */
+    0x0000,     /* R14624 */
+    0x0000,     /* R14625 */
+    0x0000,     /* R14626 */
+    0x0000,     /* R14627 */
+    0x0000,     /* R14628 */
+    0x0000,     /* R14629 */
+    0x0000,     /* R14630 */
+    0x0000,     /* R14631 */
+    0x0000,     /* R14632 */
+    0x0000,     /* R14633 */
+    0x0000,     /* R14634 */
+    0x0000,     /* R14635 */
+    0x0000,     /* R14636 */
+    0x0000,     /* R14637 */
+    0x0000,     /* R14638 */
+    0x0000,     /* R14639 */
+    0x0000,     /* R14640 */
+    0x0000,     /* R14641 */
+    0x0000,     /* R14642 */
+    0x0000,     /* R14643 */
+    0x0000,     /* R14644 */
+    0x0000,     /* R14645 */
+    0x0000,     /* R14646 */
+    0x0000,     /* R14647 */
+    0x0000,     /* R14648 */
+    0x0000,     /* R14649 */
+    0x0000,     /* R14650 */
+    0x0000,     /* R14651 */
+    0x0000,     /* R14652 */
+    0x0000,     /* R14653 */
+    0x0000,     /* R14654 */
+    0x0000,     /* R14655 */
+    0x0000,     /* R14656 */
+    0x0000,     /* R14657 */
+    0x0000,     /* R14658 */
+    0x0000,     /* R14659 */
+    0x0000,     /* R14660 */
+    0x0000,     /* R14661 */
+    0x0000,     /* R14662 */
+    0x0000,     /* R14663 */
+    0x0000,     /* R14664 */
+    0x0000,     /* R14665 */
+    0x0000,     /* R14666 */
+    0x0000,     /* R14667 */
+    0x0000,     /* R14668 */
+    0x0000,     /* R14669 */
+    0x0000,     /* R14670 */
+    0x0000,     /* R14671 */
+    0x0000,     /* R14672 */
+    0x0000,     /* R14673 */
+    0x0000,     /* R14674 */
+    0x0000,     /* R14675 */
+    0x0000,     /* R14676 */
+    0x0000,     /* R14677 */
+    0x0000,     /* R14678 */
+    0x0000,     /* R14679 */
+    0x0000,     /* R14680 */
+    0x0000,     /* R14681 */
+    0x0000,     /* R14682 */
+    0x0000,     /* R14683 */
+    0x0000,     /* R14684 */
+    0x0000,     /* R14685 */
+    0x0000,     /* R14686 */
+    0x0000,     /* R14687 */
+    0x0000,     /* R14688 */
+    0x0000,     /* R14689 */
+    0x0000,     /* R14690 */
+    0x0000,     /* R14691 */
+    0x0000,     /* R14692 */
+    0x0000,     /* R14693 */
+    0x0000,     /* R14694 */
+    0x0000,     /* R14695 */
+    0x0000,     /* R14696 */
+    0x0000,     /* R14697 */
+    0x0000,     /* R14698 */
+    0x0000,     /* R14699 */
+    0x0000,     /* R14700 */
+    0x0000,     /* R14701 */
+    0x0000,     /* R14702 */
+    0x0000,     /* R14703 */
+    0x0000,     /* R14704 */
+    0x0000,     /* R14705 */
+    0x0000,     /* R14706 */
+    0x0000,     /* R14707 */
+    0x0000,     /* R14708 */
+    0x0000,     /* R14709 */
+    0x0000,     /* R14710 */
+    0x0000,     /* R14711 */
+    0x0000,     /* R14712 */
+    0x0000,     /* R14713 */
+    0x0000,     /* R14714 */
+    0x0000,     /* R14715 */
+    0x0000,     /* R14716 */
+    0x0000,     /* R14717 */
+    0x0000,     /* R14718 */
+    0x0000,     /* R14719 */
+    0x0000,     /* R14720 */
+    0x0000,     /* R14721 */
+    0x0000,     /* R14722 */
+    0x0000,     /* R14723 */
+    0x0000,     /* R14724 */
+    0x0000,     /* R14725 */
+    0x0000,     /* R14726 */
+    0x0000,     /* R14727 */
+    0x0000,     /* R14728 */
+    0x0000,     /* R14729 */
+    0x0000,     /* R14730 */
+    0x0000,     /* R14731 */
+    0x0000,     /* R14732 */
+    0x0000,     /* R14733 */
+    0x0000,     /* R14734 */
+    0x0000,     /* R14735 */
+    0x0000,     /* R14736 */
+    0x0000,     /* R14737 */
+    0x0000,     /* R14738 */
+    0x0000,     /* R14739 */
+    0x0000,     /* R14740 */
+    0x0000,     /* R14741 */
+    0x0000,     /* R14742 */
+    0x0000,     /* R14743 */
+    0x0000,     /* R14744 */
+    0x0000,     /* R14745 */
+    0x0000,     /* R14746 */
+    0x0000,     /* R14747 */
+    0x0000,     /* R14748 */
+    0x0000,     /* R14749 */
+    0x0000,     /* R14750 */
+    0x0000,     /* R14751 */
+    0x0000,     /* R14752 */
+    0x0000,     /* R14753 */
+    0x0000,     /* R14754 */
+    0x0000,     /* R14755 */
+    0x0000,     /* R14756 */
+    0x0000,     /* R14757 */
+    0x0000,     /* R14758 */
+    0x0000,     /* R14759 */
+    0x0000,     /* R14760 */
+    0x0000,     /* R14761 */
+    0x0000,     /* R14762 */
+    0x0000,     /* R14763 */
+    0x0000,     /* R14764 */
+    0x0000,     /* R14765 */
+    0x0000,     /* R14766 */
+    0x0000,     /* R14767 */
+    0x0000,     /* R14768 */
+    0x0000,     /* R14769 */
+    0x0000,     /* R14770 */
+    0x0000,     /* R14771 */
+    0x0000,     /* R14772 */
+    0x0000,     /* R14773 */
+    0x0000,     /* R14774 */
+    0x0000,     /* R14775 */
+    0x0000,     /* R14776 */
+    0x0000,     /* R14777 */
+    0x0000,     /* R14778 */
+    0x0000,     /* R14779 */
+    0x0000,     /* R14780 */
+    0x0000,     /* R14781 */
+    0x0000,     /* R14782 */
+    0x0000,     /* R14783 */
+    0x0000,     /* R14784 */
+    0x0000,     /* R14785 */
+    0x0000,     /* R14786 */
+    0x0000,     /* R14787 */
+    0x0000,     /* R14788 */
+    0x0000,     /* R14789 */
+    0x0000,     /* R14790 */
+    0x0000,     /* R14791 */
+    0x0000,     /* R14792 */
+    0x0000,     /* R14793 */
+    0x0000,     /* R14794 */
+    0x0000,     /* R14795 */
+    0x0000,     /* R14796 */
+    0x0000,     /* R14797 */
+    0x0000,     /* R14798 */
+    0x0000,     /* R14799 */
+    0x0000,     /* R14800 */
+    0x0000,     /* R14801 */
+    0x0000,     /* R14802 */
+    0x0000,     /* R14803 */
+    0x0000,     /* R14804 */
+    0x0000,     /* R14805 */
+    0x0000,     /* R14806 */
+    0x0000,     /* R14807 */
+    0x0000,     /* R14808 */
+    0x0000,     /* R14809 */
+    0x0000,     /* R14810 */
+    0x0000,     /* R14811 */
+    0x0000,     /* R14812 */
+    0x0000,     /* R14813 */
+    0x0000,     /* R14814 */
+    0x0000,     /* R14815 */
+    0x0000,     /* R14816 */
+    0x0000,     /* R14817 */
+    0x0000,     /* R14818 */
+    0x0000,     /* R14819 */
+    0x0000,     /* R14820 */
+    0x0000,     /* R14821 */
+    0x0000,     /* R14822 */
+    0x0000,     /* R14823 */
+    0x0000,     /* R14824 */
+    0x0000,     /* R14825 */
+    0x0000,     /* R14826 */
+    0x0000,     /* R14827 */
+    0x0000,     /* R14828 */
+    0x0000,     /* R14829 */
+    0x0000,     /* R14830 */
+    0x0000,     /* R14831 */
+    0x0000,     /* R14832 */
+    0x0000,     /* R14833 */
+    0x0000,     /* R14834 */
+    0x0000,     /* R14835 */
+    0x0000,     /* R14836 */
+    0x0000,     /* R14837 */
+    0x0000,     /* R14838 */
+    0x0000,     /* R14839 */
+    0x0000,     /* R14840 */
+    0x0000,     /* R14841 */
+    0x0000,     /* R14842 */
+    0x0000,     /* R14843 */
+    0x0000,     /* R14844 */
+    0x0000,     /* R14845 */
+    0x0000,     /* R14846 */
+    0x0000,     /* R14847 */
+    0x0000,     /* R14848 */
+    0x0000,     /* R14849 */
+    0x0000,     /* R14850 */
+    0x0000,     /* R14851 */
+    0x0000,     /* R14852 */
+    0x0000,     /* R14853 */
+    0x0000,     /* R14854 */
+    0x0000,     /* R14855 */
+    0x0000,     /* R14856 */
+    0x0000,     /* R14857 */
+    0x0000,     /* R14858 */
+    0x0000,     /* R14859 */
+    0x0000,     /* R14860 */
+    0x0000,     /* R14861 */
+    0x0000,     /* R14862 */
+    0x0000,     /* R14863 */
+    0x0000,     /* R14864 */
+    0x0000,     /* R14865 */
+    0x0000,     /* R14866 */
+    0x0000,     /* R14867 */
+    0x0000,     /* R14868 */
+    0x0000,     /* R14869 */
+    0x0000,     /* R14870 */
+    0x0000,     /* R14871 */
+    0x0000,     /* R14872 */
+    0x0000,     /* R14873 */
+    0x0000,     /* R14874 */
+    0x0000,     /* R14875 */
+    0x0000,     /* R14876 */
+    0x0000,     /* R14877 */
+    0x0000,     /* R14878 */
+    0x0000,     /* R14879 */
+    0x0000,     /* R14880 */
+    0x0000,     /* R14881 */
+    0x0000,     /* R14882 */
+    0x0000,     /* R14883 */
+    0x0000,     /* R14884 */
+    0x0000,     /* R14885 */
+    0x0000,     /* R14886 */
+    0x0000,     /* R14887 */
+    0x0000,     /* R14888 */
+    0x0000,     /* R14889 */
+    0x0000,     /* R14890 */
+    0x0000,     /* R14891 */
+    0x0000,     /* R14892 */
+    0x0000,     /* R14893 */
+    0x0000,     /* R14894 */
+    0x0000,     /* R14895 */
+    0x0000,     /* R14896 */
+    0x0000,     /* R14897 */
+    0x0000,     /* R14898 */
+    0x0000,     /* R14899 */
+    0x0000,     /* R14900 */
+    0x0000,     /* R14901 */
+    0x0000,     /* R14902 */
+    0x0000,     /* R14903 */
+    0x0000,     /* R14904 */
+    0x0000,     /* R14905 */
+    0x0000,     /* R14906 */
+    0x0000,     /* R14907 */
+    0x0000,     /* R14908 */
+    0x0000,     /* R14909 */
+    0x0000,     /* R14910 */
+    0x0000,     /* R14911 */
+    0x0000,     /* R14912 */
+    0x0000,     /* R14913 */
+    0x0000,     /* R14914 */
+    0x0000,     /* R14915 */
+    0x0000,     /* R14916 */
+    0x0000,     /* R14917 */
+    0x0000,     /* R14918 */
+    0x0000,     /* R14919 */
+    0x0000,     /* R14920 */
+    0x0000,     /* R14921 */
+    0x0000,     /* R14922 */
+    0x0000,     /* R14923 */
+    0x0000,     /* R14924 */
+    0x0000,     /* R14925 */
+    0x0000,     /* R14926 */
+    0x0000,     /* R14927 */
+    0x0000,     /* R14928 */
+    0x0000,     /* R14929 */
+    0x0000,     /* R14930 */
+    0x0000,     /* R14931 */
+    0x0000,     /* R14932 */
+    0x0000,     /* R14933 */
+    0x0000,     /* R14934 */
+    0x0000,     /* R14935 */
+    0x0000,     /* R14936 */
+    0x0000,     /* R14937 */
+    0x0000,     /* R14938 */
+    0x0000,     /* R14939 */
+    0x0000,     /* R14940 */
+    0x0000,     /* R14941 */
+    0x0000,     /* R14942 */
+    0x0000,     /* R14943 */
+    0x0000,     /* R14944 */
+    0x0000,     /* R14945 */
+    0x0000,     /* R14946 */
+    0x0000,     /* R14947 */
+    0x0000,     /* R14948 */
+    0x0000,     /* R14949 */
+    0x0000,     /* R14950 */
+    0x0000,     /* R14951 */
+    0x0000,     /* R14952 */
+    0x0000,     /* R14953 */
+    0x0000,     /* R14954 */
+    0x0000,     /* R14955 */
+    0x0000,     /* R14956 */
+    0x0000,     /* R14957 */
+    0x0000,     /* R14958 */
+    0x0000,     /* R14959 */
+    0x0000,     /* R14960 */
+    0x0000,     /* R14961 */
+    0x0000,     /* R14962 */
+    0x0000,     /* R14963 */
+    0x0000,     /* R14964 */
+    0x0000,     /* R14965 */
+    0x0000,     /* R14966 */
+    0x0000,     /* R14967 */
+    0x0000,     /* R14968 */
+    0x0000,     /* R14969 */
+    0x0000,     /* R14970 */
+    0x0000,     /* R14971 */
+    0x0000,     /* R14972 */
+    0x0000,     /* R14973 */
+    0x0000,     /* R14974 */
+    0x0000,     /* R14975 */
+    0x0000,     /* R14976 */
+    0x0000,     /* R14977 */
+    0x0000,     /* R14978 */
+    0x0000,     /* R14979 */
+    0x0000,     /* R14980 */
+    0x0000,     /* R14981 */
+    0x0000,     /* R14982 */
+    0x0000,     /* R14983 */
+    0x0000,     /* R14984 */
+    0x0000,     /* R14985 */
+    0x0000,     /* R14986 */
+    0x0000,     /* R14987 */
+    0x0000,     /* R14988 */
+    0x0000,     /* R14989 */
+    0x0000,     /* R14990 */
+    0x0000,     /* R14991 */
+    0x0000,     /* R14992 */
+    0x0000,     /* R14993 */
+    0x0000,     /* R14994 */
+    0x0000,     /* R14995 */
+    0x0000,     /* R14996 */
+    0x0000,     /* R14997 */
+    0x0000,     /* R14998 */
+    0x0000,     /* R14999 */
+    0x0000,     /* R15000 */
+    0x0000,     /* R15001 */
+    0x0000,     /* R15002 */
+    0x0000,     /* R15003 */
+    0x0000,     /* R15004 */
+    0x0000,     /* R15005 */
+    0x0000,     /* R15006 */
+    0x0000,     /* R15007 */
+    0x0000,     /* R15008 */
+    0x0000,     /* R15009 */
+    0x0000,     /* R15010 */
+    0x0000,     /* R15011 */
+    0x0000,     /* R15012 */
+    0x0000,     /* R15013 */
+    0x0000,     /* R15014 */
+    0x0000,     /* R15015 */
+    0x0000,     /* R15016 */
+    0x0000,     /* R15017 */
+    0x0000,     /* R15018 */
+    0x0000,     /* R15019 */
+    0x0000,     /* R15020 */
+    0x0000,     /* R15021 */
+    0x0000,     /* R15022 */
+    0x0000,     /* R15023 */
+    0x0000,     /* R15024 */
+    0x0000,     /* R15025 */
+    0x0000,     /* R15026 */
+    0x0000,     /* R15027 */
+    0x0000,     /* R15028 */
+    0x0000,     /* R15029 */
+    0x0000,     /* R15030 */
+    0x0000,     /* R15031 */
+    0x0000,     /* R15032 */
+    0x0000,     /* R15033 */
+    0x0000,     /* R15034 */
+    0x0000,     /* R15035 */
+    0x0000,     /* R15036 */
+    0x0000,     /* R15037 */
+    0x0000,     /* R15038 */
+    0x0000,     /* R15039 */
+    0x0000,     /* R15040 */
+    0x0000,     /* R15041 */
+    0x0000,     /* R15042 */
+    0x0000,     /* R15043 */
+    0x0000,     /* R15044 */
+    0x0000,     /* R15045 */
+    0x0000,     /* R15046 */
+    0x0000,     /* R15047 */
+    0x0000,     /* R15048 */
+    0x0000,     /* R15049 */
+    0x0000,     /* R15050 */
+    0x0000,     /* R15051 */
+    0x0000,     /* R15052 */
+    0x0000,     /* R15053 */
+    0x0000,     /* R15054 */
+    0x0000,     /* R15055 */
+    0x0000,     /* R15056 */
+    0x0000,     /* R15057 */
+    0x0000,     /* R15058 */
+    0x0000,     /* R15059 */
+    0x0000,     /* R15060 */
+    0x0000,     /* R15061 */
+    0x0000,     /* R15062 */
+    0x0000,     /* R15063 */
+    0x0000,     /* R15064 */
+    0x0000,     /* R15065 */
+    0x0000,     /* R15066 */
+    0x0000,     /* R15067 */
+    0x0000,     /* R15068 */
+    0x0000,     /* R15069 */
+    0x0000,     /* R15070 */
+    0x0000,     /* R15071 */
+    0x0000,     /* R15072 */
+    0x0000,     /* R15073 */
+    0x0000,     /* R15074 */
+    0x0000,     /* R15075 */
+    0x0000,     /* R15076 */
+    0x0000,     /* R15077 */
+    0x0000,     /* R15078 */
+    0x0000,     /* R15079 */
+    0x0000,     /* R15080 */
+    0x0000,     /* R15081 */
+    0x0000,     /* R15082 */
+    0x0000,     /* R15083 */
+    0x0000,     /* R15084 */
+    0x0000,     /* R15085 */
+    0x0000,     /* R15086 */
+    0x0000,     /* R15087 */
+    0x0000,     /* R15088 */
+    0x0000,     /* R15089 */
+    0x0000,     /* R15090 */
+    0x0000,     /* R15091 */
+    0x0000,     /* R15092 */
+    0x0000,     /* R15093 */
+    0x0000,     /* R15094 */
+    0x0000,     /* R15095 */
+    0x0000,     /* R15096 */
+    0x0000,     /* R15097 */
+    0x0000,     /* R15098 */
+    0x0000,     /* R15099 */
+    0x0000,     /* R15100 */
+    0x0000,     /* R15101 */
+    0x0000,     /* R15102 */
+    0x0000,     /* R15103 */
+    0x0000,     /* R15104 */
+    0x0000,     /* R15105 */
+    0x0000,     /* R15106 */
+    0x0000,     /* R15107 */
+    0x0000,     /* R15108 */
+    0x0000,     /* R15109 */
+    0x0000,     /* R15110 */
+    0x0000,     /* R15111 */
+    0x0000,     /* R15112 */
+    0x0000,     /* R15113 */
+    0x0000,     /* R15114 */
+    0x0000,     /* R15115 */
+    0x0000,     /* R15116 */
+    0x0000,     /* R15117 */
+    0x0000,     /* R15118 */
+    0x0000,     /* R15119 */
+    0x0000,     /* R15120 */
+    0x0000,     /* R15121 */
+    0x0000,     /* R15122 */
+    0x0000,     /* R15123 */
+    0x0000,     /* R15124 */
+    0x0000,     /* R15125 */
+    0x0000,     /* R15126 */
+    0x0000,     /* R15127 */
+    0x0000,     /* R15128 */
+    0x0000,     /* R15129 */
+    0x0000,     /* R15130 */
+    0x0000,     /* R15131 */
+    0x0000,     /* R15132 */
+    0x0000,     /* R15133 */
+    0x0000,     /* R15134 */
+    0x0000,     /* R15135 */
+    0x0000,     /* R15136 */
+    0x0000,     /* R15137 */
+    0x0000,     /* R15138 */
+    0x0000,     /* R15139 */
+    0x0000,     /* R15140 */
+    0x0000,     /* R15141 */
+    0x0000,     /* R15142 */
+    0x0000,     /* R15143 */
+    0x0000,     /* R15144 */
+    0x0000,     /* R15145 */
+    0x0000,     /* R15146 */
+    0x0000,     /* R15147 */
+    0x0000,     /* R15148 */
+    0x0000,     /* R15149 */
+    0x0000,     /* R15150 */
+    0x0000,     /* R15151 */
+    0x0000,     /* R15152 */
+    0x0000,     /* R15153 */
+    0x0000,     /* R15154 */
+    0x0000,     /* R15155 */
+    0x0000,     /* R15156 */
+    0x0000,     /* R15157 */
+    0x0000,     /* R15158 */
+    0x0000,     /* R15159 */
+    0x0000,     /* R15160 */
+    0x0000,     /* R15161 */
+    0x0000,     /* R15162 */
+    0x0000,     /* R15163 */
+    0x0000,     /* R15164 */
+    0x0000,     /* R15165 */
+    0x0000,     /* R15166 */
+    0x0000,     /* R15167 */
+    0x0000,     /* R15168 */
+    0x0000,     /* R15169 */
+    0x0000,     /* R15170 */
+    0x0000,     /* R15171 */
+    0x0000,     /* R15172 */
+    0x0000,     /* R15173 */
+    0x0000,     /* R15174 */
+    0x0000,     /* R15175 */
+    0x0000,     /* R15176 */
+    0x0000,     /* R15177 */
+    0x0000,     /* R15178 */
+    0x0000,     /* R15179 */
+    0x0000,     /* R15180 */
+    0x0000,     /* R15181 */
+    0x0000,     /* R15182 */
+    0x0000,     /* R15183 */
+    0x0000,     /* R15184 */
+    0x0000,     /* R15185 */
+    0x0000,     /* R15186 */
+    0x0000,     /* R15187 */
+    0x0000,     /* R15188 */
+    0x0000,     /* R15189 */
+    0x0000,     /* R15190 */
+    0x0000,     /* R15191 */
+    0x0000,     /* R15192 */
+    0x0000,     /* R15193 */
+    0x0000,     /* R15194 */
+    0x0000,     /* R15195 */
+    0x0000,     /* R15196 */
+    0x0000,     /* R15197 */
+    0x0000,     /* R15198 */
+    0x0000,     /* R15199 */
+    0x0000,     /* R15200 */
+    0x0000,     /* R15201 */
+    0x0000,     /* R15202 */
+    0x0000,     /* R15203 */
+    0x0000,     /* R15204 */
+    0x0000,     /* R15205 */
+    0x0000,     /* R15206 */
+    0x0000,     /* R15207 */
+    0x0000,     /* R15208 */
+    0x0000,     /* R15209 */
+    0x0000,     /* R15210 */
+    0x0000,     /* R15211 */
+    0x0000,     /* R15212 */
+    0x0000,     /* R15213 */
+    0x0000,     /* R15214 */
+    0x0000,     /* R15215 */
+    0x0000,     /* R15216 */
+    0x0000,     /* R15217 */
+    0x0000,     /* R15218 */
+    0x0000,     /* R15219 */
+    0x0000,     /* R15220 */
+    0x0000,     /* R15221 */
+    0x0000,     /* R15222 */
+    0x0000,     /* R15223 */
+    0x0000,     /* R15224 */
+    0x0000,     /* R15225 */
+    0x0000,     /* R15226 */
+    0x0000,     /* R15227 */
+    0x0000,     /* R15228 */
+    0x0000,     /* R15229 */
+    0x0000,     /* R15230 */
+    0x0000,     /* R15231 */
+    0x0000,     /* R15232 */
+    0x0000,     /* R15233 */
+    0x0000,     /* R15234 */
+    0x0000,     /* R15235 */
+    0x0000,     /* R15236 */
+    0x0000,     /* R15237 */
+    0x0000,     /* R15238 */
+    0x0000,     /* R15239 */
+    0x0000,     /* R15240 */
+    0x0000,     /* R15241 */
+    0x0000,     /* R15242 */
+    0x0000,     /* R15243 */
+    0x0000,     /* R15244 */
+    0x0000,     /* R15245 */
+    0x0000,     /* R15246 */
+    0x0000,     /* R15247 */
+    0x0000,     /* R15248 */
+    0x0000,     /* R15249 */
+    0x0000,     /* R15250 */
+    0x0000,     /* R15251 */
+    0x0000,     /* R15252 */
+    0x0000,     /* R15253 */
+    0x0000,     /* R15254 */
+    0x0000,     /* R15255 */
+    0x0000,     /* R15256 */
+    0x0000,     /* R15257 */
+    0x0000,     /* R15258 */
+    0x0000,     /* R15259 */
+    0x0000,     /* R15260 */
+    0x0000,     /* R15261 */
+    0x0000,     /* R15262 */
+    0x0000,     /* R15263 */
+    0x0000,     /* R15264 */
+    0x0000,     /* R15265 */
+    0x0000,     /* R15266 */
+    0x0000,     /* R15267 */
+    0x0000,     /* R15268 */
+    0x0000,     /* R15269 */
+    0x0000,     /* R15270 */
+    0x0000,     /* R15271 */
+    0x0000,     /* R15272 */
+    0x0000,     /* R15273 */
+    0x0000,     /* R15274 */
+    0x0000,     /* R15275 */
+    0x0000,     /* R15276 */
+    0x0000,     /* R15277 */
+    0x0000,     /* R15278 */
+    0x0000,     /* R15279 */
+    0x0000,     /* R15280 */
+    0x0000,     /* R15281 */
+    0x0000,     /* R15282 */
+    0x0000,     /* R15283 */
+    0x0000,     /* R15284 */
+    0x0000,     /* R15285 */
+    0x0000,     /* R15286 */
+    0x0000,     /* R15287 */
+    0x0000,     /* R15288 */
+    0x0000,     /* R15289 */
+    0x0000,     /* R15290 */
+    0x0000,     /* R15291 */
+    0x0000,     /* R15292 */
+    0x0000,     /* R15293 */
+    0x0000,     /* R15294 */
+    0x0000,     /* R15295 */
+    0x0000,     /* R15296 */
+    0x0000,     /* R15297 */
+    0x0000,     /* R15298 */
+    0x0000,     /* R15299 */
+    0x0000,     /* R15300 */
+    0x0000,     /* R15301 */
+    0x0000,     /* R15302 */
+    0x0000,     /* R15303 */
+    0x0000,     /* R15304 */
+    0x0000,     /* R15305 */
+    0x0000,     /* R15306 */
+    0x0000,     /* R15307 */
+    0x0000,     /* R15308 */
+    0x0000,     /* R15309 */
+    0x0000,     /* R15310 */
+    0x0000,     /* R15311 */
+    0x0000,     /* R15312 */
+    0x0000,     /* R15313 */
+    0x0000,     /* R15314 */
+    0x0000,     /* R15315 */
+    0x0000,     /* R15316 */
+    0x0000,     /* R15317 */
+    0x0000,     /* R15318 */
+    0x0000,     /* R15319 */
+    0x0000,     /* R15320 */
+    0x0000,     /* R15321 */
+    0x0000,     /* R15322 */
+    0x0000,     /* R15323 */
+    0x0000,     /* R15324 */
+    0x0000,     /* R15325 */
+    0x0000,     /* R15326 */
+    0x0000,     /* R15327 */
+    0x0000,     /* R15328 */
+    0x0000,     /* R15329 */
+    0x0000,     /* R15330 */
+    0x0000,     /* R15331 */
+    0x0000,     /* R15332 */
+    0x0000,     /* R15333 */
+    0x0000,     /* R15334 */
+    0x0000,     /* R15335 */
+    0x0000,     /* R15336 */
+    0x0000,     /* R15337 */
+    0x0000,     /* R15338 */
+    0x0000,     /* R15339 */
+    0x0000,     /* R15340 */
+    0x0000,     /* R15341 */
+    0x0000,     /* R15342 */
+    0x0000,     /* R15343 */
+    0x0000,     /* R15344 */
+    0x0000,     /* R15345 */
+    0x0000,     /* R15346 */
+    0x0000,     /* R15347 */
+    0x0000,     /* R15348 */
+    0x0000,     /* R15349 */
+    0x0000,     /* R15350 */
+    0x0000,     /* R15351 */
+    0x0000,     /* R15352 */
+    0x0000,     /* R15353 */
+    0x0000,     /* R15354 */
+    0x0000,     /* R15355 */
+    0x0000,     /* R15356 */
+    0x0000,     /* R15357 */
+    0x0000,     /* R15358 */
+    0x0000,     /* R15359 */
+    0x000A,     /* R15360 - DSP2 Coeff RAM 0 */
+    0x0000,     /* R15361 */
+    0x0000,     /* R15362 */
+    0x0000,     /* R15363 */
+    0x0000,     /* R15364 */
+    0x0000,     /* R15365 */
+    0x0000,     /* R15366 */
+    0x0000,     /* R15367 */
+    0x0000,     /* R15368 */
+    0x0000,     /* R15369 */
+    0x0000,     /* R15370 */
+    0x0000,     /* R15371 */
+    0x0000,     /* R15372 */
+    0x0000,     /* R15373 */
+    0x0000,     /* R15374 */
+    0x0000,     /* R15375 */
+    0x0000,     /* R15376 */
+    0x0000,     /* R15377 */
+    0x0000,     /* R15378 */
+    0x0000,     /* R15379 */
+    0x0000,     /* R15380 */
+    0x0000,     /* R15381 */
+    0x0000,     /* R15382 */
+    0x0000,     /* R15383 */
+    0x0000,     /* R15384 */
+    0x0000,     /* R15385 */
+    0x0000,     /* R15386 */
+    0x0000,     /* R15387 */
+    0x0000,     /* R15388 */
+    0x0000,     /* R15389 */
+    0x0000,     /* R15390 */
+    0x0000,     /* R15391 */
+    0x0000,     /* R15392 */
+    0x0000,     /* R15393 */
+    0x0000,     /* R15394 */
+    0x0000,     /* R15395 */
+    0x0000,     /* R15396 */
+    0x0000,     /* R15397 */
+    0x0000,     /* R15398 */
+    0x0000,     /* R15399 */
+    0x0000,     /* R15400 */
+    0x0000,     /* R15401 */
+    0x0000,     /* R15402 */
+    0x0000,     /* R15403 */
+    0x0000,     /* R15404 */
+    0x0000,     /* R15405 */
+    0x0000,     /* R15406 */
+    0x0000,     /* R15407 */
+    0x0000,     /* R15408 */
+    0x0000,     /* R15409 */
+    0x0000,     /* R15410 */
+    0x0000,     /* R15411 */
+    0x0000,     /* R15412 */
+    0x0000,     /* R15413 */
+    0x0000,     /* R15414 */
+    0x0000,     /* R15415 */
+    0x0000,     /* R15416 */
+    0x0000,     /* R15417 */
+    0x0000,     /* R15418 */
+    0x0000,     /* R15419 */
+    0x0000,     /* R15420 */
+    0x0000,     /* R15421 */
+    0x0000,     /* R15422 */
+    0x0000,     /* R15423 */
+    0x0000,     /* R15424 */
+    0x0000,     /* R15425 */
+    0x0000,     /* R15426 */
+    0x0000,     /* R15427 */
+    0x0000,     /* R15428 */
+    0x0000,     /* R15429 */
+    0x0000,     /* R15430 */
+    0x0000,     /* R15431 */
+    0x0000,     /* R15432 */
+    0x0000,     /* R15433 */
+    0x0000,     /* R15434 */
+    0x0000,     /* R15435 */
+    0x0000,     /* R15436 */
+    0x0000,     /* R15437 */
+    0x0000,     /* R15438 */
+    0x0000,     /* R15439 */
+    0x0000,     /* R15440 */
+    0x0000,     /* R15441 */
+    0x0000,     /* R15442 */
+    0x0000,     /* R15443 */
+    0x0000,     /* R15444 */
+    0x0000,     /* R15445 */
+    0x0000,     /* R15446 */
+    0x0000,     /* R15447 */
+    0x0000,     /* R15448 */
+    0x0000,     /* R15449 */
+    0x0000,     /* R15450 */
+    0x0000,     /* R15451 */
+    0x0000,     /* R15452 */
+    0x0000,     /* R15453 */
+    0x0000,     /* R15454 */
+    0x0000,     /* R15455 */
+    0x0000,     /* R15456 */
+    0x0000,     /* R15457 */
+    0x0000,     /* R15458 */
+    0x0000,     /* R15459 */
+    0x0000,     /* R15460 */
+    0x0000,     /* R15461 */
+    0x0000,     /* R15462 */
+    0x0000,     /* R15463 */
+    0x0000,     /* R15464 */
+    0x0000,     /* R15465 */
+    0x0000,     /* R15466 */
+    0x0000,     /* R15467 */
+    0x0000,     /* R15468 */
+    0x0000,     /* R15469 */
+    0x0000,     /* R15470 */
+    0x0000,     /* R15471 */
+    0x0000,     /* R15472 */
+    0x0000,     /* R15473 */
+    0x0000,     /* R15474 */
+    0x0000,     /* R15475 */
+    0x0000,     /* R15476 */
+    0x0000,     /* R15477 */
+    0x0000,     /* R15478 */
+    0x0000,     /* R15479 */
+    0x0000,     /* R15480 */
+    0x0000,     /* R15481 */
+    0x0000,     /* R15482 */
+    0x0000,     /* R15483 */
+    0x0000,     /* R15484 */
+    0x0000,     /* R15485 */
+    0x0000,     /* R15486 */
+    0x0000,     /* R15487 */
+    0x0000,     /* R15488 */
+    0x0000,     /* R15489 */
+    0x0000,     /* R15490 */
+    0x0000,     /* R15491 */
+    0x0000,     /* R15492 */
+    0x0000,     /* R15493 */
+    0x0000,     /* R15494 */
+    0x0000,     /* R15495 */
+    0x0000,     /* R15496 */
+    0x0000,     /* R15497 */
+    0x0000,     /* R15498 */
+    0x0000,     /* R15499 */
+    0x0000,     /* R15500 */
+    0x0000,     /* R15501 */
+    0x0000,     /* R15502 */
+    0x0000,     /* R15503 */
+    0x0000,     /* R15504 */
+    0x0000,     /* R15505 */
+    0x0000,     /* R15506 */
+    0x0000,     /* R15507 */
+    0x0000,     /* R15508 */
+    0x0000,     /* R15509 */
+    0x0000,     /* R15510 */
+    0x0000,     /* R15511 */
+    0x0000,     /* R15512 */
+    0x0000,     /* R15513 */
+    0x0000,     /* R15514 */
+    0x0000,     /* R15515 */
+    0x0000,     /* R15516 */
+    0x0000,     /* R15517 */
+    0x0000,     /* R15518 */
+    0x0000,     /* R15519 */
+    0x0000,     /* R15520 */
+    0x0000,     /* R15521 */
+    0x0000,     /* R15522 */
+    0x0000,     /* R15523 */
+    0x0000,     /* R15524 */
+    0x0000,     /* R15525 */
+    0x0000,     /* R15526 */
+    0x0000,     /* R15527 */
+    0x0000,     /* R15528 */
+    0x0000,     /* R15529 */
+    0x0000,     /* R15530 */
+    0x0000,     /* R15531 */
+    0x0000,     /* R15532 */
+    0x0000,     /* R15533 */
+    0x0000,     /* R15534 */
+    0x0000,     /* R15535 */
+    0x0000,     /* R15536 */
+    0x0000,     /* R15537 */
+    0x0000,     /* R15538 */
+    0x0000,     /* R15539 */
+    0x0000,     /* R15540 */
+    0x0000,     /* R15541 */
+    0x0000,     /* R15542 */
+    0x0000,     /* R15543 */
+    0x0000,     /* R15544 */
+    0x0000,     /* R15545 */
+    0x0000,     /* R15546 */
+    0x0000,     /* R15547 */
+    0x0000,     /* R15548 */
+    0x0000,     /* R15549 */
+    0x0000,     /* R15550 */
+    0x0000,     /* R15551 */
+    0x0000,     /* R15552 */
+    0x0000,     /* R15553 */
+    0x0000,     /* R15554 */
+    0x0000,     /* R15555 */
+    0x0000,     /* R15556 */
+    0x0000,     /* R15557 */
+    0x0000,     /* R15558 */
+    0x0000,     /* R15559 */
+    0x0000,     /* R15560 */
+    0x0000,     /* R15561 */
+    0x0000,     /* R15562 */
+    0x0000,     /* R15563 */
+    0x0000,     /* R15564 */
+    0x0000,     /* R15565 */
+    0x0000,     /* R15566 */
+    0x0000,     /* R15567 */
+    0x0000,     /* R15568 */
+    0x0000,     /* R15569 */
+    0x0000,     /* R15570 */
+    0x0000,     /* R15571 */
+    0x0000,     /* R15572 */
+    0x0000,     /* R15573 */
+    0x0000,     /* R15574 */
+    0x0000,     /* R15575 */
+    0x0000,     /* R15576 */
+    0x0000,     /* R15577 */
+    0x0000,     /* R15578 */
+    0x0000,     /* R15579 */
+    0x0000,     /* R15580 */
+    0x0000,     /* R15581 */
+    0x0000,     /* R15582 */
+    0x0000,     /* R15583 */
+    0x0000,     /* R15584 */
+    0x0000,     /* R15585 */
+    0x0000,     /* R15586 */
+    0x0000,     /* R15587 */
+    0x0000,     /* R15588 */
+    0x0000,     /* R15589 */
+    0x0000,     /* R15590 */
+    0x0000,     /* R15591 */
+    0x0000,     /* R15592 */
+    0x0000,     /* R15593 */
+    0x0000,     /* R15594 */
+    0x0000,     /* R15595 */
+    0x0000,     /* R15596 */
+    0x0000,     /* R15597 */
+    0x0000,     /* R15598 */
+    0x0000,     /* R15599 */
+    0x0000,     /* R15600 */
+    0x0000,     /* R15601 */
+    0x0000,     /* R15602 */
+    0x0000,     /* R15603 */
+    0x0000,     /* R15604 */
+    0x0000,     /* R15605 */
+    0x0000,     /* R15606 */
+    0x0000,     /* R15607 */
+    0x0000,     /* R15608 */
+    0x0000,     /* R15609 */
+    0x0000,     /* R15610 */
+    0x0000,     /* R15611 */
+    0x0000,     /* R15612 */
+    0x0000,     /* R15613 */
+    0x0000,     /* R15614 */
+    0x0000,     /* R15615 */
+    0x0000,     /* R15616 */
+    0x0000,     /* R15617 */
+    0x0000,     /* R15618 */
+    0x0000,     /* R15619 */
+    0x0000,     /* R15620 */
+    0x0000,     /* R15621 */
+    0x0000,     /* R15622 */
+    0x0000,     /* R15623 */
+    0x0000,     /* R15624 */
+    0x0000,     /* R15625 */
+    0x0000,     /* R15626 */
+    0x0000,     /* R15627 */
+    0x0000,     /* R15628 */
+    0x0000,     /* R15629 */
+    0x0000,     /* R15630 */
+    0x0000,     /* R15631 */
+    0x0000,     /* R15632 */
+    0x0000,     /* R15633 */
+    0x0000,     /* R15634 */
+    0x0000,     /* R15635 */
+    0x0000,     /* R15636 */
+    0x0000,     /* R15637 */
+    0x0000,     /* R15638 */
+    0x0000,     /* R15639 */
+    0x0000,     /* R15640 */
+    0x0000,     /* R15641 */
+    0x0000,     /* R15642 */
+    0x0000,     /* R15643 */
+    0x0000,     /* R15644 */
+    0x0000,     /* R15645 */
+    0x0000,     /* R15646 */
+    0x0000,     /* R15647 */
+    0x0000,     /* R15648 */
+    0x0000,     /* R15649 */
+    0x0000,     /* R15650 */
+    0x0000,     /* R15651 */
+    0x0000,     /* R15652 */
+    0x0000,     /* R15653 */
+    0x0000,     /* R15654 */
+    0x0000,     /* R15655 */
+    0x0000,     /* R15656 */
+    0x0000,     /* R15657 */
+    0x0000,     /* R15658 */
+    0x0000,     /* R15659 */
+    0x0000,     /* R15660 */
+    0x0000,     /* R15661 */
+    0x0000,     /* R15662 */
+    0x0000,     /* R15663 */
+    0x0000,     /* R15664 */
+    0x0000,     /* R15665 */
+    0x0000,     /* R15666 */
+    0x0000,     /* R15667 */
+    0x0000,     /* R15668 */
+    0x0000,     /* R15669 */
+    0x0000,     /* R15670 */
+    0x0000,     /* R15671 */
+    0x0000,     /* R15672 */
+    0x0000,     /* R15673 */
+    0x0000,     /* R15674 */
+    0x0000,     /* R15675 */
+    0x0000,     /* R15676 */
+    0x0000,     /* R15677 */
+    0x0000,     /* R15678 */
+    0x0000,     /* R15679 */
+    0x0000,     /* R15680 */
+    0x0000,     /* R15681 */
+    0x0000,     /* R15682 */
+    0x0000,     /* R15683 */
+    0x0000,     /* R15684 */
+    0x0000,     /* R15685 */
+    0x0000,     /* R15686 */
+    0x0000,     /* R15687 */
+    0x0000,     /* R15688 */
+    0x0000,     /* R15689 */
+    0x0000,     /* R15690 */
+    0x0000,     /* R15691 */
+    0x0000,     /* R15692 */
+    0x0000,     /* R15693 */
+    0x0000,     /* R15694 */
+    0x0000,     /* R15695 */
+    0x0000,     /* R15696 */
+    0x0000,     /* R15697 */
+    0x0000,     /* R15698 */
+    0x0000,     /* R15699 */
+    0x0000,     /* R15700 */
+    0x0000,     /* R15701 */
+    0x0000,     /* R15702 */
+    0x0000,     /* R15703 */
+    0x0000,     /* R15704 */
+    0x0000,     /* R15705 */
+    0x0000,     /* R15706 */
+    0x0000,     /* R15707 */
+    0x0000,     /* R15708 */
+    0x0000,     /* R15709 */
+    0x0000,     /* R15710 */
+    0x0000,     /* R15711 */
+    0x0000,     /* R15712 */
+    0x0000,     /* R15713 */
+    0x0000,     /* R15714 */
+    0x0000,     /* R15715 */
+    0x0000,     /* R15716 */
+    0x0000,     /* R15717 */
+    0x0000,     /* R15718 */
+    0x0000,     /* R15719 */
+    0x0000,     /* R15720 */
+    0x0000,     /* R15721 */
+    0x0000,     /* R15722 */
+    0x0000,     /* R15723 */
+    0x0000,     /* R15724 */
+    0x0000,     /* R15725 */
+    0x0000,     /* R15726 */
+    0x0000,     /* R15727 */
+    0x0000,     /* R15728 */
+    0x0000,     /* R15729 */
+    0x0000,     /* R15730 */
+    0x0000,     /* R15731 */
+    0x0000,     /* R15732 */
+    0x0000,     /* R15733 */
+    0x0000,     /* R15734 */
+    0x0000,     /* R15735 */
+    0x0000,     /* R15736 */
+    0x0000,     /* R15737 */
+    0x0000,     /* R15738 */
+    0x0000,     /* R15739 */
+    0x0000,     /* R15740 */
+    0x0000,     /* R15741 */
+    0x0000,     /* R15742 */
+    0x0000,     /* R15743 */
+    0x0000,     /* R15744 */
+    0x0000,     /* R15745 */
+    0x0000,     /* R15746 */
+    0x0000,     /* R15747 */
+    0x0000,     /* R15748 */
+    0x0000,     /* R15749 */
+    0x0000,     /* R15750 */
+    0x0000,     /* R15751 */
+    0x0000,     /* R15752 */
+    0x0000,     /* R15753 */
+    0x0000,     /* R15754 */
+    0x0000,     /* R15755 */
+    0x0000,     /* R15756 */
+    0x0000,     /* R15757 */
+    0x0000,     /* R15758 */
+    0x0000,     /* R15759 */
+    0x0000,     /* R15760 */
+    0x0000,     /* R15761 */
+    0x0000,     /* R15762 */
+    0x0000,     /* R15763 */
+    0x0000,     /* R15764 */
+    0x0000,     /* R15765 */
+    0x0000,     /* R15766 */
+    0x0000,     /* R15767 */
+    0x0000,     /* R15768 */
+    0x0000,     /* R15769 */
+    0x0000,     /* R15770 */
+    0x0000,     /* R15771 */
+    0x0000,     /* R15772 */
+    0x0000,     /* R15773 */
+    0x0000,     /* R15774 */
+    0x0000,     /* R15775 */
+    0x0000,     /* R15776 */
+    0x0000,     /* R15777 */
+    0x0000,     /* R15778 */
+    0x0000,     /* R15779 */
+    0x0000,     /* R15780 */
+    0x0000,     /* R15781 */
+    0x0000,     /* R15782 */
+    0x0000,     /* R15783 */
+    0x0000,     /* R15784 */
+    0x0000,     /* R15785 */
+    0x0000,     /* R15786 */
+    0x0000,     /* R15787 */
+    0x0000,     /* R15788 */
+    0x0000,     /* R15789 */
+    0x0000,     /* R15790 */
+    0x0000,     /* R15791 */
+    0x0000,     /* R15792 */
+    0x0000,     /* R15793 */
+    0x0000,     /* R15794 */
+    0x0000,     /* R15795 */
+    0x0000,     /* R15796 */
+    0x0000,     /* R15797 */
+    0x0000,     /* R15798 */
+    0x0000,     /* R15799 */
+    0x0000,     /* R15800 */
+    0x0000,     /* R15801 */
+    0x0000,     /* R15802 */
+    0x0000,     /* R15803 */
+    0x0000,     /* R15804 */
+    0x0000,     /* R15805 */
+    0x0000,     /* R15806 */
+    0x0000,     /* R15807 */
+    0x0000,     /* R15808 */
+    0x0000,     /* R15809 */
+    0x0000,     /* R15810 */
+    0x0000,     /* R15811 */
+    0x0000,     /* R15812 */
+    0x0000,     /* R15813 */
+    0x0000,     /* R15814 */
+    0x0000,     /* R15815 */
+    0x0000,     /* R15816 */
+    0x0000,     /* R15817 */
+    0x0000,     /* R15818 */
+    0x0000,     /* R15819 */
+    0x0000,     /* R15820 */
+    0x0000,     /* R15821 */
+    0x0000,     /* R15822 */
+    0x0000,     /* R15823 */
+    0x0000,     /* R15824 */
+    0x0000,     /* R15825 */
+    0x0000,     /* R15826 */
+    0x0000,     /* R15827 */
+    0x0000,     /* R15828 */
+    0x0000,     /* R15829 */
+    0x0000,     /* R15830 */
+    0x0000,     /* R15831 */
+    0x0000,     /* R15832 */
+    0x0000,     /* R15833 */
+    0x0000,     /* R15834 */
+    0x0000,     /* R15835 */
+    0x0000,     /* R15836 */
+    0x0000,     /* R15837 */
+    0x0000,     /* R15838 */
+    0x0000,     /* R15839 */
+    0x0000,     /* R15840 */
+    0x0000,     /* R15841 */
+    0x0000,     /* R15842 */
+    0x0000,     /* R15843 */
+    0x0000,     /* R15844 */
+    0x0000,     /* R15845 */
+    0x0000,     /* R15846 */
+    0x0000,     /* R15847 */
+    0x0000,     /* R15848 */
+    0x0000,     /* R15849 */
+    0x0000,     /* R15850 */
+    0x0000,     /* R15851 */
+    0x0000,     /* R15852 */
+    0x0000,     /* R15853 */
+    0x0000,     /* R15854 */
+    0x0000,     /* R15855 */
+    0x0000,     /* R15856 */
+    0x0000,     /* R15857 */
+    0x0000,     /* R15858 */
+    0x0000,     /* R15859 */
+    0x0000,     /* R15860 */
+    0x0000,     /* R15861 */
+    0x0000,     /* R15862 */
+    0x0000,     /* R15863 */
+    0x0000,     /* R15864 */
+    0x0000,     /* R15865 */
+    0x0000,     /* R15866 */
+    0x0000,     /* R15867 */
+    0x0000,     /* R15868 */
+    0x0000,     /* R15869 */
+    0x0000,     /* R15870 */
+    0x0000,     /* R15871 */
+    0x0000,     /* R15872 */
+    0x0000,     /* R15873 */
+    0x0000,     /* R15874 */
+    0x0000,     /* R15875 */
+    0x0000,     /* R15876 */
+    0x0000,     /* R15877 */
+    0x0000,     /* R15878 */
+    0x0000,     /* R15879 */
+    0x0000,     /* R15880 */
+    0x0000,     /* R15881 */
+    0x0000,     /* R15882 */
+    0x0000,     /* R15883 */
+    0x0000,     /* R15884 */
+    0x0000,     /* R15885 */
+    0x0000,     /* R15886 */
+    0x0000,     /* R15887 */
+    0x0000,     /* R15888 */
+    0x0000,     /* R15889 */
+    0x0000,     /* R15890 */
+    0x0000,     /* R15891 */
+    0x0000,     /* R15892 */
+    0x0000,     /* R15893 */
+    0x0000,     /* R15894 */
+    0x0000,     /* R15895 */
+    0x0000,     /* R15896 */
+    0x0000,     /* R15897 */
+    0x0000,     /* R15898 */
+    0x0000,     /* R15899 */
+    0x0000,     /* R15900 */
+    0x0000,     /* R15901 */
+    0x0000,     /* R15902 */
+    0x0000,     /* R15903 */
+    0x0000,     /* R15904 */
+    0x0000,     /* R15905 */
+    0x0000,     /* R15906 */
+    0x0000,     /* R15907 */
+    0x0000,     /* R15908 */
+    0x0000,     /* R15909 */
+    0x0000,     /* R15910 */
+    0x0000,     /* R15911 */
+    0x0000,     /* R15912 */
+    0x0000,     /* R15913 */
+    0x0000,     /* R15914 */
+    0x0000,     /* R15915 */
+    0x0000,     /* R15916 */
+    0x0000,     /* R15917 */
+    0x0000,     /* R15918 */
+    0x0000,     /* R15919 */
+    0x0000,     /* R15920 */
+    0x0000,     /* R15921 */
+    0x0000,     /* R15922 */
+    0x0000,     /* R15923 */
+    0x0000,     /* R15924 */
+    0x0000,     /* R15925 */
+    0x0000,     /* R15926 */
+    0x0000,     /* R15927 */
+    0x0000,     /* R15928 */
+    0x0000,     /* R15929 */
+    0x0000,     /* R15930 */
+    0x0000,     /* R15931 */
+    0x0000,     /* R15932 */
+    0x0000,     /* R15933 */
+    0x0000,     /* R15934 */
+    0x0000,     /* R15935 */
+    0x0000,     /* R15936 */
+    0x0000,     /* R15937 */
+    0x0000,     /* R15938 */
+    0x0000,     /* R15939 */
+    0x0000,     /* R15940 */
+    0x0000,     /* R15941 */
+    0x0000,     /* R15942 */
+    0x0000,     /* R15943 */
+    0x0000,     /* R15944 */
+    0x0000,     /* R15945 */
+    0x0000,     /* R15946 */
+    0x0000,     /* R15947 */
+    0x0000,     /* R15948 */
+    0x0000,     /* R15949 */
+    0x0000,     /* R15950 */
+    0x0000,     /* R15951 */
+    0x0000,     /* R15952 */
+    0x0000,     /* R15953 */
+    0x0000,     /* R15954 */
+    0x0000,     /* R15955 */
+    0x0000,     /* R15956 */
+    0x0000,     /* R15957 */
+    0x0000,     /* R15958 */
+    0x0000,     /* R15959 */
+    0x0000,     /* R15960 */
+    0x0000,     /* R15961 */
+    0x0000,     /* R15962 */
+    0x0000,     /* R15963 */
+    0x0000,     /* R15964 */
+    0x0000,     /* R15965 */
+    0x0000,     /* R15966 */
+    0x0000,     /* R15967 */
+    0x0000,     /* R15968 */
+    0x0000,     /* R15969 */
+    0x0000,     /* R15970 */
+    0x0000,     /* R15971 */
+    0x0000,     /* R15972 */
+    0x0000,     /* R15973 */
+    0x0000,     /* R15974 */
+    0x0000,     /* R15975 */
+    0x0000,     /* R15976 */
+    0x0000,     /* R15977 */
+    0x0000,     /* R15978 */
+    0x0000,     /* R15979 */
+    0x0000,     /* R15980 */
+    0x0000,     /* R15981 */
+    0x0000,     /* R15982 */
+    0x0000,     /* R15983 */
+    0x0000,     /* R15984 */
+    0x0000,     /* R15985 */
+    0x0000,     /* R15986 */
+    0x0000,     /* R15987 */
+    0x0000,     /* R15988 */
+    0x0000,     /* R15989 */
+    0x0000,     /* R15990 */
+    0x0000,     /* R15991 */
+    0x0000,     /* R15992 */
+    0x0000,     /* R15993 */
+    0x0000,     /* R15994 */
+    0x0000,     /* R15995 */
+    0x0000,     /* R15996 */
+    0x0000,     /* R15997 */
+    0x0000,     /* R15998 */
+    0x0000,     /* R15999 */
+    0x0000,     /* R16000 */
+    0x0000,     /* R16001 */
+    0x0000,     /* R16002 */
+    0x0000,     /* R16003 */
+    0x0000,     /* R16004 */
+    0x0000,     /* R16005 */
+    0x0000,     /* R16006 */
+    0x0000,     /* R16007 */
+    0x0000,     /* R16008 */
+    0x0000,     /* R16009 */
+    0x0000,     /* R16010 */
+    0x0000,     /* R16011 */
+    0x0000,     /* R16012 */
+    0x0000,     /* R16013 */
+    0x0000,     /* R16014 */
+    0x0000,     /* R16015 */
+    0x0000,     /* R16016 */
+    0x0000,     /* R16017 */
+    0x0000,     /* R16018 */
+    0x0000,     /* R16019 */
+    0x0000,     /* R16020 */
+    0x0000,     /* R16021 */
+    0x0000,     /* R16022 */
+    0x0000,     /* R16023 */
+    0x0000,     /* R16024 */
+    0x0000,     /* R16025 */
+    0x0000,     /* R16026 */
+    0x0000,     /* R16027 */
+    0x0000,     /* R16028 */
+    0x0000,     /* R16029 */
+    0x0000,     /* R16030 */
+    0x0000,     /* R16031 */
+    0x0000,     /* R16032 */
+    0x0000,     /* R16033 */
+    0x0000,     /* R16034 */
+    0x0000,     /* R16035 */
+    0x0000,     /* R16036 */
+    0x0000,     /* R16037 */
+    0x0000,     /* R16038 */
+    0x0000,     /* R16039 */
+    0x0000,     /* R16040 */
+    0x0000,     /* R16041 */
+    0x0000,     /* R16042 */
+    0x0000,     /* R16043 */
+    0x0000,     /* R16044 */
+    0x0000,     /* R16045 */
+    0x0000,     /* R16046 */
+    0x0000,     /* R16047 */
+    0x0000,     /* R16048 */
+    0x0000,     /* R16049 */
+    0x0000,     /* R16050 */
+    0x0000,     /* R16051 */
+    0x0000,     /* R16052 */
+    0x0000,     /* R16053 */
+    0x0000,     /* R16054 */
+    0x0000,     /* R16055 */
+    0x0000,     /* R16056 */
+    0x0000,     /* R16057 */
+    0x0000,     /* R16058 */
+    0x0000,     /* R16059 */
+    0x0000,     /* R16060 */
+    0x0000,     /* R16061 */
+    0x0000,     /* R16062 */
+    0x0000,     /* R16063 */
+    0x0000,     /* R16064 */
+    0x0000,     /* R16065 */
+    0x0000,     /* R16066 */
+    0x0000,     /* R16067 */
+    0x0000,     /* R16068 */
+    0x0000,     /* R16069 */
+    0x0000,     /* R16070 */
+    0x0000,     /* R16071 */
+    0x0000,     /* R16072 */
+    0x0000,     /* R16073 */
+    0x0000,     /* R16074 */
+    0x0000,     /* R16075 */
+    0x0000,     /* R16076 */
+    0x0000,     /* R16077 */
+    0x0000,     /* R16078 */
+    0x0000,     /* R16079 */
+    0x0000,     /* R16080 */
+    0x0000,     /* R16081 */
+    0x0000,     /* R16082 */
+    0x0000,     /* R16083 */
+    0x0000,     /* R16084 */
+    0x0000,     /* R16085 */
+    0x0000,     /* R16086 */
+    0x0000,     /* R16087 */
+    0x0000,     /* R16088 */
+    0x0000,     /* R16089 */
+    0x0000,     /* R16090 */
+    0x0000,     /* R16091 */
+    0x0000,     /* R16092 */
+    0x0000,     /* R16093 */
+    0x0000,     /* R16094 */
+    0x0000,     /* R16095 */
+    0x0000,     /* R16096 */
+    0x0000,     /* R16097 */
+    0x0000,     /* R16098 */
+    0x0000,     /* R16099 */
+    0x0000,     /* R16100 */
+    0x0000,     /* R16101 */
+    0x0000,     /* R16102 */
+    0x0000,     /* R16103 */
+    0x0000,     /* R16104 */
+    0x0000,     /* R16105 */
+    0x0000,     /* R16106 */
+    0x0000,     /* R16107 */
+    0x0000,     /* R16108 */
+    0x0000,     /* R16109 */
+    0x0000,     /* R16110 */
+    0x0000,     /* R16111 */
+    0x0000,     /* R16112 */
+    0x0000,     /* R16113 */
+    0x0000,     /* R16114 */
+    0x0000,     /* R16115 */
+    0x0000,     /* R16116 */
+    0x0000,     /* R16117 */
+    0x0000,     /* R16118 */
+    0x0000,     /* R16119 */
+    0x0000,     /* R16120 */
+    0x0000,     /* R16121 */
+    0x0000,     /* R16122 */
+    0x0000,     /* R16123 */
+    0x0000,     /* R16124 */
+    0x0000,     /* R16125 */
+    0x0000,     /* R16126 */
+    0x0000,     /* R16127 */
+    0x0000,     /* R16128 */
+    0x0000,     /* R16129 */
+    0x0000,     /* R16130 */
+    0x0000,     /* R16131 */
+    0x0000,     /* R16132 */
+    0x0000,     /* R16133 */
+    0x0000,     /* R16134 */
+    0x0000,     /* R16135 */
+    0x0000,     /* R16136 */
+    0x0000,     /* R16137 */
+    0x0000,     /* R16138 */
+    0x0000,     /* R16139 */
+    0x0000,     /* R16140 */
+    0x0000,     /* R16141 */
+    0x0000,     /* R16142 */
+    0x0000,     /* R16143 */
+    0x0000,     /* R16144 */
+    0x0000,     /* R16145 */
+    0x0000,     /* R16146 */
+    0x0000,     /* R16147 */
+    0x0000,     /* R16148 */
+    0x0000,     /* R16149 */
+    0x0000,     /* R16150 */
+    0x0000,     /* R16151 */
+    0x0000,     /* R16152 */
+    0x0000,     /* R16153 */
+    0x0000,     /* R16154 */
+    0x0000,     /* R16155 */
+    0x0000,     /* R16156 */
+    0x0000,     /* R16157 */
+    0x0000,     /* R16158 */
+    0x0000,     /* R16159 */
+    0x0000,     /* R16160 */
+    0x0000,     /* R16161 */
+    0x0000,     /* R16162 */
+    0x0000,     /* R16163 */
+    0x0000,     /* R16164 */
+    0x0000,     /* R16165 */
+    0x0000,     /* R16166 */
+    0x0000,     /* R16167 */
+    0x0000,     /* R16168 */
+    0x0000,     /* R16169 */
+    0x0000,     /* R16170 */
+    0x0000,     /* R16171 */
+    0x0000,     /* R16172 */
+    0x0000,     /* R16173 */
+    0x0000,     /* R16174 */
+    0x0000,     /* R16175 */
+    0x0000,     /* R16176 */
+    0x0000,     /* R16177 */
+    0x0000,     /* R16178 */
+    0x0000,     /* R16179 */
+    0x0000,     /* R16180 */
+    0x0000,     /* R16181 */
+    0x0000,     /* R16182 */
+    0x0000,     /* R16183 */
+    0x0000,     /* R16184 */
+    0x0000,     /* R16185 */
+    0x0000,     /* R16186 */
+    0x0000,     /* R16187 */
+    0x0000,     /* R16188 */
+    0x0000,     /* R16189 */
+    0x0000,     /* R16190 */
+    0x0000,     /* R16191 */
+    0x0000,     /* R16192 */
+    0x0000,     /* R16193 */
+    0x0000,     /* R16194 */
+    0x0000,     /* R16195 */
+    0x0000,     /* R16196 */
+    0x0000,     /* R16197 */
+    0x0000,     /* R16198 */
+    0x0000,     /* R16199 */
+    0x0000,     /* R16200 */
+    0x0000,     /* R16201 */
+    0x0000,     /* R16202 */
+    0x0000,     /* R16203 */
+    0x0000,     /* R16204 */
+    0x0000,     /* R16205 */
+    0x0000,     /* R16206 */
+    0x0000,     /* R16207 */
+    0x0000,     /* R16208 */
+    0x0000,     /* R16209 */
+    0x0000,     /* R16210 */
+    0x0000,     /* R16211 */
+    0x0000,     /* R16212 */
+    0x0000,     /* R16213 */
+    0x0000,     /* R16214 */
+    0x0000,     /* R16215 */
+    0x0000,     /* R16216 */
+    0x0000,     /* R16217 */
+    0x0000,     /* R16218 */
+    0x0000,     /* R16219 */
+    0x0000,     /* R16220 */
+    0x0000,     /* R16221 */
+    0x0000,     /* R16222 */
+    0x0000,     /* R16223 */
+    0x0000,     /* R16224 */
+    0x0000,     /* R16225 */
+    0x0000,     /* R16226 */
+    0x0000,     /* R16227 */
+    0x0000,     /* R16228 */
+    0x0000,     /* R16229 */
+    0x0000,     /* R16230 */
+    0x0000,     /* R16231 */
+    0x0000,     /* R16232 */
+    0x0000,     /* R16233 */
+    0x0000,     /* R16234 */
+    0x0000,     /* R16235 */
+    0x0000,     /* R16236 */
+    0x0000,     /* R16237 */
+    0x0000,     /* R16238 */
+    0x0000,     /* R16239 */
+    0x0000,     /* R16240 */
+    0x0000,     /* R16241 */
+    0x0000,     /* R16242 */
+    0x0000,     /* R16243 */
+    0x0000,     /* R16244 */
+    0x0000,     /* R16245 */
+    0x0000,     /* R16246 */
+    0x0000,     /* R16247 */
+    0x0000,     /* R16248 */
+    0x0000,     /* R16249 */
+    0x0000,     /* R16250 */
+    0x0000,     /* R16251 */
+    0x0000,     /* R16252 */
+    0x0000,     /* R16253 */
+    0x0000,     /* R16254 */
+    0x0000,     /* R16255 */
+    0x0000,     /* R16256 */
+    0x0000,     /* R16257 */
+    0x0000,     /* R16258 */
+    0x0000,     /* R16259 */
+    0x0000,     /* R16260 */
+    0x0000,     /* R16261 */
+    0x0000,     /* R16262 */
+    0x0000,     /* R16263 */
+    0x0000,     /* R16264 */
+    0x0000,     /* R16265 */
+    0x0000,     /* R16266 */
+    0x0000,     /* R16267 */
+    0x0000,     /* R16268 */
+    0x0000,     /* R16269 */
+    0x0000,     /* R16270 */
+    0x0000,     /* R16271 */
+    0x0000,     /* R16272 */
+    0x0000,     /* R16273 */
+    0x0000,     /* R16274 */
+    0x0000,     /* R16275 */
+    0x0000,     /* R16276 */
+    0x0000,     /* R16277 */
+    0x0000,     /* R16278 */
+    0x0000,     /* R16279 */
+    0x0000,     /* R16280 */
+    0x0000,     /* R16281 */
+    0x0000,     /* R16282 */
+    0x0000,     /* R16283 */
+    0x0000,     /* R16284 */
+    0x0000,     /* R16285 */
+    0x0000,     /* R16286 */
+    0x0000,     /* R16287 */
+    0x0000,     /* R16288 */
+    0x0000,     /* R16289 */
+    0x0000,     /* R16290 */
+    0x0000,     /* R16291 */
+    0x0000,     /* R16292 */
+    0x0000,     /* R16293 */
+    0x0000,     /* R16294 */
+    0x0000,     /* R16295 */
+    0x0000,     /* R16296 */
+    0x0000,     /* R16297 */
+    0x0000,     /* R16298 */
+    0x0000,     /* R16299 */
+    0x0000,     /* R16300 */
+    0x0000,     /* R16301 */
+    0x0000,     /* R16302 */
+    0x0000,     /* R16303 */
+    0x0000,     /* R16304 */
+    0x0000,     /* R16305 */
+    0x0000,     /* R16306 */
+    0x0000,     /* R16307 */
+    0x0000,     /* R16308 */
+    0x0000,     /* R16309 */
+    0x0000,     /* R16310 */
+    0x0000,     /* R16311 */
+    0x0000,     /* R16312 */
+    0x0000,     /* R16313 */
+    0x0000,     /* R16314 */
+    0x0000,     /* R16315 */
+    0x0000,     /* R16316 */
+    0x0000,     /* R16317 */
+    0x0000,     /* R16318 */
+    0x0000,     /* R16319 */
+    0x0000,     /* R16320 */
+    0x0000,     /* R16321 */
+    0x0000,     /* R16322 */
+    0x0000,     /* R16323 */
+    0x0000,     /* R16324 */
+    0x0000,     /* R16325 */
+    0x0000,     /* R16326 */
+    0x0000,     /* R16327 */
+    0x0000,     /* R16328 */
+    0x0000,     /* R16329 */
+    0x0000,     /* R16330 */
+    0x0000,     /* R16331 */
+    0x0000,     /* R16332 */
+    0x0000,     /* R16333 */
+    0x0000,     /* R16334 */
+    0x0000,     /* R16335 */
+    0x0000,     /* R16336 */
+    0x0000,     /* R16337 */
+    0x0000,     /* R16338 */
+    0x0000,     /* R16339 */
+    0x0000,     /* R16340 */
+    0x0000,     /* R16341 */
+    0x0000,     /* R16342 */
+    0x0000,     /* R16343 */
+    0x0000,     /* R16344 */
+    0x0000,     /* R16345 */
+    0x0000,     /* R16346 */
+    0x0000,     /* R16347 */
+    0x0000,     /* R16348 */
+    0x0000,     /* R16349 */
+    0x0000,     /* R16350 */
+    0x0000,     /* R16351 */
+    0x0000,     /* R16352 */
+    0x0000,     /* R16353 */
+    0x0000,     /* R16354 */
+    0x0000,     /* R16355 */
+    0x0000,     /* R16356 */
+    0x0000,     /* R16357 */
+    0x0000,     /* R16358 */
+    0x0000,     /* R16359 */
+    0x0000,     /* R16360 */
+    0x0000,     /* R16361 */
+    0x0000,     /* R16362 */
+    0x0000,     /* R16363 */
+    0x0000,     /* R16364 */
+    0x0000,     /* R16365 */
+    0x0000,     /* R16366 */
+    0x0000,     /* R16367 */
+    0x0000,     /* R16368 */
+    0x0000,     /* R16369 */
+    0x0000,     /* R16370 */
+    0x0000,     /* R16371 */
+    0x0000,     /* R16372 */
+    0x0000,     /* R16373 */
+    0x0000,     /* R16374 */
+    0x0000,     /* R16375 */
+    0x0000,     /* R16376 */
+    0x0000,     /* R16377 */
+    0x0000,     /* R16378 */
+    0x0000,     /* R16379 */
+    0x0000,     /* R16380 */
+    0x0000,     /* R16381 */
+    0x0000,     /* R16382 */
+    0x0000,     /* R16383 */
+    0x0000,     /* R16384 - RETUNEADC_SHARED_COEFF_1 */
+    0x0000,     /* R16385 - RETUNEADC_SHARED_COEFF_0 */
+    0x0000,     /* R16386 - RETUNEDAC_SHARED_COEFF_1 */
+    0x0000,     /* R16387 - RETUNEDAC_SHARED_COEFF_0 */
+    0x0000,     /* R16388 - SOUNDSTAGE_ENABLES_1 */
+    0x0000,     /* R16389 - SOUNDSTAGE_ENABLES_0 */
+    0x0000,     /* R16390 */
+    0x0000,     /* R16391 */
+    0x0000,     /* R16392 */
+    0x0000,     /* R16393 */
+    0x0000,     /* R16394 */
+    0x0000,     /* R16395 */
+    0x0000,     /* R16396 */
+    0x0000,     /* R16397 */
+    0x0000,     /* R16398 */
+    0x0000,     /* R16399 */
+    0x0000,     /* R16400 */
+    0x0000,     /* R16401 */
+    0x0000,     /* R16402 */
+    0x0000,     /* R16403 */
+    0x0000,     /* R16404 */
+    0x0000,     /* R16405 */
+    0x0000,     /* R16406 */
+    0x0000,     /* R16407 */
+    0x0000,     /* R16408 */
+    0x0000,     /* R16409 */
+    0x0000,     /* R16410 */
+    0x0000,     /* R16411 */
+    0x0000,     /* R16412 */
+    0x0000,     /* R16413 */
+    0x0000,     /* R16414 */
+    0x0000,     /* R16415 */
+    0x0000,     /* R16416 */
+    0x0000,     /* R16417 */
+    0x0000,     /* R16418 */
+    0x0000,     /* R16419 */
+    0x0000,     /* R16420 */
+    0x0000,     /* R16421 */
+    0x0000,     /* R16422 */
+    0x0000,     /* R16423 */
+    0x0000,     /* R16424 */
+    0x0000,     /* R16425 */
+    0x0000,     /* R16426 */
+    0x0000,     /* R16427 */
+    0x0000,     /* R16428 */
+    0x0000,     /* R16429 */
+    0x0000,     /* R16430 */
+    0x0000,     /* R16431 */
+    0x0000,     /* R16432 */
+    0x0000,     /* R16433 */
+    0x0000,     /* R16434 */
+    0x0000,     /* R16435 */
+    0x0000,     /* R16436 */
+    0x0000,     /* R16437 */
+    0x0000,     /* R16438 */
+    0x0000,     /* R16439 */
+    0x0000,     /* R16440 */
+    0x0000,     /* R16441 */
+    0x0000,     /* R16442 */
+    0x0000,     /* R16443 */
+    0x0000,     /* R16444 */
+    0x0000,     /* R16445 */
+    0x0000,     /* R16446 */
+    0x0000,     /* R16447 */
+    0x0000,     /* R16448 */
+    0x0000,     /* R16449 */
+    0x0000,     /* R16450 */
+    0x0000,     /* R16451 */
+    0x0000,     /* R16452 */
+    0x0000,     /* R16453 */
+    0x0000,     /* R16454 */
+    0x0000,     /* R16455 */
+    0x0000,     /* R16456 */
+    0x0000,     /* R16457 */
+    0x0000,     /* R16458 */
+    0x0000,     /* R16459 */
+    0x0000,     /* R16460 */
+    0x0000,     /* R16461 */
+    0x0000,     /* R16462 */
+    0x0000,     /* R16463 */
+    0x0000,     /* R16464 */
+    0x0000,     /* R16465 */
+    0x0000,     /* R16466 */
+    0x0000,     /* R16467 */
+    0x0000,     /* R16468 */
+    0x0000,     /* R16469 */
+    0x0000,     /* R16470 */
+    0x0000,     /* R16471 */
+    0x0000,     /* R16472 */
+    0x0000,     /* R16473 */
+    0x0000,     /* R16474 */
+    0x0000,     /* R16475 */
+    0x0000,     /* R16476 */
+    0x0000,     /* R16477 */
+    0x0000,     /* R16478 */
+    0x0000,     /* R16479 */
+    0x0000,     /* R16480 */
+    0x0000,     /* R16481 */
+    0x0000,     /* R16482 */
+    0x0000,     /* R16483 */
+    0x0000,     /* R16484 */
+    0x0000,     /* R16485 */
+    0x0000,     /* R16486 */
+    0x0000,     /* R16487 */
+    0x0000,     /* R16488 */
+    0x0000,     /* R16489 */
+    0x0000,     /* R16490 */
+    0x0000,     /* R16491 */
+    0x0000,     /* R16492 */
+    0x0000,     /* R16493 */
+    0x0000,     /* R16494 */
+    0x0000,     /* R16495 */
+    0x0000,     /* R16496 */
+    0x0000,     /* R16497 */
+    0x0000,     /* R16498 */
+    0x0000,     /* R16499 */
+    0x0000,     /* R16500 */
+    0x0000,     /* R16501 */
+    0x0000,     /* R16502 */
+    0x0000,     /* R16503 */
+    0x0000,     /* R16504 */
+    0x0000,     /* R16505 */
+    0x0000,     /* R16506 */
+    0x0000,     /* R16507 */
+    0x0000,     /* R16508 */
+    0x0000,     /* R16509 */
+    0x0000,     /* R16510 */
+    0x0000,     /* R16511 */
+    0x0000,     /* R16512 */
+    0x0000,     /* R16513 */
+    0x0000,     /* R16514 */
+    0x0000,     /* R16515 */
+    0x0000,     /* R16516 */
+    0x0000,     /* R16517 */
+    0x0000,     /* R16518 */
+    0x0000,     /* R16519 */
+    0x0000,     /* R16520 */
+    0x0000,     /* R16521 */
+    0x0000,     /* R16522 */
+    0x0000,     /* R16523 */
+    0x0000,     /* R16524 */
+    0x0000,     /* R16525 */
+    0x0000,     /* R16526 */
+    0x0000,     /* R16527 */
+    0x0000,     /* R16528 */
+    0x0000,     /* R16529 */
+    0x0000,     /* R16530 */
+    0x0000,     /* R16531 */
+    0x0000,     /* R16532 */
+    0x0000,     /* R16533 */
+    0x0000,     /* R16534 */
+    0x0000,     /* R16535 */
+    0x0000,     /* R16536 */
+    0x0000,     /* R16537 */
+    0x0000,     /* R16538 */
+    0x0000,     /* R16539 */
+    0x0000,     /* R16540 */
+    0x0000,     /* R16541 */
+    0x0000,     /* R16542 */
+    0x0000,     /* R16543 */
+    0x0000,     /* R16544 */
+    0x0000,     /* R16545 */
+    0x0000,     /* R16546 */
+    0x0000,     /* R16547 */
+    0x0000,     /* R16548 */
+    0x0000,     /* R16549 */
+    0x0000,     /* R16550 */
+    0x0000,     /* R16551 */
+    0x0000,     /* R16552 */
+    0x0000,     /* R16553 */
+    0x0000,     /* R16554 */
+    0x0000,     /* R16555 */
+    0x0000,     /* R16556 */
+    0x0000,     /* R16557 */
+    0x0000,     /* R16558 */
+    0x0000,     /* R16559 */
+    0x0000,     /* R16560 */
+    0x0000,     /* R16561 */
+    0x0000,     /* R16562 */
+    0x0000,     /* R16563 */
+    0x0000,     /* R16564 */
+    0x0000,     /* R16565 */
+    0x0000,     /* R16566 */
+    0x0000,     /* R16567 */
+    0x0000,     /* R16568 */
+    0x0000,     /* R16569 */
+    0x0000,     /* R16570 */
+    0x0000,     /* R16571 */
+    0x0000,     /* R16572 */
+    0x0000,     /* R16573 */
+    0x0000,     /* R16574 */
+    0x0000,     /* R16575 */
+    0x0000,     /* R16576 */
+    0x0000,     /* R16577 */
+    0x0000,     /* R16578 */
+    0x0000,     /* R16579 */
+    0x0000,     /* R16580 */
+    0x0000,     /* R16581 */
+    0x0000,     /* R16582 */
+    0x0000,     /* R16583 */
+    0x0000,     /* R16584 */
+    0x0000,     /* R16585 */
+    0x0000,     /* R16586 */
+    0x0000,     /* R16587 */
+    0x0000,     /* R16588 */
+    0x0000,     /* R16589 */
+    0x0000,     /* R16590 */
+    0x0000,     /* R16591 */
+    0x0000,     /* R16592 */
+    0x0000,     /* R16593 */
+    0x0000,     /* R16594 */
+    0x0000,     /* R16595 */
+    0x0000,     /* R16596 */
+    0x0000,     /* R16597 */
+    0x0000,     /* R16598 */
+    0x0000,     /* R16599 */
+    0x0000,     /* R16600 */
+    0x0000,     /* R16601 */
+    0x0000,     /* R16602 */
+    0x0000,     /* R16603 */
+    0x0000,     /* R16604 */
+    0x0000,     /* R16605 */
+    0x0000,     /* R16606 */
+    0x0000,     /* R16607 */
+    0x0000,     /* R16608 */
+    0x0000,     /* R16609 */
+    0x0000,     /* R16610 */
+    0x0000,     /* R16611 */
+    0x0000,     /* R16612 */
+    0x0000,     /* R16613 */
+    0x0000,     /* R16614 */
+    0x0000,     /* R16615 */
+    0x0000,     /* R16616 */
+    0x0000,     /* R16617 */
+    0x0000,     /* R16618 */
+    0x0000,     /* R16619 */
+    0x0000,     /* R16620 */
+    0x0000,     /* R16621 */
+    0x0000,     /* R16622 */
+    0x0000,     /* R16623 */
+    0x0000,     /* R16624 */
+    0x0000,     /* R16625 */
+    0x0000,     /* R16626 */
+    0x0000,     /* R16627 */
+    0x0000,     /* R16628 */
+    0x0000,     /* R16629 */
+    0x0000,     /* R16630 */
+    0x0000,     /* R16631 */
+    0x0000,     /* R16632 */
+    0x0000,     /* R16633 */
+    0x0000,     /* R16634 */
+    0x0000,     /* R16635 */
+    0x0000,     /* R16636 */
+    0x0000,     /* R16637 */
+    0x0000,     /* R16638 */
+    0x0000,     /* R16639 */
+    0x0000,     /* R16640 */
+    0x0000,     /* R16641 */
+    0x0000,     /* R16642 */
+    0x0000,     /* R16643 */
+    0x0000,     /* R16644 */
+    0x0000,     /* R16645 */
+    0x0000,     /* R16646 */
+    0x0000,     /* R16647 */
+    0x0000,     /* R16648 */
+    0x0000,     /* R16649 */
+    0x0000,     /* R16650 */
+    0x0000,     /* R16651 */
+    0x0000,     /* R16652 */
+    0x0000,     /* R16653 */
+    0x0000,     /* R16654 */
+    0x0000,     /* R16655 */
+    0x0000,     /* R16656 */
+    0x0000,     /* R16657 */
+    0x0000,     /* R16658 */
+    0x0000,     /* R16659 */
+    0x0000,     /* R16660 */
+    0x0000,     /* R16661 */
+    0x0000,     /* R16662 */
+    0x0000,     /* R16663 */
+    0x0000,     /* R16664 */
+    0x0000,     /* R16665 */
+    0x0000,     /* R16666 */
+    0x0000,     /* R16667 */
+    0x0000,     /* R16668 */
+    0x0000,     /* R16669 */
+    0x0000,     /* R16670 */
+    0x0000,     /* R16671 */
+    0x0000,     /* R16672 */
+    0x0000,     /* R16673 */
+    0x0000,     /* R16674 */
+    0x0000,     /* R16675 */
+    0x0000,     /* R16676 */
+    0x0000,     /* R16677 */
+    0x0000,     /* R16678 */
+    0x0000,     /* R16679 */
+    0x0000,     /* R16680 */
+    0x0000,     /* R16681 */
+    0x0000,     /* R16682 */
+    0x0000,     /* R16683 */
+    0x0000,     /* R16684 */
+    0x0000,     /* R16685 */
+    0x0000,     /* R16686 */
+    0x0000,     /* R16687 */
+    0x0000,     /* R16688 */
+    0x0000,     /* R16689 */
+    0x0000,     /* R16690 */
+    0x0000,     /* R16691 */
+    0x0000,     /* R16692 */
+    0x0000,     /* R16693 */
+    0x0000,     /* R16694 */
+    0x0000,     /* R16695 */
+    0x0000,     /* R16696 */
+    0x0000,     /* R16697 */
+    0x0000,     /* R16698 */
+    0x0000,     /* R16699 */
+    0x0000,     /* R16700 */
+    0x0000,     /* R16701 */
+    0x0000,     /* R16702 */
+    0x0000,     /* R16703 */
+    0x0000,     /* R16704 */
+    0x0000,     /* R16705 */
+    0x0000,     /* R16706 */
+    0x0000,     /* R16707 */
+    0x0000,     /* R16708 */
+    0x0000,     /* R16709 */
+    0x0000,     /* R16710 */
+    0x0000,     /* R16711 */
+    0x0000,     /* R16712 */
+    0x0000,     /* R16713 */
+    0x0000,     /* R16714 */
+    0x0000,     /* R16715 */
+    0x0000,     /* R16716 */
+    0x0000,     /* R16717 */
+    0x0000,     /* R16718 */
+    0x0000,     /* R16719 */
+    0x0000,     /* R16720 */
+    0x0000,     /* R16721 */
+    0x0000,     /* R16722 */
+    0x0000,     /* R16723 */
+    0x0000,     /* R16724 */
+    0x0000,     /* R16725 */
+    0x0000,     /* R16726 */
+    0x0000,     /* R16727 */
+    0x0000,     /* R16728 */
+    0x0000,     /* R16729 */
+    0x0000,     /* R16730 */
+    0x0000,     /* R16731 */
+    0x0000,     /* R16732 */
+    0x0000,     /* R16733 */
+    0x0000,     /* R16734 */
+    0x0000,     /* R16735 */
+    0x0000,     /* R16736 */
+    0x0000,     /* R16737 */
+    0x0000,     /* R16738 */
+    0x0000,     /* R16739 */
+    0x0000,     /* R16740 */
+    0x0000,     /* R16741 */
+    0x0000,     /* R16742 */
+    0x0000,     /* R16743 */
+    0x0000,     /* R16744 */
+    0x0000,     /* R16745 */
+    0x0000,     /* R16746 */
+    0x0000,     /* R16747 */
+    0x0000,     /* R16748 */
+    0x0000,     /* R16749 */
+    0x0000,     /* R16750 */
+    0x0000,     /* R16751 */
+    0x0000,     /* R16752 */
+    0x0000,     /* R16753 */
+    0x0000,     /* R16754 */
+    0x0000,     /* R16755 */
+    0x0000,     /* R16756 */
+    0x0000,     /* R16757 */
+    0x0000,     /* R16758 */
+    0x0000,     /* R16759 */
+    0x0000,     /* R16760 */
+    0x0000,     /* R16761 */
+    0x0000,     /* R16762 */
+    0x0000,     /* R16763 */
+    0x0000,     /* R16764 */
+    0x0000,     /* R16765 */
+    0x0000,     /* R16766 */
+    0x0000,     /* R16767 */
+    0x0000,     /* R16768 */
+    0x0000,     /* R16769 */
+    0x0000,     /* R16770 */
+    0x0000,     /* R16771 */
+    0x0000,     /* R16772 */
+    0x0000,     /* R16773 */
+    0x0000,     /* R16774 */
+    0x0000,     /* R16775 */
+    0x0000,     /* R16776 */
+    0x0000,     /* R16777 */
+    0x0000,     /* R16778 */
+    0x0000,     /* R16779 */
+    0x0000,     /* R16780 */
+    0x0000,     /* R16781 */
+    0x0000,     /* R16782 */
+    0x0000,     /* R16783 */
+    0x0000,     /* R16784 */
+    0x0000,     /* R16785 */
+    0x0000,     /* R16786 */
+    0x0000,     /* R16787 */
+    0x0000,     /* R16788 */
+    0x0000,     /* R16789 */
+    0x0000,     /* R16790 */
+    0x0000,     /* R16791 */
+    0x0000,     /* R16792 */
+    0x0000,     /* R16793 */
+    0x0000,     /* R16794 */
+    0x0000,     /* R16795 */
+    0x0000,     /* R16796 */
+    0x0000,     /* R16797 */
+    0x0000,     /* R16798 */
+    0x0000,     /* R16799 */
+    0x0000,     /* R16800 */
+    0x0000,     /* R16801 */
+    0x0000,     /* R16802 */
+    0x0000,     /* R16803 */
+    0x0000,     /* R16804 */
+    0x0000,     /* R16805 */
+    0x0000,     /* R16806 */
+    0x0000,     /* R16807 */
+    0x0000,     /* R16808 */
+    0x0000,     /* R16809 */
+    0x0000,     /* R16810 */
+    0x0000,     /* R16811 */
+    0x0000,     /* R16812 */
+    0x0000,     /* R16813 */
+    0x0000,     /* R16814 */
+    0x0000,     /* R16815 */
+    0x0000,     /* R16816 */
+    0x0000,     /* R16817 */
+    0x0000,     /* R16818 */
+    0x0000,     /* R16819 */
+    0x0000,     /* R16820 */
+    0x0000,     /* R16821 */
+    0x0000,     /* R16822 */
+    0x0000,     /* R16823 */
+    0x0000,     /* R16824 */
+    0x0000,     /* R16825 */
+    0x0000,     /* R16826 */
+    0x0000,     /* R16827 */
+    0x0000,     /* R16828 */
+    0x0000,     /* R16829 */
+    0x0000,     /* R16830 */
+    0x0000,     /* R16831 */
+    0x0000,     /* R16832 */
+    0x0000,     /* R16833 */
+    0x0000,     /* R16834 */
+    0x0000,     /* R16835 */
+    0x0000,     /* R16836 */
+    0x0000,     /* R16837 */
+    0x0000,     /* R16838 */
+    0x0000,     /* R16839 */
+    0x0000,     /* R16840 */
+    0x0000,     /* R16841 */
+    0x0000,     /* R16842 */
+    0x0000,     /* R16843 */
+    0x0000,     /* R16844 */
+    0x0000,     /* R16845 */
+    0x0000,     /* R16846 */
+    0x0000,     /* R16847 */
+    0x0000,     /* R16848 */
+    0x0000,     /* R16849 */
+    0x0000,     /* R16850 */
+    0x0000,     /* R16851 */
+    0x0000,     /* R16852 */
+    0x0000,     /* R16853 */
+    0x0000,     /* R16854 */
+    0x0000,     /* R16855 */
+    0x0000,     /* R16856 */
+    0x0000,     /* R16857 */
+    0x0000,     /* R16858 */
+    0x0000,     /* R16859 */
+    0x0000,     /* R16860 */
+    0x0000,     /* R16861 */
+    0x0000,     /* R16862 */
+    0x0000,     /* R16863 */
+    0x0000,     /* R16864 */
+    0x0000,     /* R16865 */
+    0x0000,     /* R16866 */
+    0x0000,     /* R16867 */
+    0x0000,     /* R16868 */
+    0x0000,     /* R16869 */
+    0x0000,     /* R16870 */
+    0x0000,     /* R16871 */
+    0x0000,     /* R16872 */
+    0x0000,     /* R16873 */
+    0x0000,     /* R16874 */
+    0x0000,     /* R16875 */
+    0x0000,     /* R16876 */
+    0x0000,     /* R16877 */
+    0x0000,     /* R16878 */
+    0x0000,     /* R16879 */
+    0x0000,     /* R16880 */
+    0x0000,     /* R16881 */
+    0x0000,     /* R16882 */
+    0x0000,     /* R16883 */
+    0x0000,     /* R16884 */
+    0x0000,     /* R16885 */
+    0x0000,     /* R16886 */
+    0x0000,     /* R16887 */
+    0x0000,     /* R16888 */
+    0x0000,     /* R16889 */
+    0x0000,     /* R16890 */
+    0x0000,     /* R16891 */
+    0x0000,     /* R16892 */
+    0x0000,     /* R16893 */
+    0x0000,     /* R16894 */
+    0x0000,     /* R16895 */
+    0x0002,     /* R16896 - HDBASS_AI_1 */
+    0xBD12,     /* R16897 - HDBASS_AI_0 */
+    0x007C,     /* R16898 - HDBASS_AR_1 */
+    0x586C,     /* R16899 - HDBASS_AR_0 */
+    0x0053,     /* R16900 - HDBASS_B_1 */
+    0x8121,     /* R16901 - HDBASS_B_0 */
+    0x003F,     /* R16902 - HDBASS_K_1 */
+    0x8BD8,     /* R16903 - HDBASS_K_0 */
+    0x0032,     /* R16904 - HDBASS_N1_1 */
+    0xF52D,     /* R16905 - HDBASS_N1_0 */
+    0x0065,     /* R16906 - HDBASS_N2_1 */
+    0xAC8C,     /* R16907 - HDBASS_N2_0 */
+    0x006B,     /* R16908 - HDBASS_N3_1 */
+    0xE087,     /* R16909 - HDBASS_N3_0 */
+    0x0072,     /* R16910 - HDBASS_N4_1 */
+    0x1483,     /* R16911 - HDBASS_N4_0 */
+    0x0072,     /* R16912 - HDBASS_N5_1 */
+    0x1483,     /* R16913 - HDBASS_N5_0 */
+    0x0043,     /* R16914 - HDBASS_X1_1 */
+    0x3525,     /* R16915 - HDBASS_X1_0 */
+    0x0006,     /* R16916 - HDBASS_X2_1 */
+    0x6A4A,     /* R16917 - HDBASS_X2_0 */
+    0x0043,     /* R16918 - HDBASS_X3_1 */
+    0x6079,     /* R16919 - HDBASS_X3_0 */
+    0x0008,     /* R16920 - HDBASS_ATK_1 */
+    0x0000,     /* R16921 - HDBASS_ATK_0 */
+    0x0001,     /* R16922 - HDBASS_DCY_1 */
+    0x0000,     /* R16923 - HDBASS_DCY_0 */
+    0x0059,     /* R16924 - HDBASS_PG_1 */
+    0x999A,     /* R16925 - HDBASS_PG_0 */
+    0x0000,     /* R16926 */
+    0x0000,     /* R16927 */
+    0x0000,     /* R16928 */
+    0x0000,     /* R16929 */
+    0x0000,     /* R16930 */
+    0x0000,     /* R16931 */
+    0x0000,     /* R16932 */
+    0x0000,     /* R16933 */
+    0x0000,     /* R16934 */
+    0x0000,     /* R16935 */
+    0x0000,     /* R16936 */
+    0x0000,     /* R16937 */
+    0x0000,     /* R16938 */
+    0x0000,     /* R16939 */
+    0x0000,     /* R16940 */
+    0x0000,     /* R16941 */
+    0x0000,     /* R16942 */
+    0x0000,     /* R16943 */
+    0x0000,     /* R16944 */
+    0x0000,     /* R16945 */
+    0x0000,     /* R16946 */
+    0x0000,     /* R16947 */
+    0x0000,     /* R16948 */
+    0x0000,     /* R16949 */
+    0x0000,     /* R16950 */
+    0x0000,     /* R16951 */
+    0x0000,     /* R16952 */
+    0x0000,     /* R16953 */
+    0x0000,     /* R16954 */
+    0x0000,     /* R16955 */
+    0x0000,     /* R16956 */
+    0x0000,     /* R16957 */
+    0x0000,     /* R16958 */
+    0x0000,     /* R16959 */
+    0x0000,     /* R16960 */
+    0x0000,     /* R16961 */
+    0x0000,     /* R16962 */
+    0x0000,     /* R16963 */
+    0x0000,     /* R16964 */
+    0x0000,     /* R16965 */
+    0x0000,     /* R16966 */
+    0x0000,     /* R16967 */
+    0x0000,     /* R16968 */
+    0x0000,     /* R16969 */
+    0x0000,     /* R16970 */
+    0x0000,     /* R16971 */
+    0x0000,     /* R16972 */
+    0x0000,     /* R16973 */
+    0x0000,     /* R16974 */
+    0x0000,     /* R16975 */
+    0x0000,     /* R16976 */
+    0x0000,     /* R16977 */
+    0x0000,     /* R16978 */
+    0x0000,     /* R16979 */
+    0x0000,     /* R16980 */
+    0x0000,     /* R16981 */
+    0x0000,     /* R16982 */
+    0x0000,     /* R16983 */
+    0x0000,     /* R16984 */
+    0x0000,     /* R16985 */
+    0x0000,     /* R16986 */
+    0x0000,     /* R16987 */
+    0x0000,     /* R16988 */
+    0x0000,     /* R16989 */
+    0x0000,     /* R16990 */
+    0x0000,     /* R16991 */
+    0x0000,     /* R16992 */
+    0x0000,     /* R16993 */
+    0x0000,     /* R16994 */
+    0x0000,     /* R16995 */
+    0x0000,     /* R16996 */
+    0x0000,     /* R16997 */
+    0x0000,     /* R16998 */
+    0x0000,     /* R16999 */
+    0x0000,     /* R17000 */
+    0x0000,     /* R17001 */
+    0x0000,     /* R17002 */
+    0x0000,     /* R17003 */
+    0x0000,     /* R17004 */
+    0x0000,     /* R17005 */
+    0x0000,     /* R17006 */
+    0x0000,     /* R17007 */
+    0x0000,     /* R17008 */
+    0x0000,     /* R17009 */
+    0x0000,     /* R17010 */
+    0x0000,     /* R17011 */
+    0x0000,     /* R17012 */
+    0x0000,     /* R17013 */
+    0x0000,     /* R17014 */
+    0x0000,     /* R17015 */
+    0x0000,     /* R17016 */
+    0x0000,     /* R17017 */
+    0x0000,     /* R17018 */
+    0x0000,     /* R17019 */
+    0x0000,     /* R17020 */
+    0x0000,     /* R17021 */
+    0x0000,     /* R17022 */
+    0x0000,     /* R17023 */
+    0x0000,     /* R17024 */
+    0x0000,     /* R17025 */
+    0x0000,     /* R17026 */
+    0x0000,     /* R17027 */
+    0x0000,     /* R17028 */
+    0x0000,     /* R17029 */
+    0x0000,     /* R17030 */
+    0x0000,     /* R17031 */
+    0x0000,     /* R17032 */
+    0x0000,     /* R17033 */
+    0x0000,     /* R17034 */
+    0x0000,     /* R17035 */
+    0x0000,     /* R17036 */
+    0x0000,     /* R17037 */
+    0x0000,     /* R17038 */
+    0x0000,     /* R17039 */
+    0x0000,     /* R17040 */
+    0x0000,     /* R17041 */
+    0x0000,     /* R17042 */
+    0x0000,     /* R17043 */
+    0x0000,     /* R17044 */
+    0x0000,     /* R17045 */
+    0x0000,     /* R17046 */
+    0x0000,     /* R17047 */
+    0x0000,     /* R17048 */
+    0x0000,     /* R17049 */
+    0x0000,     /* R17050 */
+    0x0000,     /* R17051 */
+    0x0000,     /* R17052 */
+    0x0000,     /* R17053 */
+    0x0000,     /* R17054 */
+    0x0000,     /* R17055 */
+    0x0000,     /* R17056 */
+    0x0000,     /* R17057 */
+    0x0000,     /* R17058 */
+    0x0000,     /* R17059 */
+    0x0000,     /* R17060 */
+    0x0000,     /* R17061 */
+    0x0000,     /* R17062 */
+    0x0000,     /* R17063 */
+    0x0000,     /* R17064 */
+    0x0000,     /* R17065 */
+    0x0000,     /* R17066 */
+    0x0000,     /* R17067 */
+    0x0000,     /* R17068 */
+    0x0000,     /* R17069 */
+    0x0000,     /* R17070 */
+    0x0000,     /* R17071 */
+    0x0000,     /* R17072 */
+    0x0000,     /* R17073 */
+    0x0000,     /* R17074 */
+    0x0000,     /* R17075 */
+    0x0000,     /* R17076 */
+    0x0000,     /* R17077 */
+    0x0000,     /* R17078 */
+    0x0000,     /* R17079 */
+    0x0000,     /* R17080 */
+    0x0000,     /* R17081 */
+    0x0000,     /* R17082 */
+    0x0000,     /* R17083 */
+    0x0000,     /* R17084 */
+    0x0000,     /* R17085 */
+    0x0000,     /* R17086 */
+    0x0000,     /* R17087 */
+    0x0000,     /* R17088 */
+    0x0000,     /* R17089 */
+    0x0000,     /* R17090 */
+    0x0000,     /* R17091 */
+    0x0000,     /* R17092 */
+    0x0000,     /* R17093 */
+    0x0000,     /* R17094 */
+    0x0000,     /* R17095 */
+    0x0000,     /* R17096 */
+    0x0000,     /* R17097 */
+    0x0000,     /* R17098 */
+    0x0000,     /* R17099 */
+    0x0000,     /* R17100 */
+    0x0000,     /* R17101 */
+    0x0000,     /* R17102 */
+    0x0000,     /* R17103 */
+    0x0000,     /* R17104 */
+    0x0000,     /* R17105 */
+    0x0000,     /* R17106 */
+    0x0000,     /* R17107 */
+    0x0000,     /* R17108 */
+    0x0000,     /* R17109 */
+    0x0000,     /* R17110 */
+    0x0000,     /* R17111 */
+    0x0000,     /* R17112 */
+    0x0000,     /* R17113 */
+    0x0000,     /* R17114 */
+    0x0000,     /* R17115 */
+    0x0000,     /* R17116 */
+    0x0000,     /* R17117 */
+    0x0000,     /* R17118 */
+    0x0000,     /* R17119 */
+    0x0000,     /* R17120 */
+    0x0000,     /* R17121 */
+    0x0000,     /* R17122 */
+    0x0000,     /* R17123 */
+    0x0000,     /* R17124 */
+    0x0000,     /* R17125 */
+    0x0000,     /* R17126 */
+    0x0000,     /* R17127 */
+    0x0000,     /* R17128 */
+    0x0000,     /* R17129 */
+    0x0000,     /* R17130 */
+    0x0000,     /* R17131 */
+    0x0000,     /* R17132 */
+    0x0000,     /* R17133 */
+    0x0000,     /* R17134 */
+    0x0000,     /* R17135 */
+    0x0000,     /* R17136 */
+    0x0000,     /* R17137 */
+    0x0000,     /* R17138 */
+    0x0000,     /* R17139 */
+    0x0000,     /* R17140 */
+    0x0000,     /* R17141 */
+    0x0000,     /* R17142 */
+    0x0000,     /* R17143 */
+    0x0000,     /* R17144 */
+    0x0000,     /* R17145 */
+    0x0000,     /* R17146 */
+    0x0000,     /* R17147 */
+    0x0000,     /* R17148 */
+    0x0000,     /* R17149 */
+    0x0000,     /* R17150 */
+    0x0000,     /* R17151 */
+    0x0000,     /* R17152 */
+    0x0000,     /* R17153 */
+    0x0000,     /* R17154 */
+    0x0000,     /* R17155 */
+    0x0000,     /* R17156 */
+    0x0000,     /* R17157 */
+    0x0000,     /* R17158 */
+    0x0000,     /* R17159 */
+    0x0000,     /* R17160 */
+    0x0000,     /* R17161 */
+    0x0000,     /* R17162 */
+    0x0000,     /* R17163 */
+    0x0000,     /* R17164 */
+    0x0000,     /* R17165 */
+    0x0000,     /* R17166 */
+    0x0000,     /* R17167 */
+    0x0000,     /* R17168 */
+    0x0000,     /* R17169 */
+    0x0000,     /* R17170 */
+    0x0000,     /* R17171 */
+    0x0000,     /* R17172 */
+    0x0000,     /* R17173 */
+    0x0000,     /* R17174 */
+    0x0000,     /* R17175 */
+    0x0000,     /* R17176 */
+    0x0000,     /* R17177 */
+    0x0000,     /* R17178 */
+    0x0000,     /* R17179 */
+    0x0000,     /* R17180 */
+    0x0000,     /* R17181 */
+    0x0000,     /* R17182 */
+    0x0000,     /* R17183 */
+    0x0000,     /* R17184 */
+    0x0000,     /* R17185 */
+    0x0000,     /* R17186 */
+    0x0000,     /* R17187 */
+    0x0000,     /* R17188 */
+    0x0000,     /* R17189 */
+    0x0000,     /* R17190 */
+    0x0000,     /* R17191 */
+    0x0000,     /* R17192 */
+    0x0000,     /* R17193 */
+    0x0000,     /* R17194 */
+    0x0000,     /* R17195 */
+    0x0000,     /* R17196 */
+    0x0000,     /* R17197 */
+    0x0000,     /* R17198 */
+    0x0000,     /* R17199 */
+    0x0000,     /* R17200 */
+    0x0000,     /* R17201 */
+    0x0000,     /* R17202 */
+    0x0000,     /* R17203 */
+    0x0000,     /* R17204 */
+    0x0000,     /* R17205 */
+    0x0000,     /* R17206 */
+    0x0000,     /* R17207 */
+    0x0000,     /* R17208 */
+    0x0000,     /* R17209 */
+    0x0000,     /* R17210 */
+    0x0000,     /* R17211 */
+    0x0000,     /* R17212 */
+    0x0000,     /* R17213 */
+    0x0000,     /* R17214 */
+    0x0000,     /* R17215 */
+    0x0000,     /* R17216 */
+    0x0000,     /* R17217 */
+    0x0000,     /* R17218 */
+    0x0000,     /* R17219 */
+    0x0000,     /* R17220 */
+    0x0000,     /* R17221 */
+    0x0000,     /* R17222 */
+    0x0000,     /* R17223 */
+    0x0000,     /* R17224 */
+    0x0000,     /* R17225 */
+    0x0000,     /* R17226 */
+    0x0000,     /* R17227 */
+    0x0000,     /* R17228 */
+    0x0000,     /* R17229 */
+    0x0000,     /* R17230 */
+    0x0000,     /* R17231 */
+    0x0000,     /* R17232 */
+    0x0000,     /* R17233 */
+    0x0000,     /* R17234 */
+    0x0000,     /* R17235 */
+    0x0000,     /* R17236 */
+    0x0000,     /* R17237 */
+    0x0000,     /* R17238 */
+    0x0000,     /* R17239 */
+    0x0000,     /* R17240 */
+    0x0000,     /* R17241 */
+    0x0000,     /* R17242 */
+    0x0000,     /* R17243 */
+    0x0000,     /* R17244 */
+    0x0000,     /* R17245 */
+    0x0000,     /* R17246 */
+    0x0000,     /* R17247 */
+    0x0000,     /* R17248 */
+    0x0000,     /* R17249 */
+    0x0000,     /* R17250 */
+    0x0000,     /* R17251 */
+    0x0000,     /* R17252 */
+    0x0000,     /* R17253 */
+    0x0000,     /* R17254 */
+    0x0000,     /* R17255 */
+    0x0000,     /* R17256 */
+    0x0000,     /* R17257 */
+    0x0000,     /* R17258 */
+    0x0000,     /* R17259 */
+    0x0000,     /* R17260 */
+    0x0000,     /* R17261 */
+    0x0000,     /* R17262 */
+    0x0000,     /* R17263 */
+    0x0000,     /* R17264 */
+    0x0000,     /* R17265 */
+    0x0000,     /* R17266 */
+    0x0000,     /* R17267 */
+    0x0000,     /* R17268 */
+    0x0000,     /* R17269 */
+    0x0000,     /* R17270 */
+    0x0000,     /* R17271 */
+    0x0000,     /* R17272 */
+    0x0000,     /* R17273 */
+    0x0000,     /* R17274 */
+    0x0000,     /* R17275 */
+    0x0000,     /* R17276 */
+    0x0000,     /* R17277 */
+    0x0000,     /* R17278 */
+    0x0000,     /* R17279 */
+    0x0000,     /* R17280 */
+    0x0000,     /* R17281 */
+    0x0000,     /* R17282 */
+    0x0000,     /* R17283 */
+    0x0000,     /* R17284 */
+    0x0000,     /* R17285 */
+    0x0000,     /* R17286 */
+    0x0000,     /* R17287 */
+    0x0000,     /* R17288 */
+    0x0000,     /* R17289 */
+    0x0000,     /* R17290 */
+    0x0000,     /* R17291 */
+    0x0000,     /* R17292 */
+    0x0000,     /* R17293 */
+    0x0000,     /* R17294 */
+    0x0000,     /* R17295 */
+    0x0000,     /* R17296 */
+    0x0000,     /* R17297 */
+    0x0000,     /* R17298 */
+    0x0000,     /* R17299 */
+    0x0000,     /* R17300 */
+    0x0000,     /* R17301 */
+    0x0000,     /* R17302 */
+    0x0000,     /* R17303 */
+    0x0000,     /* R17304 */
+    0x0000,     /* R17305 */
+    0x0000,     /* R17306 */
+    0x0000,     /* R17307 */
+    0x0000,     /* R17308 */
+    0x0000,     /* R17309 */
+    0x0000,     /* R17310 */
+    0x0000,     /* R17311 */
+    0x0000,     /* R17312 */
+    0x0000,     /* R17313 */
+    0x0000,     /* R17314 */
+    0x0000,     /* R17315 */
+    0x0000,     /* R17316 */
+    0x0000,     /* R17317 */
+    0x0000,     /* R17318 */
+    0x0000,     /* R17319 */
+    0x0000,     /* R17320 */
+    0x0000,     /* R17321 */
+    0x0000,     /* R17322 */
+    0x0000,     /* R17323 */
+    0x0000,     /* R17324 */
+    0x0000,     /* R17325 */
+    0x0000,     /* R17326 */
+    0x0000,     /* R17327 */
+    0x0000,     /* R17328 */
+    0x0000,     /* R17329 */
+    0x0000,     /* R17330 */
+    0x0000,     /* R17331 */
+    0x0000,     /* R17332 */
+    0x0000,     /* R17333 */
+    0x0000,     /* R17334 */
+    0x0000,     /* R17335 */
+    0x0000,     /* R17336 */
+    0x0000,     /* R17337 */
+    0x0000,     /* R17338 */
+    0x0000,     /* R17339 */
+    0x0000,     /* R17340 */
+    0x0000,     /* R17341 */
+    0x0000,     /* R17342 */
+    0x0000,     /* R17343 */
+    0x0000,     /* R17344 */
+    0x0000,     /* R17345 */
+    0x0000,     /* R17346 */
+    0x0000,     /* R17347 */
+    0x0000,     /* R17348 */
+    0x0000,     /* R17349 */
+    0x0000,     /* R17350 */
+    0x0000,     /* R17351 */
+    0x0000,     /* R17352 */
+    0x0000,     /* R17353 */
+    0x0000,     /* R17354 */
+    0x0000,     /* R17355 */
+    0x0000,     /* R17356 */
+    0x0000,     /* R17357 */
+    0x0000,     /* R17358 */
+    0x0000,     /* R17359 */
+    0x0000,     /* R17360 */
+    0x0000,     /* R17361 */
+    0x0000,     /* R17362 */
+    0x0000,     /* R17363 */
+    0x0000,     /* R17364 */
+    0x0000,     /* R17365 */
+    0x0000,     /* R17366 */
+    0x0000,     /* R17367 */
+    0x0000,     /* R17368 */
+    0x0000,     /* R17369 */
+    0x0000,     /* R17370 */
+    0x0000,     /* R17371 */
+    0x0000,     /* R17372 */
+    0x0000,     /* R17373 */
+    0x0000,     /* R17374 */
+    0x0000,     /* R17375 */
+    0x0000,     /* R17376 */
+    0x0000,     /* R17377 */
+    0x0000,     /* R17378 */
+    0x0000,     /* R17379 */
+    0x0000,     /* R17380 */
+    0x0000,     /* R17381 */
+    0x0000,     /* R17382 */
+    0x0000,     /* R17383 */
+    0x0000,     /* R17384 */
+    0x0000,     /* R17385 */
+    0x0000,     /* R17386 */
+    0x0000,     /* R17387 */
+    0x0000,     /* R17388 */
+    0x0000,     /* R17389 */
+    0x0000,     /* R17390 */
+    0x0000,     /* R17391 */
+    0x0000,     /* R17392 */
+    0x0000,     /* R17393 */
+    0x0000,     /* R17394 */
+    0x0000,     /* R17395 */
+    0x0000,     /* R17396 */
+    0x0000,     /* R17397 */
+    0x0000,     /* R17398 */
+    0x0000,     /* R17399 */
+    0x0000,     /* R17400 */
+    0x0000,     /* R17401 */
+    0x0000,     /* R17402 */
+    0x0000,     /* R17403 */
+    0x0000,     /* R17404 */
+    0x0000,     /* R17405 */
+    0x0000,     /* R17406 */
+    0x0000,     /* R17407 */
+    0x0083,     /* R17408 - HPF_C_1 */
+    0x98AD,     /* R17409 - HPF_C_0 */
+    0x0000,     /* R17410 */
+    0x0000,     /* R17411 */
+    0x0000,     /* R17412 */
+    0x0000,     /* R17413 */
+    0x0000,     /* R17414 */
+    0x0000,     /* R17415 */
+    0x0000,     /* R17416 */
+    0x0000,     /* R17417 */
+    0x0000,     /* R17418 */
+    0x0000,     /* R17419 */
+    0x0000,     /* R17420 */
+    0x0000,     /* R17421 */
+    0x0000,     /* R17422 */
+    0x0000,     /* R17423 */
+    0x0000,     /* R17424 */
+    0x0000,     /* R17425 */
+    0x0000,     /* R17426 */
+    0x0000,     /* R17427 */
+    0x0000,     /* R17428 */
+    0x0000,     /* R17429 */
+    0x0000,     /* R17430 */
+    0x0000,     /* R17431 */
+    0x0000,     /* R17432 */
+    0x0000,     /* R17433 */
+    0x0000,     /* R17434 */
+    0x0000,     /* R17435 */
+    0x0000,     /* R17436 */
+    0x0000,     /* R17437 */
+    0x0000,     /* R17438 */
+    0x0000,     /* R17439 */
+    0x0000,     /* R17440 */
+    0x0000,     /* R17441 */
+    0x0000,     /* R17442 */
+    0x0000,     /* R17443 */
+    0x0000,     /* R17444 */
+    0x0000,     /* R17445 */
+    0x0000,     /* R17446 */
+    0x0000,     /* R17447 */
+    0x0000,     /* R17448 */
+    0x0000,     /* R17449 */
+    0x0000,     /* R17450 */
+    0x0000,     /* R17451 */
+    0x0000,     /* R17452 */
+    0x0000,     /* R17453 */
+    0x0000,     /* R17454 */
+    0x0000,     /* R17455 */
+    0x0000,     /* R17456 */
+    0x0000,     /* R17457 */
+    0x0000,     /* R17458 */
+    0x0000,     /* R17459 */
+    0x0000,     /* R17460 */
+    0x0000,     /* R17461 */
+    0x0000,     /* R17462 */
+    0x0000,     /* R17463 */
+    0x0000,     /* R17464 */
+    0x0000,     /* R17465 */
+    0x0000,     /* R17466 */
+    0x0000,     /* R17467 */
+    0x0000,     /* R17468 */
+    0x0000,     /* R17469 */
+    0x0000,     /* R17470 */
+    0x0000,     /* R17471 */
+    0x0000,     /* R17472 */
+    0x0000,     /* R17473 */
+    0x0000,     /* R17474 */
+    0x0000,     /* R17475 */
+    0x0000,     /* R17476 */
+    0x0000,     /* R17477 */
+    0x0000,     /* R17478 */
+    0x0000,     /* R17479 */
+    0x0000,     /* R17480 */
+    0x0000,     /* R17481 */
+    0x0000,     /* R17482 */
+    0x0000,     /* R17483 */
+    0x0000,     /* R17484 */
+    0x0000,     /* R17485 */
+    0x0000,     /* R17486 */
+    0x0000,     /* R17487 */
+    0x0000,     /* R17488 */
+    0x0000,     /* R17489 */
+    0x0000,     /* R17490 */
+    0x0000,     /* R17491 */
+    0x0000,     /* R17492 */
+    0x0000,     /* R17493 */
+    0x0000,     /* R17494 */
+    0x0000,     /* R17495 */
+    0x0000,     /* R17496 */
+    0x0000,     /* R17497 */
+    0x0000,     /* R17498 */
+    0x0000,     /* R17499 */
+    0x0000,     /* R17500 */
+    0x0000,     /* R17501 */
+    0x0000,     /* R17502 */
+    0x0000,     /* R17503 */
+    0x0000,     /* R17504 */
+    0x0000,     /* R17505 */
+    0x0000,     /* R17506 */
+    0x0000,     /* R17507 */
+    0x0000,     /* R17508 */
+    0x0000,     /* R17509 */
+    0x0000,     /* R17510 */
+    0x0000,     /* R17511 */
+    0x0000,     /* R17512 */
+    0x0000,     /* R17513 */
+    0x0000,     /* R17514 */
+    0x0000,     /* R17515 */
+    0x0000,     /* R17516 */
+    0x0000,     /* R17517 */
+    0x0000,     /* R17518 */
+    0x0000,     /* R17519 */
+    0x0000,     /* R17520 */
+    0x0000,     /* R17521 */
+    0x0000,     /* R17522 */
+    0x0000,     /* R17523 */
+    0x0000,     /* R17524 */
+    0x0000,     /* R17525 */
+    0x0000,     /* R17526 */
+    0x0000,     /* R17527 */
+    0x0000,     /* R17528 */
+    0x0000,     /* R17529 */
+    0x0000,     /* R17530 */
+    0x0000,     /* R17531 */
+    0x0000,     /* R17532 */
+    0x0000,     /* R17533 */
+    0x0000,     /* R17534 */
+    0x0000,     /* R17535 */
+    0x0000,     /* R17536 */
+    0x0000,     /* R17537 */
+    0x0000,     /* R17538 */
+    0x0000,     /* R17539 */
+    0x0000,     /* R17540 */
+    0x0000,     /* R17541 */
+    0x0000,     /* R17542 */
+    0x0000,     /* R17543 */
+    0x0000,     /* R17544 */
+    0x0000,     /* R17545 */
+    0x0000,     /* R17546 */
+    0x0000,     /* R17547 */
+    0x0000,     /* R17548 */
+    0x0000,     /* R17549 */
+    0x0000,     /* R17550 */
+    0x0000,     /* R17551 */
+    0x0000,     /* R17552 */
+    0x0000,     /* R17553 */
+    0x0000,     /* R17554 */
+    0x0000,     /* R17555 */
+    0x0000,     /* R17556 */
+    0x0000,     /* R17557 */
+    0x0000,     /* R17558 */
+    0x0000,     /* R17559 */
+    0x0000,     /* R17560 */
+    0x0000,     /* R17561 */
+    0x0000,     /* R17562 */
+    0x0000,     /* R17563 */
+    0x0000,     /* R17564 */
+    0x0000,     /* R17565 */
+    0x0000,     /* R17566 */
+    0x0000,     /* R17567 */
+    0x0000,     /* R17568 */
+    0x0000,     /* R17569 */
+    0x0000,     /* R17570 */
+    0x0000,     /* R17571 */
+    0x0000,     /* R17572 */
+    0x0000,     /* R17573 */
+    0x0000,     /* R17574 */
+    0x0000,     /* R17575 */
+    0x0000,     /* R17576 */
+    0x0000,     /* R17577 */
+    0x0000,     /* R17578 */
+    0x0000,     /* R17579 */
+    0x0000,     /* R17580 */
+    0x0000,     /* R17581 */
+    0x0000,     /* R17582 */
+    0x0000,     /* R17583 */
+    0x0000,     /* R17584 */
+    0x0000,     /* R17585 */
+    0x0000,     /* R17586 */
+    0x0000,     /* R17587 */
+    0x0000,     /* R17588 */
+    0x0000,     /* R17589 */
+    0x0000,     /* R17590 */
+    0x0000,     /* R17591 */
+    0x0000,     /* R17592 */
+    0x0000,     /* R17593 */
+    0x0000,     /* R17594 */
+    0x0000,     /* R17595 */
+    0x0000,     /* R17596 */
+    0x0000,     /* R17597 */
+    0x0000,     /* R17598 */
+    0x0000,     /* R17599 */
+    0x0000,     /* R17600 */
+    0x0000,     /* R17601 */
+    0x0000,     /* R17602 */
+    0x0000,     /* R17603 */
+    0x0000,     /* R17604 */
+    0x0000,     /* R17605 */
+    0x0000,     /* R17606 */
+    0x0000,     /* R17607 */
+    0x0000,     /* R17608 */
+    0x0000,     /* R17609 */
+    0x0000,     /* R17610 */
+    0x0000,     /* R17611 */
+    0x0000,     /* R17612 */
+    0x0000,     /* R17613 */
+    0x0000,     /* R17614 */
+    0x0000,     /* R17615 */
+    0x0000,     /* R17616 */
+    0x0000,     /* R17617 */
+    0x0000,     /* R17618 */
+    0x0000,     /* R17619 */
+    0x0000,     /* R17620 */
+    0x0000,     /* R17621 */
+    0x0000,     /* R17622 */
+    0x0000,     /* R17623 */
+    0x0000,     /* R17624 */
+    0x0000,     /* R17625 */
+    0x0000,     /* R17626 */
+    0x0000,     /* R17627 */
+    0x0000,     /* R17628 */
+    0x0000,     /* R17629 */
+    0x0000,     /* R17630 */
+    0x0000,     /* R17631 */
+    0x0000,     /* R17632 */
+    0x0000,     /* R17633 */
+    0x0000,     /* R17634 */
+    0x0000,     /* R17635 */
+    0x0000,     /* R17636 */
+    0x0000,     /* R17637 */
+    0x0000,     /* R17638 */
+    0x0000,     /* R17639 */
+    0x0000,     /* R17640 */
+    0x0000,     /* R17641 */
+    0x0000,     /* R17642 */
+    0x0000,     /* R17643 */
+    0x0000,     /* R17644 */
+    0x0000,     /* R17645 */
+    0x0000,     /* R17646 */
+    0x0000,     /* R17647 */
+    0x0000,     /* R17648 */
+    0x0000,     /* R17649 */
+    0x0000,     /* R17650 */
+    0x0000,     /* R17651 */
+    0x0000,     /* R17652 */
+    0x0000,     /* R17653 */
+    0x0000,     /* R17654 */
+    0x0000,     /* R17655 */
+    0x0000,     /* R17656 */
+    0x0000,     /* R17657 */
+    0x0000,     /* R17658 */
+    0x0000,     /* R17659 */
+    0x0000,     /* R17660 */
+    0x0000,     /* R17661 */
+    0x0000,     /* R17662 */
+    0x0000,     /* R17663 */
+    0x0000,     /* R17664 */
+    0x0000,     /* R17665 */
+    0x0000,     /* R17666 */
+    0x0000,     /* R17667 */
+    0x0000,     /* R17668 */
+    0x0000,     /* R17669 */
+    0x0000,     /* R17670 */
+    0x0000,     /* R17671 */
+    0x0000,     /* R17672 */
+    0x0000,     /* R17673 */
+    0x0000,     /* R17674 */
+    0x0000,     /* R17675 */
+    0x0000,     /* R17676 */
+    0x0000,     /* R17677 */
+    0x0000,     /* R17678 */
+    0x0000,     /* R17679 */
+    0x0000,     /* R17680 */
+    0x0000,     /* R17681 */
+    0x0000,     /* R17682 */
+    0x0000,     /* R17683 */
+    0x0000,     /* R17684 */
+    0x0000,     /* R17685 */
+    0x0000,     /* R17686 */
+    0x0000,     /* R17687 */
+    0x0000,     /* R17688 */
+    0x0000,     /* R17689 */
+    0x0000,     /* R17690 */
+    0x0000,     /* R17691 */
+    0x0000,     /* R17692 */
+    0x0000,     /* R17693 */
+    0x0000,     /* R17694 */
+    0x0000,     /* R17695 */
+    0x0000,     /* R17696 */
+    0x0000,     /* R17697 */
+    0x0000,     /* R17698 */
+    0x0000,     /* R17699 */
+    0x0000,     /* R17700 */
+    0x0000,     /* R17701 */
+    0x0000,     /* R17702 */
+    0x0000,     /* R17703 */
+    0x0000,     /* R17704 */
+    0x0000,     /* R17705 */
+    0x0000,     /* R17706 */
+    0x0000,     /* R17707 */
+    0x0000,     /* R17708 */
+    0x0000,     /* R17709 */
+    0x0000,     /* R17710 */
+    0x0000,     /* R17711 */
+    0x0000,     /* R17712 */
+    0x0000,     /* R17713 */
+    0x0000,     /* R17714 */
+    0x0000,     /* R17715 */
+    0x0000,     /* R17716 */
+    0x0000,     /* R17717 */
+    0x0000,     /* R17718 */
+    0x0000,     /* R17719 */
+    0x0000,     /* R17720 */
+    0x0000,     /* R17721 */
+    0x0000,     /* R17722 */
+    0x0000,     /* R17723 */
+    0x0000,     /* R17724 */
+    0x0000,     /* R17725 */
+    0x0000,     /* R17726 */
+    0x0000,     /* R17727 */
+    0x0000,     /* R17728 */
+    0x0000,     /* R17729 */
+    0x0000,     /* R17730 */
+    0x0000,     /* R17731 */
+    0x0000,     /* R17732 */
+    0x0000,     /* R17733 */
+    0x0000,     /* R17734 */
+    0x0000,     /* R17735 */
+    0x0000,     /* R17736 */
+    0x0000,     /* R17737 */
+    0x0000,     /* R17738 */
+    0x0000,     /* R17739 */
+    0x0000,     /* R17740 */
+    0x0000,     /* R17741 */
+    0x0000,     /* R17742 */
+    0x0000,     /* R17743 */
+    0x0000,     /* R17744 */
+    0x0000,     /* R17745 */
+    0x0000,     /* R17746 */
+    0x0000,     /* R17747 */
+    0x0000,     /* R17748 */
+    0x0000,     /* R17749 */
+    0x0000,     /* R17750 */
+    0x0000,     /* R17751 */
+    0x0000,     /* R17752 */
+    0x0000,     /* R17753 */
+    0x0000,     /* R17754 */
+    0x0000,     /* R17755 */
+    0x0000,     /* R17756 */
+    0x0000,     /* R17757 */
+    0x0000,     /* R17758 */
+    0x0000,     /* R17759 */
+    0x0000,     /* R17760 */
+    0x0000,     /* R17761 */
+    0x0000,     /* R17762 */
+    0x0000,     /* R17763 */
+    0x0000,     /* R17764 */
+    0x0000,     /* R17765 */
+    0x0000,     /* R17766 */
+    0x0000,     /* R17767 */
+    0x0000,     /* R17768 */
+    0x0000,     /* R17769 */
+    0x0000,     /* R17770 */
+    0x0000,     /* R17771 */
+    0x0000,     /* R17772 */
+    0x0000,     /* R17773 */
+    0x0000,     /* R17774 */
+    0x0000,     /* R17775 */
+    0x0000,     /* R17776 */
+    0x0000,     /* R17777 */
+    0x0000,     /* R17778 */
+    0x0000,     /* R17779 */
+    0x0000,     /* R17780 */
+    0x0000,     /* R17781 */
+    0x0000,     /* R17782 */
+    0x0000,     /* R17783 */
+    0x0000,     /* R17784 */
+    0x0000,     /* R17785 */
+    0x0000,     /* R17786 */
+    0x0000,     /* R17787 */
+    0x0000,     /* R17788 */
+    0x0000,     /* R17789 */
+    0x0000,     /* R17790 */
+    0x0000,     /* R17791 */
+    0x0000,     /* R17792 */
+    0x0000,     /* R17793 */
+    0x0000,     /* R17794 */
+    0x0000,     /* R17795 */
+    0x0000,     /* R17796 */
+    0x0000,     /* R17797 */
+    0x0000,     /* R17798 */
+    0x0000,     /* R17799 */
+    0x0000,     /* R17800 */
+    0x0000,     /* R17801 */
+    0x0000,     /* R17802 */
+    0x0000,     /* R17803 */
+    0x0000,     /* R17804 */
+    0x0000,     /* R17805 */
+    0x0000,     /* R17806 */
+    0x0000,     /* R17807 */
+    0x0000,     /* R17808 */
+    0x0000,     /* R17809 */
+    0x0000,     /* R17810 */
+    0x0000,     /* R17811 */
+    0x0000,     /* R17812 */
+    0x0000,     /* R17813 */
+    0x0000,     /* R17814 */
+    0x0000,     /* R17815 */
+    0x0000,     /* R17816 */
+    0x0000,     /* R17817 */
+    0x0000,     /* R17818 */
+    0x0000,     /* R17819 */
+    0x0000,     /* R17820 */
+    0x0000,     /* R17821 */
+    0x0000,     /* R17822 */
+    0x0000,     /* R17823 */
+    0x0000,     /* R17824 */
+    0x0000,     /* R17825 */
+    0x0000,     /* R17826 */
+    0x0000,     /* R17827 */
+    0x0000,     /* R17828 */
+    0x0000,     /* R17829 */
+    0x0000,     /* R17830 */
+    0x0000,     /* R17831 */
+    0x0000,     /* R17832 */
+    0x0000,     /* R17833 */
+    0x0000,     /* R17834 */
+    0x0000,     /* R17835 */
+    0x0000,     /* R17836 */
+    0x0000,     /* R17837 */
+    0x0000,     /* R17838 */
+    0x0000,     /* R17839 */
+    0x0000,     /* R17840 */
+    0x0000,     /* R17841 */
+    0x0000,     /* R17842 */
+    0x0000,     /* R17843 */
+    0x0000,     /* R17844 */
+    0x0000,     /* R17845 */
+    0x0000,     /* R17846 */
+    0x0000,     /* R17847 */
+    0x0000,     /* R17848 */
+    0x0000,     /* R17849 */
+    0x0000,     /* R17850 */
+    0x0000,     /* R17851 */
+    0x0000,     /* R17852 */
+    0x0000,     /* R17853 */
+    0x0000,     /* R17854 */
+    0x0000,     /* R17855 */
+    0x0000,     /* R17856 */
+    0x0000,     /* R17857 */
+    0x0000,     /* R17858 */
+    0x0000,     /* R17859 */
+    0x0000,     /* R17860 */
+    0x0000,     /* R17861 */
+    0x0000,     /* R17862 */
+    0x0000,     /* R17863 */
+    0x0000,     /* R17864 */
+    0x0000,     /* R17865 */
+    0x0000,     /* R17866 */
+    0x0000,     /* R17867 */
+    0x0000,     /* R17868 */
+    0x0000,     /* R17869 */
+    0x0000,     /* R17870 */
+    0x0000,     /* R17871 */
+    0x0000,     /* R17872 */
+    0x0000,     /* R17873 */
+    0x0000,     /* R17874 */
+    0x0000,     /* R17875 */
+    0x0000,     /* R17876 */
+    0x0000,     /* R17877 */
+    0x0000,     /* R17878 */
+    0x0000,     /* R17879 */
+    0x0000,     /* R17880 */
+    0x0000,     /* R17881 */
+    0x0000,     /* R17882 */
+    0x0000,     /* R17883 */
+    0x0000,     /* R17884 */
+    0x0000,     /* R17885 */
+    0x0000,     /* R17886 */
+    0x0000,     /* R17887 */
+    0x0000,     /* R17888 */
+    0x0000,     /* R17889 */
+    0x0000,     /* R17890 */
+    0x0000,     /* R17891 */
+    0x0000,     /* R17892 */
+    0x0000,     /* R17893 */
+    0x0000,     /* R17894 */
+    0x0000,     /* R17895 */
+    0x0000,     /* R17896 */
+    0x0000,     /* R17897 */
+    0x0000,     /* R17898 */
+    0x0000,     /* R17899 */
+    0x0000,     /* R17900 */
+    0x0000,     /* R17901 */
+    0x0000,     /* R17902 */
+    0x0000,     /* R17903 */
+    0x0000,     /* R17904 */
+    0x0000,     /* R17905 */
+    0x0000,     /* R17906 */
+    0x0000,     /* R17907 */
+    0x0000,     /* R17908 */
+    0x0000,     /* R17909 */
+    0x0000,     /* R17910 */
+    0x0000,     /* R17911 */
+    0x0000,     /* R17912 */
+    0x0000,     /* R17913 */
+    0x0000,     /* R17914 */
+    0x0000,     /* R17915 */
+    0x0000,     /* R17916 */
+    0x0000,     /* R17917 */
+    0x0000,     /* R17918 */
+    0x0000,     /* R17919 */
+    0x007F,     /* R17920 - ADCL_RETUNE_C1_1 */
+    0xFFFF,     /* R17921 - ADCL_RETUNE_C1_0 */
+    0x0000,     /* R17922 - ADCL_RETUNE_C2_1 */
+    0x0000,     /* R17923 - ADCL_RETUNE_C2_0 */
+    0x0000,     /* R17924 - ADCL_RETUNE_C3_1 */
+    0x0000,     /* R17925 - ADCL_RETUNE_C3_0 */
+    0x0000,     /* R17926 - ADCL_RETUNE_C4_1 */
+    0x0000,     /* R17927 - ADCL_RETUNE_C4_0 */
+    0x0000,     /* R17928 - ADCL_RETUNE_C5_1 */
+    0x0000,     /* R17929 - ADCL_RETUNE_C5_0 */
+    0x0000,     /* R17930 - ADCL_RETUNE_C6_1 */
+    0x0000,     /* R17931 - ADCL_RETUNE_C6_0 */
+    0x0000,     /* R17932 - ADCL_RETUNE_C7_1 */
+    0x0000,     /* R17933 - ADCL_RETUNE_C7_0 */
+    0x0000,     /* R17934 - ADCL_RETUNE_C8_1 */
+    0x0000,     /* R17935 - ADCL_RETUNE_C8_0 */
+    0x0000,     /* R17936 - ADCL_RETUNE_C9_1 */
+    0x0000,     /* R17937 - ADCL_RETUNE_C9_0 */
+    0x0000,     /* R17938 - ADCL_RETUNE_C10_1 */
+    0x0000,     /* R17939 - ADCL_RETUNE_C10_0 */
+    0x0000,     /* R17940 - ADCL_RETUNE_C11_1 */
+    0x0000,     /* R17941 - ADCL_RETUNE_C11_0 */
+    0x0000,     /* R17942 - ADCL_RETUNE_C12_1 */
+    0x0000,     /* R17943 - ADCL_RETUNE_C12_0 */
+    0x0000,     /* R17944 - ADCL_RETUNE_C13_1 */
+    0x0000,     /* R17945 - ADCL_RETUNE_C13_0 */
+    0x0000,     /* R17946 - ADCL_RETUNE_C14_1 */
+    0x0000,     /* R17947 - ADCL_RETUNE_C14_0 */
+    0x0000,     /* R17948 - ADCL_RETUNE_C15_1 */
+    0x0000,     /* R17949 - ADCL_RETUNE_C15_0 */
+    0x0000,     /* R17950 - ADCL_RETUNE_C16_1 */
+    0x0000,     /* R17951 - ADCL_RETUNE_C16_0 */
+    0x0000,     /* R17952 - ADCL_RETUNE_C17_1 */
+    0x0000,     /* R17953 - ADCL_RETUNE_C17_0 */
+    0x0000,     /* R17954 - ADCL_RETUNE_C18_1 */
+    0x0000,     /* R17955 - ADCL_RETUNE_C18_0 */
+    0x0000,     /* R17956 - ADCL_RETUNE_C19_1 */
+    0x0000,     /* R17957 - ADCL_RETUNE_C19_0 */
+    0x0000,     /* R17958 - ADCL_RETUNE_C20_1 */
+    0x0000,     /* R17959 - ADCL_RETUNE_C20_0 */
+    0x0000,     /* R17960 - ADCL_RETUNE_C21_1 */
+    0x0000,     /* R17961 - ADCL_RETUNE_C21_0 */
+    0x0000,     /* R17962 - ADCL_RETUNE_C22_1 */
+    0x0000,     /* R17963 - ADCL_RETUNE_C22_0 */
+    0x0000,     /* R17964 - ADCL_RETUNE_C23_1 */
+    0x0000,     /* R17965 - ADCL_RETUNE_C23_0 */
+    0x0000,     /* R17966 - ADCL_RETUNE_C24_1 */
+    0x0000,     /* R17967 - ADCL_RETUNE_C24_0 */
+    0x0000,     /* R17968 - ADCL_RETUNE_C25_1 */
+    0x0000,     /* R17969 - ADCL_RETUNE_C25_0 */
+    0x0000,     /* R17970 - ADCL_RETUNE_C26_1 */
+    0x0000,     /* R17971 - ADCL_RETUNE_C26_0 */
+    0x0000,     /* R17972 - ADCL_RETUNE_C27_1 */
+    0x0000,     /* R17973 - ADCL_RETUNE_C27_0 */
+    0x0000,     /* R17974 - ADCL_RETUNE_C28_1 */
+    0x0000,     /* R17975 - ADCL_RETUNE_C28_0 */
+    0x0000,     /* R17976 - ADCL_RETUNE_C29_1 */
+    0x0000,     /* R17977 - ADCL_RETUNE_C29_0 */
+    0x0000,     /* R17978 - ADCL_RETUNE_C30_1 */
+    0x0000,     /* R17979 - ADCL_RETUNE_C30_0 */
+    0x0000,     /* R17980 - ADCL_RETUNE_C31_1 */
+    0x0000,     /* R17981 - ADCL_RETUNE_C31_0 */
+    0x0000,     /* R17982 - ADCL_RETUNE_C32_1 */
+    0x0000,     /* R17983 - ADCL_RETUNE_C32_0 */
+    0x0000,     /* R17984 */
+    0x0000,     /* R17985 */
+    0x0000,     /* R17986 */
+    0x0000,     /* R17987 */
+    0x0000,     /* R17988 */
+    0x0000,     /* R17989 */
+    0x0000,     /* R17990 */
+    0x0000,     /* R17991 */
+    0x0000,     /* R17992 */
+    0x0000,     /* R17993 */
+    0x0000,     /* R17994 */
+    0x0000,     /* R17995 */
+    0x0000,     /* R17996 */
+    0x0000,     /* R17997 */
+    0x0000,     /* R17998 */
+    0x0000,     /* R17999 */
+    0x0000,     /* R18000 */
+    0x0000,     /* R18001 */
+    0x0000,     /* R18002 */
+    0x0000,     /* R18003 */
+    0x0000,     /* R18004 */
+    0x0000,     /* R18005 */
+    0x0000,     /* R18006 */
+    0x0000,     /* R18007 */
+    0x0000,     /* R18008 */
+    0x0000,     /* R18009 */
+    0x0000,     /* R18010 */
+    0x0000,     /* R18011 */
+    0x0000,     /* R18012 */
+    0x0000,     /* R18013 */
+    0x0000,     /* R18014 */
+    0x0000,     /* R18015 */
+    0x0000,     /* R18016 */
+    0x0000,     /* R18017 */
+    0x0000,     /* R18018 */
+    0x0000,     /* R18019 */
+    0x0000,     /* R18020 */
+    0x0000,     /* R18021 */
+    0x0000,     /* R18022 */
+    0x0000,     /* R18023 */
+    0x0000,     /* R18024 */
+    0x0000,     /* R18025 */
+    0x0000,     /* R18026 */
+    0x0000,     /* R18027 */
+    0x0000,     /* R18028 */
+    0x0000,     /* R18029 */
+    0x0000,     /* R18030 */
+    0x0000,     /* R18031 */
+    0x0000,     /* R18032 */
+    0x0000,     /* R18033 */
+    0x0000,     /* R18034 */
+    0x0000,     /* R18035 */
+    0x0000,     /* R18036 */
+    0x0000,     /* R18037 */
+    0x0000,     /* R18038 */
+    0x0000,     /* R18039 */
+    0x0000,     /* R18040 */
+    0x0000,     /* R18041 */
+    0x0000,     /* R18042 */
+    0x0000,     /* R18043 */
+    0x0000,     /* R18044 */
+    0x0000,     /* R18045 */
+    0x0000,     /* R18046 */
+    0x0000,     /* R18047 */
+    0x0000,     /* R18048 */
+    0x0000,     /* R18049 */
+    0x0000,     /* R18050 */
+    0x0000,     /* R18051 */
+    0x0000,     /* R18052 */
+    0x0000,     /* R18053 */
+    0x0000,     /* R18054 */
+    0x0000,     /* R18055 */
+    0x0000,     /* R18056 */
+    0x0000,     /* R18057 */
+    0x0000,     /* R18058 */
+    0x0000,     /* R18059 */
+    0x0000,     /* R18060 */
+    0x0000,     /* R18061 */
+    0x0000,     /* R18062 */
+    0x0000,     /* R18063 */
+    0x0000,     /* R18064 */
+    0x0000,     /* R18065 */
+    0x0000,     /* R18066 */
+    0x0000,     /* R18067 */
+    0x0000,     /* R18068 */
+    0x0000,     /* R18069 */
+    0x0000,     /* R18070 */
+    0x0000,     /* R18071 */
+    0x0000,     /* R18072 */
+    0x0000,     /* R18073 */
+    0x0000,     /* R18074 */
+    0x0000,     /* R18075 */
+    0x0000,     /* R18076 */
+    0x0000,     /* R18077 */
+    0x0000,     /* R18078 */
+    0x0000,     /* R18079 */
+    0x0000,     /* R18080 */
+    0x0000,     /* R18081 */
+    0x0000,     /* R18082 */
+    0x0000,     /* R18083 */
+    0x0000,     /* R18084 */
+    0x0000,     /* R18085 */
+    0x0000,     /* R18086 */
+    0x0000,     /* R18087 */
+    0x0000,     /* R18088 */
+    0x0000,     /* R18089 */
+    0x0000,     /* R18090 */
+    0x0000,     /* R18091 */
+    0x0000,     /* R18092 */
+    0x0000,     /* R18093 */
+    0x0000,     /* R18094 */
+    0x0000,     /* R18095 */
+    0x0000,     /* R18096 */
+    0x0000,     /* R18097 */
+    0x0000,     /* R18098 */
+    0x0000,     /* R18099 */
+    0x0000,     /* R18100 */
+    0x0000,     /* R18101 */
+    0x0000,     /* R18102 */
+    0x0000,     /* R18103 */
+    0x0000,     /* R18104 */
+    0x0000,     /* R18105 */
+    0x0000,     /* R18106 */
+    0x0000,     /* R18107 */
+    0x0000,     /* R18108 */
+    0x0000,     /* R18109 */
+    0x0000,     /* R18110 */
+    0x0000,     /* R18111 */
+    0x0000,     /* R18112 */
+    0x0000,     /* R18113 */
+    0x0000,     /* R18114 */
+    0x0000,     /* R18115 */
+    0x0000,     /* R18116 */
+    0x0000,     /* R18117 */
+    0x0000,     /* R18118 */
+    0x0000,     /* R18119 */
+    0x0000,     /* R18120 */
+    0x0000,     /* R18121 */
+    0x0000,     /* R18122 */
+    0x0000,     /* R18123 */
+    0x0000,     /* R18124 */
+    0x0000,     /* R18125 */
+    0x0000,     /* R18126 */
+    0x0000,     /* R18127 */
+    0x0000,     /* R18128 */
+    0x0000,     /* R18129 */
+    0x0000,     /* R18130 */
+    0x0000,     /* R18131 */
+    0x0000,     /* R18132 */
+    0x0000,     /* R18133 */
+    0x0000,     /* R18134 */
+    0x0000,     /* R18135 */
+    0x0000,     /* R18136 */
+    0x0000,     /* R18137 */
+    0x0000,     /* R18138 */
+    0x0000,     /* R18139 */
+    0x0000,     /* R18140 */
+    0x0000,     /* R18141 */
+    0x0000,     /* R18142 */
+    0x0000,     /* R18143 */
+    0x0000,     /* R18144 */
+    0x0000,     /* R18145 */
+    0x0000,     /* R18146 */
+    0x0000,     /* R18147 */
+    0x0000,     /* R18148 */
+    0x0000,     /* R18149 */
+    0x0000,     /* R18150 */
+    0x0000,     /* R18151 */
+    0x0000,     /* R18152 */
+    0x0000,     /* R18153 */
+    0x0000,     /* R18154 */
+    0x0000,     /* R18155 */
+    0x0000,     /* R18156 */
+    0x0000,     /* R18157 */
+    0x0000,     /* R18158 */
+    0x0000,     /* R18159 */
+    0x0000,     /* R18160 */
+    0x0000,     /* R18161 */
+    0x0000,     /* R18162 */
+    0x0000,     /* R18163 */
+    0x0000,     /* R18164 */
+    0x0000,     /* R18165 */
+    0x0000,     /* R18166 */
+    0x0000,     /* R18167 */
+    0x0000,     /* R18168 */
+    0x0000,     /* R18169 */
+    0x0000,     /* R18170 */
+    0x0000,     /* R18171 */
+    0x0000,     /* R18172 */
+    0x0000,     /* R18173 */
+    0x0000,     /* R18174 */
+    0x0000,     /* R18175 */
+    0x0000,     /* R18176 */
+    0x0000,     /* R18177 */
+    0x0000,     /* R18178 */
+    0x0000,     /* R18179 */
+    0x0000,     /* R18180 */
+    0x0000,     /* R18181 */
+    0x0000,     /* R18182 */
+    0x0000,     /* R18183 */
+    0x0000,     /* R18184 */
+    0x0000,     /* R18185 */
+    0x0000,     /* R18186 */
+    0x0000,     /* R18187 */
+    0x0000,     /* R18188 */
+    0x0000,     /* R18189 */
+    0x0000,     /* R18190 */
+    0x0000,     /* R18191 */
+    0x0000,     /* R18192 */
+    0x0000,     /* R18193 */
+    0x0000,     /* R18194 */
+    0x0000,     /* R18195 */
+    0x0000,     /* R18196 */
+    0x0000,     /* R18197 */
+    0x0000,     /* R18198 */
+    0x0000,     /* R18199 */
+    0x0000,     /* R18200 */
+    0x0000,     /* R18201 */
+    0x0000,     /* R18202 */
+    0x0000,     /* R18203 */
+    0x0000,     /* R18204 */
+    0x0000,     /* R18205 */
+    0x0000,     /* R18206 */
+    0x0000,     /* R18207 */
+    0x0000,     /* R18208 */
+    0x0000,     /* R18209 */
+    0x0000,     /* R18210 */
+    0x0000,     /* R18211 */
+    0x0000,     /* R18212 */
+    0x0000,     /* R18213 */
+    0x0000,     /* R18214 */
+    0x0000,     /* R18215 */
+    0x0000,     /* R18216 */
+    0x0000,     /* R18217 */
+    0x0000,     /* R18218 */
+    0x0000,     /* R18219 */
+    0x0000,     /* R18220 */
+    0x0000,     /* R18221 */
+    0x0000,     /* R18222 */
+    0x0000,     /* R18223 */
+    0x0000,     /* R18224 */
+    0x0000,     /* R18225 */
+    0x0000,     /* R18226 */
+    0x0000,     /* R18227 */
+    0x0000,     /* R18228 */
+    0x0000,     /* R18229 */
+    0x0000,     /* R18230 */
+    0x0000,     /* R18231 */
+    0x0000,     /* R18232 */
+    0x0000,     /* R18233 */
+    0x0000,     /* R18234 */
+    0x0000,     /* R18235 */
+    0x0000,     /* R18236 */
+    0x0000,     /* R18237 */
+    0x0000,     /* R18238 */
+    0x0000,     /* R18239 */
+    0x0000,     /* R18240 */
+    0x0000,     /* R18241 */
+    0x0000,     /* R18242 */
+    0x0000,     /* R18243 */
+    0x0000,     /* R18244 */
+    0x0000,     /* R18245 */
+    0x0000,     /* R18246 */
+    0x0000,     /* R18247 */
+    0x0000,     /* R18248 */
+    0x0000,     /* R18249 */
+    0x0000,     /* R18250 */
+    0x0000,     /* R18251 */
+    0x0000,     /* R18252 */
+    0x0000,     /* R18253 */
+    0x0000,     /* R18254 */
+    0x0000,     /* R18255 */
+    0x0000,     /* R18256 */
+    0x0000,     /* R18257 */
+    0x0000,     /* R18258 */
+    0x0000,     /* R18259 */
+    0x0000,     /* R18260 */
+    0x0000,     /* R18261 */
+    0x0000,     /* R18262 */
+    0x0000,     /* R18263 */
+    0x0000,     /* R18264 */
+    0x0000,     /* R18265 */
+    0x0000,     /* R18266 */
+    0x0000,     /* R18267 */
+    0x0000,     /* R18268 */
+    0x0000,     /* R18269 */
+    0x0000,     /* R18270 */
+    0x0000,     /* R18271 */
+    0x0000,     /* R18272 */
+    0x0000,     /* R18273 */
+    0x0000,     /* R18274 */
+    0x0000,     /* R18275 */
+    0x0000,     /* R18276 */
+    0x0000,     /* R18277 */
+    0x0000,     /* R18278 */
+    0x0000,     /* R18279 */
+    0x0000,     /* R18280 */
+    0x0000,     /* R18281 */
+    0x0000,     /* R18282 */
+    0x0000,     /* R18283 */
+    0x0000,     /* R18284 */
+    0x0000,     /* R18285 */
+    0x0000,     /* R18286 */
+    0x0000,     /* R18287 */
+    0x0000,     /* R18288 */
+    0x0000,     /* R18289 */
+    0x0000,     /* R18290 */
+    0x0000,     /* R18291 */
+    0x0000,     /* R18292 */
+    0x0000,     /* R18293 */
+    0x0000,     /* R18294 */
+    0x0000,     /* R18295 */
+    0x0000,     /* R18296 */
+    0x0000,     /* R18297 */
+    0x0000,     /* R18298 */
+    0x0000,     /* R18299 */
+    0x0000,     /* R18300 */
+    0x0000,     /* R18301 */
+    0x0000,     /* R18302 */
+    0x0000,     /* R18303 */
+    0x0000,     /* R18304 */
+    0x0000,     /* R18305 */
+    0x0000,     /* R18306 */
+    0x0000,     /* R18307 */
+    0x0000,     /* R18308 */
+    0x0000,     /* R18309 */
+    0x0000,     /* R18310 */
+    0x0000,     /* R18311 */
+    0x0000,     /* R18312 */
+    0x0000,     /* R18313 */
+    0x0000,     /* R18314 */
+    0x0000,     /* R18315 */
+    0x0000,     /* R18316 */
+    0x0000,     /* R18317 */
+    0x0000,     /* R18318 */
+    0x0000,     /* R18319 */
+    0x0000,     /* R18320 */
+    0x0000,     /* R18321 */
+    0x0000,     /* R18322 */
+    0x0000,     /* R18323 */
+    0x0000,     /* R18324 */
+    0x0000,     /* R18325 */
+    0x0000,     /* R18326 */
+    0x0000,     /* R18327 */
+    0x0000,     /* R18328 */
+    0x0000,     /* R18329 */
+    0x0000,     /* R18330 */
+    0x0000,     /* R18331 */
+    0x0000,     /* R18332 */
+    0x0000,     /* R18333 */
+    0x0000,     /* R18334 */
+    0x0000,     /* R18335 */
+    0x0000,     /* R18336 */
+    0x0000,     /* R18337 */
+    0x0000,     /* R18338 */
+    0x0000,     /* R18339 */
+    0x0000,     /* R18340 */
+    0x0000,     /* R18341 */
+    0x0000,     /* R18342 */
+    0x0000,     /* R18343 */
+    0x0000,     /* R18344 */
+    0x0000,     /* R18345 */
+    0x0000,     /* R18346 */
+    0x0000,     /* R18347 */
+    0x0000,     /* R18348 */
+    0x0000,     /* R18349 */
+    0x0000,     /* R18350 */
+    0x0000,     /* R18351 */
+    0x0000,     /* R18352 */
+    0x0000,     /* R18353 */
+    0x0000,     /* R18354 */
+    0x0000,     /* R18355 */
+    0x0000,     /* R18356 */
+    0x0000,     /* R18357 */
+    0x0000,     /* R18358 */
+    0x0000,     /* R18359 */
+    0x0000,     /* R18360 */
+    0x0000,     /* R18361 */
+    0x0000,     /* R18362 */
+    0x0000,     /* R18363 */
+    0x0000,     /* R18364 */
+    0x0000,     /* R18365 */
+    0x0000,     /* R18366 */
+    0x0000,     /* R18367 */
+    0x0000,     /* R18368 */
+    0x0000,     /* R18369 */
+    0x0000,     /* R18370 */
+    0x0000,     /* R18371 */
+    0x0000,     /* R18372 */
+    0x0000,     /* R18373 */
+    0x0000,     /* R18374 */
+    0x0000,     /* R18375 */
+    0x0000,     /* R18376 */
+    0x0000,     /* R18377 */
+    0x0000,     /* R18378 */
+    0x0000,     /* R18379 */
+    0x0000,     /* R18380 */
+    0x0000,     /* R18381 */
+    0x0000,     /* R18382 */
+    0x0000,     /* R18383 */
+    0x0000,     /* R18384 */
+    0x0000,     /* R18385 */
+    0x0000,     /* R18386 */
+    0x0000,     /* R18387 */
+    0x0000,     /* R18388 */
+    0x0000,     /* R18389 */
+    0x0000,     /* R18390 */
+    0x0000,     /* R18391 */
+    0x0000,     /* R18392 */
+    0x0000,     /* R18393 */
+    0x0000,     /* R18394 */
+    0x0000,     /* R18395 */
+    0x0000,     /* R18396 */
+    0x0000,     /* R18397 */
+    0x0000,     /* R18398 */
+    0x0000,     /* R18399 */
+    0x0000,     /* R18400 */
+    0x0000,     /* R18401 */
+    0x0000,     /* R18402 */
+    0x0000,     /* R18403 */
+    0x0000,     /* R18404 */
+    0x0000,     /* R18405 */
+    0x0000,     /* R18406 */
+    0x0000,     /* R18407 */
+    0x0000,     /* R18408 */
+    0x0000,     /* R18409 */
+    0x0000,     /* R18410 */
+    0x0000,     /* R18411 */
+    0x0000,     /* R18412 */
+    0x0000,     /* R18413 */
+    0x0000,     /* R18414 */
+    0x0000,     /* R18415 */
+    0x0000,     /* R18416 */
+    0x0000,     /* R18417 */
+    0x0000,     /* R18418 */
+    0x0000,     /* R18419 */
+    0x0000,     /* R18420 */
+    0x0000,     /* R18421 */
+    0x0000,     /* R18422 */
+    0x0000,     /* R18423 */
+    0x0000,     /* R18424 */
+    0x0000,     /* R18425 */
+    0x0000,     /* R18426 */
+    0x0000,     /* R18427 */
+    0x0000,     /* R18428 */
+    0x0000,     /* R18429 */
+    0x0000,     /* R18430 */
+    0x0000,     /* R18431 */
+    0x0020,     /* R18432 - RETUNEADC_PG2_1 */
+    0x0000,     /* R18433 - RETUNEADC_PG2_0 */
+    0x0040,     /* R18434 - RETUNEADC_PG_1 */
+    0x0000,     /* R18435 - RETUNEADC_PG_0 */
+    0x0000,     /* R18436 */
+    0x0000,     /* R18437 */
+    0x0000,     /* R18438 */
+    0x0000,     /* R18439 */
+    0x0000,     /* R18440 */
+    0x0000,     /* R18441 */
+    0x0000,     /* R18442 */
+    0x0000,     /* R18443 */
+    0x0000,     /* R18444 */
+    0x0000,     /* R18445 */
+    0x0000,     /* R18446 */
+    0x0000,     /* R18447 */
+    0x0000,     /* R18448 */
+    0x0000,     /* R18449 */
+    0x0000,     /* R18450 */
+    0x0000,     /* R18451 */
+    0x0000,     /* R18452 */
+    0x0000,     /* R18453 */
+    0x0000,     /* R18454 */
+    0x0000,     /* R18455 */
+    0x0000,     /* R18456 */
+    0x0000,     /* R18457 */
+    0x0000,     /* R18458 */
+    0x0000,     /* R18459 */
+    0x0000,     /* R18460 */
+    0x0000,     /* R18461 */
+    0x0000,     /* R18462 */
+    0x0000,     /* R18463 */
+    0x0000,     /* R18464 */
+    0x0000,     /* R18465 */
+    0x0000,     /* R18466 */
+    0x0000,     /* R18467 */
+    0x0000,     /* R18468 */
+    0x0000,     /* R18469 */
+    0x0000,     /* R18470 */
+    0x0000,     /* R18471 */
+    0x0000,     /* R18472 */
+    0x0000,     /* R18473 */
+    0x0000,     /* R18474 */
+    0x0000,     /* R18475 */
+    0x0000,     /* R18476 */
+    0x0000,     /* R18477 */
+    0x0000,     /* R18478 */
+    0x0000,     /* R18479 */
+    0x0000,     /* R18480 */
+    0x0000,     /* R18481 */
+    0x0000,     /* R18482 */
+    0x0000,     /* R18483 */
+    0x0000,     /* R18484 */
+    0x0000,     /* R18485 */
+    0x0000,     /* R18486 */
+    0x0000,     /* R18487 */
+    0x0000,     /* R18488 */
+    0x0000,     /* R18489 */
+    0x0000,     /* R18490 */
+    0x0000,     /* R18491 */
+    0x0000,     /* R18492 */
+    0x0000,     /* R18493 */
+    0x0000,     /* R18494 */
+    0x0000,     /* R18495 */
+    0x0000,     /* R18496 */
+    0x0000,     /* R18497 */
+    0x0000,     /* R18498 */
+    0x0000,     /* R18499 */
+    0x0000,     /* R18500 */
+    0x0000,     /* R18501 */
+    0x0000,     /* R18502 */
+    0x0000,     /* R18503 */
+    0x0000,     /* R18504 */
+    0x0000,     /* R18505 */
+    0x0000,     /* R18506 */
+    0x0000,     /* R18507 */
+    0x0000,     /* R18508 */
+    0x0000,     /* R18509 */
+    0x0000,     /* R18510 */
+    0x0000,     /* R18511 */
+    0x0000,     /* R18512 */
+    0x0000,     /* R18513 */
+    0x0000,     /* R18514 */
+    0x0000,     /* R18515 */
+    0x0000,     /* R18516 */
+    0x0000,     /* R18517 */
+    0x0000,     /* R18518 */
+    0x0000,     /* R18519 */
+    0x0000,     /* R18520 */
+    0x0000,     /* R18521 */
+    0x0000,     /* R18522 */
+    0x0000,     /* R18523 */
+    0x0000,     /* R18524 */
+    0x0000,     /* R18525 */
+    0x0000,     /* R18526 */
+    0x0000,     /* R18527 */
+    0x0000,     /* R18528 */
+    0x0000,     /* R18529 */
+    0x0000,     /* R18530 */
+    0x0000,     /* R18531 */
+    0x0000,     /* R18532 */
+    0x0000,     /* R18533 */
+    0x0000,     /* R18534 */
+    0x0000,     /* R18535 */
+    0x0000,     /* R18536 */
+    0x0000,     /* R18537 */
+    0x0000,     /* R18538 */
+    0x0000,     /* R18539 */
+    0x0000,     /* R18540 */
+    0x0000,     /* R18541 */
+    0x0000,     /* R18542 */
+    0x0000,     /* R18543 */
+    0x0000,     /* R18544 */
+    0x0000,     /* R18545 */
+    0x0000,     /* R18546 */
+    0x0000,     /* R18547 */
+    0x0000,     /* R18548 */
+    0x0000,     /* R18549 */
+    0x0000,     /* R18550 */
+    0x0000,     /* R18551 */
+    0x0000,     /* R18552 */
+    0x0000,     /* R18553 */
+    0x0000,     /* R18554 */
+    0x0000,     /* R18555 */
+    0x0000,     /* R18556 */
+    0x0000,     /* R18557 */
+    0x0000,     /* R18558 */
+    0x0000,     /* R18559 */
+    0x0000,     /* R18560 */
+    0x0000,     /* R18561 */
+    0x0000,     /* R18562 */
+    0x0000,     /* R18563 */
+    0x0000,     /* R18564 */
+    0x0000,     /* R18565 */
+    0x0000,     /* R18566 */
+    0x0000,     /* R18567 */
+    0x0000,     /* R18568 */
+    0x0000,     /* R18569 */
+    0x0000,     /* R18570 */
+    0x0000,     /* R18571 */
+    0x0000,     /* R18572 */
+    0x0000,     /* R18573 */
+    0x0000,     /* R18574 */
+    0x0000,     /* R18575 */
+    0x0000,     /* R18576 */
+    0x0000,     /* R18577 */
+    0x0000,     /* R18578 */
+    0x0000,     /* R18579 */
+    0x0000,     /* R18580 */
+    0x0000,     /* R18581 */
+    0x0000,     /* R18582 */
+    0x0000,     /* R18583 */
+    0x0000,     /* R18584 */
+    0x0000,     /* R18585 */
+    0x0000,     /* R18586 */
+    0x0000,     /* R18587 */
+    0x0000,     /* R18588 */
+    0x0000,     /* R18589 */
+    0x0000,     /* R18590 */
+    0x0000,     /* R18591 */
+    0x0000,     /* R18592 */
+    0x0000,     /* R18593 */
+    0x0000,     /* R18594 */
+    0x0000,     /* R18595 */
+    0x0000,     /* R18596 */
+    0x0000,     /* R18597 */
+    0x0000,     /* R18598 */
+    0x0000,     /* R18599 */
+    0x0000,     /* R18600 */
+    0x0000,     /* R18601 */
+    0x0000,     /* R18602 */
+    0x0000,     /* R18603 */
+    0x0000,     /* R18604 */
+    0x0000,     /* R18605 */
+    0x0000,     /* R18606 */
+    0x0000,     /* R18607 */
+    0x0000,     /* R18608 */
+    0x0000,     /* R18609 */
+    0x0000,     /* R18610 */
+    0x0000,     /* R18611 */
+    0x0000,     /* R18612 */
+    0x0000,     /* R18613 */
+    0x0000,     /* R18614 */
+    0x0000,     /* R18615 */
+    0x0000,     /* R18616 */
+    0x0000,     /* R18617 */
+    0x0000,     /* R18618 */
+    0x0000,     /* R18619 */
+    0x0000,     /* R18620 */
+    0x0000,     /* R18621 */
+    0x0000,     /* R18622 */
+    0x0000,     /* R18623 */
+    0x0000,     /* R18624 */
+    0x0000,     /* R18625 */
+    0x0000,     /* R18626 */
+    0x0000,     /* R18627 */
+    0x0000,     /* R18628 */
+    0x0000,     /* R18629 */
+    0x0000,     /* R18630 */
+    0x0000,     /* R18631 */
+    0x0000,     /* R18632 */
+    0x0000,     /* R18633 */
+    0x0000,     /* R18634 */
+    0x0000,     /* R18635 */
+    0x0000,     /* R18636 */
+    0x0000,     /* R18637 */
+    0x0000,     /* R18638 */
+    0x0000,     /* R18639 */
+    0x0000,     /* R18640 */
+    0x0000,     /* R18641 */
+    0x0000,     /* R18642 */
+    0x0000,     /* R18643 */
+    0x0000,     /* R18644 */
+    0x0000,     /* R18645 */
+    0x0000,     /* R18646 */
+    0x0000,     /* R18647 */
+    0x0000,     /* R18648 */
+    0x0000,     /* R18649 */
+    0x0000,     /* R18650 */
+    0x0000,     /* R18651 */
+    0x0000,     /* R18652 */
+    0x0000,     /* R18653 */
+    0x0000,     /* R18654 */
+    0x0000,     /* R18655 */
+    0x0000,     /* R18656 */
+    0x0000,     /* R18657 */
+    0x0000,     /* R18658 */
+    0x0000,     /* R18659 */
+    0x0000,     /* R18660 */
+    0x0000,     /* R18661 */
+    0x0000,     /* R18662 */
+    0x0000,     /* R18663 */
+    0x0000,     /* R18664 */
+    0x0000,     /* R18665 */
+    0x0000,     /* R18666 */
+    0x0000,     /* R18667 */
+    0x0000,     /* R18668 */
+    0x0000,     /* R18669 */
+    0x0000,     /* R18670 */
+    0x0000,     /* R18671 */
+    0x0000,     /* R18672 */
+    0x0000,     /* R18673 */
+    0x0000,     /* R18674 */
+    0x0000,     /* R18675 */
+    0x0000,     /* R18676 */
+    0x0000,     /* R18677 */
+    0x0000,     /* R18678 */
+    0x0000,     /* R18679 */
+    0x0000,     /* R18680 */
+    0x0000,     /* R18681 */
+    0x0000,     /* R18682 */
+    0x0000,     /* R18683 */
+    0x0000,     /* R18684 */
+    0x0000,     /* R18685 */
+    0x0000,     /* R18686 */
+    0x0000,     /* R18687 */
+    0x0000,     /* R18688 */
+    0x0000,     /* R18689 */
+    0x0000,     /* R18690 */
+    0x0000,     /* R18691 */
+    0x0000,     /* R18692 */
+    0x0000,     /* R18693 */
+    0x0000,     /* R18694 */
+    0x0000,     /* R18695 */
+    0x0000,     /* R18696 */
+    0x0000,     /* R18697 */
+    0x0000,     /* R18698 */
+    0x0000,     /* R18699 */
+    0x0000,     /* R18700 */
+    0x0000,     /* R18701 */
+    0x0000,     /* R18702 */
+    0x0000,     /* R18703 */
+    0x0000,     /* R18704 */
+    0x0000,     /* R18705 */
+    0x0000,     /* R18706 */
+    0x0000,     /* R18707 */
+    0x0000,     /* R18708 */
+    0x0000,     /* R18709 */
+    0x0000,     /* R18710 */
+    0x0000,     /* R18711 */
+    0x0000,     /* R18712 */
+    0x0000,     /* R18713 */
+    0x0000,     /* R18714 */
+    0x0000,     /* R18715 */
+    0x0000,     /* R18716 */
+    0x0000,     /* R18717 */
+    0x0000,     /* R18718 */
+    0x0000,     /* R18719 */
+    0x0000,     /* R18720 */
+    0x0000,     /* R18721 */
+    0x0000,     /* R18722 */
+    0x0000,     /* R18723 */
+    0x0000,     /* R18724 */
+    0x0000,     /* R18725 */
+    0x0000,     /* R18726 */
+    0x0000,     /* R18727 */
+    0x0000,     /* R18728 */
+    0x0000,     /* R18729 */
+    0x0000,     /* R18730 */
+    0x0000,     /* R18731 */
+    0x0000,     /* R18732 */
+    0x0000,     /* R18733 */
+    0x0000,     /* R18734 */
+    0x0000,     /* R18735 */
+    0x0000,     /* R18736 */
+    0x0000,     /* R18737 */
+    0x0000,     /* R18738 */
+    0x0000,     /* R18739 */
+    0x0000,     /* R18740 */
+    0x0000,     /* R18741 */
+    0x0000,     /* R18742 */
+    0x0000,     /* R18743 */
+    0x0000,     /* R18744 */
+    0x0000,     /* R18745 */
+    0x0000,     /* R18746 */
+    0x0000,     /* R18747 */
+    0x0000,     /* R18748 */
+    0x0000,     /* R18749 */
+    0x0000,     /* R18750 */
+    0x0000,     /* R18751 */
+    0x0000,     /* R18752 */
+    0x0000,     /* R18753 */
+    0x0000,     /* R18754 */
+    0x0000,     /* R18755 */
+    0x0000,     /* R18756 */
+    0x0000,     /* R18757 */
+    0x0000,     /* R18758 */
+    0x0000,     /* R18759 */
+    0x0000,     /* R18760 */
+    0x0000,     /* R18761 */
+    0x0000,     /* R18762 */
+    0x0000,     /* R18763 */
+    0x0000,     /* R18764 */
+    0x0000,     /* R18765 */
+    0x0000,     /* R18766 */
+    0x0000,     /* R18767 */
+    0x0000,     /* R18768 */
+    0x0000,     /* R18769 */
+    0x0000,     /* R18770 */
+    0x0000,     /* R18771 */
+    0x0000,     /* R18772 */
+    0x0000,     /* R18773 */
+    0x0000,     /* R18774 */
+    0x0000,     /* R18775 */
+    0x0000,     /* R18776 */
+    0x0000,     /* R18777 */
+    0x0000,     /* R18778 */
+    0x0000,     /* R18779 */
+    0x0000,     /* R18780 */
+    0x0000,     /* R18781 */
+    0x0000,     /* R18782 */
+    0x0000,     /* R18783 */
+    0x0000,     /* R18784 */
+    0x0000,     /* R18785 */
+    0x0000,     /* R18786 */
+    0x0000,     /* R18787 */
+    0x0000,     /* R18788 */
+    0x0000,     /* R18789 */
+    0x0000,     /* R18790 */
+    0x0000,     /* R18791 */
+    0x0000,     /* R18792 */
+    0x0000,     /* R18793 */
+    0x0000,     /* R18794 */
+    0x0000,     /* R18795 */
+    0x0000,     /* R18796 */
+    0x0000,     /* R18797 */
+    0x0000,     /* R18798 */
+    0x0000,     /* R18799 */
+    0x0000,     /* R18800 */
+    0x0000,     /* R18801 */
+    0x0000,     /* R18802 */
+    0x0000,     /* R18803 */
+    0x0000,     /* R18804 */
+    0x0000,     /* R18805 */
+    0x0000,     /* R18806 */
+    0x0000,     /* R18807 */
+    0x0000,     /* R18808 */
+    0x0000,     /* R18809 */
+    0x0000,     /* R18810 */
+    0x0000,     /* R18811 */
+    0x0000,     /* R18812 */
+    0x0000,     /* R18813 */
+    0x0000,     /* R18814 */
+    0x0000,     /* R18815 */
+    0x0000,     /* R18816 */
+    0x0000,     /* R18817 */
+    0x0000,     /* R18818 */
+    0x0000,     /* R18819 */
+    0x0000,     /* R18820 */
+    0x0000,     /* R18821 */
+    0x0000,     /* R18822 */
+    0x0000,     /* R18823 */
+    0x0000,     /* R18824 */
+    0x0000,     /* R18825 */
+    0x0000,     /* R18826 */
+    0x0000,     /* R18827 */
+    0x0000,     /* R18828 */
+    0x0000,     /* R18829 */
+    0x0000,     /* R18830 */
+    0x0000,     /* R18831 */
+    0x0000,     /* R18832 */
+    0x0000,     /* R18833 */
+    0x0000,     /* R18834 */
+    0x0000,     /* R18835 */
+    0x0000,     /* R18836 */
+    0x0000,     /* R18837 */
+    0x0000,     /* R18838 */
+    0x0000,     /* R18839 */
+    0x0000,     /* R18840 */
+    0x0000,     /* R18841 */
+    0x0000,     /* R18842 */
+    0x0000,     /* R18843 */
+    0x0000,     /* R18844 */
+    0x0000,     /* R18845 */
+    0x0000,     /* R18846 */
+    0x0000,     /* R18847 */
+    0x0000,     /* R18848 */
+    0x0000,     /* R18849 */
+    0x0000,     /* R18850 */
+    0x0000,     /* R18851 */
+    0x0000,     /* R18852 */
+    0x0000,     /* R18853 */
+    0x0000,     /* R18854 */
+    0x0000,     /* R18855 */
+    0x0000,     /* R18856 */
+    0x0000,     /* R18857 */
+    0x0000,     /* R18858 */
+    0x0000,     /* R18859 */
+    0x0000,     /* R18860 */
+    0x0000,     /* R18861 */
+    0x0000,     /* R18862 */
+    0x0000,     /* R18863 */
+    0x0000,     /* R18864 */
+    0x0000,     /* R18865 */
+    0x0000,     /* R18866 */
+    0x0000,     /* R18867 */
+    0x0000,     /* R18868 */
+    0x0000,     /* R18869 */
+    0x0000,     /* R18870 */
+    0x0000,     /* R18871 */
+    0x0000,     /* R18872 */
+    0x0000,     /* R18873 */
+    0x0000,     /* R18874 */
+    0x0000,     /* R18875 */
+    0x0000,     /* R18876 */
+    0x0000,     /* R18877 */
+    0x0000,     /* R18878 */
+    0x0000,     /* R18879 */
+    0x0000,     /* R18880 */
+    0x0000,     /* R18881 */
+    0x0000,     /* R18882 */
+    0x0000,     /* R18883 */
+    0x0000,     /* R18884 */
+    0x0000,     /* R18885 */
+    0x0000,     /* R18886 */
+    0x0000,     /* R18887 */
+    0x0000,     /* R18888 */
+    0x0000,     /* R18889 */
+    0x0000,     /* R18890 */
+    0x0000,     /* R18891 */
+    0x0000,     /* R18892 */
+    0x0000,     /* R18893 */
+    0x0000,     /* R18894 */
+    0x0000,     /* R18895 */
+    0x0000,     /* R18896 */
+    0x0000,     /* R18897 */
+    0x0000,     /* R18898 */
+    0x0000,     /* R18899 */
+    0x0000,     /* R18900 */
+    0x0000,     /* R18901 */
+    0x0000,     /* R18902 */
+    0x0000,     /* R18903 */
+    0x0000,     /* R18904 */
+    0x0000,     /* R18905 */
+    0x0000,     /* R18906 */
+    0x0000,     /* R18907 */
+    0x0000,     /* R18908 */
+    0x0000,     /* R18909 */
+    0x0000,     /* R18910 */
+    0x0000,     /* R18911 */
+    0x0000,     /* R18912 */
+    0x0000,     /* R18913 */
+    0x0000,     /* R18914 */
+    0x0000,     /* R18915 */
+    0x0000,     /* R18916 */
+    0x0000,     /* R18917 */
+    0x0000,     /* R18918 */
+    0x0000,     /* R18919 */
+    0x0000,     /* R18920 */
+    0x0000,     /* R18921 */
+    0x0000,     /* R18922 */
+    0x0000,     /* R18923 */
+    0x0000,     /* R18924 */
+    0x0000,     /* R18925 */
+    0x0000,     /* R18926 */
+    0x0000,     /* R18927 */
+    0x0000,     /* R18928 */
+    0x0000,     /* R18929 */
+    0x0000,     /* R18930 */
+    0x0000,     /* R18931 */
+    0x0000,     /* R18932 */
+    0x0000,     /* R18933 */
+    0x0000,     /* R18934 */
+    0x0000,     /* R18935 */
+    0x0000,     /* R18936 */
+    0x0000,     /* R18937 */
+    0x0000,     /* R18938 */
+    0x0000,     /* R18939 */
+    0x0000,     /* R18940 */
+    0x0000,     /* R18941 */
+    0x0000,     /* R18942 */
+    0x0000,     /* R18943 */
+    0x007F,     /* R18944 - ADCR_RETUNE_C1_1 */
+    0xFFFF,     /* R18945 - ADCR_RETUNE_C1_0 */
+    0x0000,     /* R18946 - ADCR_RETUNE_C2_1 */
+    0x0000,     /* R18947 - ADCR_RETUNE_C2_0 */
+    0x0000,     /* R18948 - ADCR_RETUNE_C3_1 */
+    0x0000,     /* R18949 - ADCR_RETUNE_C3_0 */
+    0x0000,     /* R18950 - ADCR_RETUNE_C4_1 */
+    0x0000,     /* R18951 - ADCR_RETUNE_C4_0 */
+    0x0000,     /* R18952 - ADCR_RETUNE_C5_1 */
+    0x0000,     /* R18953 - ADCR_RETUNE_C5_0 */
+    0x0000,     /* R18954 - ADCR_RETUNE_C6_1 */
+    0x0000,     /* R18955 - ADCR_RETUNE_C6_0 */
+    0x0000,     /* R18956 - ADCR_RETUNE_C7_1 */
+    0x0000,     /* R18957 - ADCR_RETUNE_C7_0 */
+    0x0000,     /* R18958 - ADCR_RETUNE_C8_1 */
+    0x0000,     /* R18959 - ADCR_RETUNE_C8_0 */
+    0x0000,     /* R18960 - ADCR_RETUNE_C9_1 */
+    0x0000,     /* R18961 - ADCR_RETUNE_C9_0 */
+    0x0000,     /* R18962 - ADCR_RETUNE_C10_1 */
+    0x0000,     /* R18963 - ADCR_RETUNE_C10_0 */
+    0x0000,     /* R18964 - ADCR_RETUNE_C11_1 */
+    0x0000,     /* R18965 - ADCR_RETUNE_C11_0 */
+    0x0000,     /* R18966 - ADCR_RETUNE_C12_1 */
+    0x0000,     /* R18967 - ADCR_RETUNE_C12_0 */
+    0x0000,     /* R18968 - ADCR_RETUNE_C13_1 */
+    0x0000,     /* R18969 - ADCR_RETUNE_C13_0 */
+    0x0000,     /* R18970 - ADCR_RETUNE_C14_1 */
+    0x0000,     /* R18971 - ADCR_RETUNE_C14_0 */
+    0x0000,     /* R18972 - ADCR_RETUNE_C15_1 */
+    0x0000,     /* R18973 - ADCR_RETUNE_C15_0 */
+    0x0000,     /* R18974 - ADCR_RETUNE_C16_1 */
+    0x0000,     /* R18975 - ADCR_RETUNE_C16_0 */
+    0x0000,     /* R18976 - ADCR_RETUNE_C17_1 */
+    0x0000,     /* R18977 - ADCR_RETUNE_C17_0 */
+    0x0000,     /* R18978 - ADCR_RETUNE_C18_1 */
+    0x0000,     /* R18979 - ADCR_RETUNE_C18_0 */
+    0x0000,     /* R18980 - ADCR_RETUNE_C19_1 */
+    0x0000,     /* R18981 - ADCR_RETUNE_C19_0 */
+    0x0000,     /* R18982 - ADCR_RETUNE_C20_1 */
+    0x0000,     /* R18983 - ADCR_RETUNE_C20_0 */
+    0x0000,     /* R18984 - ADCR_RETUNE_C21_1 */
+    0x0000,     /* R18985 - ADCR_RETUNE_C21_0 */
+    0x0000,     /* R18986 - ADCR_RETUNE_C22_1 */
+    0x0000,     /* R18987 - ADCR_RETUNE_C22_0 */
+    0x0000,     /* R18988 - ADCR_RETUNE_C23_1 */
+    0x0000,     /* R18989 - ADCR_RETUNE_C23_0 */
+    0x0000,     /* R18990 - ADCR_RETUNE_C24_1 */
+    0x0000,     /* R18991 - ADCR_RETUNE_C24_0 */
+    0x0000,     /* R18992 - ADCR_RETUNE_C25_1 */
+    0x0000,     /* R18993 - ADCR_RETUNE_C25_0 */
+    0x0000,     /* R18994 - ADCR_RETUNE_C26_1 */
+    0x0000,     /* R18995 - ADCR_RETUNE_C26_0 */
+    0x0000,     /* R18996 - ADCR_RETUNE_C27_1 */
+    0x0000,     /* R18997 - ADCR_RETUNE_C27_0 */
+    0x0000,     /* R18998 - ADCR_RETUNE_C28_1 */
+    0x0000,     /* R18999 - ADCR_RETUNE_C28_0 */
+    0x0000,     /* R19000 - ADCR_RETUNE_C29_1 */
+    0x0000,     /* R19001 - ADCR_RETUNE_C29_0 */
+    0x0000,     /* R19002 - ADCR_RETUNE_C30_1 */
+    0x0000,     /* R19003 - ADCR_RETUNE_C30_0 */
+    0x0000,     /* R19004 - ADCR_RETUNE_C31_1 */
+    0x0000,     /* R19005 - ADCR_RETUNE_C31_0 */
+    0x0000,     /* R19006 - ADCR_RETUNE_C32_1 */
+    0x0000,     /* R19007 - ADCR_RETUNE_C32_0 */
+    0x0000,     /* R19008 */
+    0x0000,     /* R19009 */
+    0x0000,     /* R19010 */
+    0x0000,     /* R19011 */
+    0x0000,     /* R19012 */
+    0x0000,     /* R19013 */
+    0x0000,     /* R19014 */
+    0x0000,     /* R19015 */
+    0x0000,     /* R19016 */
+    0x0000,     /* R19017 */
+    0x0000,     /* R19018 */
+    0x0000,     /* R19019 */
+    0x0000,     /* R19020 */
+    0x0000,     /* R19021 */
+    0x0000,     /* R19022 */
+    0x0000,     /* R19023 */
+    0x0000,     /* R19024 */
+    0x0000,     /* R19025 */
+    0x0000,     /* R19026 */
+    0x0000,     /* R19027 */
+    0x0000,     /* R19028 */
+    0x0000,     /* R19029 */
+    0x0000,     /* R19030 */
+    0x0000,     /* R19031 */
+    0x0000,     /* R19032 */
+    0x0000,     /* R19033 */
+    0x0000,     /* R19034 */
+    0x0000,     /* R19035 */
+    0x0000,     /* R19036 */
+    0x0000,     /* R19037 */
+    0x0000,     /* R19038 */
+    0x0000,     /* R19039 */
+    0x0000,     /* R19040 */
+    0x0000,     /* R19041 */
+    0x0000,     /* R19042 */
+    0x0000,     /* R19043 */
+    0x0000,     /* R19044 */
+    0x0000,     /* R19045 */
+    0x0000,     /* R19046 */
+    0x0000,     /* R19047 */
+    0x0000,     /* R19048 */
+    0x0000,     /* R19049 */
+    0x0000,     /* R19050 */
+    0x0000,     /* R19051 */
+    0x0000,     /* R19052 */
+    0x0000,     /* R19053 */
+    0x0000,     /* R19054 */
+    0x0000,     /* R19055 */
+    0x0000,     /* R19056 */
+    0x0000,     /* R19057 */
+    0x0000,     /* R19058 */
+    0x0000,     /* R19059 */
+    0x0000,     /* R19060 */
+    0x0000,     /* R19061 */
+    0x0000,     /* R19062 */
+    0x0000,     /* R19063 */
+    0x0000,     /* R19064 */
+    0x0000,     /* R19065 */
+    0x0000,     /* R19066 */
+    0x0000,     /* R19067 */
+    0x0000,     /* R19068 */
+    0x0000,     /* R19069 */
+    0x0000,     /* R19070 */
+    0x0000,     /* R19071 */
+    0x0000,     /* R19072 */
+    0x0000,     /* R19073 */
+    0x0000,     /* R19074 */
+    0x0000,     /* R19075 */
+    0x0000,     /* R19076 */
+    0x0000,     /* R19077 */
+    0x0000,     /* R19078 */
+    0x0000,     /* R19079 */
+    0x0000,     /* R19080 */
+    0x0000,     /* R19081 */
+    0x0000,     /* R19082 */
+    0x0000,     /* R19083 */
+    0x0000,     /* R19084 */
+    0x0000,     /* R19085 */
+    0x0000,     /* R19086 */
+    0x0000,     /* R19087 */
+    0x0000,     /* R19088 */
+    0x0000,     /* R19089 */
+    0x0000,     /* R19090 */
+    0x0000,     /* R19091 */
+    0x0000,     /* R19092 */
+    0x0000,     /* R19093 */
+    0x0000,     /* R19094 */
+    0x0000,     /* R19095 */
+    0x0000,     /* R19096 */
+    0x0000,     /* R19097 */
+    0x0000,     /* R19098 */
+    0x0000,     /* R19099 */
+    0x0000,     /* R19100 */
+    0x0000,     /* R19101 */
+    0x0000,     /* R19102 */
+    0x0000,     /* R19103 */
+    0x0000,     /* R19104 */
+    0x0000,     /* R19105 */
+    0x0000,     /* R19106 */
+    0x0000,     /* R19107 */
+    0x0000,     /* R19108 */
+    0x0000,     /* R19109 */
+    0x0000,     /* R19110 */
+    0x0000,     /* R19111 */
+    0x0000,     /* R19112 */
+    0x0000,     /* R19113 */
+    0x0000,     /* R19114 */
+    0x0000,     /* R19115 */
+    0x0000,     /* R19116 */
+    0x0000,     /* R19117 */
+    0x0000,     /* R19118 */
+    0x0000,     /* R19119 */
+    0x0000,     /* R19120 */
+    0x0000,     /* R19121 */
+    0x0000,     /* R19122 */
+    0x0000,     /* R19123 */
+    0x0000,     /* R19124 */
+    0x0000,     /* R19125 */
+    0x0000,     /* R19126 */
+    0x0000,     /* R19127 */
+    0x0000,     /* R19128 */
+    0x0000,     /* R19129 */
+    0x0000,     /* R19130 */
+    0x0000,     /* R19131 */
+    0x0000,     /* R19132 */
+    0x0000,     /* R19133 */
+    0x0000,     /* R19134 */
+    0x0000,     /* R19135 */
+    0x0000,     /* R19136 */
+    0x0000,     /* R19137 */
+    0x0000,     /* R19138 */
+    0x0000,     /* R19139 */
+    0x0000,     /* R19140 */
+    0x0000,     /* R19141 */
+    0x0000,     /* R19142 */
+    0x0000,     /* R19143 */
+    0x0000,     /* R19144 */
+    0x0000,     /* R19145 */
+    0x0000,     /* R19146 */
+    0x0000,     /* R19147 */
+    0x0000,     /* R19148 */
+    0x0000,     /* R19149 */
+    0x0000,     /* R19150 */
+    0x0000,     /* R19151 */
+    0x0000,     /* R19152 */
+    0x0000,     /* R19153 */
+    0x0000,     /* R19154 */
+    0x0000,     /* R19155 */
+    0x0000,     /* R19156 */
+    0x0000,     /* R19157 */
+    0x0000,     /* R19158 */
+    0x0000,     /* R19159 */
+    0x0000,     /* R19160 */
+    0x0000,     /* R19161 */
+    0x0000,     /* R19162 */
+    0x0000,     /* R19163 */
+    0x0000,     /* R19164 */
+    0x0000,     /* R19165 */
+    0x0000,     /* R19166 */
+    0x0000,     /* R19167 */
+    0x0000,     /* R19168 */
+    0x0000,     /* R19169 */
+    0x0000,     /* R19170 */
+    0x0000,     /* R19171 */
+    0x0000,     /* R19172 */
+    0x0000,     /* R19173 */
+    0x0000,     /* R19174 */
+    0x0000,     /* R19175 */
+    0x0000,     /* R19176 */
+    0x0000,     /* R19177 */
+    0x0000,     /* R19178 */
+    0x0000,     /* R19179 */
+    0x0000,     /* R19180 */
+    0x0000,     /* R19181 */
+    0x0000,     /* R19182 */
+    0x0000,     /* R19183 */
+    0x0000,     /* R19184 */
+    0x0000,     /* R19185 */
+    0x0000,     /* R19186 */
+    0x0000,     /* R19187 */
+    0x0000,     /* R19188 */
+    0x0000,     /* R19189 */
+    0x0000,     /* R19190 */
+    0x0000,     /* R19191 */
+    0x0000,     /* R19192 */
+    0x0000,     /* R19193 */
+    0x0000,     /* R19194 */
+    0x0000,     /* R19195 */
+    0x0000,     /* R19196 */
+    0x0000,     /* R19197 */
+    0x0000,     /* R19198 */
+    0x0000,     /* R19199 */
+    0x0000,     /* R19200 */
+    0x0000,     /* R19201 */
+    0x0000,     /* R19202 */
+    0x0000,     /* R19203 */
+    0x0000,     /* R19204 */
+    0x0000,     /* R19205 */
+    0x0000,     /* R19206 */
+    0x0000,     /* R19207 */
+    0x0000,     /* R19208 */
+    0x0000,     /* R19209 */
+    0x0000,     /* R19210 */
+    0x0000,     /* R19211 */
+    0x0000,     /* R19212 */
+    0x0000,     /* R19213 */
+    0x0000,     /* R19214 */
+    0x0000,     /* R19215 */
+    0x0000,     /* R19216 */
+    0x0000,     /* R19217 */
+    0x0000,     /* R19218 */
+    0x0000,     /* R19219 */
+    0x0000,     /* R19220 */
+    0x0000,     /* R19221 */
+    0x0000,     /* R19222 */
+    0x0000,     /* R19223 */
+    0x0000,     /* R19224 */
+    0x0000,     /* R19225 */
+    0x0000,     /* R19226 */
+    0x0000,     /* R19227 */
+    0x0000,     /* R19228 */
+    0x0000,     /* R19229 */
+    0x0000,     /* R19230 */
+    0x0000,     /* R19231 */
+    0x0000,     /* R19232 */
+    0x0000,     /* R19233 */
+    0x0000,     /* R19234 */
+    0x0000,     /* R19235 */
+    0x0000,     /* R19236 */
+    0x0000,     /* R19237 */
+    0x0000,     /* R19238 */
+    0x0000,     /* R19239 */
+    0x0000,     /* R19240 */
+    0x0000,     /* R19241 */
+    0x0000,     /* R19242 */
+    0x0000,     /* R19243 */
+    0x0000,     /* R19244 */
+    0x0000,     /* R19245 */
+    0x0000,     /* R19246 */
+    0x0000,     /* R19247 */
+    0x0000,     /* R19248 */
+    0x0000,     /* R19249 */
+    0x0000,     /* R19250 */
+    0x0000,     /* R19251 */
+    0x0000,     /* R19252 */
+    0x0000,     /* R19253 */
+    0x0000,     /* R19254 */
+    0x0000,     /* R19255 */
+    0x0000,     /* R19256 */
+    0x0000,     /* R19257 */
+    0x0000,     /* R19258 */
+    0x0000,     /* R19259 */
+    0x0000,     /* R19260 */
+    0x0000,     /* R19261 */
+    0x0000,     /* R19262 */
+    0x0000,     /* R19263 */
+    0x0000,     /* R19264 */
+    0x0000,     /* R19265 */
+    0x0000,     /* R19266 */
+    0x0000,     /* R19267 */
+    0x0000,     /* R19268 */
+    0x0000,     /* R19269 */
+    0x0000,     /* R19270 */
+    0x0000,     /* R19271 */
+    0x0000,     /* R19272 */
+    0x0000,     /* R19273 */
+    0x0000,     /* R19274 */
+    0x0000,     /* R19275 */
+    0x0000,     /* R19276 */
+    0x0000,     /* R19277 */
+    0x0000,     /* R19278 */
+    0x0000,     /* R19279 */
+    0x0000,     /* R19280 */
+    0x0000,     /* R19281 */
+    0x0000,     /* R19282 */
+    0x0000,     /* R19283 */
+    0x0000,     /* R19284 */
+    0x0000,     /* R19285 */
+    0x0000,     /* R19286 */
+    0x0000,     /* R19287 */
+    0x0000,     /* R19288 */
+    0x0000,     /* R19289 */
+    0x0000,     /* R19290 */
+    0x0000,     /* R19291 */
+    0x0000,     /* R19292 */
+    0x0000,     /* R19293 */
+    0x0000,     /* R19294 */
+    0x0000,     /* R19295 */
+    0x0000,     /* R19296 */
+    0x0000,     /* R19297 */
+    0x0000,     /* R19298 */
+    0x0000,     /* R19299 */
+    0x0000,     /* R19300 */
+    0x0000,     /* R19301 */
+    0x0000,     /* R19302 */
+    0x0000,     /* R19303 */
+    0x0000,     /* R19304 */
+    0x0000,     /* R19305 */
+    0x0000,     /* R19306 */
+    0x0000,     /* R19307 */
+    0x0000,     /* R19308 */
+    0x0000,     /* R19309 */
+    0x0000,     /* R19310 */
+    0x0000,     /* R19311 */
+    0x0000,     /* R19312 */
+    0x0000,     /* R19313 */
+    0x0000,     /* R19314 */
+    0x0000,     /* R19315 */
+    0x0000,     /* R19316 */
+    0x0000,     /* R19317 */
+    0x0000,     /* R19318 */
+    0x0000,     /* R19319 */
+    0x0000,     /* R19320 */
+    0x0000,     /* R19321 */
+    0x0000,     /* R19322 */
+    0x0000,     /* R19323 */
+    0x0000,     /* R19324 */
+    0x0000,     /* R19325 */
+    0x0000,     /* R19326 */
+    0x0000,     /* R19327 */
+    0x0000,     /* R19328 */
+    0x0000,     /* R19329 */
+    0x0000,     /* R19330 */
+    0x0000,     /* R19331 */
+    0x0000,     /* R19332 */
+    0x0000,     /* R19333 */
+    0x0000,     /* R19334 */
+    0x0000,     /* R19335 */
+    0x0000,     /* R19336 */
+    0x0000,     /* R19337 */
+    0x0000,     /* R19338 */
+    0x0000,     /* R19339 */
+    0x0000,     /* R19340 */
+    0x0000,     /* R19341 */
+    0x0000,     /* R19342 */
+    0x0000,     /* R19343 */
+    0x0000,     /* R19344 */
+    0x0000,     /* R19345 */
+    0x0000,     /* R19346 */
+    0x0000,     /* R19347 */
+    0x0000,     /* R19348 */
+    0x0000,     /* R19349 */
+    0x0000,     /* R19350 */
+    0x0000,     /* R19351 */
+    0x0000,     /* R19352 */
+    0x0000,     /* R19353 */
+    0x0000,     /* R19354 */
+    0x0000,     /* R19355 */
+    0x0000,     /* R19356 */
+    0x0000,     /* R19357 */
+    0x0000,     /* R19358 */
+    0x0000,     /* R19359 */
+    0x0000,     /* R19360 */
+    0x0000,     /* R19361 */
+    0x0000,     /* R19362 */
+    0x0000,     /* R19363 */
+    0x0000,     /* R19364 */
+    0x0000,     /* R19365 */
+    0x0000,     /* R19366 */
+    0x0000,     /* R19367 */
+    0x0000,     /* R19368 */
+    0x0000,     /* R19369 */
+    0x0000,     /* R19370 */
+    0x0000,     /* R19371 */
+    0x0000,     /* R19372 */
+    0x0000,     /* R19373 */
+    0x0000,     /* R19374 */
+    0x0000,     /* R19375 */
+    0x0000,     /* R19376 */
+    0x0000,     /* R19377 */
+    0x0000,     /* R19378 */
+    0x0000,     /* R19379 */
+    0x0000,     /* R19380 */
+    0x0000,     /* R19381 */
+    0x0000,     /* R19382 */
+    0x0000,     /* R19383 */
+    0x0000,     /* R19384 */
+    0x0000,     /* R19385 */
+    0x0000,     /* R19386 */
+    0x0000,     /* R19387 */
+    0x0000,     /* R19388 */
+    0x0000,     /* R19389 */
+    0x0000,     /* R19390 */
+    0x0000,     /* R19391 */
+    0x0000,     /* R19392 */
+    0x0000,     /* R19393 */
+    0x0000,     /* R19394 */
+    0x0000,     /* R19395 */
+    0x0000,     /* R19396 */
+    0x0000,     /* R19397 */
+    0x0000,     /* R19398 */
+    0x0000,     /* R19399 */
+    0x0000,     /* R19400 */
+    0x0000,     /* R19401 */
+    0x0000,     /* R19402 */
+    0x0000,     /* R19403 */
+    0x0000,     /* R19404 */
+    0x0000,     /* R19405 */
+    0x0000,     /* R19406 */
+    0x0000,     /* R19407 */
+    0x0000,     /* R19408 */
+    0x0000,     /* R19409 */
+    0x0000,     /* R19410 */
+    0x0000,     /* R19411 */
+    0x0000,     /* R19412 */
+    0x0000,     /* R19413 */
+    0x0000,     /* R19414 */
+    0x0000,     /* R19415 */
+    0x0000,     /* R19416 */
+    0x0000,     /* R19417 */
+    0x0000,     /* R19418 */
+    0x0000,     /* R19419 */
+    0x0000,     /* R19420 */
+    0x0000,     /* R19421 */
+    0x0000,     /* R19422 */
+    0x0000,     /* R19423 */
+    0x0000,     /* R19424 */
+    0x0000,     /* R19425 */
+    0x0000,     /* R19426 */
+    0x0000,     /* R19427 */
+    0x0000,     /* R19428 */
+    0x0000,     /* R19429 */
+    0x0000,     /* R19430 */
+    0x0000,     /* R19431 */
+    0x0000,     /* R19432 */
+    0x0000,     /* R19433 */
+    0x0000,     /* R19434 */
+    0x0000,     /* R19435 */
+    0x0000,     /* R19436 */
+    0x0000,     /* R19437 */
+    0x0000,     /* R19438 */
+    0x0000,     /* R19439 */
+    0x0000,     /* R19440 */
+    0x0000,     /* R19441 */
+    0x0000,     /* R19442 */
+    0x0000,     /* R19443 */
+    0x0000,     /* R19444 */
+    0x0000,     /* R19445 */
+    0x0000,     /* R19446 */
+    0x0000,     /* R19447 */
+    0x0000,     /* R19448 */
+    0x0000,     /* R19449 */
+    0x0000,     /* R19450 */
+    0x0000,     /* R19451 */
+    0x0000,     /* R19452 */
+    0x0000,     /* R19453 */
+    0x0000,     /* R19454 */
+    0x0000,     /* R19455 */
+    0x007F,     /* R19456 - DACL_RETUNE_C1_1 */
+    0xFFFF,     /* R19457 - DACL_RETUNE_C1_0 */
+    0x0000,     /* R19458 - DACL_RETUNE_C2_1 */
+    0x0000,     /* R19459 - DACL_RETUNE_C2_0 */
+    0x0000,     /* R19460 - DACL_RETUNE_C3_1 */
+    0x0000,     /* R19461 - DACL_RETUNE_C3_0 */
+    0x0000,     /* R19462 - DACL_RETUNE_C4_1 */
+    0x0000,     /* R19463 - DACL_RETUNE_C4_0 */
+    0x0000,     /* R19464 - DACL_RETUNE_C5_1 */
+    0x0000,     /* R19465 - DACL_RETUNE_C5_0 */
+    0x0000,     /* R19466 - DACL_RETUNE_C6_1 */
+    0x0000,     /* R19467 - DACL_RETUNE_C6_0 */
+    0x0000,     /* R19468 - DACL_RETUNE_C7_1 */
+    0x0000,     /* R19469 - DACL_RETUNE_C7_0 */
+    0x0000,     /* R19470 - DACL_RETUNE_C8_1 */
+    0x0000,     /* R19471 - DACL_RETUNE_C8_0 */
+    0x0000,     /* R19472 - DACL_RETUNE_C9_1 */
+    0x0000,     /* R19473 - DACL_RETUNE_C9_0 */
+    0x0000,     /* R19474 - DACL_RETUNE_C10_1 */
+    0x0000,     /* R19475 - DACL_RETUNE_C10_0 */
+    0x0000,     /* R19476 - DACL_RETUNE_C11_1 */
+    0x0000,     /* R19477 - DACL_RETUNE_C11_0 */
+    0x0000,     /* R19478 - DACL_RETUNE_C12_1 */
+    0x0000,     /* R19479 - DACL_RETUNE_C12_0 */
+    0x0000,     /* R19480 - DACL_RETUNE_C13_1 */
+    0x0000,     /* R19481 - DACL_RETUNE_C13_0 */
+    0x0000,     /* R19482 - DACL_RETUNE_C14_1 */
+    0x0000,     /* R19483 - DACL_RETUNE_C14_0 */
+    0x0000,     /* R19484 - DACL_RETUNE_C15_1 */
+    0x0000,     /* R19485 - DACL_RETUNE_C15_0 */
+    0x0000,     /* R19486 - DACL_RETUNE_C16_1 */
+    0x0000,     /* R19487 - DACL_RETUNE_C16_0 */
+    0x0000,     /* R19488 - DACL_RETUNE_C17_1 */
+    0x0000,     /* R19489 - DACL_RETUNE_C17_0 */
+    0x0000,     /* R19490 - DACL_RETUNE_C18_1 */
+    0x0000,     /* R19491 - DACL_RETUNE_C18_0 */
+    0x0000,     /* R19492 - DACL_RETUNE_C19_1 */
+    0x0000,     /* R19493 - DACL_RETUNE_C19_0 */
+    0x0000,     /* R19494 - DACL_RETUNE_C20_1 */
+    0x0000,     /* R19495 - DACL_RETUNE_C20_0 */
+    0x0000,     /* R19496 - DACL_RETUNE_C21_1 */
+    0x0000,     /* R19497 - DACL_RETUNE_C21_0 */
+    0x0000,     /* R19498 - DACL_RETUNE_C22_1 */
+    0x0000,     /* R19499 - DACL_RETUNE_C22_0 */
+    0x0000,     /* R19500 - DACL_RETUNE_C23_1 */
+    0x0000,     /* R19501 - DACL_RETUNE_C23_0 */
+    0x0000,     /* R19502 - DACL_RETUNE_C24_1 */
+    0x0000,     /* R19503 - DACL_RETUNE_C24_0 */
+    0x0000,     /* R19504 - DACL_RETUNE_C25_1 */
+    0x0000,     /* R19505 - DACL_RETUNE_C25_0 */
+    0x0000,     /* R19506 - DACL_RETUNE_C26_1 */
+    0x0000,     /* R19507 - DACL_RETUNE_C26_0 */
+    0x0000,     /* R19508 - DACL_RETUNE_C27_1 */
+    0x0000,     /* R19509 - DACL_RETUNE_C27_0 */
+    0x0000,     /* R19510 - DACL_RETUNE_C28_1 */
+    0x0000,     /* R19511 - DACL_RETUNE_C28_0 */
+    0x0000,     /* R19512 - DACL_RETUNE_C29_1 */
+    0x0000,     /* R19513 - DACL_RETUNE_C29_0 */
+    0x0000,     /* R19514 - DACL_RETUNE_C30_1 */
+    0x0000,     /* R19515 - DACL_RETUNE_C30_0 */
+    0x0000,     /* R19516 - DACL_RETUNE_C31_1 */
+    0x0000,     /* R19517 - DACL_RETUNE_C31_0 */
+    0x0000,     /* R19518 - DACL_RETUNE_C32_1 */
+    0x0000,     /* R19519 - DACL_RETUNE_C32_0 */
+    0x0000,     /* R19520 */
+    0x0000,     /* R19521 */
+    0x0000,     /* R19522 */
+    0x0000,     /* R19523 */
+    0x0000,     /* R19524 */
+    0x0000,     /* R19525 */
+    0x0000,     /* R19526 */
+    0x0000,     /* R19527 */
+    0x0000,     /* R19528 */
+    0x0000,     /* R19529 */
+    0x0000,     /* R19530 */
+    0x0000,     /* R19531 */
+    0x0000,     /* R19532 */
+    0x0000,     /* R19533 */
+    0x0000,     /* R19534 */
+    0x0000,     /* R19535 */
+    0x0000,     /* R19536 */
+    0x0000,     /* R19537 */
+    0x0000,     /* R19538 */
+    0x0000,     /* R19539 */
+    0x0000,     /* R19540 */
+    0x0000,     /* R19541 */
+    0x0000,     /* R19542 */
+    0x0000,     /* R19543 */
+    0x0000,     /* R19544 */
+    0x0000,     /* R19545 */
+    0x0000,     /* R19546 */
+    0x0000,     /* R19547 */
+    0x0000,     /* R19548 */
+    0x0000,     /* R19549 */
+    0x0000,     /* R19550 */
+    0x0000,     /* R19551 */
+    0x0000,     /* R19552 */
+    0x0000,     /* R19553 */
+    0x0000,     /* R19554 */
+    0x0000,     /* R19555 */
+    0x0000,     /* R19556 */
+    0x0000,     /* R19557 */
+    0x0000,     /* R19558 */
+    0x0000,     /* R19559 */
+    0x0000,     /* R19560 */
+    0x0000,     /* R19561 */
+    0x0000,     /* R19562 */
+    0x0000,     /* R19563 */
+    0x0000,     /* R19564 */
+    0x0000,     /* R19565 */
+    0x0000,     /* R19566 */
+    0x0000,     /* R19567 */
+    0x0000,     /* R19568 */
+    0x0000,     /* R19569 */
+    0x0000,     /* R19570 */
+    0x0000,     /* R19571 */
+    0x0000,     /* R19572 */
+    0x0000,     /* R19573 */
+    0x0000,     /* R19574 */
+    0x0000,     /* R19575 */
+    0x0000,     /* R19576 */
+    0x0000,     /* R19577 */
+    0x0000,     /* R19578 */
+    0x0000,     /* R19579 */
+    0x0000,     /* R19580 */
+    0x0000,     /* R19581 */
+    0x0000,     /* R19582 */
+    0x0000,     /* R19583 */
+    0x0000,     /* R19584 */
+    0x0000,     /* R19585 */
+    0x0000,     /* R19586 */
+    0x0000,     /* R19587 */
+    0x0000,     /* R19588 */
+    0x0000,     /* R19589 */
+    0x0000,     /* R19590 */
+    0x0000,     /* R19591 */
+    0x0000,     /* R19592 */
+    0x0000,     /* R19593 */
+    0x0000,     /* R19594 */
+    0x0000,     /* R19595 */
+    0x0000,     /* R19596 */
+    0x0000,     /* R19597 */
+    0x0000,     /* R19598 */
+    0x0000,     /* R19599 */
+    0x0000,     /* R19600 */
+    0x0000,     /* R19601 */
+    0x0000,     /* R19602 */
+    0x0000,     /* R19603 */
+    0x0000,     /* R19604 */
+    0x0000,     /* R19605 */
+    0x0000,     /* R19606 */
+    0x0000,     /* R19607 */
+    0x0000,     /* R19608 */
+    0x0000,     /* R19609 */
+    0x0000,     /* R19610 */
+    0x0000,     /* R19611 */
+    0x0000,     /* R19612 */
+    0x0000,     /* R19613 */
+    0x0000,     /* R19614 */
+    0x0000,     /* R19615 */
+    0x0000,     /* R19616 */
+    0x0000,     /* R19617 */
+    0x0000,     /* R19618 */
+    0x0000,     /* R19619 */
+    0x0000,     /* R19620 */
+    0x0000,     /* R19621 */
+    0x0000,     /* R19622 */
+    0x0000,     /* R19623 */
+    0x0000,     /* R19624 */
+    0x0000,     /* R19625 */
+    0x0000,     /* R19626 */
+    0x0000,     /* R19627 */
+    0x0000,     /* R19628 */
+    0x0000,     /* R19629 */
+    0x0000,     /* R19630 */
+    0x0000,     /* R19631 */
+    0x0000,     /* R19632 */
+    0x0000,     /* R19633 */
+    0x0000,     /* R19634 */
+    0x0000,     /* R19635 */
+    0x0000,     /* R19636 */
+    0x0000,     /* R19637 */
+    0x0000,     /* R19638 */
+    0x0000,     /* R19639 */
+    0x0000,     /* R19640 */
+    0x0000,     /* R19641 */
+    0x0000,     /* R19642 */
+    0x0000,     /* R19643 */
+    0x0000,     /* R19644 */
+    0x0000,     /* R19645 */
+    0x0000,     /* R19646 */
+    0x0000,     /* R19647 */
+    0x0000,     /* R19648 */
+    0x0000,     /* R19649 */
+    0x0000,     /* R19650 */
+    0x0000,     /* R19651 */
+    0x0000,     /* R19652 */
+    0x0000,     /* R19653 */
+    0x0000,     /* R19654 */
+    0x0000,     /* R19655 */
+    0x0000,     /* R19656 */
+    0x0000,     /* R19657 */
+    0x0000,     /* R19658 */
+    0x0000,     /* R19659 */
+    0x0000,     /* R19660 */
+    0x0000,     /* R19661 */
+    0x0000,     /* R19662 */
+    0x0000,     /* R19663 */
+    0x0000,     /* R19664 */
+    0x0000,     /* R19665 */
+    0x0000,     /* R19666 */
+    0x0000,     /* R19667 */
+    0x0000,     /* R19668 */
+    0x0000,     /* R19669 */
+    0x0000,     /* R19670 */
+    0x0000,     /* R19671 */
+    0x0000,     /* R19672 */
+    0x0000,     /* R19673 */
+    0x0000,     /* R19674 */
+    0x0000,     /* R19675 */
+    0x0000,     /* R19676 */
+    0x0000,     /* R19677 */
+    0x0000,     /* R19678 */
+    0x0000,     /* R19679 */
+    0x0000,     /* R19680 */
+    0x0000,     /* R19681 */
+    0x0000,     /* R19682 */
+    0x0000,     /* R19683 */
+    0x0000,     /* R19684 */
+    0x0000,     /* R19685 */
+    0x0000,     /* R19686 */
+    0x0000,     /* R19687 */
+    0x0000,     /* R19688 */
+    0x0000,     /* R19689 */
+    0x0000,     /* R19690 */
+    0x0000,     /* R19691 */
+    0x0000,     /* R19692 */
+    0x0000,     /* R19693 */
+    0x0000,     /* R19694 */
+    0x0000,     /* R19695 */
+    0x0000,     /* R19696 */
+    0x0000,     /* R19697 */
+    0x0000,     /* R19698 */
+    0x0000,     /* R19699 */
+    0x0000,     /* R19700 */
+    0x0000,     /* R19701 */
+    0x0000,     /* R19702 */
+    0x0000,     /* R19703 */
+    0x0000,     /* R19704 */
+    0x0000,     /* R19705 */
+    0x0000,     /* R19706 */
+    0x0000,     /* R19707 */
+    0x0000,     /* R19708 */
+    0x0000,     /* R19709 */
+    0x0000,     /* R19710 */
+    0x0000,     /* R19711 */
+    0x0000,     /* R19712 */
+    0x0000,     /* R19713 */
+    0x0000,     /* R19714 */
+    0x0000,     /* R19715 */
+    0x0000,     /* R19716 */
+    0x0000,     /* R19717 */
+    0x0000,     /* R19718 */
+    0x0000,     /* R19719 */
+    0x0000,     /* R19720 */
+    0x0000,     /* R19721 */
+    0x0000,     /* R19722 */
+    0x0000,     /* R19723 */
+    0x0000,     /* R19724 */
+    0x0000,     /* R19725 */
+    0x0000,     /* R19726 */
+    0x0000,     /* R19727 */
+    0x0000,     /* R19728 */
+    0x0000,     /* R19729 */
+    0x0000,     /* R19730 */
+    0x0000,     /* R19731 */
+    0x0000,     /* R19732 */
+    0x0000,     /* R19733 */
+    0x0000,     /* R19734 */
+    0x0000,     /* R19735 */
+    0x0000,     /* R19736 */
+    0x0000,     /* R19737 */
+    0x0000,     /* R19738 */
+    0x0000,     /* R19739 */
+    0x0000,     /* R19740 */
+    0x0000,     /* R19741 */
+    0x0000,     /* R19742 */
+    0x0000,     /* R19743 */
+    0x0000,     /* R19744 */
+    0x0000,     /* R19745 */
+    0x0000,     /* R19746 */
+    0x0000,     /* R19747 */
+    0x0000,     /* R19748 */
+    0x0000,     /* R19749 */
+    0x0000,     /* R19750 */
+    0x0000,     /* R19751 */
+    0x0000,     /* R19752 */
+    0x0000,     /* R19753 */
+    0x0000,     /* R19754 */
+    0x0000,     /* R19755 */
+    0x0000,     /* R19756 */
+    0x0000,     /* R19757 */
+    0x0000,     /* R19758 */
+    0x0000,     /* R19759 */
+    0x0000,     /* R19760 */
+    0x0000,     /* R19761 */
+    0x0000,     /* R19762 */
+    0x0000,     /* R19763 */
+    0x0000,     /* R19764 */
+    0x0000,     /* R19765 */
+    0x0000,     /* R19766 */
+    0x0000,     /* R19767 */
+    0x0000,     /* R19768 */
+    0x0000,     /* R19769 */
+    0x0000,     /* R19770 */
+    0x0000,     /* R19771 */
+    0x0000,     /* R19772 */
+    0x0000,     /* R19773 */
+    0x0000,     /* R19774 */
+    0x0000,     /* R19775 */
+    0x0000,     /* R19776 */
+    0x0000,     /* R19777 */
+    0x0000,     /* R19778 */
+    0x0000,     /* R19779 */
+    0x0000,     /* R19780 */
+    0x0000,     /* R19781 */
+    0x0000,     /* R19782 */
+    0x0000,     /* R19783 */
+    0x0000,     /* R19784 */
+    0x0000,     /* R19785 */
+    0x0000,     /* R19786 */
+    0x0000,     /* R19787 */
+    0x0000,     /* R19788 */
+    0x0000,     /* R19789 */
+    0x0000,     /* R19790 */
+    0x0000,     /* R19791 */
+    0x0000,     /* R19792 */
+    0x0000,     /* R19793 */
+    0x0000,     /* R19794 */
+    0x0000,     /* R19795 */
+    0x0000,     /* R19796 */
+    0x0000,     /* R19797 */
+    0x0000,     /* R19798 */
+    0x0000,     /* R19799 */
+    0x0000,     /* R19800 */
+    0x0000,     /* R19801 */
+    0x0000,     /* R19802 */
+    0x0000,     /* R19803 */
+    0x0000,     /* R19804 */
+    0x0000,     /* R19805 */
+    0x0000,     /* R19806 */
+    0x0000,     /* R19807 */
+    0x0000,     /* R19808 */
+    0x0000,     /* R19809 */
+    0x0000,     /* R19810 */
+    0x0000,     /* R19811 */
+    0x0000,     /* R19812 */
+    0x0000,     /* R19813 */
+    0x0000,     /* R19814 */
+    0x0000,     /* R19815 */
+    0x0000,     /* R19816 */
+    0x0000,     /* R19817 */
+    0x0000,     /* R19818 */
+    0x0000,     /* R19819 */
+    0x0000,     /* R19820 */
+    0x0000,     /* R19821 */
+    0x0000,     /* R19822 */
+    0x0000,     /* R19823 */
+    0x0000,     /* R19824 */
+    0x0000,     /* R19825 */
+    0x0000,     /* R19826 */
+    0x0000,     /* R19827 */
+    0x0000,     /* R19828 */
+    0x0000,     /* R19829 */
+    0x0000,     /* R19830 */
+    0x0000,     /* R19831 */
+    0x0000,     /* R19832 */
+    0x0000,     /* R19833 */
+    0x0000,     /* R19834 */
+    0x0000,     /* R19835 */
+    0x0000,     /* R19836 */
+    0x0000,     /* R19837 */
+    0x0000,     /* R19838 */
+    0x0000,     /* R19839 */
+    0x0000,     /* R19840 */
+    0x0000,     /* R19841 */
+    0x0000,     /* R19842 */
+    0x0000,     /* R19843 */
+    0x0000,     /* R19844 */
+    0x0000,     /* R19845 */
+    0x0000,     /* R19846 */
+    0x0000,     /* R19847 */
+    0x0000,     /* R19848 */
+    0x0000,     /* R19849 */
+    0x0000,     /* R19850 */
+    0x0000,     /* R19851 */
+    0x0000,     /* R19852 */
+    0x0000,     /* R19853 */
+    0x0000,     /* R19854 */
+    0x0000,     /* R19855 */
+    0x0000,     /* R19856 */
+    0x0000,     /* R19857 */
+    0x0000,     /* R19858 */
+    0x0000,     /* R19859 */
+    0x0000,     /* R19860 */
+    0x0000,     /* R19861 */
+    0x0000,     /* R19862 */
+    0x0000,     /* R19863 */
+    0x0000,     /* R19864 */
+    0x0000,     /* R19865 */
+    0x0000,     /* R19866 */
+    0x0000,     /* R19867 */
+    0x0000,     /* R19868 */
+    0x0000,     /* R19869 */
+    0x0000,     /* R19870 */
+    0x0000,     /* R19871 */
+    0x0000,     /* R19872 */
+    0x0000,     /* R19873 */
+    0x0000,     /* R19874 */
+    0x0000,     /* R19875 */
+    0x0000,     /* R19876 */
+    0x0000,     /* R19877 */
+    0x0000,     /* R19878 */
+    0x0000,     /* R19879 */
+    0x0000,     /* R19880 */
+    0x0000,     /* R19881 */
+    0x0000,     /* R19882 */
+    0x0000,     /* R19883 */
+    0x0000,     /* R19884 */
+    0x0000,     /* R19885 */
+    0x0000,     /* R19886 */
+    0x0000,     /* R19887 */
+    0x0000,     /* R19888 */
+    0x0000,     /* R19889 */
+    0x0000,     /* R19890 */
+    0x0000,     /* R19891 */
+    0x0000,     /* R19892 */
+    0x0000,     /* R19893 */
+    0x0000,     /* R19894 */
+    0x0000,     /* R19895 */
+    0x0000,     /* R19896 */
+    0x0000,     /* R19897 */
+    0x0000,     /* R19898 */
+    0x0000,     /* R19899 */
+    0x0000,     /* R19900 */
+    0x0000,     /* R19901 */
+    0x0000,     /* R19902 */
+    0x0000,     /* R19903 */
+    0x0000,     /* R19904 */
+    0x0000,     /* R19905 */
+    0x0000,     /* R19906 */
+    0x0000,     /* R19907 */
+    0x0000,     /* R19908 */
+    0x0000,     /* R19909 */
+    0x0000,     /* R19910 */
+    0x0000,     /* R19911 */
+    0x0000,     /* R19912 */
+    0x0000,     /* R19913 */
+    0x0000,     /* R19914 */
+    0x0000,     /* R19915 */
+    0x0000,     /* R19916 */
+    0x0000,     /* R19917 */
+    0x0000,     /* R19918 */
+    0x0000,     /* R19919 */
+    0x0000,     /* R19920 */
+    0x0000,     /* R19921 */
+    0x0000,     /* R19922 */
+    0x0000,     /* R19923 */
+    0x0000,     /* R19924 */
+    0x0000,     /* R19925 */
+    0x0000,     /* R19926 */
+    0x0000,     /* R19927 */
+    0x0000,     /* R19928 */
+    0x0000,     /* R19929 */
+    0x0000,     /* R19930 */
+    0x0000,     /* R19931 */
+    0x0000,     /* R19932 */
+    0x0000,     /* R19933 */
+    0x0000,     /* R19934 */
+    0x0000,     /* R19935 */
+    0x0000,     /* R19936 */
+    0x0000,     /* R19937 */
+    0x0000,     /* R19938 */
+    0x0000,     /* R19939 */
+    0x0000,     /* R19940 */
+    0x0000,     /* R19941 */
+    0x0000,     /* R19942 */
+    0x0000,     /* R19943 */
+    0x0000,     /* R19944 */
+    0x0000,     /* R19945 */
+    0x0000,     /* R19946 */
+    0x0000,     /* R19947 */
+    0x0000,     /* R19948 */
+    0x0000,     /* R19949 */
+    0x0000,     /* R19950 */
+    0x0000,     /* R19951 */
+    0x0000,     /* R19952 */
+    0x0000,     /* R19953 */
+    0x0000,     /* R19954 */
+    0x0000,     /* R19955 */
+    0x0000,     /* R19956 */
+    0x0000,     /* R19957 */
+    0x0000,     /* R19958 */
+    0x0000,     /* R19959 */
+    0x0000,     /* R19960 */
+    0x0000,     /* R19961 */
+    0x0000,     /* R19962 */
+    0x0000,     /* R19963 */
+    0x0000,     /* R19964 */
+    0x0000,     /* R19965 */
+    0x0000,     /* R19966 */
+    0x0000,     /* R19967 */
+    0x0020,     /* R19968 - RETUNEDAC_PG2_1 */
+    0x0000,     /* R19969 - RETUNEDAC_PG2_0 */
+    0x0040,     /* R19970 - RETUNEDAC_PG_1 */
+    0x0000,     /* R19971 - RETUNEDAC_PG_0 */
+    0x0000,     /* R19972 */
+    0x0000,     /* R19973 */
+    0x0000,     /* R19974 */
+    0x0000,     /* R19975 */
+    0x0000,     /* R19976 */
+    0x0000,     /* R19977 */
+    0x0000,     /* R19978 */
+    0x0000,     /* R19979 */
+    0x0000,     /* R19980 */
+    0x0000,     /* R19981 */
+    0x0000,     /* R19982 */
+    0x0000,     /* R19983 */
+    0x0000,     /* R19984 */
+    0x0000,     /* R19985 */
+    0x0000,     /* R19986 */
+    0x0000,     /* R19987 */
+    0x0000,     /* R19988 */
+    0x0000,     /* R19989 */
+    0x0000,     /* R19990 */
+    0x0000,     /* R19991 */
+    0x0000,     /* R19992 */
+    0x0000,     /* R19993 */
+    0x0000,     /* R19994 */
+    0x0000,     /* R19995 */
+    0x0000,     /* R19996 */
+    0x0000,     /* R19997 */
+    0x0000,     /* R19998 */
+    0x0000,     /* R19999 */
+    0x0000,     /* R20000 */
+    0x0000,     /* R20001 */
+    0x0000,     /* R20002 */
+    0x0000,     /* R20003 */
+    0x0000,     /* R20004 */
+    0x0000,     /* R20005 */
+    0x0000,     /* R20006 */
+    0x0000,     /* R20007 */
+    0x0000,     /* R20008 */
+    0x0000,     /* R20009 */
+    0x0000,     /* R20010 */
+    0x0000,     /* R20011 */
+    0x0000,     /* R20012 */
+    0x0000,     /* R20013 */
+    0x0000,     /* R20014 */
+    0x0000,     /* R20015 */
+    0x0000,     /* R20016 */
+    0x0000,     /* R20017 */
+    0x0000,     /* R20018 */
+    0x0000,     /* R20019 */
+    0x0000,     /* R20020 */
+    0x0000,     /* R20021 */
+    0x0000,     /* R20022 */
+    0x0000,     /* R20023 */
+    0x0000,     /* R20024 */
+    0x0000,     /* R20025 */
+    0x0000,     /* R20026 */
+    0x0000,     /* R20027 */
+    0x0000,     /* R20028 */
+    0x0000,     /* R20029 */
+    0x0000,     /* R20030 */
+    0x0000,     /* R20031 */
+    0x0000,     /* R20032 */
+    0x0000,     /* R20033 */
+    0x0000,     /* R20034 */
+    0x0000,     /* R20035 */
+    0x0000,     /* R20036 */
+    0x0000,     /* R20037 */
+    0x0000,     /* R20038 */
+    0x0000,     /* R20039 */
+    0x0000,     /* R20040 */
+    0x0000,     /* R20041 */
+    0x0000,     /* R20042 */
+    0x0000,     /* R20043 */
+    0x0000,     /* R20044 */
+    0x0000,     /* R20045 */
+    0x0000,     /* R20046 */
+    0x0000,     /* R20047 */
+    0x0000,     /* R20048 */
+    0x0000,     /* R20049 */
+    0x0000,     /* R20050 */
+    0x0000,     /* R20051 */
+    0x0000,     /* R20052 */
+    0x0000,     /* R20053 */
+    0x0000,     /* R20054 */
+    0x0000,     /* R20055 */
+    0x0000,     /* R20056 */
+    0x0000,     /* R20057 */
+    0x0000,     /* R20058 */
+    0x0000,     /* R20059 */
+    0x0000,     /* R20060 */
+    0x0000,     /* R20061 */
+    0x0000,     /* R20062 */
+    0x0000,     /* R20063 */
+    0x0000,     /* R20064 */
+    0x0000,     /* R20065 */
+    0x0000,     /* R20066 */
+    0x0000,     /* R20067 */
+    0x0000,     /* R20068 */
+    0x0000,     /* R20069 */
+    0x0000,     /* R20070 */
+    0x0000,     /* R20071 */
+    0x0000,     /* R20072 */
+    0x0000,     /* R20073 */
+    0x0000,     /* R20074 */
+    0x0000,     /* R20075 */
+    0x0000,     /* R20076 */
+    0x0000,     /* R20077 */
+    0x0000,     /* R20078 */
+    0x0000,     /* R20079 */
+    0x0000,     /* R20080 */
+    0x0000,     /* R20081 */
+    0x0000,     /* R20082 */
+    0x0000,     /* R20083 */
+    0x0000,     /* R20084 */
+    0x0000,     /* R20085 */
+    0x0000,     /* R20086 */
+    0x0000,     /* R20087 */
+    0x0000,     /* R20088 */
+    0x0000,     /* R20089 */
+    0x0000,     /* R20090 */
+    0x0000,     /* R20091 */
+    0x0000,     /* R20092 */
+    0x0000,     /* R20093 */
+    0x0000,     /* R20094 */
+    0x0000,     /* R20095 */
+    0x0000,     /* R20096 */
+    0x0000,     /* R20097 */
+    0x0000,     /* R20098 */
+    0x0000,     /* R20099 */
+    0x0000,     /* R20100 */
+    0x0000,     /* R20101 */
+    0x0000,     /* R20102 */
+    0x0000,     /* R20103 */
+    0x0000,     /* R20104 */
+    0x0000,     /* R20105 */
+    0x0000,     /* R20106 */
+    0x0000,     /* R20107 */
+    0x0000,     /* R20108 */
+    0x0000,     /* R20109 */
+    0x0000,     /* R20110 */
+    0x0000,     /* R20111 */
+    0x0000,     /* R20112 */
+    0x0000,     /* R20113 */
+    0x0000,     /* R20114 */
+    0x0000,     /* R20115 */
+    0x0000,     /* R20116 */
+    0x0000,     /* R20117 */
+    0x0000,     /* R20118 */
+    0x0000,     /* R20119 */
+    0x0000,     /* R20120 */
+    0x0000,     /* R20121 */
+    0x0000,     /* R20122 */
+    0x0000,     /* R20123 */
+    0x0000,     /* R20124 */
+    0x0000,     /* R20125 */
+    0x0000,     /* R20126 */
+    0x0000,     /* R20127 */
+    0x0000,     /* R20128 */
+    0x0000,     /* R20129 */
+    0x0000,     /* R20130 */
+    0x0000,     /* R20131 */
+    0x0000,     /* R20132 */
+    0x0000,     /* R20133 */
+    0x0000,     /* R20134 */
+    0x0000,     /* R20135 */
+    0x0000,     /* R20136 */
+    0x0000,     /* R20137 */
+    0x0000,     /* R20138 */
+    0x0000,     /* R20139 */
+    0x0000,     /* R20140 */
+    0x0000,     /* R20141 */
+    0x0000,     /* R20142 */
+    0x0000,     /* R20143 */
+    0x0000,     /* R20144 */
+    0x0000,     /* R20145 */
+    0x0000,     /* R20146 */
+    0x0000,     /* R20147 */
+    0x0000,     /* R20148 */
+    0x0000,     /* R20149 */
+    0x0000,     /* R20150 */
+    0x0000,     /* R20151 */
+    0x0000,     /* R20152 */
+    0x0000,     /* R20153 */
+    0x0000,     /* R20154 */
+    0x0000,     /* R20155 */
+    0x0000,     /* R20156 */
+    0x0000,     /* R20157 */
+    0x0000,     /* R20158 */
+    0x0000,     /* R20159 */
+    0x0000,     /* R20160 */
+    0x0000,     /* R20161 */
+    0x0000,     /* R20162 */
+    0x0000,     /* R20163 */
+    0x0000,     /* R20164 */
+    0x0000,     /* R20165 */
+    0x0000,     /* R20166 */
+    0x0000,     /* R20167 */
+    0x0000,     /* R20168 */
+    0x0000,     /* R20169 */
+    0x0000,     /* R20170 */
+    0x0000,     /* R20171 */
+    0x0000,     /* R20172 */
+    0x0000,     /* R20173 */
+    0x0000,     /* R20174 */
+    0x0000,     /* R20175 */
+    0x0000,     /* R20176 */
+    0x0000,     /* R20177 */
+    0x0000,     /* R20178 */
+    0x0000,     /* R20179 */
+    0x0000,     /* R20180 */
+    0x0000,     /* R20181 */
+    0x0000,     /* R20182 */
+    0x0000,     /* R20183 */
+    0x0000,     /* R20184 */
+    0x0000,     /* R20185 */
+    0x0000,     /* R20186 */
+    0x0000,     /* R20187 */
+    0x0000,     /* R20188 */
+    0x0000,     /* R20189 */
+    0x0000,     /* R20190 */
+    0x0000,     /* R20191 */
+    0x0000,     /* R20192 */
+    0x0000,     /* R20193 */
+    0x0000,     /* R20194 */
+    0x0000,     /* R20195 */
+    0x0000,     /* R20196 */
+    0x0000,     /* R20197 */
+    0x0000,     /* R20198 */
+    0x0000,     /* R20199 */
+    0x0000,     /* R20200 */
+    0x0000,     /* R20201 */
+    0x0000,     /* R20202 */
+    0x0000,     /* R20203 */
+    0x0000,     /* R20204 */
+    0x0000,     /* R20205 */
+    0x0000,     /* R20206 */
+    0x0000,     /* R20207 */
+    0x0000,     /* R20208 */
+    0x0000,     /* R20209 */
+    0x0000,     /* R20210 */
+    0x0000,     /* R20211 */
+    0x0000,     /* R20212 */
+    0x0000,     /* R20213 */
+    0x0000,     /* R20214 */
+    0x0000,     /* R20215 */
+    0x0000,     /* R20216 */
+    0x0000,     /* R20217 */
+    0x0000,     /* R20218 */
+    0x0000,     /* R20219 */
+    0x0000,     /* R20220 */
+    0x0000,     /* R20221 */
+    0x0000,     /* R20222 */
+    0x0000,     /* R20223 */
+    0x0000,     /* R20224 */
+    0x0000,     /* R20225 */
+    0x0000,     /* R20226 */
+    0x0000,     /* R20227 */
+    0x0000,     /* R20228 */
+    0x0000,     /* R20229 */
+    0x0000,     /* R20230 */
+    0x0000,     /* R20231 */
+    0x0000,     /* R20232 */
+    0x0000,     /* R20233 */
+    0x0000,     /* R20234 */
+    0x0000,     /* R20235 */
+    0x0000,     /* R20236 */
+    0x0000,     /* R20237 */
+    0x0000,     /* R20238 */
+    0x0000,     /* R20239 */
+    0x0000,     /* R20240 */
+    0x0000,     /* R20241 */
+    0x0000,     /* R20242 */
+    0x0000,     /* R20243 */
+    0x0000,     /* R20244 */
+    0x0000,     /* R20245 */
+    0x0000,     /* R20246 */
+    0x0000,     /* R20247 */
+    0x0000,     /* R20248 */
+    0x0000,     /* R20249 */
+    0x0000,     /* R20250 */
+    0x0000,     /* R20251 */
+    0x0000,     /* R20252 */
+    0x0000,     /* R20253 */
+    0x0000,     /* R20254 */
+    0x0000,     /* R20255 */
+    0x0000,     /* R20256 */
+    0x0000,     /* R20257 */
+    0x0000,     /* R20258 */
+    0x0000,     /* R20259 */
+    0x0000,     /* R20260 */
+    0x0000,     /* R20261 */
+    0x0000,     /* R20262 */
+    0x0000,     /* R20263 */
+    0x0000,     /* R20264 */
+    0x0000,     /* R20265 */
+    0x0000,     /* R20266 */
+    0x0000,     /* R20267 */
+    0x0000,     /* R20268 */
+    0x0000,     /* R20269 */
+    0x0000,     /* R20270 */
+    0x0000,     /* R20271 */
+    0x0000,     /* R20272 */
+    0x0000,     /* R20273 */
+    0x0000,     /* R20274 */
+    0x0000,     /* R20275 */
+    0x0000,     /* R20276 */
+    0x0000,     /* R20277 */
+    0x0000,     /* R20278 */
+    0x0000,     /* R20279 */
+    0x0000,     /* R20280 */
+    0x0000,     /* R20281 */
+    0x0000,     /* R20282 */
+    0x0000,     /* R20283 */
+    0x0000,     /* R20284 */
+    0x0000,     /* R20285 */
+    0x0000,     /* R20286 */
+    0x0000,     /* R20287 */
+    0x0000,     /* R20288 */
+    0x0000,     /* R20289 */
+    0x0000,     /* R20290 */
+    0x0000,     /* R20291 */
+    0x0000,     /* R20292 */
+    0x0000,     /* R20293 */
+    0x0000,     /* R20294 */
+    0x0000,     /* R20295 */
+    0x0000,     /* R20296 */
+    0x0000,     /* R20297 */
+    0x0000,     /* R20298 */
+    0x0000,     /* R20299 */
+    0x0000,     /* R20300 */
+    0x0000,     /* R20301 */
+    0x0000,     /* R20302 */
+    0x0000,     /* R20303 */
+    0x0000,     /* R20304 */
+    0x0000,     /* R20305 */
+    0x0000,     /* R20306 */
+    0x0000,     /* R20307 */
+    0x0000,     /* R20308 */
+    0x0000,     /* R20309 */
+    0x0000,     /* R20310 */
+    0x0000,     /* R20311 */
+    0x0000,     /* R20312 */
+    0x0000,     /* R20313 */
+    0x0000,     /* R20314 */
+    0x0000,     /* R20315 */
+    0x0000,     /* R20316 */
+    0x0000,     /* R20317 */
+    0x0000,     /* R20318 */
+    0x0000,     /* R20319 */
+    0x0000,     /* R20320 */
+    0x0000,     /* R20321 */
+    0x0000,     /* R20322 */
+    0x0000,     /* R20323 */
+    0x0000,     /* R20324 */
+    0x0000,     /* R20325 */
+    0x0000,     /* R20326 */
+    0x0000,     /* R20327 */
+    0x0000,     /* R20328 */
+    0x0000,     /* R20329 */
+    0x0000,     /* R20330 */
+    0x0000,     /* R20331 */
+    0x0000,     /* R20332 */
+    0x0000,     /* R20333 */
+    0x0000,     /* R20334 */
+    0x0000,     /* R20335 */
+    0x0000,     /* R20336 */
+    0x0000,     /* R20337 */
+    0x0000,     /* R20338 */
+    0x0000,     /* R20339 */
+    0x0000,     /* R20340 */
+    0x0000,     /* R20341 */
+    0x0000,     /* R20342 */
+    0x0000,     /* R20343 */
+    0x0000,     /* R20344 */
+    0x0000,     /* R20345 */
+    0x0000,     /* R20346 */
+    0x0000,     /* R20347 */
+    0x0000,     /* R20348 */
+    0x0000,     /* R20349 */
+    0x0000,     /* R20350 */
+    0x0000,     /* R20351 */
+    0x0000,     /* R20352 */
+    0x0000,     /* R20353 */
+    0x0000,     /* R20354 */
+    0x0000,     /* R20355 */
+    0x0000,     /* R20356 */
+    0x0000,     /* R20357 */
+    0x0000,     /* R20358 */
+    0x0000,     /* R20359 */
+    0x0000,     /* R20360 */
+    0x0000,     /* R20361 */
+    0x0000,     /* R20362 */
+    0x0000,     /* R20363 */
+    0x0000,     /* R20364 */
+    0x0000,     /* R20365 */
+    0x0000,     /* R20366 */
+    0x0000,     /* R20367 */
+    0x0000,     /* R20368 */
+    0x0000,     /* R20369 */
+    0x0000,     /* R20370 */
+    0x0000,     /* R20371 */
+    0x0000,     /* R20372 */
+    0x0000,     /* R20373 */
+    0x0000,     /* R20374 */
+    0x0000,     /* R20375 */
+    0x0000,     /* R20376 */
+    0x0000,     /* R20377 */
+    0x0000,     /* R20378 */
+    0x0000,     /* R20379 */
+    0x0000,     /* R20380 */
+    0x0000,     /* R20381 */
+    0x0000,     /* R20382 */
+    0x0000,     /* R20383 */
+    0x0000,     /* R20384 */
+    0x0000,     /* R20385 */
+    0x0000,     /* R20386 */
+    0x0000,     /* R20387 */
+    0x0000,     /* R20388 */
+    0x0000,     /* R20389 */
+    0x0000,     /* R20390 */
+    0x0000,     /* R20391 */
+    0x0000,     /* R20392 */
+    0x0000,     /* R20393 */
+    0x0000,     /* R20394 */
+    0x0000,     /* R20395 */
+    0x0000,     /* R20396 */
+    0x0000,     /* R20397 */
+    0x0000,     /* R20398 */
+    0x0000,     /* R20399 */
+    0x0000,     /* R20400 */
+    0x0000,     /* R20401 */
+    0x0000,     /* R20402 */
+    0x0000,     /* R20403 */
+    0x0000,     /* R20404 */
+    0x0000,     /* R20405 */
+    0x0000,     /* R20406 */
+    0x0000,     /* R20407 */
+    0x0000,     /* R20408 */
+    0x0000,     /* R20409 */
+    0x0000,     /* R20410 */
+    0x0000,     /* R20411 */
+    0x0000,     /* R20412 */
+    0x0000,     /* R20413 */
+    0x0000,     /* R20414 */
+    0x0000,     /* R20415 */
+    0x0000,     /* R20416 */
+    0x0000,     /* R20417 */
+    0x0000,     /* R20418 */
+    0x0000,     /* R20419 */
+    0x0000,     /* R20420 */
+    0x0000,     /* R20421 */
+    0x0000,     /* R20422 */
+    0x0000,     /* R20423 */
+    0x0000,     /* R20424 */
+    0x0000,     /* R20425 */
+    0x0000,     /* R20426 */
+    0x0000,     /* R20427 */
+    0x0000,     /* R20428 */
+    0x0000,     /* R20429 */
+    0x0000,     /* R20430 */
+    0x0000,     /* R20431 */
+    0x0000,     /* R20432 */
+    0x0000,     /* R20433 */
+    0x0000,     /* R20434 */
+    0x0000,     /* R20435 */
+    0x0000,     /* R20436 */
+    0x0000,     /* R20437 */
+    0x0000,     /* R20438 */
+    0x0000,     /* R20439 */
+    0x0000,     /* R20440 */
+    0x0000,     /* R20441 */
+    0x0000,     /* R20442 */
+    0x0000,     /* R20443 */
+    0x0000,     /* R20444 */
+    0x0000,     /* R20445 */
+    0x0000,     /* R20446 */
+    0x0000,     /* R20447 */
+    0x0000,     /* R20448 */
+    0x0000,     /* R20449 */
+    0x0000,     /* R20450 */
+    0x0000,     /* R20451 */
+    0x0000,     /* R20452 */
+    0x0000,     /* R20453 */
+    0x0000,     /* R20454 */
+    0x0000,     /* R20455 */
+    0x0000,     /* R20456 */
+    0x0000,     /* R20457 */
+    0x0000,     /* R20458 */
+    0x0000,     /* R20459 */
+    0x0000,     /* R20460 */
+    0x0000,     /* R20461 */
+    0x0000,     /* R20462 */
+    0x0000,     /* R20463 */
+    0x0000,     /* R20464 */
+    0x0000,     /* R20465 */
+    0x0000,     /* R20466 */
+    0x0000,     /* R20467 */
+    0x0000,     /* R20468 */
+    0x0000,     /* R20469 */
+    0x0000,     /* R20470 */
+    0x0000,     /* R20471 */
+    0x0000,     /* R20472 */
+    0x0000,     /* R20473 */
+    0x0000,     /* R20474 */
+    0x0000,     /* R20475 */
+    0x0000,     /* R20476 */
+    0x0000,     /* R20477 */
+    0x0000,     /* R20478 */
+    0x0000,     /* R20479 */
+    0x007F,     /* R20480 - DACR_RETUNE_C1_1 */
+    0xFFFF,     /* R20481 - DACR_RETUNE_C1_0 */
+    0x0000,     /* R20482 - DACR_RETUNE_C2_1 */
+    0x0000,     /* R20483 - DACR_RETUNE_C2_0 */
+    0x0000,     /* R20484 - DACR_RETUNE_C3_1 */
+    0x0000,     /* R20485 - DACR_RETUNE_C3_0 */
+    0x0000,     /* R20486 - DACR_RETUNE_C4_1 */
+    0x0000,     /* R20487 - DACR_RETUNE_C4_0 */
+    0x0000,     /* R20488 - DACR_RETUNE_C5_1 */
+    0x0000,     /* R20489 - DACR_RETUNE_C5_0 */
+    0x0000,     /* R20490 - DACR_RETUNE_C6_1 */
+    0x0000,     /* R20491 - DACR_RETUNE_C6_0 */
+    0x0000,     /* R20492 - DACR_RETUNE_C7_1 */
+    0x0000,     /* R20493 - DACR_RETUNE_C7_0 */
+    0x0000,     /* R20494 - DACR_RETUNE_C8_1 */
+    0x0000,     /* R20495 - DACR_RETUNE_C8_0 */
+    0x0000,     /* R20496 - DACR_RETUNE_C9_1 */
+    0x0000,     /* R20497 - DACR_RETUNE_C9_0 */
+    0x0000,     /* R20498 - DACR_RETUNE_C10_1 */
+    0x0000,     /* R20499 - DACR_RETUNE_C10_0 */
+    0x0000,     /* R20500 - DACR_RETUNE_C11_1 */
+    0x0000,     /* R20501 - DACR_RETUNE_C11_0 */
+    0x0000,     /* R20502 - DACR_RETUNE_C12_1 */
+    0x0000,     /* R20503 - DACR_RETUNE_C12_0 */
+    0x0000,     /* R20504 - DACR_RETUNE_C13_1 */
+    0x0000,     /* R20505 - DACR_RETUNE_C13_0 */
+    0x0000,     /* R20506 - DACR_RETUNE_C14_1 */
+    0x0000,     /* R20507 - DACR_RETUNE_C14_0 */
+    0x0000,     /* R20508 - DACR_RETUNE_C15_1 */
+    0x0000,     /* R20509 - DACR_RETUNE_C15_0 */
+    0x0000,     /* R20510 - DACR_RETUNE_C16_1 */
+    0x0000,     /* R20511 - DACR_RETUNE_C16_0 */
+    0x0000,     /* R20512 - DACR_RETUNE_C17_1 */
+    0x0000,     /* R20513 - DACR_RETUNE_C17_0 */
+    0x0000,     /* R20514 - DACR_RETUNE_C18_1 */
+    0x0000,     /* R20515 - DACR_RETUNE_C18_0 */
+    0x0000,     /* R20516 - DACR_RETUNE_C19_1 */
+    0x0000,     /* R20517 - DACR_RETUNE_C19_0 */
+    0x0000,     /* R20518 - DACR_RETUNE_C20_1 */
+    0x0000,     /* R20519 - DACR_RETUNE_C20_0 */
+    0x0000,     /* R20520 - DACR_RETUNE_C21_1 */
+    0x0000,     /* R20521 - DACR_RETUNE_C21_0 */
+    0x0000,     /* R20522 - DACR_RETUNE_C22_1 */
+    0x0000,     /* R20523 - DACR_RETUNE_C22_0 */
+    0x0000,     /* R20524 - DACR_RETUNE_C23_1 */
+    0x0000,     /* R20525 - DACR_RETUNE_C23_0 */
+    0x0000,     /* R20526 - DACR_RETUNE_C24_1 */
+    0x0000,     /* R20527 - DACR_RETUNE_C24_0 */
+    0x0000,     /* R20528 - DACR_RETUNE_C25_1 */
+    0x0000,     /* R20529 - DACR_RETUNE_C25_0 */
+    0x0000,     /* R20530 - DACR_RETUNE_C26_1 */
+    0x0000,     /* R20531 - DACR_RETUNE_C26_0 */
+    0x0000,     /* R20532 - DACR_RETUNE_C27_1 */
+    0x0000,     /* R20533 - DACR_RETUNE_C27_0 */
+    0x0000,     /* R20534 - DACR_RETUNE_C28_1 */
+    0x0000,     /* R20535 - DACR_RETUNE_C28_0 */
+    0x0000,     /* R20536 - DACR_RETUNE_C29_1 */
+    0x0000,     /* R20537 - DACR_RETUNE_C29_0 */
+    0x0000,     /* R20538 - DACR_RETUNE_C30_1 */
+    0x0000,     /* R20539 - DACR_RETUNE_C30_0 */
+    0x0000,     /* R20540 - DACR_RETUNE_C31_1 */
+    0x0000,     /* R20541 - DACR_RETUNE_C31_0 */
+    0x0000,     /* R20542 - DACR_RETUNE_C32_1 */
+    0x0000,     /* R20543 - DACR_RETUNE_C32_0 */
+    0x0000,     /* R20544 */
+    0x0000,     /* R20545 */
+    0x0000,     /* R20546 */
+    0x0000,     /* R20547 */
+    0x0000,     /* R20548 */
+    0x0000,     /* R20549 */
+    0x0000,     /* R20550 */
+    0x0000,     /* R20551 */
+    0x0000,     /* R20552 */
+    0x0000,     /* R20553 */
+    0x0000,     /* R20554 */
+    0x0000,     /* R20555 */
+    0x0000,     /* R20556 */
+    0x0000,     /* R20557 */
+    0x0000,     /* R20558 */
+    0x0000,     /* R20559 */
+    0x0000,     /* R20560 */
+    0x0000,     /* R20561 */
+    0x0000,     /* R20562 */
+    0x0000,     /* R20563 */
+    0x0000,     /* R20564 */
+    0x0000,     /* R20565 */
+    0x0000,     /* R20566 */
+    0x0000,     /* R20567 */
+    0x0000,     /* R20568 */
+    0x0000,     /* R20569 */
+    0x0000,     /* R20570 */
+    0x0000,     /* R20571 */
+    0x0000,     /* R20572 */
+    0x0000,     /* R20573 */
+    0x0000,     /* R20574 */
+    0x0000,     /* R20575 */
+    0x0000,     /* R20576 */
+    0x0000,     /* R20577 */
+    0x0000,     /* R20578 */
+    0x0000,     /* R20579 */
+    0x0000,     /* R20580 */
+    0x0000,     /* R20581 */
+    0x0000,     /* R20582 */
+    0x0000,     /* R20583 */
+    0x0000,     /* R20584 */
+    0x0000,     /* R20585 */
+    0x0000,     /* R20586 */
+    0x0000,     /* R20587 */
+    0x0000,     /* R20588 */
+    0x0000,     /* R20589 */
+    0x0000,     /* R20590 */
+    0x0000,     /* R20591 */
+    0x0000,     /* R20592 */
+    0x0000,     /* R20593 */
+    0x0000,     /* R20594 */
+    0x0000,     /* R20595 */
+    0x0000,     /* R20596 */
+    0x0000,     /* R20597 */
+    0x0000,     /* R20598 */
+    0x0000,     /* R20599 */
+    0x0000,     /* R20600 */
+    0x0000,     /* R20601 */
+    0x0000,     /* R20602 */
+    0x0000,     /* R20603 */
+    0x0000,     /* R20604 */
+    0x0000,     /* R20605 */
+    0x0000,     /* R20606 */
+    0x0000,     /* R20607 */
+    0x0000,     /* R20608 */
+    0x0000,     /* R20609 */
+    0x0000,     /* R20610 */
+    0x0000,     /* R20611 */
+    0x0000,     /* R20612 */
+    0x0000,     /* R20613 */
+    0x0000,     /* R20614 */
+    0x0000,     /* R20615 */
+    0x0000,     /* R20616 */
+    0x0000,     /* R20617 */
+    0x0000,     /* R20618 */
+    0x0000,     /* R20619 */
+    0x0000,     /* R20620 */
+    0x0000,     /* R20621 */
+    0x0000,     /* R20622 */
+    0x0000,     /* R20623 */
+    0x0000,     /* R20624 */
+    0x0000,     /* R20625 */
+    0x0000,     /* R20626 */
+    0x0000,     /* R20627 */
+    0x0000,     /* R20628 */
+    0x0000,     /* R20629 */
+    0x0000,     /* R20630 */
+    0x0000,     /* R20631 */
+    0x0000,     /* R20632 */
+    0x0000,     /* R20633 */
+    0x0000,     /* R20634 */
+    0x0000,     /* R20635 */
+    0x0000,     /* R20636 */
+    0x0000,     /* R20637 */
+    0x0000,     /* R20638 */
+    0x0000,     /* R20639 */
+    0x0000,     /* R20640 */
+    0x0000,     /* R20641 */
+    0x0000,     /* R20642 */
+    0x0000,     /* R20643 */
+    0x0000,     /* R20644 */
+    0x0000,     /* R20645 */
+    0x0000,     /* R20646 */
+    0x0000,     /* R20647 */
+    0x0000,     /* R20648 */
+    0x0000,     /* R20649 */
+    0x0000,     /* R20650 */
+    0x0000,     /* R20651 */
+    0x0000,     /* R20652 */
+    0x0000,     /* R20653 */
+    0x0000,     /* R20654 */
+    0x0000,     /* R20655 */
+    0x0000,     /* R20656 */
+    0x0000,     /* R20657 */
+    0x0000,     /* R20658 */
+    0x0000,     /* R20659 */
+    0x0000,     /* R20660 */
+    0x0000,     /* R20661 */
+    0x0000,     /* R20662 */
+    0x0000,     /* R20663 */
+    0x0000,     /* R20664 */
+    0x0000,     /* R20665 */
+    0x0000,     /* R20666 */
+    0x0000,     /* R20667 */
+    0x0000,     /* R20668 */
+    0x0000,     /* R20669 */
+    0x0000,     /* R20670 */
+    0x0000,     /* R20671 */
+    0x0000,     /* R20672 */
+    0x0000,     /* R20673 */
+    0x0000,     /* R20674 */
+    0x0000,     /* R20675 */
+    0x0000,     /* R20676 */
+    0x0000,     /* R20677 */
+    0x0000,     /* R20678 */
+    0x0000,     /* R20679 */
+    0x0000,     /* R20680 */
+    0x0000,     /* R20681 */
+    0x0000,     /* R20682 */
+    0x0000,     /* R20683 */
+    0x0000,     /* R20684 */
+    0x0000,     /* R20685 */
+    0x0000,     /* R20686 */
+    0x0000,     /* R20687 */
+    0x0000,     /* R20688 */
+    0x0000,     /* R20689 */
+    0x0000,     /* R20690 */
+    0x0000,     /* R20691 */
+    0x0000,     /* R20692 */
+    0x0000,     /* R20693 */
+    0x0000,     /* R20694 */
+    0x0000,     /* R20695 */
+    0x0000,     /* R20696 */
+    0x0000,     /* R20697 */
+    0x0000,     /* R20698 */
+    0x0000,     /* R20699 */
+    0x0000,     /* R20700 */
+    0x0000,     /* R20701 */
+    0x0000,     /* R20702 */
+    0x0000,     /* R20703 */
+    0x0000,     /* R20704 */
+    0x0000,     /* R20705 */
+    0x0000,     /* R20706 */
+    0x0000,     /* R20707 */
+    0x0000,     /* R20708 */
+    0x0000,     /* R20709 */
+    0x0000,     /* R20710 */
+    0x0000,     /* R20711 */
+    0x0000,     /* R20712 */
+    0x0000,     /* R20713 */
+    0x0000,     /* R20714 */
+    0x0000,     /* R20715 */
+    0x0000,     /* R20716 */
+    0x0000,     /* R20717 */
+    0x0000,     /* R20718 */
+    0x0000,     /* R20719 */
+    0x0000,     /* R20720 */
+    0x0000,     /* R20721 */
+    0x0000,     /* R20722 */
+    0x0000,     /* R20723 */
+    0x0000,     /* R20724 */
+    0x0000,     /* R20725 */
+    0x0000,     /* R20726 */
+    0x0000,     /* R20727 */
+    0x0000,     /* R20728 */
+    0x0000,     /* R20729 */
+    0x0000,     /* R20730 */
+    0x0000,     /* R20731 */
+    0x0000,     /* R20732 */
+    0x0000,     /* R20733 */
+    0x0000,     /* R20734 */
+    0x0000,     /* R20735 */
+    0x0000,     /* R20736 */
+    0x0000,     /* R20737 */
+    0x0000,     /* R20738 */
+    0x0000,     /* R20739 */
+    0x0000,     /* R20740 */
+    0x0000,     /* R20741 */
+    0x0000,     /* R20742 */
+    0x0000,     /* R20743 */
+    0x0000,     /* R20744 */
+    0x0000,     /* R20745 */
+    0x0000,     /* R20746 */
+    0x0000,     /* R20747 */
+    0x0000,     /* R20748 */
+    0x0000,     /* R20749 */
+    0x0000,     /* R20750 */
+    0x0000,     /* R20751 */
+    0x0000,     /* R20752 */
+    0x0000,     /* R20753 */
+    0x0000,     /* R20754 */
+    0x0000,     /* R20755 */
+    0x0000,     /* R20756 */
+    0x0000,     /* R20757 */
+    0x0000,     /* R20758 */
+    0x0000,     /* R20759 */
+    0x0000,     /* R20760 */
+    0x0000,     /* R20761 */
+    0x0000,     /* R20762 */
+    0x0000,     /* R20763 */
+    0x0000,     /* R20764 */
+    0x0000,     /* R20765 */
+    0x0000,     /* R20766 */
+    0x0000,     /* R20767 */
+    0x0000,     /* R20768 */
+    0x0000,     /* R20769 */
+    0x0000,     /* R20770 */
+    0x0000,     /* R20771 */
+    0x0000,     /* R20772 */
+    0x0000,     /* R20773 */
+    0x0000,     /* R20774 */
+    0x0000,     /* R20775 */
+    0x0000,     /* R20776 */
+    0x0000,     /* R20777 */
+    0x0000,     /* R20778 */
+    0x0000,     /* R20779 */
+    0x0000,     /* R20780 */
+    0x0000,     /* R20781 */
+    0x0000,     /* R20782 */
+    0x0000,     /* R20783 */
+    0x0000,     /* R20784 */
+    0x0000,     /* R20785 */
+    0x0000,     /* R20786 */
+    0x0000,     /* R20787 */
+    0x0000,     /* R20788 */
+    0x0000,     /* R20789 */
+    0x0000,     /* R20790 */
+    0x0000,     /* R20791 */
+    0x0000,     /* R20792 */
+    0x0000,     /* R20793 */
+    0x0000,     /* R20794 */
+    0x0000,     /* R20795 */
+    0x0000,     /* R20796 */
+    0x0000,     /* R20797 */
+    0x0000,     /* R20798 */
+    0x0000,     /* R20799 */
+    0x0000,     /* R20800 */
+    0x0000,     /* R20801 */
+    0x0000,     /* R20802 */
+    0x0000,     /* R20803 */
+    0x0000,     /* R20804 */
+    0x0000,     /* R20805 */
+    0x0000,     /* R20806 */
+    0x0000,     /* R20807 */
+    0x0000,     /* R20808 */
+    0x0000,     /* R20809 */
+    0x0000,     /* R20810 */
+    0x0000,     /* R20811 */
+    0x0000,     /* R20812 */
+    0x0000,     /* R20813 */
+    0x0000,     /* R20814 */
+    0x0000,     /* R20815 */
+    0x0000,     /* R20816 */
+    0x0000,     /* R20817 */
+    0x0000,     /* R20818 */
+    0x0000,     /* R20819 */
+    0x0000,     /* R20820 */
+    0x0000,     /* R20821 */
+    0x0000,     /* R20822 */
+    0x0000,     /* R20823 */
+    0x0000,     /* R20824 */
+    0x0000,     /* R20825 */
+    0x0000,     /* R20826 */
+    0x0000,     /* R20827 */
+    0x0000,     /* R20828 */
+    0x0000,     /* R20829 */
+    0x0000,     /* R20830 */
+    0x0000,     /* R20831 */
+    0x0000,     /* R20832 */
+    0x0000,     /* R20833 */
+    0x0000,     /* R20834 */
+    0x0000,     /* R20835 */
+    0x0000,     /* R20836 */
+    0x0000,     /* R20837 */
+    0x0000,     /* R20838 */
+    0x0000,     /* R20839 */
+    0x0000,     /* R20840 */
+    0x0000,     /* R20841 */
+    0x0000,     /* R20842 */
+    0x0000,     /* R20843 */
+    0x0000,     /* R20844 */
+    0x0000,     /* R20845 */
+    0x0000,     /* R20846 */
+    0x0000,     /* R20847 */
+    0x0000,     /* R20848 */
+    0x0000,     /* R20849 */
+    0x0000,     /* R20850 */
+    0x0000,     /* R20851 */
+    0x0000,     /* R20852 */
+    0x0000,     /* R20853 */
+    0x0000,     /* R20854 */
+    0x0000,     /* R20855 */
+    0x0000,     /* R20856 */
+    0x0000,     /* R20857 */
+    0x0000,     /* R20858 */
+    0x0000,     /* R20859 */
+    0x0000,     /* R20860 */
+    0x0000,     /* R20861 */
+    0x0000,     /* R20862 */
+    0x0000,     /* R20863 */
+    0x0000,     /* R20864 */
+    0x0000,     /* R20865 */
+    0x0000,     /* R20866 */
+    0x0000,     /* R20867 */
+    0x0000,     /* R20868 */
+    0x0000,     /* R20869 */
+    0x0000,     /* R20870 */
+    0x0000,     /* R20871 */
+    0x0000,     /* R20872 */
+    0x0000,     /* R20873 */
+    0x0000,     /* R20874 */
+    0x0000,     /* R20875 */
+    0x0000,     /* R20876 */
+    0x0000,     /* R20877 */
+    0x0000,     /* R20878 */
+    0x0000,     /* R20879 */
+    0x0000,     /* R20880 */
+    0x0000,     /* R20881 */
+    0x0000,     /* R20882 */
+    0x0000,     /* R20883 */
+    0x0000,     /* R20884 */
+    0x0000,     /* R20885 */
+    0x0000,     /* R20886 */
+    0x0000,     /* R20887 */
+    0x0000,     /* R20888 */
+    0x0000,     /* R20889 */
+    0x0000,     /* R20890 */
+    0x0000,     /* R20891 */
+    0x0000,     /* R20892 */
+    0x0000,     /* R20893 */
+    0x0000,     /* R20894 */
+    0x0000,     /* R20895 */
+    0x0000,     /* R20896 */
+    0x0000,     /* R20897 */
+    0x0000,     /* R20898 */
+    0x0000,     /* R20899 */
+    0x0000,     /* R20900 */
+    0x0000,     /* R20901 */
+    0x0000,     /* R20902 */
+    0x0000,     /* R20903 */
+    0x0000,     /* R20904 */
+    0x0000,     /* R20905 */
+    0x0000,     /* R20906 */
+    0x0000,     /* R20907 */
+    0x0000,     /* R20908 */
+    0x0000,     /* R20909 */
+    0x0000,     /* R20910 */
+    0x0000,     /* R20911 */
+    0x0000,     /* R20912 */
+    0x0000,     /* R20913 */
+    0x0000,     /* R20914 */
+    0x0000,     /* R20915 */
+    0x0000,     /* R20916 */
+    0x0000,     /* R20917 */
+    0x0000,     /* R20918 */
+    0x0000,     /* R20919 */
+    0x0000,     /* R20920 */
+    0x0000,     /* R20921 */
+    0x0000,     /* R20922 */
+    0x0000,     /* R20923 */
+    0x0000,     /* R20924 */
+    0x0000,     /* R20925 */
+    0x0000,     /* R20926 */
+    0x0000,     /* R20927 */
+    0x0000,     /* R20928 */
+    0x0000,     /* R20929 */
+    0x0000,     /* R20930 */
+    0x0000,     /* R20931 */
+    0x0000,     /* R20932 */
+    0x0000,     /* R20933 */
+    0x0000,     /* R20934 */
+    0x0000,     /* R20935 */
+    0x0000,     /* R20936 */
+    0x0000,     /* R20937 */
+    0x0000,     /* R20938 */
+    0x0000,     /* R20939 */
+    0x0000,     /* R20940 */
+    0x0000,     /* R20941 */
+    0x0000,     /* R20942 */
+    0x0000,     /* R20943 */
+    0x0000,     /* R20944 */
+    0x0000,     /* R20945 */
+    0x0000,     /* R20946 */
+    0x0000,     /* R20947 */
+    0x0000,     /* R20948 */
+    0x0000,     /* R20949 */
+    0x0000,     /* R20950 */
+    0x0000,     /* R20951 */
+    0x0000,     /* R20952 */
+    0x0000,     /* R20953 */
+    0x0000,     /* R20954 */
+    0x0000,     /* R20955 */
+    0x0000,     /* R20956 */
+    0x0000,     /* R20957 */
+    0x0000,     /* R20958 */
+    0x0000,     /* R20959 */
+    0x0000,     /* R20960 */
+    0x0000,     /* R20961 */
+    0x0000,     /* R20962 */
+    0x0000,     /* R20963 */
+    0x0000,     /* R20964 */
+    0x0000,     /* R20965 */
+    0x0000,     /* R20966 */
+    0x0000,     /* R20967 */
+    0x0000,     /* R20968 */
+    0x0000,     /* R20969 */
+    0x0000,     /* R20970 */
+    0x0000,     /* R20971 */
+    0x0000,     /* R20972 */
+    0x0000,     /* R20973 */
+    0x0000,     /* R20974 */
+    0x0000,     /* R20975 */
+    0x0000,     /* R20976 */
+    0x0000,     /* R20977 */
+    0x0000,     /* R20978 */
+    0x0000,     /* R20979 */
+    0x0000,     /* R20980 */
+    0x0000,     /* R20981 */
+    0x0000,     /* R20982 */
+    0x0000,     /* R20983 */
+    0x0000,     /* R20984 */
+    0x0000,     /* R20985 */
+    0x0000,     /* R20986 */
+    0x0000,     /* R20987 */
+    0x0000,     /* R20988 */
+    0x0000,     /* R20989 */
+    0x0000,     /* R20990 */
+    0x0000,     /* R20991 */
+    0x008C,     /* R20992 - VSS_XHD2_1 */
+    0x0200,     /* R20993 - VSS_XHD2_0 */
+    0x0035,     /* R20994 - VSS_XHD3_1 */
+    0x0700,     /* R20995 - VSS_XHD3_0 */
+    0x003A,     /* R20996 - VSS_XHN1_1 */
+    0x4100,     /* R20997 - VSS_XHN1_0 */
+    0x008B,     /* R20998 - VSS_XHN2_1 */
+    0x7D00,     /* R20999 - VSS_XHN2_0 */
+    0x003A,     /* R21000 - VSS_XHN3_1 */
+    0x4100,     /* R21001 - VSS_XHN3_0 */
+    0x008C,     /* R21002 - VSS_XLA_1 */
+    0xFEE8,     /* R21003 - VSS_XLA_0 */
+    0x0078,     /* R21004 - VSS_XLB_1 */
+    0x0000,     /* R21005 - VSS_XLB_0 */
+    0x003F,     /* R21006 - VSS_XLG_1 */
+    0xB260,     /* R21007 - VSS_XLG_0 */
+    0x002D,     /* R21008 - VSS_PG2_1 */
+    0x1818,     /* R21009 - VSS_PG2_0 */
+    0x0020,     /* R21010 - VSS_PG_1 */
+    0x0000,     /* R21011 - VSS_PG_0 */
+    0x00F1,     /* R21012 - VSS_XTD1_1 */
+    0x8340,     /* R21013 - VSS_XTD1_0 */
+    0x00FB,     /* R21014 - VSS_XTD2_1 */
+    0x8300,     /* R21015 - VSS_XTD2_0 */
+    0x00EE,     /* R21016 - VSS_XTD3_1 */
+    0xAEC0,     /* R21017 - VSS_XTD3_0 */
+    0x00FB,     /* R21018 - VSS_XTD4_1 */
+    0xAC40,     /* R21019 - VSS_XTD4_0 */
+    0x00F1,     /* R21020 - VSS_XTD5_1 */
+    0x7F80,     /* R21021 - VSS_XTD5_0 */
+    0x00F4,     /* R21022 - VSS_XTD6_1 */
+    0x3B40,     /* R21023 - VSS_XTD6_0 */
+    0x00F5,     /* R21024 - VSS_XTD7_1 */
+    0xFB00,     /* R21025 - VSS_XTD7_0 */
+    0x00EA,     /* R21026 - VSS_XTD8_1 */
+    0x10C0,     /* R21027 - VSS_XTD8_0 */
+    0x00FC,     /* R21028 - VSS_XTD9_1 */
+    0xC580,     /* R21029 - VSS_XTD9_0 */
+    0x00E2,     /* R21030 - VSS_XTD10_1 */
+    0x75C0,     /* R21031 - VSS_XTD10_0 */
+    0x0004,     /* R21032 - VSS_XTD11_1 */
+    0xB480,     /* R21033 - VSS_XTD11_0 */
+    0x00D4,     /* R21034 - VSS_XTD12_1 */
+    0xF980,     /* R21035 - VSS_XTD12_0 */
+    0x0004,     /* R21036 - VSS_XTD13_1 */
+    0x9140,     /* R21037 - VSS_XTD13_0 */
+    0x00D8,     /* R21038 - VSS_XTD14_1 */
+    0xA480,     /* R21039 - VSS_XTD14_0 */
+    0x0002,     /* R21040 - VSS_XTD15_1 */
+    0x3DC0,     /* R21041 - VSS_XTD15_0 */
+    0x00CF,     /* R21042 - VSS_XTD16_1 */
+    0x7A80,     /* R21043 - VSS_XTD16_0 */
+    0x00DC,     /* R21044 - VSS_XTD17_1 */
+    0x0600,     /* R21045 - VSS_XTD17_0 */
+    0x00F2,     /* R21046 - VSS_XTD18_1 */
+    0xDAC0,     /* R21047 - VSS_XTD18_0 */
+    0x00BA,     /* R21048 - VSS_XTD19_1 */
+    0xF340,     /* R21049 - VSS_XTD19_0 */
+    0x000A,     /* R21050 - VSS_XTD20_1 */
+    0x7940,     /* R21051 - VSS_XTD20_0 */
+    0x001C,     /* R21052 - VSS_XTD21_1 */
+    0x0680,     /* R21053 - VSS_XTD21_0 */
+    0x00FD,     /* R21054 - VSS_XTD22_1 */
+    0x2D00,     /* R21055 - VSS_XTD22_0 */
+    0x001C,     /* R21056 - VSS_XTD23_1 */
+    0xE840,     /* R21057 - VSS_XTD23_0 */
+    0x000D,     /* R21058 - VSS_XTD24_1 */
+    0xDC40,     /* R21059 - VSS_XTD24_0 */
+    0x00FC,     /* R21060 - VSS_XTD25_1 */
+    0x9D00,     /* R21061 - VSS_XTD25_0 */
+    0x0009,     /* R21062 - VSS_XTD26_1 */
+    0x5580,     /* R21063 - VSS_XTD26_0 */
+    0x00FE,     /* R21064 - VSS_XTD27_1 */
+    0x7E80,     /* R21065 - VSS_XTD27_0 */
+    0x000E,     /* R21066 - VSS_XTD28_1 */
+    0xAB40,     /* R21067 - VSS_XTD28_0 */
+    0x00F9,     /* R21068 - VSS_XTD29_1 */
+    0x9880,     /* R21069 - VSS_XTD29_0 */
+    0x0009,     /* R21070 - VSS_XTD30_1 */
+    0x87C0,     /* R21071 - VSS_XTD30_0 */
+    0x00FD,     /* R21072 - VSS_XTD31_1 */
+    0x2C40,     /* R21073 - VSS_XTD31_0 */
+    0x0009,     /* R21074 - VSS_XTD32_1 */
+    0x4800,     /* R21075 - VSS_XTD32_0 */
+    0x0003,     /* R21076 - VSS_XTS1_1 */
+    0x5F40,     /* R21077 - VSS_XTS1_0 */
+    0x0000,     /* R21078 - VSS_XTS2_1 */
+    0x8700,     /* R21079 - VSS_XTS2_0 */
+    0x00FA,     /* R21080 - VSS_XTS3_1 */
+    0xE4C0,     /* R21081 - VSS_XTS3_0 */
+    0x0000,     /* R21082 - VSS_XTS4_1 */
+    0x0B40,     /* R21083 - VSS_XTS4_0 */
+    0x0004,     /* R21084 - VSS_XTS5_1 */
+    0xE180,     /* R21085 - VSS_XTS5_0 */
+    0x0001,     /* R21086 - VSS_XTS6_1 */
+    0x1F40,     /* R21087 - VSS_XTS6_0 */
+    0x00F8,     /* R21088 - VSS_XTS7_1 */
+    0xB000,     /* R21089 - VSS_XTS7_0 */
+    0x00FB,     /* R21090 - VSS_XTS8_1 */
+    0xCBC0,     /* R21091 - VSS_XTS8_0 */
+    0x0004,     /* R21092 - VSS_XTS9_1 */
+    0xF380,     /* R21093 - VSS_XTS9_0 */
+    0x0007,     /* R21094 - VSS_XTS10_1 */
+    0xDF40,     /* R21095 - VSS_XTS10_0 */
+    0x00FF,     /* R21096 - VSS_XTS11_1 */
+    0x0700,     /* R21097 - VSS_XTS11_0 */
+    0x00EF,     /* R21098 - VSS_XTS12_1 */
+    0xD700,     /* R21099 - VSS_XTS12_0 */
+    0x00FB,     /* R21100 - VSS_XTS13_1 */
+    0xAF40,     /* R21101 - VSS_XTS13_0 */
+    0x0010,     /* R21102 - VSS_XTS14_1 */
+    0x8A80,     /* R21103 - VSS_XTS14_0 */
+    0x0011,     /* R21104 - VSS_XTS15_1 */
+    0x07C0,     /* R21105 - VSS_XTS15_0 */
+    0x00E0,     /* R21106 - VSS_XTS16_1 */
+    0x0800,     /* R21107 - VSS_XTS16_0 */
+    0x00D2,     /* R21108 - VSS_XTS17_1 */
+    0x7600,     /* R21109 - VSS_XTS17_0 */
+    0x0020,     /* R21110 - VSS_XTS18_1 */
+    0xCF40,     /* R21111 - VSS_XTS18_0 */
+    0x0030,     /* R21112 - VSS_XTS19_1 */
+    0x2340,     /* R21113 - VSS_XTS19_0 */
+    0x00FD,     /* R21114 - VSS_XTS20_1 */
+    0x69C0,     /* R21115 - VSS_XTS20_0 */
+    0x0028,     /* R21116 - VSS_XTS21_1 */
+    0x3500,     /* R21117 - VSS_XTS21_0 */
+    0x0006,     /* R21118 - VSS_XTS22_1 */
+    0x3300,     /* R21119 - VSS_XTS22_0 */
+    0x00D9,     /* R21120 - VSS_XTS23_1 */
+    0xF6C0,     /* R21121 - VSS_XTS23_0 */
+    0x00F3,     /* R21122 - VSS_XTS24_1 */
+    0x3340,     /* R21123 - VSS_XTS24_0 */
+    0x000F,     /* R21124 - VSS_XTS25_1 */
+    0x4200,     /* R21125 - VSS_XTS25_0 */
+    0x0004,     /* R21126 - VSS_XTS26_1 */
+    0x0C80,     /* R21127 - VSS_XTS26_0 */
+    0x00FB,     /* R21128 - VSS_XTS27_1 */
+    0x3F80,     /* R21129 - VSS_XTS27_0 */
+    0x00F7,     /* R21130 - VSS_XTS28_1 */
+    0x57C0,     /* R21131 - VSS_XTS28_0 */
+    0x0003,     /* R21132 - VSS_XTS29_1 */
+    0x5400,     /* R21133 - VSS_XTS29_0 */
+    0x0000,     /* R21134 - VSS_XTS30_1 */
+    0xC6C0,     /* R21135 - VSS_XTS30_0 */
+    0x0003,     /* R21136 - VSS_XTS31_1 */
+    0x12C0,     /* R21137 - VSS_XTS31_0 */
+    0x00FD,     /* R21138 - VSS_XTS32_1 */
+    0x8580,     /* R21139 - VSS_XTS32_0 */
+};
+
+const struct wm8962_reg_access wm8962_reg_access[WM8962_MAX_REGISTER + 1] = {
+	{ 0x00FF, 0x01FF, 0x0000 }, /* R0     - Left Input volume */
+	{ 0xFEFF, 0x01FF, 0xFFFF }, /* R1     - Right Input volume */
+	{ 0x00FF, 0x01FF, 0x0000 }, /* R2     - HPOUTL volume */
+	{ 0x00FF, 0x01FF, 0x0000 }, /* R3     - HPOUTR volume */
+	{ 0x07FE, 0x07FE, 0xFFFF }, /* R4     - Clocking1 */
+	{ 0x007F, 0x007F, 0x0000 }, /* R5     - ADC & DAC Control 1 */
+	{ 0x37ED, 0x37ED, 0x0000 }, /* R6     - ADC & DAC Control 2 */
+	{ 0x1FFF, 0x1FFF, 0x0000 }, /* R7     - Audio Interface 0 */
+	{ 0x0FEF, 0x0FEF, 0xFFFF }, /* R8     - Clocking2 */
+	{ 0x0B9F, 0x039F, 0x0000 }, /* R9     - Audio Interface 1 */
+	{ 0x00FF, 0x01FF, 0x0000 }, /* R10    - Left DAC volume */
+	{ 0x00FF, 0x01FF, 0x0000 }, /* R11    - Right DAC volume */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13 */
+	{ 0x07FF, 0x07FF, 0x0000 }, /* R14    - Audio Interface 2 */
+	{ 0xFFFF, 0xFFFF, 0xFFFF }, /* R15    - Software Reset */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16 */
+	{ 0x07FF, 0x07FF, 0x0000 }, /* R17    - ALC1 */
+	{ 0xF8FF, 0x00FF, 0xFFFF }, /* R18    - ALC2 */
+	{ 0x1DFF, 0x1DFF, 0x0000 }, /* R19    - ALC3 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20    - Noise Gate */
+	{ 0x00FF, 0x01FF, 0x0000 }, /* R21    - Left ADC volume */
+	{ 0x00FF, 0x01FF, 0x0000 }, /* R22    - Right ADC volume */
+	{ 0x0161, 0x0161, 0x0000 }, /* R23    - Additional control(1) */
+	{ 0x0008, 0x0008, 0x0000 }, /* R24    - Additional control(2) */
+	{ 0x07FE, 0x07FE, 0x0000 }, /* R25    - Pwr Mgmt (1) */
+	{ 0x01FB, 0x01FB, 0x0000 }, /* R26    - Pwr Mgmt (2) */
+	{ 0x0017, 0x0017, 0x0000 }, /* R27    - Additional Control (3) */
+	{ 0x001C, 0x001C, 0x0000 }, /* R28    - Anti-pop */
+	{ 0x0000, 0x0000, 0x0000 }, /* R29 */
+	{ 0xFFFE, 0xFFFE, 0x0000 }, /* R30    - Clocking 3 */
+	{ 0x000F, 0x000F, 0x0000 }, /* R31    - Input mixer control (1) */
+	{ 0x01FF, 0x01FF, 0x0000 }, /* R32    - Left input mixer volume */
+	{ 0x01FF, 0x01FF, 0x0000 }, /* R33    - Right input mixer volume */
+	{ 0x003F, 0x003F, 0x0000 }, /* R34    - Input mixer control (2) */
+	{ 0x003F, 0x003F, 0x0000 }, /* R35    - Input bias control */
+	{ 0x0000, 0x0000, 0x0000 }, /* R36 */
+	{ 0x001F, 0x001F, 0x0000 }, /* R37    - Left input PGA control */
+	{ 0x001F, 0x001F, 0x0000 }, /* R38    - Right input PGA control */
+	{ 0x0000, 0x0000, 0x0000 }, /* R39 */
+	{ 0x00FF, 0x01FF, 0x0000 }, /* R40    - SPKOUTL volume */
+	{ 0x00FF, 0x01FF, 0x0000 }, /* R41    - SPKOUTR volume */
+	{ 0x0000, 0x0000, 0x0000 }, /* R42 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R43 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R44 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R45 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R46 */
+	{ 0x000F, 0x0000, 0x0000 }, /* R47    - Thermal Shutdown Status */
+	{ 0x7EC7, 0x7E07, 0x0000 }, /* R48    - Additional Control (4) */
+	{ 0x00D3, 0x00D7, 0xFFFF }, /* R49    - Class D Control 1 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R50 */
+	{ 0x0047, 0x0047, 0x0000 }, /* R51    - Class D Control 2 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R52 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R53 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R54 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R55 */
+	{ 0x001E, 0x001E, 0x0000 }, /* R56    - Clocking 4 */
+	{ 0x02FC, 0x02FC, 0x0000 }, /* R57    - DAC DSP Mixing (1) */
+	{ 0x00FC, 0x00FC, 0x0000 }, /* R58    - DAC DSP Mixing (2) */
+	{ 0x0000, 0x0000, 0x0000 }, /* R59 */
+	{ 0x00CC, 0x00CC, 0x0000 }, /* R60    - DC Servo 0 */
+	{ 0x00DD, 0x00DD, 0x0000 }, /* R61    - DC Servo 1 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R62 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R63 */
+	{ 0x3F80, 0x3F80, 0x0000 }, /* R64    - DC Servo 4 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R65 */
+	{ 0x0780, 0x0000, 0xFFFF }, /* R66    - DC Servo 6 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R67 */
+	{ 0x0007, 0x0007, 0x0000 }, /* R68    - Analogue PGA Bias */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R69    - Analogue HP 0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R70 */
+	{ 0x01FF, 0x01FF, 0x0000 }, /* R71    - Analogue HP 2 */
+	{ 0x0001, 0x0001, 0x0000 }, /* R72    - Charge Pump 1 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R73 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R74 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R75 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R76 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R77 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R78 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R79 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R80 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R81 */
+	{ 0x0001, 0x0001, 0x0000 }, /* R82    - Charge Pump B */
+	{ 0x0000, 0x0000, 0x0000 }, /* R83 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R84 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R85 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R86 */
+	{ 0x00A0, 0x00A0, 0x0000 }, /* R87    - Write Sequencer Control 1 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R88 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R89 */
+	{ 0x007F, 0x01FF, 0x0000 }, /* R90    - Write Sequencer Control 2 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R91 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R92 */
+	{ 0x03F9, 0x0000, 0x0000 }, /* R93    - Write Sequencer Control 3 */
+	{ 0x0070, 0x0070, 0x0000 }, /* R94    - Control Interface */
+	{ 0x0000, 0x0000, 0x0000 }, /* R95 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R96 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R97 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R98 */
+	{ 0x000F, 0x000F, 0x0000 }, /* R99    - Mixer Enables */
+	{ 0x00BF, 0x00BF, 0x0000 }, /* R100   - Headphone Mixer (1) */
+	{ 0x00BF, 0x00BF, 0x0000 }, /* R101   - Headphone Mixer (2) */
+	{ 0x01FF, 0x01FF, 0x0000 }, /* R102   - Headphone Mixer (3) */
+	{ 0x01FF, 0x01FF, 0x0000 }, /* R103   - Headphone Mixer (4) */
+	{ 0x0000, 0x0000, 0x0000 }, /* R104 */
+	{ 0x00BF, 0x00BF, 0x0000 }, /* R105   - Speaker Mixer (1) */
+	{ 0x00BF, 0x00BF, 0x0000 }, /* R106   - Speaker Mixer (2) */
+	{ 0x01FF, 0x01FF, 0x0000 }, /* R107   - Speaker Mixer (3) */
+	{ 0x01FF, 0x01FF, 0x0000 }, /* R108   - Speaker Mixer (4) */
+	{ 0x00F0, 0x00F0, 0x0000 }, /* R109   - Speaker Mixer (5) */
+	{ 0x00F7, 0x00F7, 0x0000 }, /* R110   - Beep Generator (1) */
+	{ 0x0000, 0x0000, 0x0000 }, /* R111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R114 */
+	{ 0x001F, 0x001F, 0x0000 }, /* R115   - Oscillator Trim (3) */
+	{ 0x001F, 0x001F, 0x0000 }, /* R116   - Oscillator Trim (4) */
+	{ 0x0000, 0x0000, 0x0000 }, /* R117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R118 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R119   - Oscillator Trim (7) */
+	{ 0x0000, 0x0000, 0x0000 }, /* R120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R123 */
+	{ 0x0079, 0x0079, 0x0000 }, /* R124   - Analogue Clocking1 */
+	{ 0x00DF, 0x00DF, 0x0000 }, /* R125   - Analogue Clocking2 */
+	{ 0x000D, 0x000D, 0x0000 }, /* R126   - Analogue Clocking3 */
+	{ 0x0000, 0xFFFF, 0x0000 }, /* R127   - PLL Software Reset */
+	{ 0x0000, 0x0000, 0x0000 }, /* R128 */
+	{ 0x00B0, 0x00B0, 0x0000 }, /* R129   - PLL2 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R130 */
+	{ 0x0003, 0x0003, 0x0000 }, /* R131   - PLL 4 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R135 */
+	{ 0x005F, 0x005F, 0x0000 }, /* R136   - PLL 9 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R137   - PLL 10 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R138   - PLL 11 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R139   - PLL 12 */
+	{ 0x005F, 0x005F, 0x0000 }, /* R140   - PLL 13 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R141   - PLL 14 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R142   - PLL 15 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R143   - PLL 16 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R154 */
+	{ 0x0067, 0x0067, 0x0000 }, /* R155   - FLL Control (1) */
+	{ 0x01FB, 0x01FB, 0x0000 }, /* R156   - FLL Control (2) */
+	{ 0x0007, 0x0007, 0x0000 }, /* R157   - FLL Control (3) */
+	{ 0x0000, 0x0000, 0x0000 }, /* R158 */
+	{ 0x007F, 0x007F, 0x0000 }, /* R159   - FLL Control (5) */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R160   - FLL Control (6) */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R161   - FLL Control (7) */
+	{ 0x03FF, 0x03FF, 0x0000 }, /* R162   - FLL Control (8) */
+	{ 0x0000, 0x0000, 0x0000 }, /* R163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R251 */
+	{ 0x0005, 0x0005, 0x0000 }, /* R252   - General test 1 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R255 */
+	{ 0x000F, 0x000F, 0x0000 }, /* R256   - DF1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R257   - DF2 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R258   - DF3 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R259   - DF4 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R260   - DF5 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R261   - DF6 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R262   - DF7 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R263 */
+	{ 0x0003, 0x0003, 0x0000 }, /* R264   - LHPF1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R265   - LHPF2 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R267 */
+	{ 0x0077, 0x0077, 0x0000 }, /* R268   - THREED1 */
+	{ 0xFFFC, 0xFFFC, 0x0000 }, /* R269   - THREED2 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R270   - THREED3 */
+	{ 0xFFFC, 0xFFFC, 0x0000 }, /* R271   - THREED4 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R275 */
+	{ 0x7FFF, 0x7FFF, 0x0000 }, /* R276   - DRC 1 */
+	{ 0x1FFF, 0x1FFF, 0x0000 }, /* R277   - DRC 2 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R278   - DRC 3 */
+	{ 0x07FF, 0x07FF, 0x0000 }, /* R279   - DRC 4 */
+	{ 0x03FF, 0x03FF, 0x0000 }, /* R280   - DRC 5 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R284 */
+	{ 0x0003, 0x0003, 0x0000 }, /* R285   - Tloopback */
+	{ 0x0000, 0x0000, 0x0000 }, /* R286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R334 */
+	{ 0x0007, 0x0007, 0x0000 }, /* R335   - EQ1 */
+	{ 0xFFFE, 0xFFFE, 0x0000 }, /* R336   - EQ2 */
+	{ 0xFFC0, 0xFFC0, 0x0000 }, /* R337   - EQ3 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R338   - EQ4 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R339   - EQ5 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R340   - EQ6 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R341   - EQ7 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R342   - EQ8 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R343   - EQ9 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R344   - EQ10 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R345   - EQ11 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R346   - EQ12 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R347   - EQ13 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R348   - EQ14 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R349   - EQ15 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R350   - EQ16 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R351   - EQ17 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R352   - EQ18 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R353   - EQ19 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R354   - EQ20 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R355   - EQ21 */
+	{ 0xFFFE, 0xFFFE, 0x0000 }, /* R356   - EQ22 */
+	{ 0xFFC0, 0xFFC0, 0x0000 }, /* R357   - EQ23 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R358   - EQ24 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R359   - EQ25 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R360   - EQ26 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R361   - EQ27 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R362   - EQ28 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R363   - EQ29 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R364   - EQ30 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R365   - EQ31 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R366   - EQ32 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R367   - EQ33 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R368   - EQ34 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R369   - EQ35 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R370   - EQ36 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R371   - EQ37 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R372   - EQ38 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R373   - EQ39 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R374   - EQ40 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R375   - EQ41 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R512 */
+	{ 0x045F, 0x045F, 0x0000 }, /* R513   - GPIO 2 */
+	{ 0x045F, 0x045F, 0x0000 }, /* R514   - GPIO 3 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R515 */
+	{ 0xE75F, 0xE75F, 0x0000 }, /* R516   - GPIO 5 */
+	{ 0xE75F, 0xE75F, 0x0000 }, /* R517   - GPIO 6 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R559 */
+	{ 0x0030, 0x0030, 0xFFFF }, /* R560   - Interrupt Status 1 */
+	{ 0xFFED, 0xFFED, 0xFFFF }, /* R561   - Interrupt Status 2 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R567 */
+	{ 0x0030, 0x0030, 0x0000 }, /* R568   - Interrupt Status 1 Mask */
+	{ 0xFFED, 0xFFED, 0x0000 }, /* R569   - Interrupt Status 2 Mask */
+	{ 0x0000, 0x0000, 0x0000 }, /* R570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R575 */
+	{ 0x0001, 0x0001, 0x0000 }, /* R576   - Interrupt Control */
+	{ 0x0000, 0x0000, 0x0000 }, /* R577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R583 */
+	{ 0x002D, 0x002D, 0x0000 }, /* R584   - IRQ Debounce */
+	{ 0x0000, 0x0000, 0x0000 }, /* R585 */
+	{ 0xC000, 0xC000, 0x0000 }, /* R586   -  MICINT Source Pol */
+	{ 0x0000, 0x0000, 0x0000 }, /* R587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R767 */
+	{ 0x0001, 0x0001, 0x0000 }, /* R768   - DSP2 Power Management */
+	{ 0x0000, 0x0000, 0x0000 }, /* R769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1036 */
+	{ 0x0000, 0x003F, 0x0000 }, /* R1037  - DSP2_ExecControl */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R1999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R2999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R3999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4095 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4096  - Write Sequencer 0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4097  - Write Sequencer 1 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4098  - Write Sequencer 2 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4099  - Write Sequencer 3 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4100  - Write Sequencer 4 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4101  - Write Sequencer 5 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4102  - Write Sequencer 6 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4103  - Write Sequencer 7 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4104  - Write Sequencer 8 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4105  - Write Sequencer 9 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4106  - Write Sequencer 10 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4107  - Write Sequencer 11 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4108  - Write Sequencer 12 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4109  - Write Sequencer 13 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4110  - Write Sequencer 14 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4111  - Write Sequencer 15 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4112  - Write Sequencer 16 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4113  - Write Sequencer 17 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4114  - Write Sequencer 18 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4115  - Write Sequencer 19 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4116  - Write Sequencer 20 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4117  - Write Sequencer 21 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4118  - Write Sequencer 22 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4119  - Write Sequencer 23 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4120  - Write Sequencer 24 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4121  - Write Sequencer 25 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4122  - Write Sequencer 26 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4123  - Write Sequencer 27 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4124  - Write Sequencer 28 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4125  - Write Sequencer 29 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4126  - Write Sequencer 30 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4127  - Write Sequencer 31 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4128  - Write Sequencer 32 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4129  - Write Sequencer 33 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4130  - Write Sequencer 34 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4131  - Write Sequencer 35 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4132  - Write Sequencer 36 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4133  - Write Sequencer 37 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4134  - Write Sequencer 38 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4135  - Write Sequencer 39 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4136  - Write Sequencer 40 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4137  - Write Sequencer 41 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4138  - Write Sequencer 42 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4139  - Write Sequencer 43 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4140  - Write Sequencer 44 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4141  - Write Sequencer 45 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4142  - Write Sequencer 46 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4143  - Write Sequencer 47 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4144  - Write Sequencer 48 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4145  - Write Sequencer 49 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4146  - Write Sequencer 50 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4147  - Write Sequencer 51 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4148  - Write Sequencer 52 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4149  - Write Sequencer 53 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4150  - Write Sequencer 54 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4151  - Write Sequencer 55 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4152  - Write Sequencer 56 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4153  - Write Sequencer 57 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4154  - Write Sequencer 58 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4155  - Write Sequencer 59 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4156  - Write Sequencer 60 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4157  - Write Sequencer 61 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4158  - Write Sequencer 62 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4159  - Write Sequencer 63 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4160  - Write Sequencer 64 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4161  - Write Sequencer 65 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4162  - Write Sequencer 66 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4163  - Write Sequencer 67 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4164  - Write Sequencer 68 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4165  - Write Sequencer 69 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4166  - Write Sequencer 70 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4167  - Write Sequencer 71 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4168  - Write Sequencer 72 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4169  - Write Sequencer 73 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4170  - Write Sequencer 74 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4171  - Write Sequencer 75 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4172  - Write Sequencer 76 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4173  - Write Sequencer 77 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4174  - Write Sequencer 78 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4175  - Write Sequencer 79 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4176  - Write Sequencer 80 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4177  - Write Sequencer 81 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4178  - Write Sequencer 82 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4179  - Write Sequencer 83 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4180  - Write Sequencer 84 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4181  - Write Sequencer 85 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4182  - Write Sequencer 86 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4183  - Write Sequencer 87 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4184  - Write Sequencer 88 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4185  - Write Sequencer 89 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4186  - Write Sequencer 90 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4187  - Write Sequencer 91 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4188  - Write Sequencer 92 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4189  - Write Sequencer 93 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4190  - Write Sequencer 94 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4191  - Write Sequencer 95 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4192  - Write Sequencer 96 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4193  - Write Sequencer 97 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4194  - Write Sequencer 98 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4195  - Write Sequencer 99 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4196  - Write Sequencer 100 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4197  - Write Sequencer 101 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4198  - Write Sequencer 102 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4199  - Write Sequencer 103 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4200  - Write Sequencer 104 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4201  - Write Sequencer 105 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4202  - Write Sequencer 106 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4203  - Write Sequencer 107 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4204  - Write Sequencer 108 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4205  - Write Sequencer 109 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4206  - Write Sequencer 110 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4207  - Write Sequencer 111 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4208  - Write Sequencer 112 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4209  - Write Sequencer 113 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4210  - Write Sequencer 114 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4211  - Write Sequencer 115 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4212  - Write Sequencer 116 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4213  - Write Sequencer 117 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4214  - Write Sequencer 118 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4215  - Write Sequencer 119 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4216  - Write Sequencer 120 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4217  - Write Sequencer 121 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4218  - Write Sequencer 122 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4219  - Write Sequencer 123 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4220  - Write Sequencer 124 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4221  - Write Sequencer 125 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4222  - Write Sequencer 126 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4223  - Write Sequencer 127 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4224  - Write Sequencer 128 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4225  - Write Sequencer 129 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4226  - Write Sequencer 130 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4227  - Write Sequencer 131 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4228  - Write Sequencer 132 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4229  - Write Sequencer 133 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4230  - Write Sequencer 134 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4231  - Write Sequencer 135 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4232  - Write Sequencer 136 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4233  - Write Sequencer 137 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4234  - Write Sequencer 138 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4235  - Write Sequencer 139 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4236  - Write Sequencer 140 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4237  - Write Sequencer 141 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4238  - Write Sequencer 142 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4239  - Write Sequencer 143 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4240  - Write Sequencer 144 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4241  - Write Sequencer 145 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4242  - Write Sequencer 146 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4243  - Write Sequencer 147 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4244  - Write Sequencer 148 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4245  - Write Sequencer 149 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4246  - Write Sequencer 150 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4247  - Write Sequencer 151 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4248  - Write Sequencer 152 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4249  - Write Sequencer 153 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4250  - Write Sequencer 154 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4251  - Write Sequencer 155 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4252  - Write Sequencer 156 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4253  - Write Sequencer 157 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4254  - Write Sequencer 158 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4255  - Write Sequencer 159 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4256  - Write Sequencer 160 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4257  - Write Sequencer 161 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4258  - Write Sequencer 162 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4259  - Write Sequencer 163 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4260  - Write Sequencer 164 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4261  - Write Sequencer 165 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4262  - Write Sequencer 166 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4263  - Write Sequencer 167 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4264  - Write Sequencer 168 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4265  - Write Sequencer 169 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4266  - Write Sequencer 170 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4267  - Write Sequencer 171 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4268  - Write Sequencer 172 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4269  - Write Sequencer 173 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4270  - Write Sequencer 174 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4271  - Write Sequencer 175 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4272  - Write Sequencer 176 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4273  - Write Sequencer 177 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4274  - Write Sequencer 178 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4275  - Write Sequencer 179 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4276  - Write Sequencer 180 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4277  - Write Sequencer 181 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4278  - Write Sequencer 182 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4279  - Write Sequencer 183 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4280  - Write Sequencer 184 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4281  - Write Sequencer 185 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4282  - Write Sequencer 186 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4283  - Write Sequencer 187 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4284  - Write Sequencer 188 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4285  - Write Sequencer 189 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4286  - Write Sequencer 190 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4287  - Write Sequencer 191 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4288  - Write Sequencer 192 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4289  - Write Sequencer 193 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4290  - Write Sequencer 194 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4291  - Write Sequencer 195 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4292  - Write Sequencer 196 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4293  - Write Sequencer 197 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4294  - Write Sequencer 198 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4295  - Write Sequencer 199 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4296  - Write Sequencer 200 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4297  - Write Sequencer 201 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4298  - Write Sequencer 202 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4299  - Write Sequencer 203 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4300  - Write Sequencer 204 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4301  - Write Sequencer 205 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4302  - Write Sequencer 206 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4303  - Write Sequencer 207 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4304  - Write Sequencer 208 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4305  - Write Sequencer 209 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4306  - Write Sequencer 210 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4307  - Write Sequencer 211 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4308  - Write Sequencer 212 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4309  - Write Sequencer 213 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4310  - Write Sequencer 214 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4311  - Write Sequencer 215 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4312  - Write Sequencer 216 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4313  - Write Sequencer 217 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4314  - Write Sequencer 218 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4315  - Write Sequencer 219 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4316  - Write Sequencer 220 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4317  - Write Sequencer 221 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4318  - Write Sequencer 222 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4319  - Write Sequencer 223 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4320  - Write Sequencer 224 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4321  - Write Sequencer 225 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4322  - Write Sequencer 226 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4323  - Write Sequencer 227 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4324  - Write Sequencer 228 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4325  - Write Sequencer 229 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4326  - Write Sequencer 230 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4327  - Write Sequencer 231 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4328  - Write Sequencer 232 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4329  - Write Sequencer 233 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4330  - Write Sequencer 234 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4331  - Write Sequencer 235 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4332  - Write Sequencer 236 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4333  - Write Sequencer 237 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4334  - Write Sequencer 238 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4335  - Write Sequencer 239 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4336  - Write Sequencer 240 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4337  - Write Sequencer 241 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4338  - Write Sequencer 242 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4339  - Write Sequencer 243 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4340  - Write Sequencer 244 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4341  - Write Sequencer 245 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4342  - Write Sequencer 246 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4343  - Write Sequencer 247 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4344  - Write Sequencer 248 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4345  - Write Sequencer 249 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4346  - Write Sequencer 250 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4347  - Write Sequencer 251 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4348  - Write Sequencer 252 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4349  - Write Sequencer 253 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4350  - Write Sequencer 254 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4351  - Write Sequencer 255 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4352  - Write Sequencer 256 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4353  - Write Sequencer 257 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4354  - Write Sequencer 258 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4355  - Write Sequencer 259 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4356  - Write Sequencer 260 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4357  - Write Sequencer 261 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4358  - Write Sequencer 262 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4359  - Write Sequencer 263 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4360  - Write Sequencer 264 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4361  - Write Sequencer 265 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4362  - Write Sequencer 266 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4363  - Write Sequencer 267 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4364  - Write Sequencer 268 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4365  - Write Sequencer 269 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4366  - Write Sequencer 270 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4367  - Write Sequencer 271 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4368  - Write Sequencer 272 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4369  - Write Sequencer 273 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4370  - Write Sequencer 274 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4371  - Write Sequencer 275 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4372  - Write Sequencer 276 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4373  - Write Sequencer 277 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4374  - Write Sequencer 278 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4375  - Write Sequencer 279 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4376  - Write Sequencer 280 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4377  - Write Sequencer 281 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4378  - Write Sequencer 282 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4379  - Write Sequencer 283 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4380  - Write Sequencer 284 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4381  - Write Sequencer 285 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4382  - Write Sequencer 286 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4383  - Write Sequencer 287 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4384  - Write Sequencer 288 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4385  - Write Sequencer 289 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4386  - Write Sequencer 290 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4387  - Write Sequencer 291 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4388  - Write Sequencer 292 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4389  - Write Sequencer 293 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4390  - Write Sequencer 294 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4391  - Write Sequencer 295 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4392  - Write Sequencer 296 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4393  - Write Sequencer 297 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4394  - Write Sequencer 298 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4395  - Write Sequencer 299 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4396  - Write Sequencer 300 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4397  - Write Sequencer 301 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4398  - Write Sequencer 302 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4399  - Write Sequencer 303 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4400  - Write Sequencer 304 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4401  - Write Sequencer 305 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4402  - Write Sequencer 306 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4403  - Write Sequencer 307 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4404  - Write Sequencer 308 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4405  - Write Sequencer 309 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4406  - Write Sequencer 310 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4407  - Write Sequencer 311 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4408  - Write Sequencer 312 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4409  - Write Sequencer 313 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4410  - Write Sequencer 314 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4411  - Write Sequencer 315 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4412  - Write Sequencer 316 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4413  - Write Sequencer 317 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4414  - Write Sequencer 318 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4415  - Write Sequencer 319 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4416  - Write Sequencer 320 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4417  - Write Sequencer 321 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4418  - Write Sequencer 322 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4419  - Write Sequencer 323 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4420  - Write Sequencer 324 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4421  - Write Sequencer 325 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4422  - Write Sequencer 326 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4423  - Write Sequencer 327 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4424  - Write Sequencer 328 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4425  - Write Sequencer 329 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4426  - Write Sequencer 330 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4427  - Write Sequencer 331 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4428  - Write Sequencer 332 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4429  - Write Sequencer 333 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4430  - Write Sequencer 334 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4431  - Write Sequencer 335 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4432  - Write Sequencer 336 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4433  - Write Sequencer 337 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4434  - Write Sequencer 338 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4435  - Write Sequencer 339 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4436  - Write Sequencer 340 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4437  - Write Sequencer 341 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4438  - Write Sequencer 342 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4439  - Write Sequencer 343 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4440  - Write Sequencer 344 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4441  - Write Sequencer 345 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4442  - Write Sequencer 346 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4443  - Write Sequencer 347 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4444  - Write Sequencer 348 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4445  - Write Sequencer 349 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4446  - Write Sequencer 350 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4447  - Write Sequencer 351 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4448  - Write Sequencer 352 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4449  - Write Sequencer 353 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4450  - Write Sequencer 354 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4451  - Write Sequencer 355 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4452  - Write Sequencer 356 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4453  - Write Sequencer 357 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4454  - Write Sequencer 358 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4455  - Write Sequencer 359 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4456  - Write Sequencer 360 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4457  - Write Sequencer 361 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4458  - Write Sequencer 362 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4459  - Write Sequencer 363 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4460  - Write Sequencer 364 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4461  - Write Sequencer 365 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4462  - Write Sequencer 366 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4463  - Write Sequencer 367 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4464  - Write Sequencer 368 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4465  - Write Sequencer 369 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4466  - Write Sequencer 370 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4467  - Write Sequencer 371 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4468  - Write Sequencer 372 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4469  - Write Sequencer 373 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4470  - Write Sequencer 374 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4471  - Write Sequencer 375 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4472  - Write Sequencer 376 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4473  - Write Sequencer 377 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4474  - Write Sequencer 378 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4475  - Write Sequencer 379 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4476  - Write Sequencer 380 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4477  - Write Sequencer 381 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4478  - Write Sequencer 382 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4479  - Write Sequencer 383 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4480  - Write Sequencer 384 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4481  - Write Sequencer 385 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4482  - Write Sequencer 386 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4483  - Write Sequencer 387 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4484  - Write Sequencer 388 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4485  - Write Sequencer 389 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4486  - Write Sequencer 390 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4487  - Write Sequencer 391 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4488  - Write Sequencer 392 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4489  - Write Sequencer 393 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4490  - Write Sequencer 394 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4491  - Write Sequencer 395 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4492  - Write Sequencer 396 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4493  - Write Sequencer 397 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4494  - Write Sequencer 398 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4495  - Write Sequencer 399 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4496  - Write Sequencer 400 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4497  - Write Sequencer 401 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4498  - Write Sequencer 402 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4499  - Write Sequencer 403 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4500  - Write Sequencer 404 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4501  - Write Sequencer 405 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4502  - Write Sequencer 406 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4503  - Write Sequencer 407 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4504  - Write Sequencer 408 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4505  - Write Sequencer 409 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4506  - Write Sequencer 410 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4507  - Write Sequencer 411 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4508  - Write Sequencer 412 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4509  - Write Sequencer 413 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4510  - Write Sequencer 414 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4511  - Write Sequencer 415 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4512  - Write Sequencer 416 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4513  - Write Sequencer 417 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4514  - Write Sequencer 418 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4515  - Write Sequencer 419 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4516  - Write Sequencer 420 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4517  - Write Sequencer 421 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4518  - Write Sequencer 422 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4519  - Write Sequencer 423 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4520  - Write Sequencer 424 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4521  - Write Sequencer 425 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4522  - Write Sequencer 426 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4523  - Write Sequencer 427 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4524  - Write Sequencer 428 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4525  - Write Sequencer 429 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4526  - Write Sequencer 430 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4527  - Write Sequencer 431 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4528  - Write Sequencer 432 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4529  - Write Sequencer 433 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4530  - Write Sequencer 434 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4531  - Write Sequencer 435 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4532  - Write Sequencer 436 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4533  - Write Sequencer 437 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4534  - Write Sequencer 438 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4535  - Write Sequencer 439 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4536  - Write Sequencer 440 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4537  - Write Sequencer 441 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4538  - Write Sequencer 442 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4539  - Write Sequencer 443 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4540  - Write Sequencer 444 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4541  - Write Sequencer 445 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4542  - Write Sequencer 446 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4543  - Write Sequencer 447 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4544  - Write Sequencer 448 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4545  - Write Sequencer 449 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4546  - Write Sequencer 450 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4547  - Write Sequencer 451 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4548  - Write Sequencer 452 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4549  - Write Sequencer 453 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4550  - Write Sequencer 454 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4551  - Write Sequencer 455 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4552  - Write Sequencer 456 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4553  - Write Sequencer 457 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4554  - Write Sequencer 458 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4555  - Write Sequencer 459 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4556  - Write Sequencer 460 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4557  - Write Sequencer 461 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4558  - Write Sequencer 462 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4559  - Write Sequencer 463 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4560  - Write Sequencer 464 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4561  - Write Sequencer 465 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4562  - Write Sequencer 466 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4563  - Write Sequencer 467 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4564  - Write Sequencer 468 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4565  - Write Sequencer 469 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4566  - Write Sequencer 470 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4567  - Write Sequencer 471 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4568  - Write Sequencer 472 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4569  - Write Sequencer 473 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4570  - Write Sequencer 474 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4571  - Write Sequencer 475 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4572  - Write Sequencer 476 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4573  - Write Sequencer 477 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4574  - Write Sequencer 478 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4575  - Write Sequencer 479 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4576  - Write Sequencer 480 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4577  - Write Sequencer 481 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4578  - Write Sequencer 482 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4579  - Write Sequencer 483 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4580  - Write Sequencer 484 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4581  - Write Sequencer 485 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4582  - Write Sequencer 486 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4583  - Write Sequencer 487 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4584  - Write Sequencer 488 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4585  - Write Sequencer 489 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4586  - Write Sequencer 490 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4587  - Write Sequencer 491 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4588  - Write Sequencer 492 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4589  - Write Sequencer 493 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4590  - Write Sequencer 494 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4591  - Write Sequencer 495 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4592  - Write Sequencer 496 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4593  - Write Sequencer 497 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4594  - Write Sequencer 498 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4595  - Write Sequencer 499 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4596  - Write Sequencer 500 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4597  - Write Sequencer 501 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4598  - Write Sequencer 502 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4599  - Write Sequencer 503 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4600  - Write Sequencer 504 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4601  - Write Sequencer 505 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4602  - Write Sequencer 506 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4603  - Write Sequencer 507 */
+	{ 0x3FFF, 0x3FFF, 0x0000 }, /* R4604  - Write Sequencer 508 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R4605  - Write Sequencer 509 */
+	{ 0x070F, 0x070F, 0x0000 }, /* R4606  - Write Sequencer 510 */
+	{ 0x010F, 0x010F, 0x0000 }, /* R4607  - Write Sequencer 511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R4999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R5999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R6999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R7999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8191 */
+	{ 0x03FF, 0x03FF, 0x0000 }, /* R8192  - DSP2 Instruction RAM 0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R8999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9215 */
+	{ 0x003F, 0x003F, 0x0000 }, /* R9216  - DSP2 Address RAM 2 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R9217  - DSP2 Address RAM 1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R9218  - DSP2 Address RAM 0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R9999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R10999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R11999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12287 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R12288 - DSP2 Data1 RAM 1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R12289 - DSP2 Data1 RAM 0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R12999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13311 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R13312 - DSP2 Data2 RAM 1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R13313 - DSP2 Data2 RAM 0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R13999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14335 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R14336 - DSP2 Data3 RAM 1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R14337 - DSP2 Data3 RAM 0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R14999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15359 */
+	{ 0x07FF, 0x07FF, 0x0000 }, /* R15360 - DSP2 Coeff RAM 0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R15999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16383 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16384 - RETUNEADC_SHARED_COEFF_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16385 - RETUNEADC_SHARED_COEFF_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16386 - RETUNEDAC_SHARED_COEFF_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16387 - RETUNEDAC_SHARED_COEFF_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16388 - SOUNDSTAGE_ENABLES_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16389 - SOUNDSTAGE_ENABLES_0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16895 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16896 - HDBASS_AI_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16897 - HDBASS_AI_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16898 - HDBASS_AR_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16899 - HDBASS_AR_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16900 - HDBASS_B_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16901 - HDBASS_B_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16902 - HDBASS_K_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16903 - HDBASS_K_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16904 - HDBASS_N1_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16905 - HDBASS_N1_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16906 - HDBASS_N2_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16907 - HDBASS_N2_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16908 - HDBASS_N3_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16909 - HDBASS_N3_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16910 - HDBASS_N4_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16911 - HDBASS_N4_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16912 - HDBASS_N5_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16913 - HDBASS_N5_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16914 - HDBASS_X1_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16915 - HDBASS_X1_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16916 - HDBASS_X2_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16917 - HDBASS_X2_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16918 - HDBASS_X3_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16919 - HDBASS_X3_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16920 - HDBASS_ATK_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16921 - HDBASS_ATK_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16922 - HDBASS_DCY_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16923 - HDBASS_DCY_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R16924 - HDBASS_PG_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R16925 - HDBASS_PG_0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R16999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17407 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17408 - HPF_C_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17409 - HPF_C_0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17919 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17920 - ADCL_RETUNE_C1_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17921 - ADCL_RETUNE_C1_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17922 - ADCL_RETUNE_C2_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17923 - ADCL_RETUNE_C2_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17924 - ADCL_RETUNE_C3_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17925 - ADCL_RETUNE_C3_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17926 - ADCL_RETUNE_C4_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17927 - ADCL_RETUNE_C4_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17928 - ADCL_RETUNE_C5_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17929 - ADCL_RETUNE_C5_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17930 - ADCL_RETUNE_C6_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17931 - ADCL_RETUNE_C6_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17932 - ADCL_RETUNE_C7_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17933 - ADCL_RETUNE_C7_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17934 - ADCL_RETUNE_C8_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17935 - ADCL_RETUNE_C8_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17936 - ADCL_RETUNE_C9_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17937 - ADCL_RETUNE_C9_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17938 - ADCL_RETUNE_C10_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17939 - ADCL_RETUNE_C10_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17940 - ADCL_RETUNE_C11_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17941 - ADCL_RETUNE_C11_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17942 - ADCL_RETUNE_C12_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17943 - ADCL_RETUNE_C12_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17944 - ADCL_RETUNE_C13_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17945 - ADCL_RETUNE_C13_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17946 - ADCL_RETUNE_C14_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17947 - ADCL_RETUNE_C14_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17948 - ADCL_RETUNE_C15_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17949 - ADCL_RETUNE_C15_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17950 - ADCL_RETUNE_C16_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17951 - ADCL_RETUNE_C16_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17952 - ADCL_RETUNE_C17_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17953 - ADCL_RETUNE_C17_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17954 - ADCL_RETUNE_C18_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17955 - ADCL_RETUNE_C18_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17956 - ADCL_RETUNE_C19_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17957 - ADCL_RETUNE_C19_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17958 - ADCL_RETUNE_C20_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17959 - ADCL_RETUNE_C20_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17960 - ADCL_RETUNE_C21_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17961 - ADCL_RETUNE_C21_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17962 - ADCL_RETUNE_C22_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17963 - ADCL_RETUNE_C22_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17964 - ADCL_RETUNE_C23_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17965 - ADCL_RETUNE_C23_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17966 - ADCL_RETUNE_C24_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17967 - ADCL_RETUNE_C24_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17968 - ADCL_RETUNE_C25_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17969 - ADCL_RETUNE_C25_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17970 - ADCL_RETUNE_C26_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17971 - ADCL_RETUNE_C26_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17972 - ADCL_RETUNE_C27_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17973 - ADCL_RETUNE_C27_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17974 - ADCL_RETUNE_C28_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17975 - ADCL_RETUNE_C28_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17976 - ADCL_RETUNE_C29_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17977 - ADCL_RETUNE_C29_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17978 - ADCL_RETUNE_C30_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17979 - ADCL_RETUNE_C30_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17980 - ADCL_RETUNE_C31_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17981 - ADCL_RETUNE_C31_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R17982 - ADCL_RETUNE_C32_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R17983 - ADCL_RETUNE_C32_0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R17999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18431 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18432 - RETUNEADC_PG2_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18433 - RETUNEADC_PG2_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18434 - RETUNEADC_PG_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18435 - RETUNEADC_PG_0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18479 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18480 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18481 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18482 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18483 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18484 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18485 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18486 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18487 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18488 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18489 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18490 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18491 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18492 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18493 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18494 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18495 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18496 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18497 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18498 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18499 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18500 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18501 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18502 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18503 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18504 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18505 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18506 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18507 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18508 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18509 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18510 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18511 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18512 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18513 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18514 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18515 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18516 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18517 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18518 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18519 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R18943 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18944 - ADCR_RETUNE_C1_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18945 - ADCR_RETUNE_C1_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18946 - ADCR_RETUNE_C2_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18947 - ADCR_RETUNE_C2_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18948 - ADCR_RETUNE_C3_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18949 - ADCR_RETUNE_C3_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18950 - ADCR_RETUNE_C4_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18951 - ADCR_RETUNE_C4_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18952 - ADCR_RETUNE_C5_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18953 - ADCR_RETUNE_C5_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18954 - ADCR_RETUNE_C6_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18955 - ADCR_RETUNE_C6_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18956 - ADCR_RETUNE_C7_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18957 - ADCR_RETUNE_C7_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18958 - ADCR_RETUNE_C8_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18959 - ADCR_RETUNE_C8_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18960 - ADCR_RETUNE_C9_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18961 - ADCR_RETUNE_C9_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18962 - ADCR_RETUNE_C10_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18963 - ADCR_RETUNE_C10_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18964 - ADCR_RETUNE_C11_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18965 - ADCR_RETUNE_C11_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18966 - ADCR_RETUNE_C12_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18967 - ADCR_RETUNE_C12_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18968 - ADCR_RETUNE_C13_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18969 - ADCR_RETUNE_C13_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18970 - ADCR_RETUNE_C14_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18971 - ADCR_RETUNE_C14_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18972 - ADCR_RETUNE_C15_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18973 - ADCR_RETUNE_C15_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18974 - ADCR_RETUNE_C16_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18975 - ADCR_RETUNE_C16_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18976 - ADCR_RETUNE_C17_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18977 - ADCR_RETUNE_C17_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18978 - ADCR_RETUNE_C18_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18979 - ADCR_RETUNE_C18_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18980 - ADCR_RETUNE_C19_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18981 - ADCR_RETUNE_C19_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18982 - ADCR_RETUNE_C20_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18983 - ADCR_RETUNE_C20_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18984 - ADCR_RETUNE_C21_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18985 - ADCR_RETUNE_C21_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18986 - ADCR_RETUNE_C22_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18987 - ADCR_RETUNE_C22_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18988 - ADCR_RETUNE_C23_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18989 - ADCR_RETUNE_C23_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18990 - ADCR_RETUNE_C24_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18991 - ADCR_RETUNE_C24_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18992 - ADCR_RETUNE_C25_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18993 - ADCR_RETUNE_C25_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18994 - ADCR_RETUNE_C26_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18995 - ADCR_RETUNE_C26_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18996 - ADCR_RETUNE_C27_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18997 - ADCR_RETUNE_C27_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R18998 - ADCR_RETUNE_C28_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R18999 - ADCR_RETUNE_C28_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19000 - ADCR_RETUNE_C29_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19001 - ADCR_RETUNE_C29_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19002 - ADCR_RETUNE_C30_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19003 - ADCR_RETUNE_C30_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19004 - ADCR_RETUNE_C31_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19005 - ADCR_RETUNE_C31_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19006 - ADCR_RETUNE_C32_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19007 - ADCR_RETUNE_C32_0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19455 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19456 - DACL_RETUNE_C1_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19457 - DACL_RETUNE_C1_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19458 - DACL_RETUNE_C2_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19459 - DACL_RETUNE_C2_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19460 - DACL_RETUNE_C3_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19461 - DACL_RETUNE_C3_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19462 - DACL_RETUNE_C4_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19463 - DACL_RETUNE_C4_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19464 - DACL_RETUNE_C5_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19465 - DACL_RETUNE_C5_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19466 - DACL_RETUNE_C6_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19467 - DACL_RETUNE_C6_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19468 - DACL_RETUNE_C7_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19469 - DACL_RETUNE_C7_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19470 - DACL_RETUNE_C8_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19471 - DACL_RETUNE_C8_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19472 - DACL_RETUNE_C9_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19473 - DACL_RETUNE_C9_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19474 - DACL_RETUNE_C10_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19475 - DACL_RETUNE_C10_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19476 - DACL_RETUNE_C11_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19477 - DACL_RETUNE_C11_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19478 - DACL_RETUNE_C12_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19479 - DACL_RETUNE_C12_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19480 - DACL_RETUNE_C13_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19481 - DACL_RETUNE_C13_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19482 - DACL_RETUNE_C14_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19483 - DACL_RETUNE_C14_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19484 - DACL_RETUNE_C15_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19485 - DACL_RETUNE_C15_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19486 - DACL_RETUNE_C16_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19487 - DACL_RETUNE_C16_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19488 - DACL_RETUNE_C17_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19489 - DACL_RETUNE_C17_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19490 - DACL_RETUNE_C18_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19491 - DACL_RETUNE_C18_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19492 - DACL_RETUNE_C19_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19493 - DACL_RETUNE_C19_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19494 - DACL_RETUNE_C20_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19495 - DACL_RETUNE_C20_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19496 - DACL_RETUNE_C21_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19497 - DACL_RETUNE_C21_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19498 - DACL_RETUNE_C22_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19499 - DACL_RETUNE_C22_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19500 - DACL_RETUNE_C23_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19501 - DACL_RETUNE_C23_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19502 - DACL_RETUNE_C24_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19503 - DACL_RETUNE_C24_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19504 - DACL_RETUNE_C25_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19505 - DACL_RETUNE_C25_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19506 - DACL_RETUNE_C26_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19507 - DACL_RETUNE_C26_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19508 - DACL_RETUNE_C27_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19509 - DACL_RETUNE_C27_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19510 - DACL_RETUNE_C28_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19511 - DACL_RETUNE_C28_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19512 - DACL_RETUNE_C29_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19513 - DACL_RETUNE_C29_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19514 - DACL_RETUNE_C30_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19515 - DACL_RETUNE_C30_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19516 - DACL_RETUNE_C31_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19517 - DACL_RETUNE_C31_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19518 - DACL_RETUNE_C32_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19519 - DACL_RETUNE_C32_0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19520 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19521 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19522 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19523 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19524 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19525 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19526 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19527 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19528 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19529 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19530 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19531 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19532 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19533 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19534 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19535 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19536 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19537 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19538 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19539 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19540 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19541 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19542 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19543 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19967 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19968 - RETUNEDAC_PG2_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19969 - RETUNEDAC_PG2_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R19970 - RETUNEDAC_PG_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R19971 - RETUNEDAC_PG_0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19991 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19992 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19993 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19994 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19995 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19996 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19997 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19998 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R19999 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20000 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20001 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20002 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20003 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20004 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20005 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20006 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20007 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20008 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20009 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20010 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20011 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20012 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20013 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20014 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20015 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20016 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20017 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20018 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20019 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20020 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20021 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20022 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20023 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20024 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20025 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20026 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20027 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20028 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20029 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20030 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20031 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20032 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20033 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20034 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20035 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20036 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20037 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20038 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20039 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20040 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20041 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20042 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20043 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20044 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20045 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20046 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20047 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20048 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20049 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20050 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20051 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20052 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20053 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20054 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20055 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20056 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20057 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20058 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20059 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20060 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20061 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20062 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20063 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20064 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20065 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20066 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20067 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20068 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20069 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20070 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20071 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20072 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20073 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20074 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20075 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20076 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20077 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20078 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20079 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20080 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20081 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20082 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20083 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20084 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20085 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20086 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20087 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20088 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20089 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20090 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20091 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20092 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20093 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20094 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20095 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20096 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20097 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20098 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20099 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20100 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20101 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20102 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20103 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20104 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20105 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20106 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20107 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20108 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20109 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20110 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20111 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20112 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20113 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20114 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20115 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20116 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20117 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20118 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20119 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20120 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20121 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20122 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20123 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20124 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20125 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20126 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20127 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20128 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20129 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20130 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20131 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20132 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20133 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20134 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20135 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20136 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20137 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20138 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20139 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20140 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20141 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20142 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20143 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20144 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20145 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20146 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20147 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20148 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20149 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20150 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20151 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20152 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20153 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20154 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20155 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20156 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20157 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20158 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20159 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20160 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20161 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20162 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20163 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20164 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20165 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20166 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20167 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20168 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20169 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20170 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20171 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20172 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20173 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20174 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20175 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20176 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20177 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20178 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20179 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20180 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20181 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20182 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20183 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20184 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20185 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20186 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20187 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20188 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20189 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20190 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20191 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20192 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20193 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20194 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20195 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20196 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20197 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20198 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20199 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20200 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20201 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20202 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20203 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20204 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20205 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20206 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20207 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20208 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20209 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20210 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20211 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20212 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20213 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20214 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20215 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20216 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20217 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20218 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20219 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20220 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20221 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20222 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20223 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20224 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20225 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20226 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20227 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20228 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20229 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20230 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20231 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20232 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20233 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20234 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20235 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20236 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20237 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20238 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20239 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20240 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20241 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20242 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20243 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20244 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20245 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20246 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20247 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20248 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20249 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20250 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20251 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20252 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20253 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20254 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20255 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20256 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20257 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20258 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20259 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20260 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20261 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20262 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20263 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20264 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20265 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20266 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20267 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20268 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20269 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20270 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20271 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20272 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20273 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20274 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20275 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20276 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20277 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20278 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20279 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20280 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20281 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20282 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20283 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20284 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20285 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20286 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20287 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20288 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20289 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20290 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20291 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20292 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20293 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20294 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20295 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20296 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20297 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20298 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20299 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20300 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20301 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20302 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20303 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20304 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20305 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20306 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20307 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20308 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20309 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20310 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20311 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20312 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20313 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20314 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20315 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20316 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20317 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20318 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20319 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20320 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20321 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20322 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20323 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20324 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20325 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20326 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20327 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20328 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20329 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20330 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20331 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20332 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20333 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20334 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20335 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20336 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20337 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20338 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20339 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20340 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20341 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20342 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20343 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20344 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20345 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20346 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20347 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20348 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20349 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20350 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20351 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20352 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20353 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20354 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20355 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20356 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20357 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20358 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20359 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20360 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20361 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20362 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20363 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20364 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20365 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20366 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20367 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20368 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20369 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20370 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20371 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20372 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20373 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20374 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20375 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20376 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20377 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20378 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20379 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20380 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20381 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20382 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20383 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20384 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20385 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20386 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20387 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20388 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20389 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20390 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20391 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20392 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20393 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20394 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20395 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20396 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20397 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20398 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20399 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20400 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20401 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20402 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20403 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20404 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20405 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20406 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20407 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20408 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20409 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20410 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20411 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20412 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20413 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20414 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20415 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20416 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20417 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20418 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20419 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20420 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20421 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20422 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20423 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20424 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20425 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20426 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20427 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20428 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20429 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20430 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20431 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20432 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20433 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20434 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20435 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20436 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20437 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20438 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20439 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20440 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20441 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20442 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20443 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20444 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20445 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20446 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20447 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20448 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20449 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20450 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20451 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20452 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20453 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20454 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20455 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20456 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20457 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20458 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20459 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20460 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20461 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20462 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20463 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20464 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20465 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20466 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20467 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20468 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20469 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20470 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20471 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20472 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20473 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20474 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20475 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20476 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20477 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20478 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20479 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20480 - DACR_RETUNE_C1_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20481 - DACR_RETUNE_C1_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20482 - DACR_RETUNE_C2_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20483 - DACR_RETUNE_C2_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20484 - DACR_RETUNE_C3_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20485 - DACR_RETUNE_C3_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20486 - DACR_RETUNE_C4_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20487 - DACR_RETUNE_C4_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20488 - DACR_RETUNE_C5_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20489 - DACR_RETUNE_C5_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20490 - DACR_RETUNE_C6_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20491 - DACR_RETUNE_C6_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20492 - DACR_RETUNE_C7_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20493 - DACR_RETUNE_C7_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20494 - DACR_RETUNE_C8_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20495 - DACR_RETUNE_C8_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20496 - DACR_RETUNE_C9_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20497 - DACR_RETUNE_C9_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20498 - DACR_RETUNE_C10_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20499 - DACR_RETUNE_C10_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20500 - DACR_RETUNE_C11_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20501 - DACR_RETUNE_C11_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20502 - DACR_RETUNE_C12_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20503 - DACR_RETUNE_C12_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20504 - DACR_RETUNE_C13_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20505 - DACR_RETUNE_C13_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20506 - DACR_RETUNE_C14_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20507 - DACR_RETUNE_C14_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20508 - DACR_RETUNE_C15_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20509 - DACR_RETUNE_C15_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20510 - DACR_RETUNE_C16_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20511 - DACR_RETUNE_C16_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20512 - DACR_RETUNE_C17_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20513 - DACR_RETUNE_C17_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20514 - DACR_RETUNE_C18_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20515 - DACR_RETUNE_C18_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20516 - DACR_RETUNE_C19_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20517 - DACR_RETUNE_C19_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20518 - DACR_RETUNE_C20_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20519 - DACR_RETUNE_C20_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20520 - DACR_RETUNE_C21_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20521 - DACR_RETUNE_C21_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20522 - DACR_RETUNE_C22_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20523 - DACR_RETUNE_C22_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20524 - DACR_RETUNE_C23_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20525 - DACR_RETUNE_C23_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20526 - DACR_RETUNE_C24_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20527 - DACR_RETUNE_C24_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20528 - DACR_RETUNE_C25_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20529 - DACR_RETUNE_C25_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20530 - DACR_RETUNE_C26_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20531 - DACR_RETUNE_C26_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20532 - DACR_RETUNE_C27_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20533 - DACR_RETUNE_C27_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20534 - DACR_RETUNE_C28_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20535 - DACR_RETUNE_C28_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20536 - DACR_RETUNE_C29_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20537 - DACR_RETUNE_C29_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20538 - DACR_RETUNE_C30_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20539 - DACR_RETUNE_C30_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20540 - DACR_RETUNE_C31_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20541 - DACR_RETUNE_C31_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20542 - DACR_RETUNE_C32_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20543 - DACR_RETUNE_C32_0 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20544 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20545 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20546 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20547 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20548 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20549 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20550 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20551 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20552 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20553 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20554 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20555 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20556 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20557 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20558 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20559 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20560 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20561 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20562 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20563 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20564 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20565 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20566 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20567 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20568 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20569 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20570 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20571 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20572 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20573 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20574 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20575 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20576 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20577 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20578 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20579 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20580 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20581 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20582 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20583 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20584 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20585 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20586 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20587 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20588 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20589 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20590 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20591 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20592 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20593 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20594 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20595 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20596 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20597 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20598 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20599 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20600 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20601 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20602 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20603 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20604 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20605 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20606 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20607 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20608 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20609 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20610 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20611 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20612 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20613 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20614 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20615 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20616 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20617 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20618 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20619 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20620 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20621 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20622 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20623 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20624 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20625 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20626 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20627 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20628 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20629 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20630 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20631 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20632 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20633 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20634 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20635 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20636 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20637 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20638 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20639 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20640 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20641 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20642 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20643 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20644 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20645 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20646 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20647 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20648 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20649 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20650 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20651 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20652 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20653 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20654 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20655 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20656 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20657 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20658 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20659 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20660 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20661 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20662 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20663 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20664 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20665 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20666 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20667 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20668 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20669 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20670 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20671 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20672 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20673 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20674 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20675 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20676 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20677 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20678 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20679 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20680 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20681 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20682 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20683 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20684 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20685 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20686 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20687 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20688 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20689 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20690 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20691 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20692 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20693 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20694 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20695 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20696 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20697 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20698 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20699 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20700 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20701 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20702 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20703 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20704 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20705 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20706 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20707 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20708 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20709 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20710 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20711 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20712 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20713 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20714 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20715 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20716 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20717 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20718 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20719 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20720 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20721 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20722 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20723 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20724 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20725 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20726 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20727 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20728 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20729 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20730 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20731 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20732 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20733 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20734 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20735 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20736 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20737 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20738 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20739 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20740 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20741 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20742 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20743 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20744 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20745 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20746 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20747 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20748 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20749 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20750 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20751 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20752 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20753 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20754 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20755 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20756 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20757 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20758 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20759 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20760 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20761 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20762 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20763 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20764 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20765 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20766 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20767 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20768 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20769 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20770 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20771 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20772 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20773 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20774 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20775 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20776 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20777 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20778 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20779 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20780 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20781 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20782 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20783 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20784 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20785 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20786 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20787 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20788 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20789 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20790 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20791 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20792 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20793 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20794 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20795 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20796 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20797 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20798 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20799 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20800 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20801 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20802 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20803 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20804 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20805 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20806 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20807 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20808 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20809 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20810 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20811 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20812 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20813 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20814 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20815 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20816 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20817 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20818 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20819 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20820 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20821 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20822 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20823 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20824 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20825 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20826 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20827 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20828 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20829 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20830 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20831 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20832 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20833 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20834 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20835 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20836 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20837 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20838 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20839 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20840 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20841 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20842 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20843 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20844 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20845 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20846 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20847 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20848 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20849 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20850 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20851 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20852 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20853 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20854 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20855 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20856 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20857 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20858 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20859 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20860 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20861 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20862 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20863 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20864 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20865 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20866 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20867 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20868 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20869 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20870 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20871 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20872 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20873 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20874 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20875 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20876 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20877 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20878 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20879 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20880 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20881 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20882 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20883 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20884 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20885 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20886 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20887 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20888 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20889 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20890 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20891 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20892 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20893 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20894 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20895 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20896 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20897 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20898 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20899 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20900 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20901 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20902 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20903 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20904 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20905 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20906 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20907 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20908 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20909 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20910 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20911 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20912 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20913 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20914 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20915 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20916 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20917 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20918 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20919 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20920 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20921 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20922 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20923 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20924 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20925 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20926 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20927 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20928 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20929 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20930 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20931 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20932 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20933 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20934 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20935 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20936 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20937 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20938 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20939 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20940 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20941 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20942 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20943 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20944 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20945 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20946 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20947 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20948 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20949 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20950 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20951 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20952 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20953 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20954 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20955 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20956 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20957 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20958 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20959 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20960 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20961 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20962 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20963 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20964 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20965 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20966 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20967 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20968 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20969 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20970 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20971 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20972 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20973 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20974 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20975 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20976 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20977 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20978 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20979 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20980 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20981 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20982 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20983 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20984 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20985 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20986 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20987 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20988 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20989 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20990 */
+	{ 0x0000, 0x0000, 0x0000 }, /* R20991 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20992 - VSS_XHD2_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20993 - VSS_XHD2_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20994 - VSS_XHD3_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20995 - VSS_XHD3_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20996 - VSS_XHN1_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20997 - VSS_XHN1_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R20998 - VSS_XHN2_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R20999 - VSS_XHN2_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21000 - VSS_XHN3_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21001 - VSS_XHN3_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21002 - VSS_XLA_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21003 - VSS_XLA_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21004 - VSS_XLB_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21005 - VSS_XLB_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21006 - VSS_XLG_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21007 - VSS_XLG_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21008 - VSS_PG2_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21009 - VSS_PG2_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21010 - VSS_PG_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21011 - VSS_PG_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21012 - VSS_XTD1_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21013 - VSS_XTD1_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21014 - VSS_XTD2_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21015 - VSS_XTD2_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21016 - VSS_XTD3_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21017 - VSS_XTD3_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21018 - VSS_XTD4_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21019 - VSS_XTD4_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21020 - VSS_XTD5_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21021 - VSS_XTD5_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21022 - VSS_XTD6_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21023 - VSS_XTD6_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21024 - VSS_XTD7_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21025 - VSS_XTD7_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21026 - VSS_XTD8_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21027 - VSS_XTD8_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21028 - VSS_XTD9_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21029 - VSS_XTD9_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21030 - VSS_XTD10_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21031 - VSS_XTD10_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21032 - VSS_XTD11_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21033 - VSS_XTD11_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21034 - VSS_XTD12_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21035 - VSS_XTD12_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21036 - VSS_XTD13_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21037 - VSS_XTD13_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21038 - VSS_XTD14_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21039 - VSS_XTD14_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21040 - VSS_XTD15_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21041 - VSS_XTD15_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21042 - VSS_XTD16_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21043 - VSS_XTD16_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21044 - VSS_XTD17_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21045 - VSS_XTD17_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21046 - VSS_XTD18_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21047 - VSS_XTD18_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21048 - VSS_XTD19_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21049 - VSS_XTD19_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21050 - VSS_XTD20_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21051 - VSS_XTD20_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21052 - VSS_XTD21_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21053 - VSS_XTD21_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21054 - VSS_XTD22_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21055 - VSS_XTD22_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21056 - VSS_XTD23_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21057 - VSS_XTD23_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21058 - VSS_XTD24_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21059 - VSS_XTD24_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21060 - VSS_XTD25_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21061 - VSS_XTD25_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21062 - VSS_XTD26_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21063 - VSS_XTD26_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21064 - VSS_XTD27_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21065 - VSS_XTD27_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21066 - VSS_XTD28_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21067 - VSS_XTD28_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21068 - VSS_XTD29_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21069 - VSS_XTD29_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21070 - VSS_XTD30_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21071 - VSS_XTD30_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21072 - VSS_XTD31_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21073 - VSS_XTD31_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21074 - VSS_XTD32_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21075 - VSS_XTD32_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21076 - VSS_XTS1_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21077 - VSS_XTS1_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21078 - VSS_XTS2_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21079 - VSS_XTS2_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21080 - VSS_XTS3_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21081 - VSS_XTS3_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21082 - VSS_XTS4_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21083 - VSS_XTS4_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21084 - VSS_XTS5_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21085 - VSS_XTS5_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21086 - VSS_XTS6_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21087 - VSS_XTS6_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21088 - VSS_XTS7_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21089 - VSS_XTS7_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21090 - VSS_XTS8_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21091 - VSS_XTS8_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21092 - VSS_XTS9_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21093 - VSS_XTS9_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21094 - VSS_XTS10_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21095 - VSS_XTS10_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21096 - VSS_XTS11_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21097 - VSS_XTS11_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21098 - VSS_XTS12_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21099 - VSS_XTS12_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21100 - VSS_XTS13_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21101 - VSS_XTS13_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21102 - VSS_XTS14_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21103 - VSS_XTS14_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21104 - VSS_XTS15_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21105 - VSS_XTS15_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21106 - VSS_XTS16_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21107 - VSS_XTS16_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21108 - VSS_XTS17_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21109 - VSS_XTS17_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21110 - VSS_XTS18_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21111 - VSS_XTS18_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21112 - VSS_XTS19_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21113 - VSS_XTS19_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21114 - VSS_XTS20_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21115 - VSS_XTS20_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21116 - VSS_XTS21_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21117 - VSS_XTS21_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21118 - VSS_XTS22_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21119 - VSS_XTS22_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21120 - VSS_XTS23_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21121 - VSS_XTS23_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21122 - VSS_XTS24_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21123 - VSS_XTS24_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21124 - VSS_XTS25_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21125 - VSS_XTS25_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21126 - VSS_XTS26_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21127 - VSS_XTS26_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21128 - VSS_XTS27_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21129 - VSS_XTS27_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21130 - VSS_XTS28_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21131 - VSS_XTS28_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21132 - VSS_XTS29_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21133 - VSS_XTS29_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21134 - VSS_XTS30_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21135 - VSS_XTS30_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21136 - VSS_XTS31_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21137 - VSS_XTS31_0 */
+	{ 0x00FF, 0x00FF, 0x0000 }, /* R21138 - VSS_XTS32_1 */
+	{ 0xFFFF, 0xFFFF, 0x0000 }, /* R21139 - VSS_XTS32_0 */
+};
diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
new file mode 100644
index 0000000..7de5194
--- /dev/null
+++ b/sound/soc/codecs/wm8962.c
@@ -0,0 +1,1857 @@
+/*
+ * wm8962.c  --  WM8962 ALSA SoC Audio driver
+ *
+ * Copyright 2010 Wolfson Microelectronics plc
+ *
+ * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/init.h>
+#include <linux/delay.h>
+#include <linux/pm.h>
+#include <linux/gcd.h>
+#include <linux/i2c.h>
+#include <linux/input.h>
+#include <linux/platform_device.h>
+#include <linux/regulator/consumer.h>
+#include <linux/slab.h>
+#include <linux/workqueue.h>
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+#include <sound/soc-dapm.h>
+#include <sound/initval.h>
+#include <sound/tlv.h>
+#include <sound/wm8962.h>
+
+#include "wm8962.h"
+
+#define WM8962_NUM_SUPPLIES 8
+static const char *wm8962_supply_names[WM8962_NUM_SUPPLIES] = {
+	"DCVDD",
+	"DBVDD",
+	"AVDD",
+	"CPVDD",
+	"MICVDD",
+	"PLLVDD",
+	"SPKVDD1",
+	"SPKVDD2",
+};
+
+/* codec private data */
+struct wm8962_priv {
+	struct snd_soc_codec *codec;
+
+	u16 reg_cache[WM8962_MAX_REGISTER + 1];
+
+	int sysclk;
+	int sysclk_rate;
+
+	int bclk;  /* Desired BCLK */
+	int lrclk;
+
+	int fll_src;
+	int fll_fref;
+	int fll_fout;
+
+	struct regulator_bulk_data supplies[WM8962_NUM_SUPPLIES];
+	struct notifier_block disable_nb[WM8962_NUM_SUPPLIES];
+
+#if defined(CONFIG_INPUT) || defined(CONFIG_INPUT_MODULE)
+	struct input_dev *beep;
+	struct work_struct beep_work;
+	int beep_rate;
+#endif
+};
+
+/* We can't use the same notifier block for more than one supply and
+ * there's no way I can see to get from a callback to the caller
+ * except container_of().
+ */
+#define WM8962_REGULATOR_EVENT(n) \
+static int wm8962_regulator_event_##n(struct notifier_block *nb, \
+				    unsigned long event, void *data)	\
+{ \
+	struct wm8962_priv *wm8962 = container_of(nb, struct wm8962_priv, \
+						  disable_nb[n]); \
+	if (event & REGULATOR_EVENT_DISABLE) { \
+		wm8962->codec->cache_sync = 1; \
+	} \
+	return 0; \
+}
+
+WM8962_REGULATOR_EVENT(0)
+WM8962_REGULATOR_EVENT(1)
+WM8962_REGULATOR_EVENT(2)
+WM8962_REGULATOR_EVENT(3)
+WM8962_REGULATOR_EVENT(4)
+WM8962_REGULATOR_EVENT(5)
+WM8962_REGULATOR_EVENT(6)
+WM8962_REGULATOR_EVENT(7)
+
+static int wm8962_volatile_register(unsigned int reg)
+{
+	if (wm8962_reg_access[reg].vol)
+		return 1;
+	else
+		return 0;
+}
+
+static int wm8962_readable_register(unsigned int reg)
+{
+	if (wm8962_reg_access[reg].read)
+		return 1;
+	else
+		return 0;
+}
+
+static int wm8962_reset(struct snd_soc_codec *codec)
+{
+	return snd_soc_write(codec, WM8962_SOFTWARE_RESET, 0);
+}
+
+static const DECLARE_TLV_DB_SCALE(inpga_tlv, -2325, 75, 0);
+static const DECLARE_TLV_DB_SCALE(mixin_tlv, -1500, 300, 0);
+static const unsigned int mixinpga_tlv[] = {
+	TLV_DB_RANGE_HEAD(7),
+	0, 1, TLV_DB_SCALE_ITEM(0, 600, 0),
+	2, 2, TLV_DB_SCALE_ITEM(1300, 1300, 0),
+	3, 4, TLV_DB_SCALE_ITEM(1800, 200, 0),
+	5, 5, TLV_DB_SCALE_ITEM(2400, 0, 0),
+	6, 7, TLV_DB_SCALE_ITEM(2700, 300, 0),
+};
+static const DECLARE_TLV_DB_SCALE(beep_tlv, -9600, 600, 1);
+static const DECLARE_TLV_DB_SCALE(digital_tlv, -7200, 75, 1);
+static const DECLARE_TLV_DB_SCALE(st_tlv, -3600, 300, 0);
+static const DECLARE_TLV_DB_SCALE(inmix_tlv, -600, 600, 0);
+static const DECLARE_TLV_DB_SCALE(bypass_tlv, -1500, 300, 0);
+static const DECLARE_TLV_DB_SCALE(out_tlv, -12100, 100, 1);
+static const DECLARE_TLV_DB_SCALE(hp_tlv, -700, 100, 0);
+static const unsigned int classd_tlv[] = {
+	TLV_DB_RANGE_HEAD(7),
+	0, 6, TLV_DB_SCALE_ITEM(0, 150, 0),
+	7, 7, TLV_DB_SCALE_ITEM(1200, 0, 0),
+};
+
+/* The VU bits for the headphones are in a different register to the mute
+ * bits and only take effect on the PGA if it is actually powered.
+ */
+static int wm8962_put_hp_sw(struct snd_kcontrol *kcontrol,
+			    struct snd_ctl_elem_value *ucontrol)
+{
+	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+	u16 *reg_cache = wm8962->reg_cache;
+	int ret;
+
+	/* Apply the update (if any) */
+        ret = snd_soc_put_volsw(kcontrol, ucontrol);
+	if (ret == 0)
+		return 0;
+
+	/* If the left PGA is enabled hit that VU bit... */
+	if (reg_cache[WM8962_PWR_MGMT_2] & WM8962_HPOUTL_PGA_ENA)
+		return snd_soc_write(codec, WM8962_HPOUTL_VOLUME,
+				     reg_cache[WM8962_HPOUTL_VOLUME]);
+
+	/* ...otherwise the right.  The VU is stereo. */
+	if (reg_cache[WM8962_PWR_MGMT_2] & WM8962_HPOUTR_PGA_ENA)
+		return snd_soc_write(codec, WM8962_HPOUTR_VOLUME,
+				     reg_cache[WM8962_HPOUTR_VOLUME]);
+
+	return 0;
+}
+
+/* The VU bits for the speakers are in a different register to the mute
+ * bits and only take effect on the PGA if it is actually powered.
+ */
+static int wm8962_put_spk_sw(struct snd_kcontrol *kcontrol,
+			    struct snd_ctl_elem_value *ucontrol)
+{
+	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+	u16 *reg_cache = wm8962->reg_cache;
+	int ret;
+
+	/* Apply the update (if any) */
+        ret = snd_soc_put_volsw(kcontrol, ucontrol);
+	if (ret == 0)
+		return 0;
+
+	/* If the left PGA is enabled hit that VU bit... */
+	if (reg_cache[WM8962_PWR_MGMT_2] & WM8962_SPKOUTL_PGA_ENA)
+		return snd_soc_write(codec, WM8962_SPKOUTL_VOLUME,
+				     reg_cache[WM8962_SPKOUTL_VOLUME]);
+
+	/* ...otherwise the right.  The VU is stereo. */
+	if (reg_cache[WM8962_PWR_MGMT_2] & WM8962_SPKOUTR_PGA_ENA)
+		return snd_soc_write(codec, WM8962_SPKOUTR_VOLUME,
+				     reg_cache[WM8962_SPKOUTR_VOLUME]);
+
+	return 0;
+}
+
+static const struct snd_kcontrol_new wm8962_snd_controls[] = {
+SOC_DOUBLE("Input Mixer Switch", WM8962_INPUT_MIXER_CONTROL_1, 3, 2, 1, 1),
+
+SOC_SINGLE_TLV("MIXINL IN2L Volume", WM8962_LEFT_INPUT_MIXER_VOLUME, 6, 7, 0,
+	       mixin_tlv),
+SOC_SINGLE_TLV("MIXINL PGA Volume", WM8962_LEFT_INPUT_MIXER_VOLUME, 3, 7, 0,
+	       mixinpga_tlv),
+SOC_SINGLE_TLV("MIXINL IN3L Volume", WM8962_LEFT_INPUT_MIXER_VOLUME, 0, 7, 0,
+	       mixin_tlv),
+
+SOC_SINGLE_TLV("MIXINR IN2R Volume", WM8962_RIGHT_INPUT_MIXER_VOLUME, 6, 7, 0,
+	       mixin_tlv),
+SOC_SINGLE_TLV("MIXINR PGA Volume", WM8962_RIGHT_INPUT_MIXER_VOLUME, 3, 7, 0,
+	       mixinpga_tlv),
+SOC_SINGLE_TLV("MIXINR IN3R Volume", WM8962_RIGHT_INPUT_MIXER_VOLUME, 0, 7, 0,
+	       mixin_tlv),
+
+SOC_DOUBLE_R_TLV("Digital Capture Volume", WM8962_LEFT_ADC_VOLUME,
+		 WM8962_RIGHT_ADC_VOLUME, 1, 127, 0, digital_tlv),
+SOC_DOUBLE_R_TLV("Capture Volume", WM8962_LEFT_INPUT_VOLUME,
+		 WM8962_RIGHT_INPUT_VOLUME, 0, 63, 0, inpga_tlv),
+SOC_DOUBLE_R("Capture Switch", WM8962_LEFT_INPUT_VOLUME,
+	     WM8962_RIGHT_INPUT_VOLUME, 7, 1, 1),
+SOC_DOUBLE_R("Capture ZC Switch", WM8962_LEFT_INPUT_VOLUME,
+	     WM8962_RIGHT_INPUT_VOLUME, 6, 1, 1),
+
+SOC_DOUBLE_R_TLV("Sidetone Volume", WM8962_DAC_DSP_MIXING_1,
+		 WM8962_DAC_DSP_MIXING_2, 4, 12, 0, st_tlv),
+
+SOC_DOUBLE_R_TLV("Digital Playback Volume", WM8962_LEFT_DAC_VOLUME,
+		 WM8962_RIGHT_DAC_VOLUME, 1, 127, 0, digital_tlv),
+SOC_SINGLE("DAC High Performance Switch", WM8962_ADC_DAC_CONTROL_2, 0, 1, 0),
+
+SOC_SINGLE("ADC High Performance Switch", WM8962_ADDITIONAL_CONTROL_1,
+	   5, 1, 0),
+
+SOC_SINGLE_TLV("Beep Volume", WM8962_BEEP_GENERATOR_1, 4, 15, 0, beep_tlv),
+
+SOC_DOUBLE_R_TLV("Headphone Volume", WM8962_HPOUTL_VOLUME,
+		 WM8962_HPOUTR_VOLUME, 0, 127, 0, out_tlv),
+SOC_DOUBLE_EXT("Headphone Switch", WM8962_PWR_MGMT_2, 1, 0, 1, 1,
+	       snd_soc_get_volsw, wm8962_put_hp_sw),
+SOC_DOUBLE_R("Headphone ZC Switch", WM8962_HPOUTL_VOLUME, WM8962_HPOUTR_VOLUME,
+	     7, 1, 0),
+SOC_DOUBLE_TLV("Headphone Aux Volume", WM8962_ANALOGUE_HP_2, 3, 6, 7, 0,
+	       hp_tlv),
+
+SOC_DOUBLE_R("Headphone Mixer Switch", WM8962_HEADPHONE_MIXER_3,
+	     WM8962_HEADPHONE_MIXER_4, 8, 1, 1),
+
+SOC_SINGLE_TLV("HPMIXL IN4L Volume", WM8962_HEADPHONE_MIXER_3,
+	       3, 7, 0, bypass_tlv),
+SOC_SINGLE_TLV("HPMIXL IN4R Volume", WM8962_HEADPHONE_MIXER_3,
+	       0, 7, 0, bypass_tlv),
+SOC_SINGLE_TLV("HPMIXL MIXINL Volume", WM8962_HEADPHONE_MIXER_3,
+	       7, 1, 1, inmix_tlv),
+SOC_SINGLE_TLV("HPMIXL MIXINR Volume", WM8962_HEADPHONE_MIXER_3,
+	       6, 1, 1, inmix_tlv),
+
+SOC_SINGLE_TLV("HPMIXR IN4L Volume", WM8962_HEADPHONE_MIXER_4,
+	       3, 7, 0, bypass_tlv),
+SOC_SINGLE_TLV("HPMIXR IN4R Volume", WM8962_HEADPHONE_MIXER_4,
+	       0, 7, 0, bypass_tlv),
+SOC_SINGLE_TLV("HPMIXR MIXINL Volume", WM8962_HEADPHONE_MIXER_4,
+	       7, 1, 1, inmix_tlv),
+SOC_SINGLE_TLV("HPMIXR MIXINR Volume", WM8962_HEADPHONE_MIXER_4,
+	       6, 1, 1, inmix_tlv),
+
+SOC_SINGLE_TLV("Speaker Boost Volume", WM8962_CLASS_D_CONTROL_2, 0, 7, 0,
+	       classd_tlv),
+};
+
+static const struct snd_kcontrol_new wm8962_spk_mono_controls[] = {
+SOC_SINGLE_TLV("Speaker Volume", WM8962_SPKOUTL_VOLUME, 0, 127, 0, out_tlv),
+SOC_SINGLE_EXT("Speaker Switch", WM8962_CLASS_D_CONTROL_1, 1, 1, 1,
+	       snd_soc_get_volsw, wm8962_put_spk_sw),
+SOC_SINGLE("Speaker ZC Switch", WM8962_SPKOUTL_VOLUME, 7, 1, 0),
+
+SOC_SINGLE("Speaker Mixer Switch", WM8962_SPEAKER_MIXER_3, 8, 1, 1),
+SOC_SINGLE_TLV("Speaker Mixer IN4L Volume", WM8962_SPEAKER_MIXER_3,
+	       3, 7, 0, bypass_tlv),
+SOC_SINGLE_TLV("Speaker Mixer IN4R Volume", WM8962_SPEAKER_MIXER_3,
+	       0, 7, 0, bypass_tlv),
+SOC_SINGLE_TLV("Speaker Mixer MIXINL Volume", WM8962_SPEAKER_MIXER_3,
+	       7, 1, 1, inmix_tlv),
+SOC_SINGLE_TLV("Speaker Mixer MIXINR Volume", WM8962_SPEAKER_MIXER_3,
+	       6, 1, 1, inmix_tlv),
+SOC_SINGLE_TLV("Speaker Mixer DACL Volume", WM8962_SPEAKER_MIXER_5,
+	       7, 1, 0, inmix_tlv),
+SOC_SINGLE_TLV("Speaker Mixer DACR Volume", WM8962_SPEAKER_MIXER_5,
+	       6, 1, 0, inmix_tlv),
+};
+
+static const struct snd_kcontrol_new wm8962_spk_stereo_controls[] = {
+SOC_DOUBLE_R_TLV("Speaker Volume", WM8962_SPKOUTL_VOLUME,
+		 WM8962_SPKOUTR_VOLUME, 0, 127, 0, out_tlv),
+SOC_DOUBLE_EXT("Speaker Switch", WM8962_CLASS_D_CONTROL_1, 1, 0, 1, 1,
+	       snd_soc_get_volsw, wm8962_put_spk_sw),
+SOC_DOUBLE_R("Speaker ZC Switch", WM8962_SPKOUTL_VOLUME, WM8962_SPKOUTR_VOLUME,
+	     7, 1, 0),
+
+SOC_DOUBLE_R("Speaker Mixer Switch", WM8962_SPEAKER_MIXER_3,
+	     WM8962_SPEAKER_MIXER_4, 8, 1, 1),
+
+SOC_SINGLE_TLV("SPKOUTL Mixer IN4L Volume", WM8962_SPEAKER_MIXER_3,
+	       3, 7, 0, bypass_tlv),
+SOC_SINGLE_TLV("SPKOUTL Mixer IN4R Volume", WM8962_SPEAKER_MIXER_3,
+	       0, 7, 0, bypass_tlv),
+SOC_SINGLE_TLV("SPKOUTL Mixer MIXINL Volume", WM8962_SPEAKER_MIXER_3,
+	       7, 1, 1, inmix_tlv),
+SOC_SINGLE_TLV("SPKOUTL Mixer MIXINR Volume", WM8962_SPEAKER_MIXER_3,
+	       6, 1, 1, inmix_tlv),
+SOC_SINGLE_TLV("SPKOUTL Mixer DACL Volume", WM8962_SPEAKER_MIXER_5,
+	       7, 1, 0, inmix_tlv),
+SOC_SINGLE_TLV("SPKOUTL Mixer DACR Volume", WM8962_SPEAKER_MIXER_5,
+	       6, 1, 0, inmix_tlv),
+
+SOC_SINGLE_TLV("SPKOUTR Mixer IN4L Volume", WM8962_SPEAKER_MIXER_4,
+	       3, 7, 0, bypass_tlv),
+SOC_SINGLE_TLV("SPKOUTR Mixer IN4R Volume", WM8962_SPEAKER_MIXER_4,
+	       0, 7, 0, bypass_tlv),
+SOC_SINGLE_TLV("SPKOUTR Mixer MIXINL Volume", WM8962_SPEAKER_MIXER_4,
+	       7, 1, 1, inmix_tlv),
+SOC_SINGLE_TLV("SPKOUTR Mixer MIXINR Volume", WM8962_SPEAKER_MIXER_4,
+	       6, 1, 1, inmix_tlv),
+SOC_SINGLE_TLV("SPKOUTR Mixer DACL Volume", WM8962_SPEAKER_MIXER_5,
+	       5, 1, 0, inmix_tlv),
+SOC_SINGLE_TLV("SPKOUTR Mixer DACR Volume", WM8962_SPEAKER_MIXER_5,
+	       4, 1, 0, inmix_tlv),
+};
+
+static int sysclk_event(struct snd_soc_dapm_widget *w,
+			struct snd_kcontrol *kcontrol, int event)
+{
+	struct snd_soc_codec *codec = w->codec;
+	int src;
+	int fll;
+
+	src = snd_soc_read(codec, WM8962_CLOCKING2) & WM8962_SYSCLK_SRC_MASK;
+
+	switch (src) {
+	case 0:      /* MCLK */
+		fll = 0;
+		break;
+	case 0x200:  /* FLL */
+		fll = 1;
+		break;
+	default:
+		dev_err(codec->dev, "Unknown SYSCLK source %x\n", src);
+		return -EINVAL;
+	}
+
+	switch (event) {
+	case SND_SOC_DAPM_PRE_PMU:
+		if (fll)
+			snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1,
+					    WM8962_FLL_ENA, WM8962_FLL_ENA);
+		break;
+
+	case SND_SOC_DAPM_POST_PMD:
+		if (fll)
+			snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1,
+					    WM8962_FLL_ENA, 0);
+		break;
+
+	default:
+		BUG();
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+static int cp_event(struct snd_soc_dapm_widget *w,
+		    struct snd_kcontrol *kcontrol, int event)
+{
+	switch (event) {
+	case SND_SOC_DAPM_POST_PMU:
+		msleep(5);
+		break;
+
+	default:
+		BUG();
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+static int hp_event(struct snd_soc_dapm_widget *w,
+		    struct snd_kcontrol *kcontrol, int event)
+{
+	struct snd_soc_codec *codec = w->codec;
+	int timeout;
+	int reg;
+	int expected = (WM8962_DCS_STARTUP_DONE_HP1L |
+			WM8962_DCS_STARTUP_DONE_HP1R);
+
+	switch (event) {
+	case SND_SOC_DAPM_POST_PMU:
+		snd_soc_update_bits(codec, WM8962_ANALOGUE_HP_0,
+				    WM8962_HP1L_ENA | WM8962_HP1R_ENA,
+				    WM8962_HP1L_ENA | WM8962_HP1R_ENA);
+		udelay(20);
+
+		snd_soc_update_bits(codec, WM8962_ANALOGUE_HP_0,
+				    WM8962_HP1L_ENA_DLY | WM8962_HP1R_ENA_DLY,
+				    WM8962_HP1L_ENA_DLY | WM8962_HP1R_ENA_DLY);
+
+		/* Start the DC servo */
+		snd_soc_update_bits(codec, WM8962_DC_SERVO_1,
+				    WM8962_HP1L_DCS_ENA | WM8962_HP1R_DCS_ENA |
+				    WM8962_HP1L_DCS_STARTUP |
+				    WM8962_HP1R_DCS_STARTUP,
+				    WM8962_HP1L_DCS_ENA | WM8962_HP1R_DCS_ENA |
+				    WM8962_HP1L_DCS_STARTUP |
+				    WM8962_HP1R_DCS_STARTUP);
+
+		/* Wait for it to complete, should be well under 100ms */
+		timeout = 0;
+		do {
+			msleep(1);
+			reg = snd_soc_read(codec, WM8962_DC_SERVO_6);
+			if (reg < 0) {
+				dev_err(codec->dev,
+					"Failed to read DCS status: %d\n",
+					reg);
+				continue;
+			}
+			dev_dbg(codec->dev, "DCS status: %x\n", reg);
+		} while (++timeout < 200 && (reg & expected) != expected);
+
+		if ((reg & expected) != expected)
+			dev_err(codec->dev, "DC servo timed out\n");
+		else
+			dev_dbg(codec->dev, "DC servo complete after %dms\n",
+				timeout);
+
+		snd_soc_update_bits(codec, WM8962_ANALOGUE_HP_0,
+				    WM8962_HP1L_ENA_OUTP |
+				    WM8962_HP1R_ENA_OUTP,
+				    WM8962_HP1L_ENA_OUTP |
+				    WM8962_HP1R_ENA_OUTP);
+		udelay(20);
+
+		snd_soc_update_bits(codec, WM8962_ANALOGUE_HP_0,
+				    WM8962_HP1L_RMV_SHORT |
+				    WM8962_HP1R_RMV_SHORT,
+				    WM8962_HP1L_RMV_SHORT |
+				    WM8962_HP1R_RMV_SHORT);
+		break;
+
+	case SND_SOC_DAPM_PRE_PMD:
+		snd_soc_update_bits(codec, WM8962_ANALOGUE_HP_0,
+				    WM8962_HP1L_RMV_SHORT |
+				    WM8962_HP1R_RMV_SHORT, 0);
+
+		udelay(20);
+
+		snd_soc_update_bits(codec, WM8962_DC_SERVO_1,
+				    WM8962_HP1L_DCS_ENA | WM8962_HP1R_DCS_ENA |
+				    WM8962_HP1L_DCS_STARTUP |
+				    WM8962_HP1R_DCS_STARTUP,
+				    0);
+
+		snd_soc_update_bits(codec, WM8962_ANALOGUE_HP_0,
+				    WM8962_HP1L_ENA | WM8962_HP1R_ENA |
+				    WM8962_HP1L_ENA_DLY | WM8962_HP1R_ENA_DLY |
+				    WM8962_HP1L_ENA_OUTP |
+				    WM8962_HP1R_ENA_OUTP, 0);
+				    
+		break;
+
+	default:
+		BUG();
+		return -EINVAL;
+	
+	}
+
+	return 0;
+}
+
+/* VU bits for the output PGAs only take effect while the PGA is powered */
+static int out_pga_event(struct snd_soc_dapm_widget *w,
+			 struct snd_kcontrol *kcontrol, int event)
+{
+	struct snd_soc_codec *codec = w->codec;
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+	u16 *reg_cache = wm8962->reg_cache;
+	int reg;
+
+	switch (w->shift) {
+	case WM8962_HPOUTR_PGA_ENA_SHIFT:
+		reg = WM8962_HPOUTR_VOLUME;
+		break;
+	case WM8962_HPOUTL_PGA_ENA_SHIFT:
+		reg = WM8962_HPOUTL_VOLUME;
+		break;
+	case WM8962_SPKOUTR_PGA_ENA_SHIFT:
+		reg = WM8962_SPKOUTR_VOLUME;
+		break;
+	case WM8962_SPKOUTL_PGA_ENA_SHIFT:
+		reg = WM8962_SPKOUTL_VOLUME;
+		break;
+	default:
+		BUG();
+		return -EINVAL;
+	}
+
+	switch (event) {
+	case SND_SOC_DAPM_POST_PMU:
+		return snd_soc_write(codec, reg, reg_cache[reg]);
+	default:
+		BUG();
+		return -EINVAL;
+	}
+}
+
+static const char *st_text[] = { "None", "Right", "Left" };
+
+static const struct soc_enum str_enum =
+	SOC_ENUM_SINGLE(WM8962_DAC_DSP_MIXING_1, 2, 3, st_text);
+
+static const struct snd_kcontrol_new str_mux =
+	SOC_DAPM_ENUM("Right Sidetone", str_enum);
+
+static const struct soc_enum stl_enum =
+	SOC_ENUM_SINGLE(WM8962_DAC_DSP_MIXING_2, 2, 3, st_text);
+
+static const struct snd_kcontrol_new stl_mux =
+	SOC_DAPM_ENUM("Left Sidetone", stl_enum);
+
+static const char *outmux_text[] = { "DAC", "Mixer" };
+
+static const struct soc_enum spkoutr_enum =
+	SOC_ENUM_SINGLE(WM8962_SPEAKER_MIXER_2, 7, 2, outmux_text);
+
+static const struct snd_kcontrol_new spkoutr_mux =
+	SOC_DAPM_ENUM("SPKOUTR Mux", spkoutr_enum);
+
+static const struct soc_enum spkoutl_enum =
+	SOC_ENUM_SINGLE(WM8962_SPEAKER_MIXER_1, 7, 2, outmux_text);
+
+static const struct snd_kcontrol_new spkoutl_mux =
+	SOC_DAPM_ENUM("SPKOUTL Mux", spkoutl_enum);
+
+static const struct soc_enum hpoutr_enum =
+	SOC_ENUM_SINGLE(WM8962_HEADPHONE_MIXER_2, 7, 2, outmux_text);
+
+static const struct snd_kcontrol_new hpoutr_mux =
+	SOC_DAPM_ENUM("HPOUTR Mux", hpoutr_enum);
+
+static const struct soc_enum hpoutl_enum =
+	SOC_ENUM_SINGLE(WM8962_HEADPHONE_MIXER_1, 7, 2, outmux_text);
+
+static const struct snd_kcontrol_new hpoutl_mux =
+	SOC_DAPM_ENUM("HPOUTL Mux", hpoutl_enum);
+
+static const struct snd_kcontrol_new inpgal[] = {
+SOC_DAPM_SINGLE("IN1L Switch", WM8962_LEFT_INPUT_PGA_CONTROL, 3, 1, 0),
+SOC_DAPM_SINGLE("IN2L Switch", WM8962_LEFT_INPUT_PGA_CONTROL, 2, 1, 0),
+SOC_DAPM_SINGLE("IN3L Switch", WM8962_LEFT_INPUT_PGA_CONTROL, 1, 1, 0),
+SOC_DAPM_SINGLE("IN4L Switch", WM8962_LEFT_INPUT_PGA_CONTROL, 0, 1, 0),
+};
+
+static const struct snd_kcontrol_new inpgar[] = {
+SOC_DAPM_SINGLE("IN1R Switch", WM8962_RIGHT_INPUT_PGA_CONTROL, 3, 1, 0),
+SOC_DAPM_SINGLE("IN2R Switch", WM8962_RIGHT_INPUT_PGA_CONTROL, 2, 1, 0),
+SOC_DAPM_SINGLE("IN3R Switch", WM8962_RIGHT_INPUT_PGA_CONTROL, 1, 1, 0),
+SOC_DAPM_SINGLE("IN4R Switch", WM8962_RIGHT_INPUT_PGA_CONTROL, 0, 1, 0),
+};
+
+static const struct snd_kcontrol_new mixinl[] = {
+SOC_DAPM_SINGLE("IN2L Switch", WM8962_INPUT_MIXER_CONTROL_2, 5, 1, 0),
+SOC_DAPM_SINGLE("IN3L Switch", WM8962_INPUT_MIXER_CONTROL_2, 4, 1, 0),
+SOC_DAPM_SINGLE("PGA Switch", WM8962_INPUT_MIXER_CONTROL_2, 3, 1, 0),
+};
+
+static const struct snd_kcontrol_new mixinr[] = {
+SOC_DAPM_SINGLE("IN2R Switch", WM8962_INPUT_MIXER_CONTROL_2, 2, 1, 0),
+SOC_DAPM_SINGLE("IN3R Switch", WM8962_INPUT_MIXER_CONTROL_2, 1, 1, 0),
+SOC_DAPM_SINGLE("PGA Switch", WM8962_INPUT_MIXER_CONTROL_2, 0, 1, 0),
+};
+
+static const struct snd_kcontrol_new hpmixl[] = {
+SOC_DAPM_SINGLE("DACL Switch", WM8962_HEADPHONE_MIXER_1, 5, 1, 0),
+SOC_DAPM_SINGLE("DACR Switch", WM8962_HEADPHONE_MIXER_1, 4, 1, 0),
+SOC_DAPM_SINGLE("MIXINL Switch", WM8962_HEADPHONE_MIXER_1, 3, 1, 0),
+SOC_DAPM_SINGLE("MIXINR Switch", WM8962_HEADPHONE_MIXER_1, 2, 1, 0),
+SOC_DAPM_SINGLE("IN4L Switch", WM8962_HEADPHONE_MIXER_1, 1, 1, 0),
+SOC_DAPM_SINGLE("IN4R Switch", WM8962_HEADPHONE_MIXER_1, 0, 1, 0),
+};
+
+static const struct snd_kcontrol_new hpmixr[] = {
+SOC_DAPM_SINGLE("DACL Switch", WM8962_HEADPHONE_MIXER_2, 5, 1, 0),
+SOC_DAPM_SINGLE("DACR Switch", WM8962_HEADPHONE_MIXER_2, 4, 1, 0),
+SOC_DAPM_SINGLE("MIXINL Switch", WM8962_HEADPHONE_MIXER_2, 3, 1, 0),
+SOC_DAPM_SINGLE("MIXINR Switch", WM8962_HEADPHONE_MIXER_2, 2, 1, 0),
+SOC_DAPM_SINGLE("IN4L Switch", WM8962_HEADPHONE_MIXER_2, 1, 1, 0),
+SOC_DAPM_SINGLE("IN4R Switch", WM8962_HEADPHONE_MIXER_2, 0, 1, 0),
+};
+
+static const struct snd_kcontrol_new spkmixl[] = {
+SOC_DAPM_SINGLE("DACL Switch", WM8962_SPEAKER_MIXER_1, 5, 1, 0),
+SOC_DAPM_SINGLE("DACR Switch", WM8962_SPEAKER_MIXER_1, 4, 1, 0),
+SOC_DAPM_SINGLE("MIXINL Switch", WM8962_SPEAKER_MIXER_1, 3, 1, 0),
+SOC_DAPM_SINGLE("MIXINR Switch", WM8962_SPEAKER_MIXER_1, 2, 1, 0),
+SOC_DAPM_SINGLE("IN4L Switch", WM8962_SPEAKER_MIXER_1, 1, 1, 0),
+SOC_DAPM_SINGLE("IN4R Switch", WM8962_SPEAKER_MIXER_1, 0, 1, 0),
+};
+
+static const struct snd_kcontrol_new spkmixr[] = {
+SOC_DAPM_SINGLE("DACL Switch", WM8962_SPEAKER_MIXER_2, 5, 1, 0),
+SOC_DAPM_SINGLE("DACR Switch", WM8962_SPEAKER_MIXER_2, 4, 1, 0),
+SOC_DAPM_SINGLE("MIXINL Switch", WM8962_SPEAKER_MIXER_2, 3, 1, 0),
+SOC_DAPM_SINGLE("MIXINR Switch", WM8962_SPEAKER_MIXER_2, 2, 1, 0),
+SOC_DAPM_SINGLE("IN4L Switch", WM8962_SPEAKER_MIXER_2, 1, 1, 0),
+SOC_DAPM_SINGLE("IN4R Switch", WM8962_SPEAKER_MIXER_2, 0, 1, 0),
+};
+
+static const struct snd_soc_dapm_widget wm8962_dapm_widgets[] = {
+SND_SOC_DAPM_INPUT("IN1L"),
+SND_SOC_DAPM_INPUT("IN1R"),
+SND_SOC_DAPM_INPUT("IN2L"),
+SND_SOC_DAPM_INPUT("IN2R"),
+SND_SOC_DAPM_INPUT("IN3L"),
+SND_SOC_DAPM_INPUT("IN3R"),
+SND_SOC_DAPM_INPUT("IN4L"),
+SND_SOC_DAPM_INPUT("IN4R"),
+SND_SOC_DAPM_INPUT("Beep"),
+
+SND_SOC_DAPM_SUPPLY("Class G", WM8962_CHARGE_PUMP_B, 0, 1, NULL, 0),
+SND_SOC_DAPM_SUPPLY("SYSCLK", WM8962_CLOCKING2, 5, 0, sysclk_event,
+		    SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
+SND_SOC_DAPM_SUPPLY("Charge Pump", WM8962_CHARGE_PUMP_1, 0, 0, cp_event,
+		    SND_SOC_DAPM_POST_PMU),
+SND_SOC_DAPM_SUPPLY("TOCLK", WM8962_ADDITIONAL_CONTROL_1, 0, 0, NULL, 0),
+
+SND_SOC_DAPM_MIXER("INPGAL", WM8962_LEFT_INPUT_PGA_CONTROL, 4, 0,
+		   inpgal, ARRAY_SIZE(inpgal)),
+SND_SOC_DAPM_MIXER("INPGAR", WM8962_RIGHT_INPUT_PGA_CONTROL, 4, 0,
+		   inpgar, ARRAY_SIZE(inpgar)),
+SND_SOC_DAPM_MIXER("MIXINL", WM8962_PWR_MGMT_1, 5, 0,
+		   mixinl, ARRAY_SIZE(mixinl)),
+SND_SOC_DAPM_MIXER("MIXINR", WM8962_PWR_MGMT_1, 4, 0,
+		   mixinr, ARRAY_SIZE(mixinr)),
+
+SND_SOC_DAPM_ADC("ADCL", "Capture", WM8962_PWR_MGMT_1, 3, 0),
+SND_SOC_DAPM_ADC("ADCR", "Capture", WM8962_PWR_MGMT_1, 2, 0),
+
+SND_SOC_DAPM_MUX("STL", SND_SOC_NOPM, 0, 0, &stl_mux),
+SND_SOC_DAPM_MUX("STR", SND_SOC_NOPM, 0, 0, &str_mux),
+
+SND_SOC_DAPM_DAC("DACL", "Playback", WM8962_PWR_MGMT_2, 8, 0),
+SND_SOC_DAPM_DAC("DACR", "Playback", WM8962_PWR_MGMT_2, 7, 0),
+
+SND_SOC_DAPM_PGA("Left Bypass", SND_SOC_NOPM, 0, 0, NULL, 0),
+SND_SOC_DAPM_PGA("Right Bypass", SND_SOC_NOPM, 0, 0, NULL, 0),
+
+SND_SOC_DAPM_MIXER("HPMIXL", WM8962_MIXER_ENABLES, 3, 0,
+		   hpmixl, ARRAY_SIZE(hpmixl)),
+SND_SOC_DAPM_MIXER("HPMIXR", WM8962_MIXER_ENABLES, 2, 0,
+		   hpmixr, ARRAY_SIZE(hpmixr)),
+
+SND_SOC_DAPM_MUX_E("HPOUTL PGA", WM8962_PWR_MGMT_2, 6, 0, &hpoutl_mux,
+		   out_pga_event, SND_SOC_DAPM_POST_PMU),
+SND_SOC_DAPM_MUX_E("HPOUTR PGA", WM8962_PWR_MGMT_2, 5, 0, &hpoutr_mux,
+		   out_pga_event, SND_SOC_DAPM_POST_PMU),
+
+SND_SOC_DAPM_PGA_E("HPOUT", SND_SOC_NOPM, 0, 0, NULL, 0, hp_event,
+		   SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
+
+SND_SOC_DAPM_OUTPUT("HPOUTL"),
+SND_SOC_DAPM_OUTPUT("HPOUTR"),
+};
+
+static const struct snd_soc_dapm_widget wm8962_dapm_spk_mono_widgets[] = {
+SND_SOC_DAPM_MIXER("Speaker Mixer", WM8962_MIXER_ENABLES, 1, 0,
+		   spkmixl, ARRAY_SIZE(spkmixl)),
+SND_SOC_DAPM_MUX_E("Speaker PGA", WM8962_PWR_MGMT_2, 4, 0, &spkoutl_mux,
+		   out_pga_event, SND_SOC_DAPM_POST_PMU),
+SND_SOC_DAPM_PGA("Speaker Output", WM8962_CLASS_D_CONTROL_1, 7, 0, NULL, 0),
+SND_SOC_DAPM_OUTPUT("SPKOUT"),
+};
+
+static const struct snd_soc_dapm_widget wm8962_dapm_spk_stereo_widgets[] = {
+SND_SOC_DAPM_MIXER("SPKOUTL Mixer", WM8962_MIXER_ENABLES, 1, 0,
+		   spkmixl, ARRAY_SIZE(spkmixl)),
+SND_SOC_DAPM_MIXER("SPKOUTR Mixer", WM8962_MIXER_ENABLES, 0, 0,
+		   spkmixr, ARRAY_SIZE(spkmixr)),
+
+SND_SOC_DAPM_MUX_E("SPKOUTL PGA", WM8962_PWR_MGMT_2, 4, 0, &spkoutl_mux,
+		   out_pga_event, SND_SOC_DAPM_POST_PMU),
+SND_SOC_DAPM_MUX_E("SPKOUTR PGA", WM8962_PWR_MGMT_2, 3, 0, &spkoutr_mux,
+		   out_pga_event, SND_SOC_DAPM_POST_PMU),
+
+SND_SOC_DAPM_PGA("SPKOUTR Output", WM8962_CLASS_D_CONTROL_1, 7, 0, NULL, 0),
+SND_SOC_DAPM_PGA("SPKOUTL Output", WM8962_CLASS_D_CONTROL_1, 6, 0, NULL, 0),
+
+SND_SOC_DAPM_OUTPUT("SPKOUTL"),
+SND_SOC_DAPM_OUTPUT("SPKOUTR"),
+};
+
+static const struct snd_soc_dapm_route wm8962_intercon[] = {
+	{ "INPGAL", "IN1L Switch", "IN1L" },
+	{ "INPGAL", "IN2L Switch", "IN2L" },
+	{ "INPGAL", "IN3L Switch", "IN3L" },
+	{ "INPGAL", "IN4L Switch", "IN4L" },
+
+	{ "INPGAR", "IN1R Switch", "IN1R" },
+	{ "INPGAR", "IN2R Switch", "IN2R" },
+	{ "INPGAR", "IN3R Switch", "IN3R" },
+	{ "INPGAR", "IN4R Switch", "IN4R" },
+
+	{ "MIXINL", "IN2L Switch", "IN2L" },
+	{ "MIXINL", "IN3L Switch", "IN3L" },
+	{ "MIXINL", "PGA Switch", "INPGAL" },
+
+	{ "MIXINR", "IN2R Switch", "IN2R" },
+	{ "MIXINR", "IN3R Switch", "IN3R" },
+	{ "MIXINR", "PGA Switch", "INPGAR" },
+
+	{ "ADCL", NULL, "SYSCLK" },
+	{ "ADCL", NULL, "TOCLK" },
+	{ "ADCL", NULL, "MIXINL" },
+
+	{ "ADCR", NULL, "SYSCLK" },
+	{ "ADCR", NULL, "TOCLK" },
+	{ "ADCR", NULL, "MIXINR" },
+
+	{ "STL", "Left", "ADCL" },
+	{ "STL", "Right", "ADCR" },
+
+	{ "STR", "Left", "ADCL" },
+	{ "STR", "Right", "ADCR" },
+
+	{ "DACL", NULL, "SYSCLK" },
+	{ "DACL", NULL, "TOCLK" },
+	{ "DACL", NULL, "Beep" },
+	{ "DACL", NULL, "STL" },
+
+	{ "DACR", NULL, "SYSCLK" },
+	{ "DACR", NULL, "TOCLK" },
+	{ "DACR", NULL, "Beep" },
+	{ "DACR", NULL, "STR" },
+
+	{ "HPMIXL", "IN4L Switch", "IN4L" },
+	{ "HPMIXL", "IN4R Switch", "IN4R" },
+	{ "HPMIXL", "DACL Switch", "DACL" },
+	{ "HPMIXL", "DACR Switch", "DACR" },
+	{ "HPMIXL", "MIXINL Switch", "MIXINL" },
+	{ "HPMIXL", "MIXINR Switch", "MIXINR" },
+
+	{ "HPMIXR", "IN4L Switch", "IN4L" },
+	{ "HPMIXR", "IN4R Switch", "IN4R" },
+	{ "HPMIXR", "DACL Switch", "DACL" },
+	{ "HPMIXR", "DACR Switch", "DACR" },
+	{ "HPMIXR", "MIXINL Switch", "MIXINL" },
+	{ "HPMIXR", "MIXINR Switch", "MIXINR" },
+
+	{ "Left Bypass", NULL, "HPMIXL" },
+	{ "Left Bypass", NULL, "Class G" },
+
+	{ "Right Bypass", NULL, "HPMIXR" },
+	{ "Right Bypass", NULL, "Class G" },
+
+	{ "HPOUTL PGA", "Mixer", "Left Bypass" },
+	{ "HPOUTL PGA", "DAC", "DACL" },
+
+	{ "HPOUTR PGA", "Mixer", "Right Bypass" },
+	{ "HPOUTR PGA", "DAC", "DACR" },
+
+	{ "HPOUT", NULL, "HPOUTL PGA" },
+	{ "HPOUT", NULL, "HPOUTR PGA" },
+	{ "HPOUT", NULL, "Charge Pump" },
+	{ "HPOUT", NULL, "SYSCLK" },
+	{ "HPOUT", NULL, "TOCLK" },
+
+	{ "HPOUTL", NULL, "HPOUT" },
+	{ "HPOUTR", NULL, "HPOUT" },
+};
+
+static const struct snd_soc_dapm_route wm8962_spk_mono_intercon[] = {
+	{ "Speaker Mixer", "IN4L Switch", "IN4L" },
+	{ "Speaker Mixer", "IN4R Switch", "IN4R" },
+	{ "Speaker Mixer", "DACL Switch", "DACL" },
+	{ "Speaker Mixer", "DACR Switch", "DACR" },
+	{ "Speaker Mixer", "MIXINL Switch", "MIXINL" },
+	{ "Speaker Mixer", "MIXINR Switch", "MIXINR" },
+
+	{ "Speaker PGA", "Mixer", "Speaker Mixer" },
+	{ "Speaker PGA", "DAC", "DACL" },
+
+	{ "Speaker Output", NULL, "Speaker PGA" },
+	{ "Speaker Output", NULL, "SYSCLK" },
+	{ "Speaker Output", NULL, "TOCLK" },
+
+	{ "SPKOUT", NULL, "Speaker Output" },
+};
+
+static const struct snd_soc_dapm_route wm8962_spk_stereo_intercon[] = {
+	{ "SPKOUTL Mixer", "IN4L Switch", "IN4L" },
+	{ "SPKOUTL Mixer", "IN4R Switch", "IN4R" },
+	{ "SPKOUTL Mixer", "DACL Switch", "DACL" },
+	{ "SPKOUTL Mixer", "DACR Switch", "DACR" },
+	{ "SPKOUTL Mixer", "MIXINL Switch", "MIXINL" },
+	{ "SPKOUTL Mixer", "MIXINR Switch", "MIXINR" },
+
+	{ "SPKOUTR Mixer", "IN4L Switch", "IN4L" },
+	{ "SPKOUTR Mixer", "IN4R Switch", "IN4R" },
+	{ "SPKOUTR Mixer", "DACL Switch", "DACL" },
+	{ "SPKOUTR Mixer", "DACR Switch", "DACR" },
+	{ "SPKOUTR Mixer", "MIXINL Switch", "MIXINL" },
+	{ "SPKOUTR Mixer", "MIXINR Switch", "MIXINR" },
+
+	{ "SPKOUTL PGA", "Mixer", "SPKOUTL Mixer" },
+	{ "SPKOUTL PGA", "DAC", "DACL" },
+
+	{ "SPKOUTR PGA", "Mixer", "SPKOUTR Mixer" },
+	{ "SPKOUTR PGA", "DAC", "DACR" },
+
+	{ "SPKOUTL Output", NULL, "SPKOUTL PGA" },
+	{ "SPKOUTL Output", NULL, "SYSCLK" },
+	{ "SPKOUTL Output", NULL, "TOCLK" },
+
+	{ "SPKOUTR Output", NULL, "SPKOUTR PGA" },
+	{ "SPKOUTR Output", NULL, "SYSCLK" },
+	{ "SPKOUTR Output", NULL, "TOCLK" },
+
+	{ "SPKOUTL", NULL, "SPKOUTL Output" },
+	{ "SPKOUTR", NULL, "SPKOUTR Output" },
+};
+
+static int wm8962_add_widgets(struct snd_soc_codec *codec)
+{
+	struct wm8962_pdata *pdata = dev_get_platdata(codec->dev);
+
+	snd_soc_add_controls(codec, wm8962_snd_controls,
+			     ARRAY_SIZE(wm8962_snd_controls));
+	if (pdata && pdata->spk_mono)
+		snd_soc_add_controls(codec, wm8962_spk_mono_controls,
+				     ARRAY_SIZE(wm8962_spk_mono_controls));
+	else
+		snd_soc_add_controls(codec, wm8962_spk_stereo_controls,
+				     ARRAY_SIZE(wm8962_spk_stereo_controls));
+
+
+	snd_soc_dapm_new_controls(codec, wm8962_dapm_widgets,
+				  ARRAY_SIZE(wm8962_dapm_widgets));
+	if (pdata && pdata->spk_mono)
+		snd_soc_dapm_new_controls(codec, wm8962_dapm_spk_mono_widgets,
+					  ARRAY_SIZE(wm8962_dapm_spk_mono_widgets));
+	else
+		snd_soc_dapm_new_controls(codec, wm8962_dapm_spk_stereo_widgets,
+					  ARRAY_SIZE(wm8962_dapm_spk_stereo_widgets));
+
+	snd_soc_dapm_add_routes(codec, wm8962_intercon,
+				ARRAY_SIZE(wm8962_intercon));
+	if (pdata && pdata->spk_mono)
+		snd_soc_dapm_add_routes(codec, wm8962_spk_mono_intercon,
+					ARRAY_SIZE(wm8962_spk_mono_intercon));
+	else
+		snd_soc_dapm_add_routes(codec, wm8962_spk_stereo_intercon,
+					ARRAY_SIZE(wm8962_spk_stereo_intercon));
+
+
+	snd_soc_dapm_disable_pin(codec, "Beep");
+
+	return 0;
+}
+
+static void wm8962_sync_cache(struct snd_soc_codec *codec)
+{
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+	int i;
+
+	if (!codec->cache_sync)
+		return;
+
+	dev_dbg(codec->dev, "Syncing cache\n");
+
+	codec->cache_only = 0;
+
+	/* Sync back cached values if they're different from the
+	 * hardware default.
+	 */
+	for (i = 1; i < ARRAY_SIZE(wm8962->reg_cache); i++) {
+		if (i == WM8962_SOFTWARE_RESET)
+			continue;
+		if (wm8962->reg_cache[i] == wm8962_reg[i])
+			continue;
+
+		snd_soc_write(codec, i, wm8962->reg_cache[i]);
+	}
+
+	codec->cache_sync = 0;
+}
+
+/* -1 for reserved values */
+static const int bclk_divs[] = {
+	1, -1, 2, 3, 4, -1, 6, 8, -1, 12, 16, 24, -1, 32, 32, 32
+};
+
+static void wm8962_configure_bclk(struct snd_soc_codec *codec)
+{
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+	int dspclk, i;
+	int clocking2 = 0;
+	int aif2 = 0;
+
+	/* If the CODEC is powered on we can configure BCLK */
+	if (codec->bias_level != SND_SOC_BIAS_OFF) {
+		dev_dbg(codec->dev, "Bias is off, can't configure BCLK\n");
+		return;
+	}
+
+	if (!wm8962->bclk) {
+		dev_dbg(codec->dev, "No BCLK rate configured\n");
+		return;
+	}
+
+	dspclk = snd_soc_read(codec, WM8962_CLOCKING1);
+	if (dspclk < 0) {
+		dev_err(codec->dev, "Failed to read DSPCLK: %d\n", dspclk);
+		return;
+	}
+
+	dspclk = (dspclk & WM8962_DSPCLK_DIV_MASK) >> WM8962_DSPCLK_DIV_SHIFT;
+	switch (dspclk) {
+	case 0:
+		dspclk = wm8962->sysclk_rate;
+		break;
+	case 1:
+		dspclk = wm8962->sysclk_rate / 2;
+		break;
+	case 2:
+		dspclk = wm8962->sysclk_rate / 4;
+		break;
+	default:
+		dev_warn(codec->dev, "Unknown DSPCLK divisor read back\n");
+		dspclk = wm8962->sysclk;
+	}
+
+	dev_dbg(codec->dev, "DSPCLK is %dHz, BCLK %d\n", dspclk, wm8962->bclk);
+
+	/* We're expecting an exact match */
+	for (i = 0; i < ARRAY_SIZE(bclk_divs); i++) {
+		if (bclk_divs[i] < 0)
+			continue;
+
+		if (dspclk / bclk_divs[i] == wm8962->bclk) {
+			dev_dbg(codec->dev, "Selected BCLK_DIV %d for %dHz\n",
+				bclk_divs[i], wm8962->bclk);
+			clocking2 |= i;
+			break;
+		}
+	}
+	if (i == ARRAY_SIZE(bclk_divs)) {
+		dev_err(codec->dev, "Unsupported BCLK ratio %d\n",
+			dspclk / wm8962->bclk);
+		return;
+	}
+
+	aif2 |= wm8962->bclk / wm8962->lrclk;
+	dev_dbg(codec->dev, "Selected LRCLK divisor %d for %dHz\n",
+		wm8962->bclk / wm8962->lrclk, wm8962->lrclk);
+
+	snd_soc_update_bits(codec, WM8962_CLOCKING2,
+			    WM8962_BCLK_DIV_MASK, clocking2);
+	snd_soc_update_bits(codec, WM8962_AUDIO_INTERFACE_2,
+			    WM8962_AIF_RATE_MASK, aif2);
+}
+
+static int wm8962_set_bias_level(struct snd_soc_codec *codec,
+				 enum snd_soc_bias_level level)
+{
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+	int ret;
+
+	if (level == codec->bias_level)
+		return 0;
+
+	switch (level) {
+	case SND_SOC_BIAS_ON:
+		break;
+
+	case SND_SOC_BIAS_PREPARE:
+		/* VMID 2*50k */
+		snd_soc_update_bits(codec, WM8962_PWR_MGMT_1,
+				    WM8962_VMID_SEL_MASK, 0x80);
+		break;
+
+	case SND_SOC_BIAS_STANDBY:
+		if (codec->bias_level == SND_SOC_BIAS_OFF) {
+			ret = regulator_bulk_enable(ARRAY_SIZE(wm8962->supplies),
+						    wm8962->supplies);
+			if (ret != 0) {
+				dev_err(codec->dev,
+					"Failed to enable supplies: %d\n",
+					ret);
+				return ret;
+			}
+
+			wm8962_sync_cache(codec);
+
+			snd_soc_update_bits(codec, WM8962_ANTI_POP,
+					    WM8962_STARTUP_BIAS_ENA |
+					    WM8962_VMID_BUF_ENA,
+					    WM8962_STARTUP_BIAS_ENA |
+					    WM8962_VMID_BUF_ENA);
+
+			/* Bias enable at 2*50k for ramp */
+			snd_soc_update_bits(codec, WM8962_PWR_MGMT_1,
+					    WM8962_VMID_SEL_MASK |
+					    WM8962_BIAS_ENA,
+					    WM8962_BIAS_ENA | 0x180);
+
+			msleep(5);
+
+			snd_soc_update_bits(codec, WM8962_CLOCKING2,
+					    WM8962_CLKREG_OVD,
+					    WM8962_CLKREG_OVD);
+
+			wm8962_configure_bclk(codec);
+		}
+
+		/* VMID 2*250k */
+		snd_soc_update_bits(codec, WM8962_PWR_MGMT_1,
+				    WM8962_VMID_SEL_MASK, 0x100);
+		break;
+
+	case SND_SOC_BIAS_OFF:
+		snd_soc_update_bits(codec, WM8962_PWR_MGMT_1,
+				    WM8962_VMID_SEL_MASK | WM8962_BIAS_ENA, 0);
+
+		snd_soc_update_bits(codec, WM8962_ANTI_POP,
+				    WM8962_STARTUP_BIAS_ENA |
+				    WM8962_VMID_BUF_ENA, 0);
+
+		regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies),
+				       wm8962->supplies);
+		break;
+	}
+	codec->bias_level = level;
+	return 0;
+}
+
+static const struct {
+	int rate;
+	int reg;
+} sr_vals[] = {
+	{ 48000, 0 },
+	{ 44100, 0 },
+	{ 32000, 1 },
+	{ 22050, 2 },
+	{ 24000, 2 },
+	{ 16000, 3 },
+	{ 11025, 4 },
+	{ 12000, 4 },
+	{ 8000,  5 },
+	{ 88200, 6 },
+	{ 96000, 6 },
+};
+
+static const int sysclk_rates[] = {
+	64, 128, 192, 256, 384, 512, 768, 1024, 1408, 1536,
+};
+
+static int wm8962_hw_params(struct snd_pcm_substream *substream,
+			    struct snd_pcm_hw_params *params,
+			    struct snd_soc_dai *dai)
+{
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct snd_soc_codec *codec = rtd->codec;
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+	int rate = params_rate(params);
+	int i;
+	int aif0 = 0;
+	int adctl3 = 0;
+	int clocking4 = 0;
+
+	wm8962->bclk = snd_soc_params_to_bclk(params);
+	wm8962->lrclk = params_rate(params);
+
+	for (i = 0; i < ARRAY_SIZE(sr_vals); i++) {
+		if (sr_vals[i].rate == rate) {
+			adctl3 |= sr_vals[i].reg;
+			break;
+		}
+	}
+	if (i == ARRAY_SIZE(sr_vals)) {
+		dev_err(codec->dev, "Unsupported rate %dHz\n", rate);
+		return -EINVAL;
+	}
+
+	if (rate % 8000 == 0)
+		adctl3 |= WM8962_SAMPLE_RATE_INT_MODE;
+
+	for (i = 0; i < ARRAY_SIZE(sysclk_rates); i++) {
+		if (sysclk_rates[i] == wm8962->sysclk_rate / rate) {
+			clocking4 |= i << WM8962_SYSCLK_RATE_SHIFT;
+			break;
+		}
+	}
+	if (i == ARRAY_SIZE(sysclk_rates)) {
+		dev_err(codec->dev, "Unsupported sysclk ratio %d\n",
+			wm8962->sysclk_rate / rate);
+		return -EINVAL;
+	}
+
+	switch (params_format(params)) {
+	case SNDRV_PCM_FORMAT_S16_LE:
+		break;
+	case SNDRV_PCM_FORMAT_S20_3LE:
+		aif0 |= 0x40;
+		break;
+	case SNDRV_PCM_FORMAT_S24_LE:
+		aif0 |= 0x80;
+		break;
+	case SNDRV_PCM_FORMAT_S32_LE:
+		aif0 |= 0xc0;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	snd_soc_update_bits(codec, WM8962_AUDIO_INTERFACE_0,
+			    WM8962_WL_MASK, aif0);
+	snd_soc_update_bits(codec, WM8962_ADDITIONAL_CONTROL_3,
+			    WM8962_SAMPLE_RATE_INT_MODE |
+			    WM8962_SAMPLE_RATE_MASK, adctl3);
+	snd_soc_update_bits(codec, WM8962_CLOCKING_4,
+			    WM8962_SYSCLK_RATE_MASK, clocking4);
+
+	wm8962_configure_bclk(codec);
+
+	return 0;
+}
+
+static int wm8962_set_dai_sysclk(struct snd_soc_dai *dai, int clk_id,
+				 unsigned int freq, int dir)
+{
+	struct snd_soc_codec *codec = dai->codec;
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+	int src;
+
+	switch (clk_id) {
+	case WM8962_SYSCLK_MCLK:
+		wm8962->sysclk = WM8962_SYSCLK_MCLK;
+		src = 0;
+		break;
+	case WM8962_SYSCLK_FLL:
+		wm8962->sysclk = WM8962_SYSCLK_FLL;
+		src = 1 << WM8962_SYSCLK_SRC_SHIFT;
+		WARN_ON(freq != wm8962->fll_fout);
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	snd_soc_update_bits(codec, WM8962_CLOCKING2, WM8962_SYSCLK_SRC_MASK,
+			    src);
+
+	wm8962->sysclk_rate = freq;
+
+	return 0;
+}
+
+static int wm8962_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt)
+{
+	struct snd_soc_codec *codec = dai->codec;
+	int aif0 = 0;
+
+	switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
+	case SND_SOC_DAIFMT_DSP_A:
+		aif0 |= WM8962_LRCLK_INV;
+	case SND_SOC_DAIFMT_DSP_B:
+		aif0 |= 3;
+
+		switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
+		case SND_SOC_DAIFMT_NB_NF:
+		case SND_SOC_DAIFMT_IB_NF:
+			break;
+		default:
+			return -EINVAL;
+		}
+		break;
+
+	case SND_SOC_DAIFMT_RIGHT_J:
+		break;
+	case SND_SOC_DAIFMT_LEFT_J:
+		aif0 |= 1;
+		break;
+	case SND_SOC_DAIFMT_I2S:
+		aif0 |= 2;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
+	case SND_SOC_DAIFMT_NB_NF:
+		break;
+	case SND_SOC_DAIFMT_IB_NF:
+		aif0 |= WM8962_BCLK_INV;
+		break;
+	case SND_SOC_DAIFMT_NB_IF:
+		aif0 |= WM8962_LRCLK_INV;
+		break;
+	case SND_SOC_DAIFMT_IB_IF:
+		aif0 |= WM8962_BCLK_INV | WM8962_LRCLK_INV;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
+	case SND_SOC_DAIFMT_CBM_CFM:
+		aif0 |= WM8962_MSTR;
+		break;
+	case SND_SOC_DAIFMT_CBS_CFS:
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	snd_soc_update_bits(codec, WM8962_AUDIO_INTERFACE_0,
+			    WM8962_FMT_MASK | WM8962_BCLK_INV | WM8962_MSTR |
+			    WM8962_LRCLK_INV, aif0);
+
+	return 0;
+}
+
+struct _fll_div {
+	u16 fll_fratio;
+	u16 fll_outdiv;
+	u16 fll_refclk_div;
+	u16 n;
+	u16 theta;
+	u16 lambda;
+};
+
+/* The size in bits of the FLL divide multiplied by 10
+ * to allow rounding later */
+#define FIXED_FLL_SIZE ((1 << 16) * 10)
+
+static struct {
+	unsigned int min;
+	unsigned int max;
+	u16 fll_fratio;
+	int ratio;
+} fll_fratios[] = {
+	{       0,    64000, 4, 16 },
+	{   64000,   128000, 3,  8 },
+	{  128000,   256000, 2,  4 },
+	{  256000,  1000000, 1,  2 },
+	{ 1000000, 13500000, 0,  1 },
+};
+
+static int fll_factors(struct _fll_div *fll_div, unsigned int Fref,
+		       unsigned int Fout)
+{
+	unsigned int target;
+	unsigned int div;
+	unsigned int fratio, gcd_fll;
+	int i;
+
+	/* Fref must be <=13.5MHz */
+	div = 1;
+	fll_div->fll_refclk_div = 0;
+	while ((Fref / div) > 13500000) {
+		div *= 2;
+		fll_div->fll_refclk_div++;
+
+		if (div > 4) {
+			pr_err("Can't scale %dMHz input down to <=13.5MHz\n",
+			       Fref);
+			return -EINVAL;
+		}
+	}
+
+	pr_debug("FLL Fref=%u Fout=%u\n", Fref, Fout);
+
+	/* Apply the division for our remaining calculations */
+	Fref /= div;
+
+	/* Fvco should be 90-100MHz; don't check the upper bound */
+	div = 2;
+	while (Fout * div < 90000000) {
+		div++;
+		if (div > 64) {
+			pr_err("Unable to find FLL_OUTDIV for Fout=%uHz\n",
+			       Fout);
+			return -EINVAL;
+		}
+	}
+	target = Fout * div;
+	fll_div->fll_outdiv = div - 1;
+
+	pr_debug("FLL Fvco=%dHz\n", target);
+
+	/* Find an appropraite FLL_FRATIO and factor it out of the target */
+	for (i = 0; i < ARRAY_SIZE(fll_fratios); i++) {
+		if (fll_fratios[i].min <= Fref && Fref <= fll_fratios[i].max) {
+			fll_div->fll_fratio = fll_fratios[i].fll_fratio;
+			fratio = fll_fratios[i].ratio;
+			break;
+		}
+	}
+	if (i == ARRAY_SIZE(fll_fratios)) {
+		pr_err("Unable to find FLL_FRATIO for Fref=%uHz\n", Fref);
+		return -EINVAL;
+	}
+
+	fll_div->n = target / (fratio * Fref);
+
+	if (target % Fref == 0) {
+		fll_div->theta = 0;
+		fll_div->lambda = 0;
+	} else {
+		gcd_fll = gcd(target, fratio * Fref);
+
+		fll_div->theta = (target - (fll_div->n * fratio * Fref))
+			/ gcd_fll;
+		fll_div->lambda = (fratio * Fref) / gcd_fll;
+	}
+
+	pr_debug("FLL N=%x THETA=%x LAMBDA=%x\n",
+		 fll_div->n, fll_div->theta, fll_div->lambda);
+	pr_debug("FLL_FRATIO=%x FLL_OUTDIV=%x FLL_REFCLK_DIV=%x\n",
+		 fll_div->fll_fratio, fll_div->fll_outdiv,
+		 fll_div->fll_refclk_div);
+
+	return 0;
+}
+
+static int wm8962_set_fll(struct snd_soc_dai *dai, int fll_id, int source,
+			  unsigned int Fref, unsigned int Fout)
+{
+	struct snd_soc_codec *codec = dai->codec;
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+	struct _fll_div fll_div;
+	int ret;
+	int fll1 = snd_soc_read(codec, WM8962_FLL_CONTROL_1);
+
+	/* Any change? */
+	if (source == wm8962->fll_src && Fref == wm8962->fll_fref &&
+	    Fout == wm8962->fll_fout)
+		return 0;
+
+	if (Fout == 0) {
+		dev_dbg(codec->dev, "FLL disabled\n");
+
+		wm8962->fll_fref = 0;
+		wm8962->fll_fout = 0;
+
+		snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1,
+				    WM8962_FLL_ENA, 0);
+
+		return 0;
+	}
+
+	ret = fll_factors(&fll_div, Fref, Fout);
+	if (ret != 0)
+		return ret;
+
+	switch (fll_id) {
+	case WM8962_FLL_MCLK:
+	case WM8962_FLL_BCLK:
+	case WM8962_FLL_OSC:
+		fll1 |= (fll_id - 1) << WM8962_FLL_REFCLK_SRC_SHIFT;
+		break;
+	case WM8962_FLL_INT:
+		snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1,
+				    WM8962_FLL_OSC_ENA, WM8962_FLL_OSC_ENA);
+		snd_soc_update_bits(codec, WM8962_FLL_CONTROL_5,
+				    WM8962_FLL_FRC_NCO, WM8962_FLL_FRC_NCO);
+		break;
+	default:
+		dev_err(codec->dev, "Unknown FLL source %d\n", ret);
+		return -EINVAL;
+	}
+
+	if (fll_div.theta || fll_div.lambda)
+		fll1 |= WM8962_FLL_FRAC;
+
+	/* Stop the FLL while we reconfigure */
+	snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1, WM8962_FLL_ENA, 0);
+
+	snd_soc_update_bits(codec, WM8962_FLL_CONTROL_2,
+			    WM8962_FLL_OUTDIV_MASK |
+			    WM8962_FLL_REFCLK_DIV_MASK,
+			    (fll_div.fll_outdiv << WM8962_FLL_OUTDIV_SHIFT) |
+			    (fll_div.fll_refclk_div));
+
+	snd_soc_update_bits(codec, WM8962_FLL_CONTROL_3,
+			    WM8962_FLL_FRATIO_MASK, fll_div.fll_fratio);
+
+	snd_soc_write(codec, WM8962_FLL_CONTROL_6, fll_div.theta);
+	snd_soc_write(codec, WM8962_FLL_CONTROL_7, fll_div.lambda);
+	snd_soc_write(codec, WM8962_FLL_CONTROL_8, fll_div.n);
+
+	snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1,
+			    WM8962_FLL_FRAC | WM8962_FLL_REFCLK_SRC_MASK |
+			    WM8962_FLL_ENA, fll1);
+
+	dev_dbg(codec->dev, "FLL configured for %dHz->%dHz\n", Fref, Fout);
+
+	wm8962->fll_fref = Fref;
+	wm8962->fll_fout = Fout;
+	wm8962->fll_src = source;
+
+	return 0;
+}
+
+static int wm8962_mute(struct snd_soc_dai *dai, int mute)
+{
+	struct snd_soc_codec *codec = dai->codec;
+	int val;
+
+	if (mute)
+		val = WM8962_DAC_MUTE;
+	else
+		val = 0;
+
+	return snd_soc_update_bits(codec, WM8962_ADC_DAC_CONTROL_1,
+				   WM8962_DAC_MUTE, val);
+}
+
+#define WM8962_RATES SNDRV_PCM_RATE_8000_96000
+
+#define WM8962_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
+			SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+
+static struct snd_soc_dai_ops wm8962_dai_ops = {
+	.hw_params = wm8962_hw_params,
+	.set_sysclk = wm8962_set_dai_sysclk,
+	.set_fmt = wm8962_set_dai_fmt,
+	.set_pll = wm8962_set_fll,
+	.digital_mute = wm8962_mute,
+};
+
+static struct snd_soc_dai_driver wm8962_dai = {
+	.name = "wm8962",
+	.playback = {
+		.stream_name = "Playback",
+		.channels_min = 2,
+		.channels_max = 2,
+		.rates = WM8962_RATES,
+		.formats = WM8962_FORMATS,
+	},
+	.capture = {
+		.stream_name = "Capture",
+		.channels_min = 2,
+		.channels_max = 2,
+		.rates = WM8962_RATES,
+		.formats = WM8962_FORMATS,
+	},
+	.ops = &wm8962_dai_ops,
+	.symmetric_rates = 1,
+};
+
+#ifdef CONFIG_PM
+static int wm8962_resume(struct snd_soc_codec *codec)
+{
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+	u16 *reg_cache = codec->reg_cache;
+	int i;
+
+	/* Restore the registers */
+	for (i = 1; i < ARRAY_SIZE(wm8962->reg_cache); i++) {
+		switch (i) {
+		case WM8962_SOFTWARE_RESET:
+			continue;
+		default:
+			break;
+		}
+
+		if (reg_cache[i] != wm8962_reg[i])
+			snd_soc_write(codec, i, reg_cache[i]);
+	}
+
+	return 0;
+}
+#else
+#define wm8962_resume NULL
+#endif
+
+#if defined(CONFIG_INPUT) || defined(CONFIG_INPUT_MODULE)
+static int beep_rates[] = {
+	500, 1000, 2000, 4000,
+};
+
+static void wm8962_beep_work(struct work_struct *work)
+{
+	struct wm8962_priv *wm8962 =
+		container_of(work, struct wm8962_priv, beep_work);
+	struct snd_soc_codec *codec = wm8962->codec;
+	int i;
+	int reg = 0;
+	int best = 0;
+
+	if (wm8962->beep_rate) {
+		for (i = 0; i < ARRAY_SIZE(beep_rates); i++) {
+			if (abs(wm8962->beep_rate - beep_rates[i]) <
+			    abs(wm8962->beep_rate - beep_rates[best]))
+				best = i;
+		}
+
+		dev_dbg(codec->dev, "Set beep rate %dHz for requested %dHz\n",
+			beep_rates[best], wm8962->beep_rate);
+
+		reg = WM8962_BEEP_ENA | (best << WM8962_BEEP_RATE_SHIFT);
+
+		snd_soc_dapm_enable_pin(codec, "Beep");
+	} else {
+		dev_dbg(codec->dev, "Disabling beep\n");
+		snd_soc_dapm_disable_pin(codec, "Beep");
+	}
+
+	snd_soc_update_bits(codec, WM8962_BEEP_GENERATOR_1,
+			    WM8962_BEEP_ENA | WM8962_BEEP_RATE_MASK, reg);
+
+	snd_soc_dapm_sync(codec);
+}
+
+/* For usability define a way of injecting beep events for the device -
+ * many systems will not have a keyboard.
+ */
+static int wm8962_beep_event(struct input_dev *dev, unsigned int type,
+			     unsigned int code, int hz)
+{
+	struct snd_soc_codec *codec = input_get_drvdata(dev);
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+
+	dev_dbg(codec->dev, "Beep event %x %x\n", code, hz);
+
+	switch (code) {
+	case SND_BELL:
+		if (hz)
+			hz = 1000;
+	case SND_TONE:
+		break;
+	default:
+		return -1;
+	}
+
+	/* Kick the beep from a workqueue */
+	wm8962->beep_rate = hz;
+	schedule_work(&wm8962->beep_work);
+	return 0;
+}
+
+static ssize_t wm8962_beep_set(struct device *dev,
+			       struct device_attribute *attr,
+			       const char *buf, size_t count)
+{
+	struct wm8962_priv *wm8962 = dev_get_drvdata(dev);
+	long int time;
+
+	strict_strtol(buf, 10, &time);
+
+	input_event(wm8962->beep, EV_SND, SND_TONE, time);
+
+	return count;
+}
+
+static DEVICE_ATTR(beep, 0200, NULL, wm8962_beep_set);
+
+static void wm8962_init_beep(struct snd_soc_codec *codec)
+{
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+	int ret;
+
+	wm8962->beep = input_allocate_device();
+	if (!wm8962->beep) {
+		dev_err(codec->dev, "Failed to allocate beep device\n");
+		return;
+	}
+
+	INIT_WORK(&wm8962->beep_work, wm8962_beep_work);
+	wm8962->beep_rate = 0;
+
+	wm8962->beep->name = "WM8962 Beep Generator";
+	wm8962->beep->phys = dev_name(codec->dev);
+	wm8962->beep->id.bustype = BUS_I2C;
+
+	wm8962->beep->evbit[0] = BIT_MASK(EV_SND);
+	wm8962->beep->sndbit[0] = BIT_MASK(SND_BELL) | BIT_MASK(SND_TONE);
+	wm8962->beep->event = wm8962_beep_event;
+	wm8962->beep->dev.parent = codec->dev;
+	input_set_drvdata(wm8962->beep, codec);
+
+	ret = input_register_device(wm8962->beep);
+	if (ret != 0) {
+		input_free_device(wm8962->beep);
+		wm8962->beep = NULL;
+		dev_err(codec->dev, "Failed to register beep device\n");
+	}
+
+	ret = device_create_file(codec->dev, &dev_attr_beep);
+	if (ret != 0) {
+		dev_err(codec->dev, "Failed to create keyclick file: %d\n",
+			ret);
+	}
+}
+
+static void wm8962_free_beep(struct snd_soc_codec *codec)
+{
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+
+	device_remove_file(codec->dev, &dev_attr_beep);
+	input_unregister_device(wm8962->beep);
+	cancel_work_sync(&wm8962->beep_work);
+	wm8962->beep = NULL;
+
+	snd_soc_update_bits(codec, WM8962_BEEP_GENERATOR_1, WM8962_BEEP_ENA,0);
+}
+#else
+static void wm8962_init_beep(struct snd_soc_codec *codec)
+{
+}
+
+static void wm8962_free_beep(struct snd_soc_codec *codec)
+{
+}
+#endif
+
+static int wm8962_probe(struct snd_soc_codec *codec)
+{
+	int ret;
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+	struct wm8962_pdata *pdata = dev_get_platdata(codec->dev);
+	int i;
+
+	wm8962->codec = codec;
+
+	codec->cache_sync = 1;
+	codec->idle_bias_off = 1;
+
+	ret = snd_soc_codec_set_cache_io(codec, 16, 16, SND_SOC_I2C);
+	if (ret != 0) {
+		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
+		goto err;
+	}
+
+	for (i = 0; i < ARRAY_SIZE(wm8962->supplies); i++)
+		wm8962->supplies[i].supply = wm8962_supply_names[i];
+
+	ret = regulator_bulk_get(codec->dev, ARRAY_SIZE(wm8962->supplies),
+				 wm8962->supplies);
+	if (ret != 0) {
+		dev_err(codec->dev, "Failed to request supplies: %d\n", ret);
+		goto err;
+	}
+
+	wm8962->disable_nb[0].notifier_call = wm8962_regulator_event_0;
+	wm8962->disable_nb[1].notifier_call = wm8962_regulator_event_1;
+	wm8962->disable_nb[2].notifier_call = wm8962_regulator_event_2;
+	wm8962->disable_nb[3].notifier_call = wm8962_regulator_event_3;
+	wm8962->disable_nb[4].notifier_call = wm8962_regulator_event_4;
+	wm8962->disable_nb[5].notifier_call = wm8962_regulator_event_5;
+	wm8962->disable_nb[6].notifier_call = wm8962_regulator_event_6;
+	wm8962->disable_nb[7].notifier_call = wm8962_regulator_event_7;
+
+	/* This should really be moved into the regulator core */
+	for (i = 0; i < ARRAY_SIZE(wm8962->supplies); i++) {
+		ret = regulator_register_notifier(wm8962->supplies[i].consumer,
+						  &wm8962->disable_nb[i]);
+		if (ret != 0) {
+			dev_err(codec->dev,
+				"Failed to register regulator notifier: %d\n",
+				ret);
+		}
+	}
+
+	ret = regulator_bulk_enable(ARRAY_SIZE(wm8962->supplies),
+				    wm8962->supplies);
+	if (ret != 0) {
+		dev_err(codec->dev, "Failed to enable supplies: %d\n", ret);
+		goto err_get;
+	}
+
+	ret = snd_soc_read(codec, WM8962_SOFTWARE_RESET);
+	if (ret < 0) {
+		dev_err(codec->dev, "Failed to read ID register\n");
+		goto err_enable;
+	}
+	if (ret != wm8962_reg[WM8962_SOFTWARE_RESET]) {
+		dev_err(codec->dev, "Device is not a WM8962, ID %x != %x\n",
+			ret, wm8962_reg[WM8962_SOFTWARE_RESET]);
+		ret = -EINVAL;
+		goto err_enable;
+	}
+
+	ret = snd_soc_read(codec, WM8962_RIGHT_INPUT_VOLUME);
+	if (ret < 0) {
+		dev_err(codec->dev, "Failed to read device revision: %d\n",
+			ret);
+		goto err_enable;
+	}
+	
+	dev_info(codec->dev, "customer id %x revision %c\n",
+		 (ret & WM8962_CUST_ID_MASK) >> WM8962_CUST_ID_SHIFT,
+		 ((ret & WM8962_CHIP_REV_MASK) >> WM8962_CHIP_REV_SHIFT)
+		 + 'A');
+
+	ret = wm8962_reset(codec);
+	if (ret < 0) {
+		dev_err(codec->dev, "Failed to issue reset\n");
+		goto err_enable;
+	}
+
+	/* SYSCLK defaults to on; make sure it is off so we can safely
+	 * write to registers if the device is declocked.
+	 */
+	snd_soc_update_bits(codec, WM8962_CLOCKING2, WM8962_SYSCLK_ENA, 0);
+
+	regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies);
+
+	if (pdata) {
+		/* Apply static configuration for GPIOs */
+		for (i = 0; i < ARRAY_SIZE(pdata->gpio_init); i++)
+			if (pdata->gpio_init[i])
+				snd_soc_write(codec, 0x200 + i,
+					      pdata->gpio_init[i] & 0xffff);
+
+		/* Put the speakers into mono mode? */
+		if (pdata->spk_mono)
+			wm8962->reg_cache[WM8962_CLASS_D_CONTROL_2]
+				|= WM8962_SPK_MONO;
+	}
+
+	/* Latch volume update bits */
+	wm8962->reg_cache[WM8962_LEFT_INPUT_VOLUME] |= WM8962_IN_VU;
+	wm8962->reg_cache[WM8962_RIGHT_INPUT_VOLUME] |= WM8962_IN_VU;
+	wm8962->reg_cache[WM8962_LEFT_ADC_VOLUME] |= WM8962_ADC_VU;
+	wm8962->reg_cache[WM8962_RIGHT_ADC_VOLUME] |= WM8962_ADC_VU;	
+	wm8962->reg_cache[WM8962_LEFT_DAC_VOLUME] |= WM8962_DAC_VU;
+	wm8962->reg_cache[WM8962_RIGHT_DAC_VOLUME] |= WM8962_DAC_VU;
+	wm8962->reg_cache[WM8962_SPKOUTL_VOLUME] |= WM8962_SPKOUT_VU;
+	wm8962->reg_cache[WM8962_SPKOUTR_VOLUME] |= WM8962_SPKOUT_VU;
+	wm8962->reg_cache[WM8962_HPOUTL_VOLUME] |= WM8962_HPOUT_VU;
+	wm8962->reg_cache[WM8962_HPOUTR_VOLUME] |= WM8962_HPOUT_VU;
+
+	wm8962_add_widgets(codec);
+
+	wm8962_init_beep(codec);
+
+	return 0;
+
+err_enable:
+	regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies);
+err_get:
+	regulator_bulk_free(ARRAY_SIZE(wm8962->supplies), wm8962->supplies);
+err:
+	kfree(wm8962);
+	return ret;
+}
+
+static int wm8962_remove(struct snd_soc_codec *codec)
+{
+	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
+	int i;
+
+	wm8962_free_beep(codec);
+	for (i = 0; i < ARRAY_SIZE(wm8962->supplies); i++)
+		regulator_unregister_notifier(wm8962->supplies[i].consumer,
+					      &wm8962->disable_nb[i]);
+	regulator_bulk_free(ARRAY_SIZE(wm8962->supplies), wm8962->supplies);
+
+	return 0;
+}
+
+static struct snd_soc_codec_driver soc_codec_dev_wm8962 = {
+	.probe =	wm8962_probe,
+	.remove =	wm8962_remove,
+	.resume =	wm8962_resume,
+	.set_bias_level = wm8962_set_bias_level,
+	.reg_cache_size = WM8962_MAX_REGISTER + 1,
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8962_reg,
+	.volatile_register = wm8962_volatile_register,
+	.readable_register = wm8962_readable_register,
+};
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+static __devinit int wm8962_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
+{
+	struct wm8962_priv *wm8962;
+	int ret;
+
+	wm8962 = kzalloc(sizeof(struct wm8962_priv), GFP_KERNEL);
+	if (wm8962 == NULL)
+		return -ENOMEM;
+
+	i2c_set_clientdata(i2c, wm8962);
+
+	ret = snd_soc_register_codec(&i2c->dev,
+				     &soc_codec_dev_wm8962, &wm8962_dai, 1);
+	if (ret < 0)
+		kfree(wm8962);
+
+	return ret;
+}
+
+static __devexit int wm8962_i2c_remove(struct i2c_client *client)
+{
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
+	return 0;
+}
+
+static const struct i2c_device_id wm8962_i2c_id[] = {
+	{ "wm8962", 0 },
+	{ }
+};
+MODULE_DEVICE_TABLE(i2c, wm8962_i2c_id);
+
+static struct i2c_driver wm8962_i2c_driver = {
+	.driver = {
+		.name = "WM8962",
+		.owner = THIS_MODULE,
+	},
+	.probe =    wm8962_i2c_probe,
+	.remove =   __devexit_p(wm8962_i2c_remove),
+	.id_table = wm8962_i2c_id,
+};
+#endif
+
+static int __init wm8962_modinit(void)
+{
+	int ret;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	ret = i2c_add_driver(&wm8962_i2c_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register WM8962 I2C driver: %d\n",
+		       ret);
+	}
+#endif
+	return 0;
+}
+module_init(wm8962_modinit);
+
+static void __exit wm8962_exit(void)
+{
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	i2c_del_driver(&wm8962_i2c_driver);
+#endif
+}
+module_exit(wm8962_exit);
+
+MODULE_DESCRIPTION("ASoC WM8962 driver");
+MODULE_AUTHOR("Mark Brown <broonie@opensource.wolfsonmicro.com>");
+MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/wm8962.h b/sound/soc/codecs/wm8962.h
new file mode 100644
index 0000000..6145399
--- /dev/null
+++ b/sound/soc/codecs/wm8962.h
@@ -0,0 +1,3787 @@
+/*
+ * wm8962.h  --  WM8962 ASoC driver
+ *
+ * Copyright 2010 Wolfson Microelectronics, plc
+ *
+ * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _WM8962_H
+#define _WM8962_H
+
+#include <asm/types.h>
+
+#define WM8962_SYSCLK_MCLK 1
+#define WM8962_SYSCLK_FLL  2
+#define WM8962_SYSCLK_PLL3 3
+
+#define WM8962_FLL  1
+
+#define WM8962_FLL_MCLK 1
+#define WM8962_FLL_BCLK 2
+#define WM8962_FLL_OSC  3
+#define WM8962_FLL_INT  4
+
+/*
+ * Register values.
+ */
+#define WM8962_LEFT_INPUT_VOLUME                0x00
+#define WM8962_RIGHT_INPUT_VOLUME               0x01
+#define WM8962_HPOUTL_VOLUME                    0x02
+#define WM8962_HPOUTR_VOLUME                    0x03
+#define WM8962_CLOCKING1                        0x04
+#define WM8962_ADC_DAC_CONTROL_1                0x05
+#define WM8962_ADC_DAC_CONTROL_2                0x06
+#define WM8962_AUDIO_INTERFACE_0                0x07
+#define WM8962_CLOCKING2                        0x08
+#define WM8962_AUDIO_INTERFACE_1                0x09
+#define WM8962_LEFT_DAC_VOLUME                  0x0A
+#define WM8962_RIGHT_DAC_VOLUME                 0x0B
+#define WM8962_AUDIO_INTERFACE_2                0x0E
+#define WM8962_SOFTWARE_RESET                   0x0F
+#define WM8962_ALC1                             0x11
+#define WM8962_ALC2                             0x12
+#define WM8962_ALC3                             0x13
+#define WM8962_NOISE_GATE                       0x14
+#define WM8962_LEFT_ADC_VOLUME                  0x15
+#define WM8962_RIGHT_ADC_VOLUME                 0x16
+#define WM8962_ADDITIONAL_CONTROL_1             0x17
+#define WM8962_ADDITIONAL_CONTROL_2             0x18
+#define WM8962_PWR_MGMT_1                       0x19
+#define WM8962_PWR_MGMT_2                       0x1A
+#define WM8962_ADDITIONAL_CONTROL_3             0x1B
+#define WM8962_ANTI_POP                         0x1C
+#define WM8962_CLOCKING_3                       0x1E
+#define WM8962_INPUT_MIXER_CONTROL_1            0x1F
+#define WM8962_LEFT_INPUT_MIXER_VOLUME          0x20
+#define WM8962_RIGHT_INPUT_MIXER_VOLUME         0x21
+#define WM8962_INPUT_MIXER_CONTROL_2            0x22
+#define WM8962_INPUT_BIAS_CONTROL               0x23
+#define WM8962_LEFT_INPUT_PGA_CONTROL           0x25
+#define WM8962_RIGHT_INPUT_PGA_CONTROL          0x26
+#define WM8962_SPKOUTL_VOLUME                   0x28
+#define WM8962_SPKOUTR_VOLUME                   0x29
+#define WM8962_THERMAL_SHUTDOWN_STATUS          0x2F
+#define WM8962_ADDITIONAL_CONTROL_4             0x30
+#define WM8962_CLASS_D_CONTROL_1                0x31
+#define WM8962_CLASS_D_CONTROL_2                0x33
+#define WM8962_CLOCKING_4                       0x38
+#define WM8962_DAC_DSP_MIXING_1                 0x39
+#define WM8962_DAC_DSP_MIXING_2                 0x3A
+#define WM8962_DC_SERVO_0                       0x3C
+#define WM8962_DC_SERVO_1                       0x3D
+#define WM8962_DC_SERVO_4                       0x40
+#define WM8962_DC_SERVO_6                       0x42
+#define WM8962_ANALOGUE_PGA_BIAS                0x44
+#define WM8962_ANALOGUE_HP_0                    0x45
+#define WM8962_ANALOGUE_HP_2                    0x47
+#define WM8962_CHARGE_PUMP_1                    0x48
+#define WM8962_CHARGE_PUMP_B                    0x52
+#define WM8962_WRITE_SEQUENCER_CONTROL_1        0x57
+#define WM8962_WRITE_SEQUENCER_CONTROL_2        0x5A
+#define WM8962_WRITE_SEQUENCER_CONTROL_3        0x5D
+#define WM8962_CONTROL_INTERFACE                0x5E
+#define WM8962_MIXER_ENABLES                    0x63
+#define WM8962_HEADPHONE_MIXER_1                0x64
+#define WM8962_HEADPHONE_MIXER_2                0x65
+#define WM8962_HEADPHONE_MIXER_3                0x66
+#define WM8962_HEADPHONE_MIXER_4                0x67
+#define WM8962_SPEAKER_MIXER_1                  0x69
+#define WM8962_SPEAKER_MIXER_2                  0x6A
+#define WM8962_SPEAKER_MIXER_3                  0x6B
+#define WM8962_SPEAKER_MIXER_4                  0x6C
+#define WM8962_SPEAKER_MIXER_5                  0x6D
+#define WM8962_BEEP_GENERATOR_1                 0x6E
+#define WM8962_OSCILLATOR_TRIM_3                0x73
+#define WM8962_OSCILLATOR_TRIM_4                0x74
+#define WM8962_OSCILLATOR_TRIM_7                0x77
+#define WM8962_ANALOGUE_CLOCKING1               0x7C
+#define WM8962_ANALOGUE_CLOCKING2               0x7D
+#define WM8962_ANALOGUE_CLOCKING3               0x7E
+#define WM8962_PLL_SOFTWARE_RESET               0x7F
+#define WM8962_PLL2                             0x81
+#define WM8962_PLL_4                            0x83
+#define WM8962_PLL_9                            0x88
+#define WM8962_PLL_10                           0x89
+#define WM8962_PLL_11                           0x8A
+#define WM8962_PLL_12                           0x8B
+#define WM8962_PLL_13                           0x8C
+#define WM8962_PLL_14                           0x8D
+#define WM8962_PLL_15                           0x8E
+#define WM8962_PLL_16                           0x8F
+#define WM8962_FLL_CONTROL_1                    0x9B
+#define WM8962_FLL_CONTROL_2                    0x9C
+#define WM8962_FLL_CONTROL_3                    0x9D
+#define WM8962_FLL_CONTROL_5                    0x9F
+#define WM8962_FLL_CONTROL_6                    0xA0
+#define WM8962_FLL_CONTROL_7                    0xA1
+#define WM8962_FLL_CONTROL_8                    0xA2
+#define WM8962_GENERAL_TEST_1                   0xFC
+#define WM8962_DF1                              0x100
+#define WM8962_DF2                              0x101
+#define WM8962_DF3                              0x102
+#define WM8962_DF4                              0x103
+#define WM8962_DF5                              0x104
+#define WM8962_DF6                              0x105
+#define WM8962_DF7                              0x106
+#define WM8962_LHPF1                            0x108
+#define WM8962_LHPF2                            0x109
+#define WM8962_THREED1                          0x10C
+#define WM8962_THREED2                          0x10D
+#define WM8962_THREED3                          0x10E
+#define WM8962_THREED4                          0x10F
+#define WM8962_DRC_1                            0x114
+#define WM8962_DRC_2                            0x115
+#define WM8962_DRC_3                            0x116
+#define WM8962_DRC_4                            0x117
+#define WM8962_DRC_5                            0x118
+#define WM8962_TLOOPBACK                        0x11D
+#define WM8962_EQ1                              0x14F
+#define WM8962_EQ2                              0x150
+#define WM8962_EQ3                              0x151
+#define WM8962_EQ4                              0x152
+#define WM8962_EQ5                              0x153
+#define WM8962_EQ6                              0x154
+#define WM8962_EQ7                              0x155
+#define WM8962_EQ8                              0x156
+#define WM8962_EQ9                              0x157
+#define WM8962_EQ10                             0x158
+#define WM8962_EQ11                             0x159
+#define WM8962_EQ12                             0x15A
+#define WM8962_EQ13                             0x15B
+#define WM8962_EQ14                             0x15C
+#define WM8962_EQ15                             0x15D
+#define WM8962_EQ16                             0x15E
+#define WM8962_EQ17                             0x15F
+#define WM8962_EQ18                             0x160
+#define WM8962_EQ19                             0x161
+#define WM8962_EQ20                             0x162
+#define WM8962_EQ21                             0x163
+#define WM8962_EQ22                             0x164
+#define WM8962_EQ23                             0x165
+#define WM8962_EQ24                             0x166
+#define WM8962_EQ25                             0x167
+#define WM8962_EQ26                             0x168
+#define WM8962_EQ27                             0x169
+#define WM8962_EQ28                             0x16A
+#define WM8962_EQ29                             0x16B
+#define WM8962_EQ30                             0x16C
+#define WM8962_EQ31                             0x16D
+#define WM8962_EQ32                             0x16E
+#define WM8962_EQ33                             0x16F
+#define WM8962_EQ34                             0x170
+#define WM8962_EQ35                             0x171
+#define WM8962_EQ36                             0x172
+#define WM8962_EQ37                             0x173
+#define WM8962_EQ38                             0x174
+#define WM8962_EQ39                             0x175
+#define WM8962_EQ40                             0x176
+#define WM8962_EQ41                             0x177
+#define WM8962_GPIO_2                           0x201
+#define WM8962_GPIO_3                           0x202
+#define WM8962_GPIO_5                           0x204
+#define WM8962_GPIO_6                           0x205
+#define WM8962_INTERRUPT_STATUS_1               0x230
+#define WM8962_INTERRUPT_STATUS_2               0x231
+#define WM8962_INTERRUPT_STATUS_1_MASK          0x238
+#define WM8962_INTERRUPT_STATUS_2_MASK          0x239
+#define WM8962_INTERRUPT_CONTROL                0x240
+#define WM8962_IRQ_DEBOUNCE                     0x248
+#define WM8962_MICINT_SOURCE_POL                0x24A
+#define WM8962_DSP2_POWER_MANAGEMENT            0x300
+#define WM8962_DSP2_EXECCONTROL                 0x40D
+#define WM8962_WRITE_SEQUENCER_0                0x1000
+#define WM8962_WRITE_SEQUENCER_1                0x1001
+#define WM8962_WRITE_SEQUENCER_2                0x1002
+#define WM8962_WRITE_SEQUENCER_3                0x1003
+#define WM8962_WRITE_SEQUENCER_4                0x1004
+#define WM8962_WRITE_SEQUENCER_5                0x1005
+#define WM8962_WRITE_SEQUENCER_6                0x1006
+#define WM8962_WRITE_SEQUENCER_7                0x1007
+#define WM8962_WRITE_SEQUENCER_8                0x1008
+#define WM8962_WRITE_SEQUENCER_9                0x1009
+#define WM8962_WRITE_SEQUENCER_10               0x100A
+#define WM8962_WRITE_SEQUENCER_11               0x100B
+#define WM8962_WRITE_SEQUENCER_12               0x100C
+#define WM8962_WRITE_SEQUENCER_13               0x100D
+#define WM8962_WRITE_SEQUENCER_14               0x100E
+#define WM8962_WRITE_SEQUENCER_15               0x100F
+#define WM8962_WRITE_SEQUENCER_16               0x1010
+#define WM8962_WRITE_SEQUENCER_17               0x1011
+#define WM8962_WRITE_SEQUENCER_18               0x1012
+#define WM8962_WRITE_SEQUENCER_19               0x1013
+#define WM8962_WRITE_SEQUENCER_20               0x1014
+#define WM8962_WRITE_SEQUENCER_21               0x1015
+#define WM8962_WRITE_SEQUENCER_22               0x1016
+#define WM8962_WRITE_SEQUENCER_23               0x1017
+#define WM8962_WRITE_SEQUENCER_24               0x1018
+#define WM8962_WRITE_SEQUENCER_25               0x1019
+#define WM8962_WRITE_SEQUENCER_26               0x101A
+#define WM8962_WRITE_SEQUENCER_27               0x101B
+#define WM8962_WRITE_SEQUENCER_28               0x101C
+#define WM8962_WRITE_SEQUENCER_29               0x101D
+#define WM8962_WRITE_SEQUENCER_30               0x101E
+#define WM8962_WRITE_SEQUENCER_31               0x101F
+#define WM8962_WRITE_SEQUENCER_32               0x1020
+#define WM8962_WRITE_SEQUENCER_33               0x1021
+#define WM8962_WRITE_SEQUENCER_34               0x1022
+#define WM8962_WRITE_SEQUENCER_35               0x1023
+#define WM8962_WRITE_SEQUENCER_36               0x1024
+#define WM8962_WRITE_SEQUENCER_37               0x1025
+#define WM8962_WRITE_SEQUENCER_38               0x1026
+#define WM8962_WRITE_SEQUENCER_39               0x1027
+#define WM8962_WRITE_SEQUENCER_40               0x1028
+#define WM8962_WRITE_SEQUENCER_41               0x1029
+#define WM8962_WRITE_SEQUENCER_42               0x102A
+#define WM8962_WRITE_SEQUENCER_43               0x102B
+#define WM8962_WRITE_SEQUENCER_44               0x102C
+#define WM8962_WRITE_SEQUENCER_45               0x102D
+#define WM8962_WRITE_SEQUENCER_46               0x102E
+#define WM8962_WRITE_SEQUENCER_47               0x102F
+#define WM8962_WRITE_SEQUENCER_48               0x1030
+#define WM8962_WRITE_SEQUENCER_49               0x1031
+#define WM8962_WRITE_SEQUENCER_50               0x1032
+#define WM8962_WRITE_SEQUENCER_51               0x1033
+#define WM8962_WRITE_SEQUENCER_52               0x1034
+#define WM8962_WRITE_SEQUENCER_53               0x1035
+#define WM8962_WRITE_SEQUENCER_54               0x1036
+#define WM8962_WRITE_SEQUENCER_55               0x1037
+#define WM8962_WRITE_SEQUENCER_56               0x1038
+#define WM8962_WRITE_SEQUENCER_57               0x1039
+#define WM8962_WRITE_SEQUENCER_58               0x103A
+#define WM8962_WRITE_SEQUENCER_59               0x103B
+#define WM8962_WRITE_SEQUENCER_60               0x103C
+#define WM8962_WRITE_SEQUENCER_61               0x103D
+#define WM8962_WRITE_SEQUENCER_62               0x103E
+#define WM8962_WRITE_SEQUENCER_63               0x103F
+#define WM8962_WRITE_SEQUENCER_64               0x1040
+#define WM8962_WRITE_SEQUENCER_65               0x1041
+#define WM8962_WRITE_SEQUENCER_66               0x1042
+#define WM8962_WRITE_SEQUENCER_67               0x1043
+#define WM8962_WRITE_SEQUENCER_68               0x1044
+#define WM8962_WRITE_SEQUENCER_69               0x1045
+#define WM8962_WRITE_SEQUENCER_70               0x1046
+#define WM8962_WRITE_SEQUENCER_71               0x1047
+#define WM8962_WRITE_SEQUENCER_72               0x1048
+#define WM8962_WRITE_SEQUENCER_73               0x1049
+#define WM8962_WRITE_SEQUENCER_74               0x104A
+#define WM8962_WRITE_SEQUENCER_75               0x104B
+#define WM8962_WRITE_SEQUENCER_76               0x104C
+#define WM8962_WRITE_SEQUENCER_77               0x104D
+#define WM8962_WRITE_SEQUENCER_78               0x104E
+#define WM8962_WRITE_SEQUENCER_79               0x104F
+#define WM8962_WRITE_SEQUENCER_80               0x1050
+#define WM8962_WRITE_SEQUENCER_81               0x1051
+#define WM8962_WRITE_SEQUENCER_82               0x1052
+#define WM8962_WRITE_SEQUENCER_83               0x1053
+#define WM8962_WRITE_SEQUENCER_84               0x1054
+#define WM8962_WRITE_SEQUENCER_85               0x1055
+#define WM8962_WRITE_SEQUENCER_86               0x1056
+#define WM8962_WRITE_SEQUENCER_87               0x1057
+#define WM8962_WRITE_SEQUENCER_88               0x1058
+#define WM8962_WRITE_SEQUENCER_89               0x1059
+#define WM8962_WRITE_SEQUENCER_90               0x105A
+#define WM8962_WRITE_SEQUENCER_91               0x105B
+#define WM8962_WRITE_SEQUENCER_92               0x105C
+#define WM8962_WRITE_SEQUENCER_93               0x105D
+#define WM8962_WRITE_SEQUENCER_94               0x105E
+#define WM8962_WRITE_SEQUENCER_95               0x105F
+#define WM8962_WRITE_SEQUENCER_96               0x1060
+#define WM8962_WRITE_SEQUENCER_97               0x1061
+#define WM8962_WRITE_SEQUENCER_98               0x1062
+#define WM8962_WRITE_SEQUENCER_99               0x1063
+#define WM8962_WRITE_SEQUENCER_100              0x1064
+#define WM8962_WRITE_SEQUENCER_101              0x1065
+#define WM8962_WRITE_SEQUENCER_102              0x1066
+#define WM8962_WRITE_SEQUENCER_103              0x1067
+#define WM8962_WRITE_SEQUENCER_104              0x1068
+#define WM8962_WRITE_SEQUENCER_105              0x1069
+#define WM8962_WRITE_SEQUENCER_106              0x106A
+#define WM8962_WRITE_SEQUENCER_107              0x106B
+#define WM8962_WRITE_SEQUENCER_108              0x106C
+#define WM8962_WRITE_SEQUENCER_109              0x106D
+#define WM8962_WRITE_SEQUENCER_110              0x106E
+#define WM8962_WRITE_SEQUENCER_111              0x106F
+#define WM8962_WRITE_SEQUENCER_112              0x1070
+#define WM8962_WRITE_SEQUENCER_113              0x1071
+#define WM8962_WRITE_SEQUENCER_114              0x1072
+#define WM8962_WRITE_SEQUENCER_115              0x1073
+#define WM8962_WRITE_SEQUENCER_116              0x1074
+#define WM8962_WRITE_SEQUENCER_117              0x1075
+#define WM8962_WRITE_SEQUENCER_118              0x1076
+#define WM8962_WRITE_SEQUENCER_119              0x1077
+#define WM8962_WRITE_SEQUENCER_120              0x1078
+#define WM8962_WRITE_SEQUENCER_121              0x1079
+#define WM8962_WRITE_SEQUENCER_122              0x107A
+#define WM8962_WRITE_SEQUENCER_123              0x107B
+#define WM8962_WRITE_SEQUENCER_124              0x107C
+#define WM8962_WRITE_SEQUENCER_125              0x107D
+#define WM8962_WRITE_SEQUENCER_126              0x107E
+#define WM8962_WRITE_SEQUENCER_127              0x107F
+#define WM8962_WRITE_SEQUENCER_128              0x1080
+#define WM8962_WRITE_SEQUENCER_129              0x1081
+#define WM8962_WRITE_SEQUENCER_130              0x1082
+#define WM8962_WRITE_SEQUENCER_131              0x1083
+#define WM8962_WRITE_SEQUENCER_132              0x1084
+#define WM8962_WRITE_SEQUENCER_133              0x1085
+#define WM8962_WRITE_SEQUENCER_134              0x1086
+#define WM8962_WRITE_SEQUENCER_135              0x1087
+#define WM8962_WRITE_SEQUENCER_136              0x1088
+#define WM8962_WRITE_SEQUENCER_137              0x1089
+#define WM8962_WRITE_SEQUENCER_138              0x108A
+#define WM8962_WRITE_SEQUENCER_139              0x108B
+#define WM8962_WRITE_SEQUENCER_140              0x108C
+#define WM8962_WRITE_SEQUENCER_141              0x108D
+#define WM8962_WRITE_SEQUENCER_142              0x108E
+#define WM8962_WRITE_SEQUENCER_143              0x108F
+#define WM8962_WRITE_SEQUENCER_144              0x1090
+#define WM8962_WRITE_SEQUENCER_145              0x1091
+#define WM8962_WRITE_SEQUENCER_146              0x1092
+#define WM8962_WRITE_SEQUENCER_147              0x1093
+#define WM8962_WRITE_SEQUENCER_148              0x1094
+#define WM8962_WRITE_SEQUENCER_149              0x1095
+#define WM8962_WRITE_SEQUENCER_150              0x1096
+#define WM8962_WRITE_SEQUENCER_151              0x1097
+#define WM8962_WRITE_SEQUENCER_152              0x1098
+#define WM8962_WRITE_SEQUENCER_153              0x1099
+#define WM8962_WRITE_SEQUENCER_154              0x109A
+#define WM8962_WRITE_SEQUENCER_155              0x109B
+#define WM8962_WRITE_SEQUENCER_156              0x109C
+#define WM8962_WRITE_SEQUENCER_157              0x109D
+#define WM8962_WRITE_SEQUENCER_158              0x109E
+#define WM8962_WRITE_SEQUENCER_159              0x109F
+#define WM8962_WRITE_SEQUENCER_160              0x10A0
+#define WM8962_WRITE_SEQUENCER_161              0x10A1
+#define WM8962_WRITE_SEQUENCER_162              0x10A2
+#define WM8962_WRITE_SEQUENCER_163              0x10A3
+#define WM8962_WRITE_SEQUENCER_164              0x10A4
+#define WM8962_WRITE_SEQUENCER_165              0x10A5
+#define WM8962_WRITE_SEQUENCER_166              0x10A6
+#define WM8962_WRITE_SEQUENCER_167              0x10A7
+#define WM8962_WRITE_SEQUENCER_168              0x10A8
+#define WM8962_WRITE_SEQUENCER_169              0x10A9
+#define WM8962_WRITE_SEQUENCER_170              0x10AA
+#define WM8962_WRITE_SEQUENCER_171              0x10AB
+#define WM8962_WRITE_SEQUENCER_172              0x10AC
+#define WM8962_WRITE_SEQUENCER_173              0x10AD
+#define WM8962_WRITE_SEQUENCER_174              0x10AE
+#define WM8962_WRITE_SEQUENCER_175              0x10AF
+#define WM8962_WRITE_SEQUENCER_176              0x10B0
+#define WM8962_WRITE_SEQUENCER_177              0x10B1
+#define WM8962_WRITE_SEQUENCER_178              0x10B2
+#define WM8962_WRITE_SEQUENCER_179              0x10B3
+#define WM8962_WRITE_SEQUENCER_180              0x10B4
+#define WM8962_WRITE_SEQUENCER_181              0x10B5
+#define WM8962_WRITE_SEQUENCER_182              0x10B6
+#define WM8962_WRITE_SEQUENCER_183              0x10B7
+#define WM8962_WRITE_SEQUENCER_184              0x10B8
+#define WM8962_WRITE_SEQUENCER_185              0x10B9
+#define WM8962_WRITE_SEQUENCER_186              0x10BA
+#define WM8962_WRITE_SEQUENCER_187              0x10BB
+#define WM8962_WRITE_SEQUENCER_188              0x10BC
+#define WM8962_WRITE_SEQUENCER_189              0x10BD
+#define WM8962_WRITE_SEQUENCER_190              0x10BE
+#define WM8962_WRITE_SEQUENCER_191              0x10BF
+#define WM8962_WRITE_SEQUENCER_192              0x10C0
+#define WM8962_WRITE_SEQUENCER_193              0x10C1
+#define WM8962_WRITE_SEQUENCER_194              0x10C2
+#define WM8962_WRITE_SEQUENCER_195              0x10C3
+#define WM8962_WRITE_SEQUENCER_196              0x10C4
+#define WM8962_WRITE_SEQUENCER_197              0x10C5
+#define WM8962_WRITE_SEQUENCER_198              0x10C6
+#define WM8962_WRITE_SEQUENCER_199              0x10C7
+#define WM8962_WRITE_SEQUENCER_200              0x10C8
+#define WM8962_WRITE_SEQUENCER_201              0x10C9
+#define WM8962_WRITE_SEQUENCER_202              0x10CA
+#define WM8962_WRITE_SEQUENCER_203              0x10CB
+#define WM8962_WRITE_SEQUENCER_204              0x10CC
+#define WM8962_WRITE_SEQUENCER_205              0x10CD
+#define WM8962_WRITE_SEQUENCER_206              0x10CE
+#define WM8962_WRITE_SEQUENCER_207              0x10CF
+#define WM8962_WRITE_SEQUENCER_208              0x10D0
+#define WM8962_WRITE_SEQUENCER_209              0x10D1
+#define WM8962_WRITE_SEQUENCER_210              0x10D2
+#define WM8962_WRITE_SEQUENCER_211              0x10D3
+#define WM8962_WRITE_SEQUENCER_212              0x10D4
+#define WM8962_WRITE_SEQUENCER_213              0x10D5
+#define WM8962_WRITE_SEQUENCER_214              0x10D6
+#define WM8962_WRITE_SEQUENCER_215              0x10D7
+#define WM8962_WRITE_SEQUENCER_216              0x10D8
+#define WM8962_WRITE_SEQUENCER_217              0x10D9
+#define WM8962_WRITE_SEQUENCER_218              0x10DA
+#define WM8962_WRITE_SEQUENCER_219              0x10DB
+#define WM8962_WRITE_SEQUENCER_220              0x10DC
+#define WM8962_WRITE_SEQUENCER_221              0x10DD
+#define WM8962_WRITE_SEQUENCER_222              0x10DE
+#define WM8962_WRITE_SEQUENCER_223              0x10DF
+#define WM8962_WRITE_SEQUENCER_224              0x10E0
+#define WM8962_WRITE_SEQUENCER_225              0x10E1
+#define WM8962_WRITE_SEQUENCER_226              0x10E2
+#define WM8962_WRITE_SEQUENCER_227              0x10E3
+#define WM8962_WRITE_SEQUENCER_228              0x10E4
+#define WM8962_WRITE_SEQUENCER_229              0x10E5
+#define WM8962_WRITE_SEQUENCER_230              0x10E6
+#define WM8962_WRITE_SEQUENCER_231              0x10E7
+#define WM8962_WRITE_SEQUENCER_232              0x10E8
+#define WM8962_WRITE_SEQUENCER_233              0x10E9
+#define WM8962_WRITE_SEQUENCER_234              0x10EA
+#define WM8962_WRITE_SEQUENCER_235              0x10EB
+#define WM8962_WRITE_SEQUENCER_236              0x10EC
+#define WM8962_WRITE_SEQUENCER_237              0x10ED
+#define WM8962_WRITE_SEQUENCER_238              0x10EE
+#define WM8962_WRITE_SEQUENCER_239              0x10EF
+#define WM8962_WRITE_SEQUENCER_240              0x10F0
+#define WM8962_WRITE_SEQUENCER_241              0x10F1
+#define WM8962_WRITE_SEQUENCER_242              0x10F2
+#define WM8962_WRITE_SEQUENCER_243              0x10F3
+#define WM8962_WRITE_SEQUENCER_244              0x10F4
+#define WM8962_WRITE_SEQUENCER_245              0x10F5
+#define WM8962_WRITE_SEQUENCER_246              0x10F6
+#define WM8962_WRITE_SEQUENCER_247              0x10F7
+#define WM8962_WRITE_SEQUENCER_248              0x10F8
+#define WM8962_WRITE_SEQUENCER_249              0x10F9
+#define WM8962_WRITE_SEQUENCER_250              0x10FA
+#define WM8962_WRITE_SEQUENCER_251              0x10FB
+#define WM8962_WRITE_SEQUENCER_252              0x10FC
+#define WM8962_WRITE_SEQUENCER_253              0x10FD
+#define WM8962_WRITE_SEQUENCER_254              0x10FE
+#define WM8962_WRITE_SEQUENCER_255              0x10FF
+#define WM8962_WRITE_SEQUENCER_256              0x1100
+#define WM8962_WRITE_SEQUENCER_257              0x1101
+#define WM8962_WRITE_SEQUENCER_258              0x1102
+#define WM8962_WRITE_SEQUENCER_259              0x1103
+#define WM8962_WRITE_SEQUENCER_260              0x1104
+#define WM8962_WRITE_SEQUENCER_261              0x1105
+#define WM8962_WRITE_SEQUENCER_262              0x1106
+#define WM8962_WRITE_SEQUENCER_263              0x1107
+#define WM8962_WRITE_SEQUENCER_264              0x1108
+#define WM8962_WRITE_SEQUENCER_265              0x1109
+#define WM8962_WRITE_SEQUENCER_266              0x110A
+#define WM8962_WRITE_SEQUENCER_267              0x110B
+#define WM8962_WRITE_SEQUENCER_268              0x110C
+#define WM8962_WRITE_SEQUENCER_269              0x110D
+#define WM8962_WRITE_SEQUENCER_270              0x110E
+#define WM8962_WRITE_SEQUENCER_271              0x110F
+#define WM8962_WRITE_SEQUENCER_272              0x1110
+#define WM8962_WRITE_SEQUENCER_273              0x1111
+#define WM8962_WRITE_SEQUENCER_274              0x1112
+#define WM8962_WRITE_SEQUENCER_275              0x1113
+#define WM8962_WRITE_SEQUENCER_276              0x1114
+#define WM8962_WRITE_SEQUENCER_277              0x1115
+#define WM8962_WRITE_SEQUENCER_278              0x1116
+#define WM8962_WRITE_SEQUENCER_279              0x1117
+#define WM8962_WRITE_SEQUENCER_280              0x1118
+#define WM8962_WRITE_SEQUENCER_281              0x1119
+#define WM8962_WRITE_SEQUENCER_282              0x111A
+#define WM8962_WRITE_SEQUENCER_283              0x111B
+#define WM8962_WRITE_SEQUENCER_284              0x111C
+#define WM8962_WRITE_SEQUENCER_285              0x111D
+#define WM8962_WRITE_SEQUENCER_286              0x111E
+#define WM8962_WRITE_SEQUENCER_287              0x111F
+#define WM8962_WRITE_SEQUENCER_288              0x1120
+#define WM8962_WRITE_SEQUENCER_289              0x1121
+#define WM8962_WRITE_SEQUENCER_290              0x1122
+#define WM8962_WRITE_SEQUENCER_291              0x1123
+#define WM8962_WRITE_SEQUENCER_292              0x1124
+#define WM8962_WRITE_SEQUENCER_293              0x1125
+#define WM8962_WRITE_SEQUENCER_294              0x1126
+#define WM8962_WRITE_SEQUENCER_295              0x1127
+#define WM8962_WRITE_SEQUENCER_296              0x1128
+#define WM8962_WRITE_SEQUENCER_297              0x1129
+#define WM8962_WRITE_SEQUENCER_298              0x112A
+#define WM8962_WRITE_SEQUENCER_299              0x112B
+#define WM8962_WRITE_SEQUENCER_300              0x112C
+#define WM8962_WRITE_SEQUENCER_301              0x112D
+#define WM8962_WRITE_SEQUENCER_302              0x112E
+#define WM8962_WRITE_SEQUENCER_303              0x112F
+#define WM8962_WRITE_SEQUENCER_304              0x1130
+#define WM8962_WRITE_SEQUENCER_305              0x1131
+#define WM8962_WRITE_SEQUENCER_306              0x1132
+#define WM8962_WRITE_SEQUENCER_307              0x1133
+#define WM8962_WRITE_SEQUENCER_308              0x1134
+#define WM8962_WRITE_SEQUENCER_309              0x1135
+#define WM8962_WRITE_SEQUENCER_310              0x1136
+#define WM8962_WRITE_SEQUENCER_311              0x1137
+#define WM8962_WRITE_SEQUENCER_312              0x1138
+#define WM8962_WRITE_SEQUENCER_313              0x1139
+#define WM8962_WRITE_SEQUENCER_314              0x113A
+#define WM8962_WRITE_SEQUENCER_315              0x113B
+#define WM8962_WRITE_SEQUENCER_316              0x113C
+#define WM8962_WRITE_SEQUENCER_317              0x113D
+#define WM8962_WRITE_SEQUENCER_318              0x113E
+#define WM8962_WRITE_SEQUENCER_319              0x113F
+#define WM8962_WRITE_SEQUENCER_320              0x1140
+#define WM8962_WRITE_SEQUENCER_321              0x1141
+#define WM8962_WRITE_SEQUENCER_322              0x1142
+#define WM8962_WRITE_SEQUENCER_323              0x1143
+#define WM8962_WRITE_SEQUENCER_324              0x1144
+#define WM8962_WRITE_SEQUENCER_325              0x1145
+#define WM8962_WRITE_SEQUENCER_326              0x1146
+#define WM8962_WRITE_SEQUENCER_327              0x1147
+#define WM8962_WRITE_SEQUENCER_328              0x1148
+#define WM8962_WRITE_SEQUENCER_329              0x1149
+#define WM8962_WRITE_SEQUENCER_330              0x114A
+#define WM8962_WRITE_SEQUENCER_331              0x114B
+#define WM8962_WRITE_SEQUENCER_332              0x114C
+#define WM8962_WRITE_SEQUENCER_333              0x114D
+#define WM8962_WRITE_SEQUENCER_334              0x114E
+#define WM8962_WRITE_SEQUENCER_335              0x114F
+#define WM8962_WRITE_SEQUENCER_336              0x1150
+#define WM8962_WRITE_SEQUENCER_337              0x1151
+#define WM8962_WRITE_SEQUENCER_338              0x1152
+#define WM8962_WRITE_SEQUENCER_339              0x1153
+#define WM8962_WRITE_SEQUENCER_340              0x1154
+#define WM8962_WRITE_SEQUENCER_341              0x1155
+#define WM8962_WRITE_SEQUENCER_342              0x1156
+#define WM8962_WRITE_SEQUENCER_343              0x1157
+#define WM8962_WRITE_SEQUENCER_344              0x1158
+#define WM8962_WRITE_SEQUENCER_345              0x1159
+#define WM8962_WRITE_SEQUENCER_346              0x115A
+#define WM8962_WRITE_SEQUENCER_347              0x115B
+#define WM8962_WRITE_SEQUENCER_348              0x115C
+#define WM8962_WRITE_SEQUENCER_349              0x115D
+#define WM8962_WRITE_SEQUENCER_350              0x115E
+#define WM8962_WRITE_SEQUENCER_351              0x115F
+#define WM8962_WRITE_SEQUENCER_352              0x1160
+#define WM8962_WRITE_SEQUENCER_353              0x1161
+#define WM8962_WRITE_SEQUENCER_354              0x1162
+#define WM8962_WRITE_SEQUENCER_355              0x1163
+#define WM8962_WRITE_SEQUENCER_356              0x1164
+#define WM8962_WRITE_SEQUENCER_357              0x1165
+#define WM8962_WRITE_SEQUENCER_358              0x1166
+#define WM8962_WRITE_SEQUENCER_359              0x1167
+#define WM8962_WRITE_SEQUENCER_360              0x1168
+#define WM8962_WRITE_SEQUENCER_361              0x1169
+#define WM8962_WRITE_SEQUENCER_362              0x116A
+#define WM8962_WRITE_SEQUENCER_363              0x116B
+#define WM8962_WRITE_SEQUENCER_364              0x116C
+#define WM8962_WRITE_SEQUENCER_365              0x116D
+#define WM8962_WRITE_SEQUENCER_366              0x116E
+#define WM8962_WRITE_SEQUENCER_367              0x116F
+#define WM8962_WRITE_SEQUENCER_368              0x1170
+#define WM8962_WRITE_SEQUENCER_369              0x1171
+#define WM8962_WRITE_SEQUENCER_370              0x1172
+#define WM8962_WRITE_SEQUENCER_371              0x1173
+#define WM8962_WRITE_SEQUENCER_372              0x1174
+#define WM8962_WRITE_SEQUENCER_373              0x1175
+#define WM8962_WRITE_SEQUENCER_374              0x1176
+#define WM8962_WRITE_SEQUENCER_375              0x1177
+#define WM8962_WRITE_SEQUENCER_376              0x1178
+#define WM8962_WRITE_SEQUENCER_377              0x1179
+#define WM8962_WRITE_SEQUENCER_378              0x117A
+#define WM8962_WRITE_SEQUENCER_379              0x117B
+#define WM8962_WRITE_SEQUENCER_380              0x117C
+#define WM8962_WRITE_SEQUENCER_381              0x117D
+#define WM8962_WRITE_SEQUENCER_382              0x117E
+#define WM8962_WRITE_SEQUENCER_383              0x117F
+#define WM8962_WRITE_SEQUENCER_384              0x1180
+#define WM8962_WRITE_SEQUENCER_385              0x1181
+#define WM8962_WRITE_SEQUENCER_386              0x1182
+#define WM8962_WRITE_SEQUENCER_387              0x1183
+#define WM8962_WRITE_SEQUENCER_388              0x1184
+#define WM8962_WRITE_SEQUENCER_389              0x1185
+#define WM8962_WRITE_SEQUENCER_390              0x1186
+#define WM8962_WRITE_SEQUENCER_391              0x1187
+#define WM8962_WRITE_SEQUENCER_392              0x1188
+#define WM8962_WRITE_SEQUENCER_393              0x1189
+#define WM8962_WRITE_SEQUENCER_394              0x118A
+#define WM8962_WRITE_SEQUENCER_395              0x118B
+#define WM8962_WRITE_SEQUENCER_396              0x118C
+#define WM8962_WRITE_SEQUENCER_397              0x118D
+#define WM8962_WRITE_SEQUENCER_398              0x118E
+#define WM8962_WRITE_SEQUENCER_399              0x118F
+#define WM8962_WRITE_SEQUENCER_400              0x1190
+#define WM8962_WRITE_SEQUENCER_401              0x1191
+#define WM8962_WRITE_SEQUENCER_402              0x1192
+#define WM8962_WRITE_SEQUENCER_403              0x1193
+#define WM8962_WRITE_SEQUENCER_404              0x1194
+#define WM8962_WRITE_SEQUENCER_405              0x1195
+#define WM8962_WRITE_SEQUENCER_406              0x1196
+#define WM8962_WRITE_SEQUENCER_407              0x1197
+#define WM8962_WRITE_SEQUENCER_408              0x1198
+#define WM8962_WRITE_SEQUENCER_409              0x1199
+#define WM8962_WRITE_SEQUENCER_410              0x119A
+#define WM8962_WRITE_SEQUENCER_411              0x119B
+#define WM8962_WRITE_SEQUENCER_412              0x119C
+#define WM8962_WRITE_SEQUENCER_413              0x119D
+#define WM8962_WRITE_SEQUENCER_414              0x119E
+#define WM8962_WRITE_SEQUENCER_415              0x119F
+#define WM8962_WRITE_SEQUENCER_416              0x11A0
+#define WM8962_WRITE_SEQUENCER_417              0x11A1
+#define WM8962_WRITE_SEQUENCER_418              0x11A2
+#define WM8962_WRITE_SEQUENCER_419              0x11A3
+#define WM8962_WRITE_SEQUENCER_420              0x11A4
+#define WM8962_WRITE_SEQUENCER_421              0x11A5
+#define WM8962_WRITE_SEQUENCER_422              0x11A6
+#define WM8962_WRITE_SEQUENCER_423              0x11A7
+#define WM8962_WRITE_SEQUENCER_424              0x11A8
+#define WM8962_WRITE_SEQUENCER_425              0x11A9
+#define WM8962_WRITE_SEQUENCER_426              0x11AA
+#define WM8962_WRITE_SEQUENCER_427              0x11AB
+#define WM8962_WRITE_SEQUENCER_428              0x11AC
+#define WM8962_WRITE_SEQUENCER_429              0x11AD
+#define WM8962_WRITE_SEQUENCER_430              0x11AE
+#define WM8962_WRITE_SEQUENCER_431              0x11AF
+#define WM8962_WRITE_SEQUENCER_432              0x11B0
+#define WM8962_WRITE_SEQUENCER_433              0x11B1
+#define WM8962_WRITE_SEQUENCER_434              0x11B2
+#define WM8962_WRITE_SEQUENCER_435              0x11B3
+#define WM8962_WRITE_SEQUENCER_436              0x11B4
+#define WM8962_WRITE_SEQUENCER_437              0x11B5
+#define WM8962_WRITE_SEQUENCER_438              0x11B6
+#define WM8962_WRITE_SEQUENCER_439              0x11B7
+#define WM8962_WRITE_SEQUENCER_440              0x11B8
+#define WM8962_WRITE_SEQUENCER_441              0x11B9
+#define WM8962_WRITE_SEQUENCER_442              0x11BA
+#define WM8962_WRITE_SEQUENCER_443              0x11BB
+#define WM8962_WRITE_SEQUENCER_444              0x11BC
+#define WM8962_WRITE_SEQUENCER_445              0x11BD
+#define WM8962_WRITE_SEQUENCER_446              0x11BE
+#define WM8962_WRITE_SEQUENCER_447              0x11BF
+#define WM8962_WRITE_SEQUENCER_448              0x11C0
+#define WM8962_WRITE_SEQUENCER_449              0x11C1
+#define WM8962_WRITE_SEQUENCER_450              0x11C2
+#define WM8962_WRITE_SEQUENCER_451              0x11C3
+#define WM8962_WRITE_SEQUENCER_452              0x11C4
+#define WM8962_WRITE_SEQUENCER_453              0x11C5
+#define WM8962_WRITE_SEQUENCER_454              0x11C6
+#define WM8962_WRITE_SEQUENCER_455              0x11C7
+#define WM8962_WRITE_SEQUENCER_456              0x11C8
+#define WM8962_WRITE_SEQUENCER_457              0x11C9
+#define WM8962_WRITE_SEQUENCER_458              0x11CA
+#define WM8962_WRITE_SEQUENCER_459              0x11CB
+#define WM8962_WRITE_SEQUENCER_460              0x11CC
+#define WM8962_WRITE_SEQUENCER_461              0x11CD
+#define WM8962_WRITE_SEQUENCER_462              0x11CE
+#define WM8962_WRITE_SEQUENCER_463              0x11CF
+#define WM8962_WRITE_SEQUENCER_464              0x11D0
+#define WM8962_WRITE_SEQUENCER_465              0x11D1
+#define WM8962_WRITE_SEQUENCER_466              0x11D2
+#define WM8962_WRITE_SEQUENCER_467              0x11D3
+#define WM8962_WRITE_SEQUENCER_468              0x11D4
+#define WM8962_WRITE_SEQUENCER_469              0x11D5
+#define WM8962_WRITE_SEQUENCER_470              0x11D6
+#define WM8962_WRITE_SEQUENCER_471              0x11D7
+#define WM8962_WRITE_SEQUENCER_472              0x11D8
+#define WM8962_WRITE_SEQUENCER_473              0x11D9
+#define WM8962_WRITE_SEQUENCER_474              0x11DA
+#define WM8962_WRITE_SEQUENCER_475              0x11DB
+#define WM8962_WRITE_SEQUENCER_476              0x11DC
+#define WM8962_WRITE_SEQUENCER_477              0x11DD
+#define WM8962_WRITE_SEQUENCER_478              0x11DE
+#define WM8962_WRITE_SEQUENCER_479              0x11DF
+#define WM8962_WRITE_SEQUENCER_480              0x11E0
+#define WM8962_WRITE_SEQUENCER_481              0x11E1
+#define WM8962_WRITE_SEQUENCER_482              0x11E2
+#define WM8962_WRITE_SEQUENCER_483              0x11E3
+#define WM8962_WRITE_SEQUENCER_484              0x11E4
+#define WM8962_WRITE_SEQUENCER_485              0x11E5
+#define WM8962_WRITE_SEQUENCER_486              0x11E6
+#define WM8962_WRITE_SEQUENCER_487              0x11E7
+#define WM8962_WRITE_SEQUENCER_488              0x11E8
+#define WM8962_WRITE_SEQUENCER_489              0x11E9
+#define WM8962_WRITE_SEQUENCER_490              0x11EA
+#define WM8962_WRITE_SEQUENCER_491              0x11EB
+#define WM8962_WRITE_SEQUENCER_492              0x11EC
+#define WM8962_WRITE_SEQUENCER_493              0x11ED
+#define WM8962_WRITE_SEQUENCER_494              0x11EE
+#define WM8962_WRITE_SEQUENCER_495              0x11EF
+#define WM8962_WRITE_SEQUENCER_496              0x11F0
+#define WM8962_WRITE_SEQUENCER_497              0x11F1
+#define WM8962_WRITE_SEQUENCER_498              0x11F2
+#define WM8962_WRITE_SEQUENCER_499              0x11F3
+#define WM8962_WRITE_SEQUENCER_500              0x11F4
+#define WM8962_WRITE_SEQUENCER_501              0x11F5
+#define WM8962_WRITE_SEQUENCER_502              0x11F6
+#define WM8962_WRITE_SEQUENCER_503              0x11F7
+#define WM8962_WRITE_SEQUENCER_504              0x11F8
+#define WM8962_WRITE_SEQUENCER_505              0x11F9
+#define WM8962_WRITE_SEQUENCER_506              0x11FA
+#define WM8962_WRITE_SEQUENCER_507              0x11FB
+#define WM8962_WRITE_SEQUENCER_508              0x11FC
+#define WM8962_WRITE_SEQUENCER_509              0x11FD
+#define WM8962_WRITE_SEQUENCER_510              0x11FE
+#define WM8962_WRITE_SEQUENCER_511              0x11FF
+#define WM8962_DSP2_INSTRUCTION_RAM_0           0x2000
+#define WM8962_DSP2_ADDRESS_RAM_2               0x2400
+#define WM8962_DSP2_ADDRESS_RAM_1               0x2401
+#define WM8962_DSP2_ADDRESS_RAM_0               0x2402
+#define WM8962_DSP2_DATA1_RAM_1                 0x3000
+#define WM8962_DSP2_DATA1_RAM_0                 0x3001
+#define WM8962_DSP2_DATA2_RAM_1                 0x3400
+#define WM8962_DSP2_DATA2_RAM_0                 0x3401
+#define WM8962_DSP2_DATA3_RAM_1                 0x3800
+#define WM8962_DSP2_DATA3_RAM_0                 0x3801
+#define WM8962_DSP2_COEFF_RAM_0                 0x3C00
+#define WM8962_RETUNEADC_SHARED_COEFF_1         0x4000
+#define WM8962_RETUNEADC_SHARED_COEFF_0         0x4001
+#define WM8962_RETUNEDAC_SHARED_COEFF_1         0x4002
+#define WM8962_RETUNEDAC_SHARED_COEFF_0         0x4003
+#define WM8962_SOUNDSTAGE_ENABLES_1             0x4004
+#define WM8962_SOUNDSTAGE_ENABLES_0             0x4005
+#define WM8962_HDBASS_AI_1                      0x4200
+#define WM8962_HDBASS_AI_0                      0x4201
+#define WM8962_HDBASS_AR_1                      0x4202
+#define WM8962_HDBASS_AR_0                      0x4203
+#define WM8962_HDBASS_B_1                       0x4204
+#define WM8962_HDBASS_B_0                       0x4205
+#define WM8962_HDBASS_K_1                       0x4206
+#define WM8962_HDBASS_K_0                       0x4207
+#define WM8962_HDBASS_N1_1                      0x4208
+#define WM8962_HDBASS_N1_0                      0x4209
+#define WM8962_HDBASS_N2_1                      0x420A
+#define WM8962_HDBASS_N2_0                      0x420B
+#define WM8962_HDBASS_N3_1                      0x420C
+#define WM8962_HDBASS_N3_0                      0x420D
+#define WM8962_HDBASS_N4_1                      0x420E
+#define WM8962_HDBASS_N4_0                      0x420F
+#define WM8962_HDBASS_N5_1                      0x4210
+#define WM8962_HDBASS_N5_0                      0x4211
+#define WM8962_HDBASS_X1_1                      0x4212
+#define WM8962_HDBASS_X1_0                      0x4213
+#define WM8962_HDBASS_X2_1                      0x4214
+#define WM8962_HDBASS_X2_0                      0x4215
+#define WM8962_HDBASS_X3_1                      0x4216
+#define WM8962_HDBASS_X3_0                      0x4217
+#define WM8962_HDBASS_ATK_1                     0x4218
+#define WM8962_HDBASS_ATK_0                     0x4219
+#define WM8962_HDBASS_DCY_1                     0x421A
+#define WM8962_HDBASS_DCY_0                     0x421B
+#define WM8962_HDBASS_PG_1                      0x421C
+#define WM8962_HDBASS_PG_0                      0x421D
+#define WM8962_HPF_C_1                          0x4400
+#define WM8962_HPF_C_0                          0x4401
+#define WM8962_ADCL_RETUNE_C1_1                 0x4600
+#define WM8962_ADCL_RETUNE_C1_0                 0x4601
+#define WM8962_ADCL_RETUNE_C2_1                 0x4602
+#define WM8962_ADCL_RETUNE_C2_0                 0x4603
+#define WM8962_ADCL_RETUNE_C3_1                 0x4604
+#define WM8962_ADCL_RETUNE_C3_0                 0x4605
+#define WM8962_ADCL_RETUNE_C4_1                 0x4606
+#define WM8962_ADCL_RETUNE_C4_0                 0x4607
+#define WM8962_ADCL_RETUNE_C5_1                 0x4608
+#define WM8962_ADCL_RETUNE_C5_0                 0x4609
+#define WM8962_ADCL_RETUNE_C6_1                 0x460A
+#define WM8962_ADCL_RETUNE_C6_0                 0x460B
+#define WM8962_ADCL_RETUNE_C7_1                 0x460C
+#define WM8962_ADCL_RETUNE_C7_0                 0x460D
+#define WM8962_ADCL_RETUNE_C8_1                 0x460E
+#define WM8962_ADCL_RETUNE_C8_0                 0x460F
+#define WM8962_ADCL_RETUNE_C9_1                 0x4610
+#define WM8962_ADCL_RETUNE_C9_0                 0x4611
+#define WM8962_ADCL_RETUNE_C10_1                0x4612
+#define WM8962_ADCL_RETUNE_C10_0                0x4613
+#define WM8962_ADCL_RETUNE_C11_1                0x4614
+#define WM8962_ADCL_RETUNE_C11_0                0x4615
+#define WM8962_ADCL_RETUNE_C12_1                0x4616
+#define WM8962_ADCL_RETUNE_C12_0                0x4617
+#define WM8962_ADCL_RETUNE_C13_1                0x4618
+#define WM8962_ADCL_RETUNE_C13_0                0x4619
+#define WM8962_ADCL_RETUNE_C14_1                0x461A
+#define WM8962_ADCL_RETUNE_C14_0                0x461B
+#define WM8962_ADCL_RETUNE_C15_1                0x461C
+#define WM8962_ADCL_RETUNE_C15_0                0x461D
+#define WM8962_ADCL_RETUNE_C16_1                0x461E
+#define WM8962_ADCL_RETUNE_C16_0                0x461F
+#define WM8962_ADCL_RETUNE_C17_1                0x4620
+#define WM8962_ADCL_RETUNE_C17_0                0x4621
+#define WM8962_ADCL_RETUNE_C18_1                0x4622
+#define WM8962_ADCL_RETUNE_C18_0                0x4623
+#define WM8962_ADCL_RETUNE_C19_1                0x4624
+#define WM8962_ADCL_RETUNE_C19_0                0x4625
+#define WM8962_ADCL_RETUNE_C20_1                0x4626
+#define WM8962_ADCL_RETUNE_C20_0                0x4627
+#define WM8962_ADCL_RETUNE_C21_1                0x4628
+#define WM8962_ADCL_RETUNE_C21_0                0x4629
+#define WM8962_ADCL_RETUNE_C22_1                0x462A
+#define WM8962_ADCL_RETUNE_C22_0                0x462B
+#define WM8962_ADCL_RETUNE_C23_1                0x462C
+#define WM8962_ADCL_RETUNE_C23_0                0x462D
+#define WM8962_ADCL_RETUNE_C24_1                0x462E
+#define WM8962_ADCL_RETUNE_C24_0                0x462F
+#define WM8962_ADCL_RETUNE_C25_1                0x4630
+#define WM8962_ADCL_RETUNE_C25_0                0x4631
+#define WM8962_ADCL_RETUNE_C26_1                0x4632
+#define WM8962_ADCL_RETUNE_C26_0                0x4633
+#define WM8962_ADCL_RETUNE_C27_1                0x4634
+#define WM8962_ADCL_RETUNE_C27_0                0x4635
+#define WM8962_ADCL_RETUNE_C28_1                0x4636
+#define WM8962_ADCL_RETUNE_C28_0                0x4637
+#define WM8962_ADCL_RETUNE_C29_1                0x4638
+#define WM8962_ADCL_RETUNE_C29_0                0x4639
+#define WM8962_ADCL_RETUNE_C30_1                0x463A
+#define WM8962_ADCL_RETUNE_C30_0                0x463B
+#define WM8962_ADCL_RETUNE_C31_1                0x463C
+#define WM8962_ADCL_RETUNE_C31_0                0x463D
+#define WM8962_ADCL_RETUNE_C32_1                0x463E
+#define WM8962_ADCL_RETUNE_C32_0                0x463F
+#define WM8962_RETUNEADC_PG2_1                  0x4800
+#define WM8962_RETUNEADC_PG2_0                  0x4801
+#define WM8962_RETUNEADC_PG_1                   0x4802
+#define WM8962_RETUNEADC_PG_0                   0x4803
+#define WM8962_ADCR_RETUNE_C1_1                 0x4A00
+#define WM8962_ADCR_RETUNE_C1_0                 0x4A01
+#define WM8962_ADCR_RETUNE_C2_1                 0x4A02
+#define WM8962_ADCR_RETUNE_C2_0                 0x4A03
+#define WM8962_ADCR_RETUNE_C3_1                 0x4A04
+#define WM8962_ADCR_RETUNE_C3_0                 0x4A05
+#define WM8962_ADCR_RETUNE_C4_1                 0x4A06
+#define WM8962_ADCR_RETUNE_C4_0                 0x4A07
+#define WM8962_ADCR_RETUNE_C5_1                 0x4A08
+#define WM8962_ADCR_RETUNE_C5_0                 0x4A09
+#define WM8962_ADCR_RETUNE_C6_1                 0x4A0A
+#define WM8962_ADCR_RETUNE_C6_0                 0x4A0B
+#define WM8962_ADCR_RETUNE_C7_1                 0x4A0C
+#define WM8962_ADCR_RETUNE_C7_0                 0x4A0D
+#define WM8962_ADCR_RETUNE_C8_1                 0x4A0E
+#define WM8962_ADCR_RETUNE_C8_0                 0x4A0F
+#define WM8962_ADCR_RETUNE_C9_1                 0x4A10
+#define WM8962_ADCR_RETUNE_C9_0                 0x4A11
+#define WM8962_ADCR_RETUNE_C10_1                0x4A12
+#define WM8962_ADCR_RETUNE_C10_0                0x4A13
+#define WM8962_ADCR_RETUNE_C11_1                0x4A14
+#define WM8962_ADCR_RETUNE_C11_0                0x4A15
+#define WM8962_ADCR_RETUNE_C12_1                0x4A16
+#define WM8962_ADCR_RETUNE_C12_0                0x4A17
+#define WM8962_ADCR_RETUNE_C13_1                0x4A18
+#define WM8962_ADCR_RETUNE_C13_0                0x4A19
+#define WM8962_ADCR_RETUNE_C14_1                0x4A1A
+#define WM8962_ADCR_RETUNE_C14_0                0x4A1B
+#define WM8962_ADCR_RETUNE_C15_1                0x4A1C
+#define WM8962_ADCR_RETUNE_C15_0                0x4A1D
+#define WM8962_ADCR_RETUNE_C16_1                0x4A1E
+#define WM8962_ADCR_RETUNE_C16_0                0x4A1F
+#define WM8962_ADCR_RETUNE_C17_1                0x4A20
+#define WM8962_ADCR_RETUNE_C17_0                0x4A21
+#define WM8962_ADCR_RETUNE_C18_1                0x4A22
+#define WM8962_ADCR_RETUNE_C18_0                0x4A23
+#define WM8962_ADCR_RETUNE_C19_1                0x4A24
+#define WM8962_ADCR_RETUNE_C19_0                0x4A25
+#define WM8962_ADCR_RETUNE_C20_1                0x4A26
+#define WM8962_ADCR_RETUNE_C20_0                0x4A27
+#define WM8962_ADCR_RETUNE_C21_1                0x4A28
+#define WM8962_ADCR_RETUNE_C21_0                0x4A29
+#define WM8962_ADCR_RETUNE_C22_1                0x4A2A
+#define WM8962_ADCR_RETUNE_C22_0                0x4A2B
+#define WM8962_ADCR_RETUNE_C23_1                0x4A2C
+#define WM8962_ADCR_RETUNE_C23_0                0x4A2D
+#define WM8962_ADCR_RETUNE_C24_1                0x4A2E
+#define WM8962_ADCR_RETUNE_C24_0                0x4A2F
+#define WM8962_ADCR_RETUNE_C25_1                0x4A30
+#define WM8962_ADCR_RETUNE_C25_0                0x4A31
+#define WM8962_ADCR_RETUNE_C26_1                0x4A32
+#define WM8962_ADCR_RETUNE_C26_0                0x4A33
+#define WM8962_ADCR_RETUNE_C27_1                0x4A34
+#define WM8962_ADCR_RETUNE_C27_0                0x4A35
+#define WM8962_ADCR_RETUNE_C28_1                0x4A36
+#define WM8962_ADCR_RETUNE_C28_0                0x4A37
+#define WM8962_ADCR_RETUNE_C29_1                0x4A38
+#define WM8962_ADCR_RETUNE_C29_0                0x4A39
+#define WM8962_ADCR_RETUNE_C30_1                0x4A3A
+#define WM8962_ADCR_RETUNE_C30_0                0x4A3B
+#define WM8962_ADCR_RETUNE_C31_1                0x4A3C
+#define WM8962_ADCR_RETUNE_C31_0                0x4A3D
+#define WM8962_ADCR_RETUNE_C32_1                0x4A3E
+#define WM8962_ADCR_RETUNE_C32_0                0x4A3F
+#define WM8962_DACL_RETUNE_C1_1                 0x4C00
+#define WM8962_DACL_RETUNE_C1_0                 0x4C01
+#define WM8962_DACL_RETUNE_C2_1                 0x4C02
+#define WM8962_DACL_RETUNE_C2_0                 0x4C03
+#define WM8962_DACL_RETUNE_C3_1                 0x4C04
+#define WM8962_DACL_RETUNE_C3_0                 0x4C05
+#define WM8962_DACL_RETUNE_C4_1                 0x4C06
+#define WM8962_DACL_RETUNE_C4_0                 0x4C07
+#define WM8962_DACL_RETUNE_C5_1                 0x4C08
+#define WM8962_DACL_RETUNE_C5_0                 0x4C09
+#define WM8962_DACL_RETUNE_C6_1                 0x4C0A
+#define WM8962_DACL_RETUNE_C6_0                 0x4C0B
+#define WM8962_DACL_RETUNE_C7_1                 0x4C0C
+#define WM8962_DACL_RETUNE_C7_0                 0x4C0D
+#define WM8962_DACL_RETUNE_C8_1                 0x4C0E
+#define WM8962_DACL_RETUNE_C8_0                 0x4C0F
+#define WM8962_DACL_RETUNE_C9_1                 0x4C10
+#define WM8962_DACL_RETUNE_C9_0                 0x4C11
+#define WM8962_DACL_RETUNE_C10_1                0x4C12
+#define WM8962_DACL_RETUNE_C10_0                0x4C13
+#define WM8962_DACL_RETUNE_C11_1                0x4C14
+#define WM8962_DACL_RETUNE_C11_0                0x4C15
+#define WM8962_DACL_RETUNE_C12_1                0x4C16
+#define WM8962_DACL_RETUNE_C12_0                0x4C17
+#define WM8962_DACL_RETUNE_C13_1                0x4C18
+#define WM8962_DACL_RETUNE_C13_0                0x4C19
+#define WM8962_DACL_RETUNE_C14_1                0x4C1A
+#define WM8962_DACL_RETUNE_C14_0                0x4C1B
+#define WM8962_DACL_RETUNE_C15_1                0x4C1C
+#define WM8962_DACL_RETUNE_C15_0                0x4C1D
+#define WM8962_DACL_RETUNE_C16_1                0x4C1E
+#define WM8962_DACL_RETUNE_C16_0                0x4C1F
+#define WM8962_DACL_RETUNE_C17_1                0x4C20
+#define WM8962_DACL_RETUNE_C17_0                0x4C21
+#define WM8962_DACL_RETUNE_C18_1                0x4C22
+#define WM8962_DACL_RETUNE_C18_0                0x4C23
+#define WM8962_DACL_RETUNE_C19_1                0x4C24
+#define WM8962_DACL_RETUNE_C19_0                0x4C25
+#define WM8962_DACL_RETUNE_C20_1                0x4C26
+#define WM8962_DACL_RETUNE_C20_0                0x4C27
+#define WM8962_DACL_RETUNE_C21_1                0x4C28
+#define WM8962_DACL_RETUNE_C21_0                0x4C29
+#define WM8962_DACL_RETUNE_C22_1                0x4C2A
+#define WM8962_DACL_RETUNE_C22_0                0x4C2B
+#define WM8962_DACL_RETUNE_C23_1                0x4C2C
+#define WM8962_DACL_RETUNE_C23_0                0x4C2D
+#define WM8962_DACL_RETUNE_C24_1                0x4C2E
+#define WM8962_DACL_RETUNE_C24_0                0x4C2F
+#define WM8962_DACL_RETUNE_C25_1                0x4C30
+#define WM8962_DACL_RETUNE_C25_0                0x4C31
+#define WM8962_DACL_RETUNE_C26_1                0x4C32
+#define WM8962_DACL_RETUNE_C26_0                0x4C33
+#define WM8962_DACL_RETUNE_C27_1                0x4C34
+#define WM8962_DACL_RETUNE_C27_0                0x4C35
+#define WM8962_DACL_RETUNE_C28_1                0x4C36
+#define WM8962_DACL_RETUNE_C28_0                0x4C37
+#define WM8962_DACL_RETUNE_C29_1                0x4C38
+#define WM8962_DACL_RETUNE_C29_0                0x4C39
+#define WM8962_DACL_RETUNE_C30_1                0x4C3A
+#define WM8962_DACL_RETUNE_C30_0                0x4C3B
+#define WM8962_DACL_RETUNE_C31_1                0x4C3C
+#define WM8962_DACL_RETUNE_C31_0                0x4C3D
+#define WM8962_DACL_RETUNE_C32_1                0x4C3E
+#define WM8962_DACL_RETUNE_C32_0                0x4C3F
+#define WM8962_RETUNEDAC_PG2_1                  0x4E00
+#define WM8962_RETUNEDAC_PG2_0                  0x4E01
+#define WM8962_RETUNEDAC_PG_1                   0x4E02
+#define WM8962_RETUNEDAC_PG_0                   0x4E03
+#define WM8962_DACR_RETUNE_C1_1                 0x5000
+#define WM8962_DACR_RETUNE_C1_0                 0x5001
+#define WM8962_DACR_RETUNE_C2_1                 0x5002
+#define WM8962_DACR_RETUNE_C2_0                 0x5003
+#define WM8962_DACR_RETUNE_C3_1                 0x5004
+#define WM8962_DACR_RETUNE_C3_0                 0x5005
+#define WM8962_DACR_RETUNE_C4_1                 0x5006
+#define WM8962_DACR_RETUNE_C4_0                 0x5007
+#define WM8962_DACR_RETUNE_C5_1                 0x5008
+#define WM8962_DACR_RETUNE_C5_0                 0x5009
+#define WM8962_DACR_RETUNE_C6_1                 0x500A
+#define WM8962_DACR_RETUNE_C6_0                 0x500B
+#define WM8962_DACR_RETUNE_C7_1                 0x500C
+#define WM8962_DACR_RETUNE_C7_0                 0x500D
+#define WM8962_DACR_RETUNE_C8_1                 0x500E
+#define WM8962_DACR_RETUNE_C8_0                 0x500F
+#define WM8962_DACR_RETUNE_C9_1                 0x5010
+#define WM8962_DACR_RETUNE_C9_0                 0x5011
+#define WM8962_DACR_RETUNE_C10_1                0x5012
+#define WM8962_DACR_RETUNE_C10_0                0x5013
+#define WM8962_DACR_RETUNE_C11_1                0x5014
+#define WM8962_DACR_RETUNE_C11_0                0x5015
+#define WM8962_DACR_RETUNE_C12_1                0x5016
+#define WM8962_DACR_RETUNE_C12_0                0x5017
+#define WM8962_DACR_RETUNE_C13_1                0x5018
+#define WM8962_DACR_RETUNE_C13_0                0x5019
+#define WM8962_DACR_RETUNE_C14_1                0x501A
+#define WM8962_DACR_RETUNE_C14_0                0x501B
+#define WM8962_DACR_RETUNE_C15_1                0x501C
+#define WM8962_DACR_RETUNE_C15_0                0x501D
+#define WM8962_DACR_RETUNE_C16_1                0x501E
+#define WM8962_DACR_RETUNE_C16_0                0x501F
+#define WM8962_DACR_RETUNE_C17_1                0x5020
+#define WM8962_DACR_RETUNE_C17_0                0x5021
+#define WM8962_DACR_RETUNE_C18_1                0x5022
+#define WM8962_DACR_RETUNE_C18_0                0x5023
+#define WM8962_DACR_RETUNE_C19_1                0x5024
+#define WM8962_DACR_RETUNE_C19_0                0x5025
+#define WM8962_DACR_RETUNE_C20_1                0x5026
+#define WM8962_DACR_RETUNE_C20_0                0x5027
+#define WM8962_DACR_RETUNE_C21_1                0x5028
+#define WM8962_DACR_RETUNE_C21_0                0x5029
+#define WM8962_DACR_RETUNE_C22_1                0x502A
+#define WM8962_DACR_RETUNE_C22_0                0x502B
+#define WM8962_DACR_RETUNE_C23_1                0x502C
+#define WM8962_DACR_RETUNE_C23_0                0x502D
+#define WM8962_DACR_RETUNE_C24_1                0x502E
+#define WM8962_DACR_RETUNE_C24_0                0x502F
+#define WM8962_DACR_RETUNE_C25_1                0x5030
+#define WM8962_DACR_RETUNE_C25_0                0x5031
+#define WM8962_DACR_RETUNE_C26_1                0x5032
+#define WM8962_DACR_RETUNE_C26_0                0x5033
+#define WM8962_DACR_RETUNE_C27_1                0x5034
+#define WM8962_DACR_RETUNE_C27_0                0x5035
+#define WM8962_DACR_RETUNE_C28_1                0x5036
+#define WM8962_DACR_RETUNE_C28_0                0x5037
+#define WM8962_DACR_RETUNE_C29_1                0x5038
+#define WM8962_DACR_RETUNE_C29_0                0x5039
+#define WM8962_DACR_RETUNE_C30_1                0x503A
+#define WM8962_DACR_RETUNE_C30_0                0x503B
+#define WM8962_DACR_RETUNE_C31_1                0x503C
+#define WM8962_DACR_RETUNE_C31_0                0x503D
+#define WM8962_DACR_RETUNE_C32_1                0x503E
+#define WM8962_DACR_RETUNE_C32_0                0x503F
+#define WM8962_VSS_XHD2_1                       0x5200
+#define WM8962_VSS_XHD2_0                       0x5201
+#define WM8962_VSS_XHD3_1                       0x5202
+#define WM8962_VSS_XHD3_0                       0x5203
+#define WM8962_VSS_XHN1_1                       0x5204
+#define WM8962_VSS_XHN1_0                       0x5205
+#define WM8962_VSS_XHN2_1                       0x5206
+#define WM8962_VSS_XHN2_0                       0x5207
+#define WM8962_VSS_XHN3_1                       0x5208
+#define WM8962_VSS_XHN3_0                       0x5209
+#define WM8962_VSS_XLA_1                        0x520A
+#define WM8962_VSS_XLA_0                        0x520B
+#define WM8962_VSS_XLB_1                        0x520C
+#define WM8962_VSS_XLB_0                        0x520D
+#define WM8962_VSS_XLG_1                        0x520E
+#define WM8962_VSS_XLG_0                        0x520F
+#define WM8962_VSS_PG2_1                        0x5210
+#define WM8962_VSS_PG2_0                        0x5211
+#define WM8962_VSS_PG_1                         0x5212
+#define WM8962_VSS_PG_0                         0x5213
+#define WM8962_VSS_XTD1_1                       0x5214
+#define WM8962_VSS_XTD1_0                       0x5215
+#define WM8962_VSS_XTD2_1                       0x5216
+#define WM8962_VSS_XTD2_0                       0x5217
+#define WM8962_VSS_XTD3_1                       0x5218
+#define WM8962_VSS_XTD3_0                       0x5219
+#define WM8962_VSS_XTD4_1                       0x521A
+#define WM8962_VSS_XTD4_0                       0x521B
+#define WM8962_VSS_XTD5_1                       0x521C
+#define WM8962_VSS_XTD5_0                       0x521D
+#define WM8962_VSS_XTD6_1                       0x521E
+#define WM8962_VSS_XTD6_0                       0x521F
+#define WM8962_VSS_XTD7_1                       0x5220
+#define WM8962_VSS_XTD7_0                       0x5221
+#define WM8962_VSS_XTD8_1                       0x5222
+#define WM8962_VSS_XTD8_0                       0x5223
+#define WM8962_VSS_XTD9_1                       0x5224
+#define WM8962_VSS_XTD9_0                       0x5225
+#define WM8962_VSS_XTD10_1                      0x5226
+#define WM8962_VSS_XTD10_0                      0x5227
+#define WM8962_VSS_XTD11_1                      0x5228
+#define WM8962_VSS_XTD11_0                      0x5229
+#define WM8962_VSS_XTD12_1                      0x522A
+#define WM8962_VSS_XTD12_0                      0x522B
+#define WM8962_VSS_XTD13_1                      0x522C
+#define WM8962_VSS_XTD13_0                      0x522D
+#define WM8962_VSS_XTD14_1                      0x522E
+#define WM8962_VSS_XTD14_0                      0x522F
+#define WM8962_VSS_XTD15_1                      0x5230
+#define WM8962_VSS_XTD15_0                      0x5231
+#define WM8962_VSS_XTD16_1                      0x5232
+#define WM8962_VSS_XTD16_0                      0x5233
+#define WM8962_VSS_XTD17_1                      0x5234
+#define WM8962_VSS_XTD17_0                      0x5235
+#define WM8962_VSS_XTD18_1                      0x5236
+#define WM8962_VSS_XTD18_0                      0x5237
+#define WM8962_VSS_XTD19_1                      0x5238
+#define WM8962_VSS_XTD19_0                      0x5239
+#define WM8962_VSS_XTD20_1                      0x523A
+#define WM8962_VSS_XTD20_0                      0x523B
+#define WM8962_VSS_XTD21_1                      0x523C
+#define WM8962_VSS_XTD21_0                      0x523D
+#define WM8962_VSS_XTD22_1                      0x523E
+#define WM8962_VSS_XTD22_0                      0x523F
+#define WM8962_VSS_XTD23_1                      0x5240
+#define WM8962_VSS_XTD23_0                      0x5241
+#define WM8962_VSS_XTD24_1                      0x5242
+#define WM8962_VSS_XTD24_0                      0x5243
+#define WM8962_VSS_XTD25_1                      0x5244
+#define WM8962_VSS_XTD25_0                      0x5245
+#define WM8962_VSS_XTD26_1                      0x5246
+#define WM8962_VSS_XTD26_0                      0x5247
+#define WM8962_VSS_XTD27_1                      0x5248
+#define WM8962_VSS_XTD27_0                      0x5249
+#define WM8962_VSS_XTD28_1                      0x524A
+#define WM8962_VSS_XTD28_0                      0x524B
+#define WM8962_VSS_XTD29_1                      0x524C
+#define WM8962_VSS_XTD29_0                      0x524D
+#define WM8962_VSS_XTD30_1                      0x524E
+#define WM8962_VSS_XTD30_0                      0x524F
+#define WM8962_VSS_XTD31_1                      0x5250
+#define WM8962_VSS_XTD31_0                      0x5251
+#define WM8962_VSS_XTD32_1                      0x5252
+#define WM8962_VSS_XTD32_0                      0x5253
+#define WM8962_VSS_XTS1_1                       0x5254
+#define WM8962_VSS_XTS1_0                       0x5255
+#define WM8962_VSS_XTS2_1                       0x5256
+#define WM8962_VSS_XTS2_0                       0x5257
+#define WM8962_VSS_XTS3_1                       0x5258
+#define WM8962_VSS_XTS3_0                       0x5259
+#define WM8962_VSS_XTS4_1                       0x525A
+#define WM8962_VSS_XTS4_0                       0x525B
+#define WM8962_VSS_XTS5_1                       0x525C
+#define WM8962_VSS_XTS5_0                       0x525D
+#define WM8962_VSS_XTS6_1                       0x525E
+#define WM8962_VSS_XTS6_0                       0x525F
+#define WM8962_VSS_XTS7_1                       0x5260
+#define WM8962_VSS_XTS7_0                       0x5261
+#define WM8962_VSS_XTS8_1                       0x5262
+#define WM8962_VSS_XTS8_0                       0x5263
+#define WM8962_VSS_XTS9_1                       0x5264
+#define WM8962_VSS_XTS9_0                       0x5265
+#define WM8962_VSS_XTS10_1                      0x5266
+#define WM8962_VSS_XTS10_0                      0x5267
+#define WM8962_VSS_XTS11_1                      0x5268
+#define WM8962_VSS_XTS11_0                      0x5269
+#define WM8962_VSS_XTS12_1                      0x526A
+#define WM8962_VSS_XTS12_0                      0x526B
+#define WM8962_VSS_XTS13_1                      0x526C
+#define WM8962_VSS_XTS13_0                      0x526D
+#define WM8962_VSS_XTS14_1                      0x526E
+#define WM8962_VSS_XTS14_0                      0x526F
+#define WM8962_VSS_XTS15_1                      0x5270
+#define WM8962_VSS_XTS15_0                      0x5271
+#define WM8962_VSS_XTS16_1                      0x5272
+#define WM8962_VSS_XTS16_0                      0x5273
+#define WM8962_VSS_XTS17_1                      0x5274
+#define WM8962_VSS_XTS17_0                      0x5275
+#define WM8962_VSS_XTS18_1                      0x5276
+#define WM8962_VSS_XTS18_0                      0x5277
+#define WM8962_VSS_XTS19_1                      0x5278
+#define WM8962_VSS_XTS19_0                      0x5279
+#define WM8962_VSS_XTS20_1                      0x527A
+#define WM8962_VSS_XTS20_0                      0x527B
+#define WM8962_VSS_XTS21_1                      0x527C
+#define WM8962_VSS_XTS21_0                      0x527D
+#define WM8962_VSS_XTS22_1                      0x527E
+#define WM8962_VSS_XTS22_0                      0x527F
+#define WM8962_VSS_XTS23_1                      0x5280
+#define WM8962_VSS_XTS23_0                      0x5281
+#define WM8962_VSS_XTS24_1                      0x5282
+#define WM8962_VSS_XTS24_0                      0x5283
+#define WM8962_VSS_XTS25_1                      0x5284
+#define WM8962_VSS_XTS25_0                      0x5285
+#define WM8962_VSS_XTS26_1                      0x5286
+#define WM8962_VSS_XTS26_0                      0x5287
+#define WM8962_VSS_XTS27_1                      0x5288
+#define WM8962_VSS_XTS27_0                      0x5289
+#define WM8962_VSS_XTS28_1                      0x528A
+#define WM8962_VSS_XTS28_0                      0x528B
+#define WM8962_VSS_XTS29_1                      0x528C
+#define WM8962_VSS_XTS29_0                      0x528D
+#define WM8962_VSS_XTS30_1                      0x528E
+#define WM8962_VSS_XTS30_0                      0x528F
+#define WM8962_VSS_XTS31_1                      0x5290
+#define WM8962_VSS_XTS31_0                      0x5291
+#define WM8962_VSS_XTS32_1                      0x5292
+#define WM8962_VSS_XTS32_0                      0x5293
+
+#define WM8962_REGISTER_COUNT                   1138
+#define WM8962_MAX_REGISTER                     0x5293
+
+/*
+ * Field Definitions.
+ */
+
+/*
+ * R0 (0x00) - Left Input volume
+ */
+#define WM8962_IN_VU                            0x0100  /* IN_VU */
+#define WM8962_IN_VU_MASK                       0x0100  /* IN_VU */
+#define WM8962_IN_VU_SHIFT                           8  /* IN_VU */
+#define WM8962_IN_VU_WIDTH                           1  /* IN_VU */
+#define WM8962_INPGAL_MUTE                      0x0080  /* INPGAL_MUTE */
+#define WM8962_INPGAL_MUTE_MASK                 0x0080  /* INPGAL_MUTE */
+#define WM8962_INPGAL_MUTE_SHIFT                     7  /* INPGAL_MUTE */
+#define WM8962_INPGAL_MUTE_WIDTH                     1  /* INPGAL_MUTE */
+#define WM8962_INL_ZC                           0x0040  /* INL_ZC */
+#define WM8962_INL_ZC_MASK                      0x0040  /* INL_ZC */
+#define WM8962_INL_ZC_SHIFT                          6  /* INL_ZC */
+#define WM8962_INL_ZC_WIDTH                          1  /* INL_ZC */
+#define WM8962_INL_VOL_MASK                     0x003F  /* INL_VOL - [5:0] */
+#define WM8962_INL_VOL_SHIFT                         0  /* INL_VOL - [5:0] */
+#define WM8962_INL_VOL_WIDTH                         6  /* INL_VOL - [5:0] */
+
+/*
+ * R1 (0x01) - Right Input volume
+ */
+#define WM8962_CUST_ID_MASK                     0xF000  /* CUST_ID - [15:12] */
+#define WM8962_CUST_ID_SHIFT                        12  /* CUST_ID - [15:12] */
+#define WM8962_CUST_ID_WIDTH                         4  /* CUST_ID - [15:12] */
+#define WM8962_CHIP_REV_MASK                    0x0E00  /* CHIP_REV - [11:9] */
+#define WM8962_CHIP_REV_SHIFT                        9  /* CHIP_REV - [11:9] */
+#define WM8962_CHIP_REV_WIDTH                        3  /* CHIP_REV - [11:9] */
+#define WM8962_IN_VU                            0x0100  /* IN_VU */
+#define WM8962_IN_VU_MASK                       0x0100  /* IN_VU */
+#define WM8962_IN_VU_SHIFT                           8  /* IN_VU */
+#define WM8962_IN_VU_WIDTH                           1  /* IN_VU */
+#define WM8962_INPGAR_MUTE                      0x0080  /* INPGAR_MUTE */
+#define WM8962_INPGAR_MUTE_MASK                 0x0080  /* INPGAR_MUTE */
+#define WM8962_INPGAR_MUTE_SHIFT                     7  /* INPGAR_MUTE */
+#define WM8962_INPGAR_MUTE_WIDTH                     1  /* INPGAR_MUTE */
+#define WM8962_INR_ZC                           0x0040  /* INR_ZC */
+#define WM8962_INR_ZC_MASK                      0x0040  /* INR_ZC */
+#define WM8962_INR_ZC_SHIFT                          6  /* INR_ZC */
+#define WM8962_INR_ZC_WIDTH                          1  /* INR_ZC */
+#define WM8962_INR_VOL_MASK                     0x003F  /* INR_VOL - [5:0] */
+#define WM8962_INR_VOL_SHIFT                         0  /* INR_VOL - [5:0] */
+#define WM8962_INR_VOL_WIDTH                         6  /* INR_VOL - [5:0] */
+
+/*
+ * R2 (0x02) - HPOUTL volume
+ */
+#define WM8962_HPOUT_VU                         0x0100  /* HPOUT_VU */
+#define WM8962_HPOUT_VU_MASK                    0x0100  /* HPOUT_VU */
+#define WM8962_HPOUT_VU_SHIFT                        8  /* HPOUT_VU */
+#define WM8962_HPOUT_VU_WIDTH                        1  /* HPOUT_VU */
+#define WM8962_HPOUTL_ZC                        0x0080  /* HPOUTL_ZC */
+#define WM8962_HPOUTL_ZC_MASK                   0x0080  /* HPOUTL_ZC */
+#define WM8962_HPOUTL_ZC_SHIFT                       7  /* HPOUTL_ZC */
+#define WM8962_HPOUTL_ZC_WIDTH                       1  /* HPOUTL_ZC */
+#define WM8962_HPOUTL_VOL_MASK                  0x007F  /* HPOUTL_VOL - [6:0] */
+#define WM8962_HPOUTL_VOL_SHIFT                      0  /* HPOUTL_VOL - [6:0] */
+#define WM8962_HPOUTL_VOL_WIDTH                      7  /* HPOUTL_VOL - [6:0] */
+
+/*
+ * R3 (0x03) - HPOUTR volume
+ */
+#define WM8962_HPOUT_VU                         0x0100  /* HPOUT_VU */
+#define WM8962_HPOUT_VU_MASK                    0x0100  /* HPOUT_VU */
+#define WM8962_HPOUT_VU_SHIFT                        8  /* HPOUT_VU */
+#define WM8962_HPOUT_VU_WIDTH                        1  /* HPOUT_VU */
+#define WM8962_HPOUTR_ZC                        0x0080  /* HPOUTR_ZC */
+#define WM8962_HPOUTR_ZC_MASK                   0x0080  /* HPOUTR_ZC */
+#define WM8962_HPOUTR_ZC_SHIFT                       7  /* HPOUTR_ZC */
+#define WM8962_HPOUTR_ZC_WIDTH                       1  /* HPOUTR_ZC */
+#define WM8962_HPOUTR_VOL_MASK                  0x007F  /* HPOUTR_VOL - [6:0] */
+#define WM8962_HPOUTR_VOL_SHIFT                      0  /* HPOUTR_VOL - [6:0] */
+#define WM8962_HPOUTR_VOL_WIDTH                      7  /* HPOUTR_VOL - [6:0] */
+
+/*
+ * R4 (0x04) - Clocking1
+ */
+#define WM8962_DSPCLK_DIV_MASK                  0x0600  /* DSPCLK_DIV - [10:9] */
+#define WM8962_DSPCLK_DIV_SHIFT                      9  /* DSPCLK_DIV - [10:9] */
+#define WM8962_DSPCLK_DIV_WIDTH                      2  /* DSPCLK_DIV - [10:9] */
+#define WM8962_ADCSYS_CLK_DIV_MASK              0x01C0  /* ADCSYS_CLK_DIV - [8:6] */
+#define WM8962_ADCSYS_CLK_DIV_SHIFT                  6  /* ADCSYS_CLK_DIV - [8:6] */
+#define WM8962_ADCSYS_CLK_DIV_WIDTH                  3  /* ADCSYS_CLK_DIV - [8:6] */
+#define WM8962_DACSYS_CLK_DIV_MASK              0x0038  /* DACSYS_CLK_DIV - [5:3] */
+#define WM8962_DACSYS_CLK_DIV_SHIFT                  3  /* DACSYS_CLK_DIV - [5:3] */
+#define WM8962_DACSYS_CLK_DIV_WIDTH                  3  /* DACSYS_CLK_DIV - [5:3] */
+#define WM8962_MCLKDIV_MASK                     0x0006  /* MCLKDIV - [2:1] */
+#define WM8962_MCLKDIV_SHIFT                         1  /* MCLKDIV - [2:1] */
+#define WM8962_MCLKDIV_WIDTH                         2  /* MCLKDIV - [2:1] */
+
+/*
+ * R5 (0x05) - ADC & DAC Control 1
+ */
+#define WM8962_ADCR_DAT_INV                     0x0040  /* ADCR_DAT_INV */
+#define WM8962_ADCR_DAT_INV_MASK                0x0040  /* ADCR_DAT_INV */
+#define WM8962_ADCR_DAT_INV_SHIFT                    6  /* ADCR_DAT_INV */
+#define WM8962_ADCR_DAT_INV_WIDTH                    1  /* ADCR_DAT_INV */
+#define WM8962_ADCL_DAT_INV                     0x0020  /* ADCL_DAT_INV */
+#define WM8962_ADCL_DAT_INV_MASK                0x0020  /* ADCL_DAT_INV */
+#define WM8962_ADCL_DAT_INV_SHIFT                    5  /* ADCL_DAT_INV */
+#define WM8962_ADCL_DAT_INV_WIDTH                    1  /* ADCL_DAT_INV */
+#define WM8962_DAC_MUTE_RAMP                    0x0010  /* DAC_MUTE_RAMP */
+#define WM8962_DAC_MUTE_RAMP_MASK               0x0010  /* DAC_MUTE_RAMP */
+#define WM8962_DAC_MUTE_RAMP_SHIFT                   4  /* DAC_MUTE_RAMP */
+#define WM8962_DAC_MUTE_RAMP_WIDTH                   1  /* DAC_MUTE_RAMP */
+#define WM8962_DAC_MUTE                         0x0008  /* DAC_MUTE */
+#define WM8962_DAC_MUTE_MASK                    0x0008  /* DAC_MUTE */
+#define WM8962_DAC_MUTE_SHIFT                        3  /* DAC_MUTE */
+#define WM8962_DAC_MUTE_WIDTH                        1  /* DAC_MUTE */
+#define WM8962_DAC_DEEMP_MASK                   0x0006  /* DAC_DEEMP - [2:1] */
+#define WM8962_DAC_DEEMP_SHIFT                       1  /* DAC_DEEMP - [2:1] */
+#define WM8962_DAC_DEEMP_WIDTH                       2  /* DAC_DEEMP - [2:1] */
+#define WM8962_ADC_HPF_DIS                      0x0001  /* ADC_HPF_DIS */
+#define WM8962_ADC_HPF_DIS_MASK                 0x0001  /* ADC_HPF_DIS */
+#define WM8962_ADC_HPF_DIS_SHIFT                     0  /* ADC_HPF_DIS */
+#define WM8962_ADC_HPF_DIS_WIDTH                     1  /* ADC_HPF_DIS */
+
+/*
+ * R6 (0x06) - ADC & DAC Control 2
+ */
+#define WM8962_ADC_HPF_SR_MASK                  0x3000  /* ADC_HPF_SR - [13:12] */
+#define WM8962_ADC_HPF_SR_SHIFT                     12  /* ADC_HPF_SR - [13:12] */
+#define WM8962_ADC_HPF_SR_WIDTH                      2  /* ADC_HPF_SR - [13:12] */
+#define WM8962_ADC_HPF_MODE                     0x0400  /* ADC_HPF_MODE */
+#define WM8962_ADC_HPF_MODE_MASK                0x0400  /* ADC_HPF_MODE */
+#define WM8962_ADC_HPF_MODE_SHIFT                   10  /* ADC_HPF_MODE */
+#define WM8962_ADC_HPF_MODE_WIDTH                    1  /* ADC_HPF_MODE */
+#define WM8962_ADC_HPF_CUT_MASK                 0x0380  /* ADC_HPF_CUT - [9:7] */
+#define WM8962_ADC_HPF_CUT_SHIFT                     7  /* ADC_HPF_CUT - [9:7] */
+#define WM8962_ADC_HPF_CUT_WIDTH                     3  /* ADC_HPF_CUT - [9:7] */
+#define WM8962_DACR_DAT_INV                     0x0040  /* DACR_DAT_INV */
+#define WM8962_DACR_DAT_INV_MASK                0x0040  /* DACR_DAT_INV */
+#define WM8962_DACR_DAT_INV_SHIFT                    6  /* DACR_DAT_INV */
+#define WM8962_DACR_DAT_INV_WIDTH                    1  /* DACR_DAT_INV */
+#define WM8962_DACL_DAT_INV                     0x0020  /* DACL_DAT_INV */
+#define WM8962_DACL_DAT_INV_MASK                0x0020  /* DACL_DAT_INV */
+#define WM8962_DACL_DAT_INV_SHIFT                    5  /* DACL_DAT_INV */
+#define WM8962_DACL_DAT_INV_WIDTH                    1  /* DACL_DAT_INV */
+#define WM8962_DAC_UNMUTE_RAMP                  0x0008  /* DAC_UNMUTE_RAMP */
+#define WM8962_DAC_UNMUTE_RAMP_MASK             0x0008  /* DAC_UNMUTE_RAMP */
+#define WM8962_DAC_UNMUTE_RAMP_SHIFT                 3  /* DAC_UNMUTE_RAMP */
+#define WM8962_DAC_UNMUTE_RAMP_WIDTH                 1  /* DAC_UNMUTE_RAMP */
+#define WM8962_DAC_MUTERATE                     0x0004  /* DAC_MUTERATE */
+#define WM8962_DAC_MUTERATE_MASK                0x0004  /* DAC_MUTERATE */
+#define WM8962_DAC_MUTERATE_SHIFT                    2  /* DAC_MUTERATE */
+#define WM8962_DAC_MUTERATE_WIDTH                    1  /* DAC_MUTERATE */
+#define WM8962_DAC_HP                           0x0001  /* DAC_HP */
+#define WM8962_DAC_HP_MASK                      0x0001  /* DAC_HP */
+#define WM8962_DAC_HP_SHIFT                          0  /* DAC_HP */
+#define WM8962_DAC_HP_WIDTH                          1  /* DAC_HP */
+
+/*
+ * R7 (0x07) - Audio Interface 0
+ */
+#define WM8962_AIFDAC_TDM_MODE                  0x1000  /* AIFDAC_TDM_MODE */
+#define WM8962_AIFDAC_TDM_MODE_MASK             0x1000  /* AIFDAC_TDM_MODE */
+#define WM8962_AIFDAC_TDM_MODE_SHIFT                12  /* AIFDAC_TDM_MODE */
+#define WM8962_AIFDAC_TDM_MODE_WIDTH                 1  /* AIFDAC_TDM_MODE */
+#define WM8962_AIFDAC_TDM_SLOT                  0x0800  /* AIFDAC_TDM_SLOT */
+#define WM8962_AIFDAC_TDM_SLOT_MASK             0x0800  /* AIFDAC_TDM_SLOT */
+#define WM8962_AIFDAC_TDM_SLOT_SHIFT                11  /* AIFDAC_TDM_SLOT */
+#define WM8962_AIFDAC_TDM_SLOT_WIDTH                 1  /* AIFDAC_TDM_SLOT */
+#define WM8962_AIFADC_TDM_MODE                  0x0400  /* AIFADC_TDM_MODE */
+#define WM8962_AIFADC_TDM_MODE_MASK             0x0400  /* AIFADC_TDM_MODE */
+#define WM8962_AIFADC_TDM_MODE_SHIFT                10  /* AIFADC_TDM_MODE */
+#define WM8962_AIFADC_TDM_MODE_WIDTH                 1  /* AIFADC_TDM_MODE */
+#define WM8962_AIFADC_TDM_SLOT                  0x0200  /* AIFADC_TDM_SLOT */
+#define WM8962_AIFADC_TDM_SLOT_MASK             0x0200  /* AIFADC_TDM_SLOT */
+#define WM8962_AIFADC_TDM_SLOT_SHIFT                 9  /* AIFADC_TDM_SLOT */
+#define WM8962_AIFADC_TDM_SLOT_WIDTH                 1  /* AIFADC_TDM_SLOT */
+#define WM8962_ADC_LRSWAP                       0x0100  /* ADC_LRSWAP */
+#define WM8962_ADC_LRSWAP_MASK                  0x0100  /* ADC_LRSWAP */
+#define WM8962_ADC_LRSWAP_SHIFT                      8  /* ADC_LRSWAP */
+#define WM8962_ADC_LRSWAP_WIDTH                      1  /* ADC_LRSWAP */
+#define WM8962_BCLK_INV                         0x0080  /* BCLK_INV */
+#define WM8962_BCLK_INV_MASK                    0x0080  /* BCLK_INV */
+#define WM8962_BCLK_INV_SHIFT                        7  /* BCLK_INV */
+#define WM8962_BCLK_INV_WIDTH                        1  /* BCLK_INV */
+#define WM8962_MSTR                             0x0040  /* MSTR */
+#define WM8962_MSTR_MASK                        0x0040  /* MSTR */
+#define WM8962_MSTR_SHIFT                            6  /* MSTR */
+#define WM8962_MSTR_WIDTH                            1  /* MSTR */
+#define WM8962_DAC_LRSWAP                       0x0020  /* DAC_LRSWAP */
+#define WM8962_DAC_LRSWAP_MASK                  0x0020  /* DAC_LRSWAP */
+#define WM8962_DAC_LRSWAP_SHIFT                      5  /* DAC_LRSWAP */
+#define WM8962_DAC_LRSWAP_WIDTH                      1  /* DAC_LRSWAP */
+#define WM8962_LRCLK_INV                        0x0010  /* LRCLK_INV */
+#define WM8962_LRCLK_INV_MASK                   0x0010  /* LRCLK_INV */
+#define WM8962_LRCLK_INV_SHIFT                       4  /* LRCLK_INV */
+#define WM8962_LRCLK_INV_WIDTH                       1  /* LRCLK_INV */
+#define WM8962_WL_MASK                          0x000C  /* WL - [3:2] */
+#define WM8962_WL_SHIFT                              2  /* WL - [3:2] */
+#define WM8962_WL_WIDTH                              2  /* WL - [3:2] */
+#define WM8962_FMT_MASK                         0x0003  /* FMT - [1:0] */
+#define WM8962_FMT_SHIFT                             0  /* FMT - [1:0] */
+#define WM8962_FMT_WIDTH                             2  /* FMT - [1:0] */
+
+/*
+ * R8 (0x08) - Clocking2
+ */
+#define WM8962_CLKREG_OVD                       0x0800  /* CLKREG_OVD */
+#define WM8962_CLKREG_OVD_MASK                  0x0800  /* CLKREG_OVD */
+#define WM8962_CLKREG_OVD_SHIFT                     11  /* CLKREG_OVD */
+#define WM8962_CLKREG_OVD_WIDTH                      1  /* CLKREG_OVD */
+#define WM8962_SYSCLK_SRC_MASK                  0x0600  /* SYSCLK_SRC - [10:9] */
+#define WM8962_SYSCLK_SRC_SHIFT                      9  /* SYSCLK_SRC - [10:9] */
+#define WM8962_SYSCLK_SRC_WIDTH                      2  /* SYSCLK_SRC - [10:9] */
+#define WM8962_CLASSD_CLK_DIV_MASK              0x01C0  /* CLASSD_CLK_DIV - [8:6] */
+#define WM8962_CLASSD_CLK_DIV_SHIFT                  6  /* CLASSD_CLK_DIV - [8:6] */
+#define WM8962_CLASSD_CLK_DIV_WIDTH                  3  /* CLASSD_CLK_DIV - [8:6] */
+#define WM8962_SYSCLK_ENA                       0x0020  /* SYSCLK_ENA */
+#define WM8962_SYSCLK_ENA_MASK                  0x0020  /* SYSCLK_ENA */
+#define WM8962_SYSCLK_ENA_SHIFT                      5  /* SYSCLK_ENA */
+#define WM8962_SYSCLK_ENA_WIDTH                      1  /* SYSCLK_ENA */
+#define WM8962_BCLK_DIV_MASK                    0x000F  /* BCLK_DIV - [3:0] */
+#define WM8962_BCLK_DIV_SHIFT                        0  /* BCLK_DIV - [3:0] */
+#define WM8962_BCLK_DIV_WIDTH                        4  /* BCLK_DIV - [3:0] */
+
+/*
+ * R9 (0x09) - Audio Interface 1
+ */
+#define WM8962_AUTOMUTE_STS                     0x0800  /* AUTOMUTE_STS */
+#define WM8962_AUTOMUTE_STS_MASK                0x0800  /* AUTOMUTE_STS */
+#define WM8962_AUTOMUTE_STS_SHIFT                   11  /* AUTOMUTE_STS */
+#define WM8962_AUTOMUTE_STS_WIDTH                    1  /* AUTOMUTE_STS */
+#define WM8962_DAC_AUTOMUTE_SAMPLES_MASK        0x0300  /* DAC_AUTOMUTE_SAMPLES - [9:8] */
+#define WM8962_DAC_AUTOMUTE_SAMPLES_SHIFT            8  /* DAC_AUTOMUTE_SAMPLES - [9:8] */
+#define WM8962_DAC_AUTOMUTE_SAMPLES_WIDTH            2  /* DAC_AUTOMUTE_SAMPLES - [9:8] */
+#define WM8962_DAC_AUTOMUTE                     0x0080  /* DAC_AUTOMUTE */
+#define WM8962_DAC_AUTOMUTE_MASK                0x0080  /* DAC_AUTOMUTE */
+#define WM8962_DAC_AUTOMUTE_SHIFT                    7  /* DAC_AUTOMUTE */
+#define WM8962_DAC_AUTOMUTE_WIDTH                    1  /* DAC_AUTOMUTE */
+#define WM8962_DAC_COMP                         0x0010  /* DAC_COMP */
+#define WM8962_DAC_COMP_MASK                    0x0010  /* DAC_COMP */
+#define WM8962_DAC_COMP_SHIFT                        4  /* DAC_COMP */
+#define WM8962_DAC_COMP_WIDTH                        1  /* DAC_COMP */
+#define WM8962_DAC_COMPMODE                     0x0008  /* DAC_COMPMODE */
+#define WM8962_DAC_COMPMODE_MASK                0x0008  /* DAC_COMPMODE */
+#define WM8962_DAC_COMPMODE_SHIFT                    3  /* DAC_COMPMODE */
+#define WM8962_DAC_COMPMODE_WIDTH                    1  /* DAC_COMPMODE */
+#define WM8962_ADC_COMP                         0x0004  /* ADC_COMP */
+#define WM8962_ADC_COMP_MASK                    0x0004  /* ADC_COMP */
+#define WM8962_ADC_COMP_SHIFT                        2  /* ADC_COMP */
+#define WM8962_ADC_COMP_WIDTH                        1  /* ADC_COMP */
+#define WM8962_ADC_COMPMODE                     0x0002  /* ADC_COMPMODE */
+#define WM8962_ADC_COMPMODE_MASK                0x0002  /* ADC_COMPMODE */
+#define WM8962_ADC_COMPMODE_SHIFT                    1  /* ADC_COMPMODE */
+#define WM8962_ADC_COMPMODE_WIDTH                    1  /* ADC_COMPMODE */
+#define WM8962_LOOPBACK                         0x0001  /* LOOPBACK */
+#define WM8962_LOOPBACK_MASK                    0x0001  /* LOOPBACK */
+#define WM8962_LOOPBACK_SHIFT                        0  /* LOOPBACK */
+#define WM8962_LOOPBACK_WIDTH                        1  /* LOOPBACK */
+
+/*
+ * R10 (0x0A) - Left DAC volume
+ */
+#define WM8962_DAC_VU                           0x0100  /* DAC_VU */
+#define WM8962_DAC_VU_MASK                      0x0100  /* DAC_VU */
+#define WM8962_DAC_VU_SHIFT                          8  /* DAC_VU */
+#define WM8962_DAC_VU_WIDTH                          1  /* DAC_VU */
+#define WM8962_DACL_VOL_MASK                    0x00FF  /* DACL_VOL - [7:0] */
+#define WM8962_DACL_VOL_SHIFT                        0  /* DACL_VOL - [7:0] */
+#define WM8962_DACL_VOL_WIDTH                        8  /* DACL_VOL - [7:0] */
+
+/*
+ * R11 (0x0B) - Right DAC volume
+ */
+#define WM8962_DAC_VU                           0x0100  /* DAC_VU */
+#define WM8962_DAC_VU_MASK                      0x0100  /* DAC_VU */
+#define WM8962_DAC_VU_SHIFT                          8  /* DAC_VU */
+#define WM8962_DAC_VU_WIDTH                          1  /* DAC_VU */
+#define WM8962_DACR_VOL_MASK                    0x00FF  /* DACR_VOL - [7:0] */
+#define WM8962_DACR_VOL_SHIFT                        0  /* DACR_VOL - [7:0] */
+#define WM8962_DACR_VOL_WIDTH                        8  /* DACR_VOL - [7:0] */
+
+/*
+ * R14 (0x0E) - Audio Interface 2
+ */
+#define WM8962_AIF_RATE_MASK                    0x07FF  /* AIF_RATE - [10:0] */
+#define WM8962_AIF_RATE_SHIFT                        0  /* AIF_RATE - [10:0] */
+#define WM8962_AIF_RATE_WIDTH                       11  /* AIF_RATE - [10:0] */
+
+/*
+ * R15 (0x0F) - Software Reset
+ */
+#define WM8962_SW_RESET_MASK                    0xFFFF  /* SW_RESET - [15:0] */
+#define WM8962_SW_RESET_SHIFT                        0  /* SW_RESET - [15:0] */
+#define WM8962_SW_RESET_WIDTH                       16  /* SW_RESET - [15:0] */
+
+/*
+ * R17 (0x11) - ALC1
+ */
+#define WM8962_ALC_INACTIVE_ENA                 0x0400  /* ALC_INACTIVE_ENA */
+#define WM8962_ALC_INACTIVE_ENA_MASK            0x0400  /* ALC_INACTIVE_ENA */
+#define WM8962_ALC_INACTIVE_ENA_SHIFT               10  /* ALC_INACTIVE_ENA */
+#define WM8962_ALC_INACTIVE_ENA_WIDTH                1  /* ALC_INACTIVE_ENA */
+#define WM8962_ALC_LVL_MODE                     0x0200  /* ALC_LVL_MODE */
+#define WM8962_ALC_LVL_MODE_MASK                0x0200  /* ALC_LVL_MODE */
+#define WM8962_ALC_LVL_MODE_SHIFT                    9  /* ALC_LVL_MODE */
+#define WM8962_ALC_LVL_MODE_WIDTH                    1  /* ALC_LVL_MODE */
+#define WM8962_ALCL_ENA                         0x0100  /* ALCL_ENA */
+#define WM8962_ALCL_ENA_MASK                    0x0100  /* ALCL_ENA */
+#define WM8962_ALCL_ENA_SHIFT                        8  /* ALCL_ENA */
+#define WM8962_ALCL_ENA_WIDTH                        1  /* ALCL_ENA */
+#define WM8962_ALCR_ENA                         0x0080  /* ALCR_ENA */
+#define WM8962_ALCR_ENA_MASK                    0x0080  /* ALCR_ENA */
+#define WM8962_ALCR_ENA_SHIFT                        7  /* ALCR_ENA */
+#define WM8962_ALCR_ENA_WIDTH                        1  /* ALCR_ENA */
+#define WM8962_ALC_MAXGAIN_MASK                 0x0070  /* ALC_MAXGAIN - [6:4] */
+#define WM8962_ALC_MAXGAIN_SHIFT                     4  /* ALC_MAXGAIN - [6:4] */
+#define WM8962_ALC_MAXGAIN_WIDTH                     3  /* ALC_MAXGAIN - [6:4] */
+#define WM8962_ALC_LVL_MASK                     0x000F  /* ALC_LVL - [3:0] */
+#define WM8962_ALC_LVL_SHIFT                         0  /* ALC_LVL - [3:0] */
+#define WM8962_ALC_LVL_WIDTH                         4  /* ALC_LVL - [3:0] */
+
+/*
+ * R18 (0x12) - ALC2
+ */
+#define WM8962_ALC_LOCK_STS                     0x8000  /* ALC_LOCK_STS */
+#define WM8962_ALC_LOCK_STS_MASK                0x8000  /* ALC_LOCK_STS */
+#define WM8962_ALC_LOCK_STS_SHIFT                   15  /* ALC_LOCK_STS */
+#define WM8962_ALC_LOCK_STS_WIDTH                    1  /* ALC_LOCK_STS */
+#define WM8962_ALC_THRESH_STS                   0x4000  /* ALC_THRESH_STS */
+#define WM8962_ALC_THRESH_STS_MASK              0x4000  /* ALC_THRESH_STS */
+#define WM8962_ALC_THRESH_STS_SHIFT                 14  /* ALC_THRESH_STS */
+#define WM8962_ALC_THRESH_STS_WIDTH                  1  /* ALC_THRESH_STS */
+#define WM8962_ALC_SAT_STS                      0x2000  /* ALC_SAT_STS */
+#define WM8962_ALC_SAT_STS_MASK                 0x2000  /* ALC_SAT_STS */
+#define WM8962_ALC_SAT_STS_SHIFT                    13  /* ALC_SAT_STS */
+#define WM8962_ALC_SAT_STS_WIDTH                     1  /* ALC_SAT_STS */
+#define WM8962_ALC_PKOVR_STS                    0x1000  /* ALC_PKOVR_STS */
+#define WM8962_ALC_PKOVR_STS_MASK               0x1000  /* ALC_PKOVR_STS */
+#define WM8962_ALC_PKOVR_STS_SHIFT                  12  /* ALC_PKOVR_STS */
+#define WM8962_ALC_PKOVR_STS_WIDTH                   1  /* ALC_PKOVR_STS */
+#define WM8962_ALC_NGATE_STS                    0x0800  /* ALC_NGATE_STS */
+#define WM8962_ALC_NGATE_STS_MASK               0x0800  /* ALC_NGATE_STS */
+#define WM8962_ALC_NGATE_STS_SHIFT                  11  /* ALC_NGATE_STS */
+#define WM8962_ALC_NGATE_STS_WIDTH                   1  /* ALC_NGATE_STS */
+#define WM8962_ALC_ZC                           0x0080  /* ALC_ZC */
+#define WM8962_ALC_ZC_MASK                      0x0080  /* ALC_ZC */
+#define WM8962_ALC_ZC_SHIFT                          7  /* ALC_ZC */
+#define WM8962_ALC_ZC_WIDTH                          1  /* ALC_ZC */
+#define WM8962_ALC_MINGAIN_MASK                 0x0070  /* ALC_MINGAIN - [6:4] */
+#define WM8962_ALC_MINGAIN_SHIFT                     4  /* ALC_MINGAIN - [6:4] */
+#define WM8962_ALC_MINGAIN_WIDTH                     3  /* ALC_MINGAIN - [6:4] */
+#define WM8962_ALC_HLD_MASK                     0x000F  /* ALC_HLD - [3:0] */
+#define WM8962_ALC_HLD_SHIFT                         0  /* ALC_HLD - [3:0] */
+#define WM8962_ALC_HLD_WIDTH                         4  /* ALC_HLD - [3:0] */
+
+/*
+ * R19 (0x13) - ALC3
+ */
+#define WM8962_ALC_NGATE_GAIN_MASK              0x1C00  /* ALC_NGATE_GAIN - [12:10] */
+#define WM8962_ALC_NGATE_GAIN_SHIFT                 10  /* ALC_NGATE_GAIN - [12:10] */
+#define WM8962_ALC_NGATE_GAIN_WIDTH                  3  /* ALC_NGATE_GAIN - [12:10] */
+#define WM8962_ALC_MODE                         0x0100  /* ALC_MODE */
+#define WM8962_ALC_MODE_MASK                    0x0100  /* ALC_MODE */
+#define WM8962_ALC_MODE_SHIFT                        8  /* ALC_MODE */
+#define WM8962_ALC_MODE_WIDTH                        1  /* ALC_MODE */
+#define WM8962_ALC_DCY_MASK                     0x00F0  /* ALC_DCY - [7:4] */
+#define WM8962_ALC_DCY_SHIFT                         4  /* ALC_DCY - [7:4] */
+#define WM8962_ALC_DCY_WIDTH                         4  /* ALC_DCY - [7:4] */
+#define WM8962_ALC_ATK_MASK                     0x000F  /* ALC_ATK - [3:0] */
+#define WM8962_ALC_ATK_SHIFT                         0  /* ALC_ATK - [3:0] */
+#define WM8962_ALC_ATK_WIDTH                         4  /* ALC_ATK - [3:0] */
+
+/*
+ * R20 (0x14) - Noise Gate
+ */
+#define WM8962_ALC_NGATE_DCY_MASK               0xF000  /* ALC_NGATE_DCY - [15:12] */
+#define WM8962_ALC_NGATE_DCY_SHIFT                  12  /* ALC_NGATE_DCY - [15:12] */
+#define WM8962_ALC_NGATE_DCY_WIDTH                   4  /* ALC_NGATE_DCY - [15:12] */
+#define WM8962_ALC_NGATE_ATK_MASK               0x0F00  /* ALC_NGATE_ATK - [11:8] */
+#define WM8962_ALC_NGATE_ATK_SHIFT                   8  /* ALC_NGATE_ATK - [11:8] */
+#define WM8962_ALC_NGATE_ATK_WIDTH                   4  /* ALC_NGATE_ATK - [11:8] */
+#define WM8962_ALC_NGATE_THR_MASK               0x00F8  /* ALC_NGATE_THR - [7:3] */
+#define WM8962_ALC_NGATE_THR_SHIFT                   3  /* ALC_NGATE_THR - [7:3] */
+#define WM8962_ALC_NGATE_THR_WIDTH                   5  /* ALC_NGATE_THR - [7:3] */
+#define WM8962_ALC_NGATE_MODE_MASK              0x0006  /* ALC_NGATE_MODE - [2:1] */
+#define WM8962_ALC_NGATE_MODE_SHIFT                  1  /* ALC_NGATE_MODE - [2:1] */
+#define WM8962_ALC_NGATE_MODE_WIDTH                  2  /* ALC_NGATE_MODE - [2:1] */
+#define WM8962_ALC_NGATE_ENA                    0x0001  /* ALC_NGATE_ENA */
+#define WM8962_ALC_NGATE_ENA_MASK               0x0001  /* ALC_NGATE_ENA */
+#define WM8962_ALC_NGATE_ENA_SHIFT                   0  /* ALC_NGATE_ENA */
+#define WM8962_ALC_NGATE_ENA_WIDTH                   1  /* ALC_NGATE_ENA */
+
+/*
+ * R21 (0x15) - Left ADC volume
+ */
+#define WM8962_ADC_VU                           0x0100  /* ADC_VU */
+#define WM8962_ADC_VU_MASK                      0x0100  /* ADC_VU */
+#define WM8962_ADC_VU_SHIFT                          8  /* ADC_VU */
+#define WM8962_ADC_VU_WIDTH                          1  /* ADC_VU */
+#define WM8962_ADCL_VOL_MASK                    0x00FF  /* ADCL_VOL - [7:0] */
+#define WM8962_ADCL_VOL_SHIFT                        0  /* ADCL_VOL - [7:0] */
+#define WM8962_ADCL_VOL_WIDTH                        8  /* ADCL_VOL - [7:0] */
+
+/*
+ * R22 (0x16) - Right ADC volume
+ */
+#define WM8962_ADC_VU                           0x0100  /* ADC_VU */
+#define WM8962_ADC_VU_MASK                      0x0100  /* ADC_VU */
+#define WM8962_ADC_VU_SHIFT                          8  /* ADC_VU */
+#define WM8962_ADC_VU_WIDTH                          1  /* ADC_VU */
+#define WM8962_ADCR_VOL_MASK                    0x00FF  /* ADCR_VOL - [7:0] */
+#define WM8962_ADCR_VOL_SHIFT                        0  /* ADCR_VOL - [7:0] */
+#define WM8962_ADCR_VOL_WIDTH                        8  /* ADCR_VOL - [7:0] */
+
+/*
+ * R23 (0x17) - Additional control(1)
+ */
+#define WM8962_THERR_ACT                        0x0100  /* THERR_ACT */
+#define WM8962_THERR_ACT_MASK                   0x0100  /* THERR_ACT */
+#define WM8962_THERR_ACT_SHIFT                       8  /* THERR_ACT */
+#define WM8962_THERR_ACT_WIDTH                       1  /* THERR_ACT */
+#define WM8962_ADC_BIAS                         0x0040  /* ADC_BIAS */
+#define WM8962_ADC_BIAS_MASK                    0x0040  /* ADC_BIAS */
+#define WM8962_ADC_BIAS_SHIFT                        6  /* ADC_BIAS */
+#define WM8962_ADC_BIAS_WIDTH                        1  /* ADC_BIAS */
+#define WM8962_ADC_HP                           0x0020  /* ADC_HP */
+#define WM8962_ADC_HP_MASK                      0x0020  /* ADC_HP */
+#define WM8962_ADC_HP_SHIFT                          5  /* ADC_HP */
+#define WM8962_ADC_HP_WIDTH                          1  /* ADC_HP */
+#define WM8962_TOCLK_ENA                        0x0001  /* TOCLK_ENA */
+#define WM8962_TOCLK_ENA_MASK                   0x0001  /* TOCLK_ENA */
+#define WM8962_TOCLK_ENA_SHIFT                       0  /* TOCLK_ENA */
+#define WM8962_TOCLK_ENA_WIDTH                       1  /* TOCLK_ENA */
+
+/*
+ * R24 (0x18) - Additional control(2)
+ */
+#define WM8962_AIF_TRI                          0x0008  /* AIF_TRI */
+#define WM8962_AIF_TRI_MASK                     0x0008  /* AIF_TRI */
+#define WM8962_AIF_TRI_SHIFT                         3  /* AIF_TRI */
+#define WM8962_AIF_TRI_WIDTH                         1  /* AIF_TRI */
+
+/*
+ * R25 (0x19) - Pwr Mgmt (1)
+ */
+#define WM8962_DMIC_ENA                         0x0400  /* DMIC_ENA */
+#define WM8962_DMIC_ENA_MASK                    0x0400  /* DMIC_ENA */
+#define WM8962_DMIC_ENA_SHIFT                       10  /* DMIC_ENA */
+#define WM8962_DMIC_ENA_WIDTH                        1  /* DMIC_ENA */
+#define WM8962_OPCLK_ENA                        0x0200  /* OPCLK_ENA */
+#define WM8962_OPCLK_ENA_MASK                   0x0200  /* OPCLK_ENA */
+#define WM8962_OPCLK_ENA_SHIFT                       9  /* OPCLK_ENA */
+#define WM8962_OPCLK_ENA_WIDTH                       1  /* OPCLK_ENA */
+#define WM8962_VMID_SEL_MASK                    0x0180  /* VMID_SEL - [8:7] */
+#define WM8962_VMID_SEL_SHIFT                        7  /* VMID_SEL - [8:7] */
+#define WM8962_VMID_SEL_WIDTH                        2  /* VMID_SEL - [8:7] */
+#define WM8962_BIAS_ENA                         0x0040  /* BIAS_ENA */
+#define WM8962_BIAS_ENA_MASK                    0x0040  /* BIAS_ENA */
+#define WM8962_BIAS_ENA_SHIFT                        6  /* BIAS_ENA */
+#define WM8962_BIAS_ENA_WIDTH                        1  /* BIAS_ENA */
+#define WM8962_INL_ENA                          0x0020  /* INL_ENA */
+#define WM8962_INL_ENA_MASK                     0x0020  /* INL_ENA */
+#define WM8962_INL_ENA_SHIFT                         5  /* INL_ENA */
+#define WM8962_INL_ENA_WIDTH                         1  /* INL_ENA */
+#define WM8962_INR_ENA                          0x0010  /* INR_ENA */
+#define WM8962_INR_ENA_MASK                     0x0010  /* INR_ENA */
+#define WM8962_INR_ENA_SHIFT                         4  /* INR_ENA */
+#define WM8962_INR_ENA_WIDTH                         1  /* INR_ENA */
+#define WM8962_ADCL_ENA                         0x0008  /* ADCL_ENA */
+#define WM8962_ADCL_ENA_MASK                    0x0008  /* ADCL_ENA */
+#define WM8962_ADCL_ENA_SHIFT                        3  /* ADCL_ENA */
+#define WM8962_ADCL_ENA_WIDTH                        1  /* ADCL_ENA */
+#define WM8962_ADCR_ENA                         0x0004  /* ADCR_ENA */
+#define WM8962_ADCR_ENA_MASK                    0x0004  /* ADCR_ENA */
+#define WM8962_ADCR_ENA_SHIFT                        2  /* ADCR_ENA */
+#define WM8962_ADCR_ENA_WIDTH                        1  /* ADCR_ENA */
+#define WM8962_MICBIAS_ENA                      0x0002  /* MICBIAS_ENA */
+#define WM8962_MICBIAS_ENA_MASK                 0x0002  /* MICBIAS_ENA */
+#define WM8962_MICBIAS_ENA_SHIFT                     1  /* MICBIAS_ENA */
+#define WM8962_MICBIAS_ENA_WIDTH                     1  /* MICBIAS_ENA */
+
+/*
+ * R26 (0x1A) - Pwr Mgmt (2)
+ */
+#define WM8962_DACL_ENA                         0x0100  /* DACL_ENA */
+#define WM8962_DACL_ENA_MASK                    0x0100  /* DACL_ENA */
+#define WM8962_DACL_ENA_SHIFT                        8  /* DACL_ENA */
+#define WM8962_DACL_ENA_WIDTH                        1  /* DACL_ENA */
+#define WM8962_DACR_ENA                         0x0080  /* DACR_ENA */
+#define WM8962_DACR_ENA_MASK                    0x0080  /* DACR_ENA */
+#define WM8962_DACR_ENA_SHIFT                        7  /* DACR_ENA */
+#define WM8962_DACR_ENA_WIDTH                        1  /* DACR_ENA */
+#define WM8962_HPOUTL_PGA_ENA                   0x0040  /* HPOUTL_PGA_ENA */
+#define WM8962_HPOUTL_PGA_ENA_MASK              0x0040  /* HPOUTL_PGA_ENA */
+#define WM8962_HPOUTL_PGA_ENA_SHIFT                  6  /* HPOUTL_PGA_ENA */
+#define WM8962_HPOUTL_PGA_ENA_WIDTH                  1  /* HPOUTL_PGA_ENA */
+#define WM8962_HPOUTR_PGA_ENA                   0x0020  /* HPOUTR_PGA_ENA */
+#define WM8962_HPOUTR_PGA_ENA_MASK              0x0020  /* HPOUTR_PGA_ENA */
+#define WM8962_HPOUTR_PGA_ENA_SHIFT                  5  /* HPOUTR_PGA_ENA */
+#define WM8962_HPOUTR_PGA_ENA_WIDTH                  1  /* HPOUTR_PGA_ENA */
+#define WM8962_SPKOUTL_PGA_ENA                  0x0010  /* SPKOUTL_PGA_ENA */
+#define WM8962_SPKOUTL_PGA_ENA_MASK             0x0010  /* SPKOUTL_PGA_ENA */
+#define WM8962_SPKOUTL_PGA_ENA_SHIFT                 4  /* SPKOUTL_PGA_ENA */
+#define WM8962_SPKOUTL_PGA_ENA_WIDTH                 1  /* SPKOUTL_PGA_ENA */
+#define WM8962_SPKOUTR_PGA_ENA                  0x0008  /* SPKOUTR_PGA_ENA */
+#define WM8962_SPKOUTR_PGA_ENA_MASK             0x0008  /* SPKOUTR_PGA_ENA */
+#define WM8962_SPKOUTR_PGA_ENA_SHIFT                 3  /* SPKOUTR_PGA_ENA */
+#define WM8962_SPKOUTR_PGA_ENA_WIDTH                 1  /* SPKOUTR_PGA_ENA */
+#define WM8962_HPOUTL_PGA_MUTE                  0x0002  /* HPOUTL_PGA_MUTE */
+#define WM8962_HPOUTL_PGA_MUTE_MASK             0x0002  /* HPOUTL_PGA_MUTE */
+#define WM8962_HPOUTL_PGA_MUTE_SHIFT                 1  /* HPOUTL_PGA_MUTE */
+#define WM8962_HPOUTL_PGA_MUTE_WIDTH                 1  /* HPOUTL_PGA_MUTE */
+#define WM8962_HPOUTR_PGA_MUTE                  0x0001  /* HPOUTR_PGA_MUTE */
+#define WM8962_HPOUTR_PGA_MUTE_MASK             0x0001  /* HPOUTR_PGA_MUTE */
+#define WM8962_HPOUTR_PGA_MUTE_SHIFT                 0  /* HPOUTR_PGA_MUTE */
+#define WM8962_HPOUTR_PGA_MUTE_WIDTH                 1  /* HPOUTR_PGA_MUTE */
+
+/*
+ * R27 (0x1B) - Additional Control (3)
+ */
+#define WM8962_SAMPLE_RATE_INT_MODE             0x0010  /* SAMPLE_RATE_INT_MODE */
+#define WM8962_SAMPLE_RATE_INT_MODE_MASK        0x0010  /* SAMPLE_RATE_INT_MODE */
+#define WM8962_SAMPLE_RATE_INT_MODE_SHIFT            4  /* SAMPLE_RATE_INT_MODE */
+#define WM8962_SAMPLE_RATE_INT_MODE_WIDTH            1  /* SAMPLE_RATE_INT_MODE */
+#define WM8962_SAMPLE_RATE_MASK                 0x0007  /* SAMPLE_RATE - [2:0] */
+#define WM8962_SAMPLE_RATE_SHIFT                     0  /* SAMPLE_RATE - [2:0] */
+#define WM8962_SAMPLE_RATE_WIDTH                     3  /* SAMPLE_RATE - [2:0] */
+
+/*
+ * R28 (0x1C) - Anti-pop
+ */
+#define WM8962_STARTUP_BIAS_ENA                 0x0010  /* STARTUP_BIAS_ENA */
+#define WM8962_STARTUP_BIAS_ENA_MASK            0x0010  /* STARTUP_BIAS_ENA */
+#define WM8962_STARTUP_BIAS_ENA_SHIFT                4  /* STARTUP_BIAS_ENA */
+#define WM8962_STARTUP_BIAS_ENA_WIDTH                1  /* STARTUP_BIAS_ENA */
+#define WM8962_VMID_BUF_ENA                     0x0008  /* VMID_BUF_ENA */
+#define WM8962_VMID_BUF_ENA_MASK                0x0008  /* VMID_BUF_ENA */
+#define WM8962_VMID_BUF_ENA_SHIFT                    3  /* VMID_BUF_ENA */
+#define WM8962_VMID_BUF_ENA_WIDTH                    1  /* VMID_BUF_ENA */
+#define WM8962_VMID_RAMP                        0x0004  /* VMID_RAMP */
+#define WM8962_VMID_RAMP_MASK                   0x0004  /* VMID_RAMP */
+#define WM8962_VMID_RAMP_SHIFT                       2  /* VMID_RAMP */
+#define WM8962_VMID_RAMP_WIDTH                       1  /* VMID_RAMP */
+
+/*
+ * R30 (0x1E) - Clocking 3
+ */
+#define WM8962_DBCLK_DIV_MASK                   0xE000  /* DBCLK_DIV - [15:13] */
+#define WM8962_DBCLK_DIV_SHIFT                      13  /* DBCLK_DIV - [15:13] */
+#define WM8962_DBCLK_DIV_WIDTH                       3  /* DBCLK_DIV - [15:13] */
+#define WM8962_OPCLK_DIV_MASK                   0x1C00  /* OPCLK_DIV - [12:10] */
+#define WM8962_OPCLK_DIV_SHIFT                      10  /* OPCLK_DIV - [12:10] */
+#define WM8962_OPCLK_DIV_WIDTH                       3  /* OPCLK_DIV - [12:10] */
+#define WM8962_TOCLK_DIV_MASK                   0x0380  /* TOCLK_DIV - [9:7] */
+#define WM8962_TOCLK_DIV_SHIFT                       7  /* TOCLK_DIV - [9:7] */
+#define WM8962_TOCLK_DIV_WIDTH                       3  /* TOCLK_DIV - [9:7] */
+#define WM8962_F256KCLK_DIV_MASK                0x007E  /* F256KCLK_DIV - [6:1] */
+#define WM8962_F256KCLK_DIV_SHIFT                    1  /* F256KCLK_DIV - [6:1] */
+#define WM8962_F256KCLK_DIV_WIDTH                    6  /* F256KCLK_DIV - [6:1] */
+
+/*
+ * R31 (0x1F) - Input mixer control (1)
+ */
+#define WM8962_MIXINL_MUTE                      0x0008  /* MIXINL_MUTE */
+#define WM8962_MIXINL_MUTE_MASK                 0x0008  /* MIXINL_MUTE */
+#define WM8962_MIXINL_MUTE_SHIFT                     3  /* MIXINL_MUTE */
+#define WM8962_MIXINL_MUTE_WIDTH                     1  /* MIXINL_MUTE */
+#define WM8962_MIXINR_MUTE                      0x0004  /* MIXINR_MUTE */
+#define WM8962_MIXINR_MUTE_MASK                 0x0004  /* MIXINR_MUTE */
+#define WM8962_MIXINR_MUTE_SHIFT                     2  /* MIXINR_MUTE */
+#define WM8962_MIXINR_MUTE_WIDTH                     1  /* MIXINR_MUTE */
+#define WM8962_MIXINL_ENA                       0x0002  /* MIXINL_ENA */
+#define WM8962_MIXINL_ENA_MASK                  0x0002  /* MIXINL_ENA */
+#define WM8962_MIXINL_ENA_SHIFT                      1  /* MIXINL_ENA */
+#define WM8962_MIXINL_ENA_WIDTH                      1  /* MIXINL_ENA */
+#define WM8962_MIXINR_ENA                       0x0001  /* MIXINR_ENA */
+#define WM8962_MIXINR_ENA_MASK                  0x0001  /* MIXINR_ENA */
+#define WM8962_MIXINR_ENA_SHIFT                      0  /* MIXINR_ENA */
+#define WM8962_MIXINR_ENA_WIDTH                      1  /* MIXINR_ENA */
+
+/*
+ * R32 (0x20) - Left input mixer volume
+ */
+#define WM8962_IN2L_MIXINL_VOL_MASK             0x01C0  /* IN2L_MIXINL_VOL - [8:6] */
+#define WM8962_IN2L_MIXINL_VOL_SHIFT                 6  /* IN2L_MIXINL_VOL - [8:6] */
+#define WM8962_IN2L_MIXINL_VOL_WIDTH                 3  /* IN2L_MIXINL_VOL - [8:6] */
+#define WM8962_INPGAL_MIXINL_VOL_MASK           0x0038  /* INPGAL_MIXINL_VOL - [5:3] */
+#define WM8962_INPGAL_MIXINL_VOL_SHIFT               3  /* INPGAL_MIXINL_VOL - [5:3] */
+#define WM8962_INPGAL_MIXINL_VOL_WIDTH               3  /* INPGAL_MIXINL_VOL - [5:3] */
+#define WM8962_IN3L_MIXINL_VOL_MASK             0x0007  /* IN3L_MIXINL_VOL - [2:0] */
+#define WM8962_IN3L_MIXINL_VOL_SHIFT                 0  /* IN3L_MIXINL_VOL - [2:0] */
+#define WM8962_IN3L_MIXINL_VOL_WIDTH                 3  /* IN3L_MIXINL_VOL - [2:0] */
+
+/*
+ * R33 (0x21) - Right input mixer volume
+ */
+#define WM8962_IN2R_MIXINR_VOL_MASK             0x01C0  /* IN2R_MIXINR_VOL - [8:6] */
+#define WM8962_IN2R_MIXINR_VOL_SHIFT                 6  /* IN2R_MIXINR_VOL - [8:6] */
+#define WM8962_IN2R_MIXINR_VOL_WIDTH                 3  /* IN2R_MIXINR_VOL - [8:6] */
+#define WM8962_INPGAR_MIXINR_VOL_MASK           0x0038  /* INPGAR_MIXINR_VOL - [5:3] */
+#define WM8962_INPGAR_MIXINR_VOL_SHIFT               3  /* INPGAR_MIXINR_VOL - [5:3] */
+#define WM8962_INPGAR_MIXINR_VOL_WIDTH               3  /* INPGAR_MIXINR_VOL - [5:3] */
+#define WM8962_IN3R_MIXINR_VOL_MASK             0x0007  /* IN3R_MIXINR_VOL - [2:0] */
+#define WM8962_IN3R_MIXINR_VOL_SHIFT                 0  /* IN3R_MIXINR_VOL - [2:0] */
+#define WM8962_IN3R_MIXINR_VOL_WIDTH                 3  /* IN3R_MIXINR_VOL - [2:0] */
+
+/*
+ * R34 (0x22) - Input mixer control (2)
+ */
+#define WM8962_IN2L_TO_MIXINL                   0x0020  /* IN2L_TO_MIXINL */
+#define WM8962_IN2L_TO_MIXINL_MASK              0x0020  /* IN2L_TO_MIXINL */
+#define WM8962_IN2L_TO_MIXINL_SHIFT                  5  /* IN2L_TO_MIXINL */
+#define WM8962_IN2L_TO_MIXINL_WIDTH                  1  /* IN2L_TO_MIXINL */
+#define WM8962_IN3L_TO_MIXINL                   0x0010  /* IN3L_TO_MIXINL */
+#define WM8962_IN3L_TO_MIXINL_MASK              0x0010  /* IN3L_TO_MIXINL */
+#define WM8962_IN3L_TO_MIXINL_SHIFT                  4  /* IN3L_TO_MIXINL */
+#define WM8962_IN3L_TO_MIXINL_WIDTH                  1  /* IN3L_TO_MIXINL */
+#define WM8962_INPGAL_TO_MIXINL                 0x0008  /* INPGAL_TO_MIXINL */
+#define WM8962_INPGAL_TO_MIXINL_MASK            0x0008  /* INPGAL_TO_MIXINL */
+#define WM8962_INPGAL_TO_MIXINL_SHIFT                3  /* INPGAL_TO_MIXINL */
+#define WM8962_INPGAL_TO_MIXINL_WIDTH                1  /* INPGAL_TO_MIXINL */
+#define WM8962_IN2R_TO_MIXINR                   0x0004  /* IN2R_TO_MIXINR */
+#define WM8962_IN2R_TO_MIXINR_MASK              0x0004  /* IN2R_TO_MIXINR */
+#define WM8962_IN2R_TO_MIXINR_SHIFT                  2  /* IN2R_TO_MIXINR */
+#define WM8962_IN2R_TO_MIXINR_WIDTH                  1  /* IN2R_TO_MIXINR */
+#define WM8962_IN3R_TO_MIXINR                   0x0002  /* IN3R_TO_MIXINR */
+#define WM8962_IN3R_TO_MIXINR_MASK              0x0002  /* IN3R_TO_MIXINR */
+#define WM8962_IN3R_TO_MIXINR_SHIFT                  1  /* IN3R_TO_MIXINR */
+#define WM8962_IN3R_TO_MIXINR_WIDTH                  1  /* IN3R_TO_MIXINR */
+#define WM8962_INPGAR_TO_MIXINR                 0x0001  /* INPGAR_TO_MIXINR */
+#define WM8962_INPGAR_TO_MIXINR_MASK            0x0001  /* INPGAR_TO_MIXINR */
+#define WM8962_INPGAR_TO_MIXINR_SHIFT                0  /* INPGAR_TO_MIXINR */
+#define WM8962_INPGAR_TO_MIXINR_WIDTH                1  /* INPGAR_TO_MIXINR */
+
+/*
+ * R35 (0x23) - Input bias control
+ */
+#define WM8962_MIXIN_BIAS_MASK                  0x0038  /* MIXIN_BIAS - [5:3] */
+#define WM8962_MIXIN_BIAS_SHIFT                      3  /* MIXIN_BIAS - [5:3] */
+#define WM8962_MIXIN_BIAS_WIDTH                      3  /* MIXIN_BIAS - [5:3] */
+#define WM8962_INPGA_BIAS_MASK                  0x0007  /* INPGA_BIAS - [2:0] */
+#define WM8962_INPGA_BIAS_SHIFT                      0  /* INPGA_BIAS - [2:0] */
+#define WM8962_INPGA_BIAS_WIDTH                      3  /* INPGA_BIAS - [2:0] */
+
+/*
+ * R37 (0x25) - Left input PGA control
+ */
+#define WM8962_INPGAL_ENA                       0x0010  /* INPGAL_ENA */
+#define WM8962_INPGAL_ENA_MASK                  0x0010  /* INPGAL_ENA */
+#define WM8962_INPGAL_ENA_SHIFT                      4  /* INPGAL_ENA */
+#define WM8962_INPGAL_ENA_WIDTH                      1  /* INPGAL_ENA */
+#define WM8962_IN1L_TO_INPGAL                   0x0008  /* IN1L_TO_INPGAL */
+#define WM8962_IN1L_TO_INPGAL_MASK              0x0008  /* IN1L_TO_INPGAL */
+#define WM8962_IN1L_TO_INPGAL_SHIFT                  3  /* IN1L_TO_INPGAL */
+#define WM8962_IN1L_TO_INPGAL_WIDTH                  1  /* IN1L_TO_INPGAL */
+#define WM8962_IN2L_TO_INPGAL                   0x0004  /* IN2L_TO_INPGAL */
+#define WM8962_IN2L_TO_INPGAL_MASK              0x0004  /* IN2L_TO_INPGAL */
+#define WM8962_IN2L_TO_INPGAL_SHIFT                  2  /* IN2L_TO_INPGAL */
+#define WM8962_IN2L_TO_INPGAL_WIDTH                  1  /* IN2L_TO_INPGAL */
+#define WM8962_IN3L_TO_INPGAL                   0x0002  /* IN3L_TO_INPGAL */
+#define WM8962_IN3L_TO_INPGAL_MASK              0x0002  /* IN3L_TO_INPGAL */
+#define WM8962_IN3L_TO_INPGAL_SHIFT                  1  /* IN3L_TO_INPGAL */
+#define WM8962_IN3L_TO_INPGAL_WIDTH                  1  /* IN3L_TO_INPGAL */
+#define WM8962_IN4L_TO_INPGAL                   0x0001  /* IN4L_TO_INPGAL */
+#define WM8962_IN4L_TO_INPGAL_MASK              0x0001  /* IN4L_TO_INPGAL */
+#define WM8962_IN4L_TO_INPGAL_SHIFT                  0  /* IN4L_TO_INPGAL */
+#define WM8962_IN4L_TO_INPGAL_WIDTH                  1  /* IN4L_TO_INPGAL */
+
+/*
+ * R38 (0x26) - Right input PGA control
+ */
+#define WM8962_INPGAR_ENA                       0x0010  /* INPGAR_ENA */
+#define WM8962_INPGAR_ENA_MASK                  0x0010  /* INPGAR_ENA */
+#define WM8962_INPGAR_ENA_SHIFT                      4  /* INPGAR_ENA */
+#define WM8962_INPGAR_ENA_WIDTH                      1  /* INPGAR_ENA */
+#define WM8962_IN1R_TO_INPGAR                   0x0008  /* IN1R_TO_INPGAR */
+#define WM8962_IN1R_TO_INPGAR_MASK              0x0008  /* IN1R_TO_INPGAR */
+#define WM8962_IN1R_TO_INPGAR_SHIFT                  3  /* IN1R_TO_INPGAR */
+#define WM8962_IN1R_TO_INPGAR_WIDTH                  1  /* IN1R_TO_INPGAR */
+#define WM8962_IN2R_TO_INPGAR                   0x0004  /* IN2R_TO_INPGAR */
+#define WM8962_IN2R_TO_INPGAR_MASK              0x0004  /* IN2R_TO_INPGAR */
+#define WM8962_IN2R_TO_INPGAR_SHIFT                  2  /* IN2R_TO_INPGAR */
+#define WM8962_IN2R_TO_INPGAR_WIDTH                  1  /* IN2R_TO_INPGAR */
+#define WM8962_IN3R_TO_INPGAR                   0x0002  /* IN3R_TO_INPGAR */
+#define WM8962_IN3R_TO_INPGAR_MASK              0x0002  /* IN3R_TO_INPGAR */
+#define WM8962_IN3R_TO_INPGAR_SHIFT                  1  /* IN3R_TO_INPGAR */
+#define WM8962_IN3R_TO_INPGAR_WIDTH                  1  /* IN3R_TO_INPGAR */
+#define WM8962_IN4R_TO_INPGAR                   0x0001  /* IN4R_TO_INPGAR */
+#define WM8962_IN4R_TO_INPGAR_MASK              0x0001  /* IN4R_TO_INPGAR */
+#define WM8962_IN4R_TO_INPGAR_SHIFT                  0  /* IN4R_TO_INPGAR */
+#define WM8962_IN4R_TO_INPGAR_WIDTH                  1  /* IN4R_TO_INPGAR */
+
+/*
+ * R40 (0x28) - SPKOUTL volume
+ */
+#define WM8962_SPKOUT_VU                        0x0100  /* SPKOUT_VU */
+#define WM8962_SPKOUT_VU_MASK                   0x0100  /* SPKOUT_VU */
+#define WM8962_SPKOUT_VU_SHIFT                       8  /* SPKOUT_VU */
+#define WM8962_SPKOUT_VU_WIDTH                       1  /* SPKOUT_VU */
+#define WM8962_SPKOUTL_ZC                       0x0080  /* SPKOUTL_ZC */
+#define WM8962_SPKOUTL_ZC_MASK                  0x0080  /* SPKOUTL_ZC */
+#define WM8962_SPKOUTL_ZC_SHIFT                      7  /* SPKOUTL_ZC */
+#define WM8962_SPKOUTL_ZC_WIDTH                      1  /* SPKOUTL_ZC */
+#define WM8962_SPKOUTL_VOL_MASK                 0x007F  /* SPKOUTL_VOL - [6:0] */
+#define WM8962_SPKOUTL_VOL_SHIFT                     0  /* SPKOUTL_VOL - [6:0] */
+#define WM8962_SPKOUTL_VOL_WIDTH                     7  /* SPKOUTL_VOL - [6:0] */
+
+/*
+ * R41 (0x29) - SPKOUTR volume
+ */
+#define WM8962_SPKOUTR_ZC                       0x0080  /* SPKOUTR_ZC */
+#define WM8962_SPKOUTR_ZC_MASK                  0x0080  /* SPKOUTR_ZC */
+#define WM8962_SPKOUTR_ZC_SHIFT                      7  /* SPKOUTR_ZC */
+#define WM8962_SPKOUTR_ZC_WIDTH                      1  /* SPKOUTR_ZC */
+#define WM8962_SPKOUTR_VOL_MASK                 0x007F  /* SPKOUTR_VOL - [6:0] */
+#define WM8962_SPKOUTR_VOL_SHIFT                     0  /* SPKOUTR_VOL - [6:0] */
+#define WM8962_SPKOUTR_VOL_WIDTH                     7  /* SPKOUTR_VOL - [6:0] */
+
+/*
+ * R47 (0x2F) - Thermal Shutdown Status
+ */
+#define WM8962_TEMP_ERR_HP                      0x0008  /* TEMP_ERR_HP */
+#define WM8962_TEMP_ERR_HP_MASK                 0x0008  /* TEMP_ERR_HP */
+#define WM8962_TEMP_ERR_HP_SHIFT                     3  /* TEMP_ERR_HP */
+#define WM8962_TEMP_ERR_HP_WIDTH                     1  /* TEMP_ERR_HP */
+#define WM8962_TEMP_WARN_HP                     0x0004  /* TEMP_WARN_HP */
+#define WM8962_TEMP_WARN_HP_MASK                0x0004  /* TEMP_WARN_HP */
+#define WM8962_TEMP_WARN_HP_SHIFT                    2  /* TEMP_WARN_HP */
+#define WM8962_TEMP_WARN_HP_WIDTH                    1  /* TEMP_WARN_HP */
+#define WM8962_TEMP_ERR_SPK                     0x0002  /* TEMP_ERR_SPK */
+#define WM8962_TEMP_ERR_SPK_MASK                0x0002  /* TEMP_ERR_SPK */
+#define WM8962_TEMP_ERR_SPK_SHIFT                    1  /* TEMP_ERR_SPK */
+#define WM8962_TEMP_ERR_SPK_WIDTH                    1  /* TEMP_ERR_SPK */
+#define WM8962_TEMP_WARN_SPK                    0x0001  /* TEMP_WARN_SPK */
+#define WM8962_TEMP_WARN_SPK_MASK               0x0001  /* TEMP_WARN_SPK */
+#define WM8962_TEMP_WARN_SPK_SHIFT                   0  /* TEMP_WARN_SPK */
+#define WM8962_TEMP_WARN_SPK_WIDTH                   1  /* TEMP_WARN_SPK */
+
+/*
+ * R48 (0x30) - Additional Control (4)
+ */
+#define WM8962_MICDET_THR_MASK                  0x7000  /* MICDET_THR - [14:12] */
+#define WM8962_MICDET_THR_SHIFT                     12  /* MICDET_THR - [14:12] */
+#define WM8962_MICDET_THR_WIDTH                      3  /* MICDET_THR - [14:12] */
+#define WM8962_MICSHORT_THR_MASK                0x0C00  /* MICSHORT_THR - [11:10] */
+#define WM8962_MICSHORT_THR_SHIFT                   10  /* MICSHORT_THR - [11:10] */
+#define WM8962_MICSHORT_THR_WIDTH                    2  /* MICSHORT_THR - [11:10] */
+#define WM8962_MICDET_ENA                       0x0200  /* MICDET_ENA */
+#define WM8962_MICDET_ENA_MASK                  0x0200  /* MICDET_ENA */
+#define WM8962_MICDET_ENA_SHIFT                      9  /* MICDET_ENA */
+#define WM8962_MICDET_ENA_WIDTH                      1  /* MICDET_ENA */
+#define WM8962_MICDET_STS                       0x0080  /* MICDET_STS */
+#define WM8962_MICDET_STS_MASK                  0x0080  /* MICDET_STS */
+#define WM8962_MICDET_STS_SHIFT                      7  /* MICDET_STS */
+#define WM8962_MICDET_STS_WIDTH                      1  /* MICDET_STS */
+#define WM8962_MICSHORT_STS                     0x0040  /* MICSHORT_STS */
+#define WM8962_MICSHORT_STS_MASK                0x0040  /* MICSHORT_STS */
+#define WM8962_MICSHORT_STS_SHIFT                    6  /* MICSHORT_STS */
+#define WM8962_MICSHORT_STS_WIDTH                    1  /* MICSHORT_STS */
+#define WM8962_TEMP_ENA_HP                      0x0004  /* TEMP_ENA_HP */
+#define WM8962_TEMP_ENA_HP_MASK                 0x0004  /* TEMP_ENA_HP */
+#define WM8962_TEMP_ENA_HP_SHIFT                     2  /* TEMP_ENA_HP */
+#define WM8962_TEMP_ENA_HP_WIDTH                     1  /* TEMP_ENA_HP */
+#define WM8962_TEMP_ENA_SPK                     0x0002  /* TEMP_ENA_SPK */
+#define WM8962_TEMP_ENA_SPK_MASK                0x0002  /* TEMP_ENA_SPK */
+#define WM8962_TEMP_ENA_SPK_SHIFT                    1  /* TEMP_ENA_SPK */
+#define WM8962_TEMP_ENA_SPK_WIDTH                    1  /* TEMP_ENA_SPK */
+#define WM8962_MICBIAS_LVL                      0x0001  /* MICBIAS_LVL */
+#define WM8962_MICBIAS_LVL_MASK                 0x0001  /* MICBIAS_LVL */
+#define WM8962_MICBIAS_LVL_SHIFT                     0  /* MICBIAS_LVL */
+#define WM8962_MICBIAS_LVL_WIDTH                     1  /* MICBIAS_LVL */
+
+/*
+ * R49 (0x31) - Class D Control 1
+ */
+#define WM8962_SPKOUTR_ENA                      0x0080  /* SPKOUTR_ENA */
+#define WM8962_SPKOUTR_ENA_MASK                 0x0080  /* SPKOUTR_ENA */
+#define WM8962_SPKOUTR_ENA_SHIFT                     7  /* SPKOUTR_ENA */
+#define WM8962_SPKOUTR_ENA_WIDTH                     1  /* SPKOUTR_ENA */
+#define WM8962_SPKOUTL_ENA                      0x0040  /* SPKOUTL_ENA */
+#define WM8962_SPKOUTL_ENA_MASK                 0x0040  /* SPKOUTL_ENA */
+#define WM8962_SPKOUTL_ENA_SHIFT                     6  /* SPKOUTL_ENA */
+#define WM8962_SPKOUTL_ENA_WIDTH                     1  /* SPKOUTL_ENA */
+#define WM8962_SPKOUTL_PGA_MUTE                 0x0002  /* SPKOUTL_PGA_MUTE */
+#define WM8962_SPKOUTL_PGA_MUTE_MASK            0x0002  /* SPKOUTL_PGA_MUTE */
+#define WM8962_SPKOUTL_PGA_MUTE_SHIFT                1  /* SPKOUTL_PGA_MUTE */
+#define WM8962_SPKOUTL_PGA_MUTE_WIDTH                1  /* SPKOUTL_PGA_MUTE */
+#define WM8962_SPKOUTR_PGA_MUTE                 0x0001  /* SPKOUTR_PGA_MUTE */
+#define WM8962_SPKOUTR_PGA_MUTE_MASK            0x0001  /* SPKOUTR_PGA_MUTE */
+#define WM8962_SPKOUTR_PGA_MUTE_SHIFT                0  /* SPKOUTR_PGA_MUTE */
+#define WM8962_SPKOUTR_PGA_MUTE_WIDTH                1  /* SPKOUTR_PGA_MUTE */
+
+/*
+ * R51 (0x33) - Class D Control 2
+ */
+#define WM8962_SPK_MONO                         0x0040  /* SPK_MONO */
+#define WM8962_SPK_MONO_MASK                    0x0040  /* SPK_MONO */
+#define WM8962_SPK_MONO_SHIFT                        6  /* SPK_MONO */
+#define WM8962_SPK_MONO_WIDTH                        1  /* SPK_MONO */
+#define WM8962_CLASSD_VOL_MASK                  0x0007  /* CLASSD_VOL - [2:0] */
+#define WM8962_CLASSD_VOL_SHIFT                      0  /* CLASSD_VOL - [2:0] */
+#define WM8962_CLASSD_VOL_WIDTH                      3  /* CLASSD_VOL - [2:0] */
+
+/*
+ * R56 (0x38) - Clocking 4
+ */
+#define WM8962_SYSCLK_RATE_MASK                 0x001E  /* SYSCLK_RATE - [4:1] */
+#define WM8962_SYSCLK_RATE_SHIFT                     1  /* SYSCLK_RATE - [4:1] */
+#define WM8962_SYSCLK_RATE_WIDTH                     4  /* SYSCLK_RATE - [4:1] */
+
+/*
+ * R57 (0x39) - DAC DSP Mixing (1)
+ */
+#define WM8962_DAC_MONOMIX                      0x0200  /* DAC_MONOMIX */
+#define WM8962_DAC_MONOMIX_MASK                 0x0200  /* DAC_MONOMIX */
+#define WM8962_DAC_MONOMIX_SHIFT                     9  /* DAC_MONOMIX */
+#define WM8962_DAC_MONOMIX_WIDTH                     1  /* DAC_MONOMIX */
+#define WM8962_ADCR_DAC_SVOL_MASK               0x00F0  /* ADCR_DAC_SVOL - [7:4] */
+#define WM8962_ADCR_DAC_SVOL_SHIFT                   4  /* ADCR_DAC_SVOL - [7:4] */
+#define WM8962_ADCR_DAC_SVOL_WIDTH                   4  /* ADCR_DAC_SVOL - [7:4] */
+#define WM8962_ADC_TO_DACR_MASK                 0x000C  /* ADC_TO_DACR - [3:2] */
+#define WM8962_ADC_TO_DACR_SHIFT                     2  /* ADC_TO_DACR - [3:2] */
+#define WM8962_ADC_TO_DACR_WIDTH                     2  /* ADC_TO_DACR - [3:2] */
+
+/*
+ * R58 (0x3A) - DAC DSP Mixing (2)
+ */
+#define WM8962_ADCL_DAC_SVOL_MASK               0x00F0  /* ADCL_DAC_SVOL - [7:4] */
+#define WM8962_ADCL_DAC_SVOL_SHIFT                   4  /* ADCL_DAC_SVOL - [7:4] */
+#define WM8962_ADCL_DAC_SVOL_WIDTH                   4  /* ADCL_DAC_SVOL - [7:4] */
+#define WM8962_ADC_TO_DACL_MASK                 0x000C  /* ADC_TO_DACL - [3:2] */
+#define WM8962_ADC_TO_DACL_SHIFT                     2  /* ADC_TO_DACL - [3:2] */
+#define WM8962_ADC_TO_DACL_WIDTH                     2  /* ADC_TO_DACL - [3:2] */
+
+/*
+ * R60 (0x3C) - DC Servo 0
+ */
+#define WM8962_INL_DCS_ENA                      0x0080  /* INL_DCS_ENA */
+#define WM8962_INL_DCS_ENA_MASK                 0x0080  /* INL_DCS_ENA */
+#define WM8962_INL_DCS_ENA_SHIFT                     7  /* INL_DCS_ENA */
+#define WM8962_INL_DCS_ENA_WIDTH                     1  /* INL_DCS_ENA */
+#define WM8962_INL_DCS_STARTUP                  0x0040  /* INL_DCS_STARTUP */
+#define WM8962_INL_DCS_STARTUP_MASK             0x0040  /* INL_DCS_STARTUP */
+#define WM8962_INL_DCS_STARTUP_SHIFT                 6  /* INL_DCS_STARTUP */
+#define WM8962_INL_DCS_STARTUP_WIDTH                 1  /* INL_DCS_STARTUP */
+#define WM8962_INR_DCS_ENA                      0x0008  /* INR_DCS_ENA */
+#define WM8962_INR_DCS_ENA_MASK                 0x0008  /* INR_DCS_ENA */
+#define WM8962_INR_DCS_ENA_SHIFT                     3  /* INR_DCS_ENA */
+#define WM8962_INR_DCS_ENA_WIDTH                     1  /* INR_DCS_ENA */
+#define WM8962_INR_DCS_STARTUP                  0x0004  /* INR_DCS_STARTUP */
+#define WM8962_INR_DCS_STARTUP_MASK             0x0004  /* INR_DCS_STARTUP */
+#define WM8962_INR_DCS_STARTUP_SHIFT                 2  /* INR_DCS_STARTUP */
+#define WM8962_INR_DCS_STARTUP_WIDTH                 1  /* INR_DCS_STARTUP */
+
+/*
+ * R61 (0x3D) - DC Servo 1
+ */
+#define WM8962_HP1L_DCS_ENA                     0x0080  /* HP1L_DCS_ENA */
+#define WM8962_HP1L_DCS_ENA_MASK                0x0080  /* HP1L_DCS_ENA */
+#define WM8962_HP1L_DCS_ENA_SHIFT                    7  /* HP1L_DCS_ENA */
+#define WM8962_HP1L_DCS_ENA_WIDTH                    1  /* HP1L_DCS_ENA */
+#define WM8962_HP1L_DCS_STARTUP                 0x0040  /* HP1L_DCS_STARTUP */
+#define WM8962_HP1L_DCS_STARTUP_MASK            0x0040  /* HP1L_DCS_STARTUP */
+#define WM8962_HP1L_DCS_STARTUP_SHIFT                6  /* HP1L_DCS_STARTUP */
+#define WM8962_HP1L_DCS_STARTUP_WIDTH                1  /* HP1L_DCS_STARTUP */
+#define WM8962_HP1L_DCS_SYNC                    0x0010  /* HP1L_DCS_SYNC */
+#define WM8962_HP1L_DCS_SYNC_MASK               0x0010  /* HP1L_DCS_SYNC */
+#define WM8962_HP1L_DCS_SYNC_SHIFT                   4  /* HP1L_DCS_SYNC */
+#define WM8962_HP1L_DCS_SYNC_WIDTH                   1  /* HP1L_DCS_SYNC */
+#define WM8962_HP1R_DCS_ENA                     0x0008  /* HP1R_DCS_ENA */
+#define WM8962_HP1R_DCS_ENA_MASK                0x0008  /* HP1R_DCS_ENA */
+#define WM8962_HP1R_DCS_ENA_SHIFT                    3  /* HP1R_DCS_ENA */
+#define WM8962_HP1R_DCS_ENA_WIDTH                    1  /* HP1R_DCS_ENA */
+#define WM8962_HP1R_DCS_STARTUP                 0x0004  /* HP1R_DCS_STARTUP */
+#define WM8962_HP1R_DCS_STARTUP_MASK            0x0004  /* HP1R_DCS_STARTUP */
+#define WM8962_HP1R_DCS_STARTUP_SHIFT                2  /* HP1R_DCS_STARTUP */
+#define WM8962_HP1R_DCS_STARTUP_WIDTH                1  /* HP1R_DCS_STARTUP */
+#define WM8962_HP1R_DCS_SYNC                    0x0001  /* HP1R_DCS_SYNC */
+#define WM8962_HP1R_DCS_SYNC_MASK               0x0001  /* HP1R_DCS_SYNC */
+#define WM8962_HP1R_DCS_SYNC_SHIFT                   0  /* HP1R_DCS_SYNC */
+#define WM8962_HP1R_DCS_SYNC_WIDTH                   1  /* HP1R_DCS_SYNC */
+
+/*
+ * R64 (0x40) - DC Servo 4
+ */
+#define WM8962_HP1_DCS_SYNC_STEPS_MASK          0x3F80  /* HP1_DCS_SYNC_STEPS - [13:7] */
+#define WM8962_HP1_DCS_SYNC_STEPS_SHIFT              7  /* HP1_DCS_SYNC_STEPS - [13:7] */
+#define WM8962_HP1_DCS_SYNC_STEPS_WIDTH              7  /* HP1_DCS_SYNC_STEPS - [13:7] */
+
+/*
+ * R66 (0x42) - DC Servo 6
+ */
+#define WM8962_DCS_STARTUP_DONE_INL             0x0400  /* DCS_STARTUP_DONE_INL */
+#define WM8962_DCS_STARTUP_DONE_INL_MASK        0x0400  /* DCS_STARTUP_DONE_INL */
+#define WM8962_DCS_STARTUP_DONE_INL_SHIFT           10  /* DCS_STARTUP_DONE_INL */
+#define WM8962_DCS_STARTUP_DONE_INL_WIDTH            1  /* DCS_STARTUP_DONE_INL */
+#define WM8962_DCS_STARTUP_DONE_INR             0x0200  /* DCS_STARTUP_DONE_INR */
+#define WM8962_DCS_STARTUP_DONE_INR_MASK        0x0200  /* DCS_STARTUP_DONE_INR */
+#define WM8962_DCS_STARTUP_DONE_INR_SHIFT            9  /* DCS_STARTUP_DONE_INR */
+#define WM8962_DCS_STARTUP_DONE_INR_WIDTH            1  /* DCS_STARTUP_DONE_INR */
+#define WM8962_DCS_STARTUP_DONE_HP1L            0x0100  /* DCS_STARTUP_DONE_HP1L */
+#define WM8962_DCS_STARTUP_DONE_HP1L_MASK       0x0100  /* DCS_STARTUP_DONE_HP1L */
+#define WM8962_DCS_STARTUP_DONE_HP1L_SHIFT           8  /* DCS_STARTUP_DONE_HP1L */
+#define WM8962_DCS_STARTUP_DONE_HP1L_WIDTH           1  /* DCS_STARTUP_DONE_HP1L */
+#define WM8962_DCS_STARTUP_DONE_HP1R            0x0080  /* DCS_STARTUP_DONE_HP1R */
+#define WM8962_DCS_STARTUP_DONE_HP1R_MASK       0x0080  /* DCS_STARTUP_DONE_HP1R */
+#define WM8962_DCS_STARTUP_DONE_HP1R_SHIFT           7  /* DCS_STARTUP_DONE_HP1R */
+#define WM8962_DCS_STARTUP_DONE_HP1R_WIDTH           1  /* DCS_STARTUP_DONE_HP1R */
+
+/*
+ * R68 (0x44) - Analogue PGA Bias
+ */
+#define WM8962_HP_PGAS_BIAS_MASK                0x0007  /* HP_PGAS_BIAS - [2:0] */
+#define WM8962_HP_PGAS_BIAS_SHIFT                    0  /* HP_PGAS_BIAS - [2:0] */
+#define WM8962_HP_PGAS_BIAS_WIDTH                    3  /* HP_PGAS_BIAS - [2:0] */
+
+/*
+ * R69 (0x45) - Analogue HP 0
+ */
+#define WM8962_HP1L_RMV_SHORT                   0x0080  /* HP1L_RMV_SHORT */
+#define WM8962_HP1L_RMV_SHORT_MASK              0x0080  /* HP1L_RMV_SHORT */
+#define WM8962_HP1L_RMV_SHORT_SHIFT                  7  /* HP1L_RMV_SHORT */
+#define WM8962_HP1L_RMV_SHORT_WIDTH                  1  /* HP1L_RMV_SHORT */
+#define WM8962_HP1L_ENA_OUTP                    0x0040  /* HP1L_ENA_OUTP */
+#define WM8962_HP1L_ENA_OUTP_MASK               0x0040  /* HP1L_ENA_OUTP */
+#define WM8962_HP1L_ENA_OUTP_SHIFT                   6  /* HP1L_ENA_OUTP */
+#define WM8962_HP1L_ENA_OUTP_WIDTH                   1  /* HP1L_ENA_OUTP */
+#define WM8962_HP1L_ENA_DLY                     0x0020  /* HP1L_ENA_DLY */
+#define WM8962_HP1L_ENA_DLY_MASK                0x0020  /* HP1L_ENA_DLY */
+#define WM8962_HP1L_ENA_DLY_SHIFT                    5  /* HP1L_ENA_DLY */
+#define WM8962_HP1L_ENA_DLY_WIDTH                    1  /* HP1L_ENA_DLY */
+#define WM8962_HP1L_ENA                         0x0010  /* HP1L_ENA */
+#define WM8962_HP1L_ENA_MASK                    0x0010  /* HP1L_ENA */
+#define WM8962_HP1L_ENA_SHIFT                        4  /* HP1L_ENA */
+#define WM8962_HP1L_ENA_WIDTH                        1  /* HP1L_ENA */
+#define WM8962_HP1R_RMV_SHORT                   0x0008  /* HP1R_RMV_SHORT */
+#define WM8962_HP1R_RMV_SHORT_MASK              0x0008  /* HP1R_RMV_SHORT */
+#define WM8962_HP1R_RMV_SHORT_SHIFT                  3  /* HP1R_RMV_SHORT */
+#define WM8962_HP1R_RMV_SHORT_WIDTH                  1  /* HP1R_RMV_SHORT */
+#define WM8962_HP1R_ENA_OUTP                    0x0004  /* HP1R_ENA_OUTP */
+#define WM8962_HP1R_ENA_OUTP_MASK               0x0004  /* HP1R_ENA_OUTP */
+#define WM8962_HP1R_ENA_OUTP_SHIFT                   2  /* HP1R_ENA_OUTP */
+#define WM8962_HP1R_ENA_OUTP_WIDTH                   1  /* HP1R_ENA_OUTP */
+#define WM8962_HP1R_ENA_DLY                     0x0002  /* HP1R_ENA_DLY */
+#define WM8962_HP1R_ENA_DLY_MASK                0x0002  /* HP1R_ENA_DLY */
+#define WM8962_HP1R_ENA_DLY_SHIFT                    1  /* HP1R_ENA_DLY */
+#define WM8962_HP1R_ENA_DLY_WIDTH                    1  /* HP1R_ENA_DLY */
+#define WM8962_HP1R_ENA                         0x0001  /* HP1R_ENA */
+#define WM8962_HP1R_ENA_MASK                    0x0001  /* HP1R_ENA */
+#define WM8962_HP1R_ENA_SHIFT                        0  /* HP1R_ENA */
+#define WM8962_HP1R_ENA_WIDTH                        1  /* HP1R_ENA */
+
+/*
+ * R71 (0x47) - Analogue HP 2
+ */
+#define WM8962_HP1L_VOL_MASK                    0x01C0  /* HP1L_VOL - [8:6] */
+#define WM8962_HP1L_VOL_SHIFT                        6  /* HP1L_VOL - [8:6] */
+#define WM8962_HP1L_VOL_WIDTH                        3  /* HP1L_VOL - [8:6] */
+#define WM8962_HP1R_VOL_MASK                    0x0038  /* HP1R_VOL - [5:3] */
+#define WM8962_HP1R_VOL_SHIFT                        3  /* HP1R_VOL - [5:3] */
+#define WM8962_HP1R_VOL_WIDTH                        3  /* HP1R_VOL - [5:3] */
+#define WM8962_HP_BIAS_BOOST_MASK               0x0007  /* HP_BIAS_BOOST - [2:0] */
+#define WM8962_HP_BIAS_BOOST_SHIFT                   0  /* HP_BIAS_BOOST - [2:0] */
+#define WM8962_HP_BIAS_BOOST_WIDTH                   3  /* HP_BIAS_BOOST - [2:0] */
+
+/*
+ * R72 (0x48) - Charge Pump 1
+ */
+#define WM8962_CP_ENA                           0x0001  /* CP_ENA */
+#define WM8962_CP_ENA_MASK                      0x0001  /* CP_ENA */
+#define WM8962_CP_ENA_SHIFT                          0  /* CP_ENA */
+#define WM8962_CP_ENA_WIDTH                          1  /* CP_ENA */
+
+/*
+ * R82 (0x52) - Charge Pump B
+ */
+#define WM8962_CP_DYN_PWR                       0x0001  /* CP_DYN_PWR */
+#define WM8962_CP_DYN_PWR_MASK                  0x0001  /* CP_DYN_PWR */
+#define WM8962_CP_DYN_PWR_SHIFT                      0  /* CP_DYN_PWR */
+#define WM8962_CP_DYN_PWR_WIDTH                      1  /* CP_DYN_PWR */
+
+/*
+ * R87 (0x57) - Write Sequencer Control 1
+ */
+#define WM8962_WSEQ_AUTOSEQ_ENA                 0x0080  /* WSEQ_AUTOSEQ_ENA */
+#define WM8962_WSEQ_AUTOSEQ_ENA_MASK            0x0080  /* WSEQ_AUTOSEQ_ENA */
+#define WM8962_WSEQ_AUTOSEQ_ENA_SHIFT                7  /* WSEQ_AUTOSEQ_ENA */
+#define WM8962_WSEQ_AUTOSEQ_ENA_WIDTH                1  /* WSEQ_AUTOSEQ_ENA */
+#define WM8962_WSEQ_ENA                         0x0020  /* WSEQ_ENA */
+#define WM8962_WSEQ_ENA_MASK                    0x0020  /* WSEQ_ENA */
+#define WM8962_WSEQ_ENA_SHIFT                        5  /* WSEQ_ENA */
+#define WM8962_WSEQ_ENA_WIDTH                        1  /* WSEQ_ENA */
+
+/*
+ * R90 (0x5A) - Write Sequencer Control 2
+ */
+#define WM8962_WSEQ_ABORT                       0x0100  /* WSEQ_ABORT */
+#define WM8962_WSEQ_ABORT_MASK                  0x0100  /* WSEQ_ABORT */
+#define WM8962_WSEQ_ABORT_SHIFT                      8  /* WSEQ_ABORT */
+#define WM8962_WSEQ_ABORT_WIDTH                      1  /* WSEQ_ABORT */
+#define WM8962_WSEQ_START                       0x0080  /* WSEQ_START */
+#define WM8962_WSEQ_START_MASK                  0x0080  /* WSEQ_START */
+#define WM8962_WSEQ_START_SHIFT                      7  /* WSEQ_START */
+#define WM8962_WSEQ_START_WIDTH                      1  /* WSEQ_START */
+#define WM8962_WSEQ_START_INDEX_MASK            0x007F  /* WSEQ_START_INDEX - [6:0] */
+#define WM8962_WSEQ_START_INDEX_SHIFT                0  /* WSEQ_START_INDEX - [6:0] */
+#define WM8962_WSEQ_START_INDEX_WIDTH                7  /* WSEQ_START_INDEX - [6:0] */
+
+/*
+ * R93 (0x5D) - Write Sequencer Control 3
+ */
+#define WM8962_WSEQ_CURRENT_INDEX_MASK          0x03F8  /* WSEQ_CURRENT_INDEX - [9:3] */
+#define WM8962_WSEQ_CURRENT_INDEX_SHIFT              3  /* WSEQ_CURRENT_INDEX - [9:3] */
+#define WM8962_WSEQ_CURRENT_INDEX_WIDTH              7  /* WSEQ_CURRENT_INDEX - [9:3] */
+#define WM8962_WSEQ_BUSY                        0x0001  /* WSEQ_BUSY */
+#define WM8962_WSEQ_BUSY_MASK                   0x0001  /* WSEQ_BUSY */
+#define WM8962_WSEQ_BUSY_SHIFT                       0  /* WSEQ_BUSY */
+#define WM8962_WSEQ_BUSY_WIDTH                       1  /* WSEQ_BUSY */
+
+/*
+ * R94 (0x5E) - Control Interface
+ */
+#define WM8962_SPI_CONTRD                       0x0040  /* SPI_CONTRD */
+#define WM8962_SPI_CONTRD_MASK                  0x0040  /* SPI_CONTRD */
+#define WM8962_SPI_CONTRD_SHIFT                      6  /* SPI_CONTRD */
+#define WM8962_SPI_CONTRD_WIDTH                      1  /* SPI_CONTRD */
+#define WM8962_SPI_4WIRE                        0x0020  /* SPI_4WIRE */
+#define WM8962_SPI_4WIRE_MASK                   0x0020  /* SPI_4WIRE */
+#define WM8962_SPI_4WIRE_SHIFT                       5  /* SPI_4WIRE */
+#define WM8962_SPI_4WIRE_WIDTH                       1  /* SPI_4WIRE */
+#define WM8962_SPI_CFG                          0x0010  /* SPI_CFG */
+#define WM8962_SPI_CFG_MASK                     0x0010  /* SPI_CFG */
+#define WM8962_SPI_CFG_SHIFT                         4  /* SPI_CFG */
+#define WM8962_SPI_CFG_WIDTH                         1  /* SPI_CFG */
+
+/*
+ * R99 (0x63) - Mixer Enables
+ */
+#define WM8962_HPMIXL_ENA                       0x0008  /* HPMIXL_ENA */
+#define WM8962_HPMIXL_ENA_MASK                  0x0008  /* HPMIXL_ENA */
+#define WM8962_HPMIXL_ENA_SHIFT                      3  /* HPMIXL_ENA */
+#define WM8962_HPMIXL_ENA_WIDTH                      1  /* HPMIXL_ENA */
+#define WM8962_HPMIXR_ENA                       0x0004  /* HPMIXR_ENA */
+#define WM8962_HPMIXR_ENA_MASK                  0x0004  /* HPMIXR_ENA */
+#define WM8962_HPMIXR_ENA_SHIFT                      2  /* HPMIXR_ENA */
+#define WM8962_HPMIXR_ENA_WIDTH                      1  /* HPMIXR_ENA */
+#define WM8962_SPKMIXL_ENA                      0x0002  /* SPKMIXL_ENA */
+#define WM8962_SPKMIXL_ENA_MASK                 0x0002  /* SPKMIXL_ENA */
+#define WM8962_SPKMIXL_ENA_SHIFT                     1  /* SPKMIXL_ENA */
+#define WM8962_SPKMIXL_ENA_WIDTH                     1  /* SPKMIXL_ENA */
+#define WM8962_SPKMIXR_ENA                      0x0001  /* SPKMIXR_ENA */
+#define WM8962_SPKMIXR_ENA_MASK                 0x0001  /* SPKMIXR_ENA */
+#define WM8962_SPKMIXR_ENA_SHIFT                     0  /* SPKMIXR_ENA */
+#define WM8962_SPKMIXR_ENA_WIDTH                     1  /* SPKMIXR_ENA */
+
+/*
+ * R100 (0x64) - Headphone Mixer (1)
+ */
+#define WM8962_HPMIXL_TO_HPOUTL_PGA             0x0080  /* HPMIXL_TO_HPOUTL_PGA */
+#define WM8962_HPMIXL_TO_HPOUTL_PGA_MASK        0x0080  /* HPMIXL_TO_HPOUTL_PGA */
+#define WM8962_HPMIXL_TO_HPOUTL_PGA_SHIFT            7  /* HPMIXL_TO_HPOUTL_PGA */
+#define WM8962_HPMIXL_TO_HPOUTL_PGA_WIDTH            1  /* HPMIXL_TO_HPOUTL_PGA */
+#define WM8962_DACL_TO_HPMIXL                   0x0020  /* DACL_TO_HPMIXL */
+#define WM8962_DACL_TO_HPMIXL_MASK              0x0020  /* DACL_TO_HPMIXL */
+#define WM8962_DACL_TO_HPMIXL_SHIFT                  5  /* DACL_TO_HPMIXL */
+#define WM8962_DACL_TO_HPMIXL_WIDTH                  1  /* DACL_TO_HPMIXL */
+#define WM8962_DACR_TO_HPMIXL                   0x0010  /* DACR_TO_HPMIXL */
+#define WM8962_DACR_TO_HPMIXL_MASK              0x0010  /* DACR_TO_HPMIXL */
+#define WM8962_DACR_TO_HPMIXL_SHIFT                  4  /* DACR_TO_HPMIXL */
+#define WM8962_DACR_TO_HPMIXL_WIDTH                  1  /* DACR_TO_HPMIXL */
+#define WM8962_MIXINL_TO_HPMIXL                 0x0008  /* MIXINL_TO_HPMIXL */
+#define WM8962_MIXINL_TO_HPMIXL_MASK            0x0008  /* MIXINL_TO_HPMIXL */
+#define WM8962_MIXINL_TO_HPMIXL_SHIFT                3  /* MIXINL_TO_HPMIXL */
+#define WM8962_MIXINL_TO_HPMIXL_WIDTH                1  /* MIXINL_TO_HPMIXL */
+#define WM8962_MIXINR_TO_HPMIXL                 0x0004  /* MIXINR_TO_HPMIXL */
+#define WM8962_MIXINR_TO_HPMIXL_MASK            0x0004  /* MIXINR_TO_HPMIXL */
+#define WM8962_MIXINR_TO_HPMIXL_SHIFT                2  /* MIXINR_TO_HPMIXL */
+#define WM8962_MIXINR_TO_HPMIXL_WIDTH                1  /* MIXINR_TO_HPMIXL */
+#define WM8962_IN4L_TO_HPMIXL                   0x0002  /* IN4L_TO_HPMIXL */
+#define WM8962_IN4L_TO_HPMIXL_MASK              0x0002  /* IN4L_TO_HPMIXL */
+#define WM8962_IN4L_TO_HPMIXL_SHIFT                  1  /* IN4L_TO_HPMIXL */
+#define WM8962_IN4L_TO_HPMIXL_WIDTH                  1  /* IN4L_TO_HPMIXL */
+#define WM8962_IN4R_TO_HPMIXL                   0x0001  /* IN4R_TO_HPMIXL */
+#define WM8962_IN4R_TO_HPMIXL_MASK              0x0001  /* IN4R_TO_HPMIXL */
+#define WM8962_IN4R_TO_HPMIXL_SHIFT                  0  /* IN4R_TO_HPMIXL */
+#define WM8962_IN4R_TO_HPMIXL_WIDTH                  1  /* IN4R_TO_HPMIXL */
+
+/*
+ * R101 (0x65) - Headphone Mixer (2)
+ */
+#define WM8962_HPMIXR_TO_HPOUTR_PGA             0x0080  /* HPMIXR_TO_HPOUTR_PGA */
+#define WM8962_HPMIXR_TO_HPOUTR_PGA_MASK        0x0080  /* HPMIXR_TO_HPOUTR_PGA */
+#define WM8962_HPMIXR_TO_HPOUTR_PGA_SHIFT            7  /* HPMIXR_TO_HPOUTR_PGA */
+#define WM8962_HPMIXR_TO_HPOUTR_PGA_WIDTH            1  /* HPMIXR_TO_HPOUTR_PGA */
+#define WM8962_DACL_TO_HPMIXR                   0x0020  /* DACL_TO_HPMIXR */
+#define WM8962_DACL_TO_HPMIXR_MASK              0x0020  /* DACL_TO_HPMIXR */
+#define WM8962_DACL_TO_HPMIXR_SHIFT                  5  /* DACL_TO_HPMIXR */
+#define WM8962_DACL_TO_HPMIXR_WIDTH                  1  /* DACL_TO_HPMIXR */
+#define WM8962_DACR_TO_HPMIXR                   0x0010  /* DACR_TO_HPMIXR */
+#define WM8962_DACR_TO_HPMIXR_MASK              0x0010  /* DACR_TO_HPMIXR */
+#define WM8962_DACR_TO_HPMIXR_SHIFT                  4  /* DACR_TO_HPMIXR */
+#define WM8962_DACR_TO_HPMIXR_WIDTH                  1  /* DACR_TO_HPMIXR */
+#define WM8962_MIXINL_TO_HPMIXR                 0x0008  /* MIXINL_TO_HPMIXR */
+#define WM8962_MIXINL_TO_HPMIXR_MASK            0x0008  /* MIXINL_TO_HPMIXR */
+#define WM8962_MIXINL_TO_HPMIXR_SHIFT                3  /* MIXINL_TO_HPMIXR */
+#define WM8962_MIXINL_TO_HPMIXR_WIDTH                1  /* MIXINL_TO_HPMIXR */
+#define WM8962_MIXINR_TO_HPMIXR                 0x0004  /* MIXINR_TO_HPMIXR */
+#define WM8962_MIXINR_TO_HPMIXR_MASK            0x0004  /* MIXINR_TO_HPMIXR */
+#define WM8962_MIXINR_TO_HPMIXR_SHIFT                2  /* MIXINR_TO_HPMIXR */
+#define WM8962_MIXINR_TO_HPMIXR_WIDTH                1  /* MIXINR_TO_HPMIXR */
+#define WM8962_IN4L_TO_HPMIXR                   0x0002  /* IN4L_TO_HPMIXR */
+#define WM8962_IN4L_TO_HPMIXR_MASK              0x0002  /* IN4L_TO_HPMIXR */
+#define WM8962_IN4L_TO_HPMIXR_SHIFT                  1  /* IN4L_TO_HPMIXR */
+#define WM8962_IN4L_TO_HPMIXR_WIDTH                  1  /* IN4L_TO_HPMIXR */
+#define WM8962_IN4R_TO_HPMIXR                   0x0001  /* IN4R_TO_HPMIXR */
+#define WM8962_IN4R_TO_HPMIXR_MASK              0x0001  /* IN4R_TO_HPMIXR */
+#define WM8962_IN4R_TO_HPMIXR_SHIFT                  0  /* IN4R_TO_HPMIXR */
+#define WM8962_IN4R_TO_HPMIXR_WIDTH                  1  /* IN4R_TO_HPMIXR */
+
+/*
+ * R102 (0x66) - Headphone Mixer (3)
+ */
+#define WM8962_HPMIXL_MUTE                      0x0100  /* HPMIXL_MUTE */
+#define WM8962_HPMIXL_MUTE_MASK                 0x0100  /* HPMIXL_MUTE */
+#define WM8962_HPMIXL_MUTE_SHIFT                     8  /* HPMIXL_MUTE */
+#define WM8962_HPMIXL_MUTE_WIDTH                     1  /* HPMIXL_MUTE */
+#define WM8962_MIXINL_HPMIXL_VOL                0x0080  /* MIXINL_HPMIXL_VOL */
+#define WM8962_MIXINL_HPMIXL_VOL_MASK           0x0080  /* MIXINL_HPMIXL_VOL */
+#define WM8962_MIXINL_HPMIXL_VOL_SHIFT               7  /* MIXINL_HPMIXL_VOL */
+#define WM8962_MIXINL_HPMIXL_VOL_WIDTH               1  /* MIXINL_HPMIXL_VOL */
+#define WM8962_MIXINR_HPMIXL_VOL                0x0040  /* MIXINR_HPMIXL_VOL */
+#define WM8962_MIXINR_HPMIXL_VOL_MASK           0x0040  /* MIXINR_HPMIXL_VOL */
+#define WM8962_MIXINR_HPMIXL_VOL_SHIFT               6  /* MIXINR_HPMIXL_VOL */
+#define WM8962_MIXINR_HPMIXL_VOL_WIDTH               1  /* MIXINR_HPMIXL_VOL */
+#define WM8962_IN4L_HPMIXL_VOL_MASK             0x0038  /* IN4L_HPMIXL_VOL - [5:3] */
+#define WM8962_IN4L_HPMIXL_VOL_SHIFT                 3  /* IN4L_HPMIXL_VOL - [5:3] */
+#define WM8962_IN4L_HPMIXL_VOL_WIDTH                 3  /* IN4L_HPMIXL_VOL - [5:3] */
+#define WM8962_IN4R_HPMIXL_VOL_MASK             0x0007  /* IN4R_HPMIXL_VOL - [2:0] */
+#define WM8962_IN4R_HPMIXL_VOL_SHIFT                 0  /* IN4R_HPMIXL_VOL - [2:0] */
+#define WM8962_IN4R_HPMIXL_VOL_WIDTH                 3  /* IN4R_HPMIXL_VOL - [2:0] */
+
+/*
+ * R103 (0x67) - Headphone Mixer (4)
+ */
+#define WM8962_HPMIXR_MUTE                      0x0100  /* HPMIXR_MUTE */
+#define WM8962_HPMIXR_MUTE_MASK                 0x0100  /* HPMIXR_MUTE */
+#define WM8962_HPMIXR_MUTE_SHIFT                     8  /* HPMIXR_MUTE */
+#define WM8962_HPMIXR_MUTE_WIDTH                     1  /* HPMIXR_MUTE */
+#define WM8962_MIXINL_HPMIXR_VOL                0x0080  /* MIXINL_HPMIXR_VOL */
+#define WM8962_MIXINL_HPMIXR_VOL_MASK           0x0080  /* MIXINL_HPMIXR_VOL */
+#define WM8962_MIXINL_HPMIXR_VOL_SHIFT               7  /* MIXINL_HPMIXR_VOL */
+#define WM8962_MIXINL_HPMIXR_VOL_WIDTH               1  /* MIXINL_HPMIXR_VOL */
+#define WM8962_MIXINR_HPMIXR_VOL                0x0040  /* MIXINR_HPMIXR_VOL */
+#define WM8962_MIXINR_HPMIXR_VOL_MASK           0x0040  /* MIXINR_HPMIXR_VOL */
+#define WM8962_MIXINR_HPMIXR_VOL_SHIFT               6  /* MIXINR_HPMIXR_VOL */
+#define WM8962_MIXINR_HPMIXR_VOL_WIDTH               1  /* MIXINR_HPMIXR_VOL */
+#define WM8962_IN4L_HPMIXR_VOL_MASK             0x0038  /* IN4L_HPMIXR_VOL - [5:3] */
+#define WM8962_IN4L_HPMIXR_VOL_SHIFT                 3  /* IN4L_HPMIXR_VOL - [5:3] */
+#define WM8962_IN4L_HPMIXR_VOL_WIDTH                 3  /* IN4L_HPMIXR_VOL - [5:3] */
+#define WM8962_IN4R_HPMIXR_VOL_MASK             0x0007  /* IN4R_HPMIXR_VOL - [2:0] */
+#define WM8962_IN4R_HPMIXR_VOL_SHIFT                 0  /* IN4R_HPMIXR_VOL - [2:0] */
+#define WM8962_IN4R_HPMIXR_VOL_WIDTH                 3  /* IN4R_HPMIXR_VOL - [2:0] */
+
+/*
+ * R105 (0x69) - Speaker Mixer (1)
+ */
+#define WM8962_SPKMIXL_TO_SPKOUTL_PGA           0x0080  /* SPKMIXL_TO_SPKOUTL_PGA */
+#define WM8962_SPKMIXL_TO_SPKOUTL_PGA_MASK      0x0080  /* SPKMIXL_TO_SPKOUTL_PGA */
+#define WM8962_SPKMIXL_TO_SPKOUTL_PGA_SHIFT          7  /* SPKMIXL_TO_SPKOUTL_PGA */
+#define WM8962_SPKMIXL_TO_SPKOUTL_PGA_WIDTH          1  /* SPKMIXL_TO_SPKOUTL_PGA */
+#define WM8962_DACL_TO_SPKMIXL                  0x0020  /* DACL_TO_SPKMIXL */
+#define WM8962_DACL_TO_SPKMIXL_MASK             0x0020  /* DACL_TO_SPKMIXL */
+#define WM8962_DACL_TO_SPKMIXL_SHIFT                 5  /* DACL_TO_SPKMIXL */
+#define WM8962_DACL_TO_SPKMIXL_WIDTH                 1  /* DACL_TO_SPKMIXL */
+#define WM8962_DACR_TO_SPKMIXL                  0x0010  /* DACR_TO_SPKMIXL */
+#define WM8962_DACR_TO_SPKMIXL_MASK             0x0010  /* DACR_TO_SPKMIXL */
+#define WM8962_DACR_TO_SPKMIXL_SHIFT                 4  /* DACR_TO_SPKMIXL */
+#define WM8962_DACR_TO_SPKMIXL_WIDTH                 1  /* DACR_TO_SPKMIXL */
+#define WM8962_MIXINL_TO_SPKMIXL                0x0008  /* MIXINL_TO_SPKMIXL */
+#define WM8962_MIXINL_TO_SPKMIXL_MASK           0x0008  /* MIXINL_TO_SPKMIXL */
+#define WM8962_MIXINL_TO_SPKMIXL_SHIFT               3  /* MIXINL_TO_SPKMIXL */
+#define WM8962_MIXINL_TO_SPKMIXL_WIDTH               1  /* MIXINL_TO_SPKMIXL */
+#define WM8962_MIXINR_TO_SPKMIXL                0x0004  /* MIXINR_TO_SPKMIXL */
+#define WM8962_MIXINR_TO_SPKMIXL_MASK           0x0004  /* MIXINR_TO_SPKMIXL */
+#define WM8962_MIXINR_TO_SPKMIXL_SHIFT               2  /* MIXINR_TO_SPKMIXL */
+#define WM8962_MIXINR_TO_SPKMIXL_WIDTH               1  /* MIXINR_TO_SPKMIXL */
+#define WM8962_IN4L_TO_SPKMIXL                  0x0002  /* IN4L_TO_SPKMIXL */
+#define WM8962_IN4L_TO_SPKMIXL_MASK             0x0002  /* IN4L_TO_SPKMIXL */
+#define WM8962_IN4L_TO_SPKMIXL_SHIFT                 1  /* IN4L_TO_SPKMIXL */
+#define WM8962_IN4L_TO_SPKMIXL_WIDTH                 1  /* IN4L_TO_SPKMIXL */
+#define WM8962_IN4R_TO_SPKMIXL                  0x0001  /* IN4R_TO_SPKMIXL */
+#define WM8962_IN4R_TO_SPKMIXL_MASK             0x0001  /* IN4R_TO_SPKMIXL */
+#define WM8962_IN4R_TO_SPKMIXL_SHIFT                 0  /* IN4R_TO_SPKMIXL */
+#define WM8962_IN4R_TO_SPKMIXL_WIDTH                 1  /* IN4R_TO_SPKMIXL */
+
+/*
+ * R106 (0x6A) - Speaker Mixer (2)
+ */
+#define WM8962_SPKMIXR_TO_SPKOUTR_PGA           0x0080  /* SPKMIXR_TO_SPKOUTR_PGA */
+#define WM8962_SPKMIXR_TO_SPKOUTR_PGA_MASK      0x0080  /* SPKMIXR_TO_SPKOUTR_PGA */
+#define WM8962_SPKMIXR_TO_SPKOUTR_PGA_SHIFT          7  /* SPKMIXR_TO_SPKOUTR_PGA */
+#define WM8962_SPKMIXR_TO_SPKOUTR_PGA_WIDTH          1  /* SPKMIXR_TO_SPKOUTR_PGA */
+#define WM8962_DACL_TO_SPKMIXR                  0x0020  /* DACL_TO_SPKMIXR */
+#define WM8962_DACL_TO_SPKMIXR_MASK             0x0020  /* DACL_TO_SPKMIXR */
+#define WM8962_DACL_TO_SPKMIXR_SHIFT                 5  /* DACL_TO_SPKMIXR */
+#define WM8962_DACL_TO_SPKMIXR_WIDTH                 1  /* DACL_TO_SPKMIXR */
+#define WM8962_DACR_TO_SPKMIXR                  0x0010  /* DACR_TO_SPKMIXR */
+#define WM8962_DACR_TO_SPKMIXR_MASK             0x0010  /* DACR_TO_SPKMIXR */
+#define WM8962_DACR_TO_SPKMIXR_SHIFT                 4  /* DACR_TO_SPKMIXR */
+#define WM8962_DACR_TO_SPKMIXR_WIDTH                 1  /* DACR_TO_SPKMIXR */
+#define WM8962_MIXINL_TO_SPKMIXR                0x0008  /* MIXINL_TO_SPKMIXR */
+#define WM8962_MIXINL_TO_SPKMIXR_MASK           0x0008  /* MIXINL_TO_SPKMIXR */
+#define WM8962_MIXINL_TO_SPKMIXR_SHIFT               3  /* MIXINL_TO_SPKMIXR */
+#define WM8962_MIXINL_TO_SPKMIXR_WIDTH               1  /* MIXINL_TO_SPKMIXR */
+#define WM8962_MIXINR_TO_SPKMIXR                0x0004  /* MIXINR_TO_SPKMIXR */
+#define WM8962_MIXINR_TO_SPKMIXR_MASK           0x0004  /* MIXINR_TO_SPKMIXR */
+#define WM8962_MIXINR_TO_SPKMIXR_SHIFT               2  /* MIXINR_TO_SPKMIXR */
+#define WM8962_MIXINR_TO_SPKMIXR_WIDTH               1  /* MIXINR_TO_SPKMIXR */
+#define WM8962_IN4L_TO_SPKMIXR                  0x0002  /* IN4L_TO_SPKMIXR */
+#define WM8962_IN4L_TO_SPKMIXR_MASK             0x0002  /* IN4L_TO_SPKMIXR */
+#define WM8962_IN4L_TO_SPKMIXR_SHIFT                 1  /* IN4L_TO_SPKMIXR */
+#define WM8962_IN4L_TO_SPKMIXR_WIDTH                 1  /* IN4L_TO_SPKMIXR */
+#define WM8962_IN4R_TO_SPKMIXR                  0x0001  /* IN4R_TO_SPKMIXR */
+#define WM8962_IN4R_TO_SPKMIXR_MASK             0x0001  /* IN4R_TO_SPKMIXR */
+#define WM8962_IN4R_TO_SPKMIXR_SHIFT                 0  /* IN4R_TO_SPKMIXR */
+#define WM8962_IN4R_TO_SPKMIXR_WIDTH                 1  /* IN4R_TO_SPKMIXR */
+
+/*
+ * R107 (0x6B) - Speaker Mixer (3)
+ */
+#define WM8962_SPKMIXL_MUTE                     0x0100  /* SPKMIXL_MUTE */
+#define WM8962_SPKMIXL_MUTE_MASK                0x0100  /* SPKMIXL_MUTE */
+#define WM8962_SPKMIXL_MUTE_SHIFT                    8  /* SPKMIXL_MUTE */
+#define WM8962_SPKMIXL_MUTE_WIDTH                    1  /* SPKMIXL_MUTE */
+#define WM8962_MIXINL_SPKMIXL_VOL               0x0080  /* MIXINL_SPKMIXL_VOL */
+#define WM8962_MIXINL_SPKMIXL_VOL_MASK          0x0080  /* MIXINL_SPKMIXL_VOL */
+#define WM8962_MIXINL_SPKMIXL_VOL_SHIFT              7  /* MIXINL_SPKMIXL_VOL */
+#define WM8962_MIXINL_SPKMIXL_VOL_WIDTH              1  /* MIXINL_SPKMIXL_VOL */
+#define WM8962_MIXINR_SPKMIXL_VOL               0x0040  /* MIXINR_SPKMIXL_VOL */
+#define WM8962_MIXINR_SPKMIXL_VOL_MASK          0x0040  /* MIXINR_SPKMIXL_VOL */
+#define WM8962_MIXINR_SPKMIXL_VOL_SHIFT              6  /* MIXINR_SPKMIXL_VOL */
+#define WM8962_MIXINR_SPKMIXL_VOL_WIDTH              1  /* MIXINR_SPKMIXL_VOL */
+#define WM8962_IN4L_SPKMIXL_VOL_MASK            0x0038  /* IN4L_SPKMIXL_VOL - [5:3] */
+#define WM8962_IN4L_SPKMIXL_VOL_SHIFT                3  /* IN4L_SPKMIXL_VOL - [5:3] */
+#define WM8962_IN4L_SPKMIXL_VOL_WIDTH                3  /* IN4L_SPKMIXL_VOL - [5:3] */
+#define WM8962_IN4R_SPKMIXL_VOL_MASK            0x0007  /* IN4R_SPKMIXL_VOL - [2:0] */
+#define WM8962_IN4R_SPKMIXL_VOL_SHIFT                0  /* IN4R_SPKMIXL_VOL - [2:0] */
+#define WM8962_IN4R_SPKMIXL_VOL_WIDTH                3  /* IN4R_SPKMIXL_VOL - [2:0] */
+
+/*
+ * R108 (0x6C) - Speaker Mixer (4)
+ */
+#define WM8962_SPKMIXR_MUTE                     0x0100  /* SPKMIXR_MUTE */
+#define WM8962_SPKMIXR_MUTE_MASK                0x0100  /* SPKMIXR_MUTE */
+#define WM8962_SPKMIXR_MUTE_SHIFT                    8  /* SPKMIXR_MUTE */
+#define WM8962_SPKMIXR_MUTE_WIDTH                    1  /* SPKMIXR_MUTE */
+#define WM8962_MIXINL_SPKMIXR_VOL               0x0080  /* MIXINL_SPKMIXR_VOL */
+#define WM8962_MIXINL_SPKMIXR_VOL_MASK          0x0080  /* MIXINL_SPKMIXR_VOL */
+#define WM8962_MIXINL_SPKMIXR_VOL_SHIFT              7  /* MIXINL_SPKMIXR_VOL */
+#define WM8962_MIXINL_SPKMIXR_VOL_WIDTH              1  /* MIXINL_SPKMIXR_VOL */
+#define WM8962_MIXINR_SPKMIXR_VOL               0x0040  /* MIXINR_SPKMIXR_VOL */
+#define WM8962_MIXINR_SPKMIXR_VOL_MASK          0x0040  /* MIXINR_SPKMIXR_VOL */
+#define WM8962_MIXINR_SPKMIXR_VOL_SHIFT              6  /* MIXINR_SPKMIXR_VOL */
+#define WM8962_MIXINR_SPKMIXR_VOL_WIDTH              1  /* MIXINR_SPKMIXR_VOL */
+#define WM8962_IN4L_SPKMIXR_VOL_MASK            0x0038  /* IN4L_SPKMIXR_VOL - [5:3] */
+#define WM8962_IN4L_SPKMIXR_VOL_SHIFT                3  /* IN4L_SPKMIXR_VOL - [5:3] */
+#define WM8962_IN4L_SPKMIXR_VOL_WIDTH                3  /* IN4L_SPKMIXR_VOL - [5:3] */
+#define WM8962_IN4R_SPKMIXR_VOL_MASK            0x0007  /* IN4R_SPKMIXR_VOL - [2:0] */
+#define WM8962_IN4R_SPKMIXR_VOL_SHIFT                0  /* IN4R_SPKMIXR_VOL - [2:0] */
+#define WM8962_IN4R_SPKMIXR_VOL_WIDTH                3  /* IN4R_SPKMIXR_VOL - [2:0] */
+
+/*
+ * R109 (0x6D) - Speaker Mixer (5)
+ */
+#define WM8962_DACL_SPKMIXL_VOL                 0x0080  /* DACL_SPKMIXL_VOL */
+#define WM8962_DACL_SPKMIXL_VOL_MASK            0x0080  /* DACL_SPKMIXL_VOL */
+#define WM8962_DACL_SPKMIXL_VOL_SHIFT                7  /* DACL_SPKMIXL_VOL */
+#define WM8962_DACL_SPKMIXL_VOL_WIDTH                1  /* DACL_SPKMIXL_VOL */
+#define WM8962_DACR_SPKMIXL_VOL                 0x0040  /* DACR_SPKMIXL_VOL */
+#define WM8962_DACR_SPKMIXL_VOL_MASK            0x0040  /* DACR_SPKMIXL_VOL */
+#define WM8962_DACR_SPKMIXL_VOL_SHIFT                6  /* DACR_SPKMIXL_VOL */
+#define WM8962_DACR_SPKMIXL_VOL_WIDTH                1  /* DACR_SPKMIXL_VOL */
+#define WM8962_DACL_SPKMIXR_VOL                 0x0020  /* DACL_SPKMIXR_VOL */
+#define WM8962_DACL_SPKMIXR_VOL_MASK            0x0020  /* DACL_SPKMIXR_VOL */
+#define WM8962_DACL_SPKMIXR_VOL_SHIFT                5  /* DACL_SPKMIXR_VOL */
+#define WM8962_DACL_SPKMIXR_VOL_WIDTH                1  /* DACL_SPKMIXR_VOL */
+#define WM8962_DACR_SPKMIXR_VOL                 0x0010  /* DACR_SPKMIXR_VOL */
+#define WM8962_DACR_SPKMIXR_VOL_MASK            0x0010  /* DACR_SPKMIXR_VOL */
+#define WM8962_DACR_SPKMIXR_VOL_SHIFT                4  /* DACR_SPKMIXR_VOL */
+#define WM8962_DACR_SPKMIXR_VOL_WIDTH                1  /* DACR_SPKMIXR_VOL */
+
+/*
+ * R110 (0x6E) - Beep Generator (1)
+ */
+#define WM8962_BEEP_GAIN_MASK                   0x00F0  /* BEEP_GAIN - [7:4] */
+#define WM8962_BEEP_GAIN_SHIFT                       4  /* BEEP_GAIN - [7:4] */
+#define WM8962_BEEP_GAIN_WIDTH                       4  /* BEEP_GAIN - [7:4] */
+#define WM8962_BEEP_RATE_MASK                   0x0006  /* BEEP_RATE - [2:1] */
+#define WM8962_BEEP_RATE_SHIFT                       1  /* BEEP_RATE - [2:1] */
+#define WM8962_BEEP_RATE_WIDTH                       2  /* BEEP_RATE - [2:1] */
+#define WM8962_BEEP_ENA                         0x0001  /* BEEP_ENA */
+#define WM8962_BEEP_ENA_MASK                    0x0001  /* BEEP_ENA */
+#define WM8962_BEEP_ENA_SHIFT                        0  /* BEEP_ENA */
+#define WM8962_BEEP_ENA_WIDTH                        1  /* BEEP_ENA */
+
+/*
+ * R115 (0x73) - Oscillator Trim (3)
+ */
+#define WM8962_OSC_TRIM_XTI_MASK                0x001F  /* OSC_TRIM_XTI - [4:0] */
+#define WM8962_OSC_TRIM_XTI_SHIFT                    0  /* OSC_TRIM_XTI - [4:0] */
+#define WM8962_OSC_TRIM_XTI_WIDTH                    5  /* OSC_TRIM_XTI - [4:0] */
+
+/*
+ * R116 (0x74) - Oscillator Trim (4)
+ */
+#define WM8962_OSC_TRIM_XTO_MASK                0x001F  /* OSC_TRIM_XTO - [4:0] */
+#define WM8962_OSC_TRIM_XTO_SHIFT                    0  /* OSC_TRIM_XTO - [4:0] */
+#define WM8962_OSC_TRIM_XTO_WIDTH                    5  /* OSC_TRIM_XTO - [4:0] */
+
+/*
+ * R119 (0x77) - Oscillator Trim (7)
+ */
+#define WM8962_XTO_CAP_SEL_MASK                 0x00F0  /* XTO_CAP_SEL - [7:4] */
+#define WM8962_XTO_CAP_SEL_SHIFT                     4  /* XTO_CAP_SEL - [7:4] */
+#define WM8962_XTO_CAP_SEL_WIDTH                     4  /* XTO_CAP_SEL - [7:4] */
+#define WM8962_XTI_CAP_SEL_MASK                 0x000F  /* XTI_CAP_SEL - [3:0] */
+#define WM8962_XTI_CAP_SEL_SHIFT                     0  /* XTI_CAP_SEL - [3:0] */
+#define WM8962_XTI_CAP_SEL_WIDTH                     4  /* XTI_CAP_SEL - [3:0] */
+
+/*
+ * R124 (0x7C) - Analogue Clocking1
+ */
+#define WM8962_CLKOUT2_SEL_MASK                 0x0060  /* CLKOUT2_SEL - [6:5] */
+#define WM8962_CLKOUT2_SEL_SHIFT                     5  /* CLKOUT2_SEL - [6:5] */
+#define WM8962_CLKOUT2_SEL_WIDTH                     2  /* CLKOUT2_SEL - [6:5] */
+#define WM8962_CLKOUT3_SEL_MASK                 0x0018  /* CLKOUT3_SEL - [4:3] */
+#define WM8962_CLKOUT3_SEL_SHIFT                     3  /* CLKOUT3_SEL - [4:3] */
+#define WM8962_CLKOUT3_SEL_WIDTH                     2  /* CLKOUT3_SEL - [4:3] */
+#define WM8962_CLKOUT5_SEL                      0x0001  /* CLKOUT5_SEL */
+#define WM8962_CLKOUT5_SEL_MASK                 0x0001  /* CLKOUT5_SEL */
+#define WM8962_CLKOUT5_SEL_SHIFT                     0  /* CLKOUT5_SEL */
+#define WM8962_CLKOUT5_SEL_WIDTH                     1  /* CLKOUT5_SEL */
+
+/*
+ * R125 (0x7D) - Analogue Clocking2
+ */
+#define WM8962_PLL2_OUTDIV                      0x0080  /* PLL2_OUTDIV */
+#define WM8962_PLL2_OUTDIV_MASK                 0x0080  /* PLL2_OUTDIV */
+#define WM8962_PLL2_OUTDIV_SHIFT                     7  /* PLL2_OUTDIV */
+#define WM8962_PLL2_OUTDIV_WIDTH                     1  /* PLL2_OUTDIV */
+#define WM8962_PLL3_OUTDIV                      0x0040  /* PLL3_OUTDIV */
+#define WM8962_PLL3_OUTDIV_MASK                 0x0040  /* PLL3_OUTDIV */
+#define WM8962_PLL3_OUTDIV_SHIFT                     6  /* PLL3_OUTDIV */
+#define WM8962_PLL3_OUTDIV_WIDTH                     1  /* PLL3_OUTDIV */
+#define WM8962_PLL_SYSCLK_DIV_MASK              0x0018  /* PLL_SYSCLK_DIV - [4:3] */
+#define WM8962_PLL_SYSCLK_DIV_SHIFT                  3  /* PLL_SYSCLK_DIV - [4:3] */
+#define WM8962_PLL_SYSCLK_DIV_WIDTH                  2  /* PLL_SYSCLK_DIV - [4:3] */
+#define WM8962_CLKOUT3_DIV                      0x0004  /* CLKOUT3_DIV */
+#define WM8962_CLKOUT3_DIV_MASK                 0x0004  /* CLKOUT3_DIV */
+#define WM8962_CLKOUT3_DIV_SHIFT                     2  /* CLKOUT3_DIV */
+#define WM8962_CLKOUT3_DIV_WIDTH                     1  /* CLKOUT3_DIV */
+#define WM8962_CLKOUT2_DIV                      0x0002  /* CLKOUT2_DIV */
+#define WM8962_CLKOUT2_DIV_MASK                 0x0002  /* CLKOUT2_DIV */
+#define WM8962_CLKOUT2_DIV_SHIFT                     1  /* CLKOUT2_DIV */
+#define WM8962_CLKOUT2_DIV_WIDTH                     1  /* CLKOUT2_DIV */
+#define WM8962_CLKOUT5_DIV                      0x0001  /* CLKOUT5_DIV */
+#define WM8962_CLKOUT5_DIV_MASK                 0x0001  /* CLKOUT5_DIV */
+#define WM8962_CLKOUT5_DIV_SHIFT                     0  /* CLKOUT5_DIV */
+#define WM8962_CLKOUT5_DIV_WIDTH                     1  /* CLKOUT5_DIV */
+
+/*
+ * R126 (0x7E) - Analogue Clocking3
+ */
+#define WM8962_CLKOUT2_OE                       0x0008  /* CLKOUT2_OE */
+#define WM8962_CLKOUT2_OE_MASK                  0x0008  /* CLKOUT2_OE */
+#define WM8962_CLKOUT2_OE_SHIFT                      3  /* CLKOUT2_OE */
+#define WM8962_CLKOUT2_OE_WIDTH                      1  /* CLKOUT2_OE */
+#define WM8962_CLKOUT3_OE                       0x0004  /* CLKOUT3_OE */
+#define WM8962_CLKOUT3_OE_MASK                  0x0004  /* CLKOUT3_OE */
+#define WM8962_CLKOUT3_OE_SHIFT                      2  /* CLKOUT3_OE */
+#define WM8962_CLKOUT3_OE_WIDTH                      1  /* CLKOUT3_OE */
+#define WM8962_CLKOUT5_OE                       0x0001  /* CLKOUT5_OE */
+#define WM8962_CLKOUT5_OE_MASK                  0x0001  /* CLKOUT5_OE */
+#define WM8962_CLKOUT5_OE_SHIFT                      0  /* CLKOUT5_OE */
+#define WM8962_CLKOUT5_OE_WIDTH                      1  /* CLKOUT5_OE */
+
+/*
+ * R127 (0x7F) - PLL Software Reset
+ */
+#define WM8962_SW_RESET_PLL_MASK                0xFFFF  /* SW_RESET_PLL - [15:0] */
+#define WM8962_SW_RESET_PLL_SHIFT                    0  /* SW_RESET_PLL - [15:0] */
+#define WM8962_SW_RESET_PLL_WIDTH                   16  /* SW_RESET_PLL - [15:0] */
+
+/*
+ * R129 (0x81) - PLL2
+ */
+#define WM8962_OSC_ENA                          0x0080  /* OSC_ENA */
+#define WM8962_OSC_ENA_MASK                     0x0080  /* OSC_ENA */
+#define WM8962_OSC_ENA_SHIFT                         7  /* OSC_ENA */
+#define WM8962_OSC_ENA_WIDTH                         1  /* OSC_ENA */
+#define WM8962_PLL2_ENA                         0x0020  /* PLL2_ENA */
+#define WM8962_PLL2_ENA_MASK                    0x0020  /* PLL2_ENA */
+#define WM8962_PLL2_ENA_SHIFT                        5  /* PLL2_ENA */
+#define WM8962_PLL2_ENA_WIDTH                        1  /* PLL2_ENA */
+#define WM8962_PLL3_ENA                         0x0010  /* PLL3_ENA */
+#define WM8962_PLL3_ENA_MASK                    0x0010  /* PLL3_ENA */
+#define WM8962_PLL3_ENA_SHIFT                        4  /* PLL3_ENA */
+#define WM8962_PLL3_ENA_WIDTH                        1  /* PLL3_ENA */
+
+/*
+ * R131 (0x83) - PLL 4
+ */
+#define WM8962_PLL_CLK_SRC                      0x0002  /* PLL_CLK_SRC */
+#define WM8962_PLL_CLK_SRC_MASK                 0x0002  /* PLL_CLK_SRC */
+#define WM8962_PLL_CLK_SRC_SHIFT                     1  /* PLL_CLK_SRC */
+#define WM8962_PLL_CLK_SRC_WIDTH                     1  /* PLL_CLK_SRC */
+#define WM8962_FLL_TO_PLL3                      0x0001  /* FLL_TO_PLL3 */
+#define WM8962_FLL_TO_PLL3_MASK                 0x0001  /* FLL_TO_PLL3 */
+#define WM8962_FLL_TO_PLL3_SHIFT                     0  /* FLL_TO_PLL3 */
+#define WM8962_FLL_TO_PLL3_WIDTH                     1  /* FLL_TO_PLL3 */
+
+/*
+ * R136 (0x88) - PLL 9
+ */
+#define WM8962_PLL2_FRAC                        0x0040  /* PLL2_FRAC */
+#define WM8962_PLL2_FRAC_MASK                   0x0040  /* PLL2_FRAC */
+#define WM8962_PLL2_FRAC_SHIFT                       6  /* PLL2_FRAC */
+#define WM8962_PLL2_FRAC_WIDTH                       1  /* PLL2_FRAC */
+#define WM8962_PLL2_N_MASK                      0x001F  /* PLL2_N - [4:0] */
+#define WM8962_PLL2_N_SHIFT                          0  /* PLL2_N - [4:0] */
+#define WM8962_PLL2_N_WIDTH                          5  /* PLL2_N - [4:0] */
+
+/*
+ * R137 (0x89) - PLL 10
+ */
+#define WM8962_PLL2_K_MASK                      0x00FF  /* PLL2_K - [7:0] */
+#define WM8962_PLL2_K_SHIFT                          0  /* PLL2_K - [7:0] */
+#define WM8962_PLL2_K_WIDTH                          8  /* PLL2_K - [7:0] */
+
+/*
+ * R138 (0x8A) - PLL 11
+ */
+#define WM8962_PLL2_K_MASK                      0x00FF  /* PLL2_K - [7:0] */
+#define WM8962_PLL2_K_SHIFT                          0  /* PLL2_K - [7:0] */
+#define WM8962_PLL2_K_WIDTH                          8  /* PLL2_K - [7:0] */
+
+/*
+ * R139 (0x8B) - PLL 12
+ */
+#define WM8962_PLL2_K_MASK                      0x00FF  /* PLL2_K - [7:0] */
+#define WM8962_PLL2_K_SHIFT                          0  /* PLL2_K - [7:0] */
+#define WM8962_PLL2_K_WIDTH                          8  /* PLL2_K - [7:0] */
+
+/*
+ * R140 (0x8C) - PLL 13
+ */
+#define WM8962_PLL3_FRAC                        0x0040  /* PLL3_FRAC */
+#define WM8962_PLL3_FRAC_MASK                   0x0040  /* PLL3_FRAC */
+#define WM8962_PLL3_FRAC_SHIFT                       6  /* PLL3_FRAC */
+#define WM8962_PLL3_FRAC_WIDTH                       1  /* PLL3_FRAC */
+#define WM8962_PLL3_N_MASK                      0x001F  /* PLL3_N - [4:0] */
+#define WM8962_PLL3_N_SHIFT                          0  /* PLL3_N - [4:0] */
+#define WM8962_PLL3_N_WIDTH                          5  /* PLL3_N - [4:0] */
+
+/*
+ * R141 (0x8D) - PLL 14
+ */
+#define WM8962_PLL3_K_MASK                      0x00FF  /* PLL3_K - [7:0] */
+#define WM8962_PLL3_K_SHIFT                          0  /* PLL3_K - [7:0] */
+#define WM8962_PLL3_K_WIDTH                          8  /* PLL3_K - [7:0] */
+
+/*
+ * R142 (0x8E) - PLL 15
+ */
+#define WM8962_PLL3_K_MASK                      0x00FF  /* PLL3_K - [7:0] */
+#define WM8962_PLL3_K_SHIFT                          0  /* PLL3_K - [7:0] */
+#define WM8962_PLL3_K_WIDTH                          8  /* PLL3_K - [7:0] */
+
+/*
+ * R143 (0x8F) - PLL 16
+ */
+#define WM8962_PLL3_K_MASK                      0x00FF  /* PLL3_K - [7:0] */
+#define WM8962_PLL3_K_SHIFT                          0  /* PLL3_K - [7:0] */
+#define WM8962_PLL3_K_WIDTH                          8  /* PLL3_K - [7:0] */
+
+/*
+ * R155 (0x9B) - FLL Control (1)
+ */
+#define WM8962_FLL_REFCLK_SRC_MASK              0x0060  /* FLL_REFCLK_SRC - [6:5] */
+#define WM8962_FLL_REFCLK_SRC_SHIFT                  5  /* FLL_REFCLK_SRC - [6:5] */
+#define WM8962_FLL_REFCLK_SRC_WIDTH                  2  /* FLL_REFCLK_SRC - [6:5] */
+#define WM8962_FLL_FRAC                         0x0004  /* FLL_FRAC */
+#define WM8962_FLL_FRAC_MASK                    0x0004  /* FLL_FRAC */
+#define WM8962_FLL_FRAC_SHIFT                        2  /* FLL_FRAC */
+#define WM8962_FLL_FRAC_WIDTH                        1  /* FLL_FRAC */
+#define WM8962_FLL_OSC_ENA                      0x0002  /* FLL_OSC_ENA */
+#define WM8962_FLL_OSC_ENA_MASK                 0x0002  /* FLL_OSC_ENA */
+#define WM8962_FLL_OSC_ENA_SHIFT                     1  /* FLL_OSC_ENA */
+#define WM8962_FLL_OSC_ENA_WIDTH                     1  /* FLL_OSC_ENA */
+#define WM8962_FLL_ENA                          0x0001  /* FLL_ENA */
+#define WM8962_FLL_ENA_MASK                     0x0001  /* FLL_ENA */
+#define WM8962_FLL_ENA_SHIFT                         0  /* FLL_ENA */
+#define WM8962_FLL_ENA_WIDTH                         1  /* FLL_ENA */
+
+/*
+ * R156 (0x9C) - FLL Control (2)
+ */
+#define WM8962_FLL_OUTDIV_MASK                  0x01F8  /* FLL_OUTDIV - [8:3] */
+#define WM8962_FLL_OUTDIV_SHIFT                      3  /* FLL_OUTDIV - [8:3] */
+#define WM8962_FLL_OUTDIV_WIDTH                      6  /* FLL_OUTDIV - [8:3] */
+#define WM8962_FLL_REFCLK_DIV_MASK              0x0003  /* FLL_REFCLK_DIV - [1:0] */
+#define WM8962_FLL_REFCLK_DIV_SHIFT                  0  /* FLL_REFCLK_DIV - [1:0] */
+#define WM8962_FLL_REFCLK_DIV_WIDTH                  2  /* FLL_REFCLK_DIV - [1:0] */
+
+/*
+ * R157 (0x9D) - FLL Control (3)
+ */
+#define WM8962_FLL_FRATIO_MASK                  0x0007  /* FLL_FRATIO - [2:0] */
+#define WM8962_FLL_FRATIO_SHIFT                      0  /* FLL_FRATIO - [2:0] */
+#define WM8962_FLL_FRATIO_WIDTH                      3  /* FLL_FRATIO - [2:0] */
+
+/*
+ * R159 (0x9F) - FLL Control (5)
+ */
+#define WM8962_FLL_FRC_NCO_VAL_MASK             0x007E  /* FLL_FRC_NCO_VAL - [6:1] */
+#define WM8962_FLL_FRC_NCO_VAL_SHIFT                 1  /* FLL_FRC_NCO_VAL - [6:1] */
+#define WM8962_FLL_FRC_NCO_VAL_WIDTH                 6  /* FLL_FRC_NCO_VAL - [6:1] */
+#define WM8962_FLL_FRC_NCO                      0x0001  /* FLL_FRC_NCO */
+#define WM8962_FLL_FRC_NCO_MASK                 0x0001  /* FLL_FRC_NCO */
+#define WM8962_FLL_FRC_NCO_SHIFT                     0  /* FLL_FRC_NCO */
+#define WM8962_FLL_FRC_NCO_WIDTH                     1  /* FLL_FRC_NCO */
+
+/*
+ * R160 (0xA0) - FLL Control (6)
+ */
+#define WM8962_FLL_THETA_MASK                   0xFFFF  /* FLL_THETA - [15:0] */
+#define WM8962_FLL_THETA_SHIFT                       0  /* FLL_THETA - [15:0] */
+#define WM8962_FLL_THETA_WIDTH                      16  /* FLL_THETA - [15:0] */
+
+/*
+ * R161 (0xA1) - FLL Control (7)
+ */
+#define WM8962_FLL_LAMBDA_MASK                  0xFFFF  /* FLL_LAMBDA - [15:0] */
+#define WM8962_FLL_LAMBDA_SHIFT                      0  /* FLL_LAMBDA - [15:0] */
+#define WM8962_FLL_LAMBDA_WIDTH                     16  /* FLL_LAMBDA - [15:0] */
+
+/*
+ * R162 (0xA2) - FLL Control (8)
+ */
+#define WM8962_FLL_N_MASK                       0x03FF  /* FLL_N - [9:0] */
+#define WM8962_FLL_N_SHIFT                           0  /* FLL_N - [9:0] */
+#define WM8962_FLL_N_WIDTH                          10  /* FLL_N - [9:0] */
+
+/*
+ * R252 (0xFC) - General test 1
+ */
+#define WM8962_REG_SYNC                         0x0004  /* REG_SYNC */
+#define WM8962_REG_SYNC_MASK                    0x0004  /* REG_SYNC */
+#define WM8962_REG_SYNC_SHIFT                        2  /* REG_SYNC */
+#define WM8962_REG_SYNC_WIDTH                        1  /* REG_SYNC */
+#define WM8962_AUTO_INC                         0x0001  /* AUTO_INC */
+#define WM8962_AUTO_INC_MASK                    0x0001  /* AUTO_INC */
+#define WM8962_AUTO_INC_SHIFT                        0  /* AUTO_INC */
+#define WM8962_AUTO_INC_WIDTH                        1  /* AUTO_INC */
+
+/*
+ * R256 (0x100) - DF1
+ */
+#define WM8962_DRC_DF1_ENA                      0x0008  /* DRC_DF1_ENA */
+#define WM8962_DRC_DF1_ENA_MASK                 0x0008  /* DRC_DF1_ENA */
+#define WM8962_DRC_DF1_ENA_SHIFT                     3  /* DRC_DF1_ENA */
+#define WM8962_DRC_DF1_ENA_WIDTH                     1  /* DRC_DF1_ENA */
+#define WM8962_DF1_SHARED_COEFF                 0x0004  /* DF1_SHARED_COEFF */
+#define WM8962_DF1_SHARED_COEFF_MASK            0x0004  /* DF1_SHARED_COEFF */
+#define WM8962_DF1_SHARED_COEFF_SHIFT                2  /* DF1_SHARED_COEFF */
+#define WM8962_DF1_SHARED_COEFF_WIDTH                1  /* DF1_SHARED_COEFF */
+#define WM8962_DF1_SHARED_COEFF_SEL             0x0002  /* DF1_SHARED_COEFF_SEL */
+#define WM8962_DF1_SHARED_COEFF_SEL_MASK        0x0002  /* DF1_SHARED_COEFF_SEL */
+#define WM8962_DF1_SHARED_COEFF_SEL_SHIFT            1  /* DF1_SHARED_COEFF_SEL */
+#define WM8962_DF1_SHARED_COEFF_SEL_WIDTH            1  /* DF1_SHARED_COEFF_SEL */
+#define WM8962_DF1_ENA                          0x0001  /* DF1_ENA */
+#define WM8962_DF1_ENA_MASK                     0x0001  /* DF1_ENA */
+#define WM8962_DF1_ENA_SHIFT                         0  /* DF1_ENA */
+#define WM8962_DF1_ENA_WIDTH                         1  /* DF1_ENA */
+
+/*
+ * R257 (0x101) - DF2
+ */
+#define WM8962_DF1_COEFF_L0_MASK                0xFFFF  /* DF1_COEFF_L0 - [15:0] */
+#define WM8962_DF1_COEFF_L0_SHIFT                    0  /* DF1_COEFF_L0 - [15:0] */
+#define WM8962_DF1_COEFF_L0_WIDTH                   16  /* DF1_COEFF_L0 - [15:0] */
+
+/*
+ * R258 (0x102) - DF3
+ */
+#define WM8962_DF1_COEFF_L1_MASK                0xFFFF  /* DF1_COEFF_L1 - [15:0] */
+#define WM8962_DF1_COEFF_L1_SHIFT                    0  /* DF1_COEFF_L1 - [15:0] */
+#define WM8962_DF1_COEFF_L1_WIDTH                   16  /* DF1_COEFF_L1 - [15:0] */
+
+/*
+ * R259 (0x103) - DF4
+ */
+#define WM8962_DF1_COEFF_L2_MASK                0xFFFF  /* DF1_COEFF_L2 - [15:0] */
+#define WM8962_DF1_COEFF_L2_SHIFT                    0  /* DF1_COEFF_L2 - [15:0] */
+#define WM8962_DF1_COEFF_L2_WIDTH                   16  /* DF1_COEFF_L2 - [15:0] */
+
+/*
+ * R260 (0x104) - DF5
+ */
+#define WM8962_DF1_COEFF_R0_MASK                0xFFFF  /* DF1_COEFF_R0 - [15:0] */
+#define WM8962_DF1_COEFF_R0_SHIFT                    0  /* DF1_COEFF_R0 - [15:0] */
+#define WM8962_DF1_COEFF_R0_WIDTH                   16  /* DF1_COEFF_R0 - [15:0] */
+
+/*
+ * R261 (0x105) - DF6
+ */
+#define WM8962_DF1_COEFF_R1_MASK                0xFFFF  /* DF1_COEFF_R1 - [15:0] */
+#define WM8962_DF1_COEFF_R1_SHIFT                    0  /* DF1_COEFF_R1 - [15:0] */
+#define WM8962_DF1_COEFF_R1_WIDTH                   16  /* DF1_COEFF_R1 - [15:0] */
+
+/*
+ * R262 (0x106) - DF7
+ */
+#define WM8962_DF1_COEFF_R2_MASK                0xFFFF  /* DF1_COEFF_R2 - [15:0] */
+#define WM8962_DF1_COEFF_R2_SHIFT                    0  /* DF1_COEFF_R2 - [15:0] */
+#define WM8962_DF1_COEFF_R2_WIDTH                   16  /* DF1_COEFF_R2 - [15:0] */
+
+/*
+ * R264 (0x108) - LHPF1
+ */
+#define WM8962_LHPF_MODE                        0x0002  /* LHPF_MODE */
+#define WM8962_LHPF_MODE_MASK                   0x0002  /* LHPF_MODE */
+#define WM8962_LHPF_MODE_SHIFT                       1  /* LHPF_MODE */
+#define WM8962_LHPF_MODE_WIDTH                       1  /* LHPF_MODE */
+#define WM8962_LHPF_ENA                         0x0001  /* LHPF_ENA */
+#define WM8962_LHPF_ENA_MASK                    0x0001  /* LHPF_ENA */
+#define WM8962_LHPF_ENA_SHIFT                        0  /* LHPF_ENA */
+#define WM8962_LHPF_ENA_WIDTH                        1  /* LHPF_ENA */
+
+/*
+ * R265 (0x109) - LHPF2
+ */
+#define WM8962_LHPF_COEFF_MASK                  0xFFFF  /* LHPF_COEFF - [15:0] */
+#define WM8962_LHPF_COEFF_SHIFT                      0  /* LHPF_COEFF - [15:0] */
+#define WM8962_LHPF_COEFF_WIDTH                     16  /* LHPF_COEFF - [15:0] */
+
+/*
+ * R268 (0x10C) - THREED1
+ */
+#define WM8962_ADC_MONOMIX                      0x0040  /* ADC_MONOMIX */
+#define WM8962_ADC_MONOMIX_MASK                 0x0040  /* ADC_MONOMIX */
+#define WM8962_ADC_MONOMIX_SHIFT                     6  /* ADC_MONOMIX */
+#define WM8962_ADC_MONOMIX_WIDTH                     1  /* ADC_MONOMIX */
+#define WM8962_THREED_SIGN_L                    0x0020  /* THREED_SIGN_L */
+#define WM8962_THREED_SIGN_L_MASK               0x0020  /* THREED_SIGN_L */
+#define WM8962_THREED_SIGN_L_SHIFT                   5  /* THREED_SIGN_L */
+#define WM8962_THREED_SIGN_L_WIDTH                   1  /* THREED_SIGN_L */
+#define WM8962_THREED_SIGN_R                    0x0010  /* THREED_SIGN_R */
+#define WM8962_THREED_SIGN_R_MASK               0x0010  /* THREED_SIGN_R */
+#define WM8962_THREED_SIGN_R_SHIFT                   4  /* THREED_SIGN_R */
+#define WM8962_THREED_SIGN_R_WIDTH                   1  /* THREED_SIGN_R */
+#define WM8962_THREED_LHPF_MODE                 0x0004  /* THREED_LHPF_MODE */
+#define WM8962_THREED_LHPF_MODE_MASK            0x0004  /* THREED_LHPF_MODE */
+#define WM8962_THREED_LHPF_MODE_SHIFT                2  /* THREED_LHPF_MODE */
+#define WM8962_THREED_LHPF_MODE_WIDTH                1  /* THREED_LHPF_MODE */
+#define WM8962_THREED_LHPF_ENA                  0x0002  /* THREED_LHPF_ENA */
+#define WM8962_THREED_LHPF_ENA_MASK             0x0002  /* THREED_LHPF_ENA */
+#define WM8962_THREED_LHPF_ENA_SHIFT                 1  /* THREED_LHPF_ENA */
+#define WM8962_THREED_LHPF_ENA_WIDTH                 1  /* THREED_LHPF_ENA */
+#define WM8962_THREED_ENA                       0x0001  /* THREED_ENA */
+#define WM8962_THREED_ENA_MASK                  0x0001  /* THREED_ENA */
+#define WM8962_THREED_ENA_SHIFT                      0  /* THREED_ENA */
+#define WM8962_THREED_ENA_WIDTH                      1  /* THREED_ENA */
+
+/*
+ * R269 (0x10D) - THREED2
+ */
+#define WM8962_THREED_FGAINL_MASK               0xF800  /* THREED_FGAINL - [15:11] */
+#define WM8962_THREED_FGAINL_SHIFT                  11  /* THREED_FGAINL - [15:11] */
+#define WM8962_THREED_FGAINL_WIDTH                   5  /* THREED_FGAINL - [15:11] */
+#define WM8962_THREED_CGAINL_MASK               0x07C0  /* THREED_CGAINL - [10:6] */
+#define WM8962_THREED_CGAINL_SHIFT                   6  /* THREED_CGAINL - [10:6] */
+#define WM8962_THREED_CGAINL_WIDTH                   5  /* THREED_CGAINL - [10:6] */
+#define WM8962_THREED_DELAYL_MASK               0x003C  /* THREED_DELAYL - [5:2] */
+#define WM8962_THREED_DELAYL_SHIFT                   2  /* THREED_DELAYL - [5:2] */
+#define WM8962_THREED_DELAYL_WIDTH                   4  /* THREED_DELAYL - [5:2] */
+
+/*
+ * R270 (0x10E) - THREED3
+ */
+#define WM8962_THREED_LHPF_COEFF_MASK           0xFFFF  /* THREED_LHPF_COEFF - [15:0] */
+#define WM8962_THREED_LHPF_COEFF_SHIFT               0  /* THREED_LHPF_COEFF - [15:0] */
+#define WM8962_THREED_LHPF_COEFF_WIDTH              16  /* THREED_LHPF_COEFF - [15:0] */
+
+/*
+ * R271 (0x10F) - THREED4
+ */
+#define WM8962_THREED_FGAINR_MASK               0xF800  /* THREED_FGAINR - [15:11] */
+#define WM8962_THREED_FGAINR_SHIFT                  11  /* THREED_FGAINR - [15:11] */
+#define WM8962_THREED_FGAINR_WIDTH                   5  /* THREED_FGAINR - [15:11] */
+#define WM8962_THREED_CGAINR_MASK               0x07C0  /* THREED_CGAINR - [10:6] */
+#define WM8962_THREED_CGAINR_SHIFT                   6  /* THREED_CGAINR - [10:6] */
+#define WM8962_THREED_CGAINR_WIDTH                   5  /* THREED_CGAINR - [10:6] */
+#define WM8962_THREED_DELAYR_MASK               0x003C  /* THREED_DELAYR - [5:2] */
+#define WM8962_THREED_DELAYR_SHIFT                   2  /* THREED_DELAYR - [5:2] */
+#define WM8962_THREED_DELAYR_WIDTH                   4  /* THREED_DELAYR - [5:2] */
+
+/*
+ * R276 (0x114) - DRC 1
+ */
+#define WM8962_DRC_SIG_DET_RMS_MASK             0x7C00  /* DRC_SIG_DET_RMS - [14:10] */
+#define WM8962_DRC_SIG_DET_RMS_SHIFT                10  /* DRC_SIG_DET_RMS - [14:10] */
+#define WM8962_DRC_SIG_DET_RMS_WIDTH                 5  /* DRC_SIG_DET_RMS - [14:10] */
+#define WM8962_DRC_SIG_DET_PK_MASK              0x0300  /* DRC_SIG_DET_PK - [9:8] */
+#define WM8962_DRC_SIG_DET_PK_SHIFT                  8  /* DRC_SIG_DET_PK - [9:8] */
+#define WM8962_DRC_SIG_DET_PK_WIDTH                  2  /* DRC_SIG_DET_PK - [9:8] */
+#define WM8962_DRC_NG_ENA                       0x0080  /* DRC_NG_ENA */
+#define WM8962_DRC_NG_ENA_MASK                  0x0080  /* DRC_NG_ENA */
+#define WM8962_DRC_NG_ENA_SHIFT                      7  /* DRC_NG_ENA */
+#define WM8962_DRC_NG_ENA_WIDTH                      1  /* DRC_NG_ENA */
+#define WM8962_DRC_SIG_DET_MODE                 0x0040  /* DRC_SIG_DET_MODE */
+#define WM8962_DRC_SIG_DET_MODE_MASK            0x0040  /* DRC_SIG_DET_MODE */
+#define WM8962_DRC_SIG_DET_MODE_SHIFT                6  /* DRC_SIG_DET_MODE */
+#define WM8962_DRC_SIG_DET_MODE_WIDTH                1  /* DRC_SIG_DET_MODE */
+#define WM8962_DRC_SIG_DET                      0x0020  /* DRC_SIG_DET */
+#define WM8962_DRC_SIG_DET_MASK                 0x0020  /* DRC_SIG_DET */
+#define WM8962_DRC_SIG_DET_SHIFT                     5  /* DRC_SIG_DET */
+#define WM8962_DRC_SIG_DET_WIDTH                     1  /* DRC_SIG_DET */
+#define WM8962_DRC_KNEE2_OP_ENA                 0x0010  /* DRC_KNEE2_OP_ENA */
+#define WM8962_DRC_KNEE2_OP_ENA_MASK            0x0010  /* DRC_KNEE2_OP_ENA */
+#define WM8962_DRC_KNEE2_OP_ENA_SHIFT                4  /* DRC_KNEE2_OP_ENA */
+#define WM8962_DRC_KNEE2_OP_ENA_WIDTH                1  /* DRC_KNEE2_OP_ENA */
+#define WM8962_DRC_QR                           0x0008  /* DRC_QR */
+#define WM8962_DRC_QR_MASK                      0x0008  /* DRC_QR */
+#define WM8962_DRC_QR_SHIFT                          3  /* DRC_QR */
+#define WM8962_DRC_QR_WIDTH                          1  /* DRC_QR */
+#define WM8962_DRC_ANTICLIP                     0x0004  /* DRC_ANTICLIP */
+#define WM8962_DRC_ANTICLIP_MASK                0x0004  /* DRC_ANTICLIP */
+#define WM8962_DRC_ANTICLIP_SHIFT                    2  /* DRC_ANTICLIP */
+#define WM8962_DRC_ANTICLIP_WIDTH                    1  /* DRC_ANTICLIP */
+#define WM8962_DRC_MODE                         0x0002  /* DRC_MODE */
+#define WM8962_DRC_MODE_MASK                    0x0002  /* DRC_MODE */
+#define WM8962_DRC_MODE_SHIFT                        1  /* DRC_MODE */
+#define WM8962_DRC_MODE_WIDTH                        1  /* DRC_MODE */
+#define WM8962_DRC_ENA                          0x0001  /* DRC_ENA */
+#define WM8962_DRC_ENA_MASK                     0x0001  /* DRC_ENA */
+#define WM8962_DRC_ENA_SHIFT                         0  /* DRC_ENA */
+#define WM8962_DRC_ENA_WIDTH                         1  /* DRC_ENA */
+
+/*
+ * R277 (0x115) - DRC 2
+ */
+#define WM8962_DRC_ATK_MASK                     0x1E00  /* DRC_ATK - [12:9] */
+#define WM8962_DRC_ATK_SHIFT                         9  /* DRC_ATK - [12:9] */
+#define WM8962_DRC_ATK_WIDTH                         4  /* DRC_ATK - [12:9] */
+#define WM8962_DRC_DCY_MASK                     0x01E0  /* DRC_DCY - [8:5] */
+#define WM8962_DRC_DCY_SHIFT                         5  /* DRC_DCY - [8:5] */
+#define WM8962_DRC_DCY_WIDTH                         4  /* DRC_DCY - [8:5] */
+#define WM8962_DRC_MINGAIN_MASK                 0x001C  /* DRC_MINGAIN - [4:2] */
+#define WM8962_DRC_MINGAIN_SHIFT                     2  /* DRC_MINGAIN - [4:2] */
+#define WM8962_DRC_MINGAIN_WIDTH                     3  /* DRC_MINGAIN - [4:2] */
+#define WM8962_DRC_MAXGAIN_MASK                 0x0003  /* DRC_MAXGAIN - [1:0] */
+#define WM8962_DRC_MAXGAIN_SHIFT                     0  /* DRC_MAXGAIN - [1:0] */
+#define WM8962_DRC_MAXGAIN_WIDTH                     2  /* DRC_MAXGAIN - [1:0] */
+
+/*
+ * R278 (0x116) - DRC 3
+ */
+#define WM8962_DRC_NG_MINGAIN_MASK              0xF000  /* DRC_NG_MINGAIN - [15:12] */
+#define WM8962_DRC_NG_MINGAIN_SHIFT                 12  /* DRC_NG_MINGAIN - [15:12] */
+#define WM8962_DRC_NG_MINGAIN_WIDTH                  4  /* DRC_NG_MINGAIN - [15:12] */
+#define WM8962_DRC_QR_THR_MASK                  0x0C00  /* DRC_QR_THR - [11:10] */
+#define WM8962_DRC_QR_THR_SHIFT                     10  /* DRC_QR_THR - [11:10] */
+#define WM8962_DRC_QR_THR_WIDTH                      2  /* DRC_QR_THR - [11:10] */
+#define WM8962_DRC_QR_DCY_MASK                  0x0300  /* DRC_QR_DCY - [9:8] */
+#define WM8962_DRC_QR_DCY_SHIFT                      8  /* DRC_QR_DCY - [9:8] */
+#define WM8962_DRC_QR_DCY_WIDTH                      2  /* DRC_QR_DCY - [9:8] */
+#define WM8962_DRC_NG_EXP_MASK                  0x00C0  /* DRC_NG_EXP - [7:6] */
+#define WM8962_DRC_NG_EXP_SHIFT                      6  /* DRC_NG_EXP - [7:6] */
+#define WM8962_DRC_NG_EXP_WIDTH                      2  /* DRC_NG_EXP - [7:6] */
+#define WM8962_DRC_HI_COMP_MASK                 0x0038  /* DRC_HI_COMP - [5:3] */
+#define WM8962_DRC_HI_COMP_SHIFT                     3  /* DRC_HI_COMP - [5:3] */
+#define WM8962_DRC_HI_COMP_WIDTH                     3  /* DRC_HI_COMP - [5:3] */
+#define WM8962_DRC_LO_COMP_MASK                 0x0007  /* DRC_LO_COMP - [2:0] */
+#define WM8962_DRC_LO_COMP_SHIFT                     0  /* DRC_LO_COMP - [2:0] */
+#define WM8962_DRC_LO_COMP_WIDTH                     3  /* DRC_LO_COMP - [2:0] */
+
+/*
+ * R279 (0x117) - DRC 4
+ */
+#define WM8962_DRC_KNEE_IP_MASK                 0x07E0  /* DRC_KNEE_IP - [10:5] */
+#define WM8962_DRC_KNEE_IP_SHIFT                     5  /* DRC_KNEE_IP - [10:5] */
+#define WM8962_DRC_KNEE_IP_WIDTH                     6  /* DRC_KNEE_IP - [10:5] */
+#define WM8962_DRC_KNEE_OP_MASK                 0x001F  /* DRC_KNEE_OP - [4:0] */
+#define WM8962_DRC_KNEE_OP_SHIFT                     0  /* DRC_KNEE_OP - [4:0] */
+#define WM8962_DRC_KNEE_OP_WIDTH                     5  /* DRC_KNEE_OP - [4:0] */
+
+/*
+ * R280 (0x118) - DRC 5
+ */
+#define WM8962_DRC_KNEE2_IP_MASK                0x03E0  /* DRC_KNEE2_IP - [9:5] */
+#define WM8962_DRC_KNEE2_IP_SHIFT                    5  /* DRC_KNEE2_IP - [9:5] */
+#define WM8962_DRC_KNEE2_IP_WIDTH                    5  /* DRC_KNEE2_IP - [9:5] */
+#define WM8962_DRC_KNEE2_OP_MASK                0x001F  /* DRC_KNEE2_OP - [4:0] */
+#define WM8962_DRC_KNEE2_OP_SHIFT                    0  /* DRC_KNEE2_OP - [4:0] */
+#define WM8962_DRC_KNEE2_OP_WIDTH                    5  /* DRC_KNEE2_OP - [4:0] */
+
+/*
+ * R285 (0x11D) - Tloopback
+ */
+#define WM8962_TLB_ENA                          0x0002  /* TLB_ENA */
+#define WM8962_TLB_ENA_MASK                     0x0002  /* TLB_ENA */
+#define WM8962_TLB_ENA_SHIFT                         1  /* TLB_ENA */
+#define WM8962_TLB_ENA_WIDTH                         1  /* TLB_ENA */
+#define WM8962_TLB_MODE                         0x0001  /* TLB_MODE */
+#define WM8962_TLB_MODE_MASK                    0x0001  /* TLB_MODE */
+#define WM8962_TLB_MODE_SHIFT                        0  /* TLB_MODE */
+#define WM8962_TLB_MODE_WIDTH                        1  /* TLB_MODE */
+
+/*
+ * R335 (0x14F) - EQ1
+ */
+#define WM8962_EQ_SHARED_COEFF                  0x0004  /* EQ_SHARED_COEFF */
+#define WM8962_EQ_SHARED_COEFF_MASK             0x0004  /* EQ_SHARED_COEFF */
+#define WM8962_EQ_SHARED_COEFF_SHIFT                 2  /* EQ_SHARED_COEFF */
+#define WM8962_EQ_SHARED_COEFF_WIDTH                 1  /* EQ_SHARED_COEFF */
+#define WM8962_EQ_SHARED_COEFF_SEL              0x0002  /* EQ_SHARED_COEFF_SEL */
+#define WM8962_EQ_SHARED_COEFF_SEL_MASK         0x0002  /* EQ_SHARED_COEFF_SEL */
+#define WM8962_EQ_SHARED_COEFF_SEL_SHIFT             1  /* EQ_SHARED_COEFF_SEL */
+#define WM8962_EQ_SHARED_COEFF_SEL_WIDTH             1  /* EQ_SHARED_COEFF_SEL */
+#define WM8962_EQ_ENA                           0x0001  /* EQ_ENA */
+#define WM8962_EQ_ENA_MASK                      0x0001  /* EQ_ENA */
+#define WM8962_EQ_ENA_SHIFT                          0  /* EQ_ENA */
+#define WM8962_EQ_ENA_WIDTH                          1  /* EQ_ENA */
+
+/*
+ * R336 (0x150) - EQ2
+ */
+#define WM8962_EQL_B1_GAIN_MASK                 0xF800  /* EQL_B1_GAIN - [15:11] */
+#define WM8962_EQL_B1_GAIN_SHIFT                    11  /* EQL_B1_GAIN - [15:11] */
+#define WM8962_EQL_B1_GAIN_WIDTH                     5  /* EQL_B1_GAIN - [15:11] */
+#define WM8962_EQL_B2_GAIN_MASK                 0x07C0  /* EQL_B2_GAIN - [10:6] */
+#define WM8962_EQL_B2_GAIN_SHIFT                     6  /* EQL_B2_GAIN - [10:6] */
+#define WM8962_EQL_B2_GAIN_WIDTH                     5  /* EQL_B2_GAIN - [10:6] */
+#define WM8962_EQL_B3_GAIN_MASK                 0x003E  /* EQL_B3_GAIN - [5:1] */
+#define WM8962_EQL_B3_GAIN_SHIFT                     1  /* EQL_B3_GAIN - [5:1] */
+#define WM8962_EQL_B3_GAIN_WIDTH                     5  /* EQL_B3_GAIN - [5:1] */
+
+/*
+ * R337 (0x151) - EQ3
+ */
+#define WM8962_EQL_B4_GAIN_MASK                 0xF800  /* EQL_B4_GAIN - [15:11] */
+#define WM8962_EQL_B4_GAIN_SHIFT                    11  /* EQL_B4_GAIN - [15:11] */
+#define WM8962_EQL_B4_GAIN_WIDTH                     5  /* EQL_B4_GAIN - [15:11] */
+#define WM8962_EQL_B5_GAIN_MASK                 0x07C0  /* EQL_B5_GAIN - [10:6] */
+#define WM8962_EQL_B5_GAIN_SHIFT                     6  /* EQL_B5_GAIN - [10:6] */
+#define WM8962_EQL_B5_GAIN_WIDTH                     5  /* EQL_B5_GAIN - [10:6] */
+
+/*
+ * R338 (0x152) - EQ4
+ */
+#define WM8962_EQL_B1_A_MASK                    0xFFFF  /* EQL_B1_A - [15:0] */
+#define WM8962_EQL_B1_A_SHIFT                        0  /* EQL_B1_A - [15:0] */
+#define WM8962_EQL_B1_A_WIDTH                       16  /* EQL_B1_A - [15:0] */
+
+/*
+ * R339 (0x153) - EQ5
+ */
+#define WM8962_EQL_B1_B_MASK                    0xFFFF  /* EQL_B1_B - [15:0] */
+#define WM8962_EQL_B1_B_SHIFT                        0  /* EQL_B1_B - [15:0] */
+#define WM8962_EQL_B1_B_WIDTH                       16  /* EQL_B1_B - [15:0] */
+
+/*
+ * R340 (0x154) - EQ6
+ */
+#define WM8962_EQL_B1_PG_MASK                   0xFFFF  /* EQL_B1_PG - [15:0] */
+#define WM8962_EQL_B1_PG_SHIFT                       0  /* EQL_B1_PG - [15:0] */
+#define WM8962_EQL_B1_PG_WIDTH                      16  /* EQL_B1_PG - [15:0] */
+
+/*
+ * R341 (0x155) - EQ7
+ */
+#define WM8962_EQL_B2_A_MASK                    0xFFFF  /* EQL_B2_A - [15:0] */
+#define WM8962_EQL_B2_A_SHIFT                        0  /* EQL_B2_A - [15:0] */
+#define WM8962_EQL_B2_A_WIDTH                       16  /* EQL_B2_A - [15:0] */
+
+/*
+ * R342 (0x156) - EQ8
+ */
+#define WM8962_EQL_B2_B_MASK                    0xFFFF  /* EQL_B2_B - [15:0] */
+#define WM8962_EQL_B2_B_SHIFT                        0  /* EQL_B2_B - [15:0] */
+#define WM8962_EQL_B2_B_WIDTH                       16  /* EQL_B2_B - [15:0] */
+
+/*
+ * R343 (0x157) - EQ9
+ */
+#define WM8962_EQL_B2_C_MASK                    0xFFFF  /* EQL_B2_C - [15:0] */
+#define WM8962_EQL_B2_C_SHIFT                        0  /* EQL_B2_C - [15:0] */
+#define WM8962_EQL_B2_C_WIDTH                       16  /* EQL_B2_C - [15:0] */
+
+/*
+ * R344 (0x158) - EQ10
+ */
+#define WM8962_EQL_B2_PG_MASK                   0xFFFF  /* EQL_B2_PG - [15:0] */
+#define WM8962_EQL_B2_PG_SHIFT                       0  /* EQL_B2_PG - [15:0] */
+#define WM8962_EQL_B2_PG_WIDTH                      16  /* EQL_B2_PG - [15:0] */
+
+/*
+ * R345 (0x159) - EQ11
+ */
+#define WM8962_EQL_B3_A_MASK                    0xFFFF  /* EQL_B3_A - [15:0] */
+#define WM8962_EQL_B3_A_SHIFT                        0  /* EQL_B3_A - [15:0] */
+#define WM8962_EQL_B3_A_WIDTH                       16  /* EQL_B3_A - [15:0] */
+
+/*
+ * R346 (0x15A) - EQ12
+ */
+#define WM8962_EQL_B3_B_MASK                    0xFFFF  /* EQL_B3_B - [15:0] */
+#define WM8962_EQL_B3_B_SHIFT                        0  /* EQL_B3_B - [15:0] */
+#define WM8962_EQL_B3_B_WIDTH                       16  /* EQL_B3_B - [15:0] */
+
+/*
+ * R347 (0x15B) - EQ13
+ */
+#define WM8962_EQL_B3_C_MASK                    0xFFFF  /* EQL_B3_C - [15:0] */
+#define WM8962_EQL_B3_C_SHIFT                        0  /* EQL_B3_C - [15:0] */
+#define WM8962_EQL_B3_C_WIDTH                       16  /* EQL_B3_C - [15:0] */
+
+/*
+ * R348 (0x15C) - EQ14
+ */
+#define WM8962_EQL_B3_PG_MASK                   0xFFFF  /* EQL_B3_PG - [15:0] */
+#define WM8962_EQL_B3_PG_SHIFT                       0  /* EQL_B3_PG - [15:0] */
+#define WM8962_EQL_B3_PG_WIDTH                      16  /* EQL_B3_PG - [15:0] */
+
+/*
+ * R349 (0x15D) - EQ15
+ */
+#define WM8962_EQL_B4_A_MASK                    0xFFFF  /* EQL_B4_A - [15:0] */
+#define WM8962_EQL_B4_A_SHIFT                        0  /* EQL_B4_A - [15:0] */
+#define WM8962_EQL_B4_A_WIDTH                       16  /* EQL_B4_A - [15:0] */
+
+/*
+ * R350 (0x15E) - EQ16
+ */
+#define WM8962_EQL_B4_B_MASK                    0xFFFF  /* EQL_B4_B - [15:0] */
+#define WM8962_EQL_B4_B_SHIFT                        0  /* EQL_B4_B - [15:0] */
+#define WM8962_EQL_B4_B_WIDTH                       16  /* EQL_B4_B - [15:0] */
+
+/*
+ * R351 (0x15F) - EQ17
+ */
+#define WM8962_EQL_B4_C_MASK                    0xFFFF  /* EQL_B4_C - [15:0] */
+#define WM8962_EQL_B4_C_SHIFT                        0  /* EQL_B4_C - [15:0] */
+#define WM8962_EQL_B4_C_WIDTH                       16  /* EQL_B4_C - [15:0] */
+
+/*
+ * R352 (0x160) - EQ18
+ */
+#define WM8962_EQL_B4_PG_MASK                   0xFFFF  /* EQL_B4_PG - [15:0] */
+#define WM8962_EQL_B4_PG_SHIFT                       0  /* EQL_B4_PG - [15:0] */
+#define WM8962_EQL_B4_PG_WIDTH                      16  /* EQL_B4_PG - [15:0] */
+
+/*
+ * R353 (0x161) - EQ19
+ */
+#define WM8962_EQL_B5_A_MASK                    0xFFFF  /* EQL_B5_A - [15:0] */
+#define WM8962_EQL_B5_A_SHIFT                        0  /* EQL_B5_A - [15:0] */
+#define WM8962_EQL_B5_A_WIDTH                       16  /* EQL_B5_A - [15:0] */
+
+/*
+ * R354 (0x162) - EQ20
+ */
+#define WM8962_EQL_B5_B_MASK                    0xFFFF  /* EQL_B5_B - [15:0] */
+#define WM8962_EQL_B5_B_SHIFT                        0  /* EQL_B5_B - [15:0] */
+#define WM8962_EQL_B5_B_WIDTH                       16  /* EQL_B5_B - [15:0] */
+
+/*
+ * R355 (0x163) - EQ21
+ */
+#define WM8962_EQL_B5_PG_MASK                   0xFFFF  /* EQL_B5_PG - [15:0] */
+#define WM8962_EQL_B5_PG_SHIFT                       0  /* EQL_B5_PG - [15:0] */
+#define WM8962_EQL_B5_PG_WIDTH                      16  /* EQL_B5_PG - [15:0] */
+
+/*
+ * R356 (0x164) - EQ22
+ */
+#define WM8962_EQR_B1_GAIN_MASK                 0xF800  /* EQR_B1_GAIN - [15:11] */
+#define WM8962_EQR_B1_GAIN_SHIFT                    11  /* EQR_B1_GAIN - [15:11] */
+#define WM8962_EQR_B1_GAIN_WIDTH                     5  /* EQR_B1_GAIN - [15:11] */
+#define WM8962_EQR_B2_GAIN_MASK                 0x07C0  /* EQR_B2_GAIN - [10:6] */
+#define WM8962_EQR_B2_GAIN_SHIFT                     6  /* EQR_B2_GAIN - [10:6] */
+#define WM8962_EQR_B2_GAIN_WIDTH                     5  /* EQR_B2_GAIN - [10:6] */
+#define WM8962_EQR_B3_GAIN_MASK                 0x003E  /* EQR_B3_GAIN - [5:1] */
+#define WM8962_EQR_B3_GAIN_SHIFT                     1  /* EQR_B3_GAIN - [5:1] */
+#define WM8962_EQR_B3_GAIN_WIDTH                     5  /* EQR_B3_GAIN - [5:1] */
+
+/*
+ * R357 (0x165) - EQ23
+ */
+#define WM8962_EQR_B4_GAIN_MASK                 0xF800  /* EQR_B4_GAIN - [15:11] */
+#define WM8962_EQR_B4_GAIN_SHIFT                    11  /* EQR_B4_GAIN - [15:11] */
+#define WM8962_EQR_B4_GAIN_WIDTH                     5  /* EQR_B4_GAIN - [15:11] */
+#define WM8962_EQR_B5_GAIN_MASK                 0x07C0  /* EQR_B5_GAIN - [10:6] */
+#define WM8962_EQR_B5_GAIN_SHIFT                     6  /* EQR_B5_GAIN - [10:6] */
+#define WM8962_EQR_B5_GAIN_WIDTH                     5  /* EQR_B5_GAIN - [10:6] */
+
+/*
+ * R358 (0x166) - EQ24
+ */
+#define WM8962_EQR_B1_A_MASK                    0xFFFF  /* EQR_B1_A - [15:0] */
+#define WM8962_EQR_B1_A_SHIFT                        0  /* EQR_B1_A - [15:0] */
+#define WM8962_EQR_B1_A_WIDTH                       16  /* EQR_B1_A - [15:0] */
+
+/*
+ * R359 (0x167) - EQ25
+ */
+#define WM8962_EQR_B1_B_MASK                    0xFFFF  /* EQR_B1_B - [15:0] */
+#define WM8962_EQR_B1_B_SHIFT                        0  /* EQR_B1_B - [15:0] */
+#define WM8962_EQR_B1_B_WIDTH                       16  /* EQR_B1_B - [15:0] */
+
+/*
+ * R360 (0x168) - EQ26
+ */
+#define WM8962_EQR_B1_PG_MASK                   0xFFFF  /* EQR_B1_PG - [15:0] */
+#define WM8962_EQR_B1_PG_SHIFT                       0  /* EQR_B1_PG - [15:0] */
+#define WM8962_EQR_B1_PG_WIDTH                      16  /* EQR_B1_PG - [15:0] */
+
+/*
+ * R361 (0x169) - EQ27
+ */
+#define WM8962_EQR_B2_A_MASK                    0xFFFF  /* EQR_B2_A - [15:0] */
+#define WM8962_EQR_B2_A_SHIFT                        0  /* EQR_B2_A - [15:0] */
+#define WM8962_EQR_B2_A_WIDTH                       16  /* EQR_B2_A - [15:0] */
+
+/*
+ * R362 (0x16A) - EQ28
+ */
+#define WM8962_EQR_B2_B_MASK                    0xFFFF  /* EQR_B2_B - [15:0] */
+#define WM8962_EQR_B2_B_SHIFT                        0  /* EQR_B2_B - [15:0] */
+#define WM8962_EQR_B2_B_WIDTH                       16  /* EQR_B2_B - [15:0] */
+
+/*
+ * R363 (0x16B) - EQ29
+ */
+#define WM8962_EQR_B2_C_MASK                    0xFFFF  /* EQR_B2_C - [15:0] */
+#define WM8962_EQR_B2_C_SHIFT                        0  /* EQR_B2_C - [15:0] */
+#define WM8962_EQR_B2_C_WIDTH                       16  /* EQR_B2_C - [15:0] */
+
+/*
+ * R364 (0x16C) - EQ30
+ */
+#define WM8962_EQR_B2_PG_MASK                   0xFFFF  /* EQR_B2_PG - [15:0] */
+#define WM8962_EQR_B2_PG_SHIFT                       0  /* EQR_B2_PG - [15:0] */
+#define WM8962_EQR_B2_PG_WIDTH                      16  /* EQR_B2_PG - [15:0] */
+
+/*
+ * R365 (0x16D) - EQ31
+ */
+#define WM8962_EQR_B3_A_MASK                    0xFFFF  /* EQR_B3_A - [15:0] */
+#define WM8962_EQR_B3_A_SHIFT                        0  /* EQR_B3_A - [15:0] */
+#define WM8962_EQR_B3_A_WIDTH                       16  /* EQR_B3_A - [15:0] */
+
+/*
+ * R366 (0x16E) - EQ32
+ */
+#define WM8962_EQR_B3_B_MASK                    0xFFFF  /* EQR_B3_B - [15:0] */
+#define WM8962_EQR_B3_B_SHIFT                        0  /* EQR_B3_B - [15:0] */
+#define WM8962_EQR_B3_B_WIDTH                       16  /* EQR_B3_B - [15:0] */
+
+/*
+ * R367 (0x16F) - EQ33
+ */
+#define WM8962_EQR_B3_C_MASK                    0xFFFF  /* EQR_B3_C - [15:0] */
+#define WM8962_EQR_B3_C_SHIFT                        0  /* EQR_B3_C - [15:0] */
+#define WM8962_EQR_B3_C_WIDTH                       16  /* EQR_B3_C - [15:0] */
+
+/*
+ * R368 (0x170) - EQ34
+ */
+#define WM8962_EQR_B3_PG_MASK                   0xFFFF  /* EQR_B3_PG - [15:0] */
+#define WM8962_EQR_B3_PG_SHIFT                       0  /* EQR_B3_PG - [15:0] */
+#define WM8962_EQR_B3_PG_WIDTH                      16  /* EQR_B3_PG - [15:0] */
+
+/*
+ * R369 (0x171) - EQ35
+ */
+#define WM8962_EQR_B4_A_MASK                    0xFFFF  /* EQR_B4_A - [15:0] */
+#define WM8962_EQR_B4_A_SHIFT                        0  /* EQR_B4_A - [15:0] */
+#define WM8962_EQR_B4_A_WIDTH                       16  /* EQR_B4_A - [15:0] */
+
+/*
+ * R370 (0x172) - EQ36
+ */
+#define WM8962_EQR_B4_B_MASK                    0xFFFF  /* EQR_B4_B - [15:0] */
+#define WM8962_EQR_B4_B_SHIFT                        0  /* EQR_B4_B - [15:0] */
+#define WM8962_EQR_B4_B_WIDTH                       16  /* EQR_B4_B - [15:0] */
+
+/*
+ * R371 (0x173) - EQ37
+ */
+#define WM8962_EQR_B4_C_MASK                    0xFFFF  /* EQR_B4_C - [15:0] */
+#define WM8962_EQR_B4_C_SHIFT                        0  /* EQR_B4_C - [15:0] */
+#define WM8962_EQR_B4_C_WIDTH                       16  /* EQR_B4_C - [15:0] */
+
+/*
+ * R372 (0x174) - EQ38
+ */
+#define WM8962_EQR_B4_PG_MASK                   0xFFFF  /* EQR_B4_PG - [15:0] */
+#define WM8962_EQR_B4_PG_SHIFT                       0  /* EQR_B4_PG - [15:0] */
+#define WM8962_EQR_B4_PG_WIDTH                      16  /* EQR_B4_PG - [15:0] */
+
+/*
+ * R373 (0x175) - EQ39
+ */
+#define WM8962_EQR_B5_A_MASK                    0xFFFF  /* EQR_B5_A - [15:0] */
+#define WM8962_EQR_B5_A_SHIFT                        0  /* EQR_B5_A - [15:0] */
+#define WM8962_EQR_B5_A_WIDTH                       16  /* EQR_B5_A - [15:0] */
+
+/*
+ * R374 (0x176) - EQ40
+ */
+#define WM8962_EQR_B5_B_MASK                    0xFFFF  /* EQR_B5_B - [15:0] */
+#define WM8962_EQR_B5_B_SHIFT                        0  /* EQR_B5_B - [15:0] */
+#define WM8962_EQR_B5_B_WIDTH                       16  /* EQR_B5_B - [15:0] */
+
+/*
+ * R375 (0x177) - EQ41
+ */
+#define WM8962_EQR_B5_PG_MASK                   0xFFFF  /* EQR_B5_PG - [15:0] */
+#define WM8962_EQR_B5_PG_SHIFT                       0  /* EQR_B5_PG - [15:0] */
+#define WM8962_EQR_B5_PG_WIDTH                      16  /* EQR_B5_PG - [15:0] */
+
+/*
+ * R513 (0x201) - GPIO 2
+ */
+#define WM8962_GP2_POL                          0x0400  /* GP2_POL */
+#define WM8962_GP2_POL_MASK                     0x0400  /* GP2_POL */
+#define WM8962_GP2_POL_SHIFT                        10  /* GP2_POL */
+#define WM8962_GP2_POL_WIDTH                         1  /* GP2_POL */
+#define WM8962_GP2_LVL                          0x0040  /* GP2_LVL */
+#define WM8962_GP2_LVL_MASK                     0x0040  /* GP2_LVL */
+#define WM8962_GP2_LVL_SHIFT                         6  /* GP2_LVL */
+#define WM8962_GP2_LVL_WIDTH                         1  /* GP2_LVL */
+#define WM8962_GP2_FN_MASK                      0x001F  /* GP2_FN - [4:0] */
+#define WM8962_GP2_FN_SHIFT                          0  /* GP2_FN - [4:0] */
+#define WM8962_GP2_FN_WIDTH                          5  /* GP2_FN - [4:0] */
+
+/*
+ * R514 (0x202) - GPIO 3
+ */
+#define WM8962_GP3_POL                          0x0400  /* GP3_POL */
+#define WM8962_GP3_POL_MASK                     0x0400  /* GP3_POL */
+#define WM8962_GP3_POL_SHIFT                        10  /* GP3_POL */
+#define WM8962_GP3_POL_WIDTH                         1  /* GP3_POL */
+#define WM8962_GP3_LVL                          0x0040  /* GP3_LVL */
+#define WM8962_GP3_LVL_MASK                     0x0040  /* GP3_LVL */
+#define WM8962_GP3_LVL_SHIFT                         6  /* GP3_LVL */
+#define WM8962_GP3_LVL_WIDTH                         1  /* GP3_LVL */
+#define WM8962_GP3_FN_MASK                      0x001F  /* GP3_FN - [4:0] */
+#define WM8962_GP3_FN_SHIFT                          0  /* GP3_FN - [4:0] */
+#define WM8962_GP3_FN_WIDTH                          5  /* GP3_FN - [4:0] */
+
+/*
+ * R516 (0x204) - GPIO 5
+ */
+#define WM8962_GP5_DIR                          0x8000  /* GP5_DIR */
+#define WM8962_GP5_DIR_MASK                     0x8000  /* GP5_DIR */
+#define WM8962_GP5_DIR_SHIFT                        15  /* GP5_DIR */
+#define WM8962_GP5_DIR_WIDTH                         1  /* GP5_DIR */
+#define WM8962_GP5_PU                           0x4000  /* GP5_PU */
+#define WM8962_GP5_PU_MASK                      0x4000  /* GP5_PU */
+#define WM8962_GP5_PU_SHIFT                         14  /* GP5_PU */
+#define WM8962_GP5_PU_WIDTH                          1  /* GP5_PU */
+#define WM8962_GP5_PD                           0x2000  /* GP5_PD */
+#define WM8962_GP5_PD_MASK                      0x2000  /* GP5_PD */
+#define WM8962_GP5_PD_SHIFT                         13  /* GP5_PD */
+#define WM8962_GP5_PD_WIDTH                          1  /* GP5_PD */
+#define WM8962_GP5_POL                          0x0400  /* GP5_POL */
+#define WM8962_GP5_POL_MASK                     0x0400  /* GP5_POL */
+#define WM8962_GP5_POL_SHIFT                        10  /* GP5_POL */
+#define WM8962_GP5_POL_WIDTH                         1  /* GP5_POL */
+#define WM8962_GP5_OP_CFG                       0x0200  /* GP5_OP_CFG */
+#define WM8962_GP5_OP_CFG_MASK                  0x0200  /* GP5_OP_CFG */
+#define WM8962_GP5_OP_CFG_SHIFT                      9  /* GP5_OP_CFG */
+#define WM8962_GP5_OP_CFG_WIDTH                      1  /* GP5_OP_CFG */
+#define WM8962_GP5_DB                           0x0100  /* GP5_DB */
+#define WM8962_GP5_DB_MASK                      0x0100  /* GP5_DB */
+#define WM8962_GP5_DB_SHIFT                          8  /* GP5_DB */
+#define WM8962_GP5_DB_WIDTH                          1  /* GP5_DB */
+#define WM8962_GP5_LVL                          0x0040  /* GP5_LVL */
+#define WM8962_GP5_LVL_MASK                     0x0040  /* GP5_LVL */
+#define WM8962_GP5_LVL_SHIFT                         6  /* GP5_LVL */
+#define WM8962_GP5_LVL_WIDTH                         1  /* GP5_LVL */
+#define WM8962_GP5_FN_MASK                      0x001F  /* GP5_FN - [4:0] */
+#define WM8962_GP5_FN_SHIFT                          0  /* GP5_FN - [4:0] */
+#define WM8962_GP5_FN_WIDTH                          5  /* GP5_FN - [4:0] */
+
+/*
+ * R517 (0x205) - GPIO 6
+ */
+#define WM8962_GP6_DIR                          0x8000  /* GP6_DIR */
+#define WM8962_GP6_DIR_MASK                     0x8000  /* GP6_DIR */
+#define WM8962_GP6_DIR_SHIFT                        15  /* GP6_DIR */
+#define WM8962_GP6_DIR_WIDTH                         1  /* GP6_DIR */
+#define WM8962_GP6_PU                           0x4000  /* GP6_PU */
+#define WM8962_GP6_PU_MASK                      0x4000  /* GP6_PU */
+#define WM8962_GP6_PU_SHIFT                         14  /* GP6_PU */
+#define WM8962_GP6_PU_WIDTH                          1  /* GP6_PU */
+#define WM8962_GP6_PD                           0x2000  /* GP6_PD */
+#define WM8962_GP6_PD_MASK                      0x2000  /* GP6_PD */
+#define WM8962_GP6_PD_SHIFT                         13  /* GP6_PD */
+#define WM8962_GP6_PD_WIDTH                          1  /* GP6_PD */
+#define WM8962_GP6_POL                          0x0400  /* GP6_POL */
+#define WM8962_GP6_POL_MASK                     0x0400  /* GP6_POL */
+#define WM8962_GP6_POL_SHIFT                        10  /* GP6_POL */
+#define WM8962_GP6_POL_WIDTH                         1  /* GP6_POL */
+#define WM8962_GP6_OP_CFG                       0x0200  /* GP6_OP_CFG */
+#define WM8962_GP6_OP_CFG_MASK                  0x0200  /* GP6_OP_CFG */
+#define WM8962_GP6_OP_CFG_SHIFT                      9  /* GP6_OP_CFG */
+#define WM8962_GP6_OP_CFG_WIDTH                      1  /* GP6_OP_CFG */
+#define WM8962_GP6_DB                           0x0100  /* GP6_DB */
+#define WM8962_GP6_DB_MASK                      0x0100  /* GP6_DB */
+#define WM8962_GP6_DB_SHIFT                          8  /* GP6_DB */
+#define WM8962_GP6_DB_WIDTH                          1  /* GP6_DB */
+#define WM8962_GP6_LVL                          0x0040  /* GP6_LVL */
+#define WM8962_GP6_LVL_MASK                     0x0040  /* GP6_LVL */
+#define WM8962_GP6_LVL_SHIFT                         6  /* GP6_LVL */
+#define WM8962_GP6_LVL_WIDTH                         1  /* GP6_LVL */
+#define WM8962_GP6_FN_MASK                      0x001F  /* GP6_FN - [4:0] */
+#define WM8962_GP6_FN_SHIFT                          0  /* GP6_FN - [4:0] */
+#define WM8962_GP6_FN_WIDTH                          5  /* GP6_FN - [4:0] */
+
+/*
+ * R560 (0x230) - Interrupt Status 1
+ */
+#define WM8962_GP6_EINT                         0x0020  /* GP6_EINT */
+#define WM8962_GP6_EINT_MASK                    0x0020  /* GP6_EINT */
+#define WM8962_GP6_EINT_SHIFT                        5  /* GP6_EINT */
+#define WM8962_GP6_EINT_WIDTH                        1  /* GP6_EINT */
+#define WM8962_GP5_EINT                         0x0010  /* GP5_EINT */
+#define WM8962_GP5_EINT_MASK                    0x0010  /* GP5_EINT */
+#define WM8962_GP5_EINT_SHIFT                        4  /* GP5_EINT */
+#define WM8962_GP5_EINT_WIDTH                        1  /* GP5_EINT */
+
+/*
+ * R561 (0x231) - Interrupt Status 2
+ */
+#define WM8962_MICSCD_EINT                      0x8000  /* MICSCD_EINT */
+#define WM8962_MICSCD_EINT_MASK                 0x8000  /* MICSCD_EINT */
+#define WM8962_MICSCD_EINT_SHIFT                    15  /* MICSCD_EINT */
+#define WM8962_MICSCD_EINT_WIDTH                     1  /* MICSCD_EINT */
+#define WM8962_MICD_EINT                        0x4000  /* MICD_EINT */
+#define WM8962_MICD_EINT_MASK                   0x4000  /* MICD_EINT */
+#define WM8962_MICD_EINT_SHIFT                      14  /* MICD_EINT */
+#define WM8962_MICD_EINT_WIDTH                       1  /* MICD_EINT */
+#define WM8962_FIFOS_ERR_EINT                   0x2000  /* FIFOS_ERR_EINT */
+#define WM8962_FIFOS_ERR_EINT_MASK              0x2000  /* FIFOS_ERR_EINT */
+#define WM8962_FIFOS_ERR_EINT_SHIFT                 13  /* FIFOS_ERR_EINT */
+#define WM8962_FIFOS_ERR_EINT_WIDTH                  1  /* FIFOS_ERR_EINT */
+#define WM8962_ALC_LOCK_EINT                    0x1000  /* ALC_LOCK_EINT */
+#define WM8962_ALC_LOCK_EINT_MASK               0x1000  /* ALC_LOCK_EINT */
+#define WM8962_ALC_LOCK_EINT_SHIFT                  12  /* ALC_LOCK_EINT */
+#define WM8962_ALC_LOCK_EINT_WIDTH                   1  /* ALC_LOCK_EINT */
+#define WM8962_ALC_THRESH_EINT                  0x0800  /* ALC_THRESH_EINT */
+#define WM8962_ALC_THRESH_EINT_MASK             0x0800  /* ALC_THRESH_EINT */
+#define WM8962_ALC_THRESH_EINT_SHIFT                11  /* ALC_THRESH_EINT */
+#define WM8962_ALC_THRESH_EINT_WIDTH                 1  /* ALC_THRESH_EINT */
+#define WM8962_ALC_SAT_EINT                     0x0400  /* ALC_SAT_EINT */
+#define WM8962_ALC_SAT_EINT_MASK                0x0400  /* ALC_SAT_EINT */
+#define WM8962_ALC_SAT_EINT_SHIFT                   10  /* ALC_SAT_EINT */
+#define WM8962_ALC_SAT_EINT_WIDTH                    1  /* ALC_SAT_EINT */
+#define WM8962_ALC_PKOVR_EINT                   0x0200  /* ALC_PKOVR_EINT */
+#define WM8962_ALC_PKOVR_EINT_MASK              0x0200  /* ALC_PKOVR_EINT */
+#define WM8962_ALC_PKOVR_EINT_SHIFT                  9  /* ALC_PKOVR_EINT */
+#define WM8962_ALC_PKOVR_EINT_WIDTH                  1  /* ALC_PKOVR_EINT */
+#define WM8962_ALC_NGATE_EINT                   0x0100  /* ALC_NGATE_EINT */
+#define WM8962_ALC_NGATE_EINT_MASK              0x0100  /* ALC_NGATE_EINT */
+#define WM8962_ALC_NGATE_EINT_SHIFT                  8  /* ALC_NGATE_EINT */
+#define WM8962_ALC_NGATE_EINT_WIDTH                  1  /* ALC_NGATE_EINT */
+#define WM8962_WSEQ_DONE_EINT                   0x0080  /* WSEQ_DONE_EINT */
+#define WM8962_WSEQ_DONE_EINT_MASK              0x0080  /* WSEQ_DONE_EINT */
+#define WM8962_WSEQ_DONE_EINT_SHIFT                  7  /* WSEQ_DONE_EINT */
+#define WM8962_WSEQ_DONE_EINT_WIDTH                  1  /* WSEQ_DONE_EINT */
+#define WM8962_DRC_ACTDET_EINT                  0x0040  /* DRC_ACTDET_EINT */
+#define WM8962_DRC_ACTDET_EINT_MASK             0x0040  /* DRC_ACTDET_EINT */
+#define WM8962_DRC_ACTDET_EINT_SHIFT                 6  /* DRC_ACTDET_EINT */
+#define WM8962_DRC_ACTDET_EINT_WIDTH                 1  /* DRC_ACTDET_EINT */
+#define WM8962_FLL_LOCK_EINT                    0x0020  /* FLL_LOCK_EINT */
+#define WM8962_FLL_LOCK_EINT_MASK               0x0020  /* FLL_LOCK_EINT */
+#define WM8962_FLL_LOCK_EINT_SHIFT                   5  /* FLL_LOCK_EINT */
+#define WM8962_FLL_LOCK_EINT_WIDTH                   1  /* FLL_LOCK_EINT */
+#define WM8962_PLL3_LOCK_EINT                   0x0008  /* PLL3_LOCK_EINT */
+#define WM8962_PLL3_LOCK_EINT_MASK              0x0008  /* PLL3_LOCK_EINT */
+#define WM8962_PLL3_LOCK_EINT_SHIFT                  3  /* PLL3_LOCK_EINT */
+#define WM8962_PLL3_LOCK_EINT_WIDTH                  1  /* PLL3_LOCK_EINT */
+#define WM8962_PLL2_LOCK_EINT                   0x0004  /* PLL2_LOCK_EINT */
+#define WM8962_PLL2_LOCK_EINT_MASK              0x0004  /* PLL2_LOCK_EINT */
+#define WM8962_PLL2_LOCK_EINT_SHIFT                  2  /* PLL2_LOCK_EINT */
+#define WM8962_PLL2_LOCK_EINT_WIDTH                  1  /* PLL2_LOCK_EINT */
+#define WM8962_TEMP_SHUT_EINT                   0x0001  /* TEMP_SHUT_EINT */
+#define WM8962_TEMP_SHUT_EINT_MASK              0x0001  /* TEMP_SHUT_EINT */
+#define WM8962_TEMP_SHUT_EINT_SHIFT                  0  /* TEMP_SHUT_EINT */
+#define WM8962_TEMP_SHUT_EINT_WIDTH                  1  /* TEMP_SHUT_EINT */
+
+/*
+ * R568 (0x238) - Interrupt Status 1 Mask
+ */
+#define WM8962_IM_GP6_EINT                      0x0020  /* IM_GP6_EINT */
+#define WM8962_IM_GP6_EINT_MASK                 0x0020  /* IM_GP6_EINT */
+#define WM8962_IM_GP6_EINT_SHIFT                     5  /* IM_GP6_EINT */
+#define WM8962_IM_GP6_EINT_WIDTH                     1  /* IM_GP6_EINT */
+#define WM8962_IM_GP5_EINT                      0x0010  /* IM_GP5_EINT */
+#define WM8962_IM_GP5_EINT_MASK                 0x0010  /* IM_GP5_EINT */
+#define WM8962_IM_GP5_EINT_SHIFT                     4  /* IM_GP5_EINT */
+#define WM8962_IM_GP5_EINT_WIDTH                     1  /* IM_GP5_EINT */
+
+/*
+ * R569 (0x239) - Interrupt Status 2 Mask
+ */
+#define WM8962_IM_MICSCD_EINT                   0x8000  /* IM_MICSCD_EINT */
+#define WM8962_IM_MICSCD_EINT_MASK              0x8000  /* IM_MICSCD_EINT */
+#define WM8962_IM_MICSCD_EINT_SHIFT                 15  /* IM_MICSCD_EINT */
+#define WM8962_IM_MICSCD_EINT_WIDTH                  1  /* IM_MICSCD_EINT */
+#define WM8962_IM_MICD_EINT                     0x4000  /* IM_MICD_EINT */
+#define WM8962_IM_MICD_EINT_MASK                0x4000  /* IM_MICD_EINT */
+#define WM8962_IM_MICD_EINT_SHIFT                   14  /* IM_MICD_EINT */
+#define WM8962_IM_MICD_EINT_WIDTH                    1  /* IM_MICD_EINT */
+#define WM8962_IM_FIFOS_ERR_EINT                0x2000  /* IM_FIFOS_ERR_EINT */
+#define WM8962_IM_FIFOS_ERR_EINT_MASK           0x2000  /* IM_FIFOS_ERR_EINT */
+#define WM8962_IM_FIFOS_ERR_EINT_SHIFT              13  /* IM_FIFOS_ERR_EINT */
+#define WM8962_IM_FIFOS_ERR_EINT_WIDTH               1  /* IM_FIFOS_ERR_EINT */
+#define WM8962_IM_ALC_LOCK_EINT                 0x1000  /* IM_ALC_LOCK_EINT */
+#define WM8962_IM_ALC_LOCK_EINT_MASK            0x1000  /* IM_ALC_LOCK_EINT */
+#define WM8962_IM_ALC_LOCK_EINT_SHIFT               12  /* IM_ALC_LOCK_EINT */
+#define WM8962_IM_ALC_LOCK_EINT_WIDTH                1  /* IM_ALC_LOCK_EINT */
+#define WM8962_IM_ALC_THRESH_EINT               0x0800  /* IM_ALC_THRESH_EINT */
+#define WM8962_IM_ALC_THRESH_EINT_MASK          0x0800  /* IM_ALC_THRESH_EINT */
+#define WM8962_IM_ALC_THRESH_EINT_SHIFT             11  /* IM_ALC_THRESH_EINT */
+#define WM8962_IM_ALC_THRESH_EINT_WIDTH              1  /* IM_ALC_THRESH_EINT */
+#define WM8962_IM_ALC_SAT_EINT                  0x0400  /* IM_ALC_SAT_EINT */
+#define WM8962_IM_ALC_SAT_EINT_MASK             0x0400  /* IM_ALC_SAT_EINT */
+#define WM8962_IM_ALC_SAT_EINT_SHIFT                10  /* IM_ALC_SAT_EINT */
+#define WM8962_IM_ALC_SAT_EINT_WIDTH                 1  /* IM_ALC_SAT_EINT */
+#define WM8962_IM_ALC_PKOVR_EINT                0x0200  /* IM_ALC_PKOVR_EINT */
+#define WM8962_IM_ALC_PKOVR_EINT_MASK           0x0200  /* IM_ALC_PKOVR_EINT */
+#define WM8962_IM_ALC_PKOVR_EINT_SHIFT               9  /* IM_ALC_PKOVR_EINT */
+#define WM8962_IM_ALC_PKOVR_EINT_WIDTH               1  /* IM_ALC_PKOVR_EINT */
+#define WM8962_IM_ALC_NGATE_EINT                0x0100  /* IM_ALC_NGATE_EINT */
+#define WM8962_IM_ALC_NGATE_EINT_MASK           0x0100  /* IM_ALC_NGATE_EINT */
+#define WM8962_IM_ALC_NGATE_EINT_SHIFT               8  /* IM_ALC_NGATE_EINT */
+#define WM8962_IM_ALC_NGATE_EINT_WIDTH               1  /* IM_ALC_NGATE_EINT */
+#define WM8962_IM_WSEQ_DONE_EINT                0x0080  /* IM_WSEQ_DONE_EINT */
+#define WM8962_IM_WSEQ_DONE_EINT_MASK           0x0080  /* IM_WSEQ_DONE_EINT */
+#define WM8962_IM_WSEQ_DONE_EINT_SHIFT               7  /* IM_WSEQ_DONE_EINT */
+#define WM8962_IM_WSEQ_DONE_EINT_WIDTH               1  /* IM_WSEQ_DONE_EINT */
+#define WM8962_IM_DRC_ACTDET_EINT               0x0040  /* IM_DRC_ACTDET_EINT */
+#define WM8962_IM_DRC_ACTDET_EINT_MASK          0x0040  /* IM_DRC_ACTDET_EINT */
+#define WM8962_IM_DRC_ACTDET_EINT_SHIFT              6  /* IM_DRC_ACTDET_EINT */
+#define WM8962_IM_DRC_ACTDET_EINT_WIDTH              1  /* IM_DRC_ACTDET_EINT */
+#define WM8962_IM_FLL_LOCK_EINT                 0x0020  /* IM_FLL_LOCK_EINT */
+#define WM8962_IM_FLL_LOCK_EINT_MASK            0x0020  /* IM_FLL_LOCK_EINT */
+#define WM8962_IM_FLL_LOCK_EINT_SHIFT                5  /* IM_FLL_LOCK_EINT */
+#define WM8962_IM_FLL_LOCK_EINT_WIDTH                1  /* IM_FLL_LOCK_EINT */
+#define WM8962_IM_PLL3_LOCK_EINT                0x0008  /* IM_PLL3_LOCK_EINT */
+#define WM8962_IM_PLL3_LOCK_EINT_MASK           0x0008  /* IM_PLL3_LOCK_EINT */
+#define WM8962_IM_PLL3_LOCK_EINT_SHIFT               3  /* IM_PLL3_LOCK_EINT */
+#define WM8962_IM_PLL3_LOCK_EINT_WIDTH               1  /* IM_PLL3_LOCK_EINT */
+#define WM8962_IM_PLL2_LOCK_EINT                0x0004  /* IM_PLL2_LOCK_EINT */
+#define WM8962_IM_PLL2_LOCK_EINT_MASK           0x0004  /* IM_PLL2_LOCK_EINT */
+#define WM8962_IM_PLL2_LOCK_EINT_SHIFT               2  /* IM_PLL2_LOCK_EINT */
+#define WM8962_IM_PLL2_LOCK_EINT_WIDTH               1  /* IM_PLL2_LOCK_EINT */
+#define WM8962_IM_TEMP_SHUT_EINT                0x0001  /* IM_TEMP_SHUT_EINT */
+#define WM8962_IM_TEMP_SHUT_EINT_MASK           0x0001  /* IM_TEMP_SHUT_EINT */
+#define WM8962_IM_TEMP_SHUT_EINT_SHIFT               0  /* IM_TEMP_SHUT_EINT */
+#define WM8962_IM_TEMP_SHUT_EINT_WIDTH               1  /* IM_TEMP_SHUT_EINT */
+
+/*
+ * R576 (0x240) - Interrupt Control
+ */
+#define WM8962_IRQ_POL                          0x0001  /* IRQ_POL */
+#define WM8962_IRQ_POL_MASK                     0x0001  /* IRQ_POL */
+#define WM8962_IRQ_POL_SHIFT                         0  /* IRQ_POL */
+#define WM8962_IRQ_POL_WIDTH                         1  /* IRQ_POL */
+
+/*
+ * R584 (0x248) - IRQ Debounce
+ */
+#define WM8962_FLL_LOCK_DB                      0x0020  /* FLL_LOCK_DB */
+#define WM8962_FLL_LOCK_DB_MASK                 0x0020  /* FLL_LOCK_DB */
+#define WM8962_FLL_LOCK_DB_SHIFT                     5  /* FLL_LOCK_DB */
+#define WM8962_FLL_LOCK_DB_WIDTH                     1  /* FLL_LOCK_DB */
+#define WM8962_PLL3_LOCK_DB                     0x0008  /* PLL3_LOCK_DB */
+#define WM8962_PLL3_LOCK_DB_MASK                0x0008  /* PLL3_LOCK_DB */
+#define WM8962_PLL3_LOCK_DB_SHIFT                    3  /* PLL3_LOCK_DB */
+#define WM8962_PLL3_LOCK_DB_WIDTH                    1  /* PLL3_LOCK_DB */
+#define WM8962_PLL2_LOCK_DB                     0x0004  /* PLL2_LOCK_DB */
+#define WM8962_PLL2_LOCK_DB_MASK                0x0004  /* PLL2_LOCK_DB */
+#define WM8962_PLL2_LOCK_DB_SHIFT                    2  /* PLL2_LOCK_DB */
+#define WM8962_PLL2_LOCK_DB_WIDTH                    1  /* PLL2_LOCK_DB */
+#define WM8962_TEMP_SHUT_DB                     0x0001  /* TEMP_SHUT_DB */
+#define WM8962_TEMP_SHUT_DB_MASK                0x0001  /* TEMP_SHUT_DB */
+#define WM8962_TEMP_SHUT_DB_SHIFT                    0  /* TEMP_SHUT_DB */
+#define WM8962_TEMP_SHUT_DB_WIDTH                    1  /* TEMP_SHUT_DB */
+
+/*
+ * R586 (0x24A) -  MICINT Source Pol
+ */
+#define WM8962_MICSCD_IRQ_POL                   0x8000  /* MICSCD_IRQ_POL */
+#define WM8962_MICSCD_IRQ_POL_MASK              0x8000  /* MICSCD_IRQ_POL */
+#define WM8962_MICSCD_IRQ_POL_SHIFT                 15  /* MICSCD_IRQ_POL */
+#define WM8962_MICSCD_IRQ_POL_WIDTH                  1  /* MICSCD_IRQ_POL */
+#define WM8962_MICD_IRQ_POL                     0x4000  /* MICD_IRQ_POL */
+#define WM8962_MICD_IRQ_POL_MASK                0x4000  /* MICD_IRQ_POL */
+#define WM8962_MICD_IRQ_POL_SHIFT                   14  /* MICD_IRQ_POL */
+#define WM8962_MICD_IRQ_POL_WIDTH                    1  /* MICD_IRQ_POL */
+
+/*
+ * R768 (0x300) - DSP2 Power Management
+ */
+#define WM8962_DSP2_ENA                         0x0001  /* DSP2_ENA */
+#define WM8962_DSP2_ENA_MASK                    0x0001  /* DSP2_ENA */
+#define WM8962_DSP2_ENA_SHIFT                        0  /* DSP2_ENA */
+#define WM8962_DSP2_ENA_WIDTH                        1  /* DSP2_ENA */
+
+/*
+ * R1037 (0x40D) - DSP2_ExecControl
+ */
+#define WM8962_DSP2_STOPC                       0x0020  /* DSP2_STOPC */
+#define WM8962_DSP2_STOPC_MASK                  0x0020  /* DSP2_STOPC */
+#define WM8962_DSP2_STOPC_SHIFT                      5  /* DSP2_STOPC */
+#define WM8962_DSP2_STOPC_WIDTH                      1  /* DSP2_STOPC */
+#define WM8962_DSP2_STOPS                       0x0010  /* DSP2_STOPS */
+#define WM8962_DSP2_STOPS_MASK                  0x0010  /* DSP2_STOPS */
+#define WM8962_DSP2_STOPS_SHIFT                      4  /* DSP2_STOPS */
+#define WM8962_DSP2_STOPS_WIDTH                      1  /* DSP2_STOPS */
+#define WM8962_DSP2_STOPI                       0x0008  /* DSP2_STOPI */
+#define WM8962_DSP2_STOPI_MASK                  0x0008  /* DSP2_STOPI */
+#define WM8962_DSP2_STOPI_SHIFT                      3  /* DSP2_STOPI */
+#define WM8962_DSP2_STOPI_WIDTH                      1  /* DSP2_STOPI */
+#define WM8962_DSP2_STOP                        0x0004  /* DSP2_STOP */
+#define WM8962_DSP2_STOP_MASK                   0x0004  /* DSP2_STOP */
+#define WM8962_DSP2_STOP_SHIFT                       2  /* DSP2_STOP */
+#define WM8962_DSP2_STOP_WIDTH                       1  /* DSP2_STOP */
+#define WM8962_DSP2_RUNR                        0x0002  /* DSP2_RUNR */
+#define WM8962_DSP2_RUNR_MASK                   0x0002  /* DSP2_RUNR */
+#define WM8962_DSP2_RUNR_SHIFT                       1  /* DSP2_RUNR */
+#define WM8962_DSP2_RUNR_WIDTH                       1  /* DSP2_RUNR */
+#define WM8962_DSP2_RUN                         0x0001  /* DSP2_RUN */
+#define WM8962_DSP2_RUN_MASK                    0x0001  /* DSP2_RUN */
+#define WM8962_DSP2_RUN_SHIFT                        0  /* DSP2_RUN */
+#define WM8962_DSP2_RUN_WIDTH                        1  /* DSP2_RUN */
+
+/*
+ * R8192 (0x2000) - DSP2 Instruction RAM 0
+ */
+#define WM8962_DSP2_INSTR_RAM_1024_10_9_0_MASK  0x03FF  /* DSP2_INSTR_RAM_1024_10_9_0 - [9:0] */
+#define WM8962_DSP2_INSTR_RAM_1024_10_9_0_SHIFT      0  /* DSP2_INSTR_RAM_1024_10_9_0 - [9:0] */
+#define WM8962_DSP2_INSTR_RAM_1024_10_9_0_WIDTH     10  /* DSP2_INSTR_RAM_1024_10_9_0 - [9:0] */
+
+/*
+ * R9216 (0x2400) - DSP2 Address RAM 2
+ */
+#define WM8962_DSP2_ADDR_RAM_1024_38_37_32_MASK 0x003F  /* DSP2_ADDR_RAM_1024_38_37_32 - [5:0] */
+#define WM8962_DSP2_ADDR_RAM_1024_38_37_32_SHIFT      0  /* DSP2_ADDR_RAM_1024_38_37_32 - [5:0] */
+#define WM8962_DSP2_ADDR_RAM_1024_38_37_32_WIDTH      6  /* DSP2_ADDR_RAM_1024_38_37_32 - [5:0] */
+
+/*
+ * R9217 (0x2401) - DSP2 Address RAM 1
+ */
+#define WM8962_DSP2_ADDR_RAM_1024_38_31_16_MASK 0xFFFF  /* DSP2_ADDR_RAM_1024_38_31_16 - [15:0] */
+#define WM8962_DSP2_ADDR_RAM_1024_38_31_16_SHIFT      0  /* DSP2_ADDR_RAM_1024_38_31_16 - [15:0] */
+#define WM8962_DSP2_ADDR_RAM_1024_38_31_16_WIDTH     16  /* DSP2_ADDR_RAM_1024_38_31_16 - [15:0] */
+
+/*
+ * R9218 (0x2402) - DSP2 Address RAM 0
+ */
+#define WM8962_DSP2_ADDR_RAM_1024_38_15_0_MASK  0xFFFF  /* DSP2_ADDR_RAM_1024_38_15_0 - [15:0] */
+#define WM8962_DSP2_ADDR_RAM_1024_38_15_0_SHIFT      0  /* DSP2_ADDR_RAM_1024_38_15_0 - [15:0] */
+#define WM8962_DSP2_ADDR_RAM_1024_38_15_0_WIDTH     16  /* DSP2_ADDR_RAM_1024_38_15_0 - [15:0] */
+
+/*
+ * R12288 (0x3000) - DSP2 Data1 RAM 1
+ */
+#define WM8962_DSP2_DATA1_RAM_384_24_23_16_MASK 0x00FF  /* DSP2_DATA1_RAM_384_24_23_16 - [7:0] */
+#define WM8962_DSP2_DATA1_RAM_384_24_23_16_SHIFT      0  /* DSP2_DATA1_RAM_384_24_23_16 - [7:0] */
+#define WM8962_DSP2_DATA1_RAM_384_24_23_16_WIDTH      8  /* DSP2_DATA1_RAM_384_24_23_16 - [7:0] */
+
+/*
+ * R12289 (0x3001) - DSP2 Data1 RAM 0
+ */
+#define WM8962_DSP2_DATA1_RAM_384_24_15_0_MASK  0xFFFF  /* DSP2_DATA1_RAM_384_24_15_0 - [15:0] */
+#define WM8962_DSP2_DATA1_RAM_384_24_15_0_SHIFT      0  /* DSP2_DATA1_RAM_384_24_15_0 - [15:0] */
+#define WM8962_DSP2_DATA1_RAM_384_24_15_0_WIDTH     16  /* DSP2_DATA1_RAM_384_24_15_0 - [15:0] */
+
+/*
+ * R13312 (0x3400) - DSP2 Data2 RAM 1
+ */
+#define WM8962_DSP2_DATA2_RAM_384_24_23_16_MASK 0x00FF  /* DSP2_DATA2_RAM_384_24_23_16 - [7:0] */
+#define WM8962_DSP2_DATA2_RAM_384_24_23_16_SHIFT      0  /* DSP2_DATA2_RAM_384_24_23_16 - [7:0] */
+#define WM8962_DSP2_DATA2_RAM_384_24_23_16_WIDTH      8  /* DSP2_DATA2_RAM_384_24_23_16 - [7:0] */
+
+/*
+ * R13313 (0x3401) - DSP2 Data2 RAM 0
+ */
+#define WM8962_DSP2_DATA2_RAM_384_24_15_0_MASK  0xFFFF  /* DSP2_DATA2_RAM_384_24_15_0 - [15:0] */
+#define WM8962_DSP2_DATA2_RAM_384_24_15_0_SHIFT      0  /* DSP2_DATA2_RAM_384_24_15_0 - [15:0] */
+#define WM8962_DSP2_DATA2_RAM_384_24_15_0_WIDTH     16  /* DSP2_DATA2_RAM_384_24_15_0 - [15:0] */
+
+/*
+ * R14336 (0x3800) - DSP2 Data3 RAM 1
+ */
+#define WM8962_DSP2_DATA3_RAM_384_24_23_16_MASK 0x00FF  /* DSP2_DATA3_RAM_384_24_23_16 - [7:0] */
+#define WM8962_DSP2_DATA3_RAM_384_24_23_16_SHIFT      0  /* DSP2_DATA3_RAM_384_24_23_16 - [7:0] */
+#define WM8962_DSP2_DATA3_RAM_384_24_23_16_WIDTH      8  /* DSP2_DATA3_RAM_384_24_23_16 - [7:0] */
+
+/*
+ * R14337 (0x3801) - DSP2 Data3 RAM 0
+ */
+#define WM8962_DSP2_DATA3_RAM_384_24_15_0_MASK  0xFFFF  /* DSP2_DATA3_RAM_384_24_15_0 - [15:0] */
+#define WM8962_DSP2_DATA3_RAM_384_24_15_0_SHIFT      0  /* DSP2_DATA3_RAM_384_24_15_0 - [15:0] */
+#define WM8962_DSP2_DATA3_RAM_384_24_15_0_WIDTH     16  /* DSP2_DATA3_RAM_384_24_15_0 - [15:0] */
+
+/*
+ * R15360 (0x3C00) - DSP2 Coeff RAM 0
+ */
+#define WM8962_DSP2_CMAP_RAM_384_11_10_0_MASK   0x07FF  /* DSP2_CMAP_RAM_384_11_10_0 - [10:0] */
+#define WM8962_DSP2_CMAP_RAM_384_11_10_0_SHIFT       0  /* DSP2_CMAP_RAM_384_11_10_0 - [10:0] */
+#define WM8962_DSP2_CMAP_RAM_384_11_10_0_WIDTH      11  /* DSP2_CMAP_RAM_384_11_10_0 - [10:0] */
+
+/*
+ * R16384 (0x4000) - RETUNEADC_SHARED_COEFF_1
+ */
+#define WM8962_ADC_RETUNE_SCV                   0x0080  /* ADC_RETUNE_SCV */
+#define WM8962_ADC_RETUNE_SCV_MASK              0x0080  /* ADC_RETUNE_SCV */
+#define WM8962_ADC_RETUNE_SCV_SHIFT                  7  /* ADC_RETUNE_SCV */
+#define WM8962_ADC_RETUNE_SCV_WIDTH                  1  /* ADC_RETUNE_SCV */
+#define WM8962_RETUNEADC_SHARED_COEFF_22_16_MASK 0x007F  /* RETUNEADC_SHARED_COEFF_22_16 - [6:0] */
+#define WM8962_RETUNEADC_SHARED_COEFF_22_16_SHIFT      0  /* RETUNEADC_SHARED_COEFF_22_16 - [6:0] */
+#define WM8962_RETUNEADC_SHARED_COEFF_22_16_WIDTH      7  /* RETUNEADC_SHARED_COEFF_22_16 - [6:0] */
+
+/*
+ * R16385 (0x4001) - RETUNEADC_SHARED_COEFF_0
+ */
+#define WM8962_RETUNEADC_SHARED_COEFF_15_00_MASK 0xFFFF  /* RETUNEADC_SHARED_COEFF_15_00 - [15:0] */
+#define WM8962_RETUNEADC_SHARED_COEFF_15_00_SHIFT      0  /* RETUNEADC_SHARED_COEFF_15_00 - [15:0] */
+#define WM8962_RETUNEADC_SHARED_COEFF_15_00_WIDTH     16  /* RETUNEADC_SHARED_COEFF_15_00 - [15:0] */
+
+/*
+ * R16386 (0x4002) - RETUNEDAC_SHARED_COEFF_1
+ */
+#define WM8962_DAC_RETUNE_SCV                   0x0080  /* DAC_RETUNE_SCV */
+#define WM8962_DAC_RETUNE_SCV_MASK              0x0080  /* DAC_RETUNE_SCV */
+#define WM8962_DAC_RETUNE_SCV_SHIFT                  7  /* DAC_RETUNE_SCV */
+#define WM8962_DAC_RETUNE_SCV_WIDTH                  1  /* DAC_RETUNE_SCV */
+#define WM8962_RETUNEDAC_SHARED_COEFF_23_16_MASK 0x007F  /* RETUNEDAC_SHARED_COEFF_23_16 - [6:0] */
+#define WM8962_RETUNEDAC_SHARED_COEFF_23_16_SHIFT      0  /* RETUNEDAC_SHARED_COEFF_23_16 - [6:0] */
+#define WM8962_RETUNEDAC_SHARED_COEFF_23_16_WIDTH      7  /* RETUNEDAC_SHARED_COEFF_23_16 - [6:0] */
+
+/*
+ * R16387 (0x4003) - RETUNEDAC_SHARED_COEFF_0
+ */
+#define WM8962_RETUNEDAC_SHARED_COEFF_15_00_MASK 0xFFFF  /* RETUNEDAC_SHARED_COEFF_15_00 - [15:0] */
+#define WM8962_RETUNEDAC_SHARED_COEFF_15_00_SHIFT      0  /* RETUNEDAC_SHARED_COEFF_15_00 - [15:0] */
+#define WM8962_RETUNEDAC_SHARED_COEFF_15_00_WIDTH     16  /* RETUNEDAC_SHARED_COEFF_15_00 - [15:0] */
+
+/*
+ * R16388 (0x4004) - SOUNDSTAGE_ENABLES_1
+ */
+#define WM8962_SOUNDSTAGE_ENABLES_23_16_MASK    0x00FF  /* SOUNDSTAGE_ENABLES_23_16 - [7:0] */
+#define WM8962_SOUNDSTAGE_ENABLES_23_16_SHIFT        0  /* SOUNDSTAGE_ENABLES_23_16 - [7:0] */
+#define WM8962_SOUNDSTAGE_ENABLES_23_16_WIDTH        8  /* SOUNDSTAGE_ENABLES_23_16 - [7:0] */
+
+/*
+ * R16389 (0x4005) - SOUNDSTAGE_ENABLES_0
+ */
+#define WM8962_SOUNDSTAGE_ENABLES_15_06_MASK    0xFFC0  /* SOUNDSTAGE_ENABLES_15_06 - [15:6] */
+#define WM8962_SOUNDSTAGE_ENABLES_15_06_SHIFT        6  /* SOUNDSTAGE_ENABLES_15_06 - [15:6] */
+#define WM8962_SOUNDSTAGE_ENABLES_15_06_WIDTH       10  /* SOUNDSTAGE_ENABLES_15_06 - [15:6] */
+#define WM8962_RTN_ADC_ENA                      0x0020  /* RTN_ADC_ENA */
+#define WM8962_RTN_ADC_ENA_MASK                 0x0020  /* RTN_ADC_ENA */
+#define WM8962_RTN_ADC_ENA_SHIFT                     5  /* RTN_ADC_ENA */
+#define WM8962_RTN_ADC_ENA_WIDTH                     1  /* RTN_ADC_ENA */
+#define WM8962_RTN_DAC_ENA                      0x0010  /* RTN_DAC_ENA */
+#define WM8962_RTN_DAC_ENA_MASK                 0x0010  /* RTN_DAC_ENA */
+#define WM8962_RTN_DAC_ENA_SHIFT                     4  /* RTN_DAC_ENA */
+#define WM8962_RTN_DAC_ENA_WIDTH                     1  /* RTN_DAC_ENA */
+#define WM8962_HDBASS_ENA                       0x0008  /* HDBASS_ENA */
+#define WM8962_HDBASS_ENA_MASK                  0x0008  /* HDBASS_ENA */
+#define WM8962_HDBASS_ENA_SHIFT                      3  /* HDBASS_ENA */
+#define WM8962_HDBASS_ENA_WIDTH                      1  /* HDBASS_ENA */
+#define WM8962_HPF2_ENA                         0x0004  /* HPF2_ENA */
+#define WM8962_HPF2_ENA_MASK                    0x0004  /* HPF2_ENA */
+#define WM8962_HPF2_ENA_SHIFT                        2  /* HPF2_ENA */
+#define WM8962_HPF2_ENA_WIDTH                        1  /* HPF2_ENA */
+#define WM8962_HPF1_ENA                         0x0002  /* HPF1_ENA */
+#define WM8962_HPF1_ENA_MASK                    0x0002  /* HPF1_ENA */
+#define WM8962_HPF1_ENA_SHIFT                        1  /* HPF1_ENA */
+#define WM8962_HPF1_ENA_WIDTH                        1  /* HPF1_ENA */
+#define WM8962_VSS_ENA                          0x0001  /* VSS_ENA */
+#define WM8962_VSS_ENA_MASK                     0x0001  /* VSS_ENA */
+#define WM8962_VSS_ENA_SHIFT                         0  /* VSS_ENA */
+#define WM8962_VSS_ENA_WIDTH                         1  /* VSS_ENA */
+
+extern const u16 wm8962_reg[WM8962_MAX_REGISTER + 1];
+
+struct wm8962_reg_access {
+	u16 read;
+	u16 write;
+	u16 vol;
+};
+
+extern
+const struct wm8962_reg_access wm8962_reg_access[WM8962_MAX_REGISTER + 1];
+
+#endif
diff --git a/sound/soc/codecs/wm8971.c b/sound/soc/codecs/wm8971.c
index a99620f..63f6dbf 100644
--- a/sound/soc/codecs/wm8971.c
+++ b/sound/soc/codecs/wm8971.c
@@ -30,14 +30,13 @@
 
 #include "wm8971.h"
 
-#define WM8971_VERSION "0.9"
-
 #define	WM8971_REG_COUNT		43
 
 static struct workqueue_struct *wm8971_workq = NULL;
 
 /* codec private data */
 struct wm8971_priv {
+	enum snd_soc_control_type control_type;
 	unsigned int sysclk;
 };
 
@@ -492,8 +491,7 @@
 	struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct wm8971_priv *wm8971 = snd_soc_codec_get_drvdata(codec);
 	u16 iface = snd_soc_read(codec, WM8971_IFACE) & 0x1f3;
 	u16 srate = snd_soc_read(codec, WM8971_SRATE) & 0x1c0;
@@ -573,8 +571,8 @@
 	.set_sysclk	= wm8971_set_dai_sysclk,
 };
 
-struct snd_soc_dai wm8971_dai = {
-	.name = "WM8971",
+static struct snd_soc_dai_driver wm8971_dai = {
+	.name = "wm8971-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -589,7 +587,6 @@
 		.formats = WM8971_FORMATS,},
 	.ops = &wm8971_dai_ops,
 };
-EXPORT_SYMBOL_GPL(wm8971_dai);
 
 static void wm8971_work(struct work_struct *work)
 {
@@ -598,19 +595,14 @@
 	wm8971_set_bias_level(codec, codec->bias_level);
 }
 
-static int wm8971_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8971_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8971_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int wm8971_resume(struct platform_device *pdev)
+static int wm8971_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	int i;
 	u8 data[2];
 	u16 *cache = codec->reg_cache;
@@ -639,38 +631,25 @@
 	return 0;
 }
 
-static int wm8971_init(struct snd_soc_device *socdev,
-		       enum snd_soc_control_type control)
+static int wm8971_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = socdev->card->codec;
-	int reg, ret = 0;
+	struct wm8971_priv *wm8971 = snd_soc_codec_get_drvdata(codec);
+	int ret = 0;
+	u16 reg;
 
-	codec->name = "WM8971";
-	codec->owner = THIS_MODULE;
-	codec->set_bias_level = wm8971_set_bias_level;
-	codec->dai = &wm8971_dai;
-	codec->reg_cache_size = ARRAY_SIZE(wm8971_reg);
-	codec->num_dai = 1;
-	codec->reg_cache = kmemdup(wm8971_reg, sizeof(wm8971_reg), GFP_KERNEL);
-
-	if (codec->reg_cache == NULL)
-		return -ENOMEM;
-
-	ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9, wm8971->control_type);
 	if (ret < 0) {
 		printk(KERN_ERR "wm8971: failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
+	INIT_DELAYED_WORK(&codec->delayed_work, wm8971_work);
+	wm8971_workq = create_workqueue("wm8971");
+	if (wm8971_workq == NULL)
+		return -ENOMEM;
+
 	wm8971_reset(codec);
 
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "wm8971: failed to create pcms\n");
-		goto err;
-	}
-
 	/* charge output caps - set vmid to 5k for quick power up */
 	reg = snd_soc_read(codec, WM8971_PWR1) & 0xfe3e;
 	snd_soc_write(codec, WM8971_PWR1, reg | 0x01c0);
@@ -704,40 +683,54 @@
 	wm8971_add_widgets(codec);
 
 	return ret;
-
-err:
-	kfree(codec->reg_cache);
-	return ret;
 }
 
-/* If the i2c layer weren't so broken, we could pass this kind of data
-   around */
-static struct snd_soc_device *wm8971_socdev;
 
-#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-
-static int wm8971_i2c_probe(struct i2c_client *i2c,
-			    const struct i2c_device_id *id)
+/* power down chip */
+static int wm8971_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = wm8971_socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	wm8971_set_bias_level(codec, SND_SOC_BIAS_OFF);
+
+	if (wm8971_workq)
+		destroy_workqueue(wm8971_workq);
+	return 0;
+}
+
+static struct snd_soc_codec_driver soc_codec_dev_wm8971 = {
+	.probe =	wm8971_probe,
+	.remove =	wm8971_remove,
+	.suspend =	wm8971_suspend,
+	.resume =	wm8971_resume,
+	.set_bias_level = wm8971_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8971_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8971_reg,
+};
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+static __devinit int wm8971_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
+{
+	struct wm8971_priv *wm8971;
 	int ret;
 
-	i2c_set_clientdata(i2c, codec);
+	wm8971 = kzalloc(sizeof(struct wm8971_priv), GFP_KERNEL);
+	if (wm8971 == NULL)
+		return -ENOMEM;
 
-	codec->control_data = i2c;
+	i2c_set_clientdata(i2c, wm8971);
 
-	ret = wm8971_init(socdev, SND_SOC_I2C);
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8971, &wm8971_dai, 1);
 	if (ret < 0)
-		pr_err("failed to initialise WM8971\n");
-
+		kfree(wm8971);
 	return ret;
 }
 
-static int wm8971_i2c_remove(struct i2c_client *client)
+static __devexit int wm8971_i2c_remove(struct i2c_client *client)
 {
-	struct snd_soc_codec *codec = i2c_get_clientdata(client);
-	kfree(codec->reg_cache);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -749,148 +742,34 @@
 
 static struct i2c_driver wm8971_i2c_driver = {
 	.driver = {
-		.name = "WM8971 I2C Codec",
+		.name = "wm8971-codec",
 		.owner = THIS_MODULE,
 	},
-	.probe    = wm8971_i2c_probe,
-	.remove   = wm8971_i2c_remove,
+	.probe =    wm8971_i2c_probe,
+	.remove =   __devexit_p(wm8971_i2c_remove),
 	.id_table = wm8971_i2c_id,
 };
-
-static int wm8971_add_i2c_device(struct platform_device *pdev,
-				 const struct wm8971_setup_data *setup)
-{
-	struct i2c_board_info info;
-	struct i2c_adapter *adapter;
-	struct i2c_client *client;
-	int ret;
-
-	ret = i2c_add_driver(&wm8971_i2c_driver);
-	if (ret != 0) {
-		dev_err(&pdev->dev, "can't add i2c driver\n");
-		return ret;
-	}
-
-	memset(&info, 0, sizeof(struct i2c_board_info));
-	info.addr = setup->i2c_address;
-	strlcpy(info.type, "wm8971", I2C_NAME_SIZE);
-
-	adapter = i2c_get_adapter(setup->i2c_bus);
-	if (!adapter) {
-		dev_err(&pdev->dev, "can't get i2c adapter %d\n",
-			setup->i2c_bus);
-		goto err_driver;
-	}
-
-	client = i2c_new_device(adapter, &info);
-	i2c_put_adapter(adapter);
-	if (!client) {
-		dev_err(&pdev->dev, "can't add i2c device at 0x%x\n",
-			(unsigned int)info.addr);
-		goto err_driver;
-	}
-
-	return 0;
-
-err_driver:
-	i2c_del_driver(&wm8971_i2c_driver);
-	return -ENODEV;
-}
-
 #endif
 
-static int wm8971_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct wm8971_setup_data *setup;
-	struct snd_soc_codec *codec;
-	struct wm8971_priv *wm8971;
-	int ret = 0;
-
-	pr_info("WM8971 Audio Codec %s", WM8971_VERSION);
-
-	setup = socdev->codec_data;
-	codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (codec == NULL)
-		return -ENOMEM;
-
-	wm8971 = kzalloc(sizeof(struct wm8971_priv), GFP_KERNEL);
-	if (wm8971 == NULL) {
-		kfree(codec);
-		return -ENOMEM;
-	}
-
-	snd_soc_codec_set_drvdata(codec, wm8971);
-	socdev->card->codec = codec;
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-	wm8971_socdev = socdev;
-
-	INIT_DELAYED_WORK(&codec->delayed_work, wm8971_work);
-	wm8971_workq = create_workqueue("wm8971");
-	if (wm8971_workq == NULL) {
-		kfree(snd_soc_codec_get_drvdata(codec));
-		kfree(codec);
-		return -ENOMEM;
-	}
-
-#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-	if (setup->i2c_address) {
-		ret = wm8971_add_i2c_device(pdev, setup);
-	}
-#endif
-	/* Add other interfaces here */
-
-	if (ret != 0) {
-		destroy_workqueue(wm8971_workq);
-		kfree(snd_soc_codec_get_drvdata(codec));
-		kfree(codec);
-	}
-
-	return ret;
-}
-
-/* power down chip */
-static int wm8971_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (codec->control_data)
-		wm8971_set_bias_level(codec, SND_SOC_BIAS_OFF);
-	if (wm8971_workq)
-		destroy_workqueue(wm8971_workq);
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-	i2c_unregister_device(codec->control_data);
-	i2c_del_driver(&wm8971_i2c_driver);
-#endif
-	kfree(snd_soc_codec_get_drvdata(codec));
-	kfree(codec);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8971 = {
-	.probe = 	wm8971_probe,
-	.remove = 	wm8971_remove,
-	.suspend = 	wm8971_suspend,
-	.resume =	wm8971_resume,
-};
-
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8971);
-
 static int __init wm8971_modinit(void)
 {
-	return snd_soc_register_dai(&wm8971_dai);
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	ret = i2c_add_driver(&wm8971_i2c_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register WM8971 I2C driver: %d\n",
+		       ret);
+	}
+#endif
+	return ret;
 }
 module_init(wm8971_modinit);
 
 static void __exit wm8971_exit(void)
 {
-	snd_soc_unregister_dai(&wm8971_dai);
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	i2c_del_driver(&wm8971_i2c_driver);
+#endif
 }
 module_exit(wm8971_exit);
 
diff --git a/sound/soc/codecs/wm8971.h b/sound/soc/codecs/wm8971.h
index ef4f08f..f31c38f 100644
--- a/sound/soc/codecs/wm8971.h
+++ b/sound/soc/codecs/wm8971.h
@@ -53,12 +53,4 @@
 
 #define WM8971_SYSCLK	0
 
-struct wm8971_setup_data {
-	int i2c_bus;
-	unsigned short i2c_address;
-};
-
-extern struct snd_soc_dai wm8971_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8971;
-
 #endif
diff --git a/sound/soc/codecs/wm8974.c b/sound/soc/codecs/wm8974.c
index 1468fe1..b4363f6 100644
--- a/sound/soc/codecs/wm8974.c
+++ b/sound/soc/codecs/wm8974.c
@@ -51,12 +51,10 @@
 #define WM8974_POWER1_BUFIOEN 0x04
 
 struct wm8974_priv {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
 	u16 reg_cache[WM8974_CACHEREGNUM];
 };
 
-static struct snd_soc_codec *wm8974_codec;
-
 #define wm8974_reset(c)	snd_soc_write(c, WM8974_RESET, 0)
 
 static const char *wm8974_companding[] = {"Off", "NC", "u-law", "A-law" };
@@ -566,8 +564,8 @@
 	.set_pll = wm8974_set_dai_pll,
 };
 
-struct snd_soc_dai wm8974_dai = {
-	.name = "WM8974 HiFi",
+static struct snd_soc_dai_driver wm8974_dai = {
+	.name = "wm8974-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -583,21 +581,15 @@
 	.ops = &wm8974_ops,
 	.symmetric_rates = 1,
 };
-EXPORT_SYMBOL_GPL(wm8974_dai);
 
-static int wm8974_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8974_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8974_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int wm8974_resume(struct platform_device *pdev)
+static int wm8974_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	int i;
 	u8 data[2];
 	u16 *cache = codec->reg_cache;
@@ -613,156 +605,72 @@
 	return 0;
 }
 
-static int wm8974_probe(struct platform_device *pdev)
+static int wm8974_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
 	int ret = 0;
 
-	if (wm8974_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8974_codec;
-	codec = wm8974_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9, SND_SOC_I2C);
 	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
+		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
+		return ret;
 	}
 
+	ret = wm8974_reset(codec);
+	if (ret < 0) {
+		dev_err(codec->dev, "Failed to issue reset\n");
+		return ret;
+	}
+
+	wm8974_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 	snd_soc_add_controls(codec, wm8974_snd_controls,
 			     ARRAY_SIZE(wm8974_snd_controls));
 	wm8974_add_widgets(codec);
 
 	return ret;
-
-pcm_err:
-	return ret;
 }
 
 /* power down chip */
-static int wm8974_remove(struct platform_device *pdev)
+static int wm8974_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
+	wm8974_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-struct snd_soc_codec_device soc_codec_dev_wm8974 = {
+static struct snd_soc_codec_driver soc_codec_dev_wm8974 = {
 	.probe = 	wm8974_probe,
 	.remove = 	wm8974_remove,
 	.suspend = 	wm8974_suspend,
 	.resume =	wm8974_resume,
+	.set_bias_level = wm8974_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8974_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8974_reg,
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8974);
 
-static __devinit int wm8974_register(struct wm8974_priv *wm8974)
-{
-	int ret;
-	struct snd_soc_codec *codec = &wm8974->codec;
-
-	if (wm8974_codec) {
-		dev_err(codec->dev, "Another WM8974 is registered\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm8974);
-	codec->name = "WM8974";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8974_set_bias_level;
-	codec->dai = &wm8974_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = WM8974_CACHEREGNUM;
-	codec->reg_cache = &wm8974->reg_cache;
-
-	ret = snd_soc_codec_set_cache_io(codec, 7, 9, SND_SOC_I2C);
-	if (ret < 0) {
-		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
-	}
-
-	memcpy(codec->reg_cache, wm8974_reg, sizeof(wm8974_reg));
-
-	ret = wm8974_reset(codec);
-	if (ret < 0) {
-		dev_err(codec->dev, "Failed to issue reset\n");
-		goto err;
-	}
-
-	wm8974_dai.dev = codec->dev;
-
-	wm8974_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
-	wm8974_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err;
-	}
-
-	ret = snd_soc_register_dai(&wm8974_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
-
-	return 0;
-
-err_codec:
-	snd_soc_unregister_codec(codec);
-err:
-	kfree(wm8974);
-	return ret;
-}
-
-static __devexit void wm8974_unregister(struct wm8974_priv *wm8974)
-{
-	wm8974_set_bias_level(&wm8974->codec, SND_SOC_BIAS_OFF);
-	snd_soc_unregister_dai(&wm8974_dai);
-	snd_soc_unregister_codec(&wm8974->codec);
-	kfree(wm8974);
-	wm8974_codec = NULL;
-}
-
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 static __devinit int wm8974_i2c_probe(struct i2c_client *i2c,
 				      const struct i2c_device_id *id)
 {
 	struct wm8974_priv *wm8974;
-	struct snd_soc_codec *codec;
+	int ret;
 
 	wm8974 = kzalloc(sizeof(struct wm8974_priv), GFP_KERNEL);
 	if (wm8974 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8974->codec;
-	codec->hw_write = (hw_write_t)i2c_master_send;
-
 	i2c_set_clientdata(i2c, wm8974);
-	codec->control_data = i2c;
 
-	codec->dev = &i2c->dev;
-
-	return wm8974_register(wm8974);
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8974, &wm8974_dai, 1);
+	if (ret < 0)
+		kfree(wm8974);
+	return ret;
 }
 
 static __devexit int wm8974_i2c_remove(struct i2c_client *client)
 {
-	struct wm8974_priv *wm8974 = i2c_get_clientdata(client);
-	wm8974_unregister(wm8974);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -774,23 +682,34 @@
 
 static struct i2c_driver wm8974_i2c_driver = {
 	.driver = {
-		.name = "WM8974",
+		.name = "wm8974-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8974_i2c_probe,
 	.remove =   __devexit_p(wm8974_i2c_remove),
 	.id_table = wm8974_i2c_id,
 };
+#endif
 
 static int __init wm8974_modinit(void)
 {
-	return i2c_add_driver(&wm8974_i2c_driver);
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	ret = i2c_add_driver(&wm8974_i2c_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register wm8974 I2C driver: %d\n",
+		       ret);
+	}
+#endif
+	return ret;
 }
 module_init(wm8974_modinit);
 
 static void __exit wm8974_exit(void)
 {
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	i2c_del_driver(&wm8974_i2c_driver);
+#endif
 }
 module_exit(wm8974_exit);
 
diff --git a/sound/soc/codecs/wm8974.h b/sound/soc/codecs/wm8974.h
index 896a7f0..3c94e7b 100644
--- a/sound/soc/codecs/wm8974.h
+++ b/sound/soc/codecs/wm8974.h
@@ -83,7 +83,4 @@
 #define WM8974_MCLKDIV_8	(6 << 5)
 #define WM8974_MCLKDIV_12	(7 << 5)
 
-extern struct snd_soc_dai wm8974_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8974;
-
 #endif
diff --git a/sound/soc/codecs/wm8978.c b/sound/soc/codecs/wm8978.c
index 8a1ad77..13b979a 100644
--- a/sound/soc/codecs/wm8978.c
+++ b/sound/soc/codecs/wm8978.c
@@ -31,8 +31,6 @@
 
 #include "wm8978.h"
 
-static struct snd_soc_codec *wm8978_codec;
-
 /* wm8978 register cache. Note that register 0 is not included in the cache. */
 static const u16 wm8978_reg[WM8978_CACHEREGNUM] = {
 	0x0000, 0x0000, 0x0000, 0x0000,	/* 0x00...0x03 */
@@ -54,7 +52,8 @@
 
 /* codec private data */
 struct wm8978_priv {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
+	void *control_data;
 	unsigned int f_pllout;
 	unsigned int f_mclk;
 	unsigned int f_256fs;
@@ -374,8 +373,8 @@
 
 #define FIXED_PLL_SIZE (1 << 24)
 
-static void pll_factors(struct wm8978_pll_div *pll_div, unsigned int target,
-			unsigned int source)
+static void pll_factors(struct snd_soc_codec *codec,
+		struct wm8978_pll_div *pll_div, unsigned int target, unsigned int source)
 {
 	u64 k_part;
 	unsigned int k, n_div, n_mod;
@@ -390,7 +389,7 @@
 	}
 
 	if (n_div < 6 || n_div > 12)
-		dev_warn(wm8978_codec->dev,
+		dev_warn(codec->dev,
 			 "WM8978 N value exceeds recommended range! N = %u\n",
 			 n_div);
 
@@ -505,7 +504,7 @@
 	dev_dbg(codec->dev, "%s: f_MCLK=%uHz, f_PLLOUT=%uHz\n", __func__,
 		wm8978->f_mclk, wm8978->f_pllout);
 
-	pll_factors(&pll_div, f2, wm8978->f_mclk);
+	pll_factors(codec, &pll_div, f2, wm8978->f_mclk);
 
 	dev_dbg(codec->dev, "%s: calculated PLL N=0x%x, K=0x%x, div2=%d\n",
 		__func__, pll_div.n, pll_div.k, pll_div.div2);
@@ -690,8 +689,7 @@
 			    struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec);
 	/* Word length mask = 0x60 */
 	u16 iface_ctl = snd_soc_read(codec, WM8978_AUDIO_INTERFACE) & ~0x60;
@@ -875,9 +873,8 @@
 };
 
 /* Also supports 12kHz */
-struct snd_soc_dai wm8978_dai = {
-	.name = "WM8978 HiFi",
-	.id = 1,
+static struct snd_soc_dai_driver wm8978_dai = {
+	.name = "wm8978-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -894,13 +891,9 @@
 	},
 	.ops = &wm8978_dai_ops,
 };
-EXPORT_SYMBOL_GPL(wm8978_dai);
 
-static int wm8978_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8978_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8978_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	/* Also switch PLL off */
 	snd_soc_write(codec, WM8978_POWER_MANAGEMENT_1, 0);
@@ -908,10 +901,8 @@
 	return 0;
 }
 
-static int wm8978_resume(struct platform_device *pdev)
+static int wm8978_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec);
 	int i;
 	u16 *cache = codec->reg_cache;
@@ -933,54 +924,6 @@
 	return 0;
 }
 
-static int wm8978_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
-
-	if (wm8978_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8978_codec;
-	codec = wm8978_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
-	snd_soc_add_controls(codec, wm8978_snd_controls,
-			     ARRAY_SIZE(wm8978_snd_controls));
-	wm8978_add_widgets(codec);
-
-pcm_err:
-	return ret;
-}
-
-/* power down chip */
-static int wm8978_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8978 = {
-	.probe		= wm8978_probe,
-	.remove		= wm8978_remove,
-	.suspend	= wm8978_suspend,
-	.resume		= wm8978_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8978);
-
 /*
  * These registers contain an "update" bit - bit 8. This means, for example,
  * that one can write new DAC digital volume for both channels, but only when
@@ -1000,44 +943,23 @@
 	WM8978_ROUT2_SPK_CONTROL,
 };
 
-static __devinit int wm8978_register(struct wm8978_priv *wm8978)
+static int wm8978_probe(struct snd_soc_codec *codec)
 {
-	int ret, i;
-	struct snd_soc_codec *codec = &wm8978->codec;
-
-	if (wm8978_codec) {
-		dev_err(codec->dev, "Another WM8978 is registered\n");
-		return -EINVAL;
-	}
+	struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec);
+	int ret = 0, i;
 
 	/*
 	 * Set default system clock to PLL, it is more precise, this is also the
 	 * default hardware setting
 	 */
 	wm8978->sysclk = WM8978_PLL;
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm8978);
-	codec->name = "WM8978";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8978_set_bias_level;
-	codec->dai = &wm8978_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = WM8978_CACHEREGNUM;
-	codec->reg_cache = &wm8978->reg_cache;
-
+	codec->control_data = wm8978->control_data;
 	ret = snd_soc_codec_set_cache_io(codec, 7, 9, SND_SOC_I2C);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
-	memcpy(codec->reg_cache, wm8978_reg, sizeof(wm8978_reg));
-
 	/*
 	 * Set the update bit in all registers, that have one. This way all
 	 * writes to those registers will also cause the update bit to be
@@ -1050,74 +972,61 @@
 	ret = snd_soc_write(codec, WM8978_RESET, 0);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to issue reset\n");
-		goto err;
+		return ret;
 	}
 
-	wm8978_dai.dev = codec->dev;
-
 	wm8978_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
-	wm8978_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err;
-	}
-
-	ret = snd_soc_register_dai(&wm8978_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
+	snd_soc_add_controls(codec, wm8978_snd_controls,
+			     ARRAY_SIZE(wm8978_snd_controls));
+	wm8978_add_widgets(codec);
 
 	return 0;
-
-err_codec:
-	snd_soc_unregister_codec(codec);
-err:
-	return ret;
 }
 
-static __devexit void wm8978_unregister(struct wm8978_priv *wm8978)
+/* power down chip */
+static int wm8978_remove(struct snd_soc_codec *codec)
 {
-	wm8978_set_bias_level(&wm8978->codec, SND_SOC_BIAS_OFF);
-	snd_soc_unregister_dai(&wm8978_dai);
-	snd_soc_unregister_codec(&wm8978->codec);
-	wm8978_codec = NULL;
+	wm8978_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_wm8978 = {
+	.probe =	wm8978_probe,
+	.remove =	wm8978_remove,
+	.suspend =	wm8978_suspend,
+	.resume =	wm8978_resume,
+	.set_bias_level = wm8978_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8978_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8978_reg,
+};
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 static __devinit int wm8978_i2c_probe(struct i2c_client *i2c,
 				      const struct i2c_device_id *id)
 {
-	int ret;
 	struct wm8978_priv *wm8978;
-	struct snd_soc_codec *codec;
+	int ret;
 
 	wm8978 = kzalloc(sizeof(struct wm8978_priv), GFP_KERNEL);
 	if (wm8978 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8978->codec;
-	codec->hw_write = (hw_write_t)i2c_master_send;
-
 	i2c_set_clientdata(i2c, wm8978);
-	codec->control_data = i2c;
+	wm8978->control_data = i2c;
 
-	codec->dev = &i2c->dev;
-
-	ret = wm8978_register(wm8978);
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8978, &wm8978_dai, 1);
 	if (ret < 0)
 		kfree(wm8978);
-
 	return ret;
 }
 
 static __devexit int wm8978_i2c_remove(struct i2c_client *client)
 {
-	struct wm8978_priv *wm8978 = i2c_get_clientdata(client);
-	wm8978_unregister(wm8978);
-	kfree(wm8978);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -1129,23 +1038,34 @@
 
 static struct i2c_driver wm8978_i2c_driver = {
 	.driver = {
-		.name = "WM8978",
+		.name = "wm8978",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8978_i2c_probe,
 	.remove =   __devexit_p(wm8978_i2c_remove),
 	.id_table = wm8978_i2c_id,
 };
+#endif
 
 static int __init wm8978_modinit(void)
 {
-	return i2c_add_driver(&wm8978_i2c_driver);
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	ret = i2c_add_driver(&wm8978_i2c_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register WM8978 I2C driver: %d\n",
+		       ret);
+	}
+#endif
+	return ret;
 }
 module_init(wm8978_modinit);
 
 static void __exit wm8978_exit(void)
 {
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	i2c_del_driver(&wm8978_i2c_driver);
+#endif
 }
 module_exit(wm8978_exit);
 
diff --git a/sound/soc/codecs/wm8978.h b/sound/soc/codecs/wm8978.h
index 56ec832..c75525b 100644
--- a/sound/soc/codecs/wm8978.h
+++ b/sound/soc/codecs/wm8978.h
@@ -80,7 +80,4 @@
 	WM8978_MCLK
 };
 
-extern struct snd_soc_dai wm8978_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8978;
-
 #endif	/* __WM8978_H__ */
diff --git a/sound/soc/codecs/wm8985.c b/sound/soc/codecs/wm8985.c
new file mode 100644
index 0000000..247585a
--- /dev/null
+++ b/sound/soc/codecs/wm8985.c
@@ -0,0 +1,1195 @@
+/*
+ * wm8985.c  --  WM8985 ALSA SoC Audio driver
+ *
+ * Copyright 2010 Wolfson Microelectronics plc
+ *
+ * Author: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * TODO:
+ *  o Add OUT3/OUT4 mixer controls.
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/init.h>
+#include <linux/delay.h>
+#include <linux/pm.h>
+#include <linux/i2c.h>
+#include <linux/regulator/consumer.h>
+#include <linux/spi/spi.h>
+#include <linux/slab.h>
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+#include <sound/soc-dapm.h>
+#include <sound/initval.h>
+#include <sound/tlv.h>
+
+#include "wm8985.h"
+
+#define WM8985_NUM_SUPPLIES 4
+static const char *wm8985_supply_names[WM8985_NUM_SUPPLIES] = {
+	"DCVDD",
+	"DBVDD",
+	"AVDD1",
+	"AVDD2"
+};
+
+static const u16 wm8985_reg_defs[] = {
+	0x0000,     /* R0  - Software Reset */
+	0x0000,     /* R1  - Power management 1 */
+	0x0000,     /* R2  - Power management 2 */
+	0x0000,     /* R3  - Power management 3 */
+	0x0050,     /* R4  - Audio Interface */
+	0x0000,     /* R5  - Companding control */
+	0x0140,     /* R6  - Clock Gen control */
+	0x0000,     /* R7  - Additional control */
+	0x0000,     /* R8  - GPIO Control */
+	0x0000,     /* R9  - Jack Detect Control 1 */
+	0x0000,     /* R10 - DAC Control */
+	0x00FF,     /* R11 - Left DAC digital Vol */
+	0x00FF,     /* R12 - Right DAC digital vol */
+	0x0000,     /* R13 - Jack Detect Control 2 */
+	0x0100,     /* R14 - ADC Control */
+	0x00FF,     /* R15 - Left ADC Digital Vol */
+	0x00FF,     /* R16 - Right ADC Digital Vol */
+	0x0000,     /* R17 */
+	0x012C,     /* R18 - EQ1 - low shelf */
+	0x002C,     /* R19 - EQ2 - peak 1 */
+	0x002C,     /* R20 - EQ3 - peak 2 */
+	0x002C,     /* R21 - EQ4 - peak 3 */
+	0x002C,     /* R22 - EQ5 - high shelf */
+	0x0000,     /* R23 */
+	0x0032,     /* R24 - DAC Limiter 1 */
+	0x0000,     /* R25 - DAC Limiter 2 */
+	0x0000,     /* R26 */
+	0x0000,     /* R27 - Notch Filter 1 */
+	0x0000,     /* R28 - Notch Filter 2 */
+	0x0000,     /* R29 - Notch Filter 3 */
+	0x0000,     /* R30 - Notch Filter 4 */
+	0x0000,     /* R31 */
+	0x0038,     /* R32 - ALC control 1 */
+	0x000B,     /* R33 - ALC control 2 */
+	0x0032,     /* R34 - ALC control 3 */
+	0x0000,     /* R35 - Noise Gate */
+	0x0008,     /* R36 - PLL N */
+	0x000C,     /* R37 - PLL K 1 */
+	0x0093,     /* R38 - PLL K 2 */
+	0x00E9,     /* R39 - PLL K 3 */
+	0x0000,     /* R40 */
+	0x0000,     /* R41 - 3D control */
+	0x0000,     /* R42 - OUT4 to ADC */
+	0x0000,     /* R43 - Beep control */
+	0x0033,     /* R44 - Input ctrl */
+	0x0010,     /* R45 - Left INP PGA gain ctrl */
+	0x0010,     /* R46 - Right INP PGA gain ctrl */
+	0x0100,     /* R47 - Left ADC BOOST ctrl */
+	0x0100,     /* R48 - Right ADC BOOST ctrl */
+	0x0002,     /* R49 - Output ctrl */
+	0x0001,     /* R50 - Left mixer ctrl */
+	0x0001,     /* R51 - Right mixer ctrl */
+	0x0039,     /* R52 - LOUT1 (HP) volume ctrl */
+	0x0039,     /* R53 - ROUT1 (HP) volume ctrl */
+	0x0039,     /* R54 - LOUT2 (SPK) volume ctrl */
+	0x0039,     /* R55 - ROUT2 (SPK) volume ctrl */
+	0x0001,     /* R56 - OUT3 mixer ctrl */
+	0x0001,     /* R57 - OUT4 (MONO) mix ctrl */
+	0x0001,     /* R58 */
+	0x0000,     /* R59 */
+	0x0004,     /* R60 - OUTPUT ctrl */
+	0x0000,     /* R61 - BIAS CTRL */
+	0x0180,     /* R62 */
+	0x0000      /* R63 */
+};
+
+/*
+ * latch bit 8 of these registers to ensure instant
+ * volume updates
+ */
+static const int volume_update_regs[] = {
+	WM8985_LEFT_DAC_DIGITAL_VOL,
+	WM8985_RIGHT_DAC_DIGITAL_VOL,
+	WM8985_LEFT_ADC_DIGITAL_VOL,
+	WM8985_RIGHT_ADC_DIGITAL_VOL,
+	WM8985_LOUT2_SPK_VOLUME_CTRL,
+	WM8985_ROUT2_SPK_VOLUME_CTRL,
+	WM8985_LOUT1_HP_VOLUME_CTRL,
+	WM8985_ROUT1_HP_VOLUME_CTRL,
+	WM8985_LEFT_INP_PGA_GAIN_CTRL,
+	WM8985_RIGHT_INP_PGA_GAIN_CTRL
+};
+
+struct wm8985_priv {
+	enum snd_soc_control_type control_type;
+	struct regulator_bulk_data supplies[WM8985_NUM_SUPPLIES];
+	unsigned int sysclk;
+	unsigned int bclk;
+};
+
+static const struct {
+	int div;
+	int ratio;
+} fs_ratios[] = {
+	{ 10, 128 },
+	{ 15, 192 },
+	{ 20, 256 },
+	{ 30, 384 },
+	{ 40, 512 },
+	{ 60, 768 },
+	{ 80, 1024 },
+	{ 120, 1536 }
+};
+
+static const int srates[] = { 48000, 32000, 24000, 16000, 12000, 8000 };
+
+static const int bclk_divs[] = {
+	1, 2, 4, 8, 16, 32
+};
+
+static int eqmode_get(struct snd_kcontrol *kcontrol,
+		      struct snd_ctl_elem_value *ucontrol);
+static int eqmode_put(struct snd_kcontrol *kcontrol,
+		      struct snd_ctl_elem_value *ucontrol);
+
+static const DECLARE_TLV_DB_SCALE(dac_tlv, -12700, 50, 1);
+static const DECLARE_TLV_DB_SCALE(adc_tlv, -12700, 50, 1);
+static const DECLARE_TLV_DB_SCALE(out_tlv, -5700, 100, 0);
+static const DECLARE_TLV_DB_SCALE(lim_thresh_tlv, -600, 100, 0);
+static const DECLARE_TLV_DB_SCALE(lim_boost_tlv, 0, 100, 0);
+static const DECLARE_TLV_DB_SCALE(alc_min_tlv, -1200, 600, 0);
+static const DECLARE_TLV_DB_SCALE(alc_max_tlv, -675, 600, 0);
+static const DECLARE_TLV_DB_SCALE(alc_tar_tlv, -2250, 150, 0);
+static const DECLARE_TLV_DB_SCALE(pga_vol_tlv, -1200, 75, 0);
+static const DECLARE_TLV_DB_SCALE(boost_tlv, -1200, 300, 1);
+static const DECLARE_TLV_DB_SCALE(eq_tlv, -1200, 100, 0);
+static const DECLARE_TLV_DB_SCALE(aux_tlv, -1500, 300, 0);
+static const DECLARE_TLV_DB_SCALE(bypass_tlv, -1500, 300, 0);
+static const DECLARE_TLV_DB_SCALE(pga_boost_tlv, 0, 2000, 0);
+
+static const char *alc_sel_text[] = { "Off", "Right", "Left", "Stereo" };
+static const SOC_ENUM_SINGLE_DECL(alc_sel, WM8985_ALC_CONTROL_1, 7,
+				  alc_sel_text);
+
+static const char *alc_mode_text[] = { "ALC", "Limiter" };
+static const SOC_ENUM_SINGLE_DECL(alc_mode, WM8985_ALC_CONTROL_3, 8,
+				  alc_mode_text);
+
+static const char *filter_mode_text[] = { "Audio", "Application" };
+static const SOC_ENUM_SINGLE_DECL(filter_mode, WM8985_ADC_CONTROL, 7,
+				  filter_mode_text);
+
+static const char *eq_bw_text[] = { "Narrow", "Wide" };
+static const char *eqmode_text[] = { "Capture", "Playback" };
+static const SOC_ENUM_SINGLE_DECL(eqmode, WM8985_EQ1_LOW_SHELF, 8,
+				  eqmode_text);
+static const char *eq1_cutoff_text[] = {
+	"80Hz", "105Hz", "135Hz", "175Hz"
+};
+static const SOC_ENUM_SINGLE_DECL(eq1_cutoff, WM8985_EQ1_LOW_SHELF, 5,
+				  eq1_cutoff_text);
+static const char *eq2_cutoff_text[] = {
+	"230Hz", "300Hz", "385Hz", "500Hz"
+};
+static const SOC_ENUM_SINGLE_DECL(eq2_bw, WM8985_EQ2_PEAK_1, 8, eq_bw_text);
+static const SOC_ENUM_SINGLE_DECL(eq2_cutoff, WM8985_EQ2_PEAK_1, 5,
+				  eq2_cutoff_text);
+static const char *eq3_cutoff_text[] = {
+	"650Hz", "850Hz", "1.1kHz", "1.4kHz"
+};
+static const SOC_ENUM_SINGLE_DECL(eq3_bw, WM8985_EQ3_PEAK_2, 8, eq_bw_text);
+static const SOC_ENUM_SINGLE_DECL(eq3_cutoff, WM8985_EQ3_PEAK_2, 5,
+				  eq3_cutoff_text);
+static const char *eq4_cutoff_text[] = {
+	"1.8kHz", "2.4kHz", "3.2kHz", "4.1kHz"
+};
+static const SOC_ENUM_SINGLE_DECL(eq4_bw, WM8985_EQ4_PEAK_3, 8, eq_bw_text);
+static const SOC_ENUM_SINGLE_DECL(eq4_cutoff, WM8985_EQ4_PEAK_3, 5,
+				  eq4_cutoff_text);
+static const char *eq5_cutoff_text[] = {
+	"5.3kHz", "6.9kHz", "9kHz", "11.7kHz"
+};
+static const SOC_ENUM_SINGLE_DECL(eq5_cutoff, WM8985_EQ5_HIGH_SHELF, 5,
+				  eq5_cutoff_text);
+
+static const char *speaker_mode_text[] = { "Class A/B", "Class D" };
+static const SOC_ENUM_SINGLE_DECL(speaker_mode, 0x17, 8, speaker_mode_text);
+
+static const char *depth_3d_text[] = {
+	"Off",
+	"6.67%",
+	"13.3%",
+	"20%",
+	"26.7%",
+	"33.3%",
+	"40%",
+	"46.6%",
+	"53.3%",
+	"60%",
+	"66.7%",
+	"73.3%",
+	"80%",
+	"86.7%",
+	"93.3%",
+	"100%"
+};
+static const SOC_ENUM_SINGLE_DECL(depth_3d, WM8985_3D_CONTROL, 0,
+				  depth_3d_text);
+
+static const struct snd_kcontrol_new wm8985_snd_controls[] = {
+	SOC_SINGLE("Digital Loopback Switch", WM8985_COMPANDING_CONTROL,
+		0, 1, 0),
+
+	SOC_ENUM("ALC Capture Function", alc_sel),
+	SOC_SINGLE_TLV("ALC Capture Max Volume", WM8985_ALC_CONTROL_1,
+		3, 7, 0, alc_max_tlv),
+	SOC_SINGLE_TLV("ALC Capture Min Volume", WM8985_ALC_CONTROL_1,
+		0, 7, 0, alc_min_tlv),
+	SOC_SINGLE_TLV("ALC Capture Target Volume", WM8985_ALC_CONTROL_2,
+		0, 15, 0, alc_tar_tlv),
+	SOC_SINGLE("ALC Capture Attack", WM8985_ALC_CONTROL_3, 0, 10, 0),
+	SOC_SINGLE("ALC Capture Hold", WM8985_ALC_CONTROL_2, 4, 10, 0),
+	SOC_SINGLE("ALC Capture Decay", WM8985_ALC_CONTROL_3, 4, 10, 0),
+	SOC_ENUM("ALC Mode", alc_mode),
+	SOC_SINGLE("ALC Capture NG Switch", WM8985_NOISE_GATE,
+		3, 1, 0),
+	SOC_SINGLE("ALC Capture NG Threshold", WM8985_NOISE_GATE,
+		0, 7, 1),
+
+	SOC_DOUBLE_R_TLV("Capture Volume", WM8985_LEFT_ADC_DIGITAL_VOL,
+		WM8985_RIGHT_ADC_DIGITAL_VOL, 0, 255, 0, adc_tlv),
+	SOC_DOUBLE_R("Capture PGA ZC Switch", WM8985_LEFT_INP_PGA_GAIN_CTRL,
+		WM8985_RIGHT_INP_PGA_GAIN_CTRL, 7, 1, 0),
+	SOC_DOUBLE_R_TLV("Capture PGA Volume", WM8985_LEFT_INP_PGA_GAIN_CTRL,
+		WM8985_RIGHT_INP_PGA_GAIN_CTRL, 0, 63, 0, pga_vol_tlv),
+
+	SOC_DOUBLE_R_TLV("Capture PGA Boost Volume",
+		WM8985_LEFT_ADC_BOOST_CTRL, WM8985_RIGHT_ADC_BOOST_CTRL,
+		8, 1, 0, pga_boost_tlv),
+
+	SOC_DOUBLE("ADC Inversion Switch", WM8985_ADC_CONTROL, 0, 1, 1, 0),
+	SOC_SINGLE("ADC 128x Oversampling Switch", WM8985_ADC_CONTROL, 8, 1, 0),
+
+	SOC_DOUBLE_R_TLV("Playback Volume", WM8985_LEFT_DAC_DIGITAL_VOL,
+		WM8985_RIGHT_DAC_DIGITAL_VOL, 0, 255, 0, dac_tlv),
+
+	SOC_SINGLE("DAC Playback Limiter Switch", WM8985_DAC_LIMITER_1, 8, 1, 0),
+	SOC_SINGLE("DAC Playback Limiter Decay", WM8985_DAC_LIMITER_1, 4, 10, 0),
+	SOC_SINGLE("DAC Playback Limiter Attack", WM8985_DAC_LIMITER_1, 0, 11, 0),
+	SOC_SINGLE_TLV("DAC Playback Limiter Threshold", WM8985_DAC_LIMITER_2,
+		4, 7, 1, lim_thresh_tlv),
+	SOC_SINGLE_TLV("DAC Playback Limiter Boost Volume", WM8985_DAC_LIMITER_2,
+		0, 12, 0, lim_boost_tlv),
+	SOC_DOUBLE("DAC Inversion Switch", WM8985_DAC_CONTROL, 0, 1, 1, 0),
+	SOC_SINGLE("DAC Auto Mute Switch", WM8985_DAC_CONTROL, 2, 1, 0),
+	SOC_SINGLE("DAC 128x Oversampling Switch", WM8985_DAC_CONTROL, 3, 1, 0),
+
+	SOC_DOUBLE_R_TLV("Headphone Playback Volume", WM8985_LOUT1_HP_VOLUME_CTRL,
+		WM8985_ROUT1_HP_VOLUME_CTRL, 0, 63, 0, out_tlv),
+	SOC_DOUBLE_R("Headphone Playback ZC Switch", WM8985_LOUT1_HP_VOLUME_CTRL,
+		WM8985_ROUT1_HP_VOLUME_CTRL, 7, 1, 0),
+	SOC_DOUBLE_R("Headphone Switch", WM8985_LOUT1_HP_VOLUME_CTRL,
+		WM8985_ROUT1_HP_VOLUME_CTRL, 6, 1, 1),
+
+	SOC_DOUBLE_R_TLV("Speaker Playback Volume", WM8985_LOUT2_SPK_VOLUME_CTRL,
+		WM8985_ROUT2_SPK_VOLUME_CTRL, 0, 63, 0, out_tlv),
+	SOC_DOUBLE_R("Speaker Playback ZC Switch", WM8985_LOUT2_SPK_VOLUME_CTRL,
+		WM8985_ROUT2_SPK_VOLUME_CTRL, 7, 1, 0),
+	SOC_DOUBLE_R("Speaker Switch", WM8985_LOUT2_SPK_VOLUME_CTRL,
+		WM8985_ROUT2_SPK_VOLUME_CTRL, 6, 1, 1),
+
+	SOC_SINGLE("High Pass Filter Switch", WM8985_ADC_CONTROL, 8, 1, 0),
+	SOC_ENUM("High Pass Filter Mode", filter_mode),
+	SOC_SINGLE("High Pass Filter Cutoff", WM8985_ADC_CONTROL, 4, 7, 0),
+
+	SOC_DOUBLE_R_TLV("Aux Bypass Volume",
+		WM8985_LEFT_MIXER_CTRL, WM8985_RIGHT_MIXER_CTRL, 6, 7, 0,
+		aux_tlv),
+
+	SOC_DOUBLE_R_TLV("Input PGA Bypass Volume",
+		WM8985_LEFT_MIXER_CTRL, WM8985_RIGHT_MIXER_CTRL, 2, 7, 0,
+		bypass_tlv),
+
+	SOC_ENUM_EXT("Equalizer Function", eqmode, eqmode_get, eqmode_put),
+	SOC_ENUM("EQ1 Cutoff", eq1_cutoff),
+	SOC_SINGLE_TLV("EQ1 Volume", WM8985_EQ1_LOW_SHELF,  0, 24, 1, eq_tlv),
+	SOC_ENUM("EQ2 Bandwith", eq2_bw),
+	SOC_ENUM("EQ2 Cutoff", eq2_cutoff),
+	SOC_SINGLE_TLV("EQ2 Volume", WM8985_EQ2_PEAK_1, 0, 24, 1, eq_tlv),
+	SOC_ENUM("EQ3 Bandwith", eq3_bw),
+	SOC_ENUM("EQ3 Cutoff", eq3_cutoff),
+	SOC_SINGLE_TLV("EQ3 Volume", WM8985_EQ3_PEAK_2, 0, 24, 1, eq_tlv),
+	SOC_ENUM("EQ4 Bandwith", eq4_bw),
+	SOC_ENUM("EQ4 Cutoff", eq4_cutoff),
+	SOC_SINGLE_TLV("EQ4 Volume", WM8985_EQ4_PEAK_3, 0, 24, 1, eq_tlv),
+	SOC_ENUM("EQ5 Cutoff", eq5_cutoff),
+	SOC_SINGLE_TLV("EQ5 Volume", WM8985_EQ5_HIGH_SHELF, 0, 24, 1, eq_tlv),
+
+	SOC_ENUM("3D Depth", depth_3d),
+
+	SOC_ENUM("Speaker Mode", speaker_mode)
+};
+
+static const struct snd_kcontrol_new left_out_mixer[] = {
+	SOC_DAPM_SINGLE("Line Switch", WM8985_LEFT_MIXER_CTRL, 1, 1, 0),
+	SOC_DAPM_SINGLE("Aux Switch", WM8985_LEFT_MIXER_CTRL, 5, 1, 0),
+	SOC_DAPM_SINGLE("PCM Switch", WM8985_LEFT_MIXER_CTRL, 0, 1, 0),
+};
+
+static const struct snd_kcontrol_new right_out_mixer[] = {
+	SOC_DAPM_SINGLE("Line Switch", WM8985_RIGHT_MIXER_CTRL, 1, 1, 0),
+	SOC_DAPM_SINGLE("Aux Switch", WM8985_RIGHT_MIXER_CTRL, 5, 1, 0),
+	SOC_DAPM_SINGLE("PCM Switch", WM8985_RIGHT_MIXER_CTRL, 0, 1, 0),
+};
+
+static const struct snd_kcontrol_new left_input_mixer[] = {
+	SOC_DAPM_SINGLE("L2 Switch", WM8985_INPUT_CTRL, 2, 1, 0),
+	SOC_DAPM_SINGLE("MicN Switch", WM8985_INPUT_CTRL, 1, 1, 0),
+	SOC_DAPM_SINGLE("MicP Switch", WM8985_INPUT_CTRL, 0, 1, 0),
+};
+
+static const struct snd_kcontrol_new right_input_mixer[] = {
+	SOC_DAPM_SINGLE("R2 Switch", WM8985_INPUT_CTRL, 6, 1, 0),
+	SOC_DAPM_SINGLE("MicN Switch", WM8985_INPUT_CTRL, 5, 1, 0),
+	SOC_DAPM_SINGLE("MicP Switch", WM8985_INPUT_CTRL, 4, 1, 0),
+};
+
+static const struct snd_kcontrol_new left_boost_mixer[] = {
+	SOC_DAPM_SINGLE_TLV("L2 Volume", WM8985_LEFT_ADC_BOOST_CTRL,
+		4, 7, 0, boost_tlv),
+	SOC_DAPM_SINGLE_TLV("AUXL Volume", WM8985_LEFT_ADC_BOOST_CTRL,
+		0, 7, 0, boost_tlv)
+};
+
+static const struct snd_kcontrol_new right_boost_mixer[] = {
+	SOC_DAPM_SINGLE_TLV("R2 Volume", WM8985_RIGHT_ADC_BOOST_CTRL,
+		4, 7, 0, boost_tlv),
+	SOC_DAPM_SINGLE_TLV("AUXR Volume", WM8985_RIGHT_ADC_BOOST_CTRL,
+		0, 7, 0, boost_tlv)
+};
+
+static const struct snd_soc_dapm_widget wm8985_dapm_widgets[] = {
+	SND_SOC_DAPM_DAC("Left DAC", "Left Playback", WM8985_POWER_MANAGEMENT_3,
+		0, 0),
+	SND_SOC_DAPM_DAC("Right DAC", "Right Playback", WM8985_POWER_MANAGEMENT_3,
+		1, 0),
+	SND_SOC_DAPM_ADC("Left ADC", "Left Capture", WM8985_POWER_MANAGEMENT_2,
+		0, 0),
+	SND_SOC_DAPM_ADC("Right ADC", "Right Capture", WM8985_POWER_MANAGEMENT_2,
+		1, 0),
+
+	SND_SOC_DAPM_MIXER("Left Output Mixer", WM8985_POWER_MANAGEMENT_3,
+		2, 0, left_out_mixer, ARRAY_SIZE(left_out_mixer)),
+	SND_SOC_DAPM_MIXER("Right Output Mixer", WM8985_POWER_MANAGEMENT_3,
+		3, 0, right_out_mixer, ARRAY_SIZE(right_out_mixer)),
+
+	SND_SOC_DAPM_MIXER("Left Input Mixer", WM8985_POWER_MANAGEMENT_2,
+		2, 0, left_input_mixer, ARRAY_SIZE(left_input_mixer)),
+	SND_SOC_DAPM_MIXER("Right Input Mixer", WM8985_POWER_MANAGEMENT_2,
+		3, 0, right_input_mixer, ARRAY_SIZE(right_input_mixer)),
+
+	SND_SOC_DAPM_MIXER("Left Boost Mixer", WM8985_POWER_MANAGEMENT_2,
+		4, 0, left_boost_mixer, ARRAY_SIZE(left_boost_mixer)),
+	SND_SOC_DAPM_MIXER("Right Boost Mixer", WM8985_POWER_MANAGEMENT_2,
+		5, 0, right_boost_mixer, ARRAY_SIZE(right_boost_mixer)),
+
+	SND_SOC_DAPM_PGA("Left Capture PGA", WM8985_LEFT_INP_PGA_GAIN_CTRL,
+		6, 1, NULL, 0),
+	SND_SOC_DAPM_PGA("Right Capture PGA", WM8985_RIGHT_INP_PGA_GAIN_CTRL,
+		6, 1, NULL, 0),
+
+	SND_SOC_DAPM_PGA("Left Headphone Out", WM8985_POWER_MANAGEMENT_2,
+		7, 0, NULL, 0),
+	SND_SOC_DAPM_PGA("Right Headphone Out", WM8985_POWER_MANAGEMENT_2,
+		8, 0, NULL, 0),
+
+	SND_SOC_DAPM_PGA("Left Speaker Out", WM8985_POWER_MANAGEMENT_3,
+		5, 0, NULL, 0),
+	SND_SOC_DAPM_PGA("Right Speaker Out", WM8985_POWER_MANAGEMENT_3,
+		6, 0, NULL, 0),
+
+	SND_SOC_DAPM_MICBIAS("Mic Bias", WM8985_POWER_MANAGEMENT_1, 4, 0),
+
+	SND_SOC_DAPM_INPUT("LIN"),
+	SND_SOC_DAPM_INPUT("LIP"),
+	SND_SOC_DAPM_INPUT("RIN"),
+	SND_SOC_DAPM_INPUT("RIP"),
+	SND_SOC_DAPM_INPUT("AUXL"),
+	SND_SOC_DAPM_INPUT("AUXR"),
+	SND_SOC_DAPM_INPUT("L2"),
+	SND_SOC_DAPM_INPUT("R2"),
+	SND_SOC_DAPM_OUTPUT("HPL"),
+	SND_SOC_DAPM_OUTPUT("HPR"),
+	SND_SOC_DAPM_OUTPUT("SPKL"),
+	SND_SOC_DAPM_OUTPUT("SPKR")
+};
+
+static const struct snd_soc_dapm_route audio_map[] = {
+	{ "Right Output Mixer", "PCM Switch", "Right DAC" },
+	{ "Right Output Mixer", "Aux Switch", "AUXR" },
+	{ "Right Output Mixer", "Line Switch", "Right Boost Mixer" },
+
+	{ "Left Output Mixer", "PCM Switch", "Left DAC" },
+	{ "Left Output Mixer", "Aux Switch", "AUXL" },
+	{ "Left Output Mixer", "Line Switch", "Left Boost Mixer" },
+
+	{ "Right Headphone Out", NULL, "Right Output Mixer" },
+	{ "HPR", NULL, "Right Headphone Out" },
+
+	{ "Left Headphone Out", NULL, "Left Output Mixer" },
+	{ "HPL", NULL, "Left Headphone Out" },
+
+	{ "Right Speaker Out", NULL, "Right Output Mixer" },
+	{ "SPKR", NULL, "Right Speaker Out" },
+
+	{ "Left Speaker Out", NULL, "Left Output Mixer" },
+	{ "SPKL", NULL, "Left Speaker Out" },
+
+	{ "Right ADC", NULL, "Right Boost Mixer" },
+
+	{ "Right Boost Mixer", "AUXR Volume", "AUXR" },
+	{ "Right Boost Mixer", NULL, "Right Capture PGA" },
+	{ "Right Boost Mixer", "R2 Volume", "R2" },
+
+	{ "Left ADC", NULL, "Left Boost Mixer" },
+
+	{ "Left Boost Mixer", "AUXL Volume", "AUXL" },
+	{ "Left Boost Mixer", NULL, "Left Capture PGA" },
+	{ "Left Boost Mixer", "L2 Volume", "L2" },
+
+	{ "Right Capture PGA", NULL, "Right Input Mixer" },
+	{ "Left Capture PGA", NULL, "Left Input Mixer" },
+
+	{ "Right Input Mixer", "R2 Switch", "R2" },
+	{ "Right Input Mixer", "MicN Switch", "RIN" },
+	{ "Right Input Mixer", "MicP Switch", "RIP" },
+
+	{ "Left Input Mixer", "L2 Switch", "L2" },
+	{ "Left Input Mixer", "MicN Switch", "LIN" },
+	{ "Left Input Mixer", "MicP Switch", "LIP" },
+};
+
+static int eqmode_get(struct snd_kcontrol *kcontrol,
+		      struct snd_ctl_elem_value *ucontrol)
+{
+	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	unsigned int reg;
+
+	reg = snd_soc_read(codec, WM8985_EQ1_LOW_SHELF);
+	if (reg & WM8985_EQ3DMODE)
+		ucontrol->value.integer.value[0] = 1;
+	else
+		ucontrol->value.integer.value[0] = 0;
+
+	return 0;
+}
+
+static int eqmode_put(struct snd_kcontrol *kcontrol,
+		      struct snd_ctl_elem_value *ucontrol)
+{
+	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	unsigned int regpwr2, regpwr3;
+	unsigned int reg_eq;
+
+	if (ucontrol->value.integer.value[0] != 0
+			&& ucontrol->value.integer.value[0] != 1)
+		return -EINVAL;
+
+	reg_eq = snd_soc_read(codec, WM8985_EQ1_LOW_SHELF);
+	switch ((reg_eq & WM8985_EQ3DMODE) >> WM8985_EQ3DMODE_SHIFT) {
+	case 0:
+		if (!ucontrol->value.integer.value[0])
+			return 0;
+		break;
+	case 1:
+		if (ucontrol->value.integer.value[0])
+			return 0;
+		break;
+	}
+
+	regpwr2 = snd_soc_read(codec, WM8985_POWER_MANAGEMENT_2);
+	regpwr3 = snd_soc_read(codec, WM8985_POWER_MANAGEMENT_3);
+	/* disable the DACs and ADCs */
+	snd_soc_update_bits(codec, WM8985_POWER_MANAGEMENT_2,
+			    WM8985_ADCENR_MASK | WM8985_ADCENL_MASK, 0);
+	snd_soc_update_bits(codec, WM8985_POWER_MANAGEMENT_3,
+			    WM8985_DACENR_MASK | WM8985_DACENL_MASK, 0);
+	snd_soc_update_bits(codec, WM8985_ADDITIONAL_CONTROL,
+			    WM8985_M128ENB_MASK, WM8985_M128ENB);
+	/* set the desired eqmode */
+	snd_soc_update_bits(codec, WM8985_EQ1_LOW_SHELF,
+			    WM8985_EQ3DMODE_MASK,
+			    ucontrol->value.integer.value[0]
+			    << WM8985_EQ3DMODE_SHIFT);
+	/* restore DAC/ADC configuration */
+	snd_soc_write(codec, WM8985_POWER_MANAGEMENT_2, regpwr2);
+	snd_soc_write(codec, WM8985_POWER_MANAGEMENT_3, regpwr3);
+	return 0;
+}
+
+static int wm8985_add_widgets(struct snd_soc_codec *codec)
+{
+	snd_soc_dapm_new_controls(codec, wm8985_dapm_widgets,
+				  ARRAY_SIZE(wm8985_dapm_widgets));
+
+	snd_soc_dapm_add_routes(codec, audio_map,
+				ARRAY_SIZE(audio_map));
+	return 0;
+}
+
+static int wm8985_reset(struct snd_soc_codec *codec)
+{
+	return snd_soc_write(codec, WM8985_SOFTWARE_RESET, 0x0);
+}
+
+static int wm8985_dac_mute(struct snd_soc_dai *dai, int mute)
+{
+	struct snd_soc_codec *codec = dai->codec;
+
+	return snd_soc_update_bits(codec, WM8985_DAC_CONTROL,
+				   WM8985_SOFTMUTE_MASK,
+				   !!mute << WM8985_SOFTMUTE_SHIFT);
+}
+
+static int wm8985_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
+{
+	struct wm8985_priv *wm8985;
+	struct snd_soc_codec *codec;
+	u16 format, master, bcp, lrp;
+
+	codec = dai->codec;
+	wm8985 = snd_soc_codec_get_drvdata(codec);
+
+	switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
+	case SND_SOC_DAIFMT_I2S:
+		format = 0x2;
+		break;
+	case SND_SOC_DAIFMT_RIGHT_J:
+		format = 0x0;
+		break;
+	case SND_SOC_DAIFMT_LEFT_J:
+		format = 0x1;
+		break;
+	case SND_SOC_DAIFMT_DSP_A:
+	case SND_SOC_DAIFMT_DSP_B:
+		format = 0x3;
+		break;
+	default:
+		dev_err(dai->dev, "Unknown dai format\n");
+		return -EINVAL;
+	}
+
+	snd_soc_update_bits(codec, WM8985_AUDIO_INTERFACE,
+			    WM8985_FMT_MASK, format << WM8985_FMT_SHIFT);
+
+	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
+	case SND_SOC_DAIFMT_CBM_CFM:
+		master = 1;
+		break;
+	case SND_SOC_DAIFMT_CBS_CFS:
+		master = 0;
+		break;
+	default:
+		dev_err(dai->dev, "Unknown master/slave configuration\n");
+		return -EINVAL;
+	}
+
+	snd_soc_update_bits(codec, WM8985_CLOCK_GEN_CONTROL,
+			    WM8985_MS_MASK, master << WM8985_MS_SHIFT);
+
+	/* frame inversion is not valid for dsp modes */
+	switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
+	case SND_SOC_DAIFMT_DSP_A:
+	case SND_SOC_DAIFMT_DSP_B:
+		switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
+		case SND_SOC_DAIFMT_IB_IF:
+		case SND_SOC_DAIFMT_NB_IF:
+			return -EINVAL;
+		default:
+			break;
+		}
+		break;
+	default:
+		break;
+	}
+
+	bcp = lrp = 0;
+	switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
+	case SND_SOC_DAIFMT_NB_NF:
+		break;
+	case SND_SOC_DAIFMT_IB_IF:
+		bcp = lrp = 1;
+		break;
+	case SND_SOC_DAIFMT_IB_NF:
+		bcp = 1;
+		break;
+	case SND_SOC_DAIFMT_NB_IF:
+		lrp = 1;
+		break;
+	default:
+		dev_err(dai->dev, "Unknown polarity configuration\n");
+		return -EINVAL;
+	}
+
+	snd_soc_update_bits(codec, WM8985_AUDIO_INTERFACE,
+			    WM8985_LRP_MASK, lrp << WM8985_LRP_SHIFT);
+	snd_soc_update_bits(codec, WM8985_AUDIO_INTERFACE,
+			    WM8985_BCP_MASK, bcp << WM8985_BCP_SHIFT);
+	return 0;
+}
+
+static int wm8985_hw_params(struct snd_pcm_substream *substream,
+			    struct snd_pcm_hw_params *params,
+			    struct snd_soc_dai *dai)
+{
+	size_t i;
+	struct snd_soc_codec *codec;
+	struct wm8985_priv *wm8985;
+	u16 blen, srate_idx;
+	unsigned int tmp;
+	int srate_best;
+
+	codec = dai->codec;
+	wm8985 = snd_soc_codec_get_drvdata(codec);
+
+	wm8985->bclk = snd_soc_params_to_bclk(params);
+	if ((int)wm8985->bclk < 0)
+		return wm8985->bclk;
+
+	switch (params_format(params)) {
+	case SNDRV_PCM_FORMAT_S16_LE:
+		blen = 0x0;
+		break;
+	case SNDRV_PCM_FORMAT_S20_3LE:
+		blen = 0x1;
+		break;
+	case SNDRV_PCM_FORMAT_S24_LE:
+		blen = 0x2;
+		break;
+	case SNDRV_PCM_FORMAT_S32_LE:
+		blen = 0x3;
+		break;
+	default:
+		dev_err(dai->dev, "Unsupported word length %u\n",
+			params_format(params));
+		return -EINVAL;
+	}
+
+	snd_soc_update_bits(codec, WM8985_AUDIO_INTERFACE,
+			    WM8985_WL_MASK, blen << WM8985_WL_SHIFT);
+
+	/*
+	 * match to the nearest possible sample rate and rely
+	 * on the array index to configure the SR register
+	 */
+	srate_idx = 0;
+	srate_best = abs(srates[0] - params_rate(params));
+	for (i = 1; i < ARRAY_SIZE(srates); ++i) {
+		if (abs(srates[i] - params_rate(params)) >= srate_best)
+			continue;
+		srate_idx = i;
+		srate_best = abs(srates[i] - params_rate(params));
+	}
+
+	dev_dbg(dai->dev, "Selected SRATE = %d\n", srates[srate_idx]);
+	snd_soc_update_bits(codec, WM8985_ADDITIONAL_CONTROL,
+			    WM8985_SR_MASK, srate_idx << WM8985_SR_SHIFT);
+
+	dev_dbg(dai->dev, "Target BCLK = %uHz\n", wm8985->bclk);
+	dev_dbg(dai->dev, "SYSCLK = %uHz\n", wm8985->sysclk);
+
+	for (i = 0; i < ARRAY_SIZE(fs_ratios); ++i) {
+		if (wm8985->sysclk / params_rate(params)
+				== fs_ratios[i].ratio)
+			break;
+	}
+
+	if (i == ARRAY_SIZE(fs_ratios)) {
+		dev_err(dai->dev, "Unable to configure MCLK ratio %u/%u\n",
+			wm8985->sysclk, params_rate(params));
+		return -EINVAL;
+	}
+
+	dev_dbg(dai->dev, "MCLK ratio = %dfs\n", fs_ratios[i].ratio);
+	snd_soc_update_bits(codec, WM8985_CLOCK_GEN_CONTROL,
+			    WM8985_MCLKDIV_MASK, i << WM8985_MCLKDIV_SHIFT);
+
+	/* select the appropriate bclk divider */
+	tmp = (wm8985->sysclk / fs_ratios[i].div) * 10;
+	for (i = 0; i < ARRAY_SIZE(bclk_divs); ++i) {
+		if (wm8985->bclk == tmp / bclk_divs[i])
+			break;
+	}
+
+	if (i == ARRAY_SIZE(bclk_divs)) {
+		dev_err(dai->dev, "No matching BCLK divider found\n");
+		return -EINVAL;
+	}
+
+	dev_dbg(dai->dev, "BCLK div = %d\n", i);
+	snd_soc_update_bits(codec, WM8985_CLOCK_GEN_CONTROL,
+			    WM8985_BCLKDIV_MASK, i << WM8985_BCLKDIV_SHIFT);
+	return 0;
+}
+
+struct pll_div {
+	u32 div2:1;
+	u32 n:4;
+	u32 k:24;
+};
+
+#define FIXED_PLL_SIZE ((1ULL << 24) * 10)
+static int pll_factors(struct pll_div *pll_div, unsigned int target,
+		       unsigned int source)
+{
+	u64 Kpart;
+	unsigned long int K, Ndiv, Nmod;
+
+	pll_div->div2 = 0;
+	Ndiv = target / source;
+	if (Ndiv < 6) {
+		source >>= 1;
+		pll_div->div2 = 1;
+		Ndiv = target / source;
+	}
+
+	if (Ndiv < 6 || Ndiv > 12) {
+		printk(KERN_ERR "%s: WM8985 N value is not within"
+		       " the recommended range: %lu\n", __func__, Ndiv);
+		return -EINVAL;
+	}
+	pll_div->n = Ndiv;
+
+	Nmod = target % source;
+	Kpart = FIXED_PLL_SIZE * (u64)Nmod;
+
+	do_div(Kpart, source);
+
+	K = Kpart & 0xffffffff;
+	if ((K % 10) >= 5)
+		K += 5;
+	K /= 10;
+	pll_div->k = K;
+
+	return 0;
+}
+
+static int wm8985_set_pll(struct snd_soc_dai *dai, int pll_id,
+			  int source, unsigned int freq_in,
+			  unsigned int freq_out)
+{
+	int ret;
+	struct snd_soc_codec *codec;
+	struct pll_div pll_div;
+
+	codec = dai->codec;
+	if (freq_in && freq_out) {
+		ret = pll_factors(&pll_div, freq_out * 4 * 2, freq_in);
+		if (ret)
+			return ret;
+	}
+
+	/* disable the PLL before reprogramming it */
+	snd_soc_update_bits(codec, WM8985_POWER_MANAGEMENT_1,
+			    WM8985_PLLEN_MASK, 0);
+	
+	if (!freq_in || !freq_out)
+		return 0;
+
+	/* set PLLN and PRESCALE */
+	snd_soc_write(codec, WM8985_PLL_N,
+		      (pll_div.div2 << WM8985_PLL_PRESCALE_SHIFT)
+		      | pll_div.n);
+	/* set PLLK */
+	snd_soc_write(codec, WM8985_PLL_K_3, pll_div.k & 0x1ff);
+	snd_soc_write(codec, WM8985_PLL_K_2, (pll_div.k >> 9) & 0x1ff);
+	snd_soc_write(codec, WM8985_PLL_K_1, (pll_div.k >> 18));
+	/* set the source of the clock to be the PLL */
+	snd_soc_update_bits(codec, WM8985_CLOCK_GEN_CONTROL,
+			    WM8985_CLKSEL_MASK, WM8985_CLKSEL);
+	/* enable the PLL */
+	snd_soc_update_bits(codec, WM8985_POWER_MANAGEMENT_1,
+			    WM8985_PLLEN_MASK, WM8985_PLLEN);
+	return 0;
+}
+
+static int wm8985_set_sysclk(struct snd_soc_dai *dai,
+			     int clk_id, unsigned int freq, int dir)
+{
+	struct snd_soc_codec *codec;
+	struct wm8985_priv *wm8985;
+
+	codec = dai->codec;
+	wm8985 = snd_soc_codec_get_drvdata(codec);
+
+	switch (clk_id) {
+	case WM8985_CLKSRC_MCLK:
+		snd_soc_update_bits(codec, WM8985_CLOCK_GEN_CONTROL,
+				    WM8985_CLKSEL_MASK, 0);
+		snd_soc_update_bits(codec, WM8985_POWER_MANAGEMENT_1,
+				    WM8985_PLLEN_MASK, 0);
+		break;
+	case WM8985_CLKSRC_PLL:
+		snd_soc_update_bits(codec, WM8985_CLOCK_GEN_CONTROL,
+				    WM8985_CLKSEL_MASK, WM8985_CLKSEL);
+		break;
+	default:
+		dev_err(dai->dev, "Unknown clock source %d\n", clk_id);
+		return -EINVAL;
+	}
+
+	wm8985->sysclk = freq;
+	return 0;
+}
+
+static void wm8985_sync_cache(struct snd_soc_codec *codec)
+{
+	short i;
+	u16 *cache;
+
+	if (!codec->cache_sync)
+		return;
+	codec->cache_only = 0;
+	/* restore cache */
+	cache = codec->reg_cache;
+	for (i = 0; i < codec->driver->reg_cache_size; i++) {
+		if (i == WM8985_SOFTWARE_RESET
+				|| cache[i] == wm8985_reg_defs[i])
+			continue;
+		snd_soc_write(codec, i, cache[i]);
+	}
+	codec->cache_sync = 0;
+}
+
+static int wm8985_set_bias_level(struct snd_soc_codec *codec,
+				 enum snd_soc_bias_level level)
+{
+	int ret;
+	struct wm8985_priv *wm8985;
+
+	wm8985 = snd_soc_codec_get_drvdata(codec);
+	switch (level) {
+	case SND_SOC_BIAS_ON:
+	case SND_SOC_BIAS_PREPARE:
+		/* VMID at 75k */
+		snd_soc_update_bits(codec, WM8985_POWER_MANAGEMENT_1,
+				    WM8985_VMIDSEL_MASK,
+				    1 << WM8985_VMIDSEL_SHIFT);
+		break;
+	case SND_SOC_BIAS_STANDBY:
+		if (codec->bias_level == SND_SOC_BIAS_OFF) {
+			ret = regulator_bulk_enable(ARRAY_SIZE(wm8985->supplies),
+						    wm8985->supplies);
+			if (ret) {
+				dev_err(codec->dev,
+					"Failed to enable supplies: %d\n",
+					ret);
+				return ret;
+			}
+
+			wm8985_sync_cache(codec);
+
+			/* enable anti-pop features */
+			snd_soc_update_bits(codec, WM8985_OUT4_TO_ADC,
+					    WM8985_POBCTRL_MASK,
+					    WM8985_POBCTRL);
+			/* enable thermal shutdown */
+			snd_soc_update_bits(codec, WM8985_OUTPUT_CTRL0,
+					    WM8985_TSDEN_MASK, WM8985_TSDEN);
+			snd_soc_update_bits(codec, WM8985_OUTPUT_CTRL0,
+					    WM8985_TSOPCTRL_MASK,
+					    WM8985_TSOPCTRL);
+			/* enable BIASEN */
+			snd_soc_update_bits(codec, WM8985_POWER_MANAGEMENT_1,
+					    WM8985_BIASEN_MASK, WM8985_BIASEN);
+			/* VMID at 75k */
+			snd_soc_update_bits(codec, WM8985_POWER_MANAGEMENT_1,
+					    WM8985_VMIDSEL_MASK,
+					    1 << WM8985_VMIDSEL_SHIFT);
+			msleep(500);
+			/* disable anti-pop features */
+			snd_soc_update_bits(codec, WM8985_OUT4_TO_ADC,
+					    WM8985_POBCTRL_MASK, 0);
+		}
+		/* VMID at 300k */
+		snd_soc_update_bits(codec, WM8985_POWER_MANAGEMENT_1,
+				    WM8985_VMIDSEL_MASK,
+				    2 << WM8985_VMIDSEL_SHIFT);
+		break;
+	case SND_SOC_BIAS_OFF:
+		/* disable thermal shutdown */
+		snd_soc_update_bits(codec, WM8985_OUTPUT_CTRL0,
+				    WM8985_TSOPCTRL_MASK, 0);
+		snd_soc_update_bits(codec, WM8985_OUTPUT_CTRL0,
+				    WM8985_TSDEN_MASK, 0);
+		/* disable VMIDSEL and BIASEN */
+		snd_soc_update_bits(codec, WM8985_POWER_MANAGEMENT_1,
+				    WM8985_VMIDSEL_MASK | WM8985_BIASEN_MASK,
+				    0);
+		snd_soc_write(codec, WM8985_POWER_MANAGEMENT_1, 0);
+		snd_soc_write(codec, WM8985_POWER_MANAGEMENT_2, 0);
+		snd_soc_write(codec, WM8985_POWER_MANAGEMENT_3, 0);
+
+		codec->cache_sync = 1;
+
+		regulator_bulk_disable(ARRAY_SIZE(wm8985->supplies),
+				       wm8985->supplies);
+		break;
+	}
+
+	codec->bias_level = level;
+	return 0;
+}
+
+#ifdef CONFIG_PM
+static int wm8985_suspend(struct snd_soc_codec *codec, pm_message_t state)
+{
+	wm8985_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
+}
+
+static int wm8985_resume(struct snd_soc_codec *codec)
+{
+	wm8985_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
+	return 0;
+}
+#else
+#define wm8985_suspend NULL
+#define wm8985_resume NULL
+#endif
+
+static int wm8985_remove(struct snd_soc_codec *codec)
+{
+	struct wm8985_priv *wm8985;
+
+	wm8985 = snd_soc_codec_get_drvdata(codec);
+	wm8985_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	regulator_bulk_free(ARRAY_SIZE(wm8985->supplies), wm8985->supplies);
+	return 0;
+}
+
+static int wm8985_probe(struct snd_soc_codec *codec)
+{
+	size_t i;
+	struct wm8985_priv *wm8985;
+	int ret;
+	u16 *cache;
+
+	wm8985 = snd_soc_codec_get_drvdata(codec);
+
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9, wm8985->control_type);
+	if (ret < 0) {
+		dev_err(codec->dev, "Failed to set cache i/o: %d\n", ret);
+		return ret;
+	}
+
+	for (i = 0; i < ARRAY_SIZE(wm8985->supplies); i++)
+		wm8985->supplies[i].supply = wm8985_supply_names[i];
+
+	ret = regulator_bulk_get(codec->dev, ARRAY_SIZE(wm8985->supplies),
+				 wm8985->supplies);
+	if (ret) {
+		dev_err(codec->dev, "Failed to request supplies: %d\n", ret);
+		return ret;
+	}
+
+	ret = regulator_bulk_enable(ARRAY_SIZE(wm8985->supplies),
+				    wm8985->supplies);
+	if (ret) {
+		dev_err(codec->dev, "Failed to enable supplies: %d\n", ret);
+		goto err_reg_get;
+	}
+
+	ret = wm8985_reset(codec);
+	if (ret < 0) {
+		dev_err(codec->dev, "Failed to issue reset: %d\n", ret);
+		goto err_reg_enable;
+	}
+
+	cache = codec->reg_cache;
+	/* latch volume update bits */
+	for (i = 0; i < ARRAY_SIZE(volume_update_regs); ++i)
+		cache[volume_update_regs[i]] |= 0x100;
+	/* enable BIASCUT */
+	cache[WM8985_BIAS_CTRL] |= WM8985_BIASCUT;
+	codec->cache_sync = 1;
+
+	snd_soc_add_controls(codec, wm8985_snd_controls,
+			     ARRAY_SIZE(wm8985_snd_controls));
+	wm8985_add_widgets(codec);
+
+	wm8985_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
+	return 0;
+
+err_reg_enable:
+	regulator_bulk_disable(ARRAY_SIZE(wm8985->supplies), wm8985->supplies);
+err_reg_get:
+	regulator_bulk_free(ARRAY_SIZE(wm8985->supplies), wm8985->supplies);
+	return ret;
+}
+
+static struct snd_soc_dai_ops wm8985_dai_ops = {
+	.digital_mute = wm8985_dac_mute,
+	.hw_params = wm8985_hw_params,
+	.set_fmt = wm8985_set_fmt,
+	.set_sysclk = wm8985_set_sysclk,
+	.set_pll = wm8985_set_pll
+};
+
+#define WM8985_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
+			SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+
+static struct snd_soc_dai_driver wm8985_dai = {
+	.name = "wm8985-hifi",
+	.playback = {
+		.stream_name = "Playback",
+		.channels_min = 2,
+		.channels_max = 2,
+		.rates = SNDRV_PCM_RATE_8000_48000,
+		.formats = WM8985_FORMATS,
+	},
+	.capture = {
+		.stream_name = "Capture",
+		.channels_min = 2,
+		.channels_max = 2,
+		.rates = SNDRV_PCM_RATE_8000_48000,
+		.formats = WM8985_FORMATS,
+	},
+	.ops = &wm8985_dai_ops,
+	.symmetric_rates = 1
+};
+
+static struct snd_soc_codec_driver soc_codec_dev_wm8985 = {
+	.probe = wm8985_probe,
+	.remove = wm8985_remove,
+	.suspend = wm8985_suspend,
+	.resume = wm8985_resume,
+	.set_bias_level = wm8985_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8985_reg_defs),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8985_reg_defs
+};
+
+#if defined(CONFIG_SPI_MASTER)
+static int __devinit wm8985_spi_probe(struct spi_device *spi)
+{
+	struct wm8985_priv *wm8985;
+	int ret;
+
+	wm8985 = kzalloc(sizeof *wm8985, GFP_KERNEL);
+	if (IS_ERR(wm8985))
+		return PTR_ERR(wm8985);
+
+	wm8985->control_type = SND_SOC_SPI;
+	spi_set_drvdata(spi, wm8985);
+
+	ret = snd_soc_register_codec(&spi->dev,
+				     &soc_codec_dev_wm8985, &wm8985_dai, 1);
+	if (ret < 0)
+		kfree(wm8985);
+	return ret;
+}
+
+static int __devexit wm8985_spi_remove(struct spi_device *spi)
+{
+	snd_soc_unregister_codec(&spi->dev);
+	kfree(spi_get_drvdata(spi));
+	return 0;
+}
+
+static struct spi_driver wm8985_spi_driver = {
+	.driver = {
+		.name = "wm8985",
+		.bus = &spi_bus_type,
+		.owner = THIS_MODULE,
+	},
+	.probe = wm8985_spi_probe,
+	.remove = __devexit_p(wm8985_spi_remove)
+};
+#endif
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+static __devinit int wm8985_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
+{
+	struct wm8985_priv *wm8985;
+	int ret;
+
+	wm8985 = kzalloc(sizeof *wm8985, GFP_KERNEL);
+	if (IS_ERR(wm8985))
+		return PTR_ERR(wm8985);
+
+	wm8985->control_type = SND_SOC_I2C;
+	i2c_set_clientdata(i2c, wm8985);
+
+	ret = snd_soc_register_codec(&i2c->dev,
+				     &soc_codec_dev_wm8985, &wm8985_dai, 1);
+	if (ret < 0)
+		kfree(wm8985);
+	return ret;
+}
+
+static __devexit int wm8985_i2c_remove(struct i2c_client *client)
+{
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
+	return 0;
+}
+
+static const struct i2c_device_id wm8985_i2c_id[] = {
+	{ "wm8985", 0 },
+	{ }
+};
+MODULE_DEVICE_TABLE(i2c, wm8985_i2c_id);
+
+static struct i2c_driver wm8985_i2c_driver = {
+	.driver = {
+		.name = "wm8985",
+		.owner = THIS_MODULE,
+	},
+	.probe = wm8985_i2c_probe,
+	.remove = __devexit_p(wm8985_i2c_remove),
+	.id_table = wm8985_i2c_id
+};
+#endif
+
+static int __init wm8985_modinit(void)
+{
+	int ret = 0;
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	ret = i2c_add_driver(&wm8985_i2c_driver);
+	if (ret) {
+		printk(KERN_ERR "Failed to register wm8985 I2C driver: %d\n",
+		       ret);
+	}
+#endif
+#if defined(CONFIG_SPI_MASTER)
+	ret = spi_register_driver(&wm8985_spi_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register wm8985 SPI driver: %d\n",
+		       ret);
+	}
+#endif
+	return ret;
+}
+module_init(wm8985_modinit);
+
+static void __exit wm8985_exit(void)
+{
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	i2c_del_driver(&wm8985_i2c_driver);
+#endif
+#if defined(CONFIG_SPI_MASTER)
+	spi_unregister_driver(&wm8985_spi_driver);
+#endif
+}
+module_exit(wm8985_exit);
+
+MODULE_DESCRIPTION("ASoC WM8985 driver");
+MODULE_AUTHOR("Dimitris Papastamos <dp@opensource.wolfsonmicro.com>");
+MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/wm8985.h b/sound/soc/codecs/wm8985.h
new file mode 100644
index 0000000..2e71ff50
--- /dev/null
+++ b/sound/soc/codecs/wm8985.h
@@ -0,0 +1,1045 @@
+/*
+ * wm8985.h  --  WM8985 ASoC driver
+ *
+ * Copyright 2010 Wolfson Microelectronics plc
+ *
+ * Author: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _WM8985_H
+#define _WM8985_H
+
+#define WM8985_SOFTWARE_RESET                   0x00
+#define WM8985_POWER_MANAGEMENT_1               0x01
+#define WM8985_POWER_MANAGEMENT_2               0x02
+#define WM8985_POWER_MANAGEMENT_3               0x03
+#define WM8985_AUDIO_INTERFACE                  0x04
+#define WM8985_COMPANDING_CONTROL               0x05
+#define WM8985_CLOCK_GEN_CONTROL                0x06
+#define WM8985_ADDITIONAL_CONTROL               0x07
+#define WM8985_GPIO_CONTROL                     0x08
+#define WM8985_JACK_DETECT_CONTROL_1            0x09
+#define WM8985_DAC_CONTROL                      0x0A
+#define WM8985_LEFT_DAC_DIGITAL_VOL             0x0B
+#define WM8985_RIGHT_DAC_DIGITAL_VOL            0x0C
+#define WM8985_JACK_DETECT_CONTROL_2            0x0D
+#define WM8985_ADC_CONTROL                      0x0E
+#define WM8985_LEFT_ADC_DIGITAL_VOL             0x0F
+#define WM8985_RIGHT_ADC_DIGITAL_VOL            0x10
+#define WM8985_EQ1_LOW_SHELF                    0x12
+#define WM8985_EQ2_PEAK_1                       0x13
+#define WM8985_EQ3_PEAK_2                       0x14
+#define WM8985_EQ4_PEAK_3                       0x15
+#define WM8985_EQ5_HIGH_SHELF                   0x16
+#define WM8985_DAC_LIMITER_1                    0x18
+#define WM8985_DAC_LIMITER_2                    0x19
+#define WM8985_NOTCH_FILTER_1                   0x1B
+#define WM8985_NOTCH_FILTER_2                   0x1C
+#define WM8985_NOTCH_FILTER_3                   0x1D
+#define WM8985_NOTCH_FILTER_4                   0x1E
+#define WM8985_ALC_CONTROL_1                    0x20
+#define WM8985_ALC_CONTROL_2                    0x21
+#define WM8985_ALC_CONTROL_3                    0x22
+#define WM8985_NOISE_GATE                       0x23
+#define WM8985_PLL_N                            0x24
+#define WM8985_PLL_K_1                          0x25
+#define WM8985_PLL_K_2                          0x26
+#define WM8985_PLL_K_3                          0x27
+#define WM8985_3D_CONTROL                       0x29
+#define WM8985_OUT4_TO_ADC                      0x2A
+#define WM8985_BEEP_CONTROL                     0x2B
+#define WM8985_INPUT_CTRL                       0x2C
+#define WM8985_LEFT_INP_PGA_GAIN_CTRL           0x2D
+#define WM8985_RIGHT_INP_PGA_GAIN_CTRL          0x2E
+#define WM8985_LEFT_ADC_BOOST_CTRL              0x2F
+#define WM8985_RIGHT_ADC_BOOST_CTRL             0x30
+#define WM8985_OUTPUT_CTRL0                     0x31
+#define WM8985_LEFT_MIXER_CTRL                  0x32
+#define WM8985_RIGHT_MIXER_CTRL                 0x33
+#define WM8985_LOUT1_HP_VOLUME_CTRL             0x34
+#define WM8985_ROUT1_HP_VOLUME_CTRL             0x35
+#define WM8985_LOUT2_SPK_VOLUME_CTRL            0x36
+#define WM8985_ROUT2_SPK_VOLUME_CTRL            0x37
+#define WM8985_OUT3_MIXER_CTRL                  0x38
+#define WM8985_OUT4_MONO_MIX_CTRL               0x39
+#define WM8985_OUTPUT_CTRL1                     0x3C
+#define WM8985_BIAS_CTRL                        0x3D
+
+#define WM8985_REGISTER_COUNT                   59
+#define WM8985_MAX_REGISTER                     0x3F
+
+/*
+ * Field Definitions.
+ */
+
+/*
+ * R0 (0x00) - Software Reset
+ */
+#define WM8985_SOFTWARE_RESET_MASK              0x01FF  /* SOFTWARE_RESET - [8:0] */
+#define WM8985_SOFTWARE_RESET_SHIFT                  0  /* SOFTWARE_RESET - [8:0] */
+#define WM8985_SOFTWARE_RESET_WIDTH                  9  /* SOFTWARE_RESET - [8:0] */
+
+/*
+ * R1 (0x01) - Power management 1
+ */
+#define WM8985_OUT4MIXEN                        0x0080  /* OUT4MIXEN */
+#define WM8985_OUT4MIXEN_MASK                   0x0080  /* OUT4MIXEN */
+#define WM8985_OUT4MIXEN_SHIFT                       7  /* OUT4MIXEN */
+#define WM8985_OUT4MIXEN_WIDTH                       1  /* OUT4MIXEN */
+#define WM8985_OUT3MIXEN                        0x0040  /* OUT3MIXEN */
+#define WM8985_OUT3MIXEN_MASK                   0x0040  /* OUT3MIXEN */
+#define WM8985_OUT3MIXEN_SHIFT                       6  /* OUT3MIXEN */
+#define WM8985_OUT3MIXEN_WIDTH                       1  /* OUT3MIXEN */
+#define WM8985_PLLEN                            0x0020  /* PLLEN */
+#define WM8985_PLLEN_MASK                       0x0020  /* PLLEN */
+#define WM8985_PLLEN_SHIFT                           5  /* PLLEN */
+#define WM8985_PLLEN_WIDTH                           1  /* PLLEN */
+#define WM8985_MICBEN                           0x0010  /* MICBEN */
+#define WM8985_MICBEN_MASK                      0x0010  /* MICBEN */
+#define WM8985_MICBEN_SHIFT                          4  /* MICBEN */
+#define WM8985_MICBEN_WIDTH                          1  /* MICBEN */
+#define WM8985_BIASEN                           0x0008  /* BIASEN */
+#define WM8985_BIASEN_MASK                      0x0008  /* BIASEN */
+#define WM8985_BIASEN_SHIFT                          3  /* BIASEN */
+#define WM8985_BIASEN_WIDTH                          1  /* BIASEN */
+#define WM8985_BUFIOEN                          0x0004  /* BUFIOEN */
+#define WM8985_BUFIOEN_MASK                     0x0004  /* BUFIOEN */
+#define WM8985_BUFIOEN_SHIFT                         2  /* BUFIOEN */
+#define WM8985_BUFIOEN_WIDTH                         1  /* BUFIOEN */
+#define WM8985_VMIDSEL                          0x0003  /* VMIDSEL */
+#define WM8985_VMIDSEL_MASK                     0x0003  /* VMIDSEL - [1:0] */
+#define WM8985_VMIDSEL_SHIFT                         0  /* VMIDSEL - [1:0] */
+#define WM8985_VMIDSEL_WIDTH                         2  /* VMIDSEL - [1:0] */
+
+/*
+ * R2 (0x02) - Power management 2
+ */
+#define WM8985_ROUT1EN                          0x0100  /* ROUT1EN */
+#define WM8985_ROUT1EN_MASK                     0x0100  /* ROUT1EN */
+#define WM8985_ROUT1EN_SHIFT                         8  /* ROUT1EN */
+#define WM8985_ROUT1EN_WIDTH                         1  /* ROUT1EN */
+#define WM8985_LOUT1EN                          0x0080  /* LOUT1EN */
+#define WM8985_LOUT1EN_MASK                     0x0080  /* LOUT1EN */
+#define WM8985_LOUT1EN_SHIFT                         7  /* LOUT1EN */
+#define WM8985_LOUT1EN_WIDTH                         1  /* LOUT1EN */
+#define WM8985_SLEEP                            0x0040  /* SLEEP */
+#define WM8985_SLEEP_MASK                       0x0040  /* SLEEP */
+#define WM8985_SLEEP_SHIFT                           6  /* SLEEP */
+#define WM8985_SLEEP_WIDTH                           1  /* SLEEP */
+#define WM8985_BOOSTENR                         0x0020  /* BOOSTENR */
+#define WM8985_BOOSTENR_MASK                    0x0020  /* BOOSTENR */
+#define WM8985_BOOSTENR_SHIFT                        5  /* BOOSTENR */
+#define WM8985_BOOSTENR_WIDTH                        1  /* BOOSTENR */
+#define WM8985_BOOSTENL                         0x0010  /* BOOSTENL */
+#define WM8985_BOOSTENL_MASK                    0x0010  /* BOOSTENL */
+#define WM8985_BOOSTENL_SHIFT                        4  /* BOOSTENL */
+#define WM8985_BOOSTENL_WIDTH                        1  /* BOOSTENL */
+#define WM8985_INPGAENR                         0x0008  /* INPGAENR */
+#define WM8985_INPGAENR_MASK                    0x0008  /* INPGAENR */
+#define WM8985_INPGAENR_SHIFT                        3  /* INPGAENR */
+#define WM8985_INPGAENR_WIDTH                        1  /* INPGAENR */
+#define WM8985_INPPGAENL                        0x0004  /* INPPGAENL */
+#define WM8985_INPPGAENL_MASK                   0x0004  /* INPPGAENL */
+#define WM8985_INPPGAENL_SHIFT                       2  /* INPPGAENL */
+#define WM8985_INPPGAENL_WIDTH                       1  /* INPPGAENL */
+#define WM8985_ADCENR                           0x0002  /* ADCENR */
+#define WM8985_ADCENR_MASK                      0x0002  /* ADCENR */
+#define WM8985_ADCENR_SHIFT                          1  /* ADCENR */
+#define WM8985_ADCENR_WIDTH                          1  /* ADCENR */
+#define WM8985_ADCENL                           0x0001  /* ADCENL */
+#define WM8985_ADCENL_MASK                      0x0001  /* ADCENL */
+#define WM8985_ADCENL_SHIFT                          0  /* ADCENL */
+#define WM8985_ADCENL_WIDTH                          1  /* ADCENL */
+
+/*
+ * R3 (0x03) - Power management 3
+ */
+#define WM8985_OUT4EN                           0x0100  /* OUT4EN */
+#define WM8985_OUT4EN_MASK                      0x0100  /* OUT4EN */
+#define WM8985_OUT4EN_SHIFT                          8  /* OUT4EN */
+#define WM8985_OUT4EN_WIDTH                          1  /* OUT4EN */
+#define WM8985_OUT3EN                           0x0080  /* OUT3EN */
+#define WM8985_OUT3EN_MASK                      0x0080  /* OUT3EN */
+#define WM8985_OUT3EN_SHIFT                          7  /* OUT3EN */
+#define WM8985_OUT3EN_WIDTH                          1  /* OUT3EN */
+#define WM8985_ROUT2EN                          0x0040  /* ROUT2EN */
+#define WM8985_ROUT2EN_MASK                     0x0040  /* ROUT2EN */
+#define WM8985_ROUT2EN_SHIFT                         6  /* ROUT2EN */
+#define WM8985_ROUT2EN_WIDTH                         1  /* ROUT2EN */
+#define WM8985_LOUT2EN                          0x0020  /* LOUT2EN */
+#define WM8985_LOUT2EN_MASK                     0x0020  /* LOUT2EN */
+#define WM8985_LOUT2EN_SHIFT                         5  /* LOUT2EN */
+#define WM8985_LOUT2EN_WIDTH                         1  /* LOUT2EN */
+#define WM8985_RMIXEN                           0x0008  /* RMIXEN */
+#define WM8985_RMIXEN_MASK                      0x0008  /* RMIXEN */
+#define WM8985_RMIXEN_SHIFT                          3  /* RMIXEN */
+#define WM8985_RMIXEN_WIDTH                          1  /* RMIXEN */
+#define WM8985_LMIXEN                           0x0004  /* LMIXEN */
+#define WM8985_LMIXEN_MASK                      0x0004  /* LMIXEN */
+#define WM8985_LMIXEN_SHIFT                          2  /* LMIXEN */
+#define WM8985_LMIXEN_WIDTH                          1  /* LMIXEN */
+#define WM8985_DACENR                           0x0002  /* DACENR */
+#define WM8985_DACENR_MASK                      0x0002  /* DACENR */
+#define WM8985_DACENR_SHIFT                          1  /* DACENR */
+#define WM8985_DACENR_WIDTH                          1  /* DACENR */
+#define WM8985_DACENL                           0x0001  /* DACENL */
+#define WM8985_DACENL_MASK                      0x0001  /* DACENL */
+#define WM8985_DACENL_SHIFT                          0  /* DACENL */
+#define WM8985_DACENL_WIDTH                          1  /* DACENL */
+
+/*
+ * R4 (0x04) - Audio Interface
+ */
+#define WM8985_BCP                              0x0100  /* BCP */
+#define WM8985_BCP_MASK                         0x0100  /* BCP */
+#define WM8985_BCP_SHIFT                             8  /* BCP */
+#define WM8985_BCP_WIDTH                             1  /* BCP */
+#define WM8985_LRP                              0x0080  /* LRP */
+#define WM8985_LRP_MASK                         0x0080  /* LRP */
+#define WM8985_LRP_SHIFT                             7  /* LRP */
+#define WM8985_LRP_WIDTH                             1  /* LRP */
+#define WM8985_WL_MASK                          0x0060  /* WL - [6:5] */
+#define WM8985_WL_SHIFT                              5  /* WL - [6:5] */
+#define WM8985_WL_WIDTH                              2  /* WL - [6:5] */
+#define WM8985_FMT_MASK                         0x0018  /* FMT - [4:3] */
+#define WM8985_FMT_SHIFT                             3  /* FMT - [4:3] */
+#define WM8985_FMT_WIDTH                             2  /* FMT - [4:3] */
+#define WM8985_DLRSWAP                          0x0004  /* DLRSWAP */
+#define WM8985_DLRSWAP_MASK                     0x0004  /* DLRSWAP */
+#define WM8985_DLRSWAP_SHIFT                         2  /* DLRSWAP */
+#define WM8985_DLRSWAP_WIDTH                         1  /* DLRSWAP */
+#define WM8985_ALRSWAP                          0x0002  /* ALRSWAP */
+#define WM8985_ALRSWAP_MASK                     0x0002  /* ALRSWAP */
+#define WM8985_ALRSWAP_SHIFT                         1  /* ALRSWAP */
+#define WM8985_ALRSWAP_WIDTH                         1  /* ALRSWAP */
+#define WM8985_MONO                             0x0001  /* MONO */
+#define WM8985_MONO_MASK                        0x0001  /* MONO */
+#define WM8985_MONO_SHIFT                            0  /* MONO */
+#define WM8985_MONO_WIDTH                            1  /* MONO */
+
+/*
+ * R5 (0x05) - Companding control
+ */
+#define WM8985_WL8                              0x0020  /* WL8 */
+#define WM8985_WL8_MASK                         0x0020  /* WL8 */
+#define WM8985_WL8_SHIFT                             5  /* WL8 */
+#define WM8985_WL8_WIDTH                             1  /* WL8 */
+#define WM8985_DAC_COMP_MASK                    0x0018  /* DAC_COMP - [4:3] */
+#define WM8985_DAC_COMP_SHIFT                        3  /* DAC_COMP - [4:3] */
+#define WM8985_DAC_COMP_WIDTH                        2  /* DAC_COMP - [4:3] */
+#define WM8985_ADC_COMP_MASK                    0x0006  /* ADC_COMP - [2:1] */
+#define WM8985_ADC_COMP_SHIFT                        1  /* ADC_COMP - [2:1] */
+#define WM8985_ADC_COMP_WIDTH                        2  /* ADC_COMP - [2:1] */
+#define WM8985_LOOPBACK                         0x0001  /* LOOPBACK */
+#define WM8985_LOOPBACK_MASK                    0x0001  /* LOOPBACK */
+#define WM8985_LOOPBACK_SHIFT                        0  /* LOOPBACK */
+#define WM8985_LOOPBACK_WIDTH                        1  /* LOOPBACK */
+
+/*
+ * R6 (0x06) - Clock Gen control
+ */
+#define WM8985_CLKSEL                           0x0100  /* CLKSEL */
+#define WM8985_CLKSEL_MASK                      0x0100  /* CLKSEL */
+#define WM8985_CLKSEL_SHIFT                          8  /* CLKSEL */
+#define WM8985_CLKSEL_WIDTH                          1  /* CLKSEL */
+#define WM8985_MCLKDIV_MASK                     0x00E0  /* MCLKDIV - [7:5] */
+#define WM8985_MCLKDIV_SHIFT                         5  /* MCLKDIV - [7:5] */
+#define WM8985_MCLKDIV_WIDTH                         3  /* MCLKDIV - [7:5] */
+#define WM8985_BCLKDIV_MASK                     0x001C  /* BCLKDIV - [4:2] */
+#define WM8985_BCLKDIV_SHIFT                         2  /* BCLKDIV - [4:2] */
+#define WM8985_BCLKDIV_WIDTH                         3  /* BCLKDIV - [4:2] */
+#define WM8985_MS                               0x0001  /* MS */
+#define WM8985_MS_MASK                          0x0001  /* MS */
+#define WM8985_MS_SHIFT                              0  /* MS */
+#define WM8985_MS_WIDTH                              1  /* MS */
+
+/*
+ * R7 (0x07) - Additional control
+ */
+#define WM8985_M128ENB                          0x0100  /* M128ENB */
+#define WM8985_M128ENB_MASK                     0x0100  /* M128ENB */
+#define WM8985_M128ENB_SHIFT                         8  /* M128ENB */
+#define WM8985_M128ENB_WIDTH                         1  /* M128ENB */
+#define WM8985_DCLKDIV_MASK                     0x00F0  /* DCLKDIV - [7:4] */
+#define WM8985_DCLKDIV_SHIFT                         4  /* DCLKDIV - [7:4] */
+#define WM8985_DCLKDIV_WIDTH                         4  /* DCLKDIV - [7:4] */
+#define WM8985_SR_MASK                          0x000E  /* SR - [3:1] */
+#define WM8985_SR_SHIFT                              1  /* SR - [3:1] */
+#define WM8985_SR_WIDTH                              3  /* SR - [3:1] */
+#define WM8985_SLOWCLKEN                        0x0001  /* SLOWCLKEN */
+#define WM8985_SLOWCLKEN_MASK                   0x0001  /* SLOWCLKEN */
+#define WM8985_SLOWCLKEN_SHIFT                       0  /* SLOWCLKEN */
+#define WM8985_SLOWCLKEN_WIDTH                       1  /* SLOWCLKEN */
+
+/*
+ * R8 (0x08) - GPIO Control
+ */
+#define WM8985_GPIO1GP                          0x0100  /* GPIO1GP */
+#define WM8985_GPIO1GP_MASK                     0x0100  /* GPIO1GP */
+#define WM8985_GPIO1GP_SHIFT                         8  /* GPIO1GP */
+#define WM8985_GPIO1GP_WIDTH                         1  /* GPIO1GP */
+#define WM8985_GPIO1GPU                         0x0080  /* GPIO1GPU */
+#define WM8985_GPIO1GPU_MASK                    0x0080  /* GPIO1GPU */
+#define WM8985_GPIO1GPU_SHIFT                        7  /* GPIO1GPU */
+#define WM8985_GPIO1GPU_WIDTH                        1  /* GPIO1GPU */
+#define WM8985_GPIO1GPD                         0x0040  /* GPIO1GPD */
+#define WM8985_GPIO1GPD_MASK                    0x0040  /* GPIO1GPD */
+#define WM8985_GPIO1GPD_SHIFT                        6  /* GPIO1GPD */
+#define WM8985_GPIO1GPD_WIDTH                        1  /* GPIO1GPD */
+#define WM8985_GPIO1POL                         0x0008  /* GPIO1POL */
+#define WM8985_GPIO1POL_MASK                    0x0008  /* GPIO1POL */
+#define WM8985_GPIO1POL_SHIFT                        3  /* GPIO1POL */
+#define WM8985_GPIO1POL_WIDTH                        1  /* GPIO1POL */
+#define WM8985_GPIO1SEL_MASK                    0x0007  /* GPIO1SEL - [2:0] */
+#define WM8985_GPIO1SEL_SHIFT                        0  /* GPIO1SEL - [2:0] */
+#define WM8985_GPIO1SEL_WIDTH                        3  /* GPIO1SEL - [2:0] */
+
+/*
+ * R9 (0x09) - Jack Detect Control 1
+ */
+#define WM8985_JD_EN                            0x0040  /* JD_EN */
+#define WM8985_JD_EN_MASK                       0x0040  /* JD_EN */
+#define WM8985_JD_EN_SHIFT                           6  /* JD_EN */
+#define WM8985_JD_EN_WIDTH                           1  /* JD_EN */
+#define WM8985_JD_SEL_MASK                      0x0030  /* JD_SEL - [5:4] */
+#define WM8985_JD_SEL_SHIFT                          4  /* JD_SEL - [5:4] */
+#define WM8985_JD_SEL_WIDTH                          2  /* JD_SEL - [5:4] */
+
+/*
+ * R10 (0x0A) - DAC Control
+ */
+#define WM8985_SOFTMUTE                         0x0040  /* SOFTMUTE */
+#define WM8985_SOFTMUTE_MASK                    0x0040  /* SOFTMUTE */
+#define WM8985_SOFTMUTE_SHIFT                        6  /* SOFTMUTE */
+#define WM8985_SOFTMUTE_WIDTH                        1  /* SOFTMUTE */
+#define WM8985_DACOSR128                        0x0008  /* DACOSR128 */
+#define WM8985_DACOSR128_MASK                   0x0008  /* DACOSR128 */
+#define WM8985_DACOSR128_SHIFT                       3  /* DACOSR128 */
+#define WM8985_DACOSR128_WIDTH                       1  /* DACOSR128 */
+#define WM8985_AMUTE                            0x0004  /* AMUTE */
+#define WM8985_AMUTE_MASK                       0x0004  /* AMUTE */
+#define WM8985_AMUTE_SHIFT                           2  /* AMUTE */
+#define WM8985_AMUTE_WIDTH                           1  /* AMUTE */
+#define WM8985_DACPOLR                          0x0002  /* DACPOLR */
+#define WM8985_DACPOLR_MASK                     0x0002  /* DACPOLR */
+#define WM8985_DACPOLR_SHIFT                         1  /* DACPOLR */
+#define WM8985_DACPOLR_WIDTH                         1  /* DACPOLR */
+#define WM8985_DACPOLL                          0x0001  /* DACPOLL */
+#define WM8985_DACPOLL_MASK                     0x0001  /* DACPOLL */
+#define WM8985_DACPOLL_SHIFT                         0  /* DACPOLL */
+#define WM8985_DACPOLL_WIDTH                         1  /* DACPOLL */
+
+/*
+ * R11 (0x0B) - Left DAC digital Vol
+ */
+#define WM8985_DACVU                            0x0100  /* DACVU */
+#define WM8985_DACVU_MASK                       0x0100  /* DACVU */
+#define WM8985_DACVU_SHIFT                           8  /* DACVU */
+#define WM8985_DACVU_WIDTH                           1  /* DACVU */
+#define WM8985_DACVOLL_MASK                     0x00FF  /* DACVOLL - [7:0] */
+#define WM8985_DACVOLL_SHIFT                         0  /* DACVOLL - [7:0] */
+#define WM8985_DACVOLL_WIDTH                         8  /* DACVOLL - [7:0] */
+
+/*
+ * R12 (0x0C) - Right DAC digital vol
+ */
+#define WM8985_DACVU                            0x0100  /* DACVU */
+#define WM8985_DACVU_MASK                       0x0100  /* DACVU */
+#define WM8985_DACVU_SHIFT                           8  /* DACVU */
+#define WM8985_DACVU_WIDTH                           1  /* DACVU */
+#define WM8985_DACVOLR_MASK                     0x00FF  /* DACVOLR - [7:0] */
+#define WM8985_DACVOLR_SHIFT                         0  /* DACVOLR - [7:0] */
+#define WM8985_DACVOLR_WIDTH                         8  /* DACVOLR - [7:0] */
+
+/*
+ * R13 (0x0D) - Jack Detect Control 2
+ */
+#define WM8985_JD_EN1_MASK                      0x00F0  /* JD_EN1 - [7:4] */
+#define WM8985_JD_EN1_SHIFT                          4  /* JD_EN1 - [7:4] */
+#define WM8985_JD_EN1_WIDTH                          4  /* JD_EN1 - [7:4] */
+#define WM8985_JD_EN0_MASK                      0x000F  /* JD_EN0 - [3:0] */
+#define WM8985_JD_EN0_SHIFT                          0  /* JD_EN0 - [3:0] */
+#define WM8985_JD_EN0_WIDTH                          4  /* JD_EN0 - [3:0] */
+
+/*
+ * R14 (0x0E) - ADC Control
+ */
+#define WM8985_HPFEN                            0x0100  /* HPFEN */
+#define WM8985_HPFEN_MASK                       0x0100  /* HPFEN */
+#define WM8985_HPFEN_SHIFT                           8  /* HPFEN */
+#define WM8985_HPFEN_WIDTH                           1  /* HPFEN */
+#define WM8985_HPFAPP                           0x0080  /* HPFAPP */
+#define WM8985_HPFAPP_MASK                      0x0080  /* HPFAPP */
+#define WM8985_HPFAPP_SHIFT                          7  /* HPFAPP */
+#define WM8985_HPFAPP_WIDTH                          1  /* HPFAPP */
+#define WM8985_HPFCUT_MASK                      0x0070  /* HPFCUT - [6:4] */
+#define WM8985_HPFCUT_SHIFT                          4  /* HPFCUT - [6:4] */
+#define WM8985_HPFCUT_WIDTH                          3  /* HPFCUT - [6:4] */
+#define WM8985_ADCOSR128                        0x0008  /* ADCOSR128 */
+#define WM8985_ADCOSR128_MASK                   0x0008  /* ADCOSR128 */
+#define WM8985_ADCOSR128_SHIFT                       3  /* ADCOSR128 */
+#define WM8985_ADCOSR128_WIDTH                       1  /* ADCOSR128 */
+#define WM8985_ADCRPOL                          0x0002  /* ADCRPOL */
+#define WM8985_ADCRPOL_MASK                     0x0002  /* ADCRPOL */
+#define WM8985_ADCRPOL_SHIFT                         1  /* ADCRPOL */
+#define WM8985_ADCRPOL_WIDTH                         1  /* ADCRPOL */
+#define WM8985_ADCLPOL                          0x0001  /* ADCLPOL */
+#define WM8985_ADCLPOL_MASK                     0x0001  /* ADCLPOL */
+#define WM8985_ADCLPOL_SHIFT                         0  /* ADCLPOL */
+#define WM8985_ADCLPOL_WIDTH                         1  /* ADCLPOL */
+
+/*
+ * R15 (0x0F) - Left ADC Digital Vol
+ */
+#define WM8985_ADCVU                            0x0100  /* ADCVU */
+#define WM8985_ADCVU_MASK                       0x0100  /* ADCVU */
+#define WM8985_ADCVU_SHIFT                           8  /* ADCVU */
+#define WM8985_ADCVU_WIDTH                           1  /* ADCVU */
+#define WM8985_ADCVOLL_MASK                     0x00FF  /* ADCVOLL - [7:0] */
+#define WM8985_ADCVOLL_SHIFT                         0  /* ADCVOLL - [7:0] */
+#define WM8985_ADCVOLL_WIDTH                         8  /* ADCVOLL - [7:0] */
+
+/*
+ * R16 (0x10) - Right ADC Digital Vol
+ */
+#define WM8985_ADCVU                            0x0100  /* ADCVU */
+#define WM8985_ADCVU_MASK                       0x0100  /* ADCVU */
+#define WM8985_ADCVU_SHIFT                           8  /* ADCVU */
+#define WM8985_ADCVU_WIDTH                           1  /* ADCVU */
+#define WM8985_ADCVOLR_MASK                     0x00FF  /* ADCVOLR - [7:0] */
+#define WM8985_ADCVOLR_SHIFT                         0  /* ADCVOLR - [7:0] */
+#define WM8985_ADCVOLR_WIDTH                         8  /* ADCVOLR - [7:0] */
+
+/*
+ * R18 (0x12) - EQ1 - low shelf
+ */
+#define WM8985_EQ3DMODE                         0x0100  /* EQ3DMODE */
+#define WM8985_EQ3DMODE_MASK                    0x0100  /* EQ3DMODE */
+#define WM8985_EQ3DMODE_SHIFT                        8  /* EQ3DMODE */
+#define WM8985_EQ3DMODE_WIDTH                        1  /* EQ3DMODE */
+#define WM8985_EQ1C_MASK                        0x0060  /* EQ1C - [6:5] */
+#define WM8985_EQ1C_SHIFT                            5  /* EQ1C - [6:5] */
+#define WM8985_EQ1C_WIDTH                            2  /* EQ1C - [6:5] */
+#define WM8985_EQ1G_MASK                        0x001F  /* EQ1G - [4:0] */
+#define WM8985_EQ1G_SHIFT                            0  /* EQ1G - [4:0] */
+#define WM8985_EQ1G_WIDTH                            5  /* EQ1G - [4:0] */
+
+/*
+ * R19 (0x13) - EQ2 - peak 1
+ */
+#define WM8985_EQ2BW                            0x0100  /* EQ2BW */
+#define WM8985_EQ2BW_MASK                       0x0100  /* EQ2BW */
+#define WM8985_EQ2BW_SHIFT                           8  /* EQ2BW */
+#define WM8985_EQ2BW_WIDTH                           1  /* EQ2BW */
+#define WM8985_EQ2C_MASK                        0x0060  /* EQ2C - [6:5] */
+#define WM8985_EQ2C_SHIFT                            5  /* EQ2C - [6:5] */
+#define WM8985_EQ2C_WIDTH                            2  /* EQ2C - [6:5] */
+#define WM8985_EQ2G_MASK                        0x001F  /* EQ2G - [4:0] */
+#define WM8985_EQ2G_SHIFT                            0  /* EQ2G - [4:0] */
+#define WM8985_EQ2G_WIDTH                            5  /* EQ2G - [4:0] */
+
+/*
+ * R20 (0x14) - EQ3 - peak 2
+ */
+#define WM8985_EQ3BW                            0x0100  /* EQ3BW */
+#define WM8985_EQ3BW_MASK                       0x0100  /* EQ3BW */
+#define WM8985_EQ3BW_SHIFT                           8  /* EQ3BW */
+#define WM8985_EQ3BW_WIDTH                           1  /* EQ3BW */
+#define WM8985_EQ3C_MASK                        0x0060  /* EQ3C - [6:5] */
+#define WM8985_EQ3C_SHIFT                            5  /* EQ3C - [6:5] */
+#define WM8985_EQ3C_WIDTH                            2  /* EQ3C - [6:5] */
+#define WM8985_EQ3G_MASK                        0x001F  /* EQ3G - [4:0] */
+#define WM8985_EQ3G_SHIFT                            0  /* EQ3G - [4:0] */
+#define WM8985_EQ3G_WIDTH                            5  /* EQ3G - [4:0] */
+
+/*
+ * R21 (0x15) - EQ4 - peak 3
+ */
+#define WM8985_EQ4BW                            0x0100  /* EQ4BW */
+#define WM8985_EQ4BW_MASK                       0x0100  /* EQ4BW */
+#define WM8985_EQ4BW_SHIFT                           8  /* EQ4BW */
+#define WM8985_EQ4BW_WIDTH                           1  /* EQ4BW */
+#define WM8985_EQ4C_MASK                        0x0060  /* EQ4C - [6:5] */
+#define WM8985_EQ4C_SHIFT                            5  /* EQ4C - [6:5] */
+#define WM8985_EQ4C_WIDTH                            2  /* EQ4C - [6:5] */
+#define WM8985_EQ4G_MASK                        0x001F  /* EQ4G - [4:0] */
+#define WM8985_EQ4G_SHIFT                            0  /* EQ4G - [4:0] */
+#define WM8985_EQ4G_WIDTH                            5  /* EQ4G - [4:0] */
+
+/*
+ * R22 (0x16) - EQ5 - high shelf
+ */
+#define WM8985_EQ5C_MASK                        0x0060  /* EQ5C - [6:5] */
+#define WM8985_EQ5C_SHIFT                            5  /* EQ5C - [6:5] */
+#define WM8985_EQ5C_WIDTH                            2  /* EQ5C - [6:5] */
+#define WM8985_EQ5G_MASK                        0x001F  /* EQ5G - [4:0] */
+#define WM8985_EQ5G_SHIFT                            0  /* EQ5G - [4:0] */
+#define WM8985_EQ5G_WIDTH                            5  /* EQ5G - [4:0] */
+
+/*
+ * R24 (0x18) - DAC Limiter 1
+ */
+#define WM8985_LIMEN                            0x0100  /* LIMEN */
+#define WM8985_LIMEN_MASK                       0x0100  /* LIMEN */
+#define WM8985_LIMEN_SHIFT                           8  /* LIMEN */
+#define WM8985_LIMEN_WIDTH                           1  /* LIMEN */
+#define WM8985_LIMDCY_MASK                      0x00F0  /* LIMDCY - [7:4] */
+#define WM8985_LIMDCY_SHIFT                          4  /* LIMDCY - [7:4] */
+#define WM8985_LIMDCY_WIDTH                          4  /* LIMDCY - [7:4] */
+#define WM8985_LIMATK_MASK                      0x000F  /* LIMATK - [3:0] */
+#define WM8985_LIMATK_SHIFT                          0  /* LIMATK - [3:0] */
+#define WM8985_LIMATK_WIDTH                          4  /* LIMATK - [3:0] */
+
+/*
+ * R25 (0x19) - DAC Limiter 2
+ */
+#define WM8985_LIMLVL_MASK                      0x0070  /* LIMLVL - [6:4] */
+#define WM8985_LIMLVL_SHIFT                          4  /* LIMLVL - [6:4] */
+#define WM8985_LIMLVL_WIDTH                          3  /* LIMLVL - [6:4] */
+#define WM8985_LIMBOOST_MASK                    0x000F  /* LIMBOOST - [3:0] */
+#define WM8985_LIMBOOST_SHIFT                        0  /* LIMBOOST - [3:0] */
+#define WM8985_LIMBOOST_WIDTH                        4  /* LIMBOOST - [3:0] */
+
+/*
+ * R27 (0x1B) - Notch Filter 1
+ */
+#define WM8985_NFU                              0x0100  /* NFU */
+#define WM8985_NFU_MASK                         0x0100  /* NFU */
+#define WM8985_NFU_SHIFT                             8  /* NFU */
+#define WM8985_NFU_WIDTH                             1  /* NFU */
+#define WM8985_NFEN                             0x0080  /* NFEN */
+#define WM8985_NFEN_MASK                        0x0080  /* NFEN */
+#define WM8985_NFEN_SHIFT                            7  /* NFEN */
+#define WM8985_NFEN_WIDTH                            1  /* NFEN */
+#define WM8985_NFA0_13_7_MASK                   0x007F  /* NFA0(13:7) - [6:0] */
+#define WM8985_NFA0_13_7_SHIFT                       0  /* NFA0(13:7) - [6:0] */
+#define WM8985_NFA0_13_7_WIDTH                       7  /* NFA0(13:7) - [6:0] */
+
+/*
+ * R28 (0x1C) - Notch Filter 2
+ */
+#define WM8985_NFU                              0x0100  /* NFU */
+#define WM8985_NFU_MASK                         0x0100  /* NFU */
+#define WM8985_NFU_SHIFT                             8  /* NFU */
+#define WM8985_NFU_WIDTH                             1  /* NFU */
+#define WM8985_NFA0_6_0_MASK                    0x007F  /* NFA0(6:0) - [6:0] */
+#define WM8985_NFA0_6_0_SHIFT                        0  /* NFA0(6:0) - [6:0] */
+#define WM8985_NFA0_6_0_WIDTH                        7  /* NFA0(6:0) - [6:0] */
+
+/*
+ * R29 (0x1D) - Notch Filter 3
+ */
+#define WM8985_NFU                              0x0100  /* NFU */
+#define WM8985_NFU_MASK                         0x0100  /* NFU */
+#define WM8985_NFU_SHIFT                             8  /* NFU */
+#define WM8985_NFU_WIDTH                             1  /* NFU */
+#define WM8985_NFA1_13_7_MASK                   0x007F  /* NFA1(13:7) - [6:0] */
+#define WM8985_NFA1_13_7_SHIFT                       0  /* NFA1(13:7) - [6:0] */
+#define WM8985_NFA1_13_7_WIDTH                       7  /* NFA1(13:7) - [6:0] */
+
+/*
+ * R30 (0x1E) - Notch Filter 4
+ */
+#define WM8985_NFU                              0x0100  /* NFU */
+#define WM8985_NFU_MASK                         0x0100  /* NFU */
+#define WM8985_NFU_SHIFT                             8  /* NFU */
+#define WM8985_NFU_WIDTH                             1  /* NFU */
+#define WM8985_NFA1_6_0_MASK                    0x007F  /* NFA1(6:0) - [6:0] */
+#define WM8985_NFA1_6_0_SHIFT                        0  /* NFA1(6:0) - [6:0] */
+#define WM8985_NFA1_6_0_WIDTH                        7  /* NFA1(6:0) - [6:0] */
+
+/*
+ * R32 (0x20) - ALC control 1
+ */
+#define WM8985_ALCSEL_MASK                      0x0180  /* ALCSEL - [8:7] */
+#define WM8985_ALCSEL_SHIFT                          7  /* ALCSEL - [8:7] */
+#define WM8985_ALCSEL_WIDTH                          2  /* ALCSEL - [8:7] */
+#define WM8985_ALCMAX_MASK                      0x0038  /* ALCMAX - [5:3] */
+#define WM8985_ALCMAX_SHIFT                          3  /* ALCMAX - [5:3] */
+#define WM8985_ALCMAX_WIDTH                          3  /* ALCMAX - [5:3] */
+#define WM8985_ALCMIN_MASK                      0x0007  /* ALCMIN - [2:0] */
+#define WM8985_ALCMIN_SHIFT                          0  /* ALCMIN - [2:0] */
+#define WM8985_ALCMIN_WIDTH                          3  /* ALCMIN - [2:0] */
+
+/*
+ * R33 (0x21) - ALC control 2
+ */
+#define WM8985_ALCHLD_MASK                      0x00F0  /* ALCHLD - [7:4] */
+#define WM8985_ALCHLD_SHIFT                          4  /* ALCHLD - [7:4] */
+#define WM8985_ALCHLD_WIDTH                          4  /* ALCHLD - [7:4] */
+#define WM8985_ALCLVL_MASK                      0x000F  /* ALCLVL - [3:0] */
+#define WM8985_ALCLVL_SHIFT                          0  /* ALCLVL - [3:0] */
+#define WM8985_ALCLVL_WIDTH                          4  /* ALCLVL - [3:0] */
+
+/*
+ * R34 (0x22) - ALC control 3
+ */
+#define WM8985_ALCMODE                          0x0100  /* ALCMODE */
+#define WM8985_ALCMODE_MASK                     0x0100  /* ALCMODE */
+#define WM8985_ALCMODE_SHIFT                         8  /* ALCMODE */
+#define WM8985_ALCMODE_WIDTH                         1  /* ALCMODE */
+#define WM8985_ALCDCY_MASK                      0x00F0  /* ALCDCY - [7:4] */
+#define WM8985_ALCDCY_SHIFT                          4  /* ALCDCY - [7:4] */
+#define WM8985_ALCDCY_WIDTH                          4  /* ALCDCY - [7:4] */
+#define WM8985_ALCATK_MASK                      0x000F  /* ALCATK - [3:0] */
+#define WM8985_ALCATK_SHIFT                          0  /* ALCATK - [3:0] */
+#define WM8985_ALCATK_WIDTH                          4  /* ALCATK - [3:0] */
+
+/*
+ * R35 (0x23) - Noise Gate
+ */
+#define WM8985_NGEN                             0x0008  /* NGEN */
+#define WM8985_NGEN_MASK                        0x0008  /* NGEN */
+#define WM8985_NGEN_SHIFT                            3  /* NGEN */
+#define WM8985_NGEN_WIDTH                            1  /* NGEN */
+#define WM8985_NGTH_MASK                        0x0007  /* NGTH - [2:0] */
+#define WM8985_NGTH_SHIFT                            0  /* NGTH - [2:0] */
+#define WM8985_NGTH_WIDTH                            3  /* NGTH - [2:0] */
+
+/*
+ * R36 (0x24) - PLL N
+ */
+#define WM8985_PLL_PRESCALE                     0x0010  /* PLL_PRESCALE */
+#define WM8985_PLL_PRESCALE_MASK                0x0010  /* PLL_PRESCALE */
+#define WM8985_PLL_PRESCALE_SHIFT                    4  /* PLL_PRESCALE */
+#define WM8985_PLL_PRESCALE_WIDTH                    1  /* PLL_PRESCALE */
+#define WM8985_PLLN_MASK                        0x000F  /* PLLN - [3:0] */
+#define WM8985_PLLN_SHIFT                            0  /* PLLN - [3:0] */
+#define WM8985_PLLN_WIDTH                            4  /* PLLN - [3:0] */
+
+/*
+ * R37 (0x25) - PLL K 1
+ */
+#define WM8985_PLLK_23_18_MASK                  0x003F  /* PLLK(23:18) - [5:0] */
+#define WM8985_PLLK_23_18_SHIFT                      0  /* PLLK(23:18) - [5:0] */
+#define WM8985_PLLK_23_18_WIDTH                      6  /* PLLK(23:18) - [5:0] */
+
+/*
+ * R38 (0x26) - PLL K 2
+ */
+#define WM8985_PLLK_17_9_MASK                   0x01FF  /* PLLK(17:9) - [8:0] */
+#define WM8985_PLLK_17_9_SHIFT                       0  /* PLLK(17:9) - [8:0] */
+#define WM8985_PLLK_17_9_WIDTH                       9  /* PLLK(17:9) - [8:0] */
+
+/*
+ * R39 (0x27) - PLL K 3
+ */
+#define WM8985_PLLK_8_0_MASK                    0x01FF  /* PLLK(8:0) - [8:0] */
+#define WM8985_PLLK_8_0_SHIFT                        0  /* PLLK(8:0) - [8:0] */
+#define WM8985_PLLK_8_0_WIDTH                        9  /* PLLK(8:0) - [8:0] */
+
+/*
+ * R41 (0x29) - 3D control
+ */
+#define WM8985_DEPTH3D_MASK                     0x000F  /* DEPTH3D - [3:0] */
+#define WM8985_DEPTH3D_SHIFT                         0  /* DEPTH3D - [3:0] */
+#define WM8985_DEPTH3D_WIDTH                         4  /* DEPTH3D - [3:0] */
+
+/*
+ * R42 (0x2A) - OUT4 to ADC
+ */
+#define WM8985_OUT4_2ADCVOL_MASK                0x01C0  /* OUT4_2ADCVOL - [8:6] */
+#define WM8985_OUT4_2ADCVOL_SHIFT                    6  /* OUT4_2ADCVOL - [8:6] */
+#define WM8985_OUT4_2ADCVOL_WIDTH                    3  /* OUT4_2ADCVOL - [8:6] */
+#define WM8985_OUT4_2LNR                        0x0020  /* OUT4_2LNR */
+#define WM8985_OUT4_2LNR_MASK                   0x0020  /* OUT4_2LNR */
+#define WM8985_OUT4_2LNR_SHIFT                       5  /* OUT4_2LNR */
+#define WM8985_OUT4_2LNR_WIDTH                       1  /* OUT4_2LNR */
+#define WM8985_POBCTRL                          0x0004  /* POBCTRL */
+#define WM8985_POBCTRL_MASK                     0x0004  /* POBCTRL */
+#define WM8985_POBCTRL_SHIFT                         2  /* POBCTRL */
+#define WM8985_POBCTRL_WIDTH                         1  /* POBCTRL */
+#define WM8985_DELEN                            0x0002  /* DELEN */
+#define WM8985_DELEN_MASK                       0x0002  /* DELEN */
+#define WM8985_DELEN_SHIFT                           1  /* DELEN */
+#define WM8985_DELEN_WIDTH                           1  /* DELEN */
+#define WM8985_OUT1DEL                          0x0001  /* OUT1DEL */
+#define WM8985_OUT1DEL_MASK                     0x0001  /* OUT1DEL */
+#define WM8985_OUT1DEL_SHIFT                         0  /* OUT1DEL */
+#define WM8985_OUT1DEL_WIDTH                         1  /* OUT1DEL */
+
+/*
+ * R43 (0x2B) - Beep control
+ */
+#define WM8985_BYPL2RMIX                        0x0100  /* BYPL2RMIX */
+#define WM8985_BYPL2RMIX_MASK                   0x0100  /* BYPL2RMIX */
+#define WM8985_BYPL2RMIX_SHIFT                       8  /* BYPL2RMIX */
+#define WM8985_BYPL2RMIX_WIDTH                       1  /* BYPL2RMIX */
+#define WM8985_BYPR2LMIX                        0x0080  /* BYPR2LMIX */
+#define WM8985_BYPR2LMIX_MASK                   0x0080  /* BYPR2LMIX */
+#define WM8985_BYPR2LMIX_SHIFT                       7  /* BYPR2LMIX */
+#define WM8985_BYPR2LMIX_WIDTH                       1  /* BYPR2LMIX */
+#define WM8985_MUTERPGA2INV                     0x0020  /* MUTERPGA2INV */
+#define WM8985_MUTERPGA2INV_MASK                0x0020  /* MUTERPGA2INV */
+#define WM8985_MUTERPGA2INV_SHIFT                    5  /* MUTERPGA2INV */
+#define WM8985_MUTERPGA2INV_WIDTH                    1  /* MUTERPGA2INV */
+#define WM8985_INVROUT2                         0x0010  /* INVROUT2 */
+#define WM8985_INVROUT2_MASK                    0x0010  /* INVROUT2 */
+#define WM8985_INVROUT2_SHIFT                        4  /* INVROUT2 */
+#define WM8985_INVROUT2_WIDTH                        1  /* INVROUT2 */
+#define WM8985_BEEPVOL_MASK                     0x000E  /* BEEPVOL - [3:1] */
+#define WM8985_BEEPVOL_SHIFT                         1  /* BEEPVOL - [3:1] */
+#define WM8985_BEEPVOL_WIDTH                         3  /* BEEPVOL - [3:1] */
+#define WM8985_BEEPEN                           0x0001  /* BEEPEN */
+#define WM8985_BEEPEN_MASK                      0x0001  /* BEEPEN */
+#define WM8985_BEEPEN_SHIFT                          0  /* BEEPEN */
+#define WM8985_BEEPEN_WIDTH                          1  /* BEEPEN */
+
+/*
+ * R44 (0x2C) - Input ctrl
+ */
+#define WM8985_MBVSEL                           0x0100  /* MBVSEL */
+#define WM8985_MBVSEL_MASK                      0x0100  /* MBVSEL */
+#define WM8985_MBVSEL_SHIFT                          8  /* MBVSEL */
+#define WM8985_MBVSEL_WIDTH                          1  /* MBVSEL */
+#define WM8985_R2_2INPPGA                       0x0040  /* R2_2INPPGA */
+#define WM8985_R2_2INPPGA_MASK                  0x0040  /* R2_2INPPGA */
+#define WM8985_R2_2INPPGA_SHIFT                      6  /* R2_2INPPGA */
+#define WM8985_R2_2INPPGA_WIDTH                      1  /* R2_2INPPGA */
+#define WM8985_RIN2INPPGA                       0x0020  /* RIN2INPPGA */
+#define WM8985_RIN2INPPGA_MASK                  0x0020  /* RIN2INPPGA */
+#define WM8985_RIN2INPPGA_SHIFT                      5  /* RIN2INPPGA */
+#define WM8985_RIN2INPPGA_WIDTH                      1  /* RIN2INPPGA */
+#define WM8985_RIP2INPPGA                       0x0010  /* RIP2INPPGA */
+#define WM8985_RIP2INPPGA_MASK                  0x0010  /* RIP2INPPGA */
+#define WM8985_RIP2INPPGA_SHIFT                      4  /* RIP2INPPGA */
+#define WM8985_RIP2INPPGA_WIDTH                      1  /* RIP2INPPGA */
+#define WM8985_L2_2INPPGA                       0x0004  /* L2_2INPPGA */
+#define WM8985_L2_2INPPGA_MASK                  0x0004  /* L2_2INPPGA */
+#define WM8985_L2_2INPPGA_SHIFT                      2  /* L2_2INPPGA */
+#define WM8985_L2_2INPPGA_WIDTH                      1  /* L2_2INPPGA */
+#define WM8985_LIN2INPPGA                       0x0002  /* LIN2INPPGA */
+#define WM8985_LIN2INPPGA_MASK                  0x0002  /* LIN2INPPGA */
+#define WM8985_LIN2INPPGA_SHIFT                      1  /* LIN2INPPGA */
+#define WM8985_LIN2INPPGA_WIDTH                      1  /* LIN2INPPGA */
+#define WM8985_LIP2INPPGA                       0x0001  /* LIP2INPPGA */
+#define WM8985_LIP2INPPGA_MASK                  0x0001  /* LIP2INPPGA */
+#define WM8985_LIP2INPPGA_SHIFT                      0  /* LIP2INPPGA */
+#define WM8985_LIP2INPPGA_WIDTH                      1  /* LIP2INPPGA */
+
+/*
+ * R45 (0x2D) - Left INP PGA gain ctrl
+ */
+#define WM8985_INPGAVU                          0x0100  /* INPGAVU */
+#define WM8985_INPGAVU_MASK                     0x0100  /* INPGAVU */
+#define WM8985_INPGAVU_SHIFT                         8  /* INPGAVU */
+#define WM8985_INPGAVU_WIDTH                         1  /* INPGAVU */
+#define WM8985_INPPGAZCL                        0x0080  /* INPPGAZCL */
+#define WM8985_INPPGAZCL_MASK                   0x0080  /* INPPGAZCL */
+#define WM8985_INPPGAZCL_SHIFT                       7  /* INPPGAZCL */
+#define WM8985_INPPGAZCL_WIDTH                       1  /* INPPGAZCL */
+#define WM8985_INPPGAMUTEL                      0x0040  /* INPPGAMUTEL */
+#define WM8985_INPPGAMUTEL_MASK                 0x0040  /* INPPGAMUTEL */
+#define WM8985_INPPGAMUTEL_SHIFT                     6  /* INPPGAMUTEL */
+#define WM8985_INPPGAMUTEL_WIDTH                     1  /* INPPGAMUTEL */
+#define WM8985_INPPGAVOLL_MASK                  0x003F  /* INPPGAVOLL - [5:0] */
+#define WM8985_INPPGAVOLL_SHIFT                      0  /* INPPGAVOLL - [5:0] */
+#define WM8985_INPPGAVOLL_WIDTH                      6  /* INPPGAVOLL - [5:0] */
+
+/*
+ * R46 (0x2E) - Right INP PGA gain ctrl
+ */
+#define WM8985_INPGAVU                          0x0100  /* INPGAVU */
+#define WM8985_INPGAVU_MASK                     0x0100  /* INPGAVU */
+#define WM8985_INPGAVU_SHIFT                         8  /* INPGAVU */
+#define WM8985_INPGAVU_WIDTH                         1  /* INPGAVU */
+#define WM8985_INPPGAZCR                        0x0080  /* INPPGAZCR */
+#define WM8985_INPPGAZCR_MASK                   0x0080  /* INPPGAZCR */
+#define WM8985_INPPGAZCR_SHIFT                       7  /* INPPGAZCR */
+#define WM8985_INPPGAZCR_WIDTH                       1  /* INPPGAZCR */
+#define WM8985_INPPGAMUTER                      0x0040  /* INPPGAMUTER */
+#define WM8985_INPPGAMUTER_MASK                 0x0040  /* INPPGAMUTER */
+#define WM8985_INPPGAMUTER_SHIFT                     6  /* INPPGAMUTER */
+#define WM8985_INPPGAMUTER_WIDTH                     1  /* INPPGAMUTER */
+#define WM8985_INPPGAVOLR_MASK                  0x003F  /* INPPGAVOLR - [5:0] */
+#define WM8985_INPPGAVOLR_SHIFT                      0  /* INPPGAVOLR - [5:0] */
+#define WM8985_INPPGAVOLR_WIDTH                      6  /* INPPGAVOLR - [5:0] */
+
+/*
+ * R47 (0x2F) - Left ADC BOOST ctrl
+ */
+#define WM8985_PGABOOSTL                        0x0100  /* PGABOOSTL */
+#define WM8985_PGABOOSTL_MASK                   0x0100  /* PGABOOSTL */
+#define WM8985_PGABOOSTL_SHIFT                       8  /* PGABOOSTL */
+#define WM8985_PGABOOSTL_WIDTH                       1  /* PGABOOSTL */
+#define WM8985_L2_2BOOSTVOL_MASK                0x0070  /* L2_2BOOSTVOL - [6:4] */
+#define WM8985_L2_2BOOSTVOL_SHIFT                    4  /* L2_2BOOSTVOL - [6:4] */
+#define WM8985_L2_2BOOSTVOL_WIDTH                    3  /* L2_2BOOSTVOL - [6:4] */
+#define WM8985_AUXL2BOOSTVOL_MASK               0x0007  /* AUXL2BOOSTVOL - [2:0] */
+#define WM8985_AUXL2BOOSTVOL_SHIFT                   0  /* AUXL2BOOSTVOL - [2:0] */
+#define WM8985_AUXL2BOOSTVOL_WIDTH                   3  /* AUXL2BOOSTVOL - [2:0] */
+
+/*
+ * R48 (0x30) - Right ADC BOOST ctrl
+ */
+#define WM8985_PGABOOSTR                        0x0100  /* PGABOOSTR */
+#define WM8985_PGABOOSTR_MASK                   0x0100  /* PGABOOSTR */
+#define WM8985_PGABOOSTR_SHIFT                       8  /* PGABOOSTR */
+#define WM8985_PGABOOSTR_WIDTH                       1  /* PGABOOSTR */
+#define WM8985_R2_2BOOSTVOL_MASK                0x0070  /* R2_2BOOSTVOL - [6:4] */
+#define WM8985_R2_2BOOSTVOL_SHIFT                    4  /* R2_2BOOSTVOL - [6:4] */
+#define WM8985_R2_2BOOSTVOL_WIDTH                    3  /* R2_2BOOSTVOL - [6:4] */
+#define WM8985_AUXR2BOOSTVOL_MASK               0x0007  /* AUXR2BOOSTVOL - [2:0] */
+#define WM8985_AUXR2BOOSTVOL_SHIFT                   0  /* AUXR2BOOSTVOL - [2:0] */
+#define WM8985_AUXR2BOOSTVOL_WIDTH                   3  /* AUXR2BOOSTVOL - [2:0] */
+
+/*
+ * R49 (0x31) - Output ctrl
+ */
+#define WM8985_DACL2RMIX                        0x0040  /* DACL2RMIX */
+#define WM8985_DACL2RMIX_MASK                   0x0040  /* DACL2RMIX */
+#define WM8985_DACL2RMIX_SHIFT                       6  /* DACL2RMIX */
+#define WM8985_DACL2RMIX_WIDTH                       1  /* DACL2RMIX */
+#define WM8985_DACR2LMIX                        0x0020  /* DACR2LMIX */
+#define WM8985_DACR2LMIX_MASK                   0x0020  /* DACR2LMIX */
+#define WM8985_DACR2LMIX_SHIFT                       5  /* DACR2LMIX */
+#define WM8985_DACR2LMIX_WIDTH                       1  /* DACR2LMIX */
+#define WM8985_OUT4BOOST                        0x0010  /* OUT4BOOST */
+#define WM8985_OUT4BOOST_MASK                   0x0010  /* OUT4BOOST */
+#define WM8985_OUT4BOOST_SHIFT                       4  /* OUT4BOOST */
+#define WM8985_OUT4BOOST_WIDTH                       1  /* OUT4BOOST */
+#define WM8985_OUT3BOOST                        0x0008  /* OUT3BOOST */
+#define WM8985_OUT3BOOST_MASK                   0x0008  /* OUT3BOOST */
+#define WM8985_OUT3BOOST_SHIFT                       3  /* OUT3BOOST */
+#define WM8985_OUT3BOOST_WIDTH                       1  /* OUT3BOOST */
+#define WM8985_TSOPCTRL                         0x0004  /* TSOPCTRL */
+#define WM8985_TSOPCTRL_MASK                    0x0004  /* TSOPCTRL */
+#define WM8985_TSOPCTRL_SHIFT                        2  /* TSOPCTRL */
+#define WM8985_TSOPCTRL_WIDTH                        1  /* TSOPCTRL */
+#define WM8985_TSDEN                            0x0002  /* TSDEN */
+#define WM8985_TSDEN_MASK                       0x0002  /* TSDEN */
+#define WM8985_TSDEN_SHIFT                           1  /* TSDEN */
+#define WM8985_TSDEN_WIDTH                           1  /* TSDEN */
+#define WM8985_VROI                             0x0001  /* VROI */
+#define WM8985_VROI_MASK                        0x0001  /* VROI */
+#define WM8985_VROI_SHIFT                            0  /* VROI */
+#define WM8985_VROI_WIDTH                            1  /* VROI */
+
+/*
+ * R50 (0x32) - Left mixer ctrl
+ */
+#define WM8985_AUXLMIXVOL_MASK                  0x01C0  /* AUXLMIXVOL - [8:6] */
+#define WM8985_AUXLMIXVOL_SHIFT                      6  /* AUXLMIXVOL - [8:6] */
+#define WM8985_AUXLMIXVOL_WIDTH                      3  /* AUXLMIXVOL - [8:6] */
+#define WM8985_AUXL2LMIX                        0x0020  /* AUXL2LMIX */
+#define WM8985_AUXL2LMIX_MASK                   0x0020  /* AUXL2LMIX */
+#define WM8985_AUXL2LMIX_SHIFT                       5  /* AUXL2LMIX */
+#define WM8985_AUXL2LMIX_WIDTH                       1  /* AUXL2LMIX */
+#define WM8985_BYPLMIXVOL_MASK                  0x001C  /* BYPLMIXVOL - [4:2] */
+#define WM8985_BYPLMIXVOL_SHIFT                      2  /* BYPLMIXVOL - [4:2] */
+#define WM8985_BYPLMIXVOL_WIDTH                      3  /* BYPLMIXVOL - [4:2] */
+#define WM8985_BYPL2LMIX                        0x0002  /* BYPL2LMIX */
+#define WM8985_BYPL2LMIX_MASK                   0x0002  /* BYPL2LMIX */
+#define WM8985_BYPL2LMIX_SHIFT                       1  /* BYPL2LMIX */
+#define WM8985_BYPL2LMIX_WIDTH                       1  /* BYPL2LMIX */
+#define WM8985_DACL2LMIX                        0x0001  /* DACL2LMIX */
+#define WM8985_DACL2LMIX_MASK                   0x0001  /* DACL2LMIX */
+#define WM8985_DACL2LMIX_SHIFT                       0  /* DACL2LMIX */
+#define WM8985_DACL2LMIX_WIDTH                       1  /* DACL2LMIX */
+
+/*
+ * R51 (0x33) - Right mixer ctrl
+ */
+#define WM8985_AUXRMIXVOL_MASK                  0x01C0  /* AUXRMIXVOL - [8:6] */
+#define WM8985_AUXRMIXVOL_SHIFT                      6  /* AUXRMIXVOL - [8:6] */
+#define WM8985_AUXRMIXVOL_WIDTH                      3  /* AUXRMIXVOL - [8:6] */
+#define WM8985_AUXR2RMIX                        0x0020  /* AUXR2RMIX */
+#define WM8985_AUXR2RMIX_MASK                   0x0020  /* AUXR2RMIX */
+#define WM8985_AUXR2RMIX_SHIFT                       5  /* AUXR2RMIX */
+#define WM8985_AUXR2RMIX_WIDTH                       1  /* AUXR2RMIX */
+#define WM8985_BYPRMIXVOL_MASK                  0x001C  /* BYPRMIXVOL - [4:2] */
+#define WM8985_BYPRMIXVOL_SHIFT                      2  /* BYPRMIXVOL - [4:2] */
+#define WM8985_BYPRMIXVOL_WIDTH                      3  /* BYPRMIXVOL - [4:2] */
+#define WM8985_BYPR2RMIX                        0x0002  /* BYPR2RMIX */
+#define WM8985_BYPR2RMIX_MASK                   0x0002  /* BYPR2RMIX */
+#define WM8985_BYPR2RMIX_SHIFT                       1  /* BYPR2RMIX */
+#define WM8985_BYPR2RMIX_WIDTH                       1  /* BYPR2RMIX */
+#define WM8985_DACR2RMIX                        0x0001  /* DACR2RMIX */
+#define WM8985_DACR2RMIX_MASK                   0x0001  /* DACR2RMIX */
+#define WM8985_DACR2RMIX_SHIFT                       0  /* DACR2RMIX */
+#define WM8985_DACR2RMIX_WIDTH                       1  /* DACR2RMIX */
+
+/*
+ * R52 (0x34) - LOUT1 (HP) volume ctrl
+ */
+#define WM8985_OUT1VU                           0x0100  /* OUT1VU */
+#define WM8985_OUT1VU_MASK                      0x0100  /* OUT1VU */
+#define WM8985_OUT1VU_SHIFT                          8  /* OUT1VU */
+#define WM8985_OUT1VU_WIDTH                          1  /* OUT1VU */
+#define WM8985_LOUT1ZC                          0x0080  /* LOUT1ZC */
+#define WM8985_LOUT1ZC_MASK                     0x0080  /* LOUT1ZC */
+#define WM8985_LOUT1ZC_SHIFT                         7  /* LOUT1ZC */
+#define WM8985_LOUT1ZC_WIDTH                         1  /* LOUT1ZC */
+#define WM8985_LOUT1MUTE                        0x0040  /* LOUT1MUTE */
+#define WM8985_LOUT1MUTE_MASK                   0x0040  /* LOUT1MUTE */
+#define WM8985_LOUT1MUTE_SHIFT                       6  /* LOUT1MUTE */
+#define WM8985_LOUT1MUTE_WIDTH                       1  /* LOUT1MUTE */
+#define WM8985_LOUT1VOL_MASK                    0x003F  /* LOUT1VOL - [5:0] */
+#define WM8985_LOUT1VOL_SHIFT                        0  /* LOUT1VOL - [5:0] */
+#define WM8985_LOUT1VOL_WIDTH                        6  /* LOUT1VOL - [5:0] */
+
+/*
+ * R53 (0x35) - ROUT1 (HP) volume ctrl
+ */
+#define WM8985_OUT1VU                           0x0100  /* OUT1VU */
+#define WM8985_OUT1VU_MASK                      0x0100  /* OUT1VU */
+#define WM8985_OUT1VU_SHIFT                          8  /* OUT1VU */
+#define WM8985_OUT1VU_WIDTH                          1  /* OUT1VU */
+#define WM8985_ROUT1ZC                          0x0080  /* ROUT1ZC */
+#define WM8985_ROUT1ZC_MASK                     0x0080  /* ROUT1ZC */
+#define WM8985_ROUT1ZC_SHIFT                         7  /* ROUT1ZC */
+#define WM8985_ROUT1ZC_WIDTH                         1  /* ROUT1ZC */
+#define WM8985_ROUT1MUTE                        0x0040  /* ROUT1MUTE */
+#define WM8985_ROUT1MUTE_MASK                   0x0040  /* ROUT1MUTE */
+#define WM8985_ROUT1MUTE_SHIFT                       6  /* ROUT1MUTE */
+#define WM8985_ROUT1MUTE_WIDTH                       1  /* ROUT1MUTE */
+#define WM8985_ROUT1VOL_MASK                    0x003F  /* ROUT1VOL - [5:0] */
+#define WM8985_ROUT1VOL_SHIFT                        0  /* ROUT1VOL - [5:0] */
+#define WM8985_ROUT1VOL_WIDTH                        6  /* ROUT1VOL - [5:0] */
+
+/*
+ * R54 (0x36) - LOUT2 (SPK) volume ctrl
+ */
+#define WM8985_OUT2VU                           0x0100  /* OUT2VU */
+#define WM8985_OUT2VU_MASK                      0x0100  /* OUT2VU */
+#define WM8985_OUT2VU_SHIFT                          8  /* OUT2VU */
+#define WM8985_OUT2VU_WIDTH                          1  /* OUT2VU */
+#define WM8985_LOUT2ZC                          0x0080  /* LOUT2ZC */
+#define WM8985_LOUT2ZC_MASK                     0x0080  /* LOUT2ZC */
+#define WM8985_LOUT2ZC_SHIFT                         7  /* LOUT2ZC */
+#define WM8985_LOUT2ZC_WIDTH                         1  /* LOUT2ZC */
+#define WM8985_LOUT2MUTE                        0x0040  /* LOUT2MUTE */
+#define WM8985_LOUT2MUTE_MASK                   0x0040  /* LOUT2MUTE */
+#define WM8985_LOUT2MUTE_SHIFT                       6  /* LOUT2MUTE */
+#define WM8985_LOUT2MUTE_WIDTH                       1  /* LOUT2MUTE */
+#define WM8985_LOUT2VOL_MASK                    0x003F  /* LOUT2VOL - [5:0] */
+#define WM8985_LOUT2VOL_SHIFT                        0  /* LOUT2VOL - [5:0] */
+#define WM8985_LOUT2VOL_WIDTH                        6  /* LOUT2VOL - [5:0] */
+
+/*
+ * R55 (0x37) - ROUT2 (SPK) volume ctrl
+ */
+#define WM8985_OUT2VU                           0x0100  /* OUT2VU */
+#define WM8985_OUT2VU_MASK                      0x0100  /* OUT2VU */
+#define WM8985_OUT2VU_SHIFT                          8  /* OUT2VU */
+#define WM8985_OUT2VU_WIDTH                          1  /* OUT2VU */
+#define WM8985_ROUT2ZC                          0x0080  /* ROUT2ZC */
+#define WM8985_ROUT2ZC_MASK                     0x0080  /* ROUT2ZC */
+#define WM8985_ROUT2ZC_SHIFT                         7  /* ROUT2ZC */
+#define WM8985_ROUT2ZC_WIDTH                         1  /* ROUT2ZC */
+#define WM8985_ROUT2MUTE                        0x0040  /* ROUT2MUTE */
+#define WM8985_ROUT2MUTE_MASK                   0x0040  /* ROUT2MUTE */
+#define WM8985_ROUT2MUTE_SHIFT                       6  /* ROUT2MUTE */
+#define WM8985_ROUT2MUTE_WIDTH                       1  /* ROUT2MUTE */
+#define WM8985_ROUT2VOL_MASK                    0x003F  /* ROUT2VOL - [5:0] */
+#define WM8985_ROUT2VOL_SHIFT                        0  /* ROUT2VOL - [5:0] */
+#define WM8985_ROUT2VOL_WIDTH                        6  /* ROUT2VOL - [5:0] */
+
+/*
+ * R56 (0x38) - OUT3 mixer ctrl
+ */
+#define WM8985_OUT3MUTE                         0x0040  /* OUT3MUTE */
+#define WM8985_OUT3MUTE_MASK                    0x0040  /* OUT3MUTE */
+#define WM8985_OUT3MUTE_SHIFT                        6  /* OUT3MUTE */
+#define WM8985_OUT3MUTE_WIDTH                        1  /* OUT3MUTE */
+#define WM8985_OUT4_2OUT3                       0x0008  /* OUT4_2OUT3 */
+#define WM8985_OUT4_2OUT3_MASK                  0x0008  /* OUT4_2OUT3 */
+#define WM8985_OUT4_2OUT3_SHIFT                      3  /* OUT4_2OUT3 */
+#define WM8985_OUT4_2OUT3_WIDTH                      1  /* OUT4_2OUT3 */
+#define WM8985_BYPL2OUT3                        0x0004  /* BYPL2OUT3 */
+#define WM8985_BYPL2OUT3_MASK                   0x0004  /* BYPL2OUT3 */
+#define WM8985_BYPL2OUT3_SHIFT                       2  /* BYPL2OUT3 */
+#define WM8985_BYPL2OUT3_WIDTH                       1  /* BYPL2OUT3 */
+#define WM8985_LMIX2OUT3                        0x0002  /* LMIX2OUT3 */
+#define WM8985_LMIX2OUT3_MASK                   0x0002  /* LMIX2OUT3 */
+#define WM8985_LMIX2OUT3_SHIFT                       1  /* LMIX2OUT3 */
+#define WM8985_LMIX2OUT3_WIDTH                       1  /* LMIX2OUT3 */
+#define WM8985_LDAC2OUT3                        0x0001  /* LDAC2OUT3 */
+#define WM8985_LDAC2OUT3_MASK                   0x0001  /* LDAC2OUT3 */
+#define WM8985_LDAC2OUT3_SHIFT                       0  /* LDAC2OUT3 */
+#define WM8985_LDAC2OUT3_WIDTH                       1  /* LDAC2OUT3 */
+
+/*
+ * R57 (0x39) - OUT4 (MONO) mix ctrl
+ */
+#define WM8985_OUT3_2OUT4                       0x0080  /* OUT3_2OUT4 */
+#define WM8985_OUT3_2OUT4_MASK                  0x0080  /* OUT3_2OUT4 */
+#define WM8985_OUT3_2OUT4_SHIFT                      7  /* OUT3_2OUT4 */
+#define WM8985_OUT3_2OUT4_WIDTH                      1  /* OUT3_2OUT4 */
+#define WM8985_OUT4MUTE                         0x0040  /* OUT4MUTE */
+#define WM8985_OUT4MUTE_MASK                    0x0040  /* OUT4MUTE */
+#define WM8985_OUT4MUTE_SHIFT                        6  /* OUT4MUTE */
+#define WM8985_OUT4MUTE_WIDTH                        1  /* OUT4MUTE */
+#define WM8985_OUT4ATTN                         0x0020  /* OUT4ATTN */
+#define WM8985_OUT4ATTN_MASK                    0x0020  /* OUT4ATTN */
+#define WM8985_OUT4ATTN_SHIFT                        5  /* OUT4ATTN */
+#define WM8985_OUT4ATTN_WIDTH                        1  /* OUT4ATTN */
+#define WM8985_LMIX2OUT4                        0x0010  /* LMIX2OUT4 */
+#define WM8985_LMIX2OUT4_MASK                   0x0010  /* LMIX2OUT4 */
+#define WM8985_LMIX2OUT4_SHIFT                       4  /* LMIX2OUT4 */
+#define WM8985_LMIX2OUT4_WIDTH                       1  /* LMIX2OUT4 */
+#define WM8985_LDAC2OUT4                        0x0008  /* LDAC2OUT4 */
+#define WM8985_LDAC2OUT4_MASK                   0x0008  /* LDAC2OUT4 */
+#define WM8985_LDAC2OUT4_SHIFT                       3  /* LDAC2OUT4 */
+#define WM8985_LDAC2OUT4_WIDTH                       1  /* LDAC2OUT4 */
+#define WM8985_BYPR2OUT4                        0x0004  /* BYPR2OUT4 */
+#define WM8985_BYPR2OUT4_MASK                   0x0004  /* BYPR2OUT4 */
+#define WM8985_BYPR2OUT4_SHIFT                       2  /* BYPR2OUT4 */
+#define WM8985_BYPR2OUT4_WIDTH                       1  /* BYPR2OUT4 */
+#define WM8985_RMIX2OUT4                        0x0002  /* RMIX2OUT4 */
+#define WM8985_RMIX2OUT4_MASK                   0x0002  /* RMIX2OUT4 */
+#define WM8985_RMIX2OUT4_SHIFT                       1  /* RMIX2OUT4 */
+#define WM8985_RMIX2OUT4_WIDTH                       1  /* RMIX2OUT4 */
+#define WM8985_RDAC2OUT4                        0x0001  /* RDAC2OUT4 */
+#define WM8985_RDAC2OUT4_MASK                   0x0001  /* RDAC2OUT4 */
+#define WM8985_RDAC2OUT4_SHIFT                       0  /* RDAC2OUT4 */
+#define WM8985_RDAC2OUT4_WIDTH                       1  /* RDAC2OUT4 */
+
+/*
+ * R60 (0x3C) - OUTPUT ctrl
+ */
+#define WM8985_VIDBUFFTST_MASK                  0x01E0  /* VIDBUFFTST - [8:5] */
+#define WM8985_VIDBUFFTST_SHIFT                      5  /* VIDBUFFTST - [8:5] */
+#define WM8985_VIDBUFFTST_WIDTH                      4  /* VIDBUFFTST - [8:5] */
+#define WM8985_HPTOG                            0x0008  /* HPTOG */
+#define WM8985_HPTOG_MASK                       0x0008  /* HPTOG */
+#define WM8985_HPTOG_SHIFT                           3  /* HPTOG */
+#define WM8985_HPTOG_WIDTH                           1  /* HPTOG */
+
+/*
+ * R61 (0x3D) - BIAS CTRL
+ */
+#define WM8985_BIASCUT                          0x0100  /* BIASCUT */
+#define WM8985_BIASCUT_MASK                     0x0100  /* BIASCUT */
+#define WM8985_BIASCUT_SHIFT                         8  /* BIASCUT */
+#define WM8985_BIASCUT_WIDTH                         1  /* BIASCUT */
+#define WM8985_HALFIPBIAS                       0x0080  /* HALFIPBIAS */
+#define WM8985_HALFIPBIAS_MASK                  0x0080  /* HALFIPBIAS */
+#define WM8985_HALFIPBIAS_SHIFT                      7  /* HALFIPBIAS */
+#define WM8985_HALFIPBIAS_WIDTH                      1  /* HALFIPBIAS */
+#define WM8985_VBBIASTST_MASK                   0x0060  /* VBBIASTST - [6:5] */
+#define WM8985_VBBIASTST_SHIFT                       5  /* VBBIASTST - [6:5] */
+#define WM8985_VBBIASTST_WIDTH                       2  /* VBBIASTST - [6:5] */
+#define WM8985_BUFBIAS_MASK                     0x0018  /* BUFBIAS - [4:3] */
+#define WM8985_BUFBIAS_SHIFT                         3  /* BUFBIAS - [4:3] */
+#define WM8985_BUFBIAS_WIDTH                         2  /* BUFBIAS - [4:3] */
+#define WM8985_ADCBIAS_MASK                     0x0006  /* ADCBIAS - [2:1] */
+#define WM8985_ADCBIAS_SHIFT                         1  /* ADCBIAS - [2:1] */
+#define WM8985_ADCBIAS_WIDTH                         2  /* ADCBIAS - [2:1] */
+#define WM8985_HALFOPBIAS                       0x0001  /* HALFOPBIAS */
+#define WM8985_HALFOPBIAS_MASK                  0x0001  /* HALFOPBIAS */
+#define WM8985_HALFOPBIAS_SHIFT                      0  /* HALFOPBIAS */
+#define WM8985_HALFOPBIAS_WIDTH                      1  /* HALFOPBIAS */
+
+enum clk_src {
+	WM8985_CLKSRC_MCLK,
+	WM8985_CLKSRC_PLL
+};
+
+#define WM8985_PLL 0
+
+#endif
diff --git a/sound/soc/codecs/wm8988.c b/sound/soc/codecs/wm8988.c
index 19ad590..d08b1fe 100644
--- a/sound/soc/codecs/wm8988.c
+++ b/sound/soc/codecs/wm8988.c
@@ -52,7 +52,7 @@
 /* codec private data */
 struct wm8988_priv {
 	unsigned int sysclk;
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
 	struct snd_pcm_hw_constraint_list *sysclk_constraints;
 	u16 reg_cache[WM8988_NUM_REG];
 };
@@ -608,8 +608,7 @@
 				struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	struct wm8988_priv *wm8988 = snd_soc_codec_get_drvdata(codec);
 	u16 iface = snd_soc_read(codec, WM8988_IFACE) & 0x1f3;
 	u16 srate = snd_soc_read(codec, WM8988_SRATE) & 0x180;
@@ -711,8 +710,8 @@
 	.digital_mute = wm8988_mute,
 };
 
-struct snd_soc_dai wm8988_dai = {
-	.name = "WM8988",
+static struct snd_soc_dai_driver wm8988_dai = {
+	.name = "wm8988-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -730,21 +729,15 @@
 	.ops = &wm8988_ops,
 	.symmetric_rates = 1,
 };
-EXPORT_SYMBOL_GPL(wm8988_dai);
 
-static int wm8988_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8988_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8988_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int wm8988_resume(struct platform_device *pdev)
+static int wm8988_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	int i;
 	u8 data[2];
 	u16 *cache = codec->reg_cache;
@@ -763,99 +756,22 @@
 	return 0;
 }
 
-static struct snd_soc_codec *wm8988_codec;
-
-static int wm8988_probe(struct platform_device *pdev)
+static int wm8988_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
+	struct wm8988_priv *wm8988 = snd_soc_codec_get_drvdata(codec);
 	int ret = 0;
-
-	if (wm8988_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8988_codec;
-	codec = wm8988_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
-	snd_soc_add_controls(codec, wm8988_snd_controls,
-				ARRAY_SIZE(wm8988_snd_controls));
-	snd_soc_dapm_new_controls(codec, wm8988_dapm_widgets,
-				  ARRAY_SIZE(wm8988_dapm_widgets));
-	snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
-
-	return ret;
-
-pcm_err:
-	return ret;
-}
-
-static int wm8988_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8988 = {
-	.probe = 	wm8988_probe,
-	.remove = 	wm8988_remove,
-	.suspend = 	wm8988_suspend,
-	.resume =	wm8988_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8988);
-
-static int wm8988_register(struct wm8988_priv *wm8988,
-			   enum snd_soc_control_type control)
-{
-	struct snd_soc_codec *codec = &wm8988->codec;
-	int ret;
 	u16 reg;
 
-	if (wm8988_codec) {
-		dev_err(codec->dev, "Another WM8988 is registered\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm8988);
-	codec->name = "WM8988";
-	codec->owner = THIS_MODULE;
-	codec->dai = &wm8988_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = ARRAY_SIZE(wm8988->reg_cache);
-	codec->reg_cache = &wm8988->reg_cache;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8988_set_bias_level;
-
-	memcpy(codec->reg_cache, wm8988_reg,
-	       sizeof(wm8988_reg));
-
-	ret = snd_soc_codec_set_cache_io(codec, 7, 9, control);
+	ret = snd_soc_codec_set_cache_io(codec, 7, 9, wm8988->control_type);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	ret = wm8988_reset(codec);
 	if (ret < 0) {
 		dev_err(codec->dev, "Failed to issue reset\n");
-		goto err;
+		return ret;
 	}
 
 	/* set the update bits (we always update left then right) */
@@ -870,67 +786,97 @@
 	reg = snd_soc_read(codec, WM8988_RINVOL);
 	snd_soc_write(codec, WM8988_RINVOL, reg | 0x0100);
 
-	wm8988_set_bias_level(&wm8988->codec, SND_SOC_BIAS_STANDBY);
+	wm8988_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
-	wm8988_dai.dev = codec->dev;
-
-	wm8988_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err;
-	}
-
-	ret = snd_soc_register_dai(&wm8988_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
+	snd_soc_add_controls(codec, wm8988_snd_controls,
+				ARRAY_SIZE(wm8988_snd_controls));
+	snd_soc_dapm_new_controls(codec, wm8988_dapm_widgets,
+				  ARRAY_SIZE(wm8988_dapm_widgets));
+	snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
 
 	return 0;
-
-err_codec:
-	snd_soc_unregister_codec(codec);
-err:
-	kfree(wm8988);
-	return ret;
 }
 
-static void wm8988_unregister(struct wm8988_priv *wm8988)
+static int wm8988_remove(struct snd_soc_codec *codec)
 {
-	wm8988_set_bias_level(&wm8988->codec, SND_SOC_BIAS_OFF);
-	snd_soc_unregister_dai(&wm8988_dai);
-	snd_soc_unregister_codec(&wm8988->codec);
-	kfree(wm8988);
-	wm8988_codec = NULL;
+	wm8988_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
 }
 
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-static int wm8988_i2c_probe(struct i2c_client *i2c,
-			    const struct i2c_device_id *id)
+static struct snd_soc_codec_driver soc_codec_dev_wm8988 = {
+	.probe =	wm8988_probe,
+	.remove =	wm8988_remove,
+	.suspend =	wm8988_suspend,
+	.resume =	wm8988_resume,
+	.set_bias_level = wm8988_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8988_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8988_reg,
+};
+
+#if defined(CONFIG_SPI_MASTER)
+static int __devinit wm8988_spi_probe(struct spi_device *spi)
 {
 	struct wm8988_priv *wm8988;
-	struct snd_soc_codec *codec;
+	int ret;
 
 	wm8988 = kzalloc(sizeof(struct wm8988_priv), GFP_KERNEL);
 	if (wm8988 == NULL)
 		return -ENOMEM;
 
-	codec = &wm8988->codec;
+	wm8988->control_type = SND_SOC_SPI;
+	spi_set_drvdata(spi, wm8988);
 
-	i2c_set_clientdata(i2c, wm8988);
-	codec->control_data = i2c;
-
-	codec->dev = &i2c->dev;
-
-	return wm8988_register(wm8988, SND_SOC_I2C);
+	ret = snd_soc_register_codec(&spi->dev,
+			&soc_codec_dev_wm8988, &wm8988_dai, 1);
+	if (ret < 0)
+		kfree(wm8988);
+	return ret;
 }
 
-static int wm8988_i2c_remove(struct i2c_client *client)
+static int __devexit wm8988_spi_remove(struct spi_device *spi)
 {
-	struct wm8988_priv *wm8988 = i2c_get_clientdata(client);
-	wm8988_unregister(wm8988);
+	snd_soc_unregister_codec(&spi->dev);
+	kfree(spi_get_drvdata(spi));
+	return 0;
+}
+
+static struct spi_driver wm8988_spi_driver = {
+	.driver = {
+		.name	= "wm8988-codec",
+		.bus	= &spi_bus_type,
+		.owner	= THIS_MODULE,
+	},
+	.probe		= wm8988_spi_probe,
+	.remove		= __devexit_p(wm8988_spi_remove),
+};
+#endif /* CONFIG_SPI_MASTER */
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+static __devinit int wm8988_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
+{
+	struct wm8988_priv *wm8988;
+	int ret;
+
+	wm8988 = kzalloc(sizeof(struct wm8988_priv), GFP_KERNEL);
+	if (wm8988 == NULL)
+		return -ENOMEM;
+
+	i2c_set_clientdata(i2c, wm8988);
+	wm8988->control_type = SND_SOC_I2C;
+
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8988, &wm8988_dai, 1);
+	if (ret < 0)
+		kfree(wm8988);
+	return ret;
+}
+
+static __devexit int wm8988_i2c_remove(struct i2c_client *client)
+{
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -942,67 +888,31 @@
 
 static struct i2c_driver wm8988_i2c_driver = {
 	.driver = {
-		.name = "WM8988",
+		.name = "wm8988-codec",
 		.owner = THIS_MODULE,
 	},
-	.probe = wm8988_i2c_probe,
-	.remove = wm8988_i2c_remove,
+	.probe =    wm8988_i2c_probe,
+	.remove =   __devexit_p(wm8988_i2c_remove),
 	.id_table = wm8988_i2c_id,
 };
 #endif
 
-#if defined(CONFIG_SPI_MASTER)
-static int __devinit wm8988_spi_probe(struct spi_device *spi)
-{
-	struct wm8988_priv *wm8988;
-	struct snd_soc_codec *codec;
-
-	wm8988 = kzalloc(sizeof(struct wm8988_priv), GFP_KERNEL);
-	if (wm8988 == NULL)
-		return -ENOMEM;
-
-	codec = &wm8988->codec;
-	codec->control_data = spi;
-	codec->dev = &spi->dev;
-
-	dev_set_drvdata(&spi->dev, wm8988);
-
-	return wm8988_register(wm8988, SND_SOC_SPI);
-}
-
-static int __devexit wm8988_spi_remove(struct spi_device *spi)
-{
-	struct wm8988_priv *wm8988 = dev_get_drvdata(&spi->dev);
-
-	wm8988_unregister(wm8988);
-
-	return 0;
-}
-
-static struct spi_driver wm8988_spi_driver = {
-	.driver = {
-		.name	= "wm8988",
-		.bus	= &spi_bus_type,
-		.owner	= THIS_MODULE,
-	},
-	.probe		= wm8988_spi_probe,
-	.remove		= __devexit_p(wm8988_spi_remove),
-};
-#endif
-
 static int __init wm8988_modinit(void)
 {
-	int ret;
-
+	int ret = 0;
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	ret = i2c_add_driver(&wm8988_i2c_driver);
-	if (ret != 0)
-		pr_err("WM8988: Unable to register I2C driver: %d\n", ret);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register WM8988 I2C driver: %d\n",
+		       ret);
+	}
 #endif
 #if defined(CONFIG_SPI_MASTER)
 	ret = spi_register_driver(&wm8988_spi_driver);
-	if (ret != 0)
-		pr_err("WM8988: Unable to register SPI driver: %d\n", ret);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register WM8988 SPI driver: %d\n",
+		       ret);
+	}
 #endif
 	return ret;
 }
diff --git a/sound/soc/codecs/wm8988.h b/sound/soc/codecs/wm8988.h
index 4552d37..5c04024 100644
--- a/sound/soc/codecs/wm8988.h
+++ b/sound/soc/codecs/wm8988.h
@@ -54,7 +54,4 @@
 
 #define WM8988_SYSCLK	0
 
-extern struct snd_soc_dai wm8988_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8988;
-
 #endif
diff --git a/sound/soc/codecs/wm8990.c b/sound/soc/codecs/wm8990.c
index dd8d909..264828e 100644
--- a/sound/soc/codecs/wm8990.c
+++ b/sound/soc/codecs/wm8990.c
@@ -32,6 +32,7 @@
 
 /* codec private data */
 struct wm8990_priv {
+	enum snd_soc_control_type control_type;
 	unsigned int sysclk;
 	unsigned int pcmclk;
 };
@@ -1114,8 +1115,7 @@
 			    struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	u16 audio1 = snd_soc_read(codec, WM8990_AUDIO_INTERFACE_1);
 
 	audio1 &= ~WM8990_AIF_WL_MASK;
@@ -1293,10 +1293,9 @@
 	.set_sysclk	= wm8990_set_dai_sysclk,
 };
 
-struct snd_soc_dai wm8990_dai = {
+static struct snd_soc_dai_driver wm8990_dai = {
 /* ADC/DAC on primary */
-	.name = "WM8990 ADC/DAC Primary",
-	.id = 1,
+	.name = "wm8990-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -1311,21 +1310,15 @@
 		.formats = WM8990_FORMATS,},
 	.ops = &wm8990_dai_ops,
 };
-EXPORT_SYMBOL_GPL(wm8990_dai);
 
-static int wm8990_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8990_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm8990_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int wm8990_resume(struct platform_device *pdev)
+static int wm8990_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	int i;
 	u8 data[2];
 	u16 *cache = codec->reg_cache;
@@ -1347,40 +1340,20 @@
  * initialise the WM8990 driver
  * register the mixer and dsp interfaces with the kernel
  */
-static int wm8990_init(struct snd_soc_device *socdev)
+static int wm8990_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = socdev->card->codec;
+	int ret;
 	u16 reg;
-	int ret = 0;
-
-	codec->name = "WM8990";
-	codec->owner = THIS_MODULE;
-	codec->set_bias_level = wm8990_set_bias_level;
-	codec->dai = &wm8990_dai;
-	codec->num_dai = 2;
-	codec->reg_cache_size = ARRAY_SIZE(wm8990_reg);
-	codec->reg_cache = kmemdup(wm8990_reg, sizeof(wm8990_reg), GFP_KERNEL);
-
-	if (codec->reg_cache == NULL)
-		return -ENOMEM;
 
 	ret = snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_I2C);
 	if (ret < 0) {
 		printk(KERN_ERR "wm8990: failed to set cache I/O: %d\n", ret);
-		goto pcm_err;
+		return ret;
 	}
 
 	wm8990_reset(codec);
 
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		printk(KERN_ERR "wm8990: failed to create pcms\n");
-		goto pcm_err;
-	}
-
 	/* charge output caps */
-	codec->bias_level = SND_SOC_BIAS_OFF;
 	wm8990_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
 	reg = snd_soc_read(codec, WM8990_AUDIO_INTERFACE_4);
@@ -1400,47 +1373,51 @@
 				ARRAY_SIZE(wm8990_snd_controls));
 	wm8990_add_widgets(codec);
 
-	return ret;
-
-pcm_err:
-	kfree(codec->reg_cache);
-	return ret;
+	return 0;
 }
 
-/* If the i2c layer weren't so broken, we could pass this kind of data
-   around */
-static struct snd_soc_device *wm8990_socdev;
+/* power down chip */
+static int wm8990_remove(struct snd_soc_codec *codec)
+{
+	wm8990_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	return 0;
+}
+
+static struct snd_soc_codec_driver soc_codec_dev_wm8990 = {
+	.probe =	wm8990_probe,
+	.remove =	wm8990_remove,
+	.suspend =	wm8990_suspend,
+	.resume =	wm8990_resume,
+	.set_bias_level = wm8990_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8990_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8990_reg,
+};
 
 #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-
-/*
- * WM891 2 wire address is determined by GPIO5
- * state during powerup.
- *    low  = 0x34
- *    high = 0x36
- */
-
-static int wm8990_i2c_probe(struct i2c_client *i2c,
-			    const struct i2c_device_id *id)
+static __devinit int wm8990_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
 {
-	struct snd_soc_device *socdev = wm8990_socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct wm8990_priv *wm8990;
 	int ret;
 
-	i2c_set_clientdata(i2c, codec);
-	codec->control_data = i2c;
+	wm8990 = kzalloc(sizeof(struct wm8990_priv), GFP_KERNEL);
+	if (wm8990 == NULL)
+		return -ENOMEM;
 
-	ret = wm8990_init(socdev);
+	i2c_set_clientdata(i2c, wm8990);
+
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8990, &wm8990_dai, 1);
 	if (ret < 0)
-		pr_err("failed to initialise WM8990\n");
-
+		kfree(wm8990);
 	return ret;
 }
 
-static int wm8990_i2c_remove(struct i2c_client *client)
+static __devexit int wm8990_i2c_remove(struct i2c_client *client)
 {
-	struct snd_soc_codec *codec = i2c_get_clientdata(client);
-	kfree(codec->reg_cache);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -1452,134 +1429,34 @@
 
 static struct i2c_driver wm8990_i2c_driver = {
 	.driver = {
-		.name = "WM8990 I2C Codec",
+		.name = "wm8990-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm8990_i2c_probe,
-	.remove =   wm8990_i2c_remove,
+	.remove =   __devexit_p(wm8990_i2c_remove),
 	.id_table = wm8990_i2c_id,
 };
-
-static int wm8990_add_i2c_device(struct platform_device *pdev,
-				 const struct wm8990_setup_data *setup)
-{
-	struct i2c_board_info info;
-	struct i2c_adapter *adapter;
-	struct i2c_client *client;
-	int ret;
-
-	ret = i2c_add_driver(&wm8990_i2c_driver);
-	if (ret != 0) {
-		dev_err(&pdev->dev, "can't add i2c driver\n");
-		return ret;
-	}
-
-	memset(&info, 0, sizeof(struct i2c_board_info));
-	info.addr = setup->i2c_address;
-	strlcpy(info.type, "wm8990", I2C_NAME_SIZE);
-
-	adapter = i2c_get_adapter(setup->i2c_bus);
-	if (!adapter) {
-		dev_err(&pdev->dev, "can't get i2c adapter %d\n",
-			setup->i2c_bus);
-		goto err_driver;
-	}
-
-	client = i2c_new_device(adapter, &info);
-	i2c_put_adapter(adapter);
-	if (!client) {
-		dev_err(&pdev->dev, "can't add i2c device at 0x%x\n",
-			(unsigned int)info.addr);
-		goto err_driver;
-	}
-
-	return 0;
-
-err_driver:
-	i2c_del_driver(&wm8990_i2c_driver);
-	return -ENODEV;
-}
 #endif
 
-static int wm8990_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct wm8990_setup_data *setup;
-	struct snd_soc_codec *codec;
-	struct wm8990_priv *wm8990;
-	int ret;
-
-	setup = socdev->codec_data;
-	codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-	if (codec == NULL)
-		return -ENOMEM;
-
-	wm8990 = kzalloc(sizeof(struct wm8990_priv), GFP_KERNEL);
-	if (wm8990 == NULL) {
-		kfree(codec);
-		return -ENOMEM;
-	}
-
-	snd_soc_codec_set_drvdata(codec, wm8990);
-	socdev->card->codec = codec;
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-	wm8990_socdev = socdev;
-
-	ret = -ENODEV;
-
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-	if (setup->i2c_address) {
-		codec->hw_write = (hw_write_t)i2c_master_send;
-		ret = wm8990_add_i2c_device(pdev, setup);
-	}
-#endif
-
-	if (ret != 0) {
-		kfree(snd_soc_codec_get_drvdata(codec));
-		kfree(codec);
-	}
-	return ret;
-}
-
-/* power down chip */
-static int wm8990_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (codec->control_data)
-		wm8990_set_bias_level(codec, SND_SOC_BIAS_OFF);
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-	i2c_unregister_device(codec->control_data);
-	i2c_del_driver(&wm8990_i2c_driver);
-#endif
-	kfree(snd_soc_codec_get_drvdata(codec));
-	kfree(codec);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8990 = {
-	.probe =	wm8990_probe,
-	.remove =	wm8990_remove,
-	.suspend =	wm8990_suspend,
-	.resume =	wm8990_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8990);
-
 static int __init wm8990_modinit(void)
 {
-	return snd_soc_register_dai(&wm8990_dai);
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	ret = i2c_add_driver(&wm8990_i2c_driver);
+	if (ret != 0) {
+		printk(KERN_ERR "Failed to register wm8990 I2C driver: %d\n",
+		       ret);
+	}
+#endif
+	return ret;
 }
 module_init(wm8990_modinit);
 
 static void __exit wm8990_exit(void)
 {
-	snd_soc_unregister_dai(&wm8990_dai);
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+	i2c_del_driver(&wm8990_i2c_driver);
+#endif
 }
 module_exit(wm8990_exit);
 
diff --git a/sound/soc/codecs/wm8990.h b/sound/soc/codecs/wm8990.h
index 7114ddc..77c98a4 100644
--- a/sound/soc/codecs/wm8990.h
+++ b/sound/soc/codecs/wm8990.h
@@ -826,18 +826,10 @@
 #define WM8990_INMIXR_PWR_BIT			2
 #define WM8990_AINRMUX_PWR_BIT			3
 
-struct wm8990_setup_data {
-	unsigned i2c_bus;
-	unsigned short i2c_address;
-};
-
 #define WM8990_MCLK_DIV 0
 #define WM8990_DACCLK_DIV 1
 #define WM8990_ADCCLK_DIV 2
 #define WM8990_BCLK_DIV 3
 
-extern struct snd_soc_dai wm8990_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8990;
-
 #endif	/* __WM8990REGISTERDEFS_H__ */
 /*------------------------------ END OF FILE ---------------------------------*/
diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c
index d8d300c..589e3fa 100644
--- a/sound/soc/codecs/wm8993.c
+++ b/sound/soc/codecs/wm8993.c
@@ -229,7 +229,7 @@
 	u16 reg_cache[WM8993_REGISTER_COUNT];
 	struct regulator_bulk_data supplies[WM8993_NUM_SUPPLIES];
 	struct wm8993_platform_data pdata;
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
 	int master;
 	int sysclk_source;
 	int tdm_slots;
@@ -367,10 +367,9 @@
 	return 0;
 }
 
-static int wm8993_set_fll(struct snd_soc_dai *dai, int fll_id, int source,
+static int _wm8993_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
 			  unsigned int Fref, unsigned int Fout)
 {
-	struct snd_soc_codec *codec = dai->codec;
 	struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
 	u16 reg1, reg4, reg5;
 	struct _fll_div fll_div;
@@ -456,6 +455,12 @@
 	return 0;
 }
 
+static int wm8993_set_fll(struct snd_soc_dai *dai, int fll_id, int source,
+			  unsigned int Fref, unsigned int Fout)
+{
+	return _wm8993_set_fll(dai->codec, fll_id, source, Fref, Fout);
+}
+
 static int configure_clock(struct snd_soc_codec *codec)
 {
 	struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
@@ -1394,8 +1399,8 @@
 			SNDRV_PCM_FMTBIT_S24_LE |\
 			SNDRV_PCM_FMTBIT_S32_LE)
 
-struct snd_soc_dai wm8993_dai = {
-	.name = "WM8993",
+static struct snd_soc_dai_driver wm8993_dai = {
+	.name = "wm8993-hifi",
 	.playback = {
 		.stream_name = "Playback",
 		.channels_min = 1,
@@ -1413,184 +1418,21 @@
 	.ops = &wm8993_ops,
 	.symmetric_rates = 1,
 };
-EXPORT_SYMBOL_GPL(wm8993_dai);
 
-static struct snd_soc_codec *wm8993_codec;
-
-static int wm8993_probe(struct platform_device *pdev)
+static int wm8993_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	struct wm8993_priv *wm8993;
-	int ret = 0;
-
-	if (!wm8993_codec) {
-		dev_err(&pdev->dev, "I2C device not yet probed\n");
-		goto err;
-	}
-
-	socdev->card->codec = wm8993_codec;
-	codec = wm8993_codec;
-	wm8993 = snd_soc_codec_get_drvdata(codec);
-
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms\n");
-		goto err;
-	}
-
-	snd_soc_add_controls(codec, wm8993_snd_controls,
-			     ARRAY_SIZE(wm8993_snd_controls));
-	if (wm8993->pdata.num_retune_configs != 0) {
-		dev_dbg(codec->dev, "Using ReTune Mobile\n");
-	} else {
-		dev_dbg(codec->dev, "No ReTune Mobile, using normal EQ\n");
-		snd_soc_add_controls(codec, wm8993_eq_controls,
-				     ARRAY_SIZE(wm8993_eq_controls));
-	}
-
-	snd_soc_dapm_new_controls(codec, wm8993_dapm_widgets,
-				  ARRAY_SIZE(wm8993_dapm_widgets));
-	wm_hubs_add_analogue_controls(codec);
-
-	snd_soc_dapm_add_routes(codec, routes, ARRAY_SIZE(routes));
-	wm_hubs_add_analogue_routes(codec, wm8993->pdata.lineout1_diff,
-				    wm8993->pdata.lineout2_diff);
-
-	return ret;
-
-err:
-	return ret;
-}
-
-static int wm8993_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-#ifdef CONFIG_PM
-static int wm8993_suspend(struct platform_device *pdev, pm_message_t state)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
-	int fll_fout = wm8993->fll_fout;
-	int fll_fref  = wm8993->fll_fref;
-	int ret;
-
-	/* Stop the FLL in an orderly fashion */
-	ret = wm8993_set_fll(codec->dai, 0, 0, 0, 0);
-	if (ret != 0) {
-		dev_err(&pdev->dev, "Failed to stop FLL\n");
-		return ret;
-	}
-
-	wm8993->fll_fout = fll_fout;
-	wm8993->fll_fref = fll_fref;
-
-	wm8993_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-	return 0;
-}
-
-static int wm8993_resume(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-	struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
-	int ret;
-
-	wm8993_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
-	/* Restart the FLL? */
-	if (wm8993->fll_fout) {
-		int fll_fout = wm8993->fll_fout;
-		int fll_fref  = wm8993->fll_fref;
-
-		wm8993->fll_fref = 0;
-		wm8993->fll_fout = 0;
-
-		ret = wm8993_set_fll(codec->dai, 0, wm8993->fll_src,
-				     fll_fref, fll_fout);
-		if (ret != 0)
-			dev_err(codec->dev, "Failed to restart FLL\n");
-	}
-
-	return 0;
-}
-#else
-#define wm8993_suspend NULL
-#define wm8993_resume NULL
-#endif
-
-struct snd_soc_codec_device soc_codec_dev_wm8993 = {
-	.probe = 	wm8993_probe,
-	.remove = 	wm8993_remove,
-	.suspend =	wm8993_suspend,
-	.resume =	wm8993_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8993);
-
-static int wm8993_i2c_probe(struct i2c_client *i2c,
-			    const struct i2c_device_id *id)
-{
-	struct wm8993_priv *wm8993;
-	struct snd_soc_codec *codec;
-	unsigned int val;
-	int ret;
-	int i;
-
-	if (wm8993_codec) {
-		dev_err(&i2c->dev, "A WM8993 is already registered\n");
-		return -EINVAL;
-	}
-
-	wm8993 = kzalloc(sizeof(struct wm8993_priv), GFP_KERNEL);
-	if (wm8993 == NULL)
-		return -ENOMEM;
-
-	codec = &wm8993->codec;
-	if (i2c->dev.platform_data)
-		memcpy(&wm8993->pdata, i2c->dev.platform_data,
-		       sizeof(wm8993->pdata));
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->name = "WM8993";
-	codec->volatile_register = wm8993_volatile;
-	codec->reg_cache = wm8993->reg_cache;
-	codec->reg_cache_size = ARRAY_SIZE(wm8993->reg_cache);
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8993_set_bias_level;
-	codec->dai = &wm8993_dai;
-	codec->num_dai = 1;
-	snd_soc_codec_set_drvdata(codec, wm8993);
+	int ret, i, val;
 
 	wm8993->hubs_data.hp_startup_mode = 1;
 	wm8993->hubs_data.dcs_codes = -2;
 
-	memcpy(wm8993->reg_cache, wm8993_reg_defaults,
-	       sizeof(wm8993->reg_cache));
-
 	ret = snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_I2C);
 	if (ret != 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
-	i2c_set_clientdata(i2c, wm8993);
-	codec->control_data = i2c;
-	wm8993_codec = codec;
-
-	codec->dev = &i2c->dev;
-
 	for (i = 0; i < ARRAY_SIZE(wm8993->supplies); i++)
 		wm8993->supplies[i].supply = wm8993_supply_names[i];
 
@@ -1598,7 +1440,7 @@
 				 wm8993->supplies);
 	if (ret != 0) {
 		dev_err(codec->dev, "Failed to request supplies: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
 	ret = regulator_bulk_enable(ARRAY_SIZE(wm8993->supplies),
@@ -1646,44 +1488,134 @@
 				      wm8993->pdata.jd_thr,
 				      wm8993->pdata.micbias1_lvl,
 				      wm8993->pdata.micbias2_lvl);
-			     
+
 	ret = wm8993_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 	if (ret != 0)
 		goto err_enable;
 
-	wm8993_dai.dev = codec->dev;
+	snd_soc_add_controls(codec, wm8993_snd_controls,
+			     ARRAY_SIZE(wm8993_snd_controls));
+	if (wm8993->pdata.num_retune_configs != 0) {
+		dev_dbg(codec->dev, "Using ReTune Mobile\n");
+	} else {
+		dev_dbg(codec->dev, "No ReTune Mobile, using normal EQ\n");
+		snd_soc_add_controls(codec, wm8993_eq_controls,
+				     ARRAY_SIZE(wm8993_eq_controls));
+	}
 
-	ret = snd_soc_register_dai(&wm8993_dai);
-	if (ret != 0)
-		goto err_bias;
+	snd_soc_dapm_new_controls(codec, wm8993_dapm_widgets,
+				  ARRAY_SIZE(wm8993_dapm_widgets));
+	wm_hubs_add_analogue_controls(codec);
 
-	ret = snd_soc_register_codec(codec);
+	snd_soc_dapm_add_routes(codec, routes, ARRAY_SIZE(routes));
+	wm_hubs_add_analogue_routes(codec, wm8993->pdata.lineout1_diff,
+				    wm8993->pdata.lineout2_diff);
 
 	return 0;
 
-err_bias:
-	wm8993_set_bias_level(codec, SND_SOC_BIAS_OFF);
 err_enable:
 	regulator_bulk_disable(ARRAY_SIZE(wm8993->supplies), wm8993->supplies);
 err_get:
 	regulator_bulk_free(ARRAY_SIZE(wm8993->supplies), wm8993->supplies);
-err:
-	wm8993_codec = NULL;
-	kfree(wm8993);
 	return ret;
 }
 
-static int wm8993_i2c_remove(struct i2c_client *client)
+static int wm8993_remove(struct snd_soc_codec *codec)
 {
-	struct wm8993_priv *wm8993 = i2c_get_clientdata(client);
+	struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
 
-	snd_soc_unregister_codec(&wm8993->codec);
-	snd_soc_unregister_dai(&wm8993_dai);
-
-	wm8993_set_bias_level(&wm8993->codec, SND_SOC_BIAS_OFF);
+	wm8993_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	regulator_bulk_free(ARRAY_SIZE(wm8993->supplies), wm8993->supplies);
-	kfree(wm8993);
+	return 0;
+}
 
+#ifdef CONFIG_PM
+static int wm8993_suspend(struct snd_soc_codec *codec, pm_message_t state)
+{
+	struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
+	int fll_fout = wm8993->fll_fout;
+	int fll_fref  = wm8993->fll_fref;
+	int ret;
+
+	/* Stop the FLL in an orderly fashion */
+	ret = _wm8993_set_fll(codec, 0, 0, 0, 0);
+	if (ret != 0) {
+		dev_err(codec->dev, "Failed to stop FLL\n");
+		return ret;
+	}
+
+	wm8993->fll_fout = fll_fout;
+	wm8993->fll_fref = fll_fref;
+
+	wm8993_set_bias_level(codec, SND_SOC_BIAS_OFF);
+
+	return 0;
+}
+
+static int wm8993_resume(struct snd_soc_codec *codec)
+{
+	struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
+	int ret;
+
+	wm8993_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
+
+	/* Restart the FLL? */
+	if (wm8993->fll_fout) {
+		int fll_fout = wm8993->fll_fout;
+		int fll_fref  = wm8993->fll_fref;
+
+		wm8993->fll_fref = 0;
+		wm8993->fll_fout = 0;
+
+		ret = _wm8993_set_fll(codec, 0, wm8993->fll_src,
+				     fll_fref, fll_fout);
+		if (ret != 0)
+			dev_err(codec->dev, "Failed to restart FLL\n");
+	}
+
+	return 0;
+}
+#else
+#define wm8993_suspend NULL
+#define wm8993_resume NULL
+#endif
+
+static struct snd_soc_codec_driver soc_codec_dev_wm8993 = {
+	.probe = 	wm8993_probe,
+	.remove = 	wm8993_remove,
+	.suspend =	wm8993_suspend,
+	.resume =	wm8993_resume,
+	.set_bias_level = wm8993_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm8993_reg_defaults),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm8993_reg_defaults,
+	.volatile_register = wm8993_volatile,
+};
+
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+static __devinit int wm8993_i2c_probe(struct i2c_client *i2c,
+				      const struct i2c_device_id *id)
+{
+	struct wm8993_priv *wm8993;
+	int ret;
+
+	wm8993 = kzalloc(sizeof(struct wm8993_priv), GFP_KERNEL);
+	if (wm8993 == NULL)
+		return -ENOMEM;
+
+	i2c_set_clientdata(i2c, wm8993);
+
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm8993, &wm8993_dai, 1);
+	if (ret < 0)
+		kfree(wm8993);
+	return ret;
+}
+
+static __devexit int wm8993_i2c_remove(struct i2c_client *client)
+{
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -1695,30 +1627,34 @@
 
 static struct i2c_driver wm8993_i2c_driver = {
 	.driver = {
-		.name = "WM8993",
+		.name = "wm8993-codec",
 		.owner = THIS_MODULE,
 	},
-	.probe = wm8993_i2c_probe,
-	.remove = wm8993_i2c_remove,
+	.probe =    wm8993_i2c_probe,
+	.remove =   __devexit_p(wm8993_i2c_remove),
 	.id_table = wm8993_i2c_id,
 };
-
+#endif
 
 static int __init wm8993_modinit(void)
 {
-	int ret;
-
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	ret = i2c_add_driver(&wm8993_i2c_driver);
-	if (ret != 0)
-		pr_err("WM8993: Unable to register I2C driver: %d\n", ret);
-
+	if (ret != 0) {
+		pr_err("WM8993: Unable to register I2C driver: %d\n",
+		       ret);
+	}
+#endif
 	return ret;
 }
 module_init(wm8993_modinit);
 
 static void __exit wm8993_exit(void)
 {
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	i2c_del_driver(&wm8993_i2c_driver);
+#endif
 }
 module_exit(wm8993_exit);
 
diff --git a/sound/soc/codecs/wm8993.h b/sound/soc/codecs/wm8993.h
index 30e71ca..2184617 100644
--- a/sound/soc/codecs/wm8993.h
+++ b/sound/soc/codecs/wm8993.h
@@ -1,9 +1,6 @@
 #ifndef WM8993_H
 #define WM8993_H
 
-extern struct snd_soc_dai wm8993_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm8993;
-
 #define WM8993_SYSCLK_MCLK     1
 #define WM8993_SYSCLK_FLL      2
 
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
index 522249d..218bcd2 100644
--- a/sound/soc/codecs/wm8994.c
+++ b/sound/soc/codecs/wm8994.c
@@ -36,9 +36,6 @@
 #include "wm8994.h"
 #include "wm_hubs.h"
 
-static struct snd_soc_codec *wm8994_codec;
-struct snd_soc_codec_device soc_codec_dev_wm8994;
-
 struct fll_config {
 	int src;
 	int in;
@@ -71,7 +68,9 @@
 /* codec private data */
 struct wm8994_priv {
 	struct wm_hubs_data hubs;
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
+	void *control_data;
+	struct snd_soc_codec *codec;
 	u16 reg_cache[WM8994_REG_CACHE_SIZE + 1];
 	int sysclk[2];
 	int sysclk_rate[2];
@@ -1902,8 +1901,6 @@
 	return snd_soc_put_volsw(kcontrol, ucontrol);
 }
 
-
-
 static void wm8994_set_drc(struct snd_soc_codec *codec, int drc)
 {
 	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
@@ -1942,7 +1939,7 @@
 			       struct snd_ctl_elem_value *ucontrol)
 {
 	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);	
+	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
 	struct wm8994_pdata *pdata = wm8994->pdata;
 	int drc = wm8994_get_drc(kcontrol->id.name);
 	int value = ucontrol->value.integer.value[0];
@@ -2045,7 +2042,7 @@
 					 struct snd_ctl_elem_value *ucontrol)
 {
 	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);	
+	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
 	struct wm8994_pdata *pdata = wm8994->pdata;
 	int block = wm8994_get_retune_mobile_block(kcontrol->id.name);
 	int value = ucontrol->value.integer.value[0];
@@ -2067,7 +2064,7 @@
 					 struct snd_ctl_elem_value *ucontrol)
 {
 	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
+	struct wm8994_priv *wm8994 =snd_soc_codec_get_drvdata(codec);
 	int block = wm8994_get_retune_mobile_block(kcontrol->id.name);
 
 	ucontrol->value.enumerated.item[0] = wm8994->retune_mobile_cfg[block];
@@ -2075,6 +2072,22 @@
 	return 0;
 }
 
+static const char *aifdac_src_text[] = {
+	"Left", "Right"
+};
+
+static const struct soc_enum aif1dacl_src =
+	SOC_ENUM_SINGLE(WM8994_AIF1_CONTROL_2, 15, 2, aifdac_src_text);
+
+static const struct soc_enum aif1dacr_src =
+	SOC_ENUM_SINGLE(WM8994_AIF1_CONTROL_2, 14, 2, aifdac_src_text);
+
+static const struct soc_enum aif2dacl_src =
+	SOC_ENUM_SINGLE(WM8994_AIF2_CONTROL_2, 15, 2, aifdac_src_text);
+
+static const struct soc_enum aif2dacr_src =
+	SOC_ENUM_SINGLE(WM8994_AIF2_CONTROL_2, 14, 2, aifdac_src_text);
+
 static const struct snd_kcontrol_new wm8994_snd_controls[] = {
 SOC_DOUBLE_R_TLV("AIF1ADC1 Volume", WM8994_AIF1_ADC1_LEFT_VOLUME,
 		 WM8994_AIF1_ADC1_RIGHT_VOLUME,
@@ -2086,6 +2099,11 @@
 		 WM8994_AIF2_ADC_RIGHT_VOLUME,
 		 1, 119, 0, digital_tlv),
 
+SOC_ENUM("AIF1DACL Source", aif1dacl_src),
+SOC_ENUM("AIF1DACR Source", aif1dacr_src),
+SOC_ENUM("AIF2DACL Source", aif1dacl_src),
+SOC_ENUM("AIF2DACR Source", aif1dacr_src),
+
 SOC_DOUBLE_R_TLV("AIF1DAC1 Volume", WM8994_AIF1_DAC1_LEFT_VOLUME,
 		 WM8994_AIF1_DAC1_RIGHT_VOLUME, 1, 96, 0, digital_tlv),
 SOC_DOUBLE_R_TLV("AIF1DAC2 Volume", WM8994_AIF1_DAC2_LEFT_VOLUME,
@@ -2881,10 +2899,9 @@
 	return 0;
 }
 
-static int wm8994_set_fll(struct snd_soc_dai *dai, int id, int src,
+static int _wm8994_set_fll(struct snd_soc_codec *codec, int id, int src,
 			  unsigned int freq_in, unsigned int freq_out)
 {
-	struct snd_soc_codec *codec = dai->codec;
 	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
 	int reg_offset, ret;
 	struct fll_div fll;
@@ -2995,8 +3012,15 @@
 	return 0;
 }
 
+
 static int opclk_divs[] = { 10, 20, 30, 40, 55, 60, 80, 120, 160 };
 
+static int wm8994_set_fll(struct snd_soc_dai *dai, int id, int src,
+			  unsigned int freq_in, unsigned int freq_out)
+{
+	return _wm8994_set_fll(dai->codec, id, src, freq_in, freq_out);
+}
+
 static int wm8994_set_dai_sysclk(struct snd_soc_dai *dai,
 		int clk_id, unsigned int freq, int dir)
 {
@@ -3313,20 +3337,24 @@
 		bclk_reg = WM8994_AIF1_BCLK;
 		rate_reg = WM8994_AIF1_RATE;
 		if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ||
-		    wm8994->lrclk_shared[0])
+		    wm8994->lrclk_shared[0]) {
 			lrclk_reg = WM8994_AIF1DAC_LRCLK;
-		else
+		} else {
 			lrclk_reg = WM8994_AIF1ADC_LRCLK;
+			dev_dbg(codec->dev, "AIF1 using split LRCLK\n");
+		}
 		break;
 	case 2:
 		aif1_reg = WM8994_AIF2_CONTROL_1;
 		bclk_reg = WM8994_AIF2_BCLK;
 		rate_reg = WM8994_AIF2_RATE;
 		if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ||
-		    wm8994->lrclk_shared[1])
+		    wm8994->lrclk_shared[1]) {
 			lrclk_reg = WM8994_AIF2DAC_LRCLK;
-		else
+		} else {
 			lrclk_reg = WM8994_AIF2ADC_LRCLK;
+			dev_dbg(codec->dev, "AIF2 using split LRCLK\n");
+		}
 		break;
 	default:
 		return -EINVAL;
@@ -3491,7 +3519,7 @@
 #define WM8994_RATES SNDRV_PCM_RATE_8000_96000
 
 #define WM8994_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
-			SNDRV_PCM_FMTBIT_S24_LE)
+			SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
 
 static struct snd_soc_dai_ops wm8994_aif1_dai_ops = {
 	.set_sysclk	= wm8994_set_dai_sysclk,
@@ -3515,10 +3543,9 @@
 	.set_tristate	= wm8994_set_tristate,
 };
 
-struct snd_soc_dai wm8994_dai[] = {
+static struct snd_soc_dai_driver wm8994_dai[] = {
 	{
-		.name = "WM8994 AIF1",
-		.id = 1,
+		.name = "wm8994-aif1",
 		.playback = {
 			.stream_name = "AIF1 Playback",
 			.channels_min = 2,
@@ -3536,8 +3563,7 @@
 		.ops = &wm8994_aif1_dai_ops,
 	},
 	{
-		.name = "WM8994 AIF2",
-		.id = 2,
+		.name = "wm8994-aif2",
 		.playback = {
 			.stream_name = "AIF2 Playback",
 			.channels_min = 2,
@@ -3555,8 +3581,7 @@
 		.ops = &wm8994_aif2_dai_ops,
 	},
 	{
-		.name = "WM8994 AIF3",
-		.id = 3,
+		.name = "wm8994-aif3",
 		.playback = {
 			.stream_name = "AIF3 Playback",
 			.channels_min = 2,
@@ -3574,20 +3599,17 @@
 		.ops = &wm8994_aif3_dai_ops,
 	}
 };
-EXPORT_SYMBOL_GPL(wm8994_dai);
 
 #ifdef CONFIG_PM
-static int wm8994_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm8994_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
 	int i, ret;
 
 	for (i = 0; i < ARRAY_SIZE(wm8994->fll); i++) {
 		memcpy(&wm8994->fll_suspend[i], &wm8994->fll[i],
 		       sizeof(struct fll_config));
-		ret = wm8994_set_fll(&codec->dai[0], i + 1, 0, 0, 0);
+		ret = _wm8994_set_fll(codec, i + 1, 0, 0, 0);
 		if (ret < 0)
 			dev_warn(codec->dev, "Failed to stop FLL%d: %d\n",
 				 i + 1, ret);
@@ -3598,10 +3620,8 @@
 	return 0;
 }
 
-static int wm8994_resume(struct platform_device *pdev)
+static int wm8994_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
 	u16 *reg_cache = codec->reg_cache;
 	int i, ret;
@@ -3630,7 +3650,7 @@
 		if (!wm8994->fll_suspend[i].out)
 			continue;
 
-		ret = wm8994_set_fll(&codec->dai[0], i + 1,
+		ret = _wm8994_set_fll(codec, i + 1,
 				     wm8994->fll_suspend[i].src,
 				     wm8994->fll_suspend[i].in,
 				     wm8994->fll_suspend[i].out);
@@ -3648,7 +3668,7 @@
 
 static void wm8994_handle_retune_mobile_pdata(struct wm8994_priv *wm8994)
 {
-	struct snd_soc_codec *codec = &wm8994->codec;
+	struct snd_soc_codec *codec = wm8994->codec;
 	struct wm8994_pdata *pdata = wm8994->pdata;
 	struct snd_kcontrol_new controls[] = {
 		SOC_ENUM_EXT("AIF1.1 EQ Mode",
@@ -3706,16 +3726,16 @@
 	wm8994->retune_mobile_enum.max = wm8994->num_retune_mobile_texts;
 	wm8994->retune_mobile_enum.texts = wm8994->retune_mobile_texts;
 
-	ret = snd_soc_add_controls(&wm8994->codec, controls,
+	ret = snd_soc_add_controls(wm8994->codec, controls,
 				   ARRAY_SIZE(controls));
 	if (ret != 0)
-		dev_err(wm8994->codec.dev,
+		dev_err(wm8994->codec->dev,
 			"Failed to add ReTune Mobile controls: %d\n", ret);
 }
 
 static void wm8994_handle_pdata(struct wm8994_priv *wm8994)
 {
-	struct snd_soc_codec *codec = &wm8994->codec;
+	struct snd_soc_codec *codec = wm8994->codec;
 	struct wm8994_pdata *pdata = wm8994->pdata;
 	int ret, i;
 
@@ -3747,7 +3767,7 @@
 		wm8994->drc_texts = kmalloc(sizeof(char *)
 					    * pdata->num_drc_cfgs, GFP_KERNEL);
 		if (!wm8994->drc_texts) {
-			dev_err(wm8994->codec.dev,
+			dev_err(wm8994->codec->dev,
 				"Failed to allocate %d DRC config texts\n",
 				pdata->num_drc_cfgs);
 			return;
@@ -3759,10 +3779,10 @@
 		wm8994->drc_enum.max = pdata->num_drc_cfgs;
 		wm8994->drc_enum.texts = wm8994->drc_texts;
 
-		ret = snd_soc_add_controls(&wm8994->codec, controls,
+		ret = snd_soc_add_controls(wm8994->codec, controls,
 					   ARRAY_SIZE(controls));
 		if (ret != 0)
-			dev_err(wm8994->codec.dev,
+			dev_err(wm8994->codec->dev,
 				"Failed to add DRC mode controls: %d\n", ret);
 
 		for (i = 0; i < WM8994_NUM_DRC; i++)
@@ -3775,62 +3795,10 @@
 	if (pdata->num_retune_mobile_cfgs)
 		wm8994_handle_retune_mobile_pdata(wm8994);
 	else
-		snd_soc_add_controls(&wm8994->codec, wm8994_eq_controls,
+		snd_soc_add_controls(wm8994->codec, wm8994_eq_controls,
 				     ARRAY_SIZE(wm8994_eq_controls));
 }
 
-static int wm8994_probe(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
-
-	if (wm8994_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm8994_codec;
-	codec = wm8994_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		return ret;
-	}
-
-	wm8994_handle_pdata(snd_soc_codec_get_drvdata(codec));
-
-	wm_hubs_add_analogue_controls(codec);
-	snd_soc_add_controls(codec, wm8994_snd_controls,
-			     ARRAY_SIZE(wm8994_snd_controls));
-	snd_soc_dapm_new_controls(codec, wm8994_dapm_widgets,
-				  ARRAY_SIZE(wm8994_dapm_widgets));
-	wm_hubs_add_analogue_routes(codec, 0, 0);
-	snd_soc_dapm_add_routes(codec, intercon, ARRAY_SIZE(intercon));
-
-	return 0;
-}
-
-static int wm8994_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm8994 = {
-	.probe = 	wm8994_probe,
-	.remove = 	wm8994_remove,
-	.suspend = 	wm8994_suspend,
-	.resume =	wm8994_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm8994);
-
 /**
  * wm8994_mic_detect - Enable microphone detection via the WM8994 IRQ
  *
@@ -3842,7 +3810,7 @@
  *
  * Enable microphone detection via IRQ on the WM8994.  If GPIOs are
  * being used to bring out signals to the processor then only platform
- * data configuration is needed for WM8903 and processor GPIOs should
+ * data configuration is needed for WM8994 and processor GPIOs should
  * be configured using snd_soc_jack_add_gpios() instead.
  *
  * Configuration of detection levels is available via the micbias1_lvl
@@ -3889,7 +3857,7 @@
 static irqreturn_t wm8994_mic_irq(int irq, void *data)
 {
 	struct wm8994_priv *priv = data;
-	struct snd_soc_codec *codec = &priv->codec;
+	struct snd_soc_codec *codec = priv->codec;
 	int reg;
 	int report;
 
@@ -3921,46 +3889,20 @@
 	return IRQ_HANDLED;
 }
 
-static int wm8994_codec_probe(struct platform_device *pdev)
+static int wm8994_codec_probe(struct snd_soc_codec *codec)
 {
-	int ret;
 	struct wm8994_priv *wm8994;
-	struct snd_soc_codec *codec;
-	int i;
+	int ret, i;
 
-	if (wm8994_codec) {
-		dev_err(&pdev->dev, "Another WM8994 is registered\n");
-		return -EINVAL;
-	}
+	codec->control_data = dev_get_drvdata(codec->dev->parent);
 
 	wm8994 = kzalloc(sizeof(struct wm8994_priv), GFP_KERNEL);
-	if (!wm8994) {
-		dev_err(&pdev->dev, "Failed to allocate private data\n");
+	if (wm8994 == NULL)
 		return -ENOMEM;
-	}
-
-	codec = &wm8994->codec;
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
 	snd_soc_codec_set_drvdata(codec, wm8994);
-	codec->control_data = dev_get_drvdata(pdev->dev.parent);
-	codec->name = "WM8994";
-	codec->owner = THIS_MODULE;
-	codec->read = wm8994_read;
-	codec->write = wm8994_write;
-	codec->readable_register = wm8994_readable;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm8994_set_bias_level;
-	codec->dai = &wm8994_dai[0];
-	codec->num_dai = 3;
-	codec->reg_cache_size = WM8994_MAX_REGISTER;
-	codec->reg_cache = &wm8994->reg_cache;
-	codec->dev = &pdev->dev;
 
-	wm8994->pdata = pdev->dev.parent->platform_data;
+	wm8994->pdata = dev_get_platdata(codec->dev->parent);
+	wm8994->codec = codec;
 
 	/* Fill the cache with physical values we inherited; don't reset */
 	ret = wm8994_bulk_read(codec->control_data, 0,
@@ -3996,25 +3938,25 @@
 	ret = wm8994_request_irq(codec->control_data, WM8994_IRQ_MIC1_DET,
 				 wm8994_mic_irq, "Mic 1 detect", wm8994);
 	if (ret != 0)
-		dev_warn(&pdev->dev,
+		dev_warn(codec->dev,
 			 "Failed to request Mic1 detect IRQ: %d\n", ret);
 
 	ret = wm8994_request_irq(codec->control_data, WM8994_IRQ_MIC1_SHRT,
 				 wm8994_mic_irq, "Mic 1 short", wm8994);
 	if (ret != 0)
-		dev_warn(&pdev->dev,
+		dev_warn(codec->dev,
 			 "Failed to request Mic1 short IRQ: %d\n", ret);
 
 	ret = wm8994_request_irq(codec->control_data, WM8994_IRQ_MIC2_DET,
 				 wm8994_mic_irq, "Mic 2 detect", wm8994);
 	if (ret != 0)
-		dev_warn(&pdev->dev,
+		dev_warn(codec->dev,
 			 "Failed to request Mic2 detect IRQ: %d\n", ret);
 
 	ret = wm8994_request_irq(codec->control_data, WM8994_IRQ_MIC2_SHRT,
 				 wm8994_mic_irq, "Mic 2 short", wm8994);
 	if (ret != 0)
-		dev_warn(&pdev->dev,
+		dev_warn(codec->dev,
 			 "Failed to request Mic2 short IRQ: %d\n", ret);
 
 	/* Remember if AIFnLRCLK is configured as a GPIO.  This should be
@@ -4045,13 +3987,8 @@
 		wm8994->lrclk_shared[1] = 0;
 	}
 
-	for (i = 0; i < ARRAY_SIZE(wm8994_dai); i++)
-		wm8994_dai[i].dev = codec->dev;
-
 	wm8994_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
-	wm8994_codec = codec;
-
 	/* Latch volume updates (right only; we always do left then right). */
 	snd_soc_update_bits(codec, WM8994_AIF1_DAC1_RIGHT_VOLUME,
 			    WM8994_AIF1DAC1_VU, WM8994_AIF1DAC1_VU);
@@ -4088,24 +4025,18 @@
 
 	wm8994_update_class_w(codec);
 
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err_irq;
-	}
+	wm8994_handle_pdata(wm8994);
 
-	ret = snd_soc_register_dais(wm8994_dai, ARRAY_SIZE(wm8994_dai));
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAIs: %d\n", ret);
-		goto err_codec;
-	}
-
-	platform_set_drvdata(pdev, wm8994);
+	wm_hubs_add_analogue_controls(codec);
+	snd_soc_add_controls(codec, wm8994_snd_controls,
+			     ARRAY_SIZE(wm8994_snd_controls));
+	snd_soc_dapm_new_controls(codec, wm8994_dapm_widgets,
+				  ARRAY_SIZE(wm8994_dapm_widgets));
+	wm_hubs_add_analogue_routes(codec, 0, 0);
+	snd_soc_dapm_add_routes(codec, intercon, ARRAY_SIZE(intercon));
 
 	return 0;
 
-err_codec:
-	snd_soc_unregister_codec(codec);
 err_irq:
 	wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC2_SHRT, wm8994);
 	wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC2_DET, wm8994);
@@ -4116,31 +4047,50 @@
 	return ret;
 }
 
-static int __devexit wm8994_codec_remove(struct platform_device *pdev)
+static int  wm8994_codec_remove(struct snd_soc_codec *codec)
 {
-	struct wm8994_priv *wm8994 = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = &wm8994->codec;
+	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
 
 	wm8994_set_bias_level(codec, SND_SOC_BIAS_OFF);
-	snd_soc_unregister_dais(wm8994_dai, ARRAY_SIZE(wm8994_dai));
-	snd_soc_unregister_codec(&wm8994->codec);
+
 	wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC2_SHRT, wm8994);
 	wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC2_DET, wm8994);
 	wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC1_SHRT, wm8994);
 	wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC1_DET, wm8994);
 	kfree(wm8994);
-	wm8994_codec = NULL;
 
 	return 0;
 }
 
+static struct snd_soc_codec_driver soc_codec_dev_wm8994 = {
+	.probe =	wm8994_codec_probe,
+	.remove =	wm8994_codec_remove,
+	.suspend =	wm8994_suspend,
+	.resume =	wm8994_resume,
+	.read = wm8994_read,
+	.write = wm8994_write,
+	.set_bias_level = wm8994_set_bias_level,
+};
+
+static int __devinit wm8994_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm8994,
+			wm8994_dai, ARRAY_SIZE(wm8994_dai));
+}
+
+static int __devexit wm8994_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_codec(&pdev->dev);
+	return 0;
+}
+
 static struct platform_driver wm8994_codec_driver = {
 	.driver = {
 		   .name = "wm8994-codec",
 		   .owner = THIS_MODULE,
 		   },
-	.probe = wm8994_codec_probe,
-	.remove = __devexit_p(wm8994_codec_remove),
+	.probe = wm8994_probe,
+	.remove = __devexit_p(wm8994_remove),
 };
 
 static __init int wm8994_init(void)
diff --git a/sound/soc/codecs/wm8994.h b/sound/soc/codecs/wm8994.h
index 2e0ca67..d8dce26 100644
--- a/sound/soc/codecs/wm8994.h
+++ b/sound/soc/codecs/wm8994.h
@@ -11,9 +11,6 @@
 
 #include <sound/soc.h>
 
-extern struct snd_soc_codec_device soc_codec_dev_wm8994;
-extern struct snd_soc_dai wm8994_dai[];
-
 /* Sources for AIF1/2 SYSCLK - use with set_dai_sysclk() */
 #define WM8994_SYSCLK_MCLK1 1
 #define WM8994_SYSCLK_MCLK2 2
diff --git a/sound/soc/codecs/wm9081.c b/sound/soc/codecs/wm9081.c
index 76b37ff..ecc7c37 100644
--- a/sound/soc/codecs/wm9081.c
+++ b/sound/soc/codecs/wm9081.c
@@ -156,7 +156,8 @@
 };
 
 struct wm9081_priv {
-	struct snd_soc_codec codec;
+	enum snd_soc_control_type control_type;
+	void *control_data;
 	u16 reg_cache[WM9081_MAX_REGISTER + 1];
 	int sysclk_source;
 	int mclk_rate;
@@ -1212,8 +1213,8 @@
 /* We report two channels because the CODEC processes a stereo signal, even
  * though it is only capable of handling a mono output.
  */
-struct snd_soc_dai wm9081_dai = {
-	.name = "WM9081",
+static struct snd_soc_dai_driver wm9081_dai = {
+	.name = "wm9081-hifi",
 	.playback = {
 		.stream_name = "HiFi Playback",
 		.channels_min = 1,
@@ -1223,34 +1224,42 @@
 	},
 	.ops = &wm9081_dai_ops,
 };
-EXPORT_SYMBOL_GPL(wm9081_dai);
 
-
-static struct snd_soc_codec *wm9081_codec;
-
-static int wm9081_probe(struct platform_device *pdev)
+static int wm9081_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	struct wm9081_priv *wm9081;
-	int ret = 0;
+	struct wm9081_priv *wm9081 = snd_soc_codec_get_drvdata(codec);
+	int ret;
+	u16 reg;
 
-	if (wm9081_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
+	codec->control_data = wm9081->control_data;
+	ret = snd_soc_codec_set_cache_io(codec, 8, 16, wm9081->control_type);
+	if (ret != 0) {
+		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
+		return ret;
 	}
 
-	socdev->card->codec = wm9081_codec;
-	codec = wm9081_codec;
-	wm9081 = snd_soc_codec_get_drvdata(codec);
+	reg = snd_soc_read(codec, WM9081_SOFTWARE_RESET);
+	if (reg != 0x9081) {
+		dev_err(codec->dev, "Device is not a WM9081: ID=0x%x\n", reg);
+		ret = -EINVAL;
+		return ret;
+	}
 
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
+	ret = wm9081_reset(codec);
 	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
+		dev_err(codec->dev, "Failed to issue reset\n");
+		return ret;
 	}
 
+	wm9081_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
+
+	/* Enable zero cross by default */
+	reg = snd_soc_read(codec, WM9081_ANALOGUE_LINEOUT);
+	snd_soc_write(codec, WM9081_ANALOGUE_LINEOUT, reg | WM9081_LINEOUTZC);
+	reg = snd_soc_read(codec, WM9081_ANALOGUE_SPEAKER_PGA);
+	snd_soc_write(codec, WM9081_ANALOGUE_SPEAKER_PGA,
+		     reg | WM9081_SPKPGAZC);
+
 	snd_soc_add_controls(codec, wm9081_snd_controls,
 			     ARRAY_SIZE(wm9081_snd_controls));
 	if (!wm9081->retune) {
@@ -1265,40 +1274,28 @@
 	snd_soc_dapm_add_routes(codec, audio_paths, ARRAY_SIZE(audio_paths));
 
 	return ret;
-
-pcm_err:
-	return ret;
 }
 
-static int wm9081_remove(struct platform_device *pdev)
+static int wm9081_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
+	wm9081_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
 #ifdef CONFIG_PM
-static int wm9081_suspend(struct platform_device *pdev, pm_message_t state)
+static int wm9081_suspend(struct snd_soc_codec *codec, pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm9081_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
 	return 0;
 }
 
-static int wm9081_resume(struct platform_device *pdev)
+static int wm9081_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	u16 *reg_cache = codec->reg_cache;
 	int i;
 
-	for (i = 0; i < codec->reg_cache_size; i++) {
+	for (i = 0; i < codec->driver->reg_cache_size; i++) {
 		if (i == WM9081_SOFTWARE_RESET)
 			continue;
 
@@ -1314,133 +1311,43 @@
 #define wm9081_resume NULL
 #endif
 
-struct snd_soc_codec_device soc_codec_dev_wm9081 = {
+static struct snd_soc_codec_driver soc_codec_dev_wm9081 = {
 	.probe = 	wm9081_probe,
 	.remove = 	wm9081_remove,
 	.suspend =	wm9081_suspend,
 	.resume =	wm9081_resume,
+	.set_bias_level = wm9081_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm9081_reg_defaults),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm9081_reg_defaults,
+	.volatile_register = wm9081_volatile_register,
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm9081);
 
-static int wm9081_register(struct wm9081_priv *wm9081,
-			   enum snd_soc_control_type control)
-{
-	struct snd_soc_codec *codec = &wm9081->codec;
-	int ret;
-	u16 reg;
-
-	if (wm9081_codec) {
-		dev_err(codec->dev, "Another WM9081 is registered\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	snd_soc_codec_set_drvdata(codec, wm9081);
-	codec->name = "WM9081";
-	codec->owner = THIS_MODULE;
-	codec->dai = &wm9081_dai;
-	codec->num_dai = 1;
-	codec->reg_cache_size = ARRAY_SIZE(wm9081->reg_cache);
-	codec->reg_cache = &wm9081->reg_cache;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm9081_set_bias_level;
-	codec->volatile_register = wm9081_volatile_register;
-
-	memcpy(codec->reg_cache, wm9081_reg_defaults,
-	       sizeof(wm9081_reg_defaults));
-
-	ret = snd_soc_codec_set_cache_io(codec, 8, 16, control);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
-	}
-
-	reg = snd_soc_read(codec, WM9081_SOFTWARE_RESET);
-	if (reg != 0x9081) {
-		dev_err(codec->dev, "Device is not a WM9081: ID=0x%x\n", reg);
-		ret = -EINVAL;
-		goto err;
-	}
-
-	ret = wm9081_reset(codec);
-	if (ret < 0) {
-		dev_err(codec->dev, "Failed to issue reset\n");
-		goto err;
-	}
-
-	wm9081_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
-	/* Enable zero cross by default */
-	reg = snd_soc_read(codec, WM9081_ANALOGUE_LINEOUT);
-	snd_soc_write(codec, WM9081_ANALOGUE_LINEOUT, reg | WM9081_LINEOUTZC);
-	reg = snd_soc_read(codec, WM9081_ANALOGUE_SPEAKER_PGA);
-	snd_soc_write(codec, WM9081_ANALOGUE_SPEAKER_PGA,
-		     reg | WM9081_SPKPGAZC);
-
-	wm9081_dai.dev = codec->dev;
-
-	wm9081_codec = codec;
-
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register codec: %d\n", ret);
-		goto err;
-	}
-
-	ret = snd_soc_register_dai(&wm9081_dai);
-	if (ret != 0) {
-		dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
-		goto err_codec;
-	}
-
-	return 0;
-
-err_codec:
-	snd_soc_unregister_codec(codec);
-err:
-	kfree(wm9081);
-	return ret;
-}
-
-static void wm9081_unregister(struct wm9081_priv *wm9081)
-{
-	wm9081_set_bias_level(&wm9081->codec, SND_SOC_BIAS_OFF);
-	snd_soc_unregister_dai(&wm9081_dai);
-	snd_soc_unregister_codec(&wm9081->codec);
-	kfree(wm9081);
-	wm9081_codec = NULL;
-}
-
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 static __devinit int wm9081_i2c_probe(struct i2c_client *i2c,
 				      const struct i2c_device_id *id)
 {
 	struct wm9081_priv *wm9081;
-	struct snd_soc_codec *codec;
+	int ret;
 
 	wm9081 = kzalloc(sizeof(struct wm9081_priv), GFP_KERNEL);
 	if (wm9081 == NULL)
 		return -ENOMEM;
 
-	codec = &wm9081->codec;
-	codec->hw_write = (hw_write_t)i2c_master_send;
-	wm9081->retune = i2c->dev.platform_data;
-
 	i2c_set_clientdata(i2c, wm9081);
-	codec->control_data = i2c;
+	wm9081->control_data = i2c;
 
-	codec->dev = &i2c->dev;
-
-	return wm9081_register(wm9081, SND_SOC_I2C);
+	ret = snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm9081, &wm9081_dai, 1);
+	if (ret < 0)
+		kfree(wm9081);
+	return ret;
 }
 
 static __devexit int wm9081_i2c_remove(struct i2c_client *client)
 {
-	struct wm9081_priv *wm9081 = i2c_get_clientdata(client);
-	wm9081_unregister(wm9081);
+	snd_soc_unregister_codec(&client->dev);
+	kfree(i2c_get_clientdata(client));
 	return 0;
 }
 
@@ -1452,31 +1359,34 @@
 
 static struct i2c_driver wm9081_i2c_driver = {
 	.driver = {
-		.name = "wm9081",
+		.name = "wm9081-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe =    wm9081_i2c_probe,
 	.remove =   __devexit_p(wm9081_i2c_remove),
 	.id_table = wm9081_i2c_id,
 };
+#endif
 
 static int __init wm9081_modinit(void)
 {
-	int ret;
-
+	int ret = 0;
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	ret = i2c_add_driver(&wm9081_i2c_driver);
 	if (ret != 0) {
 		printk(KERN_ERR "Failed to register WM9081 I2C driver: %d\n",
 		       ret);
 	}
-
+#endif
 	return ret;
 }
 module_init(wm9081_modinit);
 
 static void __exit wm9081_exit(void)
 {
+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
 	i2c_del_driver(&wm9081_i2c_driver);
+#endif
 }
 module_exit(wm9081_exit);
 
diff --git a/sound/soc/codecs/wm9081.h b/sound/soc/codecs/wm9081.h
index 42d3bc7..871cccb 100644
--- a/sound/soc/codecs/wm9081.h
+++ b/sound/soc/codecs/wm9081.h
@@ -15,9 +15,6 @@
 
 #include <sound/soc.h>
 
-extern struct snd_soc_dai wm9081_dai;
-extern struct snd_soc_codec_device soc_codec_dev_wm9081;
-
 /*
  * SYSCLK sources
  */
diff --git a/sound/soc/codecs/wm9090.c b/sound/soc/codecs/wm9090.c
index 1592250..7a18254 100644
--- a/sound/soc/codecs/wm9090.c
+++ b/sound/soc/codecs/wm9090.c
@@ -34,8 +34,6 @@
 
 #include "wm9090.h"
 
-static struct snd_soc_codec *wm9090_codec;
-
 static const u16 wm9090_reg_defaults[] = {
 	0x9093,     /* R0   - Software Reset */
 	0x0006,     /* R1   - Power Management (1) */
@@ -142,15 +140,10 @@
 
 /* This struct is used to save the context */
 struct wm9090_priv {
-	/* We're not really registering as a CODEC since ASoC core
-	 * does not yet support multiple CODECs but having the CODEC
-	 * structure means we can reuse some of the ASoC core
-	 * features.
-	 */
-	struct snd_soc_codec codec;
 	struct mutex mutex;
 	u16 reg_cache[WM9090_MAX_REGISTER + 1];
 	struct wm9090_platform_data pdata;
+	void *control_data;
 };
 
 static int wm9090_volatile(unsigned int reg)
@@ -523,7 +516,7 @@
 	case SND_SOC_BIAS_STANDBY:
 		if (codec->bias_level == SND_SOC_BIAS_OFF) {
 			/* Restore the register cache */
-			for (i = 1; i < codec->reg_cache_size; i++) {
+			for (i = 1; i < codec->driver->reg_cache_size; i++) {
 				if (reg_cache[i] == wm9090_reg_defaults[i])
 					continue;
 				if (wm9090_volatile(i))
@@ -556,136 +549,29 @@
 	return 0;
 }
 
-static int wm9090_probe(struct platform_device *pdev)
+static int wm9090_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
-	int ret = 0;
-
-	if (wm9090_codec == NULL) {
-		dev_err(&pdev->dev, "Codec device not registered\n");
-		return -ENODEV;
-	}
-
-	socdev->card->codec = wm9090_codec;
-	codec = wm9090_codec;
-
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0) {
-		dev_err(codec->dev, "failed to create pcms: %d\n", ret);
-		goto pcm_err;
-	}
-
-	wm9090_add_controls(codec);
-
-	return 0;
-
-pcm_err:
-	return ret;
-}
-
-#ifdef CONFIG_PM
-static int wm9090_suspend(struct platform_device *pdev, pm_message_t state)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	wm9090_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-	return 0;
-}
-
-static int wm9090_resume(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	wm9090_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
-	return 0;
-}
-#else
-#define wm9090_suspend NULL
-#define wm9090_resume NULL
-#endif
-
-static int wm9090_remove(struct platform_device *pdev)
-{
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-
-	snd_soc_free_pcms(socdev);
-	snd_soc_dapm_free(socdev);
-
-	return 0;
-}
-
-struct snd_soc_codec_device soc_codec_dev_wm9090 = {
-	.probe = 	wm9090_probe,
-	.remove = 	wm9090_remove,
-	.suspend = 	wm9090_suspend,
-	.resume =	wm9090_resume,
-};
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm9090);
-
-static int wm9090_i2c_probe(struct i2c_client *i2c,
-			    const struct i2c_device_id *id)
-{
-	struct wm9090_priv *wm9090;
-	struct snd_soc_codec *codec;
+	struct wm9090_priv *wm9090 = snd_soc_codec_get_drvdata(codec);
 	int ret;
 
-	wm9090 = kzalloc(sizeof(*wm9090), GFP_KERNEL);
-	if (wm9090 == NULL) {
-		dev_err(&i2c->dev, "Can not allocate memory\n");
-		return -ENOMEM;
-	}
-	codec = &wm9090->codec;
-
-	if (i2c->dev.platform_data)
-		memcpy(&wm9090->pdata, i2c->dev.platform_data,
-		       sizeof(wm9090->pdata));
-
-	wm9090_codec = codec;
-
-	i2c_set_clientdata(i2c, wm9090);
-
-	mutex_init(&codec->mutex);
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
-	codec->control_data = i2c;
-	snd_soc_codec_set_drvdata(codec, wm9090);
-	codec->dev = &i2c->dev;
-	codec->name = "WM9090";
-	codec->owner = THIS_MODULE;
-	codec->bias_level = SND_SOC_BIAS_OFF;
-	codec->set_bias_level = wm9090_set_bias_level,
-	codec->reg_cache_size = WM9090_MAX_REGISTER + 1;
-	codec->reg_cache = &wm9090->reg_cache;
-	codec->volatile_register = wm9090_volatile;
-
+	codec->control_data = wm9090->control_data;
 	ret = snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_I2C);
 	if (ret != 0) {
 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
-		goto err;
+		return ret;
 	}
 
-	memcpy(&wm9090->reg_cache, wm9090_reg_defaults,
-	       sizeof(wm9090->reg_cache));
-
 	ret = snd_soc_read(codec, WM9090_SOFTWARE_RESET);
 	if (ret < 0)
-		goto err;
+		return ret;
 	if (ret != wm9090_reg_defaults[WM9090_SOFTWARE_RESET]) {
-		dev_err(&i2c->dev, "Device is not a WM9090, ID=%x\n", ret);
-		ret = -EINVAL;
-		goto err;
+		dev_err(codec->dev, "Device is not a WM9090, ID=%x\n", ret);
+		return -EINVAL;
 	}
 
 	ret = snd_soc_write(codec, WM9090_SOFTWARE_RESET, 0);
 	if (ret < 0)
-		goto err;
+		return ret;
 
 	/* Configure some defaults; they will be written out when we
 	 * bring the bias up.
@@ -700,7 +586,7 @@
 		| WM9090_IN2B_ZC;
 	wm9090->reg_cache[WM9090_SPEAKER_VOLUME_LEFT] |=
 		WM9090_SPKOUT_VU | WM9090_SPKOUTL_ZC;
-	wm9090->reg_cache[WM9090_LEFT_OUTPUT_VOLUME] |= 
+	wm9090->reg_cache[WM9090_LEFT_OUTPUT_VOLUME] |=
 		WM9090_HPOUT1_VU | WM9090_HPOUT1L_ZC;
 	wm9090->reg_cache[WM9090_RIGHT_OUTPUT_VOLUME] |=
 		WM9090_HPOUT1_VU | WM9090_HPOUT1R_ZC;
@@ -709,33 +595,82 @@
 
 	wm9090_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
-	ret = snd_soc_register_codec(codec);
-	if (ret != 0) {
-		dev_err(&i2c->dev, "Failed to register CODEC: %d\n", ret);
-		goto err_bias;
-	}
+	wm9090_add_controls(codec);
 
 	return 0;
+}
 
-err_bias:
+#ifdef CONFIG_PM
+static int wm9090_suspend(struct snd_soc_codec *codec, pm_message_t state)
+{
 	wm9090_set_bias_level(codec, SND_SOC_BIAS_OFF);
-err:
-	kfree(wm9090);
-	i2c_set_clientdata(i2c, NULL);
-	wm9090_codec = NULL;
 
+	return 0;
+}
+
+static int wm9090_resume(struct snd_soc_codec *codec)
+{
+	wm9090_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
+
+	return 0;
+}
+#else
+#define wm9090_suspend NULL
+#define wm9090_resume NULL
+#endif
+
+static int wm9090_remove(struct snd_soc_codec *codec)
+{
+	wm9090_set_bias_level(codec, SND_SOC_BIAS_OFF);
+
+	return 0;
+}
+
+static struct snd_soc_codec_driver soc_codec_dev_wm9090 = {
+	.probe = 	wm9090_probe,
+	.remove = 	wm9090_remove,
+	.suspend = 	wm9090_suspend,
+	.resume =	wm9090_resume,
+	.set_bias_level = wm9090_set_bias_level,
+	.reg_cache_size = (WM9090_MAX_REGISTER + 1),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_default = wm9090_reg_defaults,
+	.volatile_register = wm9090_volatile,
+};
+
+static int wm9090_i2c_probe(struct i2c_client *i2c,
+			    const struct i2c_device_id *id)
+{
+	struct wm9090_priv *wm9090;
+	int ret;
+
+	wm9090 = kzalloc(sizeof(*wm9090), GFP_KERNEL);
+	if (wm9090 == NULL) {
+		dev_err(&i2c->dev, "Can not allocate memory\n");
+		return -ENOMEM;
+	}
+
+	if (i2c->dev.platform_data)
+		memcpy(&wm9090->pdata, i2c->dev.platform_data,
+		       sizeof(wm9090->pdata));
+
+	i2c_set_clientdata(i2c, wm9090);
+	wm9090->control_data = i2c;
+	mutex_init(&wm9090->mutex);
+
+	ret =  snd_soc_register_codec(&i2c->dev,
+			&soc_codec_dev_wm9090,  NULL, 0);
+	if (ret < 0)
+		kfree(wm9090);
 	return ret;
 }
 
 static int wm9090_i2c_remove(struct i2c_client *i2c)
 {
 	struct wm9090_priv *wm9090 = i2c_get_clientdata(i2c);
-	struct snd_soc_codec *codec = &wm9090->codec;
 
-	snd_soc_unregister_codec(codec);
-	wm9090_set_bias_level(codec, SND_SOC_BIAS_OFF);
+	snd_soc_unregister_codec(&i2c->dev);
 	kfree(wm9090);
-	wm9090_codec = NULL;
 
 	return 0;
 }
@@ -748,7 +683,7 @@
 
 static struct i2c_driver wm9090_i2c_driver = {
 	.driver = {
-		.name = "wm9090",
+		.name = "wm9090-codec",
 		.owner = THIS_MODULE,
 	},
 	.probe = wm9090_i2c_probe,
diff --git a/sound/soc/codecs/wm9090.h b/sound/soc/codecs/wm9090.h
index b08eab9..29b9d9f 100644
--- a/sound/soc/codecs/wm9090.h
+++ b/sound/soc/codecs/wm9090.h
@@ -23,8 +23,6 @@
 #ifndef __WM9090_H
 #define __WM9090_H
 
-extern struct snd_soc_codec_device soc_codec_dev_wm9090;
-
 /*
  * Register values.
  */
diff --git a/sound/soc/codecs/wm9705.c b/sound/soc/codecs/wm9705.c
index 8793341..a144acd 100644
--- a/sound/soc/codecs/wm9705.c
+++ b/sound/soc/codecs/wm9705.c
@@ -248,8 +248,7 @@
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	int reg;
 	u16 vra;
 
@@ -273,9 +272,9 @@
 	.prepare	= ac97_prepare,
 };
 
-struct snd_soc_dai wm9705_dai[] = {
+static struct snd_soc_dai_driver wm9705_dai[] = {
 	{
-		.name = "AC97 HiFi",
+		.name = "wm9705-hifi",
 		.ac97_control = 1,
 		.playback = {
 			.stream_name = "HiFi Playback",
@@ -294,7 +293,7 @@
 		.ops = &wm9705_dai_ops,
 	},
 	{
-		.name = "AC97 Aux",
+		.name = "wm9705-aux",
 		.playback = {
 			.stream_name = "Aux Playback",
 			.channels_min = 1,
@@ -304,7 +303,6 @@
 		},
 	}
 };
-EXPORT_SYMBOL_GPL(wm9705_dai);
 
 static int wm9705_reset(struct snd_soc_codec *codec)
 {
@@ -318,20 +316,15 @@
 }
 
 #ifdef CONFIG_PM
-static int wm9705_soc_suspend(struct platform_device *pdev, pm_message_t msg)
+static int wm9705_soc_suspend(struct snd_soc_codec *codec, pm_message_t msg)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	soc_ac97_ops.write(codec->ac97, AC97_POWERDOWN, 0xffff);
 
 	return 0;
 }
 
-static int wm9705_soc_resume(struct platform_device *pdev)
+static int wm9705_soc_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	int i, ret;
 	u16 *cache = codec->reg_cache;
 
@@ -352,49 +345,18 @@
 #define wm9705_soc_resume NULL
 #endif
 
-static int wm9705_soc_probe(struct platform_device *pdev)
+static int wm9705_soc_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
 	int ret = 0;
 
 	printk(KERN_INFO "WM9705 SoC Audio Codec\n");
 
-	socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec),
-				      GFP_KERNEL);
-	if (socdev->card->codec == NULL)
-		return -ENOMEM;
-	codec = socdev->card->codec;
-	mutex_init(&codec->mutex);
-
-	codec->reg_cache = kmemdup(wm9705_reg, sizeof(wm9705_reg), GFP_KERNEL);
-	if (codec->reg_cache == NULL) {
-		ret = -ENOMEM;
-		goto cache_err;
-	}
-	codec->reg_cache_size = sizeof(wm9705_reg);
-	codec->reg_cache_step = 2;
-
-	codec->name = "WM9705";
-	codec->owner = THIS_MODULE;
-	codec->dai = wm9705_dai;
-	codec->num_dai = ARRAY_SIZE(wm9705_dai);
-	codec->write = ac97_write;
-	codec->read = ac97_read;
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
 	ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0);
 	if (ret < 0) {
 		printk(KERN_ERR "wm9705: failed to register AC97 codec\n");
-		goto codec_err;
+		return ret;
 	}
 
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0)
-		goto pcm_err;
-
 	ret = wm9705_reset(codec);
 	if (ret)
 		goto reset_err;
@@ -406,40 +368,62 @@
 	return 0;
 
 reset_err:
-	snd_soc_free_pcms(socdev);
-pcm_err:
 	snd_soc_free_ac97_codec(codec);
-codec_err:
-	kfree(codec->reg_cache);
-cache_err:
-	kfree(socdev->card->codec);
-	socdev->card->codec = NULL;
 	return ret;
 }
 
-static int wm9705_soc_remove(struct platform_device *pdev)
+static int wm9705_soc_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (codec == NULL)
-		return 0;
-
-	snd_soc_dapm_free(socdev);
-	snd_soc_free_pcms(socdev);
 	snd_soc_free_ac97_codec(codec);
-	kfree(codec->reg_cache);
-	kfree(codec);
 	return 0;
 }
 
-struct snd_soc_codec_device soc_codec_dev_wm9705 = {
+static struct snd_soc_codec_driver soc_codec_dev_wm9705 = {
 	.probe = 	wm9705_soc_probe,
 	.remove = 	wm9705_soc_remove,
 	.suspend =	wm9705_soc_suspend,
 	.resume =	wm9705_soc_resume,
+	.read = ac97_read,
+	.write = ac97_write,
+	.reg_cache_size = ARRAY_SIZE(wm9705_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_step = 2,
+	.reg_cache_default = wm9705_reg,
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm9705);
+
+static __devinit int wm9705_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_wm9705, wm9705_dai, ARRAY_SIZE(wm9705_dai));
+}
+
+static int __devexit wm9705_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_codec(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver wm9705_codec_driver = {
+	.driver = {
+			.name = "wm9705-codec",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = wm9705_probe,
+	.remove = __devexit_p(wm9705_remove),
+};
+
+static int __init wm9705_init(void)
+{
+	return platform_driver_register(&wm9705_codec_driver);
+}
+module_init(wm9705_init);
+
+static void __exit wm9705_exit(void)
+{
+	platform_driver_unregister(&wm9705_codec_driver);
+}
+module_exit(wm9705_exit);
 
 MODULE_DESCRIPTION("ASoC WM9705 driver");
 MODULE_AUTHOR("Ian Molton");
diff --git a/sound/soc/codecs/wm9705.h b/sound/soc/codecs/wm9705.h
index d380f11..23ea9ce 100644
--- a/sound/soc/codecs/wm9705.h
+++ b/sound/soc/codecs/wm9705.h
@@ -8,7 +8,4 @@
 #define WM9705_DAI_AC97_HIFI	0
 #define WM9705_DAI_AC97_AUX	1
 
-extern struct snd_soc_dai wm9705_dai[2];
-extern struct snd_soc_codec_device soc_codec_dev_wm9705;
-
 #endif
diff --git a/sound/soc/codecs/wm9712.c b/sound/soc/codecs/wm9712.c
index 28790a2..d2f224d 100644
--- a/sound/soc/codecs/wm9712.c
+++ b/sound/soc/codecs/wm9712.c
@@ -478,8 +478,7 @@
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec =rtd->codec;
 	int reg;
 	u16 vra;
 
@@ -499,8 +498,7 @@
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_codec *codec = socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 	u16 vra, xsle;
 
 	vra = ac97_read(codec, AC97_EXTENDED_STATUS);
@@ -526,9 +524,9 @@
 	.prepare	= ac97_aux_prepare,
 };
 
-struct snd_soc_dai wm9712_dai[] = {
+static struct snd_soc_dai_driver wm9712_dai[] = {
 {
-	.name = "AC97 HiFi",
+	.name = "wm9712-hifi",
 	.ac97_control = 1,
 	.playback = {
 		.stream_name = "HiFi Playback",
@@ -545,7 +543,7 @@
 	.ops = &wm9712_dai_ops_hifi,
 },
 {
-	.name = "AC97 Aux",
+	.name = "wm9712-aux",
 	.playback = {
 		.stream_name = "Aux Playback",
 		.channels_min = 1,
@@ -555,7 +553,6 @@
 	.ops = &wm9712_dai_ops_aux,
 }
 };
-EXPORT_SYMBOL_GPL(wm9712_dai);
 
 static int wm9712_set_bias_level(struct snd_soc_codec *codec,
 				 enum snd_soc_bias_level level)
@@ -597,20 +594,15 @@
 	return -EIO;
 }
 
-static int wm9712_soc_suspend(struct platform_device *pdev,
+static int wm9712_soc_suspend(struct snd_soc_codec *codec,
 	pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
 	wm9712_set_bias_level(codec, SND_SOC_BIAS_OFF);
 	return 0;
 }
 
-static int wm9712_soc_resume(struct platform_device *pdev)
+static int wm9712_soc_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	int i, ret;
 	u16 *cache = codec->reg_cache;
 
@@ -635,51 +627,18 @@
 	return ret;
 }
 
-static int wm9712_soc_probe(struct platform_device *pdev)
+static int wm9712_soc_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
 	int ret = 0;
 
 	printk(KERN_INFO "WM9711/WM9712 SoC Audio Codec %s\n", WM9712_VERSION);
 
-	socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec),
-				      GFP_KERNEL);
-	if (socdev->card->codec == NULL)
-		return -ENOMEM;
-	codec = socdev->card->codec;
-	mutex_init(&codec->mutex);
-
-	codec->reg_cache = kmemdup(wm9712_reg, sizeof(wm9712_reg), GFP_KERNEL);
-
-	if (codec->reg_cache == NULL) {
-		ret = -ENOMEM;
-		goto cache_err;
-	}
-	codec->reg_cache_size = sizeof(wm9712_reg);
-	codec->reg_cache_step = 2;
-
-	codec->name = "WM9712";
-	codec->owner = THIS_MODULE;
-	codec->dai = wm9712_dai;
-	codec->num_dai = ARRAY_SIZE(wm9712_dai);
-	codec->write = ac97_write;
-	codec->read = ac97_read;
-	codec->set_bias_level = wm9712_set_bias_level;
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
-
 	ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0);
 	if (ret < 0) {
 		printk(KERN_ERR "wm9712: failed to register AC97 codec\n");
-		goto codec_err;
+		return ret;
 	}
 
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0)
-		goto pcm_err;
-
 	ret = wm9712_reset(codec, 0);
 	if (ret < 0) {
 		printk(KERN_ERR "Failed to reset WM9712: AC97 link error\n");
@@ -697,42 +656,63 @@
 	return 0;
 
 reset_err:
-	snd_soc_free_pcms(socdev);
-pcm_err:
 	snd_soc_free_ac97_codec(codec);
-
-codec_err:
-	kfree(codec->reg_cache);
-
-cache_err:
-	kfree(socdev->card->codec);
-	socdev->card->codec = NULL;
 	return ret;
 }
 
-static int wm9712_soc_remove(struct platform_device *pdev)
+static int wm9712_soc_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (codec == NULL)
-		return 0;
-
-	snd_soc_dapm_free(socdev);
-	snd_soc_free_pcms(socdev);
 	snd_soc_free_ac97_codec(codec);
-	kfree(codec->reg_cache);
-	kfree(codec);
 	return 0;
 }
 
-struct snd_soc_codec_device soc_codec_dev_wm9712 = {
+static struct snd_soc_codec_driver soc_codec_dev_wm9712 = {
 	.probe = 	wm9712_soc_probe,
 	.remove = 	wm9712_soc_remove,
 	.suspend =	wm9712_soc_suspend,
 	.resume =	wm9712_soc_resume,
+	.read = ac97_read,
+	.write = ac97_write,
+	.set_bias_level = wm9712_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm9712_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_step = 2,
+	.reg_cache_default = wm9712_reg,
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm9712);
+
+static __devinit int wm9712_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_wm9712, wm9712_dai, ARRAY_SIZE(wm9712_dai));
+}
+
+static int __devexit wm9712_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_codec(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver wm9712_codec_driver = {
+	.driver = {
+			.name = "wm9712-codec",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = wm9712_probe,
+	.remove = __devexit_p(wm9712_remove),
+};
+
+static int __init wm9712_init(void)
+{
+	return platform_driver_register(&wm9712_codec_driver);
+}
+module_init(wm9712_init);
+
+static void __exit wm9712_exit(void)
+{
+	platform_driver_unregister(&wm9712_codec_driver);
+}
+module_exit(wm9712_exit);
 
 MODULE_DESCRIPTION("ASoC WM9711/WM9712 driver");
 MODULE_AUTHOR("Liam Girdwood");
diff --git a/sound/soc/codecs/wm9712.h b/sound/soc/codecs/wm9712.h
index d29e8a1..fb69c3a 100644
--- a/sound/soc/codecs/wm9712.h
+++ b/sound/soc/codecs/wm9712.h
@@ -8,7 +8,4 @@
 #define WM9712_DAI_AC97_HIFI	0
 #define WM9712_DAI_AC97_AUX		1
 
-extern struct snd_soc_dai wm9712_dai[2];
-extern struct snd_soc_codec_device soc_codec_dev_wm9712;
-
 #endif
diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c
index 34e0c91..7da13b0 100644
--- a/sound/soc/codecs/wm9713.c
+++ b/sound/soc/codecs/wm9713.c
@@ -1057,9 +1057,9 @@
 	.set_tristate	= wm9713_set_dai_tristate,
 };
 
-struct snd_soc_dai wm9713_dai[] = {
+static struct snd_soc_dai_driver wm9713_dai[] = {
 {
-	.name = "AC97 HiFi",
+	.name = "wm9713-hifi",
 	.ac97_control = 1,
 	.playback = {
 		.stream_name = "HiFi Playback",
@@ -1076,7 +1076,7 @@
 	.ops = &wm9713_dai_ops_hifi,
 	},
 	{
-	.name = "AC97 Aux",
+	.name = "wm9713-aux",
 	.playback = {
 		.stream_name = "Aux Playback",
 		.channels_min = 1,
@@ -1086,7 +1086,7 @@
 	.ops = &wm9713_dai_ops_aux,
 	},
 	{
-	.name = "WM9713 Voice",
+	.name = "wm9713-voice",
 	.playback = {
 		.stream_name = "Voice Playback",
 		.channels_min = 1,
@@ -1103,7 +1103,6 @@
 	.symmetric_rates = 1,
 	},
 };
-EXPORT_SYMBOL_GPL(wm9713_dai);
 
 int wm9713_reset(struct snd_soc_codec *codec, int try_warm)
 {
@@ -1152,11 +1151,9 @@
 	return 0;
 }
 
-static int wm9713_soc_suspend(struct platform_device *pdev,
+static int wm9713_soc_suspend(struct snd_soc_codec *codec,
 	pm_message_t state)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	u16 reg;
 
 	/* Disable everything except touchpanel - that will be handled
@@ -1171,10 +1168,8 @@
 	return 0;
 }
 
-static int wm9713_soc_resume(struct platform_device *pdev)
+static int wm9713_soc_resume(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
 	struct wm9713_priv *wm9713 = snd_soc_codec_get_drvdata(codec);
 	int i, ret;
 	u16 *cache = codec->reg_cache;
@@ -1204,53 +1199,20 @@
 	return ret;
 }
 
-static int wm9713_soc_probe(struct platform_device *pdev)
+static int wm9713_soc_probe(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec;
+	struct wm9713_priv *wm9713;
 	int ret = 0, reg;
 
-	socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec),
-				      GFP_KERNEL);
-	if (socdev->card->codec == NULL)
+	wm9713 = kzalloc(sizeof(struct wm9713_priv), GFP_KERNEL);
+	if (wm9713 == NULL)
 		return -ENOMEM;
-	codec = socdev->card->codec;
-	mutex_init(&codec->mutex);
-
-	codec->reg_cache = kmemdup(wm9713_reg, sizeof(wm9713_reg), GFP_KERNEL);
-	if (codec->reg_cache == NULL) {
-		ret = -ENOMEM;
-		goto cache_err;
-	}
-	codec->reg_cache_size = sizeof(wm9713_reg);
-	codec->reg_cache_step = 2;
-
-	snd_soc_codec_set_drvdata(codec, kzalloc(sizeof(struct wm9713_priv),
-						 GFP_KERNEL));
-	if (snd_soc_codec_get_drvdata(codec) == NULL) {
-		ret = -ENOMEM;
-		goto priv_err;
-	}
-
-	codec->name = "WM9713";
-	codec->owner = THIS_MODULE;
-	codec->dai = wm9713_dai;
-	codec->num_dai = ARRAY_SIZE(wm9713_dai);
-	codec->write = ac97_write;
-	codec->read = ac97_read;
-	codec->set_bias_level = wm9713_set_bias_level;
-	INIT_LIST_HEAD(&codec->dapm_widgets);
-	INIT_LIST_HEAD(&codec->dapm_paths);
+	snd_soc_codec_set_drvdata(codec, wm9713);
 
 	ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0);
 	if (ret < 0)
 		goto codec_err;
 
-	/* register pcms */
-	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-	if (ret < 0)
-		goto pcm_err;
-
 	/* do a cold reset for the controller and then try
 	 * a warm reset followed by an optional cold reset for codec */
 	wm9713_reset(codec, 0);
@@ -1273,46 +1235,67 @@
 	return 0;
 
 reset_err:
-	snd_soc_free_pcms(socdev);
-pcm_err:
 	snd_soc_free_ac97_codec(codec);
-
 codec_err:
-	kfree(snd_soc_codec_get_drvdata(codec));
-
-priv_err:
-	kfree(codec->reg_cache);
-
-cache_err:
-	kfree(socdev->card->codec);
-	socdev->card->codec = NULL;
+	kfree(wm9713);
 	return ret;
 }
 
-static int wm9713_soc_remove(struct platform_device *pdev)
+static int wm9713_soc_remove(struct snd_soc_codec *codec)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	if (codec == NULL)
-		return 0;
-
-	snd_soc_dapm_free(socdev);
-	snd_soc_free_pcms(socdev);
+	struct wm9713_priv *wm9713 = snd_soc_codec_get_drvdata(codec);
 	snd_soc_free_ac97_codec(codec);
-	kfree(snd_soc_codec_get_drvdata(codec));
-	kfree(codec->reg_cache);
-	kfree(codec);
+	kfree(wm9713);
 	return 0;
 }
 
-struct snd_soc_codec_device soc_codec_dev_wm9713 = {
+static struct snd_soc_codec_driver soc_codec_dev_wm9713 = {
 	.probe = 	wm9713_soc_probe,
 	.remove = 	wm9713_soc_remove,
 	.suspend =	wm9713_soc_suspend,
 	.resume = 	wm9713_soc_resume,
+	.read = ac97_read,
+	.write = ac97_write,
+	.set_bias_level = wm9713_set_bias_level,
+	.reg_cache_size = ARRAY_SIZE(wm9713_reg),
+	.reg_word_size = sizeof(u16),
+	.reg_cache_step = 2,
+	.reg_cache_default = wm9713_reg,
 };
-EXPORT_SYMBOL_GPL(soc_codec_dev_wm9713);
+
+static __devinit int wm9713_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_codec(&pdev->dev,
+			&soc_codec_dev_wm9713, wm9713_dai, ARRAY_SIZE(wm9713_dai));
+}
+
+static int __devexit wm9713_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_codec(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver wm9713_codec_driver = {
+	.driver = {
+			.name = "wm9713-codec",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = wm9713_probe,
+	.remove = __devexit_p(wm9713_remove),
+};
+
+static int __init wm9713_init(void)
+{
+	return platform_driver_register(&wm9713_codec_driver);
+}
+module_init(wm9713_init);
+
+static void __exit wm9713_exit(void)
+{
+	platform_driver_unregister(&wm9713_codec_driver);
+}
+module_exit(wm9713_exit);
 
 MODULE_DESCRIPTION("ASoC WM9713/WM9714 driver");
 MODULE_AUTHOR("Liam Girdwood");
diff --git a/sound/soc/codecs/wm9713.h b/sound/soc/codecs/wm9713.h
index 63b8d81..793da86 100644
--- a/sound/soc/codecs/wm9713.h
+++ b/sound/soc/codecs/wm9713.h
@@ -45,9 +45,6 @@
 #define WM9713_DAI_AC97_AUX		1
 #define WM9713_DAI_PCM_VOICE	2
 
-extern struct snd_soc_codec_device soc_codec_dev_wm9713;
-extern struct snd_soc_dai wm9713_dai[3];
-
 int wm9713_reset(struct snd_soc_codec *codec,  int try_warm);
 
 #endif
diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c
index 97f74d6..2b07b17 100644
--- a/sound/soc/davinci/davinci-evm.c
+++ b/sound/soc/davinci/davinci-evm.c
@@ -28,12 +28,9 @@
 #include <mach/mux.h>
 
 #include "../codecs/tlv320aic3x.h"
-#include "../codecs/cq93vc.h"
-#include "../codecs/spdif_transciever.h"
 #include "davinci-pcm.h"
 #include "davinci-i2s.h"
 #include "davinci-mcasp.h"
-#include "davinci-vcif.h"
 
 #define AUDIO_FORMAT (SND_SOC_DAIFMT_DSP_B | \
 		SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_IB_NF)
@@ -41,8 +38,8 @@
 			 struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret = 0;
 	unsigned sysclk;
 
@@ -87,7 +84,7 @@
 				struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 
 	/* set cpu DAI configuration */
 	return snd_soc_dai_set_fmt(cpu_dai, AUDIO_FORMAT);
@@ -132,8 +129,10 @@
 };
 
 /* Logic for a aic3x as connected on a davinci-evm */
-static int evm_aic3x_init(struct snd_soc_codec *codec)
+static int evm_aic3x_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+
 	/* Add davinci-evm specific widgets */
 	snd_soc_dapm_new_controls(codec, aic3x_dapm_widgets,
 				  ARRAY_SIZE(aic3x_dapm_widgets));
@@ -161,8 +160,10 @@
 static struct snd_soc_dai_link evm_dai = {
 	.name = "TLV320AIC3X",
 	.stream_name = "AIC3X",
-	.cpu_dai = &davinci_i2s_dai,
-	.codec_dai = &aic3x_dai,
+	.cpu_dai_name = "davinci-mcasp.0",
+	.codec_dai_name = "tlv320aic3x-hifi",
+	.codec_name = "tlv320aic3x-codec.0-001a",
+	.platform_name = "davinci-pcm-audio",
 	.init = evm_aic3x_init,
 	.ops = &evm_ops,
 };
@@ -171,40 +172,49 @@
 #ifdef CONFIG_SND_DM365_AIC3X_CODEC
 	.name = "TLV320AIC3X",
 	.stream_name = "AIC3X",
-	.cpu_dai = &davinci_i2s_dai,
-	.codec_dai = &aic3x_dai,
+	.cpu_dai_name = "davinci-i2s",
+	.codec_dai_name = "tlv320aic3x-hifi",
 	.init = evm_aic3x_init,
+	.codec_name = "tlv320aic3x-codec.0-001a",
 	.ops = &evm_ops,
 #elif defined(CONFIG_SND_DM365_VOICE_CODEC)
 	.name = "Voice Codec - CQ93VC",
 	.stream_name = "CQ93",
-	.cpu_dai = &davinci_vcif_dai,
-	.codec_dai = &cq93vc_dai,
+	.cpu_dai_name = "davinci-vcif",
+	.codec_dai_name = "cq93vc-hifi",
+	.codec_name = "cq93vc-codec",
 #endif
+	.platform_name = "davinci-pcm-audio",
 };
 
 static struct snd_soc_dai_link dm6467_evm_dai[] = {
 	{
 		.name = "TLV320AIC3X",
 		.stream_name = "AIC3X",
-		.cpu_dai = &davinci_mcasp_dai[DAVINCI_MCASP_I2S_DAI],
-		.codec_dai = &aic3x_dai,
+		.cpu_dai_name= "davinci-mcasp.0",
+		.codec_dai_name = "tlv320aic3x-hifi",
+		.platform_name ="davinci-pcm-audio",
+		.codec_name = "tlv320aic3x-codec.0-001a",
 		.init = evm_aic3x_init,
 		.ops = &evm_ops,
 	},
 	{
 		.name = "McASP",
 		.stream_name = "spdif",
-		.cpu_dai = &davinci_mcasp_dai[DAVINCI_MCASP_DIT_DAI],
-		.codec_dai = &dit_stub_dai,
+		.cpu_dai_name= "davinci-mcasp.1",
+		.codec_dai_name = "dit-hifi",
+		.codec_name = "spdif_dit",
+		.platform_name = "davinci-pcm-audio",
 		.ops = &evm_spdif_ops,
 	},
 };
 static struct snd_soc_dai_link da8xx_evm_dai = {
 	.name = "TLV320AIC3X",
 	.stream_name = "AIC3X",
-	.cpu_dai = &davinci_mcasp_dai[DAVINCI_MCASP_I2S_DAI],
-	.codec_dai = &aic3x_dai,
+	.cpu_dai_name= "davinci-mcasp.0",
+	.codec_dai_name = "tlv320aic3x-hifi",
+	.codec_name = "tlv320aic3x-codec.0-001a",
+	.platform_name = "davinci-pcm-audio",
 	.init = evm_aic3x_init,
 	.ops = &evm_ops,
 };
@@ -212,7 +222,6 @@
 /* davinci dm6446, dm355 evm audio machine driver */
 static struct snd_soc_card snd_soc_card_evm = {
 	.name = "DaVinci EVM",
-	.platform = &davinci_soc_platform,
 	.dai_link = &evm_dai,
 	.num_links = 1,
 };
@@ -220,16 +229,13 @@
 /* davinci dm365 evm audio machine driver */
 static struct snd_soc_card dm365_snd_soc_card_evm = {
 	.name = "DaVinci DM365 EVM",
-	.platform = &davinci_soc_platform,
 	.dai_link = &dm365_evm_dai,
 	.num_links = 1,
 };
 
-
 /* davinci dm6467 evm audio machine driver */
 static struct snd_soc_card dm6467_snd_soc_card_evm = {
 	.name = "DaVinci DM6467 EVM",
-	.platform = &davinci_soc_platform,
 	.dai_link = dm6467_evm_dai,
 	.num_links = ARRAY_SIZE(dm6467_evm_dai),
 };
@@ -237,82 +243,40 @@
 static struct snd_soc_card da830_snd_soc_card = {
 	.name = "DA830/OMAP-L137 EVM",
 	.dai_link = &da8xx_evm_dai,
-	.platform = &davinci_soc_platform,
 	.num_links = 1,
 };
 
 static struct snd_soc_card da850_snd_soc_card = {
 	.name = "DA850/OMAP-L138 EVM",
 	.dai_link = &da8xx_evm_dai,
-	.platform = &davinci_soc_platform,
 	.num_links = 1,
 };
 
-static struct aic3x_setup_data aic3x_setup;
-
-/* evm audio subsystem */
-static struct snd_soc_device evm_snd_devdata = {
-	.card = &snd_soc_card_evm,
-	.codec_dev = &soc_codec_dev_aic3x,
-	.codec_data = &aic3x_setup,
-};
-
-/* evm audio subsystem */
-static struct snd_soc_device dm365_evm_snd_devdata = {
-	.card = &dm365_snd_soc_card_evm,
-#ifdef CONFIG_SND_DM365_AIC3X_CODEC
-	.codec_dev = &soc_codec_dev_aic3x,
-	.codec_data = &aic3x_setup,
-#elif defined(CONFIG_SND_DM365_VOICE_CODEC)
-	.codec_dev = &soc_codec_dev_cq93vc,
-#endif
-};
-
-/* evm audio subsystem */
-static struct snd_soc_device dm6467_evm_snd_devdata = {
-	.card = &dm6467_snd_soc_card_evm,
-	.codec_dev = &soc_codec_dev_aic3x,
-	.codec_data = &aic3x_setup,
-};
-
-/* evm audio subsystem */
-static struct snd_soc_device da830_evm_snd_devdata = {
-	.card = &da830_snd_soc_card,
-	.codec_dev = &soc_codec_dev_aic3x,
-	.codec_data = &aic3x_setup,
-};
-
-static struct snd_soc_device da850_evm_snd_devdata = {
-	.card		= &da850_snd_soc_card,
-	.codec_dev	= &soc_codec_dev_aic3x,
-	.codec_data	= &aic3x_setup,
-};
-
 static struct platform_device *evm_snd_device;
 
 static int __init evm_init(void)
 {
-	struct snd_soc_device *evm_snd_dev_data;
+	struct snd_soc_card *evm_snd_dev_data;
 	int index;
 	int ret;
 
 	if (machine_is_davinci_evm()) {
-		evm_snd_dev_data = &evm_snd_devdata;
+		evm_snd_dev_data = &snd_soc_card_evm;
 		index = 0;
 	} else if (machine_is_davinci_dm355_evm()) {
-		evm_snd_dev_data = &evm_snd_devdata;
+		evm_snd_dev_data = &snd_soc_card_evm;
 		index = 1;
 	} else if (machine_is_davinci_dm365_evm()) {
-		evm_snd_dev_data = &dm365_evm_snd_devdata;
+		evm_snd_dev_data = &dm365_snd_soc_card_evm;
 		index = 0;
 	} else if (machine_is_davinci_dm6467_evm()) {
-		evm_snd_dev_data = &dm6467_evm_snd_devdata;
+		evm_snd_dev_data = &dm6467_snd_soc_card_evm;
 		index = 0;
 	} else if (machine_is_davinci_da830_evm()) {
-		evm_snd_dev_data = &da830_evm_snd_devdata;
+		evm_snd_dev_data = &da830_snd_soc_card;
 		index = 1;
 	} else if (machine_is_davinci_da850_evm()) {
-		evm_snd_dev_data = &da850_evm_snd_devdata;
+		evm_snd_dev_data = &da850_snd_soc_card;
 		index = 0;
 	} else
 		return -EINVAL;
@@ -322,7 +286,6 @@
 		return -ENOMEM;
 
 	platform_set_drvdata(evm_snd_device, evm_snd_dev_data);
-	evm_snd_dev_data->dev = &evm_snd_device->dev;
 	ret = platform_device_add(evm_snd_device);
 	if (ret)
 		platform_device_put(evm_snd_device);
diff --git a/sound/soc/davinci/davinci-i2s.c b/sound/soc/davinci/davinci-i2s.c
index 9e8932a..9f8b6c5 100644
--- a/sound/soc/davinci/davinci-i2s.c
+++ b/sound/soc/davinci/davinci-i2s.c
@@ -183,8 +183,7 @@
 		struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_platform *platform = socdev->card->platform;
+	struct snd_soc_platform *platform = rtd->platform;
 	int playback = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK);
 	u32 spcr;
 	u32 mask = playback ? DAVINCI_MCBSP_SPCR_XRST : DAVINCI_MCBSP_SPCR_RRST;
@@ -205,8 +204,8 @@
 	if (playback) {
 		/* Stop the DMA to avoid data loss */
 		/* while the transmitter is out of reset to handle XSYNCERR */
-		if (platform->pcm_ops->trigger) {
-			int ret = platform->pcm_ops->trigger(substream,
+		if (platform->driver->ops->trigger) {
+			int ret = platform->driver->ops->trigger(substream,
 				SNDRV_PCM_TRIGGER_STOP);
 			if (ret < 0)
 				printk(KERN_DEBUG "Playback DMA stop failed\n");
@@ -227,8 +226,8 @@
 		toggle_clock(dev, playback);
 
 		/* Restart the DMA */
-		if (platform->pcm_ops->trigger) {
-			int ret = platform->pcm_ops->trigger(substream,
+		if (platform->driver->ops->trigger) {
+			int ret = platform->driver->ops->trigger(substream,
 				SNDRV_PCM_TRIGGER_START);
 			if (ret < 0)
 				printk(KERN_DEBUG "Playback DMA start failed\n");
@@ -263,7 +262,7 @@
 static int davinci_i2s_set_dai_fmt(struct snd_soc_dai *cpu_dai,
 				   unsigned int fmt)
 {
-	struct davinci_mcbsp_dev *dev = cpu_dai->private_data;
+	struct davinci_mcbsp_dev *dev = snd_soc_dai_get_drvdata(cpu_dai);
 	unsigned int pcr;
 	unsigned int srgr;
 	/* Attention srgr is updated by hw_params! */
@@ -404,7 +403,7 @@
 static int davinci_i2s_dai_set_clkdiv(struct snd_soc_dai *cpu_dai,
 				int div_id, int div)
 {
-	struct davinci_mcbsp_dev *dev = cpu_dai->private_data;
+	struct davinci_mcbsp_dev *dev = snd_soc_dai_get_drvdata(cpu_dai);
 
 	if (div_id != DAVINCI_MCBSP_CLKGDV)
 		return -ENODEV;
@@ -417,7 +416,7 @@
 				 struct snd_pcm_hw_params *params,
 				 struct snd_soc_dai *dai)
 {
-	struct davinci_mcbsp_dev *dev = dai->private_data;
+	struct davinci_mcbsp_dev *dev = snd_soc_dai_get_drvdata(dai);
 	struct davinci_pcm_dma_params *dma_params =
 					&dev->dma_params[substream->stream];
 	struct snd_interval *i = NULL;
@@ -427,6 +426,9 @@
 	snd_pcm_format_t fmt;
 	unsigned element_cnt = 1;
 
+	dai->capture_dma_data = dev->dma_params;
+	dai->playback_dma_data = dev->dma_params;
+
 	/* general line settings */
 	spcr = davinci_mcbsp_read_reg(dev, DAVINCI_MCBSP_SPCR_REG);
 	if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) {
@@ -569,7 +571,7 @@
 static int davinci_i2s_prepare(struct snd_pcm_substream *substream,
 		struct snd_soc_dai *dai)
 {
-	struct davinci_mcbsp_dev *dev = dai->private_data;
+	struct davinci_mcbsp_dev *dev = snd_soc_dai_get_drvdata(dai);
 	int playback = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK);
 	davinci_mcbsp_stop(dev, playback);
 	if ((dev->pcr & DAVINCI_MCBSP_PCR_FSXM) == 0) {
@@ -582,7 +584,7 @@
 static int davinci_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
 			       struct snd_soc_dai *dai)
 {
-	struct davinci_mcbsp_dev *dev = dai->private_data;
+	struct davinci_mcbsp_dev *dev = snd_soc_dai_get_drvdata(dai);
 	int ret = 0;
 	int playback = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK);
 	if ((dev->pcr & DAVINCI_MCBSP_PCR_FSXM) == 0)
@@ -608,7 +610,7 @@
 static void davinci_i2s_shutdown(struct snd_pcm_substream *substream,
 		struct snd_soc_dai *dai)
 {
-	struct davinci_mcbsp_dev *dev = dai->private_data;
+	struct davinci_mcbsp_dev *dev = snd_soc_dai_get_drvdata(dai);
 	int playback = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK);
 	davinci_mcbsp_stop(dev, playback);
 }
@@ -625,9 +627,7 @@
 
 };
 
-struct snd_soc_dai davinci_i2s_dai = {
-	.name = "davinci-i2s",
-	.id = 0,
+static struct snd_soc_dai_driver davinci_i2s_dai = {
 	.playback = {
 		.channels_min = 2,
 		.channels_max = 2,
@@ -641,7 +641,6 @@
 	.ops = &davinci_i2s_dai_ops,
 
 };
-EXPORT_SYMBOL_GPL(davinci_i2s_dai);
 
 static int davinci_i2s_probe(struct platform_device *pdev)
 {
@@ -720,10 +719,9 @@
 	dev->dma_params[SNDRV_PCM_STREAM_CAPTURE].channel = res->start;
 	dev->dev = &pdev->dev;
 
-	davinci_i2s_dai.private_data = dev;
-	davinci_i2s_dai.capture.dma_data = dev->dma_params;
-	davinci_i2s_dai.playback.dma_data = dev->dma_params;
-	ret = snd_soc_register_dai(&davinci_i2s_dai);
+	dev_set_drvdata(&pdev->dev, dev);
+
+	ret = snd_soc_register_dai(&pdev->dev, &davinci_i2s_dai);
 	if (ret != 0)
 		goto err_free_mem;
 
@@ -739,10 +737,10 @@
 
 static int davinci_i2s_remove(struct platform_device *pdev)
 {
-	struct davinci_mcbsp_dev *dev = davinci_i2s_dai.private_data;
+	struct davinci_mcbsp_dev *dev = dev_get_drvdata(&pdev->dev);
 	struct resource *mem;
 
-	snd_soc_unregister_dai(&davinci_i2s_dai);
+	snd_soc_unregister_dai(&pdev->dev);
 	clk_disable(dev->clk);
 	clk_put(dev->clk);
 	dev->clk = NULL;
@@ -757,7 +755,7 @@
 	.probe		= davinci_i2s_probe,
 	.remove		= davinci_i2s_remove,
 	.driver		= {
-		.name	= "davinci-asp",
+		.name	= "davinci-i2s",
 		.owner	= THIS_MODULE,
 	},
 };
diff --git a/sound/soc/davinci/davinci-i2s.h b/sound/soc/davinci/davinci-i2s.h
index 0b1e77b..48dac3e 100644
--- a/sound/soc/davinci/davinci-i2s.h
+++ b/sound/soc/davinci/davinci-i2s.h
@@ -17,6 +17,4 @@
 	DAVINCI_MCBSP_CLKGDV,              /* Sample rate generator divider */
 };
 
-extern struct snd_soc_dai davinci_i2s_dai;
-
 #endif
diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c
index b247208..c8e97dc 100644
--- a/sound/soc/davinci/davinci-mcasp.c
+++ b/sound/soc/davinci/davinci-mcasp.c
@@ -422,7 +422,7 @@
 static int davinci_mcasp_set_dai_fmt(struct snd_soc_dai *cpu_dai,
 					 unsigned int fmt)
 {
-	struct davinci_audio_dev *dev = cpu_dai->private_data;
+	struct davinci_audio_dev *dev = snd_soc_dai_get_drvdata(cpu_dai);
 	void __iomem *base = dev->base;
 
 	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
@@ -709,12 +709,15 @@
 					struct snd_pcm_hw_params *params,
 					struct snd_soc_dai *cpu_dai)
 {
-	struct davinci_audio_dev *dev = cpu_dai->private_data;
+	struct davinci_audio_dev *dev = snd_soc_dai_get_drvdata(cpu_dai);
 	struct davinci_pcm_dma_params *dma_params =
 					&dev->dma_params[substream->stream];
 	int word_length;
 	u8 fifo_level;
 
+	cpu_dai->capture_dma_data = dev->dma_params;
+	cpu_dai->playback_dma_data = dev->dma_params;
+
 	davinci_hw_common_param(dev, substream->stream);
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
 		fifo_level = dev->txnumevt;
@@ -761,8 +764,7 @@
 static int davinci_mcasp_trigger(struct snd_pcm_substream *substream,
 				     int cmd, struct snd_soc_dai *cpu_dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct davinci_audio_dev *dev = rtd->dai->cpu_dai->private_data;
+	struct davinci_audio_dev *dev = snd_soc_dai_get_drvdata(cpu_dai);
 	int ret = 0;
 
 	switch (cmd) {
@@ -804,10 +806,9 @@
 
 };
 
-struct snd_soc_dai davinci_mcasp_dai[] = {
+static struct snd_soc_dai_driver davinci_mcasp_dai[] = {
 	{
-		.name 		= "davinci-i2s",
-		.id 		= 0,
+		.name		= "davinci-mcasp.0",
 		.playback	= {
 			.channels_min	= 2,
 			.channels_max 	= 2,
@@ -828,8 +829,7 @@
 
 	},
 	{
-		.name 		= "davinci-dit",
-		.id 		= 1,
+		"davinci-mcasp.1",
 		.playback 	= {
 			.channels_min	= 1,
 			.channels_max	= 384,
@@ -840,7 +840,6 @@
 	},
 
 };
-EXPORT_SYMBOL_GPL(davinci_mcasp_dai);
 
 static int davinci_mcasp_probe(struct platform_device *pdev)
 {
@@ -917,11 +916,8 @@
 	}
 
 	dma_data->channel = res->start;
-	davinci_mcasp_dai[pdata->op_mode].private_data = dev;
-	davinci_mcasp_dai[pdata->op_mode].capture.dma_data = dev->dma_params;
-	davinci_mcasp_dai[pdata->op_mode].playback.dma_data = dev->dma_params;
-	davinci_mcasp_dai[pdata->op_mode].dev = &pdev->dev;
-	ret = snd_soc_register_dai(&davinci_mcasp_dai[pdata->op_mode]);
+	dev_set_drvdata(&pdev->dev, dev);
+	ret = snd_soc_register_dai(&pdev->dev, &davinci_mcasp_dai[pdata->op_mode]);
 
 	if (ret != 0)
 		goto err_release_region;
@@ -937,12 +933,10 @@
 
 static int davinci_mcasp_remove(struct platform_device *pdev)
 {
-	struct snd_platform_data *pdata = pdev->dev.platform_data;
-	struct davinci_audio_dev *dev;
+	struct davinci_audio_dev *dev = dev_get_drvdata(&pdev->dev);
 	struct resource *mem;
 
-	snd_soc_unregister_dai(&davinci_mcasp_dai[pdata->op_mode]);
-	dev = davinci_mcasp_dai[pdata->op_mode].private_data;
+	snd_soc_unregister_dai(&pdev->dev);
 	clk_disable(dev->clk);
 	clk_put(dev->clk);
 	dev->clk = NULL;
diff --git a/sound/soc/davinci/davinci-mcasp.h b/sound/soc/davinci/davinci-mcasp.h
index e755b51..4681acc 100644
--- a/sound/soc/davinci/davinci-mcasp.h
+++ b/sound/soc/davinci/davinci-mcasp.h
@@ -22,8 +22,6 @@
 #include <mach/asp.h>
 #include "davinci-pcm.h"
 
-extern struct snd_soc_dai davinci_mcasp_dai[];
-
 #define DAVINCI_MCASP_RATES	SNDRV_PCM_RATE_8000_96000
 #define DAVINCI_MCASP_I2S_DAI	0
 #define DAVINCI_MCASP_DIT_DAI	1
diff --git a/sound/soc/davinci/davinci-pcm.c b/sound/soc/davinci/davinci-pcm.c
index a712411..9d35b8c 100644
--- a/sound/soc/davinci/davinci-pcm.c
+++ b/sound/soc/davinci/davinci-pcm.c
@@ -653,7 +653,7 @@
 	struct davinci_pcm_dma_params *pa;
 	struct davinci_pcm_dma_params *params;
 
-	pa = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
+	pa = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 	if (!pa)
 		return -ENODEV;
 	params = &pa[substream->stream];
@@ -821,7 +821,7 @@
 	if (!card->dev->coherent_dma_mask)
 		card->dev->coherent_dma_mask = 0xffffffff;
 
-	if (dai->playback.channels_min) {
+	if (dai->driver->playback.channels_min) {
 		ret = davinci_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_PLAYBACK,
 			pcm_hardware_playback.buffer_bytes_max);
@@ -829,7 +829,7 @@
 			return ret;
 	}
 
-	if (dai->capture.channels_min) {
+	if (dai->driver->capture.channels_min) {
 		ret = davinci_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_CAPTURE,
 			pcm_hardware_capture.buffer_bytes_max);
@@ -840,25 +840,44 @@
 	return 0;
 }
 
-struct snd_soc_platform davinci_soc_platform = {
-	.name = 	"davinci-audio",
-	.pcm_ops = 	&davinci_pcm_ops,
+static struct snd_soc_platform_driver davinci_soc_platform = {
+	.ops =		&davinci_pcm_ops,
 	.pcm_new = 	davinci_pcm_new,
 	.pcm_free = 	davinci_pcm_free,
 };
-EXPORT_SYMBOL_GPL(davinci_soc_platform);
 
-static int __init davinci_soc_platform_init(void)
+static int __devinit davinci_soc_platform_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_platform(&davinci_soc_platform);
+	return snd_soc_register_platform(&pdev->dev, &davinci_soc_platform);
 }
-module_init(davinci_soc_platform_init);
 
-static void __exit davinci_soc_platform_exit(void)
+static int __devexit davinci_soc_platform_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_platform(&davinci_soc_platform);
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
 }
-module_exit(davinci_soc_platform_exit);
+
+static struct platform_driver davinci_pcm_driver = {
+	.driver = {
+			.name = "davinci-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = davinci_soc_platform_probe,
+	.remove = __devexit_p(davinci_soc_platform_remove),
+};
+
+static int __init snd_davinci_pcm_init(void)
+{
+	return platform_driver_register(&davinci_pcm_driver);
+}
+module_init(snd_davinci_pcm_init);
+
+static void __exit snd_davinci_pcm_exit(void)
+{
+	platform_driver_unregister(&davinci_pcm_driver);
+}
+module_exit(snd_davinci_pcm_exit);
 
 MODULE_AUTHOR("Vladimir Barinov");
 MODULE_DESCRIPTION("TI DAVINCI PCM DMA module");
diff --git a/sound/soc/davinci/davinci-pcm.h b/sound/soc/davinci/davinci-pcm.h
index b799a02..c0d6c9b 100644
--- a/sound/soc/davinci/davinci-pcm.h
+++ b/sound/soc/davinci/davinci-pcm.h
@@ -28,7 +28,4 @@
 	unsigned int fifo_level;
 };
 
-
-extern struct snd_soc_platform davinci_soc_platform;
-
 #endif
diff --git a/sound/soc/davinci/davinci-sffsdr.c b/sound/soc/davinci/davinci-sffsdr.c
index 40eccfe..997c54f 100644
--- a/sound/soc/davinci/davinci-sffsdr.c
+++ b/sound/soc/davinci/davinci-sffsdr.c
@@ -29,7 +29,6 @@
 #include <asm/plat-sffsdr/sffsdr-fpga.h>
 #endif
 
-#include <mach/mcbsp.h>
 #include <mach/edma.h>
 
 #include "../codecs/pcm3008.h"
@@ -48,7 +47,7 @@
 			    struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int fs;
 	int ret = 0;
 
@@ -85,15 +84,16 @@
 static struct snd_soc_dai_link sffsdr_dai = {
 	.name = "PCM3008", /* Codec name */
 	.stream_name = "PCM3008 HiFi",
-	.cpu_dai = &davinci_i2s_dai,
-	.codec_dai = &pcm3008_dai,
+	.cpu_dai_name = "davinci-asp.0",
+	.codec_dai_name = "pcm3008-hifi",
+	.codec_name = "pcm3008-codec",
+	.platform_name = "davinci-pcm-audio",
 	.ops = &sffsdr_ops,
 };
 
 /* davinci-sffsdr audio machine driver */
 static struct snd_soc_card snd_soc_sffsdr = {
 	.name = "DaVinci SFFSDR",
-	.platform = &davinci_soc_platform,
 	.dai_link = &sffsdr_dai,
 	.num_links = 1,
 };
@@ -106,11 +106,12 @@
 	.pdda_pin = GPIO(38),
 };
 
-/* sffsdr audio subsystem */
-static struct snd_soc_device sffsdr_snd_devdata = {
-	.card = &snd_soc_sffsdr,
-	.codec_dev = &soc_codec_dev_pcm3008,
-	.codec_data = &sffsdr_pcm3008_setup,
+struct platform_device pcm3008_codec = {
+		.name = "pcm3008-codec",
+		.id = 0,
+		.dev = {
+				.platform_data = &sffsdr_pcm3008_setup,
+		},
 };
 
 static struct resource sffsdr_snd_resources[] = {
@@ -135,14 +136,15 @@
 	if (!machine_is_sffsdr())
 		return -EINVAL;
 
+	platform_device_register(&pcm3008_codec);
+
 	sffsdr_snd_device = platform_device_alloc("soc-audio", 0);
 	if (!sffsdr_snd_device) {
 		printk(KERN_ERR "platform device allocation failed\n");
 		return -ENOMEM;
 	}
 
-	platform_set_drvdata(sffsdr_snd_device, &sffsdr_snd_devdata);
-	sffsdr_snd_devdata.dev = &sffsdr_snd_device->dev;
+	platform_set_drvdata(sffsdr_snd_device, &snd_soc_sffsdr);
 	platform_device_add_data(sffsdr_snd_device, &sffsdr_snd_data,
 				 sizeof(sffsdr_snd_data));
 
@@ -168,6 +170,7 @@
 static void __exit sffsdr_exit(void)
 {
 	platform_device_unregister(sffsdr_snd_device);
+	platform_device_unregister(&pcm3008_codec);
 }
 
 module_init(sffsdr_init);
diff --git a/sound/soc/davinci/davinci-vcif.c b/sound/soc/davinci/davinci-vcif.c
index 4867853..ea232f6 100644
--- a/sound/soc/davinci/davinci-vcif.c
+++ b/sound/soc/davinci/davinci-vcif.c
@@ -36,7 +36,6 @@
 
 #include "davinci-pcm.h"
 #include "davinci-i2s.h"
-#include "davinci-vcif.h"
 
 #define MOD_REG_BIT(val, mask, set) do { \
 	if (set) { \
@@ -55,7 +54,7 @@
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
 	struct davinci_vcif_dev *davinci_vcif_dev =
-					rtd->dai->cpu_dai->private_data;
+			snd_soc_dai_get_drvdata(rtd->cpu_dai);
 	struct davinci_vc *davinci_vc = davinci_vcif_dev->davinci_vc;
 	u32 w;
 
@@ -74,7 +73,7 @@
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
 	struct davinci_vcif_dev *davinci_vcif_dev =
-					rtd->dai->cpu_dai->private_data;
+			snd_soc_dai_get_drvdata(rtd->cpu_dai);
 	struct davinci_vc *davinci_vc = davinci_vcif_dev->davinci_vc;
 	u32 w;
 
@@ -92,12 +91,15 @@
 				  struct snd_pcm_hw_params *params,
 				  struct snd_soc_dai *dai)
 {
-	struct davinci_vcif_dev *davinci_vcif_dev = dai->private_data;
+	struct davinci_vcif_dev *davinci_vcif_dev = snd_soc_dai_get_drvdata(dai);
 	struct davinci_vc *davinci_vc = davinci_vcif_dev->davinci_vc;
 	struct davinci_pcm_dma_params *dma_params =
 			&davinci_vcif_dev->dma_params[substream->stream];
 	u32 w;
 
+	dai->capture_dma_data = davinci_vcif_dev->dma_params;
+	dai->playback_dma_data = davinci_vcif_dev->dma_params;
+
 	/* Restart the codec before setup */
 	davinci_vcif_stop(substream);
 	davinci_vcif_start(substream);
@@ -179,8 +181,7 @@
 	.hw_params	= davinci_vcif_hw_params,
 };
 
-struct snd_soc_dai davinci_vcif_dai = {
-	.name = "davinci-vcif",
+static struct snd_soc_dai_driver davinci_vcif_dai = {
 	.playback = {
 		.channels_min = 1,
 		.channels_max = 2,
@@ -194,7 +195,6 @@
 	.ops = &davinci_vcif_dai_ops,
 
 };
-EXPORT_SYMBOL_GPL(davinci_vcif_dai);
 
 static int davinci_vcif_probe(struct platform_device *pdev)
 {
@@ -222,12 +222,9 @@
 	davinci_vcif_dev->dma_params[SNDRV_PCM_STREAM_CAPTURE].dma_addr =
 					davinci_vc->davinci_vcif.dma_rx_addr;
 
-	davinci_vcif_dai.dev = &pdev->dev;
-	davinci_vcif_dai.capture.dma_data = davinci_vcif_dev->dma_params;
-	davinci_vcif_dai.playback.dma_data = davinci_vcif_dev->dma_params;
-	davinci_vcif_dai.private_data = davinci_vcif_dev;
+	dev_set_drvdata(&pdev->dev, davinci_vcif_dev);
 
-	ret = snd_soc_register_dai(&davinci_vcif_dai);
+	ret = snd_soc_register_dai(&pdev->dev, &davinci_vcif_dai);
 	if (ret != 0) {
 		dev_err(&pdev->dev, "could not register dai\n");
 		goto fail;
@@ -243,7 +240,7 @@
 
 static int davinci_vcif_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_dai(&davinci_vcif_dai);
+	snd_soc_unregister_dai(&pdev->dev);
 
 	return 0;
 }
@@ -252,7 +249,7 @@
 	.probe		= davinci_vcif_probe,
 	.remove		= davinci_vcif_remove,
 	.driver		= {
-		.name	= "davinci_vcif",
+		.name	= "davinci-vcif",
 		.owner	= THIS_MODULE,
 	},
 };
diff --git a/sound/soc/davinci/davinci-vcif.h b/sound/soc/davinci/davinci-vcif.h
deleted file mode 100644
index 571c994..0000000
--- a/sound/soc/davinci/davinci-vcif.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * ALSA SoC Voice Codec Interface for TI DAVINCI processor
- *
- * Copyright (C) 2010 Texas Instruments.
- *
- * Author: Miguel Aguilar <miguel.aguilar@ridgerun.com>
- *
- * 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; either version 2 of the License, or
- * (at your option) any later version.
- *
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _DAVINCI_VCIF_H
-#define _DAVINCI_VCIF_H
-
-extern struct snd_soc_dai davinci_vcif_dai;
-
-#endif
diff --git a/sound/soc/ep93xx/ep93xx-i2s.c b/sound/soc/ep93xx/ep93xx-i2s.c
index 00b9466..4f48733 100644
--- a/sound/soc/ep93xx/ep93xx-i2s.c
+++ b/sound/soc/ep93xx/ep93xx-i2s.c
@@ -31,7 +31,6 @@
 #include <mach/dma.h>
 
 #include "ep93xx-pcm.h"
-#include "ep93xx-i2s.h"
 
 #define EP93XX_I2S_TXCLKCFG		0x00
 #define EP93XX_I2S_RXCLKCFG		0x04
@@ -145,8 +144,8 @@
 			      struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct ep93xx_i2s_info *info = rtd->dai->cpu_dai->private_data;
+	struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(dai);
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 
 	snd_soc_dai_set_dma_data(cpu_dai, substream,
 				 &info->dma_params[substream->stream]);
@@ -156,8 +155,7 @@
 static void ep93xx_i2s_shutdown(struct snd_pcm_substream *substream,
 				struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct ep93xx_i2s_info *info = rtd->dai->cpu_dai->private_data;
+	struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(dai);
 
 	ep93xx_i2s_disable(info, substream->stream);
 }
@@ -165,7 +163,7 @@
 static int ep93xx_i2s_set_dai_fmt(struct snd_soc_dai *cpu_dai,
 				  unsigned int fmt)
 {
-	struct ep93xx_i2s_info *info = cpu_dai->private_data;
+	struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(cpu_dai);
 	unsigned int clk_cfg, lin_ctrl;
 
 	clk_cfg  = ep93xx_i2s_read_reg(info, EP93XX_I2S_RXCLKCFG);
@@ -242,9 +240,7 @@
 				struct snd_pcm_hw_params *params,
 				struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct ep93xx_i2s_info *info = cpu_dai->private_data;
+	struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(dai);
 	unsigned word_len, div, sdiv, lrdiv;
 	int found = 0, err;
 
@@ -302,7 +298,7 @@
 static int ep93xx_i2s_set_sysclk(struct snd_soc_dai *cpu_dai, int clk_id,
 				 unsigned int freq, int dir)
 {
-	struct ep93xx_i2s_info *info = cpu_dai->private_data;
+	struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(cpu_dai);
 
 	if (dir == SND_SOC_CLOCK_IN || clk_id != 0)
 		return -EINVAL;
@@ -313,7 +309,7 @@
 #ifdef CONFIG_PM
 static int ep93xx_i2s_suspend(struct snd_soc_dai *dai)
 {
-	struct ep93xx_i2s_info *info = dai->private_data;
+	struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(dai);
 
 	if (!dai->active)
 		return;
@@ -324,7 +320,7 @@
 
 static int ep93xx_i2s_resume(struct snd_soc_dai *dai)
 {
-	struct ep93xx_i2s_info *info = dai->private_data;
+	struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(dai);
 
 	if (!dai->active)
 		return;
@@ -349,9 +345,7 @@
 			    SNDRV_PCM_FMTBIT_S24_LE | \
 			    SNDRV_PCM_FMTBIT_S32_LE)
 
-struct snd_soc_dai ep93xx_i2s_dai = {
-	.name		= "ep93xx-i2s",
-	.id		= 0,
+static struct snd_soc_dai_driver ep93xx_i2s_dai = {
 	.symmetric_rates= 1,
 	.suspend	= ep93xx_i2s_suspend,
 	.resume		= ep93xx_i2s_resume,
@@ -369,7 +363,6 @@
 	},
 	.ops		= &ep93xx_i2s_dai_ops,
 };
-EXPORT_SYMBOL_GPL(ep93xx_i2s_dai);
 
 static int ep93xx_i2s_probe(struct platform_device *pdev)
 {
@@ -383,8 +376,7 @@
 		goto fail;
 	}
 
-	ep93xx_i2s_dai.dev = &pdev->dev;
-	ep93xx_i2s_dai.private_data = info;
+	dev_set_drvdata(&pdev->dev, info);
 	info->dma_params = ep93xx_i2s_dma_params;
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -424,7 +416,7 @@
 		goto fail_put_sclk;
 	}
 
-	err = snd_soc_register_dai(&ep93xx_i2s_dai);
+	err = snd_soc_register_dai(&pdev->dev, &ep93xx_i2s_dai);
 	if (err)
 		goto fail_put_lrclk;
 
@@ -447,9 +439,9 @@
 
 static int __devexit ep93xx_i2s_remove(struct platform_device *pdev)
 {
-	struct ep93xx_i2s_info *info = ep93xx_i2s_dai.private_data;
+	struct ep93xx_i2s_info *info = dev_get_drvdata(&pdev->dev);
 
-	snd_soc_unregister_dai(&ep93xx_i2s_dai);
+	snd_soc_unregister_dai(&pdev->dev);
 	clk_put(info->lrclk);
 	clk_put(info->sclk);
 	clk_put(info->mclk);
diff --git a/sound/soc/ep93xx/ep93xx-i2s.h b/sound/soc/ep93xx/ep93xx-i2s.h
deleted file mode 100644
index 3bd4ebf..0000000
--- a/sound/soc/ep93xx/ep93xx-i2s.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * linux/sound/soc/ep93xx-i2s.h
- * EP93xx I2S driver
- *
- * Copyright (C) 2010 Ryan Mallon <ryan@bluewatersys.com>
- *  
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- */
-
-#ifndef _EP93XX_SND_SOC_I2S_H
-#define _EP93XX_SND_SOC_I2S_H
-
-extern struct snd_soc_dai ep93xx_i2s_dai;
-
-#endif /* _EP93XX_SND_SOC_I2S_H */
diff --git a/sound/soc/ep93xx/ep93xx-pcm.c b/sound/soc/ep93xx/ep93xx-pcm.c
index 4ba9384..2f121dd 100644
--- a/sound/soc/ep93xx/ep93xx-pcm.c
+++ b/sound/soc/ep93xx/ep93xx-pcm.c
@@ -95,7 +95,7 @@
 static int ep93xx_pcm_open(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *soc_rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = soc_rtd->dai->cpu_dai;
+	struct snd_soc_dai *cpu_dai = soc_rtd->cpu_dai;
 	struct ep93xx_pcm_dma_params *dma_params;
 	struct ep93xx_runtime_data *rtd;    
 	int ret;
@@ -276,14 +276,14 @@
 	if (!card->dev->coherent_dma_mask)
 		card->dev->coherent_dma_mask = 0xffffffff;
 
-	if (dai->playback.channels_min) {
+	if (dai->driver->playback.channels_min) {
 		ret = ep93xx_pcm_preallocate_dma_buffer(pcm,
 					SNDRV_PCM_STREAM_PLAYBACK);
 		if (ret)
 			return ret;
 	}
 
-	if (dai->capture.channels_min) {
+	if (dai->driver->capture.channels_min) {
 		ret = ep93xx_pcm_preallocate_dma_buffer(pcm,
 					SNDRV_PCM_STREAM_CAPTURE);
 		if (ret)
@@ -293,22 +293,41 @@
 	return 0;
 }
 
-struct snd_soc_platform ep93xx_soc_platform = {
-	.name		= "ep93xx-audio",
-	.pcm_ops	= &ep93xx_pcm_ops,
+static struct snd_soc_platform_driver ep93xx_soc_platform = {
+	.ops		= &ep93xx_pcm_ops,
 	.pcm_new	= &ep93xx_pcm_new,
 	.pcm_free	= &ep93xx_pcm_free_dma_buffers,
 };
-EXPORT_SYMBOL_GPL(ep93xx_soc_platform);
+
+static int __devinit ep93xx_soc_platform_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_platform(&pdev->dev, &ep93xx_soc_platform);
+}
+
+static int __devexit ep93xx_soc_platform_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver ep93xx_pcm_driver = {
+	.driver = {
+			.name = "ep93xx-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = ep93xx_soc_platform_probe,
+	.remove = __devexit_p(ep93xx_soc_platform_remove),
+};
 
 static int __init ep93xx_soc_platform_init(void)
 {
-	return snd_soc_register_platform(&ep93xx_soc_platform);
+	return platform_driver_register(&ep93xx_pcm_driver);
 }
 
 static void __exit ep93xx_soc_platform_exit(void)
 {
-	snd_soc_unregister_platform(&ep93xx_soc_platform);
+	platform_driver_unregister(&ep93xx_pcm_driver);
 }
 
 module_init(ep93xx_soc_platform_init);
diff --git a/sound/soc/ep93xx/ep93xx-pcm.h b/sound/soc/ep93xx/ep93xx-pcm.h
index 4ffdd3f..111e112 100644
--- a/sound/soc/ep93xx/ep93xx-pcm.h
+++ b/sound/soc/ep93xx/ep93xx-pcm.h
@@ -17,6 +17,4 @@
 	int	dma_port;
 };
 
-extern struct snd_soc_platform ep93xx_soc_platform;
-
 #endif /* _EP93XX_SND_SOC_PCM_H */
diff --git a/sound/soc/ep93xx/snappercl15.c b/sound/soc/ep93xx/snappercl15.c
index 64955340..28ab5ff 100644
--- a/sound/soc/ep93xx/snappercl15.c
+++ b/sound/soc/ep93xx/snappercl15.c
@@ -22,7 +22,6 @@
 
 #include "../codecs/tlv320aic23.h"
 #include "ep93xx-pcm.h"
-#include "ep93xx-i2s.h"
 
 #define CODEC_CLOCK 5644800
 
@@ -30,8 +29,8 @@
 				 struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int err;
 
 	err = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
@@ -77,8 +76,10 @@
 	{"MICIN", NULL, "Mic Jack"},
 };
 
-static int snappercl15_tlv320aic23_init(struct snd_soc_codec *codec)
+static int snappercl15_tlv320aic23_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+
 	snd_soc_dapm_new_controls(codec, tlv320aic23_dapm_widgets,
 				  ARRAY_SIZE(tlv320aic23_dapm_widgets));
 
@@ -89,24 +90,20 @@
 static struct snd_soc_dai_link snappercl15_dai = {
 	.name		= "tlv320aic23",
 	.stream_name	= "AIC23",
-	.cpu_dai	= &ep93xx_i2s_dai,
-	.codec_dai	= &tlv320aic23_dai,
+	.cpu_dai_name	= "ep93xx-i2s",
+	.codec_dai_name	= "tlv320aic23-hifi",
+	.codec_name	= "tlv320aic23-codec.0-001a",
+	.platform_name	=  "ep93xx-pcm-audio",
 	.init		= snappercl15_tlv320aic23_init,
 	.ops		= &snappercl15_ops,
 };
 
 static struct snd_soc_card snd_soc_snappercl15 = {
 	.name		= "Snapper CL15",
-	.platform	= &ep93xx_soc_platform,
 	.dai_link	= &snappercl15_dai,
 	.num_links	= 1,
 };
 
-static struct snd_soc_device snappercl15_snd_devdata = {
-	.card		= &snd_soc_snappercl15,
-	.codec_dev	= &soc_codec_dev_tlv320aic23,
-};
-
 static struct platform_device *snappercl15_snd_device;
 
 static int __init snappercl15_init(void)
@@ -126,8 +123,7 @@
 	if (!snappercl15_snd_device)
 		return -ENOMEM;
 	
-	platform_set_drvdata(snappercl15_snd_device, &snappercl15_snd_devdata);
-	snappercl15_snd_devdata.dev = &snappercl15_snd_device->dev;
+	platform_set_drvdata(snappercl15_snd_device, &snd_soc_snappercl15);
 	ret = platform_device_add(snappercl15_snd_device);
 	if (ret)
 		platform_device_put(snappercl15_snd_device);
diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig
index 8cb65cc..d754d34 100644
--- a/sound/soc/fsl/Kconfig
+++ b/sound/soc/fsl/Kconfig
@@ -1,27 +1,36 @@
-config SND_SOC_OF_SIMPLE
-	tristate
-	
 config SND_MPC52xx_DMA
 	tristate
 
-# ASoC platform support for the Freescale MPC8610 SOC.  This compiles drivers
-# for the SSI and the Elo DMA controller.  You will still need to select
-# a platform driver and a codec driver.
-config SND_SOC_MPC8610
+# ASoC platform support for the Freescale PowerPC SOCs that have an SSI and
+# an Elo DMA controller, such as the MPC8610 and P1022.  You will still need to
+# select a platform driver and a codec driver.
+config SND_SOC_POWERPC_SSI
 	tristate
-	depends on MPC8610
+	depends on FSL_SOC
 
 config SND_SOC_MPC8610_HPCD
 	tristate "ALSA SoC support for the Freescale MPC8610 HPCD board"
 	# I2C is necessary for the CS4270 driver
 	depends on MPC8610_HPCD && I2C
-	select SND_SOC_MPC8610
+	select SND_SOC_POWERPC_SSI
 	select SND_SOC_CS4270
 	select SND_SOC_CS4270_VD33_ERRATA
 	default y if MPC8610_HPCD
 	help
 	  Say Y if you want to enable audio on the Freescale MPC8610 HPCD.
 
+config SND_SOC_P1022_DS
+	tristate "ALSA SoC support for the Freescale P1022 DS board"
+	# I2C is necessary for the WM8776 driver
+	depends on P1022_DS && I2C
+	select SND_SOC_POWERPC_SSI
+	select SND_SOC_WM8776
+	default y if P1022_DS
+	help
+	  Say Y if you want to enable audio on the Freescale P1022 DS board.
+	  This will also include the Wolfson Microelectronics WM8776 codec
+	  driver.
+
 config SND_SOC_MPC5200_I2S
 	tristate "Freescale MPC5200 PSC in I2S mode driver"
 	depends on PPC_MPC52xx && PPC_BESTCOMM
diff --git a/sound/soc/fsl/Makefile b/sound/soc/fsl/Makefile
index a83a739..b4a38c0 100644
--- a/sound/soc/fsl/Makefile
+++ b/sound/soc/fsl/Makefile
@@ -1,14 +1,15 @@
-# Simple machine driver that extracts configuration from the OF device tree
-obj-$(CONFIG_SND_SOC_OF_SIMPLE) += soc-of-simple.o
-
 # MPC8610 HPCD Machine Support
 snd-soc-mpc8610-hpcd-objs := mpc8610_hpcd.o
 obj-$(CONFIG_SND_SOC_MPC8610_HPCD) += snd-soc-mpc8610-hpcd.o
 
-# MPC8610 Platform Support
+# P1022 DS Machine Support
+snd-soc-p1022-ds-objs := p1022_ds.o
+obj-$(CONFIG_SND_SOC_P1022_DS) += snd-soc-p1022-ds.o
+
+# Freescale PowerPC SSI/DMA Platform Support
 snd-soc-fsl-ssi-objs := fsl_ssi.o
 snd-soc-fsl-dma-objs := fsl_dma.o
-obj-$(CONFIG_SND_SOC_MPC8610) += snd-soc-fsl-ssi.o snd-soc-fsl-dma.o
+obj-$(CONFIG_SND_SOC_POWERPC_SSI) += snd-soc-fsl-ssi.o snd-soc-fsl-dma.o
 
 # MPC5200 Platform Support
 obj-$(CONFIG_SND_MPC52xx_DMA) += mpc5200_dma.o
diff --git a/sound/soc/fsl/efika-audio-fabric.c b/sound/soc/fsl/efika-audio-fabric.c
index 1a5b8e0..53251e6 100644
--- a/sound/soc/fsl/efika-audio-fabric.c
+++ b/sound/soc/fsl/efika-audio-fabric.c
@@ -24,7 +24,6 @@
 #include <sound/pcm_params.h>
 #include <sound/initval.h>
 #include <sound/soc.h>
-#include <sound/soc-of-simple.h>
 
 #include "mpc5200_dma.h"
 #include "mpc5200_psc_ac97.h"
@@ -32,21 +31,24 @@
 
 #define DRV_NAME "efika-audio-fabric"
 
-static struct snd_soc_device device;
 static struct snd_soc_card card;
 
 static struct snd_soc_dai_link efika_fabric_dai[] = {
 {
 	.name = "AC97",
 	.stream_name = "AC97 Analog",
-	.codec_dai = &stac9766_dai[STAC9766_DAI_AC97_ANALOG],
-	.cpu_dai = &psc_ac97_dai[MPC5200_AC97_NORMAL],
+	.codec_dai_name = "stac9766-hifi-analog",
+	.cpu_dai_name = "mpc5200-psc-ac97.0",
+	.platform_name = "mpc5200-pcm-audio",
+	.codec_name = "stac9766-codec",
 },
 {
 	.name = "AC97",
 	.stream_name = "AC97 IEC958",
-	.codec_dai = &stac9766_dai[STAC9766_DAI_AC97_DIGITAL],
-	.cpu_dai = &psc_ac97_dai[MPC5200_AC97_SPDIF],
+	.codec_dai_name = "stac9766-hifi-IEC958",
+	.cpu_dai_name = "mpc5200-psc-ac97.1",
+	.platform_name = "mpc5200-pcm-audio",
+	.codec_name = "stac9766-codec",
 },
 };
 
@@ -58,13 +60,10 @@
 	if (!of_machine_is_compatible("bplan,efika"))
 		return -ENODEV;
 
-	card.platform = &mpc5200_audio_dma_platform;
 	card.name = "Efika";
 	card.dai_link = efika_fabric_dai;
 	card.num_links = ARRAY_SIZE(efika_fabric_dai);
 
-	device.card = &card;
-	device.codec_dev = &soc_codec_dev_stac9766;
 
 	pdev = platform_device_alloc("soc-audio", 1);
 	if (!pdev) {
@@ -72,8 +71,7 @@
 		return -ENODEV;
 	}
 
-	platform_set_drvdata(pdev, &device);
-	device.dev = &pdev->dev;
+	platform_set_drvdata(pdev, &card);
 
 	rc = platform_device_add(pdev);
 	if (rc) {
diff --git a/sound/soc/fsl/fsl_dma.c b/sound/soc/fsl/fsl_dma.c
index 410c749..4cf98c0 100644
--- a/sound/soc/fsl/fsl_dma.c
+++ b/sound/soc/fsl/fsl_dma.c
@@ -3,10 +3,11 @@
  *
  * Author: Timur Tabi <timur@freescale.com>
  *
- * Copyright 2007-2008 Freescale Semiconductor, Inc.  This file is licensed
- * under the terms of the GNU General Public License version 2.  This
- * program is licensed "as is" without any warranty of any kind, whether
- * express or implied.
+ * Copyright 2007-2010 Freescale Semiconductor, Inc.
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2.  This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
  *
  * This driver implements ASoC support for the Elo DMA controller, which is
  * the DMA controller on Freescale 83xx, 85xx, and 86xx SOCs. In ALSA terms,
@@ -20,6 +21,9 @@
 #include <linux/interrupt.h>
 #include <linux/delay.h>
 #include <linux/gfp.h>
+#include <linux/of_platform.h>
+#include <linux/list.h>
+#include <linux/slab.h>
 
 #include <sound/core.h>
 #include <sound/pcm.h>
@@ -29,6 +33,7 @@
 #include <asm/io.h>
 
 #include "fsl_dma.h"
+#include "fsl_ssi.h"	/* For the offset of stx0 and srx0 */
 
 /*
  * The formats that the DMA controller supports, which is anything
@@ -52,26 +57,16 @@
 #define FSLDMA_PCM_RATES (SNDRV_PCM_RATE_5512 | SNDRV_PCM_RATE_8000_192000 | \
 			  SNDRV_PCM_RATE_CONTINUOUS)
 
-/* DMA global data.  This structure is used by fsl_dma_open() to determine
- * which DMA channels to assign to a substream.  Unfortunately, ASoC V1 does
- * not allow the machine driver to provide this information to the PCM
- * driver in advance, and there's no way to differentiate between the two
- * DMA controllers.  So for now, this driver only supports one SSI device
- * using two DMA channels.  We cannot support multiple DMA devices.
- *
- * ssi_stx_phys: bus address of SSI STX register
- * ssi_srx_phys: bus address of SSI SRX register
- * dma_channel: pointer to the DMA channel's registers
- * irq: IRQ for this DMA channel
- * assigned: set to 1 if that DMA channel is assigned to a substream
- */
-static struct {
+struct dma_object {
+	struct snd_soc_platform_driver dai;
 	dma_addr_t ssi_stx_phys;
 	dma_addr_t ssi_srx_phys;
-	struct ccsr_dma_channel __iomem *dma_channel[2];
-	unsigned int irq[2];
-	unsigned int assigned[2];
-} dma_global_data;
+	unsigned int ssi_fifo_depth;
+	struct ccsr_dma_channel __iomem *channel;
+	unsigned int irq;
+	bool assigned;
+	char path[1];
+};
 
 /*
  * The number of DMA links to use.  Two is the bare minimum, but if you
@@ -88,8 +83,6 @@
  * structure.
  *
  * @link[]: array of link descriptors
- * @controller_id: which DMA controller (0, 1, ...)
- * @channel_id: which DMA channel on the controller (0, 1, 2, ...)
  * @dma_channel: pointer to the DMA channel's registers
  * @irq: IRQ for this DMA channel
  * @substream: pointer to the substream object, needed by the ISR
@@ -104,12 +97,11 @@
  */
 struct fsl_dma_private {
 	struct fsl_dma_link_descriptor link[NUM_DMA_LINKS];
-	unsigned int controller_id;
-	unsigned int channel_id;
 	struct ccsr_dma_channel __iomem *dma_channel;
 	unsigned int irq;
 	struct snd_pcm_substream *substream;
 	dma_addr_t ssi_sxx_phys;
+	unsigned int ssi_fifo_depth;
 	dma_addr_t ld_buf_phys;
 	unsigned int current_link;
 	dma_addr_t dma_buf_phys;
@@ -185,13 +177,23 @@
 	struct fsl_dma_link_descriptor *link =
 		&dma_private->link[dma_private->current_link];
 
-	/* Update our link descriptors to point to the next period */
-	if (dma_private->substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-		link->source_addr =
-			cpu_to_be32(dma_private->dma_buf_next);
-	else
-		link->dest_addr =
-			cpu_to_be32(dma_private->dma_buf_next);
+	/* Update our link descriptors to point to the next period. On a 36-bit
+	 * system, we also need to update the ESAD bits.  We also set (keep) the
+	 * snoop bits.  See the comments in fsl_dma_hw_params() about snooping.
+	 */
+	if (dma_private->substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
+		link->source_addr = cpu_to_be32(dma_private->dma_buf_next);
+#ifdef CONFIG_PHYS_64BIT
+		link->source_attr = cpu_to_be32(CCSR_DMA_ATR_SNOOP |
+			upper_32_bits(dma_private->dma_buf_next));
+#endif
+	} else {
+		link->dest_addr = cpu_to_be32(dma_private->dma_buf_next);
+#ifdef CONFIG_PHYS_64BIT
+		link->dest_attr = cpu_to_be32(CCSR_DMA_ATR_SNOOP |
+			upper_32_bits(dma_private->dma_buf_next));
+#endif
+	}
 
 	/* Update our variables for next time */
 	dma_private->dma_buf_next += dma_private->period_size;
@@ -212,6 +214,9 @@
 static irqreturn_t fsl_dma_isr(int irq, void *dev_id)
 {
 	struct fsl_dma_private *dma_private = dev_id;
+	struct snd_pcm_substream *substream = dma_private->substream;
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct device *dev = rtd->platform->dev;
 	struct ccsr_dma_channel __iomem *dma_channel = dma_private->dma_channel;
 	irqreturn_t ret = IRQ_NONE;
 	u32 sr, sr2 = 0;
@@ -222,11 +227,8 @@
 	sr = in_be32(&dma_channel->sr);
 
 	if (sr & CCSR_DMA_SR_TE) {
-		dev_err(dma_private->substream->pcm->card->dev,
-			"DMA transmit error (controller=%u channel=%u irq=%u\n",
-			dma_private->controller_id,
-			dma_private->channel_id, irq);
-		fsl_dma_abort_stream(dma_private->substream);
+		dev_err(dev, "dma transmit error\n");
+		fsl_dma_abort_stream(substream);
 		sr2 |= CCSR_DMA_SR_TE;
 		ret = IRQ_HANDLED;
 	}
@@ -235,11 +237,8 @@
 		ret = IRQ_HANDLED;
 
 	if (sr & CCSR_DMA_SR_PE) {
-		dev_err(dma_private->substream->pcm->card->dev,
-			"DMA%u programming error (channel=%u irq=%u)\n",
-			dma_private->controller_id,
-			dma_private->channel_id, irq);
-		fsl_dma_abort_stream(dma_private->substream);
+		dev_err(dev, "dma programming error\n");
+		fsl_dma_abort_stream(substream);
 		sr2 |= CCSR_DMA_SR_PE;
 		ret = IRQ_HANDLED;
 	}
@@ -253,8 +252,6 @@
 		ret = IRQ_HANDLED;
 
 	if (sr & CCSR_DMA_SR_EOSI) {
-		struct snd_pcm_substream *substream = dma_private->substream;
-
 		/* Tell ALSA we completed a period. */
 		snd_pcm_period_elapsed(substream);
 
@@ -288,11 +285,19 @@
  * This function is called when the codec driver calls snd_soc_new_pcms(),
  * once for each .dai_link in the machine driver's snd_soc_card
  * structure.
+ *
+ * snd_dma_alloc_pages() is just a front-end to dma_alloc_coherent(), which
+ * (currently) always allocates the DMA buffer in lowmem, even if GFP_HIGHMEM
+ * is specified. Therefore, any DMA buffers we allocate will always be in low
+ * memory, but we support for 36-bit physical addresses anyway.
+ *
+ * Regardless of where the memory is actually allocated, since the device can
+ * technically DMA to any 36-bit address, we do need to set the DMA mask to 36.
  */
 static int fsl_dma_new(struct snd_card *card, struct snd_soc_dai *dai,
 	struct snd_pcm *pcm)
 {
-	static u64 fsl_dma_dmamask = DMA_BIT_MASK(32);
+	static u64 fsl_dma_dmamask = DMA_BIT_MASK(36);
 	int ret;
 
 	if (!card->dev->dma_mask)
@@ -301,25 +306,29 @@
 	if (!card->dev->coherent_dma_mask)
 		card->dev->coherent_dma_mask = fsl_dma_dmamask;
 
-	ret = snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, card->dev,
-		fsl_dma_hardware.buffer_bytes_max,
-		&pcm->streams[0].substream->dma_buffer);
-	if (ret) {
-		dev_err(card->dev,
-			"Can't allocate playback DMA buffer (size=%u)\n",
-			fsl_dma_hardware.buffer_bytes_max);
-		return -ENOMEM;
+	/* Some codecs have separate DAIs for playback and capture, so we
+	 * should allocate a DMA buffer only for the streams that are valid.
+	 */
+
+	if (dai->driver->playback.channels_min) {
+		ret = snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, card->dev,
+			fsl_dma_hardware.buffer_bytes_max,
+			&pcm->streams[0].substream->dma_buffer);
+		if (ret) {
+			dev_err(card->dev, "can't alloc playback dma buffer\n");
+			return ret;
+		}
 	}
 
-	ret = snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, card->dev,
-		fsl_dma_hardware.buffer_bytes_max,
-		&pcm->streams[1].substream->dma_buffer);
-	if (ret) {
-		snd_dma_free_pages(&pcm->streams[0].substream->dma_buffer);
-		dev_err(card->dev,
-			"Can't allocate capture DMA buffer (size=%u)\n",
-			fsl_dma_hardware.buffer_bytes_max);
-		return -ENOMEM;
+	if (dai->driver->capture.channels_min) {
+		ret = snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, card->dev,
+			fsl_dma_hardware.buffer_bytes_max,
+			&pcm->streams[1].substream->dma_buffer);
+		if (ret) {
+			snd_dma_free_pages(&pcm->streams[0].substream->dma_buffer);
+			dev_err(card->dev, "can't alloc capture dma buffer\n");
+			return ret;
+		}
 	}
 
 	return 0;
@@ -390,6 +399,10 @@
 static int fsl_dma_open(struct snd_pcm_substream *substream)
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct device *dev = rtd->platform->dev;
+	struct dma_object *dma =
+		container_of(rtd->platform->driver, struct dma_object, dai);
 	struct fsl_dma_private *dma_private;
 	struct ccsr_dma_channel __iomem *dma_channel;
 	dma_addr_t ld_buf_phys;
@@ -407,52 +420,45 @@
 	ret = snd_pcm_hw_constraint_integer(runtime,
 		SNDRV_PCM_HW_PARAM_PERIODS);
 	if (ret < 0) {
-		dev_err(substream->pcm->card->dev, "invalid buffer size\n");
+		dev_err(dev, "invalid buffer size\n");
 		return ret;
 	}
 
 	channel = substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 0 : 1;
 
-	if (dma_global_data.assigned[channel]) {
-		dev_err(substream->pcm->card->dev,
-			"DMA channel already assigned\n");
+	if (dma->assigned) {
+		dev_err(dev, "dma channel already assigned\n");
 		return -EBUSY;
 	}
 
-	dma_private = dma_alloc_coherent(substream->pcm->card->dev,
-		sizeof(struct fsl_dma_private), &ld_buf_phys, GFP_KERNEL);
+	dma_private = dma_alloc_coherent(dev, sizeof(struct fsl_dma_private),
+					 &ld_buf_phys, GFP_KERNEL);
 	if (!dma_private) {
-		dev_err(substream->pcm->card->dev,
-			"can't allocate DMA private data\n");
+		dev_err(dev, "can't allocate dma private data\n");
 		return -ENOMEM;
 	}
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-		dma_private->ssi_sxx_phys = dma_global_data.ssi_stx_phys;
+		dma_private->ssi_sxx_phys = dma->ssi_stx_phys;
 	else
-		dma_private->ssi_sxx_phys = dma_global_data.ssi_srx_phys;
+		dma_private->ssi_sxx_phys = dma->ssi_srx_phys;
 
-	dma_private->dma_channel = dma_global_data.dma_channel[channel];
-	dma_private->irq = dma_global_data.irq[channel];
+	dma_private->ssi_fifo_depth = dma->ssi_fifo_depth;
+	dma_private->dma_channel = dma->channel;
+	dma_private->irq = dma->irq;
 	dma_private->substream = substream;
 	dma_private->ld_buf_phys = ld_buf_phys;
 	dma_private->dma_buf_phys = substream->dma_buffer.addr;
 
-	/* We only support one DMA controller for now */
-	dma_private->controller_id = 0;
-	dma_private->channel_id = channel;
-
 	ret = request_irq(dma_private->irq, fsl_dma_isr, 0, "DMA", dma_private);
 	if (ret) {
-		dev_err(substream->pcm->card->dev,
-			"can't register ISR for IRQ %u (ret=%i)\n",
+		dev_err(dev, "can't register ISR for IRQ %u (ret=%i)\n",
 			dma_private->irq, ret);
-		dma_free_coherent(substream->pcm->card->dev,
-			sizeof(struct fsl_dma_private),
+		dma_free_coherent(dev, sizeof(struct fsl_dma_private),
 			dma_private, dma_private->ld_buf_phys);
 		return ret;
 	}
 
-	dma_global_data.assigned[channel] = 1;
+	dma->assigned = 1;
 
 	snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
 	snd_soc_set_runtime_hwparams(substream, &fsl_dma_hardware);
@@ -546,13 +552,15 @@
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct fsl_dma_private *dma_private = runtime->private_data;
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct device *dev = rtd->platform->dev;
 
 	/* Number of bits per sample */
-	unsigned int sample_size =
+	unsigned int sample_bits =
 		snd_pcm_format_physical_width(params_format(hw_params));
 
 	/* Number of bytes per frame */
-	unsigned int frame_size = 2 * (sample_size / 8);
+	unsigned int sample_bytes = sample_bits / 8;
 
 	/* Bus address of SSI STX register */
 	dma_addr_t ssi_sxx_phys = dma_private->ssi_sxx_phys;
@@ -592,7 +600,7 @@
 	 * that offset here.  While we're at it, also tell the DMA controller
 	 * how much data to transfer per sample.
 	 */
-	switch (sample_size) {
+	switch (sample_bits) {
 	case 8:
 		mr |= CCSR_DMA_MR_DAHTS_1 | CCSR_DMA_MR_SAHTS_1;
 		ssi_sxx_phys += 3;
@@ -606,23 +614,42 @@
 		break;
 	default:
 		/* We should never get here */
-		dev_err(substream->pcm->card->dev,
-			"unsupported sample size %u\n", sample_size);
+		dev_err(dev, "unsupported sample size %u\n", sample_bits);
 		return -EINVAL;
 	}
 
 	/*
-	 * BWC should always be a multiple of the frame size.  BWC determines
-	 * how many bytes are sent/received before the DMA controller checks the
-	 * SSI to see if it needs to stop.  For playback, the transmit FIFO can
-	 * hold three frames, so we want to send two frames at a time. For
-	 * capture, the receive FIFO is triggered when it contains one frame, so
-	 * we want to receive one frame at a time.
+	 * BWC determines how many bytes are sent/received before the DMA
+	 * controller checks the SSI to see if it needs to stop. BWC should
+	 * always be a multiple of the frame size, so that we always transmit
+	 * whole frames.  Each frame occupies two slots in the FIFO.  The
+	 * parameter for CCSR_DMA_MR_BWC() is rounded down the next power of two
+	 * (MR[BWC] can only represent even powers of two).
+	 *
+	 * To simplify the process, we set BWC to the largest value that is
+	 * less than or equal to the FIFO watermark.  For playback, this ensures
+	 * that we transfer the maximum amount without overrunning the FIFO.
+	 * For capture, this ensures that we transfer the maximum amount without
+	 * underrunning the FIFO.
+	 *
+	 * f = SSI FIFO depth
+	 * w = SSI watermark value (which equals f - 2)
+	 * b = DMA bandwidth count (in bytes)
+	 * s = sample size (in bytes, which equals frame_size * 2)
+	 *
+	 * For playback, we never transmit more than the transmit FIFO
+	 * watermark, otherwise we might write more data than the FIFO can hold.
+	 * The watermark is equal to the FIFO depth minus two.
+	 *
+	 * For capture, two equations must hold:
+	 *	w > f - (b / s)
+	 *	w >= b / s
+	 *
+	 * So, b > 2 * s, but b must also be <= s * w.  To simplify, we set
+	 * b = s * w, which is equal to
+	 *      (dma_private->ssi_fifo_depth - 2) * sample_bytes.
 	 */
-	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-		mr |= CCSR_DMA_MR_BWC(2 * frame_size);
-	else
-		mr |= CCSR_DMA_MR_BWC(frame_size);
+	mr |= CCSR_DMA_MR_BWC((dma_private->ssi_fifo_depth - 2) * sample_bytes);
 
 	out_be32(&dma_channel->mr, mr);
 
@@ -631,12 +658,7 @@
 
 		link->count = cpu_to_be32(period_size);
 
-		/* Even though the DMA controller supports 36-bit addressing,
-		 * for simplicity we allow only 32-bit addresses for the audio
-		 * buffer itself.  This was enforced in fsl_dma_new() with the
-		 * DMA mask.
-		 *
-		 * The snoop bit tells the DMA controller whether it should tell
+		/* The snoop bit tells the DMA controller whether it should tell
 		 * the ECM to snoop during a read or write to an address. For
 		 * audio, we use DMA to transfer data between memory and an I/O
 		 * device (the SSI's STX0 or SRX0 register). Snooping is only
@@ -651,20 +673,24 @@
 		 * flush out the data for the previous period.  So if you
 		 * increased period_bytes_min to a large enough size, you might
 		 * get more performance by not snooping, and you'll still be
-		 * okay.
+		 * okay.  You'll need to update fsl_dma_update_pointers() also.
 		 */
 		if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
 			link->source_addr = cpu_to_be32(temp_addr);
-			link->source_attr = cpu_to_be32(CCSR_DMA_ATR_SNOOP);
+			link->source_attr = cpu_to_be32(CCSR_DMA_ATR_SNOOP |
+				upper_32_bits(temp_addr));
 
 			link->dest_addr = cpu_to_be32(ssi_sxx_phys);
-			link->dest_attr = cpu_to_be32(CCSR_DMA_ATR_NOSNOOP);
+			link->dest_attr = cpu_to_be32(CCSR_DMA_ATR_NOSNOOP |
+				upper_32_bits(ssi_sxx_phys));
 		} else {
 			link->source_addr = cpu_to_be32(ssi_sxx_phys);
-			link->source_attr = cpu_to_be32(CCSR_DMA_ATR_NOSNOOP);
+			link->source_attr = cpu_to_be32(CCSR_DMA_ATR_NOSNOOP |
+				upper_32_bits(ssi_sxx_phys));
 
 			link->dest_addr = cpu_to_be32(temp_addr);
-			link->dest_attr = cpu_to_be32(CCSR_DMA_ATR_SNOOP);
+			link->dest_attr = cpu_to_be32(CCSR_DMA_ATR_SNOOP |
+				upper_32_bits(temp_addr));
 		}
 
 		temp_addr += period_size;
@@ -689,14 +715,29 @@
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct fsl_dma_private *dma_private = runtime->private_data;
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct device *dev = rtd->platform->dev;
 	struct ccsr_dma_channel __iomem *dma_channel = dma_private->dma_channel;
 	dma_addr_t position;
 	snd_pcm_uframes_t frames;
 
-	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
+	/* Obtain the current DMA pointer, but don't read the ESAD bits if we
+	 * only have 32-bit DMA addresses.  This function is typically called
+	 * in interrupt context, so we need to optimize it.
+	 */
+	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
 		position = in_be32(&dma_channel->sar);
-	else
+#ifdef CONFIG_PHYS_64BIT
+		position |= (u64)(in_be32(&dma_channel->satr) &
+				  CCSR_DMA_ATR_ESAD_MASK) << 32;
+#endif
+	} else {
 		position = in_be32(&dma_channel->dar);
+#ifdef CONFIG_PHYS_64BIT
+		position |= (u64)(in_be32(&dma_channel->datr) &
+				  CCSR_DMA_ATR_ESAD_MASK) << 32;
+#endif
+	}
 
 	/*
 	 * When capture is started, the SSI immediately starts to fill its FIFO.
@@ -710,8 +751,7 @@
 
 	if ((position < dma_private->dma_buf_phys) ||
 	    (position > dma_private->dma_buf_end)) {
-		dev_err(substream->pcm->card->dev,
-			"dma pointer is out of range, halting stream\n");
+		dev_err(dev, "dma pointer is out of range, halting stream\n");
 		return SNDRV_PCM_POS_XRUN;
 	}
 
@@ -772,26 +812,28 @@
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct fsl_dma_private *dma_private = runtime->private_data;
-	int dir = substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 0 : 1;
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct device *dev = rtd->platform->dev;
+	struct dma_object *dma =
+		container_of(rtd->platform->driver, struct dma_object, dai);
 
 	if (dma_private) {
 		if (dma_private->irq)
 			free_irq(dma_private->irq, dma_private);
 
 		if (dma_private->ld_buf_phys) {
-			dma_unmap_single(substream->pcm->card->dev,
-				dma_private->ld_buf_phys,
-				sizeof(dma_private->link), DMA_TO_DEVICE);
+			dma_unmap_single(dev, dma_private->ld_buf_phys,
+					 sizeof(dma_private->link),
+					 DMA_TO_DEVICE);
 		}
 
 		/* Deallocate the fsl_dma_private structure */
-		dma_free_coherent(substream->pcm->card->dev,
-			sizeof(struct fsl_dma_private),
-			dma_private, dma_private->ld_buf_phys);
+		dma_free_coherent(dev, sizeof(struct fsl_dma_private),
+				  dma_private, dma_private->ld_buf_phys);
 		substream->runtime->private_data = NULL;
 	}
 
-	dma_global_data.assigned[dir] = 0;
+	dma->assigned = 0;
 
 	return 0;
 }
@@ -814,6 +856,37 @@
 	}
 }
 
+/**
+ * find_ssi_node -- returns the SSI node that points to his DMA channel node
+ *
+ * Although this DMA driver attempts to operate independently of the other
+ * devices, it still needs to determine some information about the SSI device
+ * that it's working with.  Unfortunately, the device tree does not contain
+ * a pointer from the DMA channel node to the SSI node -- the pointer goes the
+ * other way.  So we need to scan the device tree for SSI nodes until we find
+ * the one that points to the given DMA channel node.  It's ugly, but at least
+ * it's contained in this one function.
+ */
+static struct device_node *find_ssi_node(struct device_node *dma_channel_np)
+{
+	struct device_node *ssi_np, *np;
+
+	for_each_compatible_node(ssi_np, NULL, "fsl,mpc8610-ssi") {
+		/* Check each DMA phandle to see if it points to us.  We
+		 * assume that device_node pointers are a valid comparison.
+		 */
+		np = of_parse_phandle(ssi_np, "fsl,playback-dma", 0);
+		if (np == dma_channel_np)
+			return ssi_np;
+
+		np = of_parse_phandle(ssi_np, "fsl,capture-dma", 0);
+		if (np == dma_channel_np)
+			return ssi_np;
+	}
+
+	return NULL;
+}
+
 static struct snd_pcm_ops fsl_dma_ops = {
 	.open   	= fsl_dma_open,
 	.close  	= fsl_dma_close,
@@ -823,59 +896,114 @@
 	.pointer	= fsl_dma_pointer,
 };
 
-struct snd_soc_platform fsl_soc_platform = {
-	.name   	= "fsl-dma",
-	.pcm_ops	= &fsl_dma_ops,
-	.pcm_new	= fsl_dma_new,
-	.pcm_free       = fsl_dma_free_dma_buffers,
+static int __devinit fsl_soc_dma_probe(struct platform_device *pdev,
+				       const struct of_device_id *match)
+ {
+	struct dma_object *dma;
+	struct device_node *np = pdev->dev.of_node;
+	struct device_node *ssi_np;
+	struct resource res;
+	const uint32_t *iprop;
+	int ret;
+
+	/* Find the SSI node that points to us. */
+	ssi_np = find_ssi_node(np);
+	if (!ssi_np) {
+		dev_err(&pdev->dev, "cannot find parent SSI node\n");
+		return -ENODEV;
+	}
+
+	ret = of_address_to_resource(ssi_np, 0, &res);
+	if (ret) {
+		dev_err(&pdev->dev, "could not determine resources for %s\n",
+			ssi_np->full_name);
+		of_node_put(ssi_np);
+		return ret;
+	}
+
+	dma = kzalloc(sizeof(*dma) + strlen(np->full_name), GFP_KERNEL);
+	if (!dma) {
+		dev_err(&pdev->dev, "could not allocate dma object\n");
+		of_node_put(ssi_np);
+		return -ENOMEM;
+	}
+
+	strcpy(dma->path, np->full_name);
+	dma->dai.ops = &fsl_dma_ops;
+	dma->dai.pcm_new = fsl_dma_new;
+	dma->dai.pcm_free = fsl_dma_free_dma_buffers;
+
+	/* Store the SSI-specific information that we need */
+	dma->ssi_stx_phys = res.start + offsetof(struct ccsr_ssi, stx0);
+	dma->ssi_srx_phys = res.start + offsetof(struct ccsr_ssi, srx0);
+
+	iprop = of_get_property(ssi_np, "fsl,fifo-depth", NULL);
+	if (iprop)
+		dma->ssi_fifo_depth = *iprop;
+	else
+                /* Older 8610 DTs didn't have the fifo-depth property */
+		dma->ssi_fifo_depth = 8;
+
+	of_node_put(ssi_np);
+
+	ret = snd_soc_register_platform(&pdev->dev, &dma->dai);
+	if (ret) {
+		dev_err(&pdev->dev, "could not register platform\n");
+		kfree(dma);
+		return ret;
+	}
+
+	dma->channel = of_iomap(np, 0);
+	dma->irq = irq_of_parse_and_map(np, 0);
+
+	dev_set_drvdata(&pdev->dev, dma);
+
+	return 0;
+}
+
+static int __devexit fsl_soc_dma_remove(struct platform_device *pdev)
+{
+	struct dma_object *dma = dev_get_drvdata(&pdev->dev);
+
+	snd_soc_unregister_platform(&pdev->dev);
+	iounmap(dma->channel);
+	irq_dispose_mapping(dma->irq);
+	kfree(dma);
+
+	return 0;
+}
+
+static const struct of_device_id fsl_soc_dma_ids[] = {
+	{ .compatible = "fsl,ssi-dma-channel", },
+	{}
 };
-EXPORT_SYMBOL_GPL(fsl_soc_platform);
+MODULE_DEVICE_TABLE(of, fsl_soc_dma_ids);
 
-/**
- * fsl_dma_configure: store the DMA parameters from the fabric driver.
- *
- * This function is called by the ASoC fabric driver to give us the DMA and
- * SSI channel information.
- *
- * Unfortunately, ASoC V1 does make it possible to determine the DMA/SSI
- * data when a substream is created, so for now we need to store this data
- * into a global variable.  This means that we can only support one DMA
- * controller, and hence only one SSI.
- */
-int fsl_dma_configure(struct fsl_dma_info *dma_info)
+static struct of_platform_driver fsl_soc_dma_driver = {
+	.driver = {
+		.name = "fsl-pcm-audio",
+		.owner = THIS_MODULE,
+		.of_match_table = fsl_soc_dma_ids,
+	},
+	.probe = fsl_soc_dma_probe,
+	.remove = __devexit_p(fsl_soc_dma_remove),
+};
+
+static int __init fsl_soc_dma_init(void)
 {
-	static int initialized;
+	pr_info("Freescale Elo DMA ASoC PCM Driver\n");
 
-	/* We only support one DMA controller for now */
-	if (initialized)
-		return 0;
-
-	dma_global_data.ssi_stx_phys = dma_info->ssi_stx_phys;
-	dma_global_data.ssi_srx_phys = dma_info->ssi_srx_phys;
-	dma_global_data.dma_channel[0] = dma_info->dma_channel[0];
-	dma_global_data.dma_channel[1] = dma_info->dma_channel[1];
-	dma_global_data.irq[0] = dma_info->dma_irq[0];
-	dma_global_data.irq[1] = dma_info->dma_irq[1];
-	dma_global_data.assigned[0] = 0;
-	dma_global_data.assigned[1] = 0;
-
-	initialized = 1;
-	return 1;
+	return of_register_platform_driver(&fsl_soc_dma_driver);
 }
-EXPORT_SYMBOL_GPL(fsl_dma_configure);
 
-static int __init fsl_soc_platform_init(void)
+static void __exit fsl_soc_dma_exit(void)
 {
-	return snd_soc_register_platform(&fsl_soc_platform);
+	of_unregister_platform_driver(&fsl_soc_dma_driver);
 }
-module_init(fsl_soc_platform_init);
 
-static void __exit fsl_soc_platform_exit(void)
-{
-	snd_soc_unregister_platform(&fsl_soc_platform);
-}
-module_exit(fsl_soc_platform_exit);
+module_init(fsl_soc_dma_init);
+module_exit(fsl_soc_dma_exit);
 
 MODULE_AUTHOR("Timur Tabi <timur@freescale.com>");
-MODULE_DESCRIPTION("Freescale Elo DMA ASoC PCM module");
-MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Freescale Elo DMA ASoC PCM Driver");
+MODULE_LICENSE("GPL v2");
diff --git a/sound/soc/fsl/fsl_dma.h b/sound/soc/fsl/fsl_dma.h
index 385d4a4..78fee97 100644
--- a/sound/soc/fsl/fsl_dma.h
+++ b/sound/soc/fsl/fsl_dma.h
@@ -126,24 +126,4 @@
 	u8 res[4];      /* Reserved */
 } __attribute__ ((aligned(32), packed));
 
-/* DMA information needed to create a snd_soc_dai object
- *
- * ssi_stx_phys: bus address of SSI STX register to use
- * ssi_srx_phys: bus address of SSI SRX register to use
- * dma[0]: points to the DMA channel to use for playback
- * dma[1]: points to the DMA channel to use for capture
- * dma_irq[0]: IRQ of the DMA channel to use for playback
- * dma_irq[1]: IRQ of the DMA channel to use for capture
- */
-struct fsl_dma_info {
-	dma_addr_t ssi_stx_phys;
-	dma_addr_t ssi_srx_phys;
-	struct ccsr_dma_channel __iomem *dma_channel[2];
-	unsigned int dma_irq[2];
-};
-
-extern struct snd_soc_platform fsl_soc_platform;
-
-int fsl_dma_configure(struct fsl_dma_info *dma_info);
-
 #endif
diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c
index 762c1b8..4cc167a 100644
--- a/sound/soc/fsl/fsl_ssi.c
+++ b/sound/soc/fsl/fsl_ssi.c
@@ -3,10 +3,11 @@
  *
  * Author: Timur Tabi <timur@freescale.com>
  *
- * Copyright 2007-2008 Freescale Semiconductor, Inc.  This file is licensed
- * under the terms of the GNU General Public License version 2.  This
- * program is licensed "as is" without any warranty of any kind, whether
- * express or implied.
+ * Copyright 2007-2010 Freescale Semiconductor, Inc.
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2.  This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
  */
 
 #include <linux/init.h>
@@ -15,6 +16,7 @@
 #include <linux/device.h>
 #include <linux/delay.h>
 #include <linux/slab.h>
+#include <linux/of_platform.h>
 
 #include <sound/core.h>
 #include <sound/pcm.h>
@@ -22,8 +24,6 @@
 #include <sound/initval.h>
 #include <sound/soc.h>
 
-#include <asm/immap_86xx.h>
-
 #include "fsl_ssi.h"
 
 /**
@@ -71,33 +71,32 @@
 /**
  * fsl_ssi_private: per-SSI private data
  *
- * @name: short name for this device ("SSI0", "SSI1", etc)
  * @ssi: pointer to the SSI's registers
  * @ssi_phys: physical address of the SSI registers
  * @irq: IRQ of this SSI
  * @first_stream: pointer to the stream that was opened first
  * @second_stream: pointer to second stream
- * @dev: struct device pointer
  * @playback: the number of playback streams opened
  * @capture: the number of capture streams opened
  * @asynchronous: 0=synchronous mode, 1=asynchronous mode
  * @cpu_dai: the CPU DAI for this device
  * @dev_attr: the sysfs device attribute structure
  * @stats: SSI statistics
+ * @name: name for this device
  */
 struct fsl_ssi_private {
-	char name[8];
 	struct ccsr_ssi __iomem *ssi;
 	dma_addr_t ssi_phys;
 	unsigned int irq;
 	struct snd_pcm_substream *first_stream;
 	struct snd_pcm_substream *second_stream;
-	struct device *dev;
 	unsigned int playback;
 	unsigned int capture;
 	int asynchronous;
-	struct snd_soc_dai cpu_dai;
+	unsigned int fifo_depth;
+	struct snd_soc_dai_driver cpu_dai_drv;
 	struct device_attribute dev_attr;
+	struct platform_device *pdev;
 
 	struct {
 		unsigned int rfrc;
@@ -122,6 +121,8 @@
 		unsigned int tfe1;
 		unsigned int tfe0;
 	} stats;
+
+	char name[1];
 };
 
 /**
@@ -280,7 +281,7 @@
 			   struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct fsl_ssi_private *ssi_private = rtd->dai->cpu_dai->private_data;
+	struct fsl_ssi_private *ssi_private = snd_soc_dai_get_drvdata(rtd->cpu_dai);
 
 	/*
 	 * If this is the first stream opened, then request the IRQ
@@ -290,6 +291,7 @@
 		struct ccsr_ssi __iomem *ssi = ssi_private->ssi;
 		int ret;
 
+		/* The 'name' should not have any slashes in it. */
 		ret = request_irq(ssi_private->irq, fsl_ssi_isr, 0,
 				  ssi_private->name, ssi_private);
 		if (ret < 0) {
@@ -336,11 +338,20 @@
 
 		/*
 		 * Set the watermark for transmit FIFI 0 and receive FIFO 0. We
-		 * don't use FIFO 1.  Since the SSI only supports stereo, the
-		 * watermark should never be an odd number.
+		 * don't use FIFO 1.  We program the transmit water to signal a
+		 * DMA transfer if there are only two (or fewer) elements left
+		 * in the FIFO.  Two elements equals one frame (left channel,
+		 * right channel).  This value, however, depends on the depth of
+		 * the transmit buffer.
+		 *
+		 * We program the receive FIFO to notify us if at least two
+		 * elements (one frame) have been written to the FIFO.  We could
+		 * make this value larger (and maybe we should), but this way
+		 * data will be written to memory as soon as it's available.
 		 */
 		out_be32(&ssi->sfcsr,
-			 CCSR_SSI_SFCSR_TFWM0(6) | CCSR_SSI_SFCSR_RFWM0(2));
+			CCSR_SSI_SFCSR_TFWM0(ssi_private->fifo_depth - 2) |
+			CCSR_SSI_SFCSR_RFWM0(ssi_private->fifo_depth - 2));
 
 		/*
 		 * We keep the SSI disabled because if we enable it, then the
@@ -422,7 +433,7 @@
 static int fsl_ssi_hw_params(struct snd_pcm_substream *substream,
 	struct snd_pcm_hw_params *hw_params, struct snd_soc_dai *cpu_dai)
 {
-	struct fsl_ssi_private *ssi_private = cpu_dai->private_data;
+	struct fsl_ssi_private *ssi_private = snd_soc_dai_get_drvdata(cpu_dai);
 
 	if (substream == ssi_private->first_stream) {
 		struct ccsr_ssi __iomem *ssi = ssi_private->ssi;
@@ -458,7 +469,7 @@
 			   struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct fsl_ssi_private *ssi_private = rtd->dai->cpu_dai->private_data;
+	struct fsl_ssi_private *ssi_private = snd_soc_dai_get_drvdata(rtd->cpu_dai);
 	struct ccsr_ssi __iomem *ssi = ssi_private->ssi;
 
 	switch (cmd) {
@@ -497,7 +508,7 @@
 			     struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct fsl_ssi_private *ssi_private = rtd->dai->cpu_dai->private_data;
+	struct fsl_ssi_private *ssi_private = snd_soc_dai_get_drvdata(rtd->cpu_dai);
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
 		ssi_private->playback--;
@@ -523,56 +534,15 @@
 	}
 }
 
-/**
- * fsl_ssi_set_sysclk: set the clock frequency and direction
- *
- * This function is called by the machine driver to tell us what the clock
- * frequency and direction are.
- *
- * Currently, we only support operating as a clock slave (SND_SOC_CLOCK_IN),
- * and we don't care about the frequency.  Return an error if the direction
- * is not SND_SOC_CLOCK_IN.
- *
- * @clk_id: reserved, should be zero
- * @freq: the frequency of the given clock ID, currently ignored
- * @dir: SND_SOC_CLOCK_IN (clock slave) or SND_SOC_CLOCK_OUT (clock master)
- */
-static int fsl_ssi_set_sysclk(struct snd_soc_dai *cpu_dai,
-			      int clk_id, unsigned int freq, int dir)
-{
-
-	return (dir == SND_SOC_CLOCK_IN) ? 0 : -EINVAL;
-}
-
-/**
- * fsl_ssi_set_fmt: set the serial format.
- *
- * This function is called by the machine driver to tell us what serial
- * format to use.
- *
- * Currently, we only support I2S mode.  Return an error if the format is
- * not SND_SOC_DAIFMT_I2S.
- *
- * @format: one of SND_SOC_DAIFMT_xxx
- */
-static int fsl_ssi_set_fmt(struct snd_soc_dai *cpu_dai, unsigned int format)
-{
-	return (format == SND_SOC_DAIFMT_I2S) ? 0 : -EINVAL;
-}
-
-/**
- * fsl_ssi_dai_template: template CPU DAI for the SSI
- */
 static struct snd_soc_dai_ops fsl_ssi_dai_ops = {
 	.startup	= fsl_ssi_startup,
 	.hw_params	= fsl_ssi_hw_params,
 	.shutdown	= fsl_ssi_shutdown,
 	.trigger	= fsl_ssi_trigger,
-	.set_sysclk	= fsl_ssi_set_sysclk,
-	.set_fmt	= fsl_ssi_set_fmt,
 };
 
-static struct snd_soc_dai fsl_ssi_dai_template = {
+/* Template for the CPU dai driver structure */
+static struct snd_soc_dai_driver fsl_ssi_dai_template = {
 	.playback = {
 		/* The SSI does not support monaural audio. */
 		.channels_min = 2,
@@ -640,95 +610,195 @@
 }
 
 /**
- * fsl_ssi_create_dai: create a snd_soc_dai structure
- *
- * This function is called by the machine driver to create a snd_soc_dai
- * structure.  The function creates an ssi_private object, which contains
- * the snd_soc_dai.  It also creates the sysfs statistics device.
+ * Make every character in a string lower-case
  */
-struct snd_soc_dai *fsl_ssi_create_dai(struct fsl_ssi_info *ssi_info)
+static void make_lowercase(char *s)
 {
-	struct snd_soc_dai *fsl_ssi_dai;
+	char *p = s;
+	char c;
+
+	while ((c = *p)) {
+		if ((c >= 'A') && (c <= 'Z'))
+			*p = c + ('a' - 'A');
+		p++;
+	}
+}
+
+static int __devinit fsl_ssi_probe(struct platform_device *pdev,
+				   const struct of_device_id *match)
+{
 	struct fsl_ssi_private *ssi_private;
 	int ret = 0;
-	struct device_attribute *dev_attr;
+	struct device_attribute *dev_attr = NULL;
+	struct device_node *np = pdev->dev.of_node;
+	const char *p, *sprop;
+	const uint32_t *iprop;
+	struct resource res;
+	char name[64];
 
-	ssi_private = kzalloc(sizeof(struct fsl_ssi_private), GFP_KERNEL);
-	if (!ssi_private) {
-		dev_err(ssi_info->dev, "could not allocate DAI object\n");
-		return NULL;
+	/* SSIs that are not connected on the board should have a
+	 *      status = "disabled"
+	 * property in their device tree nodes.
+	 */
+	if (!of_device_is_available(np))
+		return -ENODEV;
+
+	/* Check for a codec-handle property. */
+	if (!of_get_property(np, "codec-handle", NULL)) {
+		dev_err(&pdev->dev, "missing codec-handle property\n");
+		return -ENODEV;
 	}
-	memcpy(&ssi_private->cpu_dai, &fsl_ssi_dai_template,
-	       sizeof(struct snd_soc_dai));
 
-	fsl_ssi_dai = &ssi_private->cpu_dai;
-	dev_attr = &ssi_private->dev_attr;
+	/* We only support the SSI in "I2S Slave" mode */
+	sprop = of_get_property(np, "fsl,mode", NULL);
+	if (!sprop || strcmp(sprop, "i2s-slave")) {
+		dev_notice(&pdev->dev, "mode %s is unsupported\n", sprop);
+		return -ENODEV;
+	}
 
-	sprintf(ssi_private->name, "ssi%u", (u8) ssi_info->id);
-	ssi_private->ssi = ssi_info->ssi;
-	ssi_private->ssi_phys = ssi_info->ssi_phys;
-	ssi_private->irq = ssi_info->irq;
-	ssi_private->dev = ssi_info->dev;
-	ssi_private->asynchronous = ssi_info->asynchronous;
+	/* The DAI name is the last part of the full name of the node. */
+	p = strrchr(np->full_name, '/') + 1;
+	ssi_private = kzalloc(sizeof(struct fsl_ssi_private) + strlen(p),
+			      GFP_KERNEL);
+	if (!ssi_private) {
+		dev_err(&pdev->dev, "could not allocate DAI object\n");
+		return -ENOMEM;
+	}
 
-	dev_set_drvdata(ssi_private->dev, fsl_ssi_dai);
+	strcpy(ssi_private->name, p);
+
+	/* Initialize this copy of the CPU DAI driver structure */
+	memcpy(&ssi_private->cpu_dai_drv, &fsl_ssi_dai_template,
+	       sizeof(fsl_ssi_dai_template));
+	ssi_private->cpu_dai_drv.name = ssi_private->name;
+
+	/* Get the addresses and IRQ */
+	ret = of_address_to_resource(np, 0, &res);
+	if (ret) {
+		dev_err(&pdev->dev, "could not determine device resources\n");
+		kfree(ssi_private);
+		return ret;
+	}
+	ssi_private->ssi = ioremap(res.start, 1 + res.end - res.start);
+	ssi_private->ssi_phys = res.start;
+	ssi_private->irq = irq_of_parse_and_map(np, 0);
+
+	/* Are the RX and the TX clocks locked? */
+	if (of_find_property(np, "fsl,ssi-asynchronous", NULL))
+		ssi_private->asynchronous = 1;
+	else
+		ssi_private->cpu_dai_drv.symmetric_rates = 1;
+
+	/* Determine the FIFO depth. */
+	iprop = of_get_property(np, "fsl,fifo-depth", NULL);
+	if (iprop)
+		ssi_private->fifo_depth = *iprop;
+	else
+                /* Older 8610 DTs didn't have the fifo-depth property */
+		ssi_private->fifo_depth = 8;
 
 	/* Initialize the the device_attribute structure */
-	dev_attr->attr.name = "ssi-stats";
+	dev_attr = &ssi_private->dev_attr;
+	dev_attr->attr.name = "statistics";
 	dev_attr->attr.mode = S_IRUGO;
 	dev_attr->show = fsl_sysfs_ssi_show;
 
-	ret = device_create_file(ssi_private->dev, dev_attr);
+	ret = device_create_file(&pdev->dev, dev_attr);
 	if (ret) {
-		dev_err(ssi_info->dev, "could not create sysfs %s file\n",
+		dev_err(&pdev->dev, "could not create sysfs %s file\n",
 			ssi_private->dev_attr.attr.name);
-		kfree(fsl_ssi_dai);
-		return NULL;
+		goto error;
 	}
 
-	fsl_ssi_dai->private_data = ssi_private;
-	fsl_ssi_dai->name = ssi_private->name;
-	fsl_ssi_dai->id = ssi_info->id;
-	fsl_ssi_dai->dev = ssi_info->dev;
-	fsl_ssi_dai->symmetric_rates = 1;
+	/* Register with ASoC */
+	dev_set_drvdata(&pdev->dev, ssi_private);
 
-	ret = snd_soc_register_dai(fsl_ssi_dai);
-	if (ret != 0) {
-		dev_err(ssi_info->dev, "failed to register DAI: %d\n", ret);
-		kfree(fsl_ssi_dai);
-		return NULL;
+	ret = snd_soc_register_dai(&pdev->dev, &ssi_private->cpu_dai_drv);
+	if (ret) {
+		dev_err(&pdev->dev, "failed to register DAI: %d\n", ret);
+		goto error;
 	}
 
-	return fsl_ssi_dai;
+	/* Trigger the machine driver's probe function.  The platform driver
+	 * name of the machine driver is taken from the /model property of the
+	 * device tree.  We also pass the address of the CPU DAI driver
+	 * structure.
+	 */
+	sprop = of_get_property(of_find_node_by_path("/"), "model", NULL);
+	/* Sometimes the model name has a "fsl," prefix, so we strip that. */
+	p = strrchr(sprop, ',');
+	if (p)
+		sprop = p + 1;
+	snprintf(name, sizeof(name), "snd-soc-%s", sprop);
+	make_lowercase(name);
+
+	ssi_private->pdev =
+		platform_device_register_data(&pdev->dev, name, 0, NULL, 0);
+	if (IS_ERR(ssi_private->pdev)) {
+		ret = PTR_ERR(ssi_private->pdev);
+		dev_err(&pdev->dev, "failed to register platform: %d\n", ret);
+		goto error;
+	}
+
+	return 0;
+
+error:
+	snd_soc_unregister_dai(&pdev->dev);
+	dev_set_drvdata(&pdev->dev, NULL);
+	if (dev_attr)
+		device_remove_file(&pdev->dev, dev_attr);
+	irq_dispose_mapping(ssi_private->irq);
+	iounmap(ssi_private->ssi);
+	kfree(ssi_private);
+
+	return ret;
 }
-EXPORT_SYMBOL_GPL(fsl_ssi_create_dai);
 
-/**
- * fsl_ssi_destroy_dai: destroy the snd_soc_dai object
- *
- * This function undoes the operations of fsl_ssi_create_dai()
- */
-void fsl_ssi_destroy_dai(struct snd_soc_dai *fsl_ssi_dai)
+static int fsl_ssi_remove(struct platform_device *pdev)
 {
-	struct fsl_ssi_private *ssi_private =
-	container_of(fsl_ssi_dai, struct fsl_ssi_private, cpu_dai);
+	struct fsl_ssi_private *ssi_private = dev_get_drvdata(&pdev->dev);
 
-	device_remove_file(ssi_private->dev, &ssi_private->dev_attr);
-
-	snd_soc_unregister_dai(&ssi_private->cpu_dai);
+	platform_device_unregister(ssi_private->pdev);
+	snd_soc_unregister_dai(&pdev->dev);
+	device_remove_file(&pdev->dev, &ssi_private->dev_attr);
 
 	kfree(ssi_private);
+	dev_set_drvdata(&pdev->dev, NULL);
+
+	return 0;
 }
-EXPORT_SYMBOL_GPL(fsl_ssi_destroy_dai);
+
+static const struct of_device_id fsl_ssi_ids[] = {
+	{ .compatible = "fsl,mpc8610-ssi", },
+	{}
+};
+MODULE_DEVICE_TABLE(of, fsl_ssi_ids);
+
+static struct of_platform_driver fsl_ssi_driver = {
+	.driver = {
+		.name = "fsl-ssi-dai",
+		.owner = THIS_MODULE,
+		.of_match_table = fsl_ssi_ids,
+	},
+	.probe = fsl_ssi_probe,
+	.remove = fsl_ssi_remove,
+};
 
 static int __init fsl_ssi_init(void)
 {
 	printk(KERN_INFO "Freescale Synchronous Serial Interface (SSI) ASoC Driver\n");
 
-	return 0;
+	return of_register_platform_driver(&fsl_ssi_driver);
 }
+
+static void __exit fsl_ssi_exit(void)
+{
+	of_unregister_platform_driver(&fsl_ssi_driver);
+}
+
 module_init(fsl_ssi_init);
+module_exit(fsl_ssi_exit);
 
 MODULE_AUTHOR("Timur Tabi <timur@freescale.com>");
 MODULE_DESCRIPTION("Freescale Synchronous Serial Interface (SSI) ASoC Driver");
-MODULE_LICENSE("GPL");
+MODULE_LICENSE("GPL v2");
diff --git a/sound/soc/fsl/fsl_ssi.h b/sound/soc/fsl/fsl_ssi.h
index eade01f..2173000 100644
--- a/sound/soc/fsl/fsl_ssi.h
+++ b/sound/soc/fsl/fsl_ssi.h
@@ -196,31 +196,5 @@
 #define CCSR_SSI_SOR_WAIT(x) (((x) & 3) << CCSR_SSI_SOR_WAIT_SHIFT)
 #define CCSR_SSI_SOR_SYNRST 		0x00000001
 
-/* Instantiation data for an SSI interface
- *
- * This structure contains all the information that the the SSI driver needs
- * to instantiate an SSI interface with ALSA.  The machine driver should
- * create this structure, fill it in, call fsl_ssi_create_dai(), and then
- * delete the structure.
- *
- * id: which SSI this is (0, 1, etc. )
- * ssi: pointer to the SSI's registers
- * ssi_phys: physical address of the SSI registers
- * irq: IRQ of this SSI
- * dev: struct device, used to create the sysfs statistics file
- * asynchronous: 0=synchronous mode, 1=asynchronous mode
-*/
-struct fsl_ssi_info {
-	unsigned int id;
-	struct ccsr_ssi __iomem *ssi;
-	dma_addr_t ssi_phys;
-	unsigned int irq;
-	struct device *dev;
-	int asynchronous;
-};
-
-struct snd_soc_dai *fsl_ssi_create_dai(struct fsl_ssi_info *ssi_info);
-void fsl_ssi_destroy_dai(struct snd_soc_dai *fsl_ssi_dai);
-
 #endif
 
diff --git a/sound/soc/fsl/mpc5200_dma.c b/sound/soc/fsl/mpc5200_dma.c
index 3dcd146..dce6b55 100644
--- a/sound/soc/fsl/mpc5200_dma.c
+++ b/sound/soc/fsl/mpc5200_dma.c
@@ -9,6 +9,8 @@
 #include <linux/module.h>
 #include <linux/of_device.h>
 #include <linux/slab.h>
+#include <linux/of_device.h>
+#include <linux/of_platform.h>
 
 #include <sound/soc.h>
 
@@ -107,7 +109,7 @@
 static int psc_dma_trigger(struct snd_pcm_substream *substream, int cmd)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct psc_dma *psc_dma = rtd->dai->cpu_dai->private_data;
+	struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(rtd->cpu_dai);
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct psc_dma_stream *s = to_psc_dma_stream(substream, psc_dma);
 	struct mpc52xx_psc __iomem *regs = psc_dma->psc_regs;
@@ -212,7 +214,7 @@
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct psc_dma *psc_dma = rtd->dai->cpu_dai->private_data;
+	struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(rtd->cpu_dai);
 	struct psc_dma_stream *s;
 	int rc;
 
@@ -239,7 +241,7 @@
 static int psc_dma_close(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct psc_dma *psc_dma = rtd->dai->cpu_dai->private_data;
+	struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(rtd->cpu_dai);
 	struct psc_dma_stream *s;
 
 	dev_dbg(psc_dma->dev, "psc_dma_close(substream=%p)\n", substream);
@@ -264,7 +266,7 @@
 psc_dma_pointer(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct psc_dma *psc_dma = rtd->dai->cpu_dai->private_data;
+	struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(rtd->cpu_dai);
 	struct psc_dma_stream *s;
 	dma_addr_t count;
 
@@ -302,11 +304,11 @@
 			   struct snd_pcm *pcm)
 {
 	struct snd_soc_pcm_runtime *rtd = pcm->private_data;
-	struct psc_dma *psc_dma = rtd->dai->cpu_dai->private_data;
+	struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(rtd->cpu_dai);
 	size_t size = psc_dma_hardware.buffer_bytes_max;
 	int rc = 0;
 
-	dev_dbg(rtd->socdev->dev, "psc_dma_new(card=%p, dai=%p, pcm=%p)\n",
+	dev_dbg(rtd->platform->dev, "psc_dma_new(card=%p, dai=%p, pcm=%p)\n",
 		card, dai, pcm);
 
 	if (!card->dev->dma_mask)
@@ -328,8 +330,8 @@
 			goto capture_alloc_err;
 	}
 
-	if (rtd->socdev->card->codec->ac97)
-		rtd->socdev->card->codec->ac97->private_data = psc_dma;
+	if (rtd->codec->ac97)
+		rtd->codec->ac97->private_data = psc_dma;
 
 	return 0;
 
@@ -349,7 +351,7 @@
 	struct snd_pcm_substream *substream;
 	int stream;
 
-	dev_dbg(rtd->socdev->dev, "psc_dma_free(pcm=%p)\n", pcm);
+	dev_dbg(rtd->platform->dev, "psc_dma_free(pcm=%p)\n", pcm);
 
 	for (stream = 0; stream < 2; stream++) {
 		substream = pcm->streams[stream].substream;
@@ -361,15 +363,14 @@
 	}
 }
 
-struct snd_soc_platform mpc5200_audio_dma_platform = {
-	.name		= "mpc5200-psc-audio",
-	.pcm_ops	= &psc_dma_ops,
+static struct snd_soc_platform_driver mpc5200_audio_dma_platform = {
+	.ops		= &psc_dma_ops,
 	.pcm_new	= &psc_dma_new,
 	.pcm_free	= &psc_dma_free,
 };
-EXPORT_SYMBOL_GPL(mpc5200_audio_dma_platform);
 
-int mpc5200_audio_dma_create(struct platform_device *op)
+static int mpc5200_hpcd_probe(struct of_device *op,
+		const struct of_device_id *match)
 {
 	phys_addr_t fifo;
 	struct psc_dma *psc_dma;
@@ -475,7 +476,7 @@
 	dev_set_drvdata(&op->dev, psc_dma);
 
 	/* Tell the ASoC OF helpers about it */
-	return snd_soc_register_platform(&mpc5200_audio_dma_platform);
+	return snd_soc_register_platform(&op->dev, &mpc5200_audio_dma_platform);
 out_irq:
 	free_irq(psc_dma->irq, psc_dma);
 	free_irq(psc_dma->capture.irq, &psc_dma->capture);
@@ -486,15 +487,14 @@
 	iounmap(regs);
 	return ret;
 }
-EXPORT_SYMBOL_GPL(mpc5200_audio_dma_create);
 
-int mpc5200_audio_dma_destroy(struct platform_device *op)
+static int mpc5200_hpcd_remove(struct of_device *op)
 {
 	struct psc_dma *psc_dma = dev_get_drvdata(&op->dev);
 
 	dev_dbg(&op->dev, "mpc5200_audio_dma_destroy()\n");
 
-	snd_soc_unregister_platform(&mpc5200_audio_dma_platform);
+	snd_soc_unregister_platform(&op->dev);
 
 	bcom_gen_bd_rx_release(psc_dma->capture.bcom_task);
 	bcom_gen_bd_tx_release(psc_dma->playback.bcom_task);
@@ -510,7 +510,35 @@
 
 	return 0;
 }
-EXPORT_SYMBOL_GPL(mpc5200_audio_dma_destroy);
+
+static struct of_device_id mpc5200_hpcd_match[] = {
+	{
+		.compatible = "fsl,mpc5200-pcm",
+	},
+	{}
+};
+MODULE_DEVICE_TABLE(of, mpc5200_hpcd_match);
+
+static struct of_platform_driver mpc5200_hpcd_of_driver = {
+	.owner		= THIS_MODULE,
+	.name		= "mpc5200-pcm-audio",
+	.match_table    = mpc5200_hpcd_match,
+	.probe		= mpc5200_hpcd_probe,
+	.remove		= mpc5200_hpcd_remove,
+};
+
+static int __init mpc5200_hpcd_init(void)
+{
+	return of_register_platform_driver(&mpc5200_hpcd_of_driver);
+}
+
+static void __exit mpc5200_hpcd_exit(void)
+{
+	of_unregister_platform_driver(&mpc5200_hpcd_of_driver);
+}
+
+module_init(mpc5200_hpcd_init);
+module_exit(mpc5200_hpcd_exit);
 
 MODULE_AUTHOR("Grant Likely <grant.likely@secretlab.ca>");
 MODULE_DESCRIPTION("Freescale MPC5200 PSC in DMA mode ASoC Driver");
diff --git a/sound/soc/fsl/mpc5200_dma.h b/sound/soc/fsl/mpc5200_dma.h
index ca99586..a3c0cd5 100644
--- a/sound/soc/fsl/mpc5200_dma.h
+++ b/sound/soc/fsl/mpc5200_dma.h
@@ -81,9 +81,4 @@
 	return &psc_dma->playback;
 }
 
-int mpc5200_audio_dma_create(struct platform_device *op);
-int mpc5200_audio_dma_destroy(struct platform_device *op);
-
-extern struct snd_soc_platform mpc5200_audio_dma_platform;
-
 #endif /* __SOUND_SOC_FSL_MPC5200_DMA_H__ */
diff --git a/sound/soc/fsl/mpc5200_psc_ac97.c b/sound/soc/fsl/mpc5200_psc_ac97.c
index a956023..40acc8e 100644
--- a/sound/soc/fsl/mpc5200_psc_ac97.c
+++ b/sound/soc/fsl/mpc5200_psc_ac97.c
@@ -143,7 +143,7 @@
 				 struct snd_pcm_hw_params *params,
 				 struct snd_soc_dai *cpu_dai)
 {
-	struct psc_dma *psc_dma = cpu_dai->private_data;
+	struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(cpu_dai);
 	struct psc_dma_stream *s = to_psc_dma_stream(substream, psc_dma);
 
 	dev_dbg(psc_dma->dev, "%s(substream=%p) p_size=%i p_bytes=%i"
@@ -166,7 +166,7 @@
 				 struct snd_pcm_hw_params *params,
 				 struct snd_soc_dai *cpu_dai)
 {
-	struct psc_dma *psc_dma = cpu_dai->private_data;
+	struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(cpu_dai);
 
 	dev_dbg(psc_dma->dev, "%s(substream=%p)\n", __func__, substream);
 
@@ -181,8 +181,7 @@
 static int psc_ac97_trigger(struct snd_pcm_substream *substream, int cmd,
 							struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct psc_dma *psc_dma = rtd->dai->cpu_dai->private_data;
+	struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(dai);
 	struct psc_dma_stream *s = to_psc_dma_stream(substream, psc_dma);
 
 	switch (cmd) {
@@ -207,10 +206,9 @@
 	return 0;
 }
 
-static int psc_ac97_probe(struct platform_device *pdev,
-					struct snd_soc_dai *cpu_dai)
+static int psc_ac97_probe(struct snd_soc_dai *cpu_dai)
 {
-	struct psc_dma *psc_dma = cpu_dai->private_data;
+	struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(cpu_dai);
 	struct mpc52xx_psc __iomem *regs = psc_dma->psc_regs;
 
 	/* Go */
@@ -237,9 +235,8 @@
 	.hw_params	= psc_ac97_hw_digital_params,
 };
 
-struct snd_soc_dai psc_ac97_dai[] = {
+static struct snd_soc_dai_driver psc_ac97_dai[] = {
 {
-	.name   = "AC97",
 	.ac97_control = 1,
 	.probe	= psc_ac97_probe,
 	.playback = {
@@ -257,7 +254,6 @@
 	.ops = &psc_ac97_analog_ops,
 },
 {
-	.name   = "SPDIF",
 	.ac97_control = 1,
 	.playback = {
 		.channels_min   = 1,
@@ -268,7 +264,6 @@
 	},
 	.ops = &psc_ac97_digital_ops,
 } };
-EXPORT_SYMBOL_GPL(psc_ac97_dai);
 
 
 
@@ -280,18 +275,11 @@
 static int __devinit psc_ac97_of_probe(struct platform_device *op,
 				      const struct of_device_id *match)
 {
-	int rc, i;
+	int rc;
 	struct snd_ac97 ac97;
 	struct mpc52xx_psc __iomem *regs;
 
-	rc = mpc5200_audio_dma_create(op);
-	if (rc != 0)
-		return rc;
-
-	for (i = 0; i < ARRAY_SIZE(psc_ac97_dai); i++)
-		psc_ac97_dai[i].dev = &op->dev;
-
-	rc = snd_soc_register_dais(psc_ac97_dai, ARRAY_SIZE(psc_ac97_dai));
+	rc = snd_soc_register_dais(&op->dev, psc_ac97_dai, ARRAY_SIZE(psc_ac97_dai));
 	if (rc != 0) {
 		dev_err(&op->dev, "Failed to register DAI\n");
 		return rc;
@@ -301,9 +289,6 @@
 	regs = psc_dma->psc_regs;
 	ac97.private_data = psc_dma;
 
-	for (i = 0; i < ARRAY_SIZE(psc_ac97_dai); i++)
-		psc_ac97_dai[i].private_data = psc_dma;
-
 	psc_dma->imr = 0;
 	out_be16(&psc_dma->psc_regs->isr_imr.imr, psc_dma->imr);
 
@@ -319,7 +304,8 @@
 
 static int __devexit psc_ac97_of_remove(struct platform_device *op)
 {
-	return mpc5200_audio_dma_destroy(op);
+	snd_soc_unregister_dais(&op->dev, ARRAY_SIZE(psc_ac97_dai));
+	return 0;
 }
 
 /* Match table for of_platform binding */
diff --git a/sound/soc/fsl/mpc5200_psc_ac97.h b/sound/soc/fsl/mpc5200_psc_ac97.h
index 4bc18c3..e881e78 100644
--- a/sound/soc/fsl/mpc5200_psc_ac97.h
+++ b/sound/soc/fsl/mpc5200_psc_ac97.h
@@ -7,8 +7,6 @@
 #ifndef __SOUND_SOC_FSL_MPC52xx_PSC_AC97_H__
 #define __SOUND_SOC_FSL_MPC52xx_PSC_AC97_H__
 
-extern struct snd_soc_dai psc_ac97_dai[];
-
 #define MPC5200_AC97_NORMAL 0
 #define MPC5200_AC97_SPDIF 1
 
diff --git a/sound/soc/fsl/mpc5200_psc_i2s.c b/sound/soc/fsl/mpc5200_psc_i2s.c
index 534f04cb..74ffed4 100644
--- a/sound/soc/fsl/mpc5200_psc_i2s.c
+++ b/sound/soc/fsl/mpc5200_psc_i2s.c
@@ -40,7 +40,7 @@
 				 struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct psc_dma *psc_dma = rtd->dai->cpu_dai->private_data;
+	struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(rtd->cpu_dai);
 	u32 mode;
 
 	dev_dbg(psc_dma->dev, "%s(substream=%p) p_size=%i p_bytes=%i"
@@ -88,7 +88,7 @@
 static int psc_i2s_set_sysclk(struct snd_soc_dai *cpu_dai,
 			      int clk_id, unsigned int freq, int dir)
 {
-	struct psc_dma *psc_dma = cpu_dai->private_data;
+	struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(cpu_dai);
 	dev_dbg(psc_dma->dev, "psc_i2s_set_sysclk(cpu_dai=%p, dir=%i)\n",
 				cpu_dai, dir);
 	return (dir == SND_SOC_CLOCK_IN) ? 0 : -EINVAL;
@@ -107,7 +107,7 @@
  */
 static int psc_i2s_set_fmt(struct snd_soc_dai *cpu_dai, unsigned int format)
 {
-	struct psc_dma *psc_dma = cpu_dai->private_data;
+	struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(cpu_dai);
 	dev_dbg(psc_dma->dev, "psc_i2s_set_fmt(cpu_dai=%p, format=%i)\n",
 				cpu_dai, format);
 	return (format == SND_SOC_DAIFMT_I2S) ? 0 : -EINVAL;
@@ -129,8 +129,7 @@
 	.set_fmt	= psc_i2s_set_fmt,
 };
 
-struct snd_soc_dai psc_i2s_dai[] = {{
-	.name   = "I2S",
+static struct snd_soc_dai_driver psc_i2s_dai[] = {{
 	.playback = {
 		.channels_min = 2,
 		.channels_max = 2,
@@ -145,7 +144,6 @@
 	},
 	.ops = &psc_i2s_dai_ops,
 } };
-EXPORT_SYMBOL_GPL(psc_i2s_dai);
 
 /* ---------------------------------------------------------------------
  * OF platform bus binding code:
@@ -159,11 +157,7 @@
 	struct psc_dma *psc_dma;
 	struct mpc52xx_psc __iomem *regs;
 
-	rc = mpc5200_audio_dma_create(op);
-	if (rc != 0)
-		return rc;
-
-	rc = snd_soc_register_dais(psc_i2s_dai, ARRAY_SIZE(psc_i2s_dai));
+	rc = snd_soc_register_dais(&op->dev, psc_i2s_dai, ARRAY_SIZE(psc_i2s_dai));
 	if (rc != 0) {
 		pr_err("Failed to register DAI\n");
 		return 0;
@@ -207,7 +201,8 @@
 
 static int __devexit psc_i2s_of_remove(struct platform_device *op)
 {
-	return mpc5200_audio_dma_destroy(op);
+	snd_soc_unregister_dais(&op->dev, ARRAY_SIZE(psc_i2s_dai));
+	return 0;
 }
 
 /* Match table for of_platform binding */
diff --git a/sound/soc/fsl/mpc8610_hpcd.c b/sound/soc/fsl/mpc8610_hpcd.c
index 3b13b8d..0d7dcf1 100644
--- a/sound/soc/fsl/mpc8610_hpcd.c
+++ b/sound/soc/fsl/mpc8610_hpcd.c
@@ -1,85 +1,97 @@
 /**
- * Freescale MPC8610HPCD ALSA SoC Fabric driver
+ * Freescale MPC8610HPCD ALSA SoC Machine driver
  *
  * Author: Timur Tabi <timur@freescale.com>
  *
- * Copyright 2007-2008 Freescale Semiconductor, Inc.  This file is licensed
- * under the terms of the GNU General Public License version 2.  This
- * program is licensed "as is" without any warranty of any kind, whether
- * express or implied.
+ * Copyright 2007-2010 Freescale Semiconductor, Inc.
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2.  This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
  */
 
-#include <linux/slab.h>
 #include <linux/module.h>
 #include <linux/interrupt.h>
 #include <linux/of_device.h>
-#include <linux/of_platform.h>
+#include <linux/slab.h>
 #include <sound/soc.h>
-#include <asm/immap_86xx.h>
+#include <asm/fsl_guts.h>
 
-#include "../codecs/cs4270.h"
 #include "fsl_dma.h"
 #include "fsl_ssi.h"
 
+/* There's only one global utilities register */
+static phys_addr_t guts_phys;
+
+#define DAI_NAME_SIZE	32
+
 /**
- * mpc8610_hpcd_data: fabric-specific ASoC device data
+ * mpc8610_hpcd_data: machine-specific ASoC device data
  *
  * This structure contains data for a single sound platform device on an
  * MPC8610 HPCD.  Some of the data is taken from the device tree.
  */
 struct mpc8610_hpcd_data {
-	struct snd_soc_device sound_devdata;
-	struct snd_soc_dai_link dai;
-	struct snd_soc_card machine;
+	struct snd_soc_dai_link dai[2];
+	struct snd_soc_card card;
 	unsigned int dai_format;
 	unsigned int codec_clk_direction;
 	unsigned int cpu_clk_direction;
 	unsigned int clk_frequency;
-	struct ccsr_guts __iomem *guts;
-	struct ccsr_ssi __iomem *ssi;
-	unsigned int ssi_id;    	/* 0 = SSI1, 1 = SSI2, etc */
-	unsigned int ssi_irq;
-	unsigned int dma_id;    	/* 0 = DMA1, 1 = DMA2, etc */
-	unsigned int dma_irq[2];
-	struct ccsr_dma_channel __iomem *dma[2];
+	unsigned int ssi_id;		/* 0 = SSI1, 1 = SSI2, etc */
+	unsigned int dma_id[2];		/* 0 = DMA1, 1 = DMA2, etc */
 	unsigned int dma_channel_id[2]; /* 0 = ch 0, 1 = ch 1, etc*/
+	char codec_dai_name[DAI_NAME_SIZE];
+	char codec_name[DAI_NAME_SIZE];
+	char platform_name[2][DAI_NAME_SIZE]; /* One for each DMA channel */
 };
 
 /**
  * mpc8610_hpcd_machine_probe: initialize the board
  *
- * This function is called when platform_device_add() is called.  It is used
- * to initialize the board-specific hardware.
+ * This function is used to initialize the board-specific hardware.
  *
  * Here we program the DMACR and PMUXCR registers.
  */
 static int mpc8610_hpcd_machine_probe(struct platform_device *sound_device)
 {
+	struct snd_soc_card *card = platform_get_drvdata(sound_device);
 	struct mpc8610_hpcd_data *machine_data =
-		sound_device->dev.platform_data;
+		container_of(card, struct mpc8610_hpcd_data, card);
+	struct ccsr_guts_86xx __iomem *guts;
+
+	guts = ioremap(guts_phys, sizeof(struct ccsr_guts_86xx));
+	if (!guts) {
+		dev_err(card->dev, "could not map global utilities\n");
+		return -ENOMEM;
+	}
 
 	/* Program the signal routing between the SSI and the DMA */
-	guts_set_dmacr(machine_data->guts, machine_data->dma_id,
-		machine_data->dma_channel_id[0], CCSR_GUTS_DMACR_DEV_SSI);
-	guts_set_dmacr(machine_data->guts, machine_data->dma_id,
-		machine_data->dma_channel_id[1], CCSR_GUTS_DMACR_DEV_SSI);
+	guts_set_dmacr(guts, machine_data->dma_id[0],
+		       machine_data->dma_channel_id[0],
+		       CCSR_GUTS_DMACR_DEV_SSI);
+	guts_set_dmacr(guts, machine_data->dma_id[1],
+		       machine_data->dma_channel_id[1],
+		       CCSR_GUTS_DMACR_DEV_SSI);
 
-	guts_set_pmuxcr_dma(machine_data->guts, machine_data->dma_id,
-		machine_data->dma_channel_id[0], 0);
-	guts_set_pmuxcr_dma(machine_data->guts, machine_data->dma_id,
-		machine_data->dma_channel_id[1], 0);
+	guts_set_pmuxcr_dma(guts, machine_data->dma_id[0],
+			    machine_data->dma_channel_id[0], 0);
+	guts_set_pmuxcr_dma(guts, machine_data->dma_id[1],
+			    machine_data->dma_channel_id[1], 0);
 
 	switch (machine_data->ssi_id) {
 	case 0:
-		clrsetbits_be32(&machine_data->guts->pmuxcr,
+		clrsetbits_be32(&guts->pmuxcr,
 			CCSR_GUTS_PMUXCR_SSI1_MASK, CCSR_GUTS_PMUXCR_SSI1_SSI);
 		break;
 	case 1:
-		clrsetbits_be32(&machine_data->guts->pmuxcr,
+		clrsetbits_be32(&guts->pmuxcr,
 			CCSR_GUTS_PMUXCR_SSI2_MASK, CCSR_GUTS_PMUXCR_SSI2_SSI);
 		break;
 	}
 
+	iounmap(guts);
+
 	return 0;
 }
 
@@ -93,38 +105,15 @@
 static int mpc8610_hpcd_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
 	struct mpc8610_hpcd_data *machine_data =
-		rtd->socdev->dev->platform_data;
+		container_of(rtd->card, struct mpc8610_hpcd_data, card);
+	struct device *dev = rtd->card->dev;
 	int ret = 0;
 
-	/* Tell the CPU driver what the serial protocol is. */
-	ret = snd_soc_dai_set_fmt(cpu_dai, machine_data->dai_format);
-	if (ret < 0) {
-		dev_err(substream->pcm->card->dev,
-			"could not set CPU driver audio format\n");
-		return ret;
-	}
-
 	/* Tell the codec driver what the serial protocol is. */
-	ret = snd_soc_dai_set_fmt(codec_dai, machine_data->dai_format);
+	ret = snd_soc_dai_set_fmt(rtd->codec_dai, machine_data->dai_format);
 	if (ret < 0) {
-		dev_err(substream->pcm->card->dev,
-			"could not set codec driver audio format\n");
-		return ret;
-	}
-
-	/*
-	 * Tell the CPU driver what the clock frequency is, and whether it's a
-	 * slave or master.
-	 */
-	ret = snd_soc_dai_set_sysclk(cpu_dai, 0,
-					machine_data->clk_frequency,
-					machine_data->cpu_clk_direction);
-	if (ret < 0) {
-		dev_err(substream->pcm->card->dev,
-			"could not set CPU driver clock parameters\n");
+		dev_err(dev, "could not set codec driver audio format\n");
 		return ret;
 	}
 
@@ -132,12 +121,11 @@
 	 * Tell the codec driver what the MCLK frequency is, and whether it's
 	 * a slave or master.
 	 */
-	ret = snd_soc_dai_set_sysclk(codec_dai, 0,
-					machine_data->clk_frequency,
-					machine_data->codec_clk_direction);
+	ret = snd_soc_dai_set_sysclk(rtd->codec_dai, 0,
+				     machine_data->clk_frequency,
+				     machine_data->codec_clk_direction);
 	if (ret < 0) {
-		dev_err(substream->pcm->card->dev,
-			"could not set codec driver clock params\n");
+		dev_err(dev, "could not set codec driver clock params\n");
 		return ret;
 	}
 
@@ -150,116 +138,255 @@
  * This function is called to remove the sound device for one SSI.  We
  * de-program the DMACR and PMUXCR register.
  */
-int mpc8610_hpcd_machine_remove(struct platform_device *sound_device)
+static int mpc8610_hpcd_machine_remove(struct platform_device *sound_device)
 {
+	struct snd_soc_card *card = platform_get_drvdata(sound_device);
 	struct mpc8610_hpcd_data *machine_data =
-		sound_device->dev.platform_data;
+		container_of(card, struct mpc8610_hpcd_data, card);
+	struct ccsr_guts_86xx __iomem *guts;
+
+	guts = ioremap(guts_phys, sizeof(struct ccsr_guts_86xx));
+	if (!guts) {
+		dev_err(card->dev, "could not map global utilities\n");
+		return -ENOMEM;
+	}
 
 	/* Restore the signal routing */
 
-	guts_set_dmacr(machine_data->guts, machine_data->dma_id,
-		machine_data->dma_channel_id[0], 0);
-	guts_set_dmacr(machine_data->guts, machine_data->dma_id,
-		machine_data->dma_channel_id[1], 0);
+	guts_set_dmacr(guts, machine_data->dma_id[0],
+		       machine_data->dma_channel_id[0], 0);
+	guts_set_dmacr(guts, machine_data->dma_id[1],
+		       machine_data->dma_channel_id[1], 0);
 
 	switch (machine_data->ssi_id) {
 	case 0:
-		clrsetbits_be32(&machine_data->guts->pmuxcr,
+		clrsetbits_be32(&guts->pmuxcr,
 			CCSR_GUTS_PMUXCR_SSI1_MASK, CCSR_GUTS_PMUXCR_SSI1_LA);
 		break;
 	case 1:
-		clrsetbits_be32(&machine_data->guts->pmuxcr,
+		clrsetbits_be32(&guts->pmuxcr,
 			CCSR_GUTS_PMUXCR_SSI2_MASK, CCSR_GUTS_PMUXCR_SSI2_LA);
 		break;
 	}
 
+	iounmap(guts);
+
 	return 0;
 }
 
 /**
- * mpc8610_hpcd_ops: ASoC fabric driver operations
+ * mpc8610_hpcd_ops: ASoC machine driver operations
  */
 static struct snd_soc_ops mpc8610_hpcd_ops = {
 	.startup = mpc8610_hpcd_startup,
 };
 
 /**
- * mpc8610_hpcd_probe: OF probe function for the fabric driver
+ * get_node_by_phandle_name - get a node by its phandle name
  *
- * This function gets called when an SSI node is found in the device tree.
+ * This function takes a node, the name of a property in that node, and a
+ * compatible string.  Assuming the property is a phandle to another node,
+ * it returns that node, (optionally) if that node is compatible.
  *
- * Although this is a fabric driver, the SSI node is the "master" node with
+ * If the property is not a phandle, or the node it points to is not compatible
+ * with the specific string, then NULL is returned.
+ */
+static struct device_node *get_node_by_phandle_name(struct device_node *np,
+					       const char *name,
+					       const char *compatible)
+{
+	const phandle *ph;
+	int len;
+
+	ph = of_get_property(np, name, &len);
+	if (!ph || (len != sizeof(phandle)))
+		return NULL;
+
+	np = of_find_node_by_phandle(*ph);
+	if (!np)
+		return NULL;
+
+	if (compatible && !of_device_is_compatible(np, compatible)) {
+		of_node_put(np);
+		return NULL;
+	}
+
+	return np;
+}
+
+/**
+ * get_parent_cell_index -- return the cell-index of the parent of a node
+ *
+ * Return the value of the cell-index property of the parent of the given
+ * node.  This is used for DMA channel nodes that need to know the DMA ID
+ * of the controller they are on.
+ */
+static int get_parent_cell_index(struct device_node *np)
+{
+	struct device_node *parent = of_get_parent(np);
+	const u32 *iprop;
+
+	if (!parent)
+		return -1;
+
+	iprop = of_get_property(parent, "cell-index", NULL);
+	of_node_put(parent);
+
+	if (!iprop)
+		return -1;
+
+	return *iprop;
+}
+
+/**
+ * codec_node_dev_name - determine the dev_name for a codec node
+ *
+ * This function determines the dev_name for an I2C node.  This is the name
+ * that would be returned by dev_name() if this device_node were part of a
+ * 'struct device'  It's ugly and hackish, but it works.
+ *
+ * The dev_name for such devices include the bus number and I2C address. For
+ * example, "cs4270-codec.0-004f".
+ */
+static int codec_node_dev_name(struct device_node *np, char *buf, size_t len)
+{
+	const u32 *iprop;
+	int bus, addr;
+	char temp[DAI_NAME_SIZE];
+
+	of_modalias_node(np, temp, DAI_NAME_SIZE);
+
+	iprop = of_get_property(np, "reg", NULL);
+	if (!iprop)
+		return -EINVAL;
+
+	addr = *iprop;
+
+	bus = get_parent_cell_index(np);
+	if (bus < 0)
+		return bus;
+
+	snprintf(buf, len, "%s-codec.%u-%04x", temp, bus, addr);
+
+	return 0;
+}
+
+static int get_dma_channel(struct device_node *ssi_np,
+			   const char *compatible,
+			   struct snd_soc_dai_link *dai,
+			   unsigned int *dma_channel_id,
+			   unsigned int *dma_id)
+{
+	struct resource res;
+	struct device_node *dma_channel_np;
+	const u32 *iprop;
+	int ret;
+
+	dma_channel_np = get_node_by_phandle_name(ssi_np, compatible,
+						  "fsl,ssi-dma-channel");
+	if (!dma_channel_np)
+		return -EINVAL;
+
+	/* Determine the dev_name for the device_node.  This code mimics the
+	 * behavior of of_device_make_bus_id(). We need this because ASoC uses
+	 * the dev_name() of the device to match the platform (DMA) device with
+	 * the CPU (SSI) device.  It's all ugly and hackish, but it works (for
+	 * now).
+	 *
+	 * dai->platform name should already point to an allocated buffer.
+	 */
+	ret = of_address_to_resource(dma_channel_np, 0, &res);
+	if (ret)
+		return ret;
+	snprintf((char *)dai->platform_name, DAI_NAME_SIZE, "%llx.%s",
+		 (unsigned long long) res.start, dma_channel_np->name);
+
+	iprop = of_get_property(dma_channel_np, "cell-index", NULL);
+	if (!iprop) {
+		of_node_put(dma_channel_np);
+		return -EINVAL;
+	}
+
+	*dma_channel_id = *iprop;
+	*dma_id = get_parent_cell_index(dma_channel_np);
+	of_node_put(dma_channel_np);
+
+	return 0;
+}
+
+/**
+ * mpc8610_hpcd_probe: platform probe function for the machine driver
+ *
+ * Although this is a machine driver, the SSI node is the "master" node with
  * respect to audio hardware connections.  Therefore, we create a new ASoC
  * device for each new SSI node that has a codec attached.
- *
- * FIXME: Currently, we only support one DMA controller, so if there are
- * multiple SSI nodes with codecs, only the first will be supported.
- *
- * FIXME: Even if we did support multiple DMA controllers, we have no
- * mechanism for assigning DMA controllers and channels to the individual
- * SSI devices.  We also probably aren't compatible with the generic Elo DMA
- * device driver.
  */
-static int mpc8610_hpcd_probe(struct platform_device *ofdev,
-	const struct of_device_id *match)
+static int mpc8610_hpcd_probe(struct platform_device *pdev)
 {
-	struct device_node *np = ofdev->dev.of_node;
+	struct device *dev = pdev->dev.parent;
+	/* ssi_pdev is the platform device for the SSI node that probed us */
+	struct platform_device *ssi_pdev =
+		container_of(dev, struct platform_device, dev);
+	struct device_node *np = ssi_pdev->dev.of_node;
 	struct device_node *codec_np = NULL;
-	struct device_node *guts_np = NULL;
-	struct device_node *dma_np = NULL;
-	struct device_node *dma_channel_np = NULL;
-	const phandle *codec_ph;
-	const char *sprop;
-	const u32 *iprop;
-	struct resource res;
 	struct platform_device *sound_device = NULL;
 	struct mpc8610_hpcd_data *machine_data;
-	struct fsl_ssi_info ssi_info;
-	struct fsl_dma_info dma_info;
 	int ret = -ENODEV;
-	unsigned int playback_dma_channel;
-	unsigned int capture_dma_channel;
+	const char *sprop;
+	const u32 *iprop;
+
+	/* We are only interested in SSIs with a codec phandle in them,
+	 * so let's make sure this SSI has one. The MPC8610 HPCD only
+	 * knows about the CS4270 codec, so reject anything else.
+	 */
+	codec_np = get_node_by_phandle_name(np, "codec-handle",
+					    "cirrus,cs4270");
+	if (!codec_np) {
+		dev_err(dev, "invalid codec node\n");
+		return -EINVAL;
+	}
 
 	machine_data = kzalloc(sizeof(struct mpc8610_hpcd_data), GFP_KERNEL);
 	if (!machine_data)
 		return -ENOMEM;
 
-	memset(&ssi_info, 0, sizeof(ssi_info));
-	memset(&dma_info, 0, sizeof(dma_info));
+	machine_data->dai[0].cpu_dai_name = dev_name(&ssi_pdev->dev);
+	machine_data->dai[0].ops = &mpc8610_hpcd_ops;
 
-	ssi_info.dev = &ofdev->dev;
+	/* Determine the codec name, it will be used as the codec DAI name */
+	ret = codec_node_dev_name(codec_np, machine_data->codec_name,
+				  DAI_NAME_SIZE);
+	if (ret) {
+		dev_err(&pdev->dev, "invalid codec node %s\n",
+			codec_np->full_name);
+		ret = -EINVAL;
+		goto error;
+	}
+	machine_data->dai[0].codec_name = machine_data->codec_name;
 
-	/*
-	 * We are only interested in SSIs with a codec phandle in them, so let's
-	 * make sure this SSI has one.
+	/* The DAI name from the codec (snd_soc_dai_driver.name) */
+	machine_data->dai[0].codec_dai_name = "cs4270-hifi";
+
+	/* We register two DAIs per SSI, one for playback and the other for
+	 * capture.  Currently, we only support codecs that have one DAI for
+	 * both playback and capture.
 	 */
-	codec_ph = of_get_property(np, "codec-handle", NULL);
-	if (!codec_ph)
-		goto error;
-
-	codec_np = of_find_node_by_phandle(*codec_ph);
-	if (!codec_np)
-		goto error;
-
-	/* The MPC8610 HPCD only knows about the CS4270 codec, so reject
-	   anything else. */
-	if (!of_device_is_compatible(codec_np, "cirrus,cs4270"))
-		goto error;
+	memcpy(&machine_data->dai[1], &machine_data->dai[0],
+	       sizeof(struct snd_soc_dai_link));
 
 	/* Get the device ID */
 	iprop = of_get_property(np, "cell-index", NULL);
 	if (!iprop) {
-		dev_err(&ofdev->dev, "cell-index property not found\n");
+		dev_err(&pdev->dev, "cell-index property not found\n");
 		ret = -EINVAL;
 		goto error;
 	}
 	machine_data->ssi_id = *iprop;
-	ssi_info.id = *iprop;
 
 	/* Get the serial format and clock direction. */
 	sprop = of_get_property(np, "fsl,mode", NULL);
 	if (!sprop) {
-		dev_err(&ofdev->dev, "fsl,mode property not found\n");
+		dev_err(&pdev->dev, "fsl,mode property not found\n");
 		ret = -EINVAL;
 		goto error;
 	}
@@ -269,15 +396,14 @@
 		machine_data->codec_clk_direction = SND_SOC_CLOCK_OUT;
 		machine_data->cpu_clk_direction = SND_SOC_CLOCK_IN;
 
-		/*
-		 * In i2s-slave mode, the codec has its own clock source, so we
+		/* In i2s-slave mode, the codec has its own clock source, so we
 		 * need to get the frequency from the device tree and pass it to
 		 * the codec driver.
 		 */
 		iprop = of_get_property(codec_np, "clock-frequency", NULL);
 		if (!iprop || !*iprop) {
-			dev_err(&ofdev->dev, "codec bus-frequency property "
-				"is missing or invalid\n");
+			dev_err(&pdev->dev, "codec bus-frequency "
+				"property is missing or invalid\n");
 			ret = -EINVAL;
 			goto error;
 		}
@@ -311,317 +437,153 @@
 		machine_data->codec_clk_direction = SND_SOC_CLOCK_IN;
 		machine_data->cpu_clk_direction = SND_SOC_CLOCK_OUT;
 	} else {
-		dev_err(&ofdev->dev,
-			"unrecognized fsl,mode property \"%s\"\n", sprop);
+		dev_err(&pdev->dev,
+			"unrecognized fsl,mode property '%s'\n", sprop);
 		ret = -EINVAL;
 		goto error;
 	}
 
 	if (!machine_data->clk_frequency) {
-		dev_err(&ofdev->dev, "unknown clock frequency\n");
+		dev_err(&pdev->dev, "unknown clock frequency\n");
 		ret = -EINVAL;
 		goto error;
 	}
 
-	/* Read the SSI information from the device tree */
-	ret = of_address_to_resource(np, 0, &res);
+	/* Find the playback DMA channel to use. */
+	machine_data->dai[0].platform_name = machine_data->platform_name[0];
+	ret = get_dma_channel(np, "fsl,playback-dma", &machine_data->dai[0],
+			      &machine_data->dma_channel_id[0],
+			      &machine_data->dma_id[0]);
 	if (ret) {
-		dev_err(&ofdev->dev, "could not obtain SSI address\n");
-		goto error;
-	}
-	if (!res.start) {
-		dev_err(&ofdev->dev, "invalid SSI address\n");
-		goto error;
-	}
-	ssi_info.ssi_phys = res.start;
-
-	machine_data->ssi = ioremap(ssi_info.ssi_phys, sizeof(struct ccsr_ssi));
-	if (!machine_data->ssi) {
-		dev_err(&ofdev->dev, "could not map SSI address %x\n",
-			ssi_info.ssi_phys);
-		ret = -EINVAL;
-		goto error;
-	}
-	ssi_info.ssi = machine_data->ssi;
-
-
-	/* Get the IRQ of the SSI */
-	machine_data->ssi_irq = irq_of_parse_and_map(np, 0);
-	if (!machine_data->ssi_irq) {
-		dev_err(&ofdev->dev, "could not get SSI IRQ\n");
-		ret = -EINVAL;
-		goto error;
-	}
-	ssi_info.irq = machine_data->ssi_irq;
-
-	/* Do we want to use asynchronous mode? */
-	ssi_info.asynchronous =
-		of_find_property(np, "fsl,ssi-asynchronous", NULL) ? 1 : 0;
-	if (ssi_info.asynchronous)
-		dev_info(&ofdev->dev, "using asynchronous mode\n");
-
-	/* Map the global utilities registers. */
-	guts_np = of_find_compatible_node(NULL, NULL, "fsl,mpc8610-guts");
-	if (!guts_np) {
-		dev_err(&ofdev->dev, "could not obtain address of GUTS\n");
-		ret = -EINVAL;
-		goto error;
-	}
-	machine_data->guts = of_iomap(guts_np, 0);
-	of_node_put(guts_np);
-	if (!machine_data->guts) {
-		dev_err(&ofdev->dev, "could not map GUTS\n");
-		ret = -EINVAL;
+		dev_err(&pdev->dev, "missing/invalid playback DMA phandle\n");
 		goto error;
 	}
 
-	/* Find the DMA channels to use.  Both SSIs need to use the same DMA
-	 * controller, so let's use DMA#1.
-	 */
-	for_each_compatible_node(dma_np, NULL, "fsl,mpc8610-dma") {
-		iprop = of_get_property(dma_np, "cell-index", NULL);
-		if (iprop && (*iprop == 0)) {
-			of_node_put(dma_np);
-			break;
-		}
-	}
-	if (!dma_np) {
-		dev_err(&ofdev->dev, "could not find DMA node\n");
-		ret = -EINVAL;
-		goto error;
-	}
-	machine_data->dma_id = *iprop;
-
-	/* SSI1 needs to use DMA Channels 0 and 1, and SSI2 needs to use DMA
-	 * channels 2 and 3.  This is just how the MPC8610 is wired
-	 * internally.
-	 */
-	playback_dma_channel = (machine_data->ssi_id == 0) ? 0 : 2;
-	capture_dma_channel = (machine_data->ssi_id == 0) ? 1 : 3;
-
-	/*
-	 * Find the DMA channels to use.
-	 */
-	while ((dma_channel_np = of_get_next_child(dma_np, dma_channel_np))) {
-		iprop = of_get_property(dma_channel_np, "cell-index", NULL);
-		if (iprop && (*iprop == playback_dma_channel)) {
-			/* dma_channel[0] and dma_irq[0] are for playback */
-			dma_info.dma_channel[0] = of_iomap(dma_channel_np, 0);
-			dma_info.dma_irq[0] =
-				irq_of_parse_and_map(dma_channel_np, 0);
-			machine_data->dma_channel_id[0] = *iprop;
-			continue;
-		}
-		if (iprop && (*iprop == capture_dma_channel)) {
-			/* dma_channel[1] and dma_irq[1] are for capture */
-			dma_info.dma_channel[1] = of_iomap(dma_channel_np, 0);
-			dma_info.dma_irq[1] =
-				irq_of_parse_and_map(dma_channel_np, 0);
-			machine_data->dma_channel_id[1] = *iprop;
-			continue;
-		}
-	}
-	if (!dma_info.dma_channel[0] || !dma_info.dma_channel[1] ||
-	    !dma_info.dma_irq[0] || !dma_info.dma_irq[1]) {
-		dev_err(&ofdev->dev, "could not find DMA channels\n");
-		ret = -EINVAL;
+	/* Find the capture DMA channel to use. */
+	machine_data->dai[1].platform_name = machine_data->platform_name[1];
+	ret = get_dma_channel(np, "fsl,capture-dma", &machine_data->dai[1],
+			      &machine_data->dma_channel_id[1],
+			      &machine_data->dma_id[1]);
+	if (ret) {
+		dev_err(&pdev->dev, "missing/invalid capture DMA phandle\n");
 		goto error;
 	}
 
-	dma_info.ssi_stx_phys = ssi_info.ssi_phys +
-		offsetof(struct ccsr_ssi, stx0);
-	dma_info.ssi_srx_phys = ssi_info.ssi_phys +
-		offsetof(struct ccsr_ssi, srx0);
+	/* Initialize our DAI data structure.  */
+	machine_data->dai[0].stream_name = "playback";
+	machine_data->dai[1].stream_name = "capture";
+	machine_data->dai[0].name = machine_data->dai[0].stream_name;
+	machine_data->dai[1].name = machine_data->dai[1].stream_name;
 
-	/* We have the DMA information, so tell the DMA driver what it is */
-	if (!fsl_dma_configure(&dma_info)) {
-		dev_err(&ofdev->dev, "could not instantiate DMA device\n");
-		ret = -EBUSY;
-		goto error;
-	}
-
-	/*
-	 * Initialize our DAI data structure.  We should probably get this
-	 * information from the device tree.
-	 */
-	machine_data->dai.name = "CS4270";
-	machine_data->dai.stream_name = "CS4270";
-
-	machine_data->dai.cpu_dai = fsl_ssi_create_dai(&ssi_info);
-	machine_data->dai.codec_dai = &cs4270_dai; /* The codec_dai we want */
-	machine_data->dai.ops = &mpc8610_hpcd_ops;
-
-	machine_data->machine.probe = mpc8610_hpcd_machine_probe;
-	machine_data->machine.remove = mpc8610_hpcd_machine_remove;
-	machine_data->machine.name = "MPC8610 HPCD";
-	machine_data->machine.num_links = 1;
-	machine_data->machine.dai_link = &machine_data->dai;
+	machine_data->card.probe = mpc8610_hpcd_machine_probe;
+	machine_data->card.remove = mpc8610_hpcd_machine_remove;
+	machine_data->card.name = pdev->name; /* The platform driver name */
+	machine_data->card.num_links = 2;
+	machine_data->card.dai_link = machine_data->dai;
 
 	/* Allocate a new audio platform device structure */
 	sound_device = platform_device_alloc("soc-audio", -1);
 	if (!sound_device) {
-		dev_err(&ofdev->dev, "platform device allocation failed\n");
+		dev_err(&pdev->dev, "platform device alloc failed\n");
 		ret = -ENOMEM;
 		goto error;
 	}
 
-	machine_data->sound_devdata.card = &machine_data->machine;
-	machine_data->sound_devdata.codec_dev = &soc_codec_device_cs4270;
-	machine_data->machine.platform = &fsl_soc_platform;
+	/* Associate the card data with the sound device */
+	platform_set_drvdata(sound_device, &machine_data->card);
 
-	sound_device->dev.platform_data = machine_data;
-
-
-	/* Set the platform device and ASoC device to point to each other */
-	platform_set_drvdata(sound_device, &machine_data->sound_devdata);
-
-	machine_data->sound_devdata.dev = &sound_device->dev;
-
-
-	/* Tell ASoC to probe us.  This will call mpc8610_hpcd_machine.probe(),
-	   if it exists. */
+	/* Register with ASoC */
 	ret = platform_device_add(sound_device);
-
 	if (ret) {
-		dev_err(&ofdev->dev, "platform device add failed\n");
+		dev_err(&pdev->dev, "platform device add failed\n");
 		goto error;
 	}
 
-	dev_set_drvdata(&ofdev->dev, sound_device);
+	of_node_put(codec_np);
 
 	return 0;
 
 error:
 	of_node_put(codec_np);
-	of_node_put(guts_np);
-	of_node_put(dma_np);
-	of_node_put(dma_channel_np);
 
 	if (sound_device)
 		platform_device_unregister(sound_device);
 
-	if (machine_data->dai.cpu_dai)
-		fsl_ssi_destroy_dai(machine_data->dai.cpu_dai);
-
-	if (ssi_info.ssi)
-		iounmap(ssi_info.ssi);
-
-	if (ssi_info.irq)
-		irq_dispose_mapping(ssi_info.irq);
-
-	if (dma_info.dma_channel[0])
-		iounmap(dma_info.dma_channel[0]);
-
-	if (dma_info.dma_channel[1])
-		iounmap(dma_info.dma_channel[1]);
-
-	if (dma_info.dma_irq[0])
-		irq_dispose_mapping(dma_info.dma_irq[0]);
-
-	if (dma_info.dma_irq[1])
-		irq_dispose_mapping(dma_info.dma_irq[1]);
-
-	if (machine_data->guts)
-		iounmap(machine_data->guts);
-
 	kfree(machine_data);
 
 	return ret;
 }
 
 /**
- * mpc8610_hpcd_remove: remove the OF device
+ * mpc8610_hpcd_remove: remove the platform device
  *
- * This function is called when the OF device is removed.
+ * This function is called when the platform device is removed.
  */
-static int mpc8610_hpcd_remove(struct platform_device *ofdev)
+static int __devexit mpc8610_hpcd_remove(struct platform_device *pdev)
 {
-	struct platform_device *sound_device = dev_get_drvdata(&ofdev->dev);
+	struct platform_device *sound_device = dev_get_drvdata(&pdev->dev);
+	struct snd_soc_card *card = platform_get_drvdata(sound_device);
 	struct mpc8610_hpcd_data *machine_data =
-		sound_device->dev.platform_data;
+		container_of(card, struct mpc8610_hpcd_data, card);
 
 	platform_device_unregister(sound_device);
 
-	if (machine_data->dai.cpu_dai)
-		fsl_ssi_destroy_dai(machine_data->dai.cpu_dai);
-
-	if (machine_data->ssi)
-		iounmap(machine_data->ssi);
-
-	if (machine_data->dma[0])
-		iounmap(machine_data->dma[0]);
-
-	if (machine_data->dma[1])
-		iounmap(machine_data->dma[1]);
-
-	if (machine_data->dma_irq[0])
-		irq_dispose_mapping(machine_data->dma_irq[0]);
-
-	if (machine_data->dma_irq[1])
-		irq_dispose_mapping(machine_data->dma_irq[1]);
-
-	if (machine_data->guts)
-		iounmap(machine_data->guts);
-
 	kfree(machine_data);
 	sound_device->dev.platform_data = NULL;
 
-	dev_set_drvdata(&ofdev->dev, NULL);
+	dev_set_drvdata(&pdev->dev, NULL);
 
 	return 0;
 }
 
-static struct of_device_id mpc8610_hpcd_match[] = {
-	{
-		.compatible = "fsl,mpc8610-ssi",
-	},
-	{}
-};
-MODULE_DEVICE_TABLE(of, mpc8610_hpcd_match);
-
-static struct of_platform_driver mpc8610_hpcd_of_driver = {
+static struct platform_driver mpc8610_hpcd_driver = {
+	.probe = mpc8610_hpcd_probe,
+	.remove = __devexit_p(mpc8610_hpcd_remove),
 	.driver = {
-		.name = "mpc8610_hpcd",
+		/* The name must match the 'model' property in the device tree,
+		 * in lowercase letters.
+		 */
+		.name = "snd-soc-mpc8610hpcd",
 		.owner = THIS_MODULE,
-		.of_match_table = mpc8610_hpcd_match,
 	},
-	.probe  	= mpc8610_hpcd_probe,
-	.remove 	= mpc8610_hpcd_remove,
 };
 
 /**
- * mpc8610_hpcd_init: fabric driver initialization.
+ * mpc8610_hpcd_init: machine driver initialization.
  *
  * This function is called when this module is loaded.
  */
 static int __init mpc8610_hpcd_init(void)
 {
-	int ret;
+	struct device_node *guts_np;
+	struct resource res;
 
-	printk(KERN_INFO "Freescale MPC8610 HPCD ALSA SoC fabric driver\n");
+	pr_info("Freescale MPC8610 HPCD ALSA SoC machine driver\n");
 
-	ret = of_register_platform_driver(&mpc8610_hpcd_of_driver);
+	/* Get the physical address of the global utilities registers */
+	guts_np = of_find_compatible_node(NULL, NULL, "fsl,mpc8610-guts");
+	if (of_address_to_resource(guts_np, 0, &res)) {
+		pr_err("mpc8610-hpcd: missing/invalid global utilities node\n");
+		return -EINVAL;
+	}
+	guts_phys = res.start;
 
-	if (ret)
-		printk(KERN_ERR
-			"mpc8610-hpcd: failed to register platform driver\n");
-
-	return ret;
+	return platform_driver_register(&mpc8610_hpcd_driver);
 }
 
 /**
- * mpc8610_hpcd_exit: fabric driver exit
+ * mpc8610_hpcd_exit: machine driver exit
  *
  * This function is called when this driver is unloaded.
  */
 static void __exit mpc8610_hpcd_exit(void)
 {
-	of_unregister_platform_driver(&mpc8610_hpcd_of_driver);
+	platform_driver_unregister(&mpc8610_hpcd_driver);
 }
 
 module_init(mpc8610_hpcd_init);
 module_exit(mpc8610_hpcd_exit);
 
 MODULE_AUTHOR("Timur Tabi <timur@freescale.com>");
-MODULE_DESCRIPTION("Freescale MPC8610 HPCD ALSA SoC fabric driver");
-MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Freescale MPC8610 HPCD ALSA SoC machine driver");
+MODULE_LICENSE("GPL v2");
diff --git a/sound/soc/fsl/p1022_ds.c b/sound/soc/fsl/p1022_ds.c
new file mode 100644
index 0000000..63b9eaa
--- /dev/null
+++ b/sound/soc/fsl/p1022_ds.c
@@ -0,0 +1,591 @@
+/**
+ * Freescale P1022DS ALSA SoC Machine driver
+ *
+ * Author: Timur Tabi <timur@freescale.com>
+ *
+ * Copyright 2010 Freescale Semiconductor, Inc.
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2.  This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
+ */
+
+#include <linux/module.h>
+#include <linux/interrupt.h>
+#include <linux/of_device.h>
+#include <linux/slab.h>
+#include <sound/soc.h>
+#include <asm/fsl_guts.h>
+
+#include "fsl_dma.h"
+#include "fsl_ssi.h"
+
+/* P1022-specific PMUXCR and DMUXCR bit definitions */
+
+#define CCSR_GUTS_PMUXCR_UART0_I2C1_MASK	0x0001c000
+#define CCSR_GUTS_PMUXCR_UART0_I2C1_UART0_SSI	0x00010000
+#define CCSR_GUTS_PMUXCR_UART0_I2C1_SSI		0x00018000
+
+#define CCSR_GUTS_PMUXCR_SSI_DMA_TDM_MASK	0x00000c00
+#define CCSR_GUTS_PMUXCR_SSI_DMA_TDM_SSI	0x00000000
+
+#define CCSR_GUTS_DMUXCR_PAD	1	/* DMA controller/channel set to pad */
+#define CCSR_GUTS_DMUXCR_SSI	2	/* DMA controller/channel set to SSI */
+
+/*
+ * Set the DMACR register in the GUTS
+ *
+ * The DMACR register determines the source of initiated transfers for each
+ * channel on each DMA controller.  Rather than have a bunch of repetitive
+ * macros for the bit patterns, we just have a function that calculates
+ * them.
+ *
+ * guts: Pointer to GUTS structure
+ * co: The DMA controller (0 or 1)
+ * ch: The channel on the DMA controller (0, 1, 2, or 3)
+ * device: The device to set as the target (CCSR_GUTS_DMUXCR_xxx)
+ */
+static inline void guts_set_dmuxcr(struct ccsr_guts_85xx __iomem *guts,
+	unsigned int co, unsigned int ch, unsigned int device)
+{
+	unsigned int shift = 16 + (8 * (1 - co) + 2 * (3 - ch));
+
+	clrsetbits_be32(&guts->dmuxcr, 3 << shift, device << shift);
+}
+
+/* There's only one global utilities register */
+static phys_addr_t guts_phys;
+
+#define DAI_NAME_SIZE	32
+
+/**
+ * machine_data: machine-specific ASoC device data
+ *
+ * This structure contains data for a single sound platform device on an
+ * P1022 DS.  Some of the data is taken from the device tree.
+ */
+struct machine_data {
+	struct snd_soc_dai_link dai[2];
+	struct snd_soc_card card;
+	unsigned int dai_format;
+	unsigned int codec_clk_direction;
+	unsigned int cpu_clk_direction;
+	unsigned int clk_frequency;
+	unsigned int ssi_id;		/* 0 = SSI1, 1 = SSI2, etc */
+	unsigned int dma_id[2];		/* 0 = DMA1, 1 = DMA2, etc */
+	unsigned int dma_channel_id[2]; /* 0 = ch 0, 1 = ch 1, etc*/
+	char codec_name[DAI_NAME_SIZE];
+	char platform_name[2][DAI_NAME_SIZE]; /* One for each DMA channel */
+};
+
+/**
+ * p1022_ds_machine_probe: initialize the board
+ *
+ * This function is used to initialize the board-specific hardware.
+ *
+ * Here we program the DMACR and PMUXCR registers.
+ */
+static int p1022_ds_machine_probe(struct platform_device *sound_device)
+{
+	struct snd_soc_card *card = platform_get_drvdata(sound_device);
+	struct machine_data *mdata =
+		container_of(card, struct machine_data, card);
+	struct ccsr_guts_85xx __iomem *guts;
+
+	guts = ioremap(guts_phys, sizeof(struct ccsr_guts_85xx));
+	if (!guts) {
+		dev_err(card->dev, "could not map global utilities\n");
+		return -ENOMEM;
+	}
+
+	/* Enable SSI Tx signal */
+	clrsetbits_be32(&guts->pmuxcr, CCSR_GUTS_PMUXCR_UART0_I2C1_MASK,
+			CCSR_GUTS_PMUXCR_UART0_I2C1_UART0_SSI);
+
+	/* Enable SSI Rx signal */
+	clrsetbits_be32(&guts->pmuxcr, CCSR_GUTS_PMUXCR_SSI_DMA_TDM_MASK,
+			CCSR_GUTS_PMUXCR_SSI_DMA_TDM_SSI);
+
+	/* Enable DMA Channel for SSI */
+	guts_set_dmuxcr(guts, mdata->dma_id[0], mdata->dma_channel_id[0],
+			CCSR_GUTS_DMUXCR_SSI);
+
+	guts_set_dmuxcr(guts, mdata->dma_id[1], mdata->dma_channel_id[1],
+			CCSR_GUTS_DMUXCR_SSI);
+
+	iounmap(guts);
+
+	return 0;
+}
+
+/**
+ * p1022_ds_startup: program the board with various hardware parameters
+ *
+ * This function takes board-specific information, like clock frequencies
+ * and serial data formats, and passes that information to the codec and
+ * transport drivers.
+ */
+static int p1022_ds_startup(struct snd_pcm_substream *substream)
+{
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct machine_data *mdata =
+		container_of(rtd->card, struct machine_data, card);
+	struct device *dev = rtd->card->dev;
+	int ret = 0;
+
+	/* Tell the codec driver what the serial protocol is. */
+	ret = snd_soc_dai_set_fmt(rtd->codec_dai, mdata->dai_format);
+	if (ret < 0) {
+		dev_err(dev, "could not set codec driver audio format\n");
+		return ret;
+	}
+
+	/*
+	 * Tell the codec driver what the MCLK frequency is, and whether it's
+	 * a slave or master.
+	 */
+	ret = snd_soc_dai_set_sysclk(rtd->codec_dai, 0, mdata->clk_frequency,
+				     mdata->codec_clk_direction);
+	if (ret < 0) {
+		dev_err(dev, "could not set codec driver clock params\n");
+		return ret;
+	}
+
+	return 0;
+}
+
+/**
+ * p1022_ds_machine_remove: Remove the sound device
+ *
+ * This function is called to remove the sound device for one SSI.  We
+ * de-program the DMACR and PMUXCR register.
+ */
+static int p1022_ds_machine_remove(struct platform_device *sound_device)
+{
+	struct snd_soc_card *card = platform_get_drvdata(sound_device);
+	struct machine_data *mdata =
+		container_of(card, struct machine_data, card);
+	struct ccsr_guts_85xx __iomem *guts;
+
+	guts = ioremap(guts_phys, sizeof(struct ccsr_guts_85xx));
+	if (!guts) {
+		dev_err(card->dev, "could not map global utilities\n");
+		return -ENOMEM;
+	}
+
+	/* Restore the signal routing */
+	clrbits32(&guts->pmuxcr, CCSR_GUTS_PMUXCR_UART0_I2C1_MASK);
+	clrbits32(&guts->pmuxcr, CCSR_GUTS_PMUXCR_SSI_DMA_TDM_MASK);
+	guts_set_dmuxcr(guts, mdata->dma_id[0], mdata->dma_channel_id[0], 0);
+	guts_set_dmuxcr(guts, mdata->dma_id[1], mdata->dma_channel_id[1], 0);
+
+	iounmap(guts);
+
+	return 0;
+}
+
+/**
+ * p1022_ds_ops: ASoC machine driver operations
+ */
+static struct snd_soc_ops p1022_ds_ops = {
+	.startup = p1022_ds_startup,
+};
+
+/**
+ * get_node_by_phandle_name - get a node by its phandle name
+ *
+ * This function takes a node, the name of a property in that node, and a
+ * compatible string.  Assuming the property is a phandle to another node,
+ * it returns that node, (optionally) if that node is compatible.
+ *
+ * If the property is not a phandle, or the node it points to is not compatible
+ * with the specific string, then NULL is returned.
+ */
+static struct device_node *get_node_by_phandle_name(struct device_node *np,
+	const char *name, const char *compatible)
+{
+	np = of_parse_phandle(np, name, 0);
+	if (!np)
+		return NULL;
+
+	if (!of_device_is_compatible(np, compatible)) {
+		of_node_put(np);
+		return NULL;
+	}
+
+	return np;
+}
+
+/**
+ * get_parent_cell_index -- return the cell-index of the parent of a node
+ *
+ * Return the value of the cell-index property of the parent of the given
+ * node.  This is used for DMA channel nodes that need to know the DMA ID
+ * of the controller they are on.
+ */
+static int get_parent_cell_index(struct device_node *np)
+{
+	struct device_node *parent = of_get_parent(np);
+	const u32 *iprop;
+	int ret = -1;
+
+	if (!parent)
+		return -1;
+
+	iprop = of_get_property(parent, "cell-index", NULL);
+	if (iprop)
+		ret = *iprop;
+
+	of_node_put(parent);
+
+	return ret;
+}
+
+/**
+ * codec_node_dev_name - determine the dev_name for a codec node
+ *
+ * This function determines the dev_name for an I2C node.  This is the name
+ * that would be returned by dev_name() if this device_node were part of a
+ * 'struct device'  It's ugly and hackish, but it works.
+ *
+ * The dev_name for such devices include the bus number and I2C address. For
+ * example, "cs4270-codec.0-004f".
+ */
+static int codec_node_dev_name(struct device_node *np, char *buf, size_t len)
+{
+	const u32 *iprop;
+	int bus, addr;
+	char temp[DAI_NAME_SIZE];
+
+	of_modalias_node(np, temp, DAI_NAME_SIZE);
+
+	iprop = of_get_property(np, "reg", NULL);
+	if (!iprop)
+		return -EINVAL;
+
+	addr = *iprop;
+
+	bus = get_parent_cell_index(np);
+	if (bus < 0)
+		return bus;
+
+	snprintf(buf, len, "%s-codec.%u-%04x", temp, bus, addr);
+
+	return 0;
+}
+
+static int get_dma_channel(struct device_node *ssi_np,
+			   const char *compatible,
+			   struct snd_soc_dai_link *dai,
+			   unsigned int *dma_channel_id,
+			   unsigned int *dma_id)
+{
+	struct resource res;
+	struct device_node *dma_channel_np;
+	const u32 *iprop;
+	int ret;
+
+	dma_channel_np = get_node_by_phandle_name(ssi_np, compatible,
+						  "fsl,ssi-dma-channel");
+	if (!dma_channel_np)
+		return -EINVAL;
+
+	/* Determine the dev_name for the device_node.  This code mimics the
+	 * behavior of of_device_make_bus_id(). We need this because ASoC uses
+	 * the dev_name() of the device to match the platform (DMA) device with
+	 * the CPU (SSI) device.  It's all ugly and hackish, but it works (for
+	 * now).
+	 *
+	 * dai->platform name should already point to an allocated buffer.
+	 */
+	ret = of_address_to_resource(dma_channel_np, 0, &res);
+	if (ret)
+		return ret;
+	snprintf((char *)dai->platform_name, DAI_NAME_SIZE, "%llx.%s",
+		 (unsigned long long) res.start, dma_channel_np->name);
+
+	iprop = of_get_property(dma_channel_np, "cell-index", NULL);
+	if (!iprop) {
+		of_node_put(dma_channel_np);
+		return -EINVAL;
+	}
+
+	*dma_channel_id = *iprop;
+	*dma_id = get_parent_cell_index(dma_channel_np);
+	of_node_put(dma_channel_np);
+
+	return 0;
+}
+
+/**
+ * p1022_ds_probe: platform probe function for the machine driver
+ *
+ * Although this is a machine driver, the SSI node is the "master" node with
+ * respect to audio hardware connections.  Therefore, we create a new ASoC
+ * device for each new SSI node that has a codec attached.
+ */
+static int p1022_ds_probe(struct platform_device *pdev)
+{
+	struct device *dev = pdev->dev.parent;
+	/* ssi_pdev is the platform device for the SSI node that probed us */
+	struct platform_device *ssi_pdev =
+		container_of(dev, struct platform_device, dev);
+	struct device_node *np = ssi_pdev->dev.of_node;
+	struct device_node *codec_np = NULL;
+	struct platform_device *sound_device = NULL;
+	struct machine_data *mdata;
+	int ret = -ENODEV;
+	const char *sprop;
+	const u32 *iprop;
+
+	/* Find the codec node for this SSI. */
+	codec_np = of_parse_phandle(np, "codec-handle", 0);
+	if (!codec_np) {
+		dev_err(dev, "could not find codec node\n");
+		return -EINVAL;
+	}
+
+	mdata = kzalloc(sizeof(struct machine_data), GFP_KERNEL);
+	if (!mdata) {
+		ret = -ENOMEM;
+		goto error_put;
+	}
+
+	mdata->dai[0].cpu_dai_name = dev_name(&ssi_pdev->dev);
+	mdata->dai[0].ops = &p1022_ds_ops;
+
+	/* Determine the codec name, it will be used as the codec DAI name */
+	ret = codec_node_dev_name(codec_np, mdata->codec_name, DAI_NAME_SIZE);
+	if (ret) {
+		dev_err(&pdev->dev, "invalid codec node %s\n",
+			codec_np->full_name);
+		ret = -EINVAL;
+		goto error;
+	}
+	mdata->dai[0].codec_name = mdata->codec_name;
+
+	/* We register two DAIs per SSI, one for playback and the other for
+	 * capture.  We support codecs that have separate DAIs for both playback
+	 * and capture.
+	 */
+	memcpy(&mdata->dai[1], &mdata->dai[0], sizeof(struct snd_soc_dai_link));
+
+	/* The DAI names from the codec (snd_soc_dai_driver.name) */
+	mdata->dai[0].codec_dai_name = "wm8776-hifi-playback";
+	mdata->dai[1].codec_dai_name = "wm8776-hifi-capture";
+
+	/* Get the device ID */
+	iprop = of_get_property(np, "cell-index", NULL);
+	if (!iprop) {
+		dev_err(&pdev->dev, "cell-index property not found\n");
+		ret = -EINVAL;
+		goto error;
+	}
+	mdata->ssi_id = *iprop;
+
+	/* Get the serial format and clock direction. */
+	sprop = of_get_property(np, "fsl,mode", NULL);
+	if (!sprop) {
+		dev_err(&pdev->dev, "fsl,mode property not found\n");
+		ret = -EINVAL;
+		goto error;
+	}
+
+	if (strcasecmp(sprop, "i2s-slave") == 0) {
+		mdata->dai_format = SND_SOC_DAIFMT_I2S;
+		mdata->codec_clk_direction = SND_SOC_CLOCK_OUT;
+		mdata->cpu_clk_direction = SND_SOC_CLOCK_IN;
+
+		/* In i2s-slave mode, the codec has its own clock source, so we
+		 * need to get the frequency from the device tree and pass it to
+		 * the codec driver.
+		 */
+		iprop = of_get_property(codec_np, "clock-frequency", NULL);
+		if (!iprop || !*iprop) {
+			dev_err(&pdev->dev, "codec bus-frequency "
+				"property is missing or invalid\n");
+			ret = -EINVAL;
+			goto error;
+		}
+		mdata->clk_frequency = *iprop;
+	} else if (strcasecmp(sprop, "i2s-master") == 0) {
+		mdata->dai_format = SND_SOC_DAIFMT_I2S;
+		mdata->codec_clk_direction = SND_SOC_CLOCK_IN;
+		mdata->cpu_clk_direction = SND_SOC_CLOCK_OUT;
+	} else if (strcasecmp(sprop, "lj-slave") == 0) {
+		mdata->dai_format = SND_SOC_DAIFMT_LEFT_J;
+		mdata->codec_clk_direction = SND_SOC_CLOCK_OUT;
+		mdata->cpu_clk_direction = SND_SOC_CLOCK_IN;
+	} else if (strcasecmp(sprop, "lj-master") == 0) {
+		mdata->dai_format = SND_SOC_DAIFMT_LEFT_J;
+		mdata->codec_clk_direction = SND_SOC_CLOCK_IN;
+		mdata->cpu_clk_direction = SND_SOC_CLOCK_OUT;
+	} else if (strcasecmp(sprop, "rj-slave") == 0) {
+		mdata->dai_format = SND_SOC_DAIFMT_RIGHT_J;
+		mdata->codec_clk_direction = SND_SOC_CLOCK_OUT;
+		mdata->cpu_clk_direction = SND_SOC_CLOCK_IN;
+	} else if (strcasecmp(sprop, "rj-master") == 0) {
+		mdata->dai_format = SND_SOC_DAIFMT_RIGHT_J;
+		mdata->codec_clk_direction = SND_SOC_CLOCK_IN;
+		mdata->cpu_clk_direction = SND_SOC_CLOCK_OUT;
+	} else if (strcasecmp(sprop, "ac97-slave") == 0) {
+		mdata->dai_format = SND_SOC_DAIFMT_AC97;
+		mdata->codec_clk_direction = SND_SOC_CLOCK_OUT;
+		mdata->cpu_clk_direction = SND_SOC_CLOCK_IN;
+	} else if (strcasecmp(sprop, "ac97-master") == 0) {
+		mdata->dai_format = SND_SOC_DAIFMT_AC97;
+		mdata->codec_clk_direction = SND_SOC_CLOCK_IN;
+		mdata->cpu_clk_direction = SND_SOC_CLOCK_OUT;
+	} else {
+		dev_err(&pdev->dev,
+			"unrecognized fsl,mode property '%s'\n", sprop);
+		ret = -EINVAL;
+		goto error;
+	}
+
+	if (!mdata->clk_frequency) {
+		dev_err(&pdev->dev, "unknown clock frequency\n");
+		ret = -EINVAL;
+		goto error;
+	}
+
+	/* Find the playback DMA channel to use. */
+	mdata->dai[0].platform_name = mdata->platform_name[0];
+	ret = get_dma_channel(np, "fsl,playback-dma", &mdata->dai[0],
+			      &mdata->dma_channel_id[0],
+			      &mdata->dma_id[0]);
+	if (ret) {
+		dev_err(&pdev->dev, "missing/invalid playback DMA phandle\n");
+		goto error;
+	}
+
+	/* Find the capture DMA channel to use. */
+	mdata->dai[1].platform_name = mdata->platform_name[1];
+	ret = get_dma_channel(np, "fsl,capture-dma", &mdata->dai[1],
+			      &mdata->dma_channel_id[1],
+			      &mdata->dma_id[1]);
+	if (ret) {
+		dev_err(&pdev->dev, "missing/invalid capture DMA phandle\n");
+		goto error;
+	}
+
+	/* Initialize our DAI data structure.  */
+	mdata->dai[0].stream_name = "playback";
+	mdata->dai[1].stream_name = "capture";
+	mdata->dai[0].name = mdata->dai[0].stream_name;
+	mdata->dai[1].name = mdata->dai[1].stream_name;
+
+	mdata->card.probe = p1022_ds_machine_probe;
+	mdata->card.remove = p1022_ds_machine_remove;
+	mdata->card.name = pdev->name; /* The platform driver name */
+	mdata->card.num_links = 2;
+	mdata->card.dai_link = mdata->dai;
+
+	/* Allocate a new audio platform device structure */
+	sound_device = platform_device_alloc("soc-audio", -1);
+	if (!sound_device) {
+		dev_err(&pdev->dev, "platform device alloc failed\n");
+		ret = -ENOMEM;
+		goto error;
+	}
+
+	/* Associate the card data with the sound device */
+	platform_set_drvdata(sound_device, &mdata->card);
+
+	/* Register with ASoC */
+	ret = platform_device_add(sound_device);
+	if (ret) {
+		dev_err(&pdev->dev, "platform device add failed\n");
+		goto error;
+	}
+
+	of_node_put(codec_np);
+
+	return 0;
+
+error:
+	if (sound_device)
+		platform_device_unregister(sound_device);
+
+	kfree(mdata);
+error_put:
+	of_node_put(codec_np);
+	return ret;
+}
+
+/**
+ * p1022_ds_remove: remove the platform device
+ *
+ * This function is called when the platform device is removed.
+ */
+static int __devexit p1022_ds_remove(struct platform_device *pdev)
+{
+	struct platform_device *sound_device = dev_get_drvdata(&pdev->dev);
+	struct snd_soc_card *card = platform_get_drvdata(sound_device);
+	struct machine_data *mdata =
+		container_of(card, struct machine_data, card);
+
+	platform_device_unregister(sound_device);
+
+	kfree(mdata);
+	sound_device->dev.platform_data = NULL;
+
+	dev_set_drvdata(&pdev->dev, NULL);
+
+	return 0;
+}
+
+static struct platform_driver p1022_ds_driver = {
+	.probe = p1022_ds_probe,
+	.remove = __devexit_p(p1022_ds_remove),
+	.driver = {
+		/* The name must match the 'model' property in the device tree,
+		 * in lowercase letters, but only the part after that last
+		 * comma.  This is because some model properties have a "fsl,"
+		 * prefix.
+		 */
+		.name = "snd-soc-p1022",
+		.owner = THIS_MODULE,
+	},
+};
+
+/**
+ * p1022_ds_init: machine driver initialization.
+ *
+ * This function is called when this module is loaded.
+ */
+static int __init p1022_ds_init(void)
+{
+	struct device_node *guts_np;
+	struct resource res;
+
+	pr_info("Freescale P1022 DS ALSA SoC machine driver\n");
+
+	/* Get the physical address of the global utilities registers */
+	guts_np = of_find_compatible_node(NULL, NULL, "fsl,p1022-guts");
+	if (of_address_to_resource(guts_np, 0, &res)) {
+		pr_err("p1022-ds: missing/invalid global utilities node\n");
+		return -EINVAL;
+	}
+	guts_phys = res.start;
+	of_node_put(guts_np);
+
+	return platform_driver_register(&p1022_ds_driver);
+}
+
+/**
+ * p1022_ds_exit: machine driver exit
+ *
+ * This function is called when this driver is unloaded.
+ */
+static void __exit p1022_ds_exit(void)
+{
+	platform_driver_unregister(&p1022_ds_driver);
+}
+
+module_init(p1022_ds_init);
+module_exit(p1022_ds_exit);
+
+MODULE_AUTHOR("Timur Tabi <timur@freescale.com>");
+MODULE_DESCRIPTION("Freescale P1022 DS ALSA SoC machine driver");
+MODULE_LICENSE("GPL v2");
diff --git a/sound/soc/fsl/pcm030-audio-fabric.c b/sound/soc/fsl/pcm030-audio-fabric.c
index 6644cba..fe15bb2 100644
--- a/sound/soc/fsl/pcm030-audio-fabric.c
+++ b/sound/soc/fsl/pcm030-audio-fabric.c
@@ -32,21 +32,24 @@
 
 #define DRV_NAME "pcm030-audio-fabric"
 
-static struct snd_soc_device device;
 static struct snd_soc_card card;
 
 static struct snd_soc_dai_link pcm030_fabric_dai[] = {
 {
 	.name = "AC97",
 	.stream_name = "AC97 Analog",
-	.codec_dai = &wm9712_dai[WM9712_DAI_AC97_HIFI],
-	.cpu_dai = &psc_ac97_dai[MPC5200_AC97_NORMAL],
+	.codec_dai_name = "wm9712-hifi",
+	.cpu_dai_name = "mpc5200-psc-ac97.0",
+	.platform_name = "mpc5200-pcm-audio",
+	.codec_name = "wm9712-codec",
 },
 {
 	.name = "AC97",
 	.stream_name = "AC97 IEC958",
-	.codec_dai = &wm9712_dai[WM9712_DAI_AC97_AUX],
-	.cpu_dai = &psc_ac97_dai[MPC5200_AC97_SPDIF],
+	.codec_dai_name = "wm9712-aux",
+	.cpu_dai_name = "mpc5200-psc-ac97.1",
+	.platform_name = "mpc5200-pcm-audio",
+	..codec_name = "wm9712-codec",
 },
 };
 
@@ -58,22 +61,18 @@
 	if (!of_machine_is_compatible("phytec,pcm030"))
 		return -ENODEV;
 
-	card.platform = &mpc5200_audio_dma_platform;
+
 	card.name = "pcm030";
 	card.dai_link = pcm030_fabric_dai;
 	card.num_links = ARRAY_SIZE(pcm030_fabric_dai);
 
-	device.card = &card;
-	device.codec_dev = &soc_codec_dev_wm9712;
-
 	pdev = platform_device_alloc("soc-audio", 1);
 	if (!pdev) {
 		pr_err("pcm030_fabric_init: platform_device_alloc() failed\n");
 		return -ENODEV;
 	}
 
-	platform_set_drvdata(pdev, &device);
-	device.dev = &pdev->dev;
+	platform_set_drvdata(pdev, &card);
 
 	rc = platform_device_add(pdev);
 	if (rc) {
diff --git a/sound/soc/fsl/soc-of-simple.c b/sound/soc/fsl/soc-of-simple.c
deleted file mode 100644
index 3bc13fd..0000000
--- a/sound/soc/fsl/soc-of-simple.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * OF helpers for ALSA SoC Layer
- *
- * Copyright (C) 2008, Secret Lab Technologies Ltd.
- */
-
-#include <linux/module.h>
-#include <linux/moduleparam.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/pm.h>
-#include <linux/bitops.h>
-#include <linux/platform_device.h>
-#include <linux/of.h>
-#include <linux/slab.h>
-#include <sound/core.h>
-#include <sound/pcm.h>
-#include <sound/pcm_params.h>
-#include <sound/soc.h>
-#include <sound/soc-of-simple.h>
-#include <sound/initval.h>
-
-MODULE_AUTHOR("Grant Likely <grant.likely@secretlab.ca>");
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("ALSA SoC OpenFirmware bindings");
-
-static DEFINE_MUTEX(of_snd_soc_mutex);
-static LIST_HEAD(of_snd_soc_device_list);
-static int of_snd_soc_next_index;
-
-struct of_snd_soc_device {
-	int id;
-	struct list_head list;
-	struct snd_soc_device device;
-	struct snd_soc_card card;
-	struct snd_soc_dai_link dai_link;
-	struct platform_device *pdev;
-	struct device_node *platform_node;
-	struct device_node *codec_node;
-};
-
-static struct snd_soc_ops of_snd_soc_ops = {
-};
-
-static struct of_snd_soc_device *
-of_snd_soc_get_device(struct device_node *codec_node)
-{
-	struct of_snd_soc_device *of_soc;
-
-	list_for_each_entry(of_soc, &of_snd_soc_device_list, list) {
-		if (of_soc->codec_node == codec_node)
-			return of_soc;
-	}
-
-	of_soc = kzalloc(sizeof(struct of_snd_soc_device), GFP_KERNEL);
-	if (!of_soc)
-		return NULL;
-
-	/* Initialize the structure and add it to the global list */
-	of_soc->codec_node = codec_node;
-	of_soc->id = of_snd_soc_next_index++;
-	of_soc->card.dai_link = &of_soc->dai_link;
-	of_soc->card.num_links = 1;
-	of_soc->device.card = &of_soc->card;
-	of_soc->dai_link.ops = &of_snd_soc_ops;
-	list_add(&of_soc->list, &of_snd_soc_device_list);
-
-	return of_soc;
-}
-
-static void of_snd_soc_register_device(struct of_snd_soc_device *of_soc)
-{
-	struct platform_device *pdev;
-	int rc;
-
-	/* Only register the device if both the codec and platform have
-	 * been registered */
-	if ((!of_soc->device.codec_data) || (!of_soc->platform_node))
-		return;
-
-	pr_info("platform<-->codec match achieved; registering machine\n");
-
-	pdev = platform_device_alloc("soc-audio", of_soc->id);
-	if (!pdev) {
-		pr_err("of_soc: platform_device_alloc() failed\n");
-		return;
-	}
-
-	pdev->dev.platform_data = of_soc;
-	platform_set_drvdata(pdev, &of_soc->device);
-	of_soc->device.dev = &pdev->dev;
-
-	/* The ASoC device is complete; register it */
-	rc = platform_device_add(pdev);
-	if (rc) {
-		pr_err("of_soc: platform_device_add() failed\n");
-		return;
-	}
-
-}
-
-int of_snd_soc_register_codec(struct snd_soc_codec_device *codec_dev,
-			      void *codec_data, struct snd_soc_dai *dai,
-			      struct device_node *node)
-{
-	struct of_snd_soc_device *of_soc;
-	int rc = 0;
-
-	pr_info("registering ASoC codec driver: %s\n", node->full_name);
-
-	mutex_lock(&of_snd_soc_mutex);
-	of_soc = of_snd_soc_get_device(node);
-	if (!of_soc) {
-		rc = -ENOMEM;
-		goto out;
-	}
-
-	/* Store the codec data */
-	of_soc->device.codec_data = codec_data;
-	of_soc->device.codec_dev = codec_dev;
-	of_soc->dai_link.name = (char *)node->name;
-	of_soc->dai_link.stream_name = (char *)node->name;
-	of_soc->dai_link.codec_dai = dai;
-
-	/* Now try to register the SoC device */
-	of_snd_soc_register_device(of_soc);
-
- out:
-	mutex_unlock(&of_snd_soc_mutex);
-	return rc;
-}
-EXPORT_SYMBOL_GPL(of_snd_soc_register_codec);
-
-int of_snd_soc_register_platform(struct snd_soc_platform *platform,
-				 struct device_node *node,
-				 struct snd_soc_dai *cpu_dai)
-{
-	struct of_snd_soc_device *of_soc;
-	struct device_node *codec_node;
-	const phandle *handle;
-	int len, rc = 0;
-
-	pr_info("registering ASoC platform driver: %s\n", node->full_name);
-
-	handle = of_get_property(node, "codec-handle", &len);
-	if (!handle || len < sizeof(handle))
-		return -ENODEV;
-	codec_node = of_find_node_by_phandle(*handle);
-	if (!codec_node)
-		return -ENODEV;
-	pr_info("looking for codec: %s\n", codec_node->full_name);
-
-	mutex_lock(&of_snd_soc_mutex);
-	of_soc = of_snd_soc_get_device(codec_node);
-	if (!of_soc) {
-		rc = -ENOMEM;
-		goto out;
-	}
-
-	of_soc->platform_node = node;
-	of_soc->dai_link.cpu_dai = cpu_dai;
-	of_soc->card.platform = platform;
-	of_soc->card.name = of_soc->dai_link.cpu_dai->name;
-
-	/* Now try to register the SoC device */
-	of_snd_soc_register_device(of_soc);
-
- out:
-	mutex_unlock(&of_snd_soc_mutex);
-	return rc;
-}
-EXPORT_SYMBOL_GPL(of_snd_soc_register_platform);
diff --git a/sound/soc/imx/Kconfig b/sound/soc/imx/Kconfig
index 687c76f..642270a 100644
--- a/sound/soc/imx/Kconfig
+++ b/sound/soc/imx/Kconfig
@@ -8,12 +8,24 @@
 	  Say Y or M if you want to add support for codecs attached to
 	  the i.MX SSI interface.
 
+
 if SND_IMX_SOC
 
+config SND_MXC_SOC_SSI
+	tristate
+
+config SND_MXC_SOC_FIQ
+	tristate
+
+config SND_MXC_SOC_MX2
+	tristate
+
 config SND_MXC_SOC_WM1133_EV1
 	tristate "Audio on the the i.MX31ADS with WM1133-EV1 fitted"
 	depends on MACH_MX31ADS_WM1133_EV1 && EXPERIMENTAL
 	select SND_SOC_WM8350
+	select SND_MXC_SOC_SSI
+	select SND_MXC_SOC_FIQ
 	help
 	  Enable support for audio on the i.MX31ADS with the WM1133-EV1
 	  PMIC board with WM8835x fitted.
@@ -22,6 +34,8 @@
 	tristate "SoC Audio support for Phytec phyCORE (and phyCARD) boards"
 	depends on MACH_PCM043 || MACH_PCA100
 	select SND_SOC_WM9712
+	select SND_MXC_SOC_SSI
+	select SND_MXC_SOC_FIQ
 	help
 	  Say Y if you want to add support for SoC audio on Phytec phyCORE
 	  and phyCARD boards in AC97 mode
@@ -32,6 +46,8 @@
 		|| MACH_EUKREA_MBIMXSD25_BASEBOARD \
 		|| MACH_EUKREA_MBIMXSD35_BASEBOARD
 	select SND_SOC_TLV320AIC23
+	select SND_MXC_SOC_SSI
+	select SND_MXC_SOC_FIQ
 	help
 	  Enable I2S based access to the TLV320AIC23B codec attached
 	  to the SSI interface
diff --git a/sound/soc/imx/Makefile b/sound/soc/imx/Makefile
index 7bc57ba..b67fc02 100644
--- a/sound/soc/imx/Makefile
+++ b/sound/soc/imx/Makefile
@@ -1,11 +1,11 @@
 # i.MX Platform Support
-snd-soc-imx-objs := imx-ssi.o imx-pcm-fiq.o
-
-ifdef CONFIG_MACH_MX27
-snd-soc-imx-objs += imx-pcm-dma-mx2.o
-endif
+snd-soc-imx-objs := imx-ssi.o
+snd-soc-imx-fiq-objs := imx-pcm-fiq.o
+snd-soc-imx-mx2-objs := imx-pcm-dma-mx2.o
 
 obj-$(CONFIG_SND_IMX_SOC) += snd-soc-imx.o
+obj-$(CONFIG_SND_MXC_SOC_FIQ) += snd-soc-imx-fiq.o
+obj-$(CONFIG_SND_MXC_SOC_MX2) += snd-soc-imx-mx2.o
 
 # i.MX Machine Support
 snd-soc-eukrea-tlv320-objs := eukrea-tlv320.o
diff --git a/sound/soc/imx/eukrea-tlv320.c b/sound/soc/imx/eukrea-tlv320.c
index f15dfbd..807f736 100644
--- a/sound/soc/imx/eukrea-tlv320.c
+++ b/sound/soc/imx/eukrea-tlv320.c
@@ -79,22 +79,19 @@
 static struct snd_soc_dai_link eukrea_tlv320_dai = {
 	.name		= "tlv320aic23",
 	.stream_name	= "TLV320AIC23",
-	.codec_dai	= &tlv320aic23_dai,
+	.codec_dai	= "tlv320aic23-hifi",
+	.platform_name	= "imx-pcm-audio.0",
+	.codec_name	= "tlv320aic23-codec.0-001a",
+	.cpu_dai = "imx-ssi-dai.0",
 	.ops		= &eukrea_tlv320_snd_ops,
 };
 
 static struct snd_soc_card eukrea_tlv320 = {
 	.name		= "cpuimx-audio",
-	.platform	= &imx_soc_platform,
 	.dai_link	= &eukrea_tlv320_dai,
 	.num_links	= 1,
 };
 
-static struct snd_soc_device eukrea_tlv320_snd_devdata = {
-	.card		= &eukrea_tlv320,
-	.codec_dev	= &soc_codec_dev_tlv320aic23,
-};
-
 static struct platform_device *eukrea_tlv320_snd_device;
 
 static int __init eukrea_tlv320_init(void)
@@ -110,10 +107,7 @@
 	if (!eukrea_tlv320_snd_device)
 		return -ENOMEM;
 
-	eukrea_tlv320_dai.cpu_dai = &imx_ssi_pcm_dai[0];
-
-	platform_set_drvdata(eukrea_tlv320_snd_device, &eukrea_tlv320_snd_devdata);
-	eukrea_tlv320_snd_devdata.dev = &eukrea_tlv320_snd_device->dev;
+	platform_set_drvdata(eukrea_tlv320_snd_device, &eukrea_tlv320);
 	ret = platform_device_add(eukrea_tlv320_snd_device);
 
 	if (ret) {
diff --git a/sound/soc/imx/imx-pcm-dma-mx2.c b/sound/soc/imx/imx-pcm-dma-mx2.c
index 0a595da..fd493ee 100644
--- a/sound/soc/imx/imx-pcm-dma-mx2.c
+++ b/sound/soc/imx/imx-pcm-dma-mx2.c
@@ -103,7 +103,7 @@
 	struct imx_pcm_runtime_data *iprtd = runtime->private_data;
 	int ret;
 
-	dma_params = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
+	dma_params = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 
 	iprtd->dma = imx_dma_request_by_prio(DRV_NAME, DMA_PRIO_HIGH);
 	if (iprtd->dma < 0) {
@@ -213,7 +213,7 @@
 	struct imx_pcm_runtime_data *iprtd = runtime->private_data;
 	int err;
 
-	dma_params = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
+	dma_params = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 
 	iprtd->substream = substream;
 	iprtd->buf = (unsigned int *)substream->dma_buffer.area;
@@ -318,19 +318,42 @@
 	.mmap		= snd_imx_pcm_mmap,
 };
 
-static struct snd_soc_platform imx_soc_platform_dma = {
-	.name		= "imx-audio",
-	.pcm_ops 	= &imx_pcm_ops,
+static struct snd_soc_platform_driver imx_soc_platform_mx2 = {
+	.ops		= &imx_pcm_ops,
 	.pcm_new	= imx_pcm_new,
 	.pcm_free	= imx_pcm_free,
 };
 
-struct snd_soc_platform *imx_ssi_dma_mx2_init(struct platform_device *pdev,
-		struct imx_ssi *ssi)
+static int __devinit imx_soc_platform_probe(struct platform_device *pdev)
 {
-	ssi->dma_params_tx.burstsize = DMA_TXFIFO_BURST;
-	ssi->dma_params_rx.burstsize = DMA_RXFIFO_BURST;
-
-	return &imx_soc_platform_dma;
+	return snd_soc_register_platform(&pdev->dev, &imx_soc_platform_mx2);
 }
 
+static int __devexit imx_soc_platform_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver imx_pcm_driver = {
+	.driver = {
+			.name = "imx-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = imx_soc_platform_probe,
+	.remove = __devexit_p(imx_soc_platform_remove),
+};
+
+static int __init snd_imx_pcm_init(void)
+{
+	return platform_driver_register(&imx_pcm_driver);
+}
+module_init(snd_imx_pcm_init);
+
+static void __exit snd_imx_pcm_exit(void)
+{
+	platform_driver_unregister(&imx_pcm_driver);
+}
+module_exit(snd_imx_pcm_exit);
+
diff --git a/sound/soc/imx/imx-pcm-fiq.c b/sound/soc/imx/imx-pcm-fiq.c
index b2bf272..413b78d 100644
--- a/sound/soc/imx/imx-pcm-fiq.c
+++ b/sound/soc/imx/imx-pcm-fiq.c
@@ -236,6 +236,8 @@
 	.mmap		= snd_imx_pcm_mmap,
 };
 
+static int ssi_irq = 0;
+
 static int imx_pcm_fiq_new(struct snd_card *card, struct snd_soc_dai *dai,
 	struct snd_pcm *pcm)
 {
@@ -245,7 +247,7 @@
 	if (ret)
 		return ret;
 
-	if (dai->playback.channels_min) {
+	if (dai->driver->playback.channels_min) {
 		struct snd_pcm_substream *substream =
 			pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream;
 		struct snd_dma_buffer *buf = &substream->dma_buffer;
@@ -253,7 +255,7 @@
 		imx_ssi_fiq_tx_buffer = (unsigned long)buf->area;
 	}
 
-	if (dai->capture.channels_min) {
+	if (dai->driver->capture.channels_min) {
 		struct snd_pcm_substream *substream =
 			pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream;
 		struct snd_dma_buffer *buf = &substream->dma_buffer;
@@ -267,24 +269,32 @@
 	return 0;
 }
 
-static struct snd_soc_platform imx_soc_platform_fiq = {
-	.pcm_ops 	= &imx_pcm_ops,
+static void imx_pcm_fiq_free(struct snd_pcm *pcm)
+{
+	mxc_set_irq_fiq(ssi_irq, 0);
+	release_fiq(&fh);
+	imx_pcm_free(pcm);
+}
+
+static struct snd_soc_platform_driver imx_soc_platform_fiq = {
+	.ops		= &imx_pcm_ops,
 	.pcm_new	= imx_pcm_fiq_new,
-	.pcm_free	= imx_pcm_free,
+	.pcm_free	= imx_pcm_fiq_free,
 };
 
-struct snd_soc_platform *imx_ssi_fiq_init(struct platform_device *pdev,
-		struct imx_ssi *ssi)
+static int __devinit imx_soc_platform_probe(struct platform_device *pdev)
 {
-	int ret = 0;
+	struct imx_ssi *ssi = platform_get_drvdata(pdev);
+	int ret;
 
 	ret = claim_fiq(&fh);
 	if (ret) {
 		dev_err(&pdev->dev, "failed to claim fiq: %d", ret);
-		return ERR_PTR(ret);
+		return ret;
 	}
 
 	mxc_set_irq_fiq(ssi->irq, 1);
+	ssi_irq = ssi->irq;
 
 	imx_pcm_fiq = ssi->irq;
 
@@ -293,13 +303,43 @@
 	ssi->dma_params_tx.burstsize = 4;
 	ssi->dma_params_rx.burstsize = 6;
 
-	return &imx_soc_platform_fiq;
-}
+	ret = snd_soc_register_platform(&pdev->dev, &imx_soc_platform_fiq);
+	if (ret)
+		goto failed_register;
 
-void imx_ssi_fiq_exit(struct platform_device *pdev,
-		struct imx_ssi *ssi)
-{
-	mxc_set_irq_fiq(ssi->irq, 0);
+	return 0;
+
+failed_register:
+	mxc_set_irq_fiq(ssi_irq, 0);
 	release_fiq(&fh);
+
+	return ret;
 }
 
+static int __devexit imx_soc_platform_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver imx_pcm_driver = {
+	.driver = {
+			.name = "imx-fiq-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = imx_soc_platform_probe,
+	.remove = __devexit_p(imx_soc_platform_remove),
+};
+
+static int __init snd_imx_pcm_init(void)
+{
+	return platform_driver_register(&imx_pcm_driver);
+}
+module_init(snd_imx_pcm_init);
+
+static void __exit snd_imx_pcm_exit(void)
+{
+	platform_driver_unregister(&imx_pcm_driver);
+}
+module_exit(snd_imx_pcm_exit);
diff --git a/sound/soc/imx/imx-ssi.c b/sound/soc/imx/imx-ssi.c
index c81da05..26716e9 100644
--- a/sound/soc/imx/imx-ssi.c
+++ b/sound/soc/imx/imx-ssi.c
@@ -61,7 +61,7 @@
 static int imx_ssi_set_dai_tdm_slot(struct snd_soc_dai *cpu_dai,
 	unsigned int tx_mask, unsigned int rx_mask, int slots, int slot_width)
 {
-	struct imx_ssi *ssi = cpu_dai->private_data;
+	struct imx_ssi *ssi = snd_soc_dai_get_drvdata(cpu_dai);
 	u32 sccr;
 
 	sccr = readl(ssi->base + SSI_STCCR);
@@ -86,7 +86,7 @@
  */
 static int imx_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt)
 {
-	struct imx_ssi *ssi = cpu_dai->private_data;
+	struct imx_ssi *ssi = snd_soc_dai_get_drvdata(cpu_dai);
 	u32 strcr = 0, scr;
 
 	scr = readl(ssi->base + SSI_SCR) & ~(SSI_SCR_SYN | SSI_SCR_NET);
@@ -164,7 +164,7 @@
 static int imx_ssi_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
 				  int clk_id, unsigned int freq, int dir)
 {
-	struct imx_ssi *ssi = cpu_dai->private_data;
+	struct imx_ssi *ssi = snd_soc_dai_get_drvdata(cpu_dai);
 	u32 scr;
 
 	scr = readl(ssi->base + SSI_SCR);
@@ -192,7 +192,7 @@
 static int imx_ssi_set_dai_clkdiv(struct snd_soc_dai *cpu_dai,
 				  int div_id, int div)
 {
-	struct imx_ssi *ssi = cpu_dai->private_data;
+	struct imx_ssi *ssi = snd_soc_dai_get_drvdata(cpu_dai);
 	u32 stccr, srccr;
 
 	stccr = readl(ssi->base + SSI_STCCR);
@@ -241,7 +241,7 @@
 			     struct snd_pcm_hw_params *params,
 			     struct snd_soc_dai *cpu_dai)
 {
-	struct imx_ssi *ssi = cpu_dai->private_data;
+	struct imx_ssi *ssi = snd_soc_dai_get_drvdata(cpu_dai);
 	struct imx_pcm_dma_params *dma_data;
 	u32 reg, sccr;
 
@@ -282,9 +282,7 @@
 static int imx_ssi_trigger(struct snd_pcm_substream *substream, int cmd,
 		struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct imx_ssi *ssi = cpu_dai->private_data;
+	struct imx_ssi *ssi = snd_soc_dai_get_drvdata(dai);
 	unsigned int sier_bits, sier;
 	unsigned int scr;
 
@@ -353,22 +351,6 @@
 	.trigger	= imx_ssi_trigger,
 };
 
-static struct snd_soc_dai imx_ssi_dai = {
-	.playback = {
-		.channels_min = 2,
-		.channels_max = 2,
-		.rates = SNDRV_PCM_RATE_8000_96000,
-		.formats = SNDRV_PCM_FMTBIT_S16_LE,
-	},
-	.capture = {
-		.channels_min = 2,
-		.channels_max = 2,
-		.rates = SNDRV_PCM_RATE_8000_96000,
-		.formats = SNDRV_PCM_FMTBIT_S16_LE,
-	},
-	.ops = &imx_ssi_pcm_dai_ops,
-};
-
 int snd_imx_pcm_mmap(struct snd_pcm_substream *substream,
 		struct vm_area_struct *vma)
 {
@@ -384,6 +366,7 @@
 			runtime->dma_bytes);
 	return ret;
 }
+EXPORT_SYMBOL_GPL(snd_imx_pcm_mmap);
 
 static int imx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
 {
@@ -415,14 +398,14 @@
 		card->dev->dma_mask = &imx_pcm_dmamask;
 	if (!card->dev->coherent_dma_mask)
 		card->dev->coherent_dma_mask = DMA_BIT_MASK(32);
-	if (dai->playback.channels_min) {
+	if (dai->driver->playback.channels_min) {
 		ret = imx_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_PLAYBACK);
 		if (ret)
 			goto out;
 	}
 
-	if (dai->capture.channels_min) {
+	if (dai->driver->capture.channels_min) {
 		ret = imx_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_CAPTURE);
 		if (ret)
@@ -432,6 +415,7 @@
 out:
 	return ret;
 }
+EXPORT_SYMBOL_GPL(imx_pcm_new);
 
 void imx_pcm_free(struct snd_pcm *pcm)
 {
@@ -453,14 +437,40 @@
 		buf->area = NULL;
 	}
 }
+EXPORT_SYMBOL_GPL(imx_pcm_free);
 
-struct snd_soc_platform imx_soc_platform = {
-	.name		= "imx-audio",
+static struct snd_soc_dai_driver imx_ssi_dai = {
+	.playback = {
+		.channels_min = 2,
+		.channels_max = 2,
+		.rates = SNDRV_PCM_RATE_8000_96000,
+		.formats = SNDRV_PCM_FMTBIT_S16_LE,
+	},
+	.capture = {
+		.channels_min = 2,
+		.channels_max = 2,
+		.rates = SNDRV_PCM_RATE_8000_96000,
+		.formats = SNDRV_PCM_FMTBIT_S16_LE,
+	},
+	.ops = &imx_ssi_pcm_dai_ops,
 };
-EXPORT_SYMBOL_GPL(imx_soc_platform);
 
-static struct snd_soc_dai imx_ac97_dai = {
-	.name = "AC97",
+static int imx_ssi_dai_probe(struct snd_soc_dai *dai)
+{
+	struct imx_ssi *ssi = dev_get_drvdata(dai->dev);
+	uint32_t val;
+
+	snd_soc_dai_set_drvdata(dai, ssi);
+
+	val = SSI_SFCSR_TFWM0(ssi->dma_params_tx.burstsize) |
+		SSI_SFCSR_RFWM0(ssi->dma_params_rx.burstsize);
+	writel(val, ssi->base + SSI_SFCSR);
+
+	return 0;
+}
+
+static struct snd_soc_dai_driver imx_ac97_dai = {
+	.probe = imx_ssi_dai_probe,
 	.ac97_control = 1,
 	.playback = {
 		.stream_name = "AC97 Playback",
@@ -580,25 +590,18 @@
 };
 EXPORT_SYMBOL_GPL(soc_ac97_ops);
 
-struct snd_soc_dai imx_ssi_pcm_dai[2];
-EXPORT_SYMBOL_GPL(imx_ssi_pcm_dai);
-
 static int imx_ssi_probe(struct platform_device *pdev)
 {
 	struct resource *res;
 	struct imx_ssi *ssi;
 	struct imx_ssi_platform_data *pdata = pdev->dev.platform_data;
-	struct snd_soc_platform *platform;
 	int ret = 0;
-	unsigned int val;
-	struct snd_soc_dai *dai = &imx_ssi_pcm_dai[pdev->id];
-
-	if (dai->id >= ARRAY_SIZE(imx_ssi_pcm_dai))
-		return -EINVAL;
+	struct snd_soc_dai_driver *dai;
 
 	ssi = kzalloc(sizeof(*ssi), GFP_KERNEL);
 	if (!ssi)
 		return -ENOMEM;
+	dev_set_drvdata(&pdev->dev, ssi);
 
 	if (pdata) {
 		ssi->ac97_reset = pdata->ac97_reset;
@@ -643,9 +646,9 @@
 		}
 		ac97_ssi = ssi;
 		setup_channel_to_ac97(ssi);
-		memcpy(dai, &imx_ac97_dai, sizeof(imx_ac97_dai));
+		dai = &imx_ac97_dai;
 	} else
-		memcpy(dai, &imx_ssi_dai, sizeof(imx_ssi_dai));
+		dai = &imx_ssi_dai;
 
 	writel(0x0, ssi->base + SSI_SIER);
 
@@ -660,37 +663,36 @@
 	if (res)
 		ssi->dma_params_rx.dma = res->start;
 
-	dai->id = pdev->id;
-	dai->dev = &pdev->dev;
-	dai->name = kasprintf(GFP_KERNEL, "imx-ssi.%d", pdev->id);
-	dai->private_data = ssi;
-
 	if ((cpu_is_mx27() || cpu_is_mx21()) &&
 			!(ssi->flags & IMX_SSI_USE_AC97) &&
 			(ssi->flags & IMX_SSI_DMA)) {
 		ssi->flags |= IMX_SSI_DMA;
-		platform = imx_ssi_dma_mx2_init(pdev, ssi);
-	} else
-		platform = imx_ssi_fiq_init(pdev, ssi);
+	}
 
-	imx_soc_platform.pcm_ops = platform->pcm_ops;
-	imx_soc_platform.pcm_new = platform->pcm_new;
-	imx_soc_platform.pcm_free = platform->pcm_free;
+	platform_set_drvdata(pdev, ssi);
 
-	val = SSI_SFCSR_TFWM0(ssi->dma_params_tx.burstsize) |
-		SSI_SFCSR_RFWM0(ssi->dma_params_rx.burstsize);
-	writel(val, ssi->base + SSI_SFCSR);
-
-	ret = snd_soc_register_dai(dai);
+	ret = snd_soc_register_dai(&pdev->dev, dai);
 	if (ret) {
 		dev_err(&pdev->dev, "register DAI failed\n");
 		goto failed_register;
 	}
 
-	platform_set_drvdata(pdev, ssi);
+	ssi->soc_platform_pdev = platform_device_alloc("imx-fiq-pcm-audio", pdev->id);
+	if (!ssi->soc_platform_pdev)
+		goto failed_pdev_alloc;
+	platform_set_drvdata(ssi->soc_platform_pdev, ssi);
+	ret = platform_device_add(ssi->soc_platform_pdev);
+	if (ret) {
+		dev_err(&pdev->dev, "failed to add platform device\n");
+		goto failed_pdev_add;
+	}
 
 	return 0;
 
+failed_pdev_add:
+	platform_device_put(ssi->soc_platform_pdev);
+failed_pdev_alloc:
+	snd_soc_unregister_dai(&pdev->dev);
 failed_register:
 failed_ac97:
 	iounmap(ssi->base);
@@ -709,16 +711,15 @@
 {
 	struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	struct imx_ssi *ssi = platform_get_drvdata(pdev);
-	struct snd_soc_dai *dai = &imx_ssi_pcm_dai[pdev->id];
 
-	snd_soc_unregister_dai(dai);
+	platform_device_del(ssi->soc_platform_pdev);
+	platform_device_put(ssi->soc_platform_pdev);
+
+	snd_soc_unregister_dai(&pdev->dev);
 
 	if (ssi->flags & IMX_SSI_USE_AC97)
 		ac97_ssi = NULL;
 
-	if (!(ssi->flags & IMX_SSI_DMA))
-		imx_ssi_fiq_exit(pdev, ssi);
-
 	iounmap(ssi->base);
 	release_mem_region(res->start, resource_size(res));
 	clk_disable(ssi->clk);
@@ -733,34 +734,19 @@
 	.remove = __devexit_p(imx_ssi_remove),
 
 	.driver = {
-		.name = DRV_NAME,
+		.name = "imx-ssi-dai",
 		.owner = THIS_MODULE,
 	},
 };
 
 static int __init imx_ssi_init(void)
 {
-	int ret;
-
-	ret = snd_soc_register_platform(&imx_soc_platform);
-	if (ret) {
-		pr_err("failed to register soc platform: %d\n", ret);
-		return ret;
-	}
-
-	ret = platform_driver_register(&imx_ssi_driver);
-	if (ret) {
-		snd_soc_unregister_platform(&imx_soc_platform);
-		return ret;
-	}
-
-	return 0;
+	return platform_driver_register(&imx_ssi_driver);
 }
 
 static void __exit imx_ssi_exit(void)
 {
 	platform_driver_unregister(&imx_ssi_driver);
-	snd_soc_unregister_platform(&imx_soc_platform);
 }
 
 module_init(imx_ssi_init);
diff --git a/sound/soc/imx/imx-ssi.h b/sound/soc/imx/imx-ssi.h
index 55f26eb..53b780d 100644
--- a/sound/soc/imx/imx-ssi.h
+++ b/sound/soc/imx/imx-ssi.h
@@ -183,9 +183,6 @@
 #define IMX_SSI_RX_DIV_PSR	4
 #define IMX_SSI_RX_DIV_PM	5
 
-extern struct snd_soc_dai imx_ssi_pcm_dai[2];
-extern struct snd_soc_platform imx_soc_platform;
-
 #define DRV_NAME "imx-ssi"
 
 struct imx_pcm_dma_params {
@@ -197,7 +194,7 @@
 struct imx_ssi {
 	struct platform_device *ac97_dev;
 
-	struct snd_soc_device imx_ac97;
+	struct snd_soc_dai *imx_ac97;
 	struct clk *clk;
 	void __iomem *base;
 	int irq;
@@ -213,6 +210,8 @@
 	struct imx_pcm_dma_params	dma_params_tx;
 
 	int enabled;
+
+	struct platform_device *soc_platform_pdev;
 };
 
 struct snd_soc_platform *imx_ssi_fiq_init(struct platform_device *pdev,
diff --git a/sound/soc/imx/phycore-ac97.c b/sound/soc/imx/phycore-ac97.c
index a8307d5..65f0f99 100644
--- a/sound/soc/imx/phycore-ac97.c
+++ b/sound/soc/imx/phycore-ac97.c
@@ -32,23 +32,20 @@
 	{
 		.name		= "HiFi",
 		.stream_name	= "HiFi",
-		.codec_dai	= &wm9712_dai[WM9712_DAI_AC97_HIFI],
+		.codec_dai_name		= "wm9712-hifi",
+		.codec_name	= "wm9712-codec",
+		.cpu_dai_name	= "imx-ssi-dai.0",
+		.platform_name	= "imx-fiq-pcm-audio.0",
 		.ops		= &imx_phycore_hifi_ops,
 	},
 };
 
 static struct snd_soc_card imx_phycore = {
 	.name		= "PhyCORE-audio",
-	.platform	= &imx_soc_platform,
 	.dai_link	= imx_phycore_dai_ac97,
 	.num_links	= ARRAY_SIZE(imx_phycore_dai_ac97),
 };
 
-static struct snd_soc_device imx_phycore_snd_devdata = {
-	.card		= &imx_phycore,
-	.codec_dev	= &soc_codec_dev_wm9712,
-};
-
 static struct platform_device *imx_phycore_snd_device;
 
 static int __init imx_phycore_init(void)
@@ -63,10 +60,12 @@
 	if (!imx_phycore_snd_device)
 		return -ENOMEM;
 
-	imx_phycore_dai_ac97[0].cpu_dai = &imx_ssi_pcm_dai[0];
+	platform_set_drvdata(imx_phycore_snd_device, &imx_phycore);
+	ret = platform_device_add(imx_phycore_snd_device);
 
-	platform_set_drvdata(imx_phycore_snd_device, &imx_phycore_snd_devdata);
-	imx_phycore_snd_devdata.dev = &imx_phycore_snd_device->dev;
+	imx_phycore_snd_device = platform_device_alloc("wm9712-codec", -1);
+	if (!imx_phycore_snd_device)
+		return -ENOMEM;
 	ret = platform_device_add(imx_phycore_snd_device);
 
 	if (ret) {
diff --git a/sound/soc/imx/wm1133-ev1.c b/sound/soc/imx/wm1133-ev1.c
index a6e7d94..7406863 100644
--- a/sound/soc/imx/wm1133-ev1.c
+++ b/sound/soc/imx/wm1133-ev1.c
@@ -82,8 +82,8 @@
 				struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int i, found = 0;
 	snd_pcm_format_t format = params_format(params);
 	unsigned int rate = params_rate(params);
@@ -210,9 +210,9 @@
 	{ .pin = "Mic2 Jack", .mask = SND_JACK_MICROPHONE },
 };
 
-static int wm1133_ev1_init(struct snd_soc_codec *codec)
+static int wm1133_ev1_init(struct snd_soc_pcm_runtime *rtd)
 {
-	struct snd_soc_card *card = codec->socdev->card;
+	struct snd_soc_codec *codec = rtd->codec;
 
 	snd_soc_dapm_new_controls(codec, wm1133_ev1_widgets,
 				  ARRAY_SIZE(wm1133_ev1_widgets));
@@ -221,13 +221,13 @@
 				ARRAY_SIZE(wm1133_ev1_map));
 
 	/* Headphone jack detection */
-	snd_soc_jack_new(card, "Headphone", SND_JACK_HEADPHONE, &hp_jack);
+	snd_soc_jack_new(codec, "Headphone", SND_JACK_HEADPHONE, &hp_jack);
 	snd_soc_jack_add_pins(&hp_jack, ARRAY_SIZE(hp_jack_pins),
 			      hp_jack_pins);
 	wm8350_hp_jack_detect(codec, WM8350_JDR, &hp_jack, SND_JACK_HEADPHONE);
 
 	/* Microphone jack detection */
-	snd_soc_jack_new(card, "Microphone",
+	snd_soc_jack_new(codec, "Microphone",
 			 SND_JACK_MICROPHONE | SND_JACK_BTN_0, &mic_jack);
 	snd_soc_jack_add_pins(&mic_jack, ARRAY_SIZE(mic_jack_pins),
 			      mic_jack_pins);
@@ -243,8 +243,10 @@
 static struct snd_soc_dai_link wm1133_ev1_dai = {
 	.name = "WM1133-EV1",
 	.stream_name = "Audio",
-	.cpu_dai = &imx_ssi_pcm_dai[0],
-	.codec_dai = &wm8350_dai,
+	.cpu_dai_name = "imx-ssi-dai.0",
+	.codec_dai_name = "wm8350-hifi",
+	.platform_name = "imx-fiq-pcm-audio.0",
+	.codec_name = "wm8350-codec.0-0x1a",
 	.init = wm1133_ev1_init,
 	.ops = &wm1133_ev1_ops,
 	.symmetric_rates = 1,
@@ -252,16 +254,10 @@
 
 static struct snd_soc_card wm1133_ev1 = {
 	.name = "WM1133-EV1",
-	.platform = &imx_soc_platform,
 	.dai_link = &wm1133_ev1_dai,
 	.num_links = 1,
 };
 
-static struct snd_soc_device wm1133_ev1_snd_devdata = {
-	.card = &wm1133_ev1,
-	.codec_dev = &soc_codec_dev_wm8350,
-};
-
 static struct platform_device *wm1133_ev1_snd_device;
 
 static int __init wm1133_ev1_audio_init(void)
@@ -286,8 +282,7 @@
 	if (!wm1133_ev1_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(wm1133_ev1_snd_device, &wm1133_ev1_snd_devdata);
-	wm1133_ev1_snd_devdata.dev = &wm1133_ev1_snd_device->dev;
+	platform_set_drvdata(wm1133_ev1_snd_device, &wm1133_ev1);
 	ret = platform_device_add(wm1133_ev1_snd_device);
 
 	if (ret)
diff --git a/sound/soc/jz4740/jz4740-i2s.c b/sound/soc/jz4740/jz4740-i2s.c
index eb518f0..f3cffd1 100644
--- a/sound/soc/jz4740/jz4740-i2s.c
+++ b/sound/soc/jz4740/jz4740-i2s.c
@@ -106,15 +106,10 @@
 	writel(value, i2s->base + reg);
 }
 
-static inline struct jz4740_i2s *jz4740_dai_to_i2s(struct snd_soc_dai *dai)
-{
-	return dai->private_data;
-}
-
 static int jz4740_i2s_startup(struct snd_pcm_substream *substream,
 	struct snd_soc_dai *dai)
 {
-	struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
+	struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
 	uint32_t conf, ctrl;
 
 	if (dai->active)
@@ -136,7 +131,7 @@
 static void jz4740_i2s_shutdown(struct snd_pcm_substream *substream,
 	struct snd_soc_dai *dai)
 {
-	struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
+	struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
 	uint32_t conf;
 
 	if (!dai->active)
@@ -152,7 +147,7 @@
 static int jz4740_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
 	struct snd_soc_dai *dai)
 {
-	struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
+	struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
 
 	uint32_t ctrl;
 	uint32_t mask;
@@ -186,7 +181,7 @@
 
 static int jz4740_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
 {
-	struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
+	struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
 
 	uint32_t format = 0;
 	uint32_t conf;
@@ -238,7 +233,7 @@
 static int jz4740_i2s_hw_params(struct snd_pcm_substream *substream,
 	struct snd_pcm_hw_params *params, struct snd_soc_dai *dai)
 {
-	struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
+	struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
 	enum jz4740_dma_width dma_width;
 	struct jz4740_pcm_config *pcm_config;
 	unsigned int sample_size;
@@ -288,7 +283,7 @@
 static int jz4740_i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id,
 	unsigned int freq, int dir)
 {
-	struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
+	struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
 	struct clk *parent;
 	int ret = 0;
 
@@ -312,7 +307,7 @@
 
 static int jz4740_i2s_suspend(struct snd_soc_dai *dai)
 {
-	struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
+	struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
 	uint32_t conf;
 
 	if (dai->active) {
@@ -330,7 +325,7 @@
 
 static int jz4740_i2s_resume(struct snd_soc_dai *dai)
 {
-	struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
+	struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
 	uint32_t conf;
 
 	clk_enable(i2s->clk_aic);
@@ -346,58 +341,7 @@
 	return 0;
 }
 
-static int jz4740_i2s_probe(struct platform_device *pdev, struct snd_soc_dai *dai)
-{
-	struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-	uint32_t conf;
-
-	conf = (7 << JZ_AIC_CONF_FIFO_RX_THRESHOLD_OFFSET) |
-		(8 << JZ_AIC_CONF_FIFO_TX_THRESHOLD_OFFSET) |
-		JZ_AIC_CONF_OVERFLOW_PLAY_LAST |
-		JZ_AIC_CONF_I2S |
-		JZ_AIC_CONF_INTERNAL_CODEC;
-
-	jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, JZ_AIC_CONF_RESET);
-	jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf);
-
-	return 0;
-}
-
-static struct snd_soc_dai_ops jz4740_i2s_dai_ops = {
-	.startup = jz4740_i2s_startup,
-	.shutdown = jz4740_i2s_shutdown,
-	.trigger = jz4740_i2s_trigger,
-	.hw_params = jz4740_i2s_hw_params,
-	.set_fmt = jz4740_i2s_set_fmt,
-	.set_sysclk = jz4740_i2s_set_sysclk,
-};
-
-#define JZ4740_I2S_FMTS (SNDRV_PCM_FMTBIT_S8 | \
-		SNDRV_PCM_FMTBIT_S16_LE)
-
-struct snd_soc_dai jz4740_i2s_dai = {
-	.name = "jz4740-i2s",
-	.probe = jz4740_i2s_probe,
-	.playback = {
-		.channels_min = 1,
-		.channels_max = 2,
-		.rates = SNDRV_PCM_RATE_8000_48000,
-		.formats = JZ4740_I2S_FMTS,
-	},
-	.capture = {
-		.channels_min = 2,
-		.channels_max = 2,
-		.rates = SNDRV_PCM_RATE_8000_48000,
-		.formats = JZ4740_I2S_FMTS,
-	},
-	.symmetric_rates = 1,
-	.ops = &jz4740_i2s_dai_ops,
-	.suspend = jz4740_i2s_suspend,
-	.resume = jz4740_i2s_resume,
-};
-EXPORT_SYMBOL_GPL(jz4740_i2s_dai);
-
-static void __devinit jz4740_i2c_init_pcm_config(struct jz4740_i2s *i2s)
+static void jz4740_i2c_init_pcm_config(struct jz4740_i2s *i2s)
 {
 	struct jz4740_dma_config *dma_config;
 
@@ -420,6 +364,68 @@
 	i2s->pcm_config_capture.fifo_addr = i2s->phys_base + JZ_REG_AIC_FIFO;
 }
 
+static int jz4740_i2s_dai_probe(struct snd_soc_dai *dai)
+{
+	struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
+	uint32_t conf;
+
+	clk_enable(i2s->clk_aic);
+
+	jz4740_i2c_init_pcm_config(i2s);
+
+	conf = (7 << JZ_AIC_CONF_FIFO_RX_THRESHOLD_OFFSET) |
+		(8 << JZ_AIC_CONF_FIFO_TX_THRESHOLD_OFFSET) |
+		JZ_AIC_CONF_OVERFLOW_PLAY_LAST |
+		JZ_AIC_CONF_I2S |
+		JZ_AIC_CONF_INTERNAL_CODEC;
+
+	jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, JZ_AIC_CONF_RESET);
+	jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf);
+
+	return 0;
+}
+
+static int jz4740_i2s_dai_remove(struct snd_soc_dai *dai)
+{
+	struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
+
+	clk_disable(i2s->clk_aic);
+	return 0;
+}
+
+static struct snd_soc_dai_ops jz4740_i2s_dai_ops = {
+	.startup = jz4740_i2s_startup,
+	.shutdown = jz4740_i2s_shutdown,
+	.trigger = jz4740_i2s_trigger,
+	.hw_params = jz4740_i2s_hw_params,
+	.set_fmt = jz4740_i2s_set_fmt,
+	.set_sysclk = jz4740_i2s_set_sysclk,
+};
+
+#define JZ4740_I2S_FMTS (SNDRV_PCM_FMTBIT_S8 | \
+		SNDRV_PCM_FMTBIT_S16_LE)
+
+static struct snd_soc_dai_driver jz4740_i2s_dai = {
+	.probe = jz4740_i2s_dai_probe,
+	.remove = jz4740_i2s_dai_remove,
+	.playback = {
+		.channels_min = 1,
+		.channels_max = 2,
+		.rates = SNDRV_PCM_RATE_8000_48000,
+		.formats = JZ4740_I2S_FMTS,
+	},
+	.capture = {
+		.channels_min = 2,
+		.channels_max = 2,
+		.rates = SNDRV_PCM_RATE_8000_48000,
+		.formats = JZ4740_I2S_FMTS,
+	},
+	.symmetric_rates = 1,
+	.ops = &jz4740_i2s_dai_ops,
+	.suspend = jz4740_i2s_suspend,
+	.resume = jz4740_i2s_resume,
+};
+
 static int __devinit jz4740_i2s_dev_probe(struct platform_device *pdev)
 {
 	struct jz4740_i2s *i2s;
@@ -463,24 +469,17 @@
 		goto err_clk_put_aic;
 	}
 
-	clk_enable(i2s->clk_aic);
-
-	jz4740_i2c_init_pcm_config(i2s);
-
-	jz4740_i2s_dai.private_data = i2s;
-	ret = snd_soc_register_dai(&jz4740_i2s_dai);
+	platform_set_drvdata(pdev, i2s);
+	ret = snd_soc_register_dai(&pdev->dev, &jz4740_i2s_dai);
 
 	if (ret) {
 		dev_err(&pdev->dev, "Failed to register DAI\n");
 		goto err_clk_put_i2s;
 	}
 
-	platform_set_drvdata(pdev, i2s);
-
 	return 0;
 
 err_clk_put_i2s:
-	clk_disable(i2s->clk_aic);
 	clk_put(i2s->clk_i2s);
 err_clk_put_aic:
 	clk_put(i2s->clk_aic);
@@ -498,9 +497,8 @@
 {
 	struct jz4740_i2s *i2s = platform_get_drvdata(pdev);
 
-	snd_soc_unregister_dai(&jz4740_i2s_dai);
+	snd_soc_unregister_dai(&pdev->dev);
 
-	clk_disable(i2s->clk_aic);
 	clk_put(i2s->clk_i2s);
 	clk_put(i2s->clk_aic);
 
diff --git a/sound/soc/jz4740/jz4740-i2s.h b/sound/soc/jz4740/jz4740-i2s.h
index da22ed8..5e49339 100644
--- a/sound/soc/jz4740/jz4740-i2s.h
+++ b/sound/soc/jz4740/jz4740-i2s.h
@@ -13,6 +13,4 @@
 
 #define JZ4740_I2S_BIT_CLK		0
 
-extern struct snd_soc_dai jz4740_i2s_dai;
-
 #endif
diff --git a/sound/soc/jz4740/jz4740-pcm.c b/sound/soc/jz4740/jz4740-pcm.c
index ee68d85..fb1483f 100644
--- a/sound/soc/jz4740/jz4740-pcm.c
+++ b/sound/soc/jz4740/jz4740-pcm.c
@@ -109,7 +109,7 @@
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
 	struct jz4740_pcm_config *config;
 
-	config = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
+	config = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 
 	if (!config)
 		return 0;
@@ -310,14 +310,14 @@
 	if (!card->dev->coherent_dma_mask)
 		card->dev->coherent_dma_mask = DMA_BIT_MASK(32);
 
-	if (dai->playback.channels_min) {
+	if (dai->driver->playback.channels_min) {
 		ret = jz4740_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_PLAYBACK);
 		if (ret)
 			goto err;
 	}
 
-	if (dai->capture.channels_min) {
+	if (dai->driver->capture.channels_min) {
 		ret = jz4740_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_CAPTURE);
 		if (ret)
@@ -328,22 +328,20 @@
 	return ret;
 }
 
-struct snd_soc_platform jz4740_soc_platform = {
-		.name		= "jz4740-pcm",
-		.pcm_ops	= &jz4740_pcm_ops,
+static struct snd_soc_platform_driver jz4740_soc_platform = {
+		.ops		= &jz4740_pcm_ops,
 		.pcm_new	= jz4740_pcm_new,
 		.pcm_free	= jz4740_pcm_free,
 };
-EXPORT_SYMBOL_GPL(jz4740_soc_platform);
 
 static int __devinit jz4740_pcm_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_platform(&jz4740_soc_platform);
+	return snd_soc_register_platform(&pdev->dev, &jz4740_soc_platform);
 }
 
 static int __devexit jz4740_pcm_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_platform(&jz4740_soc_platform);
+	snd_soc_unregister_platform(&pdev->dev);
 	return 0;
 }
 
@@ -351,7 +349,7 @@
 	.probe = jz4740_pcm_probe,
 	.remove = __devexit_p(jz4740_pcm_remove),
 	.driver = {
-		.name = "jz4740-pcm",
+		.name = "jz4740-pcm-audio",
 		.owner = THIS_MODULE,
 	},
 };
diff --git a/sound/soc/jz4740/jz4740-pcm.h b/sound/soc/jz4740/jz4740-pcm.h
index e3f221e..1220cbb 100644
--- a/sound/soc/jz4740/jz4740-pcm.h
+++ b/sound/soc/jz4740/jz4740-pcm.h
@@ -11,8 +11,6 @@
 #include <linux/dma-mapping.h>
 #include <asm/mach-jz4740/dma.h>
 
-/* platform data */
-extern struct snd_soc_platform jz4740_soc_platform;
 
 struct jz4740_pcm_config {
 	struct jz4740_dma_config dma_config;
diff --git a/sound/soc/jz4740/qi_lb60.c b/sound/soc/jz4740/qi_lb60.c
index f15f491..ef1a99e 100644
--- a/sound/soc/jz4740/qi_lb60.c
+++ b/sound/soc/jz4740/qi_lb60.c
@@ -22,11 +22,6 @@
 #include <sound/soc-dapm.h>
 #include <linux/gpio.h>
 
-#include "../codecs/jz4740.h"
-#include "jz4740-pcm.h"
-#include "jz4740-i2s.h"
-
-
 #define QI_LB60_SND_GPIO JZ_GPIO_PORTB(29)
 #define QI_LB60_AMP_GPIO JZ_GPIO_PORTD(4)
 
@@ -60,10 +55,11 @@
 			SND_SOC_DAIFMT_NB_NF | \
 			SND_SOC_DAIFMT_CBM_CFM)
 
-static int qi_lb60_codec_init(struct snd_soc_codec *codec)
+static int qi_lb60_codec_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret;
-	struct snd_soc_dai *cpu_dai = codec->socdev->card->dai_link->cpu_dai;
 
 	snd_soc_dapm_nc_pin(codec, "LIN");
 	snd_soc_dapm_nc_pin(codec, "RIN");
@@ -84,8 +80,10 @@
 static struct snd_soc_dai_link qi_lb60_dai = {
 	.name = "jz4740",
 	.stream_name = "jz4740",
-	.cpu_dai = &jz4740_i2s_dai,
-	.codec_dai = &jz4740_codec_dai,
+	.cpu_dai_name = "jz4740-i2s",
+	.platform_name = "jz4740-pcm-audio",
+	.codec_dai_name = "jz4740-hifi",
+	.codec_name = "jz4740-codec",
 	.init = qi_lb60_codec_init,
 };
 
@@ -93,12 +91,6 @@
 	.name = "QI LB60",
 	.dai_link = &qi_lb60_dai,
 	.num_links = 1,
-	.platform = &jz4740_soc_platform,
-};
-
-static struct snd_soc_device qi_lb60_snd_devdata = {
-	.card = &qi_lb60,
-	.codec_dev = &soc_codec_dev_jz4740_codec,
 };
 
 static struct platform_device *qi_lb60_snd_device;
@@ -129,8 +121,7 @@
 	gpio_direction_output(QI_LB60_SND_GPIO, 0);
 	gpio_direction_output(QI_LB60_AMP_GPIO, 0);
 
-	platform_set_drvdata(qi_lb60_snd_device, &qi_lb60_snd_devdata);
-	qi_lb60_snd_devdata.dev = &qi_lb60_snd_device->dev;
+	platform_set_drvdata(qi_lb60_snd_device, &qi_lb60);
 
 	ret = platform_device_add(qi_lb60_snd_device);
 	if (ret) {
diff --git a/sound/soc/kirkwood/kirkwood-dma.c b/sound/soc/kirkwood/kirkwood-dma.c
index a30205b..0fd6a63 100644
--- a/sound/soc/kirkwood/kirkwood-dma.c
+++ b/sound/soc/kirkwood/kirkwood-dma.c
@@ -2,6 +2,7 @@
  * kirkwood-dma.c
  *
  * (c) 2010 Arnaud Patard <apatard@mandriva.com>
+ * (c) 2010 Arnaud Patard <arnaud.patard@rtp-net.org>
  *
  *  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
@@ -18,7 +19,6 @@
 #include <linux/dma-mapping.h>
 #include <linux/mbus.h>
 #include <sound/soc.h>
-#include "kirkwood-dma.h"
 #include "kirkwood.h"
 
 #define KIRKWOOD_RATES \
@@ -123,9 +123,10 @@
 	int err;
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct snd_soc_pcm_runtime *soc_runtime = substream->private_data;
-	struct snd_soc_dai *cpu_dai = soc_runtime->dai->cpu_dai;
+	struct snd_soc_platform *platform = soc_runtime->platform;
+	struct snd_soc_dai *cpu_dai = soc_runtime->cpu_dai;
 	struct kirkwood_dma_data *priv;
-	struct kirkwood_dma_priv *prdata = cpu_dai->private_data;
+	struct kirkwood_dma_priv *prdata = snd_soc_platform_get_drvdata(platform);
 	unsigned long addr;
 
 	priv = snd_soc_dai_get_dma_data(cpu_dai, substream);
@@ -151,7 +152,7 @@
 	if (err < 0)
 		return err;
 
-	if (soc_runtime->dai->cpu_dai->private_data == NULL) {
+	if (prdata == NULL) {
 		prdata = kzalloc(sizeof(struct kirkwood_dma_priv), GFP_KERNEL);
 		if (prdata == NULL)
 			return -ENOMEM;
@@ -165,7 +166,7 @@
 			return -EBUSY;
 		}
 
-		soc_runtime->dai->cpu_dai->private_data = prdata;
+		snd_soc_platform_set_drvdata(platform, prdata);
 
 		/*
 		 * Enable Error interrupts. We're only ack'ing them but
@@ -191,8 +192,9 @@
 static int kirkwood_dma_close(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *soc_runtime = substream->private_data;
-	struct snd_soc_dai *cpu_dai = soc_runtime->dai->cpu_dai;
-	struct kirkwood_dma_priv *prdata = cpu_dai->private_data;
+	struct snd_soc_dai *cpu_dai = soc_runtime->cpu_dai;
+	struct snd_soc_platform *platform = soc_runtime->platform;
+	struct kirkwood_dma_priv *prdata = snd_soc_platform_get_drvdata(platform);
 	struct kirkwood_dma_data *priv;
 
 	priv = snd_soc_dai_get_dma_data(cpu_dai, substream);
@@ -209,7 +211,7 @@
 		writel(0, priv->io + KIRKWOOD_ERR_MASK);
 		free_irq(priv->irq, prdata);
 		kfree(prdata);
-		soc_runtime->dai->cpu_dai->private_data = NULL;
+		snd_soc_platform_set_drvdata(platform, NULL);
 	}
 
 	return 0;
@@ -236,7 +238,7 @@
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct snd_soc_pcm_runtime *soc_runtime = substream->private_data;
-	struct snd_soc_dai *cpu_dai = soc_runtime->dai->cpu_dai;
+	struct snd_soc_dai *cpu_dai = soc_runtime->cpu_dai;
 	struct kirkwood_dma_data *priv;
 	unsigned long size, count;
 
@@ -265,7 +267,7 @@
 						*substream)
 {
 	struct snd_soc_pcm_runtime *soc_runtime = substream->private_data;
-	struct snd_soc_dai *cpu_dai = soc_runtime->dai->cpu_dai;
+	struct snd_soc_dai *cpu_dai = soc_runtime->cpu_dai;
 	struct kirkwood_dma_data *priv;
 	snd_pcm_uframes_t count;
 
@@ -320,14 +322,14 @@
 	if (!card->dev->coherent_dma_mask)
 		card->dev->coherent_dma_mask = 0xffffffff;
 
-	if (dai->playback.channels_min) {
+	if (dai->driver->playback.channels_min) {
 		ret = kirkwood_dma_preallocate_dma_buffer(pcm,
 				SNDRV_PCM_STREAM_PLAYBACK);
 		if (ret)
 			return ret;
 	}
 
-	if (dai->capture.channels_min) {
+	if (dai->driver->capture.channels_min) {
 		ret = kirkwood_dma_preallocate_dma_buffer(pcm,
 				SNDRV_PCM_STREAM_CAPTURE);
 		if (ret)
@@ -357,27 +359,46 @@
 	}
 }
 
-struct snd_soc_platform kirkwood_soc_platform = {
-	.name		= "kirkwood-dma",
-	.pcm_ops	= &kirkwood_dma_ops,
+static struct snd_soc_platform_driver kirkwood_soc_platform = {
+	.ops		= &kirkwood_dma_ops,
 	.pcm_new	= kirkwood_dma_new,
 	.pcm_free	= kirkwood_dma_free_dma_buffers,
 };
-EXPORT_SYMBOL_GPL(kirkwood_soc_platform);
 
-static int __init kirkwood_soc_platform_init(void)
+static int __devinit kirkwood_soc_platform_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_platform(&kirkwood_soc_platform);
+	return snd_soc_register_platform(&pdev->dev, &kirkwood_soc_platform);
 }
-module_init(kirkwood_soc_platform_init);
 
-static void __exit kirkwood_soc_platform_exit(void)
+static int __devexit kirkwood_soc_platform_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_platform(&kirkwood_soc_platform);
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
 }
-module_exit(kirkwood_soc_platform_exit);
 
-MODULE_AUTHOR("Arnaud Patard <apatard@mandriva.com>");
+static struct platform_driver kirkwood_pcm_driver = {
+	.driver = {
+			.name = "kirkwood-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = kirkwood_soc_platform_probe,
+	.remove = __devexit_p(kirkwood_soc_platform_remove),
+};
+
+static int __init kirkwood_pcm_init(void)
+{
+	return platform_driver_register(&kirkwood_pcm_driver);
+}
+module_init(kirkwood_pcm_init);
+
+static void __exit kirkwood_pcm_exit(void)
+{
+	platform_driver_unregister(&kirkwood_pcm_driver);
+}
+module_exit(kirkwood_pcm_exit);
+
+MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>");
 MODULE_DESCRIPTION("Marvell Kirkwood Audio DMA module");
 MODULE_LICENSE("GPL");
-
+MODULE_ALIAS("platform:kirkwood-pcm-audio");
diff --git a/sound/soc/kirkwood/kirkwood-dma.h b/sound/soc/kirkwood/kirkwood-dma.h
deleted file mode 100644
index ba4454c..0000000
--- a/sound/soc/kirkwood/kirkwood-dma.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * kirkwood-dma.h
- *
- * (c) 2010 Arnaud Patard <apatard@mandriva.com>
- *
- *  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;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-
-#ifndef _KIRKWOOD_DMA_H
-#define _KIRKWOOD_DMA_H
-
-extern struct snd_soc_platform kirkwood_soc_platform;
-
-#endif
diff --git a/sound/soc/kirkwood/kirkwood-i2s.c b/sound/soc/kirkwood/kirkwood-i2s.c
index 981ffc2..a33fc51 100644
--- a/sound/soc/kirkwood/kirkwood-i2s.c
+++ b/sound/soc/kirkwood/kirkwood-i2s.c
@@ -2,6 +2,7 @@
  * kirkwood-i2s.c
  *
  * (c) 2010 Arnaud Patard <apatard@mandriva.com>
+ * (c) 2010 Arnaud Patard <arnaud.patard@rtp-net.org>
  *
  *  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
@@ -20,7 +21,6 @@
 #include <sound/pcm_params.h>
 #include <sound/soc.h>
 #include <plat/audio.h>
-#include "kirkwood-i2s.h"
 #include "kirkwood.h"
 
 #define DRV_NAME	"kirkwood-i2s"
@@ -33,13 +33,10 @@
 	 SNDRV_PCM_FMTBIT_S24_LE | \
 	 SNDRV_PCM_FMTBIT_S32_LE)
 
-
-struct snd_soc_dai kirkwood_i2s_dai;
-static struct kirkwood_dma_data *priv;
-
 static int kirkwood_i2s_set_fmt(struct snd_soc_dai *cpu_dai,
 		unsigned int fmt)
 {
+	struct kirkwood_dma_data *priv = snd_soc_dai_get_drvdata(cpu_dai);
 	unsigned long mask;
 	unsigned long value;
 
@@ -101,10 +98,20 @@
 	} while (value == 0);
 }
 
+static int kirkwood_i2s_startup(struct snd_pcm_substream *substream,
+		struct snd_soc_dai *dai)
+{
+	struct kirkwood_dma_data *priv = snd_soc_dai_get_drvdata(dai);
+
+	snd_soc_dai_set_dma_data(dai, substream, priv);
+	return 0;
+}
+
 static int kirkwood_i2s_hw_params(struct snd_pcm_substream *substream,
 				 struct snd_pcm_hw_params *params,
 				 struct snd_soc_dai *dai)
 {
+	struct kirkwood_dma_data *priv = snd_soc_dai_get_drvdata(dai);
 	unsigned int i2s_reg, reg;
 	unsigned long i2s_value, value;
 
@@ -171,6 +178,7 @@
 static int kirkwood_i2s_play_trigger(struct snd_pcm_substream *substream,
 				int cmd, struct snd_soc_dai *dai)
 {
+	struct kirkwood_dma_data *priv = snd_soc_dai_get_drvdata(dai);
 	unsigned long value;
 
 	/*
@@ -244,6 +252,7 @@
 static int kirkwood_i2s_rec_trigger(struct snd_pcm_substream *substream,
 				int cmd, struct snd_soc_dai *dai)
 {
+	struct kirkwood_dma_data *priv = snd_soc_dai_get_drvdata(dai);
 	unsigned long value;
 
 	value = readl(priv->io + KIRKWOOD_RECCTL);
@@ -323,9 +332,9 @@
 	return 0;
 }
 
-static int kirkwood_i2s_probe(struct platform_device *pdev,
-			     struct snd_soc_dai *dai)
+static int kirkwood_i2s_probe(struct snd_soc_dai *dai)
 {
+	struct kirkwood_dma_data *priv = snd_soc_dai_get_drvdata(dai);
 	unsigned long value;
 	unsigned int reg_data;
 
@@ -359,21 +368,20 @@
 
 }
 
-static void kirkwood_i2s_remove(struct platform_device *pdev,
-				struct snd_soc_dai *dai)
+static int kirkwood_i2s_remove(struct snd_soc_dai *dai)
 {
+	return 0;
 }
 
 static struct snd_soc_dai_ops kirkwood_i2s_dai_ops = {
+	.startup	= kirkwood_i2s_startup,
 	.trigger	= kirkwood_i2s_trigger,
 	.hw_params      = kirkwood_i2s_hw_params,
 	.set_fmt        = kirkwood_i2s_set_fmt,
 };
 
 
-struct snd_soc_dai kirkwood_i2s_dai = {
-	.name = DRV_NAME,
-	.id = 0,
+static struct snd_soc_dai_driver kirkwood_i2s_dai = {
 	.probe = kirkwood_i2s_probe,
 	.remove = kirkwood_i2s_remove,
 	.playback = {
@@ -388,13 +396,13 @@
 		.formats = KIRKWOOD_I2S_FORMATS,},
 	.ops = &kirkwood_i2s_dai_ops,
 };
-EXPORT_SYMBOL_GPL(kirkwood_i2s_dai);
 
 static __devinit int kirkwood_i2s_dev_probe(struct platform_device *pdev)
 {
 	struct resource *mem;
 	struct kirkwood_asoc_platform_data *data =
 		pdev->dev.platform_data;
+	struct kirkwood_dma_data *priv;
 	int err;
 
 	priv = kzalloc(sizeof(struct kirkwood_dma_data), GFP_KERNEL);
@@ -403,6 +411,7 @@
 		err = -ENOMEM;
 		goto error;
 	}
+	dev_set_drvdata(&pdev->dev, priv);
 
 	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!mem) {
@@ -441,10 +450,7 @@
 	priv->dram = data->dram;
 	priv->burst = data->burst;
 
-	kirkwood_i2s_dai.capture.dma_data = priv;
-	kirkwood_i2s_dai.playback.dma_data = priv;
-
-	return snd_soc_register_dai(&kirkwood_i2s_dai);
+	return snd_soc_register_dai(&pdev->dev, &kirkwood_i2s_dai);
 
 err_ioremap:
 	iounmap(priv->io);
@@ -458,12 +464,13 @@
 
 static __devexit int kirkwood_i2s_dev_remove(struct platform_device *pdev)
 {
-	if (priv) {
-		iounmap(priv->io);
-		release_mem_region(priv->mem->start, SZ_16K);
-		kfree(priv);
-	}
-	snd_soc_unregister_dai(&kirkwood_i2s_dai);
+	struct kirkwood_dma_data *priv = dev_get_drvdata(&pdev->dev);
+
+	snd_soc_unregister_dai(&pdev->dev);
+	iounmap(priv->io);
+	release_mem_region(priv->mem->start, SZ_16K);
+	kfree(priv);
+
 	return 0;
 }
 
@@ -489,7 +496,7 @@
 module_exit(kirkwood_i2s_exit);
 
 /* Module information */
-MODULE_AUTHOR("Arnaud Patard, <apatard@mandriva.com>");
+MODULE_AUTHOR("Arnaud Patard, <arnaud.patard@rtp-net.org>");
 MODULE_DESCRIPTION("Kirkwood I2S SoC Interface");
 MODULE_LICENSE("GPL");
 MODULE_ALIAS("platform:kirkwood-i2s");
diff --git a/sound/soc/kirkwood/kirkwood-i2s.h b/sound/soc/kirkwood/kirkwood-i2s.h
deleted file mode 100644
index c5595c6..0000000
--- a/sound/soc/kirkwood/kirkwood-i2s.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * kirkwood-i2s.h
- *
- * (c) 2010 Arnaud Patard <apatard@mandriva.com>
- *
- *  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;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-
-#ifndef _KIRKWOOD_I2S_H
-#define _KIRKWOOD_I2S_H
-
-extern struct snd_soc_dai kirkwood_i2s_dai;
-
-#endif
diff --git a/sound/soc/kirkwood/kirkwood-openrd.c b/sound/soc/kirkwood/kirkwood-openrd.c
index 0353d06..9d7c81e 100644
--- a/sound/soc/kirkwood/kirkwood-openrd.c
+++ b/sound/soc/kirkwood/kirkwood-openrd.c
@@ -2,6 +2,7 @@
  * kirkwood-openrd.c
  *
  * (c) 2010 Arnaud Patard <apatard@mandriva.com>
+ * (c) 2010 Arnaud Patard <arnaud.patard@rtp-net.org>
  *
  *  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
@@ -18,16 +19,14 @@
 #include <mach/kirkwood.h>
 #include <plat/audio.h>
 #include <asm/mach-types.h>
-#include "kirkwood-i2s.h"
-#include "kirkwood-dma.h"
 #include "../codecs/cs42l51.h"
 
 static int openrd_client_hw_params(struct snd_pcm_substream *substream,
 		struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret;
 	unsigned int freq, fmt;
 
@@ -66,8 +65,10 @@
 {
 	.name = "CS42L51",
 	.stream_name = "CS42L51 HiFi",
-	.cpu_dai = &kirkwood_i2s_dai,
-	.codec_dai = &cs42l51_dai,
+	.cpu_dai_name = "kirkwood-i2s",
+	.platform_name = "kirkwood-pcm-audio",
+	.codec_dai_name = "cs42l51-hifi",
+	.codec_name = "cs42l51-codec.0-004a",
 	.ops = &openrd_client_ops,
 },
 };
@@ -75,16 +76,10 @@
 
 static struct snd_soc_card openrd_client = {
 	.name = "OpenRD Client",
-	.platform = &kirkwood_soc_platform,
 	.dai_link = openrd_client_dai,
 	.num_links = ARRAY_SIZE(openrd_client_dai),
 };
 
-static struct snd_soc_device openrd_client_snd_devdata = {
-	.card = &openrd_client,
-	.codec_dev = &soc_codec_device_cs42l51,
-};
-
 static struct platform_device *openrd_client_snd_device;
 
 static int __init openrd_client_init(void)
@@ -99,8 +94,7 @@
 		return -ENOMEM;
 
 	platform_set_drvdata(openrd_client_snd_device,
-			&openrd_client_snd_devdata);
-	openrd_client_snd_devdata.dev = &openrd_client_snd_device->dev;
+			&openrd_client);
 
 	ret = platform_device_add(openrd_client_snd_device);
 	if (ret) {
@@ -120,7 +114,7 @@
 module_exit(openrd_client_exit);
 
 /* Module information */
-MODULE_AUTHOR("Arnaud Patard <apatard@mandriva.com>");
+MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>");
 MODULE_DESCRIPTION("ALSA SoC OpenRD Client");
 MODULE_LICENSE("GPL");
 MODULE_ALIAS("platform:soc-audio");
diff --git a/sound/soc/nuc900/nuc900-ac97.c b/sound/soc/nuc900/nuc900-ac97.c
index caa7c90..02b64a1 100644
--- a/sound/soc/nuc900/nuc900-ac97.c
+++ b/sound/soc/nuc900/nuc900-ac97.c
@@ -297,8 +297,7 @@
 	.trigger	= nuc900_ac97_trigger,
 };
 
-struct snd_soc_dai nuc900_ac97_dai = {
-	.name			= "nuc900-ac97",
+static struct snd_soc_dai_driver nuc900_ac97_dai = {
 	.probe			= nuc900_ac97_probe,
 	.remove			= nuc900_ac97_remove,
 	.ac97_control		= 1,
@@ -316,7 +315,6 @@
 	},
 	.ops = &nuc900_ac97_dai_ops,
 }
-EXPORT_SYMBOL_GPL(nuc900_ac97_dai);
 
 static int __devinit nuc900_ac97_drvprobe(struct platform_device *pdev)
 {
@@ -365,9 +363,7 @@
 
 	nuc900_ac97_data = nuc900_audio;
 
-	nuc900_audio->dev = nuc900_ac97_dai.dev =  &pdev->dev;
-
-	ret = snd_soc_register_dai(&nuc900_ac97_dai);
+	ret = snd_soc_register_dai(&pdev->dev, &nuc900_ac97_dai);
 	if (ret)
 		goto out3;
 
@@ -390,7 +386,7 @@
 static int __devexit nuc900_ac97_drvremove(struct platform_device *pdev)
 {
 
-	snd_soc_unregister_dai(&nuc900_ac97_dai);
+	snd_soc_unregister_dai(&pdev->dev);
 
 	clk_put(nuc900_ac97_data->clk);
 	iounmap(nuc900_ac97_data->mmio);
@@ -404,7 +400,7 @@
 
 static struct platform_driver nuc900_ac97_driver = {
 	.driver	= {
-		.name	= "nuc900-audio",
+		.name	= "nuc900-ac97",
 		.owner	= THIS_MODULE,
 	},
 	.probe		= nuc900_ac97_drvprobe,
diff --git a/sound/soc/nuc900/nuc900-audio.c b/sound/soc/nuc900/nuc900-audio.c
index 72e6f51..161f5b6 100644
--- a/sound/soc/nuc900/nuc900-audio.c
+++ b/sound/soc/nuc900/nuc900-audio.c
@@ -20,26 +20,21 @@
 #include <sound/soc.h>
 #include <sound/soc-dapm.h>
 
-#include "../codecs/ac97.h"
 #include "nuc900-audio.h"
 
 static struct snd_soc_dai_link nuc900evb_ac97_dai = {
 	.name		= "AC97",
 	.stream_name	= "AC97 HiFi",
-	.cpu_dai	= &nuc900_ac97_dai,
-	.codec_dai	= &ac97_dai,
+	.cpu_dai_name	= "nuc900-ac97",
+	.codec_dai_name	= "ac97-hifi",
+	.codec_name	= "ac97-codec",
+	.platform_name	= "nuc900-pcm-audio",
 };
 
 static struct snd_soc_card nuc900evb_audio_machine = {
 	.name		= "NUC900EVB_AC97",
 	.dai_link	= &nuc900evb_ac97_dai,
 	.num_links	= 1,
-	.platform	= &nuc900_soc_platform,
-};
-
-static struct snd_soc_device nuc900evb_ac97_devdata = {
-	.card		= &nuc900evb_audio_machine,
-	.codec_dev	= &soc_codec_dev_ac97,
 };
 
 static struct platform_device *nuc900evb_asoc_dev;
@@ -54,9 +49,8 @@
 		goto out;
 
 	/* nuc900 board audio device */
-	platform_set_drvdata(nuc900evb_asoc_dev, &nuc900evb_ac97_devdata);
+	platform_set_drvdata(nuc900evb_asoc_dev, &nuc900evb_audio_machine);
 
-	nuc900evb_ac97_devdata.dev = &nuc900evb_asoc_dev->dev;
 	ret = platform_device_add(nuc900evb_asoc_dev);
 
 	if (ret) {
diff --git a/sound/soc/nuc900/nuc900-audio.h b/sound/soc/nuc900/nuc900-audio.h
index 3038f51..aeed8ea 100644
--- a/sound/soc/nuc900/nuc900-audio.h
+++ b/sound/soc/nuc900/nuc900-audio.h
@@ -110,8 +110,4 @@
 
 };
 
-extern struct nuc900_audio *nuc900_ac97_data;
-extern struct snd_soc_dai nuc900_ac97_dai;
-extern struct snd_soc_platform nuc900_soc_platform;
-
 #endif /*end _NUC900_AUDIO_H */
diff --git a/sound/soc/nuc900/nuc900-pcm.c b/sound/soc/nuc900/nuc900-pcm.c
index e81e803..195d1ac 100644
--- a/sound/soc/nuc900/nuc900-pcm.c
+++ b/sound/soc/nuc900/nuc900-pcm.c
@@ -328,26 +328,44 @@
 	return 0;
 }
 
-struct snd_soc_platform nuc900_soc_platform = {
-	.name		= "nuc900-dma",
-	.pcm_ops	= &nuc900_dma_ops,
+static struct snd_soc_platform_driver nuc900_soc_platform = {
+	.ops		= &nuc900_dma_ops,
 	.pcm_new	= nuc900_dma_new,
 	.pcm_free	= nuc900_dma_free_dma_buffers,
 }
-EXPORT_SYMBOL_GPL(nuc900_soc_platform);
 
-static int __init nuc900_soc_platform_init(void)
+static int __devinit nuc900_soc_platform_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_platform(&nuc900_soc_platform);
+	return snd_soc_register_platform(&pdev->dev, &nuc900_soc_platform);
 }
 
-static void __exit nuc900_soc_platform_exit(void)
+static int __devexit nuc900_soc_platform_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_platform(&nuc900_soc_platform);
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
 }
 
-module_init(nuc900_soc_platform_init);
-module_exit(nuc900_soc_platform_exit);
+static struct platform_driver nuc900_pcm_driver = {
+	.driver = {
+			.name = "nuc900-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = nuc900_soc_platform_probe,
+	.remove = __devexit_p(nuc900_soc_platform_remove),
+};
+
+static int __init nuc900_pcm_init(void)
+{
+	return platform_driver_register(&nuc900_pcm_driver);
+}
+module_init(nuc900_pcm_init);
+
+static void __exit nuc900_pcm_exit(void)
+{
+	platform_driver_unregister(&nuc900_pcm_driver);
+}
+module_exit(nuc900_pcm_exit);
 
 MODULE_AUTHOR("Wan ZongShun, <mcuos.com@gmail.com>");
 MODULE_DESCRIPTION("nuc900 Audio DMA module");
diff --git a/sound/soc/omap/am3517evm.c b/sound/soc/omap/am3517evm.c
index 135901b..68bd902 100644
--- a/sound/soc/omap/am3517evm.c
+++ b/sound/soc/omap/am3517evm.c
@@ -40,8 +40,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret;
 
 	/* Set codec DAI configuration */
@@ -111,8 +111,10 @@
 	{"MICIN", NULL, "Mic In"},
 };
 
-static int am3517evm_aic23_init(struct snd_soc_codec *codec)
+static int am3517evm_aic23_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+
 	/* Add am3517-evm specific widgets */
 	snd_soc_dapm_new_controls(codec, tlv320aic23_dapm_widgets,
 				  ARRAY_SIZE(tlv320aic23_dapm_widgets));
@@ -134,8 +136,10 @@
 static struct snd_soc_dai_link am3517evm_dai = {
 	.name = "TLV320AIC23",
 	.stream_name = "AIC23",
-	.cpu_dai = &omap_mcbsp_dai[0],
-	.codec_dai = &tlv320aic23_dai,
+	.cpu_dai_name ="omap-mcbsp-dai.0",
+	.codec_dai_name = "tlv320aic23-hifi",
+	.platform_name = "omap-pcm-audio",
+	.codec_name = "tlv320aic23-codec",
 	.init = am3517evm_aic23_init,
 	.ops = &am3517evm_ops,
 };
@@ -143,17 +147,10 @@
 /* Audio machine driver */
 static struct snd_soc_card snd_soc_am3517evm = {
 	.name = "am3517evm",
-	.platform = &omap_soc_platform,
 	.dai_link = &am3517evm_dai,
 	.num_links = 1,
 };
 
-/* Audio subsystem */
-static struct snd_soc_device am3517evm_snd_devdata = {
-	.card = &snd_soc_am3517evm,
-	.codec_dev = &soc_codec_dev_tlv320aic23,
-};
-
 static struct platform_device *am3517evm_snd_device;
 
 static int __init am3517evm_soc_init(void)
@@ -172,9 +169,7 @@
 		return -ENOMEM;
 	}
 
-	platform_set_drvdata(am3517evm_snd_device, &am3517evm_snd_devdata);
-	am3517evm_snd_devdata.dev = &am3517evm_snd_device->dev;
-	*(unsigned int *)am3517evm_dai.cpu_dai->private_data = 0; /* McBSP1 */
+	platform_set_drvdata(am3517evm_snd_device, &snd_soc_am3517evm);
 
 	ret = platform_device_add(am3517evm_snd_device);
 	if (ret)
diff --git a/sound/soc/omap/ams-delta.c b/sound/soc/omap/ams-delta.c
index b0f618e..438146a 100644
--- a/sound/soc/omap/ams-delta.c
+++ b/sound/soc/omap/ams-delta.c
@@ -99,7 +99,7 @@
 	int pin, changed = 0;
 
 	/* Refuse any mode changes if we are not able to control the codec. */
-	if (!codec->control_data)
+	if (!codec->hw_write)
 		return -EUNATCH;
 
 	if (ucontrol->value.enumerated.item[0] >= control->max)
@@ -268,10 +268,32 @@
 		ams_delta_latch2_write(AMS_DELTA_LATCH2_MODEM_CODEC, 0);
 }
 
+/*
+ * Used for passing a codec structure pointer
+ * from the board initialization code to the tty line discipline.
+ */
+static struct snd_soc_codec *cx20442_codec;
+
 /* Line discipline .open() */
 static int cx81801_open(struct tty_struct *tty)
 {
-	return v253_ops.open(tty);
+	int ret;
+
+	if (!cx20442_codec)
+		return -ENODEV;
+
+	/*
+	 * Pass the codec structure pointer for use by other ldisc callbacks,
+	 * both the card and the codec specific parts.
+	 */
+	tty->disc_data = cx20442_codec;
+
+	ret = v253_ops.open(tty);
+
+	if (ret < 0)
+		tty->disc_data = NULL;
+
+	return ret;
 }
 
 /* Line discipline .close() */
@@ -281,11 +303,14 @@
 
 	del_timer_sync(&cx81801_timer);
 
-	v253_ops.close(tty);
-
 	/* Prevent the hook switch from further changing the DAPM pins */
 	INIT_LIST_HEAD(&ams_delta_hook_switch.pins);
 
+	if (!codec)
+		return;
+
+	v253_ops.close(tty);
+
 	/* Revert back to default audio input/output constellation */
 	snd_soc_dapm_disable_pin(codec, "Mouthpiece");
 	snd_soc_dapm_enable_pin(codec, "Earpiece");
@@ -310,7 +335,10 @@
 	const unsigned char *c;
 	int apply, ret;
 
-	if (!codec->control_data) {
+	if (!codec)
+		return;
+
+	if (!codec->hw_write) {
 		/* First modem response, complete setup procedure */
 
 		/* Initialize timer used for config pulse generation */
@@ -323,7 +351,7 @@
 					ARRAY_SIZE(ams_delta_hook_switch_pins),
 					ams_delta_hook_switch_pins);
 		if (ret)
-			dev_warn(codec->socdev->card->dev,
+			dev_warn(codec->dev,
 				"Failed to link hook switch to DAPM pins, "
 				"will continue with hook switch unlinked.\n");
 
@@ -383,7 +411,7 @@
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
 
 	/* Set cpu DAI configuration */
-	return snd_soc_dai_set_fmt(rtd->dai->cpu_dai,
+	return snd_soc_dai_set_fmt(rtd->cpu_dai,
 				   SND_SOC_DAIFMT_DSP_A |
 				   SND_SOC_DAIFMT_NB_NF |
 				   SND_SOC_DAIFMT_CBM_CFM);
@@ -398,7 +426,7 @@
 static int ams_delta_set_bias_level(struct snd_soc_card *card,
 					enum snd_soc_bias_level level)
 {
-	struct snd_soc_codec *codec = card->codec;
+	struct snd_soc_codec *codec = card->rtd->codec;
 
 	switch (level) {
 	case SND_SOC_BIAS_ON:
@@ -461,18 +489,22 @@
  * Card initialization
  */
 
-static int ams_delta_cx20442_init(struct snd_soc_codec *codec)
+static int ams_delta_cx20442_init(struct snd_soc_pcm_runtime *rtd)
 {
-	struct snd_soc_dai *codec_dai = codec->dai;
-	struct snd_soc_card *card = codec->socdev->card;
+	struct snd_soc_codec *codec = rtd->codec;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_card *card = rtd->card;
 	int ret;
 	/* Codec is ready, now add/activate board specific controls */
 
+	/* Store a pointer to the codec structure for tty ldisc use */
+	cx20442_codec = codec;
+
 	/* Set up digital mute if not provided by the codec */
-	if (!codec_dai->ops) {
-		codec_dai->ops = &ams_delta_dai_ops;
-	} else if (!codec_dai->ops->digital_mute) {
-		codec_dai->ops->digital_mute = ams_delta_digital_mute;
+	if (!codec_dai->driver->ops) {
+		codec_dai->driver->ops = &ams_delta_dai_ops;
+	} else if (!codec_dai->driver->ops->digital_mute) {
+		codec_dai->driver->ops->digital_mute = ams_delta_digital_mute;
 	} else {
 		ams_delta_ops.startup = ams_delta_startup;
 		ams_delta_ops.shutdown = ams_delta_shutdown;
@@ -483,7 +515,7 @@
 
 	/* Add hook switch - can be used to control the codec from userspace
 	 * even if line discipline fails */
-	ret = snd_soc_jack_new(card, "hook_switch",
+	ret = snd_soc_jack_new(rtd->codec, "hook_switch",
 				SND_JACK_HEADSET, &ams_delta_hook_switch);
 	if (ret)
 		dev_warn(card->dev,
@@ -551,27 +583,22 @@
 static struct snd_soc_dai_link ams_delta_dai_link = {
 	.name = "CX20442",
 	.stream_name = "CX20442",
-	.cpu_dai = &omap_mcbsp_dai[0],
-	.codec_dai = &cx20442_dai,
+	.cpu_dai_name ="omap-mcbsp-dai.0",
+	.codec_dai_name = "cx20442-voice",
 	.init = ams_delta_cx20442_init,
+	.platform_name = "omap-pcm-audio",
+	.codec_name = "cx20442-codec",
 	.ops = &ams_delta_ops,
 };
 
 /* Audio card driver */
 static struct snd_soc_card ams_delta_audio_card = {
 	.name = "AMS_DELTA",
-	.platform = &omap_soc_platform,
 	.dai_link = &ams_delta_dai_link,
 	.num_links = 1,
 	.set_bias_level = ams_delta_set_bias_level,
 };
 
-/* Audio subsystem */
-static struct snd_soc_device ams_delta_snd_soc_device = {
-	.card = &ams_delta_audio_card,
-	.codec_dev = &cx20442_codec_dev,
-};
-
 /* Module init/exit */
 static struct platform_device *ams_delta_audio_platform_device;
 static struct platform_device *cx20442_platform_device;
@@ -589,9 +616,7 @@
 		return -ENOMEM;
 
 	platform_set_drvdata(ams_delta_audio_platform_device,
-				&ams_delta_snd_soc_device);
-	ams_delta_snd_soc_device.dev = &ams_delta_audio_platform_device->dev;
-	*(unsigned int *)ams_delta_dai_link.cpu_dai->private_data = OMAP_MCBSP1;
+				&ams_delta_audio_card);
 
 	ret = platform_device_add(ams_delta_audio_platform_device);
 	if (ret)
@@ -601,8 +626,8 @@
 	 * Codec platform device could be registered from elsewhere (board?),
 	 * but I do it here as it makes sense only if used with the card.
 	 */
-	cx20442_platform_device = platform_device_register_simple("cx20442",
-								-1, NULL, 0);
+	cx20442_platform_device =
+		platform_device_register_simple("cx20442-codec", -1, NULL, 0);
 	return 0;
 err:
 	platform_device_put(ams_delta_audio_platform_device);
@@ -612,19 +637,6 @@
 
 static void __exit ams_delta_module_exit(void)
 {
-	struct snd_soc_codec *codec;
-	struct tty_struct *tty;
-
-	if (ams_delta_audio_card.codec) {
-		codec = ams_delta_audio_card.codec;
-
-		if (codec->control_data) {
-			tty = codec->control_data;
-
-			tty_hangup(tty);
-		}
-	}
-
 	if (tty_unregister_ldisc(N_V253) != 0)
 		dev_warn(&ams_delta_audio_platform_device->dev,
 			"failed to unregister V253 line discipline\n");
diff --git a/sound/soc/omap/igep0020.c b/sound/soc/omap/igep0020.c
index 3583c42..d296cfc 100644
--- a/sound/soc/omap/igep0020.c
+++ b/sound/soc/omap/igep0020.c
@@ -33,14 +33,13 @@
 
 #include "omap-mcbsp.h"
 #include "omap-pcm.h"
-#include "../codecs/twl4030.h"
 
 static int igep2_hw_params(struct snd_pcm_substream *substream,
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret;
 
 	/* Set codec DAI configuration */
@@ -82,25 +81,20 @@
 static struct snd_soc_dai_link igep2_dai = {
 	.name = "TWL4030",
 	.stream_name = "TWL4030",
-	.cpu_dai = &omap_mcbsp_dai[0],
-	.codec_dai = &twl4030_dai[TWL4030_DAI_HIFI],
+	.cpu_dai_name = "omap-mcbsp-dai.1",
+	.codec_dai_name = "twl4030-hifi",
+	.platform_name = "omap-pcm-audio",
+	.codec_name = "twl4030-codec",
 	.ops = &igep2_ops,
 };
 
 /* Audio machine driver */
 static struct snd_soc_card snd_soc_card_igep2 = {
 	.name = "igep2",
-	.platform = &omap_soc_platform,
 	.dai_link = &igep2_dai,
 	.num_links = 1,
 };
 
-/* Audio subsystem */
-static struct snd_soc_device igep2_snd_devdata = {
-	.card = &snd_soc_card_igep2,
-	.codec_dev = &soc_codec_dev_twl4030,
-};
-
 static struct platform_device *igep2_snd_device;
 
 static int __init igep2_soc_init(void)
@@ -119,9 +113,7 @@
 		return -ENOMEM;
 	}
 
-	platform_set_drvdata(igep2_snd_device, &igep2_snd_devdata);
-	igep2_snd_devdata.dev = &igep2_snd_device->dev;
-	*(unsigned int *)igep2_dai.cpu_dai->private_data = 1; /* McBSP2 */
+	platform_set_drvdata(igep2_snd_device, &snd_soc_card_igep2);
 
 	ret = platform_device_add(igep2_snd_device);
 	if (ret)
diff --git a/sound/soc/omap/mcpdm.c b/sound/soc/omap/mcpdm.c
index 90b8bf7..928f037 100644
--- a/sound/soc/omap/mcpdm.c
+++ b/sound/soc/omap/mcpdm.c
@@ -402,7 +402,7 @@
 	return 0;
 }
 
-static int __devinit omap_mcpdm_probe(struct platform_device *pdev)
+int __devinit omap_mcpdm_probe(struct platform_device *pdev)
 {
 	struct resource *res;
 	int ret = 0;
@@ -449,7 +449,7 @@
 	return ret;
 }
 
-static int __devexit omap_mcpdm_remove(struct platform_device *pdev)
+int __devexit omap_mcpdm_remove(struct platform_device *pdev)
 {
 	struct omap_mcpdm *mcpdm_ptr = platform_get_drvdata(pdev);
 
@@ -468,18 +468,3 @@
 	return 0;
 }
 
-static struct platform_driver omap_mcpdm_driver = {
-	.probe = omap_mcpdm_probe,
-	.remove = __devexit_p(omap_mcpdm_remove),
-	.driver = {
-		.name = "omap-mcpdm",
-	},
-};
-
-static struct platform_device *omap_mcpdm_device;
-
-static int __init omap_mcpdm_init(void)
-{
-	return platform_driver_register(&omap_mcpdm_driver);
-}
-arch_initcall(omap_mcpdm_init);
diff --git a/sound/soc/omap/mcpdm.h b/sound/soc/omap/mcpdm.h
index 7bb326e..df3e16f 100644
--- a/sound/soc/omap/mcpdm.h
+++ b/sound/soc/omap/mcpdm.h
@@ -149,3 +149,5 @@
 extern int omap_mcpdm_request(void);
 extern void omap_mcpdm_free(void);
 extern int omap_mcpdm_set_offset(int offset1, int offset2);
+int __devinit omap_mcpdm_probe(struct platform_device *pdev);
+int __devexit omap_mcpdm_remove(struct platform_device *pdev);
diff --git a/sound/soc/omap/n810.c b/sound/soc/omap/n810.c
index 08e09d7..a3b6d89 100644
--- a/sound/soc/omap/n810.c
+++ b/sound/soc/omap/n810.c
@@ -97,7 +97,7 @@
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_codec *codec = rtd->socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 
 	snd_pcm_hw_constraint_minmax(runtime,
 				     SNDRV_PCM_HW_PARAM_CHANNELS, 2, 2);
@@ -115,8 +115,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int err;
 
 	/* Set codec DAI configuration */
@@ -271,8 +271,9 @@
 		     n810_get_input, n810_set_input),
 };
 
-static int n810_aic33_init(struct snd_soc_codec *codec)
+static int n810_aic33_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int err;
 
 	/* Not connected */
@@ -307,8 +308,10 @@
 static struct snd_soc_dai_link n810_dai = {
 	.name = "TLV320AIC33",
 	.stream_name = "AIC33",
-	.cpu_dai = &omap_mcbsp_dai[0],
-	.codec_dai = &aic3x_dai,
+	.cpu_dai_name = "omap-mcbsp-dai.1",
+	.platform_name = "omap-pcm-audio",
+	.codec_name = "tlv320aic3x-codec.2-0018",
+	.codec_dai_name = "tlv320aic3x-hifi",
 	.init = n810_aic33_init,
 	.ops = &n810_ops,
 };
@@ -316,33 +319,12 @@
 /* Audio machine driver */
 static struct snd_soc_card snd_soc_n810 = {
 	.name = "N810",
-	.platform = &omap_soc_platform,
 	.dai_link = &n810_dai,
 	.num_links = 1,
 };
 
-/* Audio private data */
-static struct aic3x_setup_data n810_aic33_setup = {
-	.gpio_func[0] = AIC3X_GPIO1_FUNC_DISABLED,
-	.gpio_func[1] = AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT,
-};
-
-/* Audio subsystem */
-static struct snd_soc_device n810_snd_devdata = {
-	.card = &snd_soc_n810,
-	.codec_dev = &soc_codec_dev_aic3x,
-	.codec_data = &n810_aic33_setup,
-};
-
 static struct platform_device *n810_snd_device;
 
-/* temporary i2c device creation until this can be moved into the machine
- * support file.
-*/
-static struct i2c_board_info i2c_device[] = {
-	{ I2C_BOARD_INFO("tlv320aic3x", 0x1b), }
-};
-
 static int __init n810_soc_init(void)
 {
 	int err;
@@ -351,15 +333,11 @@
 	if (!(machine_is_nokia_n810() || machine_is_nokia_n810_wimax()))
 		return -ENODEV;
 
-	i2c_register_board_info(1, i2c_device, ARRAY_SIZE(i2c_device));
-
 	n810_snd_device = platform_device_alloc("soc-audio", -1);
 	if (!n810_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(n810_snd_device, &n810_snd_devdata);
-	n810_snd_devdata.dev = &n810_snd_device->dev;
-	*(unsigned int *)n810_dai.cpu_dai->private_data = 1; /* McBSP2 */
+	platform_set_drvdata(n810_snd_device, &snd_soc_n810);
 	err = platform_device_add(n810_snd_device);
 	if (err)
 		goto err1;
diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
index 86f21390..9969618 100644
--- a/sound/soc/omap/omap-mcbsp.c
+++ b/sound/soc/omap/omap-mcbsp.c
@@ -62,8 +62,6 @@
 	int				wlen;
 };
 
-#define to_mcbsp(priv)	container_of((priv), struct omap_mcbsp_data, bus_id)
-
 static struct omap_mcbsp_data mcbsp_data[NUM_LINKS];
 
 /*
@@ -153,13 +151,13 @@
 static void omap_mcbsp_set_threshold(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct omap_mcbsp_data *mcbsp_data = snd_soc_dai_get_drvdata(cpu_dai);
 	struct omap_pcm_dma_data *dma_data;
 	int dma_op_mode = omap_mcbsp_get_dma_op_mode(mcbsp_data->bus_id);
 	int words;
 
-	dma_data = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
+	dma_data = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 
 	/* TODO: Currently, MODE_ELEMENT == MODE_FRAME */
 	if (dma_op_mode == MCBSP_DMA_MODE_THRESHOLD)
@@ -203,11 +201,9 @@
 }
 
 static int omap_mcbsp_dai_startup(struct snd_pcm_substream *substream,
-				  struct snd_soc_dai *dai)
+				  struct snd_soc_dai *cpu_dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
+	struct omap_mcbsp_data *mcbsp_data = snd_soc_dai_get_drvdata(cpu_dai);
 	int bus_id = mcbsp_data->bus_id;
 	int err = 0;
 
@@ -249,11 +245,9 @@
 }
 
 static void omap_mcbsp_dai_shutdown(struct snd_pcm_substream *substream,
-				    struct snd_soc_dai *dai)
+				    struct snd_soc_dai *cpu_dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
+	struct omap_mcbsp_data *mcbsp_data = snd_soc_dai_get_drvdata(cpu_dai);
 
 	if (!cpu_dai->active) {
 		omap_mcbsp_free(mcbsp_data->bus_id);
@@ -262,11 +256,9 @@
 }
 
 static int omap_mcbsp_dai_trigger(struct snd_pcm_substream *substream, int cmd,
-				  struct snd_soc_dai *dai)
+				  struct snd_soc_dai *cpu_dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
+	struct omap_mcbsp_data *mcbsp_data = snd_soc_dai_get_drvdata(cpu_dai);
 	int err = 0, play = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK);
 
 	switch (cmd) {
@@ -295,8 +287,8 @@
 			struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct omap_mcbsp_data *mcbsp_data = snd_soc_dai_get_drvdata(cpu_dai);
 	u16 fifo_use;
 	snd_pcm_sframes_t delay;
 
@@ -317,11 +309,9 @@
 
 static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
 				    struct snd_pcm_hw_params *params,
-				    struct snd_soc_dai *dai)
+				    struct snd_soc_dai *cpu_dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
+	struct omap_mcbsp_data *mcbsp_data = snd_soc_dai_get_drvdata(cpu_dai);
 	struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
 	struct omap_pcm_dma_data *dma_data;
 	int dma, bus_id = mcbsp_data->bus_id;
@@ -496,7 +486,7 @@
 static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai,
 				      unsigned int fmt)
 {
-	struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
+	struct omap_mcbsp_data *mcbsp_data = snd_soc_dai_get_drvdata(cpu_dai);
 	struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
 	unsigned int temp_fmt = fmt;
 
@@ -596,7 +586,7 @@
 static int omap_mcbsp_dai_set_clkdiv(struct snd_soc_dai *cpu_dai,
 				     int div_id, int div)
 {
-	struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
+	struct omap_mcbsp_data *mcbsp_data = snd_soc_dai_get_drvdata(cpu_dai);
 	struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
 
 	if (div_id != OMAP_MCBSP_CLKGDV)
@@ -699,7 +689,7 @@
 					 int clk_id, unsigned int freq,
 					 int dir)
 {
-	struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
+	struct omap_mcbsp_data *mcbsp_data = snd_soc_dai_get_drvdata(cpu_dai);
 	struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
 	int err = 0;
 
@@ -733,7 +723,7 @@
 	return err;
 }
 
-static struct snd_soc_dai_ops omap_mcbsp_dai_ops = {
+static struct snd_soc_dai_ops mcbsp_dai_ops = {
 	.startup	= omap_mcbsp_dai_startup,
 	.shutdown	= omap_mcbsp_dai_shutdown,
 	.trigger	= omap_mcbsp_dai_trigger,
@@ -744,43 +734,32 @@
 	.set_sysclk	= omap_mcbsp_dai_set_dai_sysclk,
 };
 
-#define OMAP_MCBSP_DAI_BUILDER(link_id)				\
-{								\
-	.name = "omap-mcbsp-dai-"#link_id,			\
-	.id = (link_id),					\
-	.playback = {						\
-		.channels_min = 1,				\
-		.channels_max = 16,				\
-		.rates = OMAP_MCBSP_RATES,			\
-		.formats = SNDRV_PCM_FMTBIT_S16_LE |		\
-			   SNDRV_PCM_FMTBIT_S32_LE,		\
-	},							\
-	.capture = {						\
-		.channels_min = 1,				\
-		.channels_max = 16,				\
-		.rates = OMAP_MCBSP_RATES,			\
-		.formats = SNDRV_PCM_FMTBIT_S16_LE |		\
-			   SNDRV_PCM_FMTBIT_S32_LE,		\
-	},							\
-	.ops = &omap_mcbsp_dai_ops,				\
-	.private_data = &mcbsp_data[(link_id)].bus_id,		\
+static int mcbsp_dai_probe(struct snd_soc_dai *dai)
+{
+	mcbsp_data[dai->id].bus_id = dai->id;
+	snd_soc_dai_set_drvdata(dai, &mcbsp_data[dai->id].bus_id);
+	return 0;
 }
 
-struct snd_soc_dai omap_mcbsp_dai[] = {
-	OMAP_MCBSP_DAI_BUILDER(0),
-	OMAP_MCBSP_DAI_BUILDER(1),
-#if NUM_LINKS >= 3
-	OMAP_MCBSP_DAI_BUILDER(2),
-#endif
-#if NUM_LINKS == 5
-	OMAP_MCBSP_DAI_BUILDER(3),
-	OMAP_MCBSP_DAI_BUILDER(4),
-#endif
+static struct snd_soc_dai_driver omap_mcbsp_dai =
+{
+	.probe = mcbsp_dai_probe,
+	.playback = {
+		.channels_min = 1,
+		.channels_max = 16,
+		.rates = OMAP_MCBSP_RATES,
+		.formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE,
+	},
+	.capture = {
+		.channels_min = 1,
+		.channels_max = 16,
+		.rates = OMAP_MCBSP_RATES,
+		.formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE,
+	},
+	.ops = &mcbsp_dai_ops,
 };
 
-EXPORT_SYMBOL_GPL(omap_mcbsp_dai);
-
-int omap_mcbsp_st_info_volsw(struct snd_kcontrol *kcontrol,
+static int omap_mcbsp_st_info_volsw(struct snd_kcontrol *kcontrol,
 			struct snd_ctl_elem_info *uinfo)
 {
 	struct soc_mixer_control *mc =
@@ -910,16 +889,36 @@
 }
 EXPORT_SYMBOL_GPL(omap_mcbsp_st_add_controls);
 
+static __devinit int asoc_mcbsp_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_dai(&pdev->dev, &omap_mcbsp_dai);
+}
+
+static int __devexit asoc_mcbsp_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_dai(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver asoc_mcbsp_driver = {
+	.driver = {
+			.name = "omap-mcbsp-dai",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = asoc_mcbsp_probe,
+	.remove = __devexit_p(asoc_mcbsp_remove),
+};
+
 static int __init snd_omap_mcbsp_init(void)
 {
-	return snd_soc_register_dais(omap_mcbsp_dai,
-				     ARRAY_SIZE(omap_mcbsp_dai));
+	return platform_driver_register(&asoc_mcbsp_driver);
 }
 module_init(snd_omap_mcbsp_init);
 
 static void __exit snd_omap_mcbsp_exit(void)
 {
-	snd_soc_unregister_dais(omap_mcbsp_dai, ARRAY_SIZE(omap_mcbsp_dai));
+	platform_driver_unregister(&asoc_mcbsp_driver);
 }
 module_exit(snd_omap_mcbsp_exit);
 
diff --git a/sound/soc/omap/omap-mcbsp.h b/sound/soc/omap/omap-mcbsp.h
index 6c363e5..ffdcc5a 100644
--- a/sound/soc/omap/omap-mcbsp.h
+++ b/sound/soc/omap/omap-mcbsp.h
@@ -55,8 +55,6 @@
 #define NUM_LINKS	5
 #endif
 
-extern struct snd_soc_dai omap_mcbsp_dai[NUM_LINKS];
-
 int omap_mcbsp_st_add_controls(struct snd_soc_codec *codec, int mcbsp_id);
 
 #endif
diff --git a/sound/soc/omap/omap-mcpdm.c b/sound/soc/omap/omap-mcpdm.c
index b7f4f7e..f161c2f 100644
--- a/sound/soc/omap/omap-mcpdm.c
+++ b/sound/soc/omap/omap-mcpdm.c
@@ -36,7 +36,6 @@
 #include <plat/dma.h>
 #include <plat/mcbsp.h>
 #include "mcpdm.h"
-#include "omap-mcpdm.h"
 #include "omap-pcm.h"
 
 struct omap_mcpdm_data {
@@ -89,11 +88,9 @@
 static int omap_mcpdm_dai_startup(struct snd_pcm_substream *substream,
 				  struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
 	int err = 0;
 
-	if (!cpu_dai->active)
+	if (!dai->active)
 		err = omap_mcpdm_request();
 
 	return err;
@@ -102,19 +99,14 @@
 static void omap_mcpdm_dai_shutdown(struct snd_pcm_substream *substream,
 				    struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-
-	if (!cpu_dai->active)
+	if (!dai->active)
 		omap_mcpdm_free();
 }
 
 static int omap_mcpdm_dai_trigger(struct snd_pcm_substream *substream, int cmd,
 				  struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct omap_mcpdm_data *mcpdm_priv = cpu_dai->private_data;
+	struct omap_mcpdm_data *mcpdm_priv = snd_soc_dai_get_drvdata(dai);
 	int stream = substream->stream;
 	int err = 0;
 
@@ -143,14 +135,12 @@
 				    struct snd_pcm_hw_params *params,
 				    struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct omap_mcpdm_data *mcpdm_priv = cpu_dai->private_data;
+	struct omap_mcpdm_data *mcpdm_priv = snd_soc_dai_get_drvdata(dai);
 	struct omap_mcpdm_link *mcpdm_links = mcpdm_priv->links;
 	int stream = substream->stream;
 	int channels, err, link_mask = 0;
 
-	snd_soc_dai_set_dma_data(cpu_dai, substream,
+	snd_soc_dai_set_dma_data(dai, substream,
 				 &omap_mcpdm_dai_dma_params[stream]);
 
 	channels = params_channels(params);
@@ -189,9 +179,7 @@
 static int omap_mcpdm_dai_hw_free(struct snd_pcm_substream *substream,
 				  struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct omap_mcpdm_data *mcpdm_priv = cpu_dai->private_data;
+	struct omap_mcpdm_data *mcpdm_priv = snd_soc_dai_get_drvdata(dai);
 	struct omap_mcpdm_link *mcpdm_links = mcpdm_priv->links;
 	int stream = substream->stream;
 	int err;
@@ -215,9 +203,14 @@
 #define OMAP_MCPDM_RATES	(SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
 #define OMAP_MCPDM_FORMATS	(SNDRV_PCM_FMTBIT_S32_LE)
 
-struct snd_soc_dai omap_mcpdm_dai = {
-	.name = "omap-mcpdm",
-	.id = -1,
+static int omap_mcpdm_dai_probe(struct snd_soc_dai *dai)
+{
+	snd_soc_dai_set_drvdata(dai, &mcpdm_data);
+	return 0;
+}
+
+static struct snd_soc_dai_driver omap_mcpdm_dai = {
+	.probe = omap_mcpdm_dai_probe,
 	.playback = {
 		.channels_min = 1,
 		.channels_max = 4,
@@ -231,19 +224,47 @@
 		.formats = OMAP_MCPDM_FORMATS,
 	},
 	.ops = &omap_mcpdm_dai_ops,
-	.private_data = &mcpdm_data,
 };
-EXPORT_SYMBOL_GPL(omap_mcpdm_dai);
+
+static __devinit int asoc_mcpdm_probe(struct platform_device *pdev)
+{
+	int ret;
+
+	ret = omap_mcpdm_probe(pdev);
+	if (ret < 0)
+		return ret;
+	ret = snd_soc_register_dai(&pdev->dev, &omap_mcpdm_dai);
+	if (ret < 0)
+		omap_mcpdm_remove(pdev);
+	return ret;
+}
+
+static int __devexit asoc_mcpdm_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_dai(&pdev->dev);
+	omap_mcpdm_remove(pdev);
+	return 0;
+}
+
+static struct platform_driver asoc_mcpdm_driver = {
+	.driver = {
+			.name = "omap-mcpdm-dai",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = asoc_mcpdm_probe,
+	.remove = __devexit_p(asoc_mcpdm_remove),
+};
 
 static int __init snd_omap_mcpdm_init(void)
 {
-	return snd_soc_register_dai(&omap_mcpdm_dai);
+	return platform_driver_register(&asoc_mcpdm_driver);
 }
 module_init(snd_omap_mcpdm_init);
 
 static void __exit snd_omap_mcpdm_exit(void)
 {
-	snd_soc_unregister_dai(&omap_mcpdm_dai);
+	platform_driver_unregister(&asoc_mcpdm_driver);
 }
 module_exit(snd_omap_mcpdm_exit);
 
diff --git a/sound/soc/omap/omap-mcpdm.h b/sound/soc/omap/omap-mcpdm.h
deleted file mode 100644
index 73b80d5..0000000
--- a/sound/soc/omap/omap-mcpdm.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * omap-mcpdm.h
- *
- * Copyright (C) 2009 Texas Instruments
- *
- * Contact: Misael Lopez Cruz <x0052729@ti.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
- *
- * 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
- *
- */
-
-#ifndef __OMAP_MCPDM_H__
-#define __OMAP_MCPDM_H__
-
-extern struct snd_soc_dai omap_mcpdm_dai;
-
-#endif	/* End of __OMAP_MCPDM_H__ */
diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c
index 1e52190..8caeb8d 100644
--- a/sound/soc/omap/omap-pcm.c
+++ b/sound/soc/omap/omap-pcm.c
@@ -101,9 +101,10 @@
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
 	struct omap_runtime_data *prtd = runtime->private_data;
 	struct omap_pcm_dma_data *dma_data;
+
 	int err = 0;
 
-	dma_data = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
+	dma_data = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 
 	/* return if this is a bufferless transfer e.g.
 	 * codec <--> BT codec or GSM modem -- lg FIXME */
@@ -374,14 +375,14 @@
 	if (!card->dev->coherent_dma_mask)
 		card->dev->coherent_dma_mask = DMA_BIT_MASK(64);
 
-	if (dai->playback.channels_min) {
+	if (dai->driver->playback.channels_min) {
 		ret = omap_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_PLAYBACK);
 		if (ret)
 			goto out;
 	}
 
-	if (dai->capture.channels_min) {
+	if (dai->driver->capture.channels_min) {
 		ret = omap_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_CAPTURE);
 		if (ret)
@@ -392,25 +393,45 @@
 	return ret;
 }
 
-struct snd_soc_platform omap_soc_platform = {
-	.name		= "omap-pcm-audio",
-	.pcm_ops 	= &omap_pcm_ops,
+static struct snd_soc_platform_driver omap_soc_platform = {
+	.ops		= &omap_pcm_ops,
 	.pcm_new	= omap_pcm_new,
 	.pcm_free	= omap_pcm_free_dma_buffers,
 };
-EXPORT_SYMBOL_GPL(omap_soc_platform);
 
-static int __init omap_soc_platform_init(void)
+static __devinit int omap_pcm_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_platform(&omap_soc_platform);
+	return snd_soc_register_platform(&pdev->dev,
+			&omap_soc_platform);
 }
-module_init(omap_soc_platform_init);
 
-static void __exit omap_soc_platform_exit(void)
+static int __devexit omap_pcm_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_platform(&omap_soc_platform);
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
 }
-module_exit(omap_soc_platform_exit);
+
+static struct platform_driver omap_pcm_driver = {
+	.driver = {
+			.name = "omap-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = omap_pcm_probe,
+	.remove = __devexit_p(omap_pcm_remove),
+};
+
+static int __init snd_omap_pcm_init(void)
+{
+	return platform_driver_register(&omap_pcm_driver);
+}
+module_init(snd_omap_pcm_init);
+
+static void __exit snd_omap_pcm_exit(void)
+{
+	platform_driver_unregister(&omap_pcm_driver);
+}
+module_exit(snd_omap_pcm_exit);
 
 MODULE_AUTHOR("Jarkko Nikula <jhnikula@gmail.com>");
 MODULE_DESCRIPTION("OMAP PCM DMA module");
diff --git a/sound/soc/omap/omap-pcm.h b/sound/soc/omap/omap-pcm.h
index b19975d..fea0515 100644
--- a/sound/soc/omap/omap-pcm.h
+++ b/sound/soc/omap/omap-pcm.h
@@ -35,6 +35,4 @@
 	int		packet_size;	/* packet size only in PACKET mode */
 };
 
-extern struct snd_soc_platform omap_soc_platform;
-
 #endif
diff --git a/sound/soc/omap/omap2evm.c b/sound/soc/omap/omap2evm.c
index c7adea3..38cd189 100644
--- a/sound/soc/omap/omap2evm.c
+++ b/sound/soc/omap/omap2evm.c
@@ -35,15 +35,13 @@
 
 #include "omap-mcbsp.h"
 #include "omap-pcm.h"
-#include "../codecs/twl4030.h"
 
 static int omap2evm_hw_params(struct snd_pcm_substream *substream,
-	struct snd_pcm_hw_params *params,
-	struct snd_soc_dai *dai)
+	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret;
 
 	/* Set codec DAI configuration */
@@ -85,25 +83,20 @@
 static struct snd_soc_dai_link omap2evm_dai = {
 	.name = "TWL4030",
 	.stream_name = "TWL4030",
-	.cpu_dai = &omap_mcbsp_dai[0],
-	.codec_dai = &twl4030_dai[TWL4030_DAI_HIFI],
+	.cpu_dai_name = "omap-mcbsp-dai.1",
+	.codec_dai_name = "twl4030-hifi",
+	.platform_name = "omap-pcm-audio",
+	.codec_name = "twl4030-codec",
 	.ops = &omap2evm_ops,
 };
 
 /* Audio machine driver */
 static struct snd_soc_card snd_soc_omap2evm = {
 	.name = "omap2evm",
-	.platform = &omap_soc_platform,
 	.dai_link = &omap2evm_dai,
 	.num_links = 1,
 };
 
-/* Audio subsystem */
-static struct snd_soc_device omap2evm_snd_devdata = {
-	.card = &snd_soc_omap2evm,
-	.codec_dev = &soc_codec_dev_twl4030,
-};
-
 static struct platform_device *omap2evm_snd_device;
 
 static int __init omap2evm_soc_init(void)
@@ -122,9 +115,7 @@
 		return -ENOMEM;
 	}
 
-	platform_set_drvdata(omap2evm_snd_device, &omap2evm_snd_devdata);
-	omap2evm_snd_devdata.dev = &omap2evm_snd_device->dev;
-	*(unsigned int *)omap2evm_dai.cpu_dai->private_data = 1; /* McBSP2 */
+	platform_set_drvdata(omap2evm_snd_device, &snd_soc_omap2evm);
 
 	ret = platform_device_add(omap2evm_snd_device);
 	if (ret)
diff --git a/sound/soc/omap/omap3beagle.c b/sound/soc/omap/omap3beagle.c
index 240e097..7c11e1a 100644
--- a/sound/soc/omap/omap3beagle.c
+++ b/sound/soc/omap/omap3beagle.c
@@ -33,14 +33,13 @@
 
 #include "omap-mcbsp.h"
 #include "omap-pcm.h"
-#include "../codecs/twl4030.h"
 
 static int omap3beagle_hw_params(struct snd_pcm_substream *substream,
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	unsigned int fmt;
 	int ret;
 
@@ -92,25 +91,21 @@
 static struct snd_soc_dai_link omap3beagle_dai = {
 	.name = "TWL4030",
 	.stream_name = "TWL4030",
-	.cpu_dai = &omap_mcbsp_dai[0],
-	.codec_dai = &twl4030_dai[TWL4030_DAI_HIFI],
+	.cpu_dai_name = "omap-mcbsp-dai.1",
+	.platform_name = "omap-pcm-audio",
+	.codec_dai_name = "twl4030-hifi",
+	.codec_name = "twl4030-codec",
 	.ops = &omap3beagle_ops,
 };
 
 /* Audio machine driver */
 static struct snd_soc_card snd_soc_omap3beagle = {
 	.name = "omap3beagle",
-	.platform = &omap_soc_platform,
+	.owner = THIS_MODULE,
 	.dai_link = &omap3beagle_dai,
 	.num_links = 1,
 };
 
-/* Audio subsystem */
-static struct snd_soc_device omap3beagle_snd_devdata = {
-	.card = &snd_soc_omap3beagle,
-	.codec_dev = &soc_codec_dev_twl4030,
-};
-
 static struct platform_device *omap3beagle_snd_device;
 
 static int __init omap3beagle_soc_init(void)
@@ -129,9 +124,7 @@
 		return -ENOMEM;
 	}
 
-	platform_set_drvdata(omap3beagle_snd_device, &omap3beagle_snd_devdata);
-	omap3beagle_snd_devdata.dev = &omap3beagle_snd_device->dev;
-	*(unsigned int *)omap3beagle_dai.cpu_dai->private_data = 1; /* McBSP2 */
+	platform_set_drvdata(omap3beagle_snd_device, &snd_soc_omap3beagle);
 
 	ret = platform_device_add(omap3beagle_snd_device);
 	if (ret)
diff --git a/sound/soc/omap/omap3evm.c b/sound/soc/omap/omap3evm.c
index dfcb344..1ac5bab 100644
--- a/sound/soc/omap/omap3evm.c
+++ b/sound/soc/omap/omap3evm.c
@@ -31,14 +31,13 @@
 
 #include "omap-mcbsp.h"
 #include "omap-pcm.h"
-#include "../codecs/twl4030.h"
 
 static int omap3evm_hw_params(struct snd_pcm_substream *substream,
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret;
 
 	/* Set codec DAI configuration */
@@ -80,32 +79,20 @@
 static struct snd_soc_dai_link omap3evm_dai = {
 	.name 		= "TWL4030",
 	.stream_name 	= "TWL4030",
-	.cpu_dai 	= &omap_mcbsp_dai[0],
-	.codec_dai 	= &twl4030_dai[TWL4030_DAI_HIFI],
+	.cpu_dai_name = "omap-mcbsp-dai.1",
+	.codec_dai_name = "twl4030-hifi",
+	.platform_name = "omap-pcm-audio",
+	.codec_name = "twl4030-codec",
 	.ops 		= &omap3evm_ops,
 };
 
 /* Audio machine driver */
 static struct snd_soc_card snd_soc_omap3evm = {
 	.name = "omap3evm",
-	.platform = &omap_soc_platform,
 	.dai_link = &omap3evm_dai,
 	.num_links = 1,
 };
 
-/* twl4030 setup */
-static struct twl4030_setup_data twl4030_setup = {
-	.ramp_delay_value = 4,
-	.sysclk = 26000,
-};
-
-/* Audio subsystem */
-static struct snd_soc_device omap3evm_snd_devdata = {
-	.card = &snd_soc_omap3evm,
-	.codec_dev = &soc_codec_dev_twl4030,
-	.codec_data = &twl4030_setup,
-};
-
 static struct platform_device *omap3evm_snd_device;
 
 static int __init omap3evm_soc_init(void)
@@ -124,10 +111,7 @@
 		return -ENOMEM;
 	}
 
-	platform_set_drvdata(omap3evm_snd_device, &omap3evm_snd_devdata);
-	omap3evm_snd_devdata.dev = &omap3evm_snd_device->dev;
-	*(unsigned int *)omap3evm_dai.cpu_dai->private_data = 1;
-
+	platform_set_drvdata(omap3evm_snd_device, &snd_soc_omap3evm);
 	ret = platform_device_add(omap3evm_snd_device);
 	if (ret)
 		goto err1;
diff --git a/sound/soc/omap/omap3pandora.c b/sound/soc/omap/omap3pandora.c
index 9eecac1..dbd9d96 100644
--- a/sound/soc/omap/omap3pandora.c
+++ b/sound/soc/omap/omap3pandora.c
@@ -31,10 +31,10 @@
 #include <sound/soc-dapm.h>
 
 #include <asm/mach-types.h>
+#include <plat/mcbsp.h>
 
 #include "omap-mcbsp.h"
 #include "omap-pcm.h"
-#include "../codecs/twl4030.h"
 
 #define OMAP3_PANDORA_DAC_POWER_GPIO	118
 #define OMAP3_PANDORA_AMP_POWER_GPIO	14
@@ -47,8 +47,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
 		  SND_SOC_DAIFMT_CBS_CFS;
 	int ret;
@@ -167,8 +167,9 @@
 	{"Mic Bias 2", NULL, "Mic (external)"},
 };
 
-static int omap3pandora_out_init(struct snd_soc_codec *codec)
+static int omap3pandora_out_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int ret;
 
 	/* All TWL4030 output pins are floating */
@@ -194,8 +195,9 @@
 	return snd_soc_dapm_sync(codec);
 }
 
-static int omap3pandora_in_init(struct snd_soc_codec *codec)
+static int omap3pandora_in_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int ret;
 
 	/* Not comnnected */
@@ -224,15 +226,19 @@
 	{
 		.name = "PCM1773",
 		.stream_name = "HiFi Out",
-		.cpu_dai = &omap_mcbsp_dai[0],
-		.codec_dai = &twl4030_dai[TWL4030_DAI_HIFI],
+		.cpu_dai_name = "omap-mcbsp-dai.1",
+		.codec_dai_name = "twl4030-hifi",
+		.platform_name = "omap-pcm-audio",
+		.codec_name = "twl4030-codec",
 		.ops = &omap3pandora_ops,
 		.init = omap3pandora_out_init,
 	}, {
 		.name = "TWL4030",
 		.stream_name = "Line/Mic In",
-		.cpu_dai = &omap_mcbsp_dai[1],
-		.codec_dai = &twl4030_dai[TWL4030_DAI_HIFI],
+		.cpu_dai_name = "omap-mcbsp-dai.3",
+		.codec_dai_name = "twl4030-hifi",
+		.platform_name = "omap-pcm-audio",
+		.codec_name = "twl4030-codec",
 		.ops = &omap3pandora_ops,
 		.init = omap3pandora_in_init,
 	}
@@ -241,17 +247,10 @@
 /* SoC card */
 static struct snd_soc_card snd_soc_card_omap3pandora = {
 	.name = "omap3pandora",
-	.platform = &omap_soc_platform,
 	.dai_link = omap3pandora_dai,
 	.num_links = ARRAY_SIZE(omap3pandora_dai),
 };
 
-/* Audio subsystem */
-static struct snd_soc_device omap3pandora_snd_data = {
-	.card = &snd_soc_card_omap3pandora,
-	.codec_dev = &soc_codec_dev_twl4030,
-};
-
 static struct platform_device *omap3pandora_snd_device;
 
 static int __init omap3pandora_soc_init(void)
@@ -294,10 +293,7 @@
 		goto fail1;
 	}
 
-	platform_set_drvdata(omap3pandora_snd_device, &omap3pandora_snd_data);
-	omap3pandora_snd_data.dev = &omap3pandora_snd_device->dev;
-	*(unsigned int *)omap_mcbsp_dai[0].private_data = 1; /* McBSP2 */
-	*(unsigned int *)omap_mcbsp_dai[1].private_data = 3; /* McBSP4 */
+	platform_set_drvdata(omap3pandora_snd_device, &snd_soc_card_omap3pandora);
 
 	ret = platform_device_add(omap3pandora_snd_device);
 	if (ret) {
diff --git a/sound/soc/omap/osk5912.c b/sound/soc/omap/osk5912.c
index 498ca2e..f0e6625 100644
--- a/sound/soc/omap/osk5912.c
+++ b/sound/soc/omap/osk5912.c
@@ -55,8 +55,8 @@
 			 struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int err;
 
 	/* Set codec DAI configuration */
@@ -113,8 +113,9 @@
 	{"MICIN", NULL, "Mic Jack"},
 };
 
-static int osk_tlv320aic23_init(struct snd_soc_codec *codec)
+static int osk_tlv320aic23_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 
 	/* Add osk5912 specific widgets */
 	snd_soc_dapm_new_controls(codec, tlv320aic23_dapm_widgets,
@@ -136,8 +137,10 @@
 static struct snd_soc_dai_link osk_dai = {
 	.name = "TLV320AIC23",
 	.stream_name = "AIC23",
-	.cpu_dai = &omap_mcbsp_dai[0],
-	.codec_dai = &tlv320aic23_dai,
+	.cpu_dai_name = "omap-mcbsp-dai.0",
+	.codec_dai_name = "tlv320aic23-hifi",
+	.platform_name = "omap-pcm-audio",
+	.codec_name = "tlv320aic23-codec",
 	.init = osk_tlv320aic23_init,
 	.ops = &osk_ops,
 };
@@ -145,17 +148,10 @@
 /* Audio machine driver */
 static struct snd_soc_card snd_soc_card_osk = {
 	.name = "OSK5912",
-	.platform = &omap_soc_platform,
 	.dai_link = &osk_dai,
 	.num_links = 1,
 };
 
-/* Audio subsystem */
-static struct snd_soc_device osk_snd_devdata = {
-	.card = &snd_soc_card_osk,
-	.codec_dev = &soc_codec_dev_tlv320aic23,
-};
-
 static struct platform_device *osk_snd_device;
 
 static int __init osk_soc_init(void)
@@ -171,9 +167,7 @@
 	if (!osk_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(osk_snd_device, &osk_snd_devdata);
-	osk_snd_devdata.dev = &osk_snd_device->dev;
-	*(unsigned int *)osk_dai.cpu_dai->private_data = 0;	/* McBSP1 */
+	platform_set_drvdata(osk_snd_device, &snd_soc_card_osk);
 	err = platform_device_add(osk_snd_device);
 	if (err)
 		goto err1;
diff --git a/sound/soc/omap/overo.c b/sound/soc/omap/overo.c
index c25f527..e95a607 100644
--- a/sound/soc/omap/overo.c
+++ b/sound/soc/omap/overo.c
@@ -33,14 +33,13 @@
 
 #include "omap-mcbsp.h"
 #include "omap-pcm.h"
-#include "../codecs/twl4030.h"
 
 static int overo_hw_params(struct snd_pcm_substream *substream,
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret;
 
 	/* Set codec DAI configuration */
@@ -82,25 +81,20 @@
 static struct snd_soc_dai_link overo_dai = {
 	.name = "TWL4030",
 	.stream_name = "TWL4030",
-	.cpu_dai = &omap_mcbsp_dai[0],
-	.codec_dai = &twl4030_dai[TWL4030_DAI_HIFI],
+	.cpu_dai_name = "omap-mcbsp-dai.1",
+	.codec_dai_name = "twl4030-hifi",
+	.platform_name = "omap-pcm-audio",
+	.codec_name = "twl4030-codec",
 	.ops = &overo_ops,
 };
 
 /* Audio machine driver */
 static struct snd_soc_card snd_soc_card_overo = {
 	.name = "overo",
-	.platform = &omap_soc_platform,
 	.dai_link = &overo_dai,
 	.num_links = 1,
 };
 
-/* Audio subsystem */
-static struct snd_soc_device overo_snd_devdata = {
-	.card = &snd_soc_card_overo,
-	.codec_dev = &soc_codec_dev_twl4030,
-};
-
 static struct platform_device *overo_snd_device;
 
 static int __init overo_soc_init(void)
@@ -119,9 +113,7 @@
 		return -ENOMEM;
 	}
 
-	platform_set_drvdata(overo_snd_device, &overo_snd_devdata);
-	overo_snd_devdata.dev = &overo_snd_device->dev;
-	*(unsigned int *)overo_dai.cpu_dai->private_data = 1; /* McBSP2 */
+	platform_set_drvdata(overo_snd_device, &snd_soc_card_overo);
 
 	ret = platform_device_add(overo_snd_device);
 	if (ret)
diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
index 88052d2..04b5723 100644
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -31,6 +31,7 @@
 #include <sound/pcm.h>
 #include <sound/soc.h>
 #include <sound/soc-dapm.h>
+#include <plat/mcbsp.h>
 
 #include <asm/mach-types.h>
 
@@ -76,7 +77,7 @@
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_codec *codec = rtd->socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 
 	snd_pcm_hw_constraint_minmax(runtime,
 				     SNDRV_PCM_HW_PARAM_CHANNELS, 2, 2);
@@ -89,8 +90,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int err;
 
 	/* Set codec DAI configuration */
@@ -145,9 +146,9 @@
 			  struct snd_kcontrol *k, int event)
 {
 	if (SND_SOC_DAPM_EVENT_ON(event))
-		gpio_set_value(RX51_SPEAKER_AMP_TWL_GPIO, 1);
+		gpio_set_value_cansleep(RX51_SPEAKER_AMP_TWL_GPIO, 1);
 	else
-		gpio_set_value(RX51_SPEAKER_AMP_TWL_GPIO, 0);
+		gpio_set_value_cansleep(RX51_SPEAKER_AMP_TWL_GPIO, 0);
 
 	return 0;
 }
@@ -240,9 +241,9 @@
 		     rx51_get_jack, rx51_set_jack),
 };
 
-static int rx51_aic34_init(struct snd_soc_codec *codec)
+static int rx51_aic34_init(struct snd_soc_pcm_runtime *rtd)
 {
-	struct snd_soc_card *card = codec->socdev->card;
+	struct snd_soc_codec *codec = rtd->codec;
 	int err;
 
 	/* Set up NC codec pins */
@@ -266,7 +267,7 @@
 	snd_soc_dapm_sync(codec);
 
 	/* AV jack detection */
-	err = snd_soc_jack_new(card, "AV Jack",
+	err = snd_soc_jack_new(codec, "AV Jack",
 			       SND_JACK_VIDEOOUT, &rx51_av_jack);
 	if (err)
 		return err;
@@ -282,32 +283,20 @@
 	{
 		.name = "TLV320AIC34",
 		.stream_name = "AIC34",
-		.cpu_dai = &omap_mcbsp_dai[0],
-		.codec_dai = &aic3x_dai,
+		.cpu_dai_name = "omap-mcbsp-dai.1",
+		.codec_dai_name = "tlv320aic3x-hifi",
+		.platform_name = "omap-pcm-audio",
+		.codec_name = "tlv320aic3x-codec.2-0018",
 		.init = rx51_aic34_init,
 		.ops = &rx51_ops,
 	},
 };
 
-/* Audio private data */
-static struct aic3x_setup_data rx51_aic34_setup = {
-	.gpio_func[0] = AIC3X_GPIO1_FUNC_DISABLED,
-	.gpio_func[1] = AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT,
-};
-
 /* Audio card */
 static struct snd_soc_card rx51_sound_card = {
 	.name = "RX-51",
 	.dai_link = rx51_dai,
 	.num_links = ARRAY_SIZE(rx51_dai),
-	.platform = &omap_soc_platform,
-};
-
-/* Audio subsystem */
-static struct snd_soc_device rx51_snd_devdata = {
-	.card = &rx51_sound_card,
-	.codec_dev = &soc_codec_dev_aic3x,
-	.codec_data = &rx51_aic34_setup,
 };
 
 static struct platform_device *rx51_snd_device;
@@ -330,9 +319,7 @@
 		goto err1;
 	}
 
-	platform_set_drvdata(rx51_snd_device, &rx51_snd_devdata);
-	rx51_snd_devdata.dev = &rx51_snd_device->dev;
-	*(unsigned int *)rx51_dai[0].cpu_dai->private_data = 1; /* McBSP2 */
+	platform_set_drvdata(rx51_snd_device, &rx51_sound_card);
 
 	err = platform_device_add(rx51_snd_device);
 	if (err)
diff --git a/sound/soc/omap/sdp3430.c b/sound/soc/omap/sdp3430.c
index 3c85c0f..76ce77b9 100644
--- a/sound/soc/omap/sdp3430.c
+++ b/sound/soc/omap/sdp3430.c
@@ -36,9 +36,11 @@
 #include <mach/gpio.h>
 #include <plat/mcbsp.h>
 
+/* Register descriptions for twl4030 codec part */
+#include <linux/mfd/twl4030-codec.h>
+
 #include "omap-mcbsp.h"
 #include "omap-pcm.h"
-#include "../codecs/twl4030.h"
 
 /* TWL4030 PMBR1 Register */
 #define TWL4030_INTBR_PMBR1		0x0D
@@ -51,8 +53,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret;
 
 	/* Set codec DAI configuration */
@@ -94,8 +96,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret;
 
 	/* Set codec DAI configuration */
@@ -186,8 +188,9 @@
 	{"Headset Stereophone", NULL, "HSOR"},
 };
 
-static int sdp3430_twl4030_init(struct snd_soc_codec *codec)
+static int sdp3430_twl4030_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int ret;
 
 	/* Add SDP3430 specific widgets */
@@ -225,7 +228,7 @@
 		return ret;
 
 	/* Headset jack detection */
-	ret = snd_soc_jack_new(&snd_soc_sdp3430, "Headset Jack",
+	ret = snd_soc_jack_new(codec, "Headset Jack",
 				SND_JACK_HEADSET, &hs_jack);
 	if (ret)
 		return ret;
@@ -241,14 +244,15 @@
 	return ret;
 }
 
-static int sdp3430_twl4030_voice_init(struct snd_soc_codec *codec)
+static int sdp3430_twl4030_voice_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	unsigned short reg;
 
 	/* Enable voice interface */
-	reg = codec->read(codec, TWL4030_REG_VOICE_IF);
+	reg = codec->driver->read(codec, TWL4030_REG_VOICE_IF);
 	reg |= TWL4030_VIF_DIN_EN | TWL4030_VIF_DOUT_EN | TWL4030_VIF_EN;
-	codec->write(codec, TWL4030_REG_VOICE_IF, reg);
+	codec->driver->write(codec, TWL4030_REG_VOICE_IF, reg);
 
 	return 0;
 }
@@ -259,16 +263,20 @@
 	{
 		.name = "TWL4030 I2S",
 		.stream_name = "TWL4030 Audio",
-		.cpu_dai = &omap_mcbsp_dai[0],
-		.codec_dai = &twl4030_dai[TWL4030_DAI_HIFI],
+		.cpu_dai_name = "omap-mcbsp-dai.1",
+		.codec_dai_name = "twl4030-hifi",
+		.platform_name = "omap-pcm-audio",
+		.codec_name = "twl4030-codec",
 		.init = sdp3430_twl4030_init,
 		.ops = &sdp3430_ops,
 	},
 	{
 		.name = "TWL4030 PCM",
 		.stream_name = "TWL4030 Voice",
-		.cpu_dai = &omap_mcbsp_dai[1],
-		.codec_dai = &twl4030_dai[TWL4030_DAI_VOICE],
+		.cpu_dai_name = "omap-mcbsp-dai.2",
+		.codec_dai_name = "twl4030-voice",
+		.platform_name = "omap-pcm-audio",
+		.codec_name = "twl4030-codec",
 		.init = sdp3430_twl4030_voice_init,
 		.ops = &sdp3430_voice_ops,
 	},
@@ -277,25 +285,10 @@
 /* Audio machine driver */
 static struct snd_soc_card snd_soc_sdp3430 = {
 	.name = "SDP3430",
-	.platform = &omap_soc_platform,
 	.dai_link = sdp3430_dai,
 	.num_links = ARRAY_SIZE(sdp3430_dai),
 };
 
-/* twl4030 setup */
-static struct twl4030_setup_data twl4030_setup = {
-	.ramp_delay_value = 3,
-	.sysclk = 26000,
-	.hs_extmute = 1,
-};
-
-/* Audio subsystem */
-static struct snd_soc_device sdp3430_snd_devdata = {
-	.card = &snd_soc_sdp3430,
-	.codec_dev = &soc_codec_dev_twl4030,
-	.codec_data = &twl4030_setup,
-};
-
 static struct platform_device *sdp3430_snd_device;
 
 static int __init sdp3430_soc_init(void)
@@ -315,10 +308,7 @@
 		return -ENOMEM;
 	}
 
-	platform_set_drvdata(sdp3430_snd_device, &sdp3430_snd_devdata);
-	sdp3430_snd_devdata.dev = &sdp3430_snd_device->dev;
-	*(unsigned int *)sdp3430_dai[0].cpu_dai->private_data = 1; /* McBSP2 */
-	*(unsigned int *)sdp3430_dai[1].cpu_dai->private_data = 2; /* McBSP3 */
+	platform_set_drvdata(sdp3430_snd_device, &snd_soc_sdp3430);
 
 	/* Set TWL4030 GPIO6 as EXTMUTE signal */
 	twl_i2c_read_u8(TWL4030_MODULE_INTBR, &pin_mux,
diff --git a/sound/soc/omap/sdp4430.c b/sound/soc/omap/sdp4430.c
index 4ebbde6..62f6a62 100644
--- a/sound/soc/omap/sdp4430.c
+++ b/sound/soc/omap/sdp4430.c
@@ -31,7 +31,6 @@
 #include <plat/mux.h>
 
 #include "mcpdm.h"
-#include "omap-mcpdm.h"
 #include "omap-pcm.h"
 #include "../codecs/twl6040.h"
 
@@ -41,7 +40,7 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 	int clk_id, freq;
 	int ret;
 
@@ -60,6 +59,7 @@
 		printk(KERN_ERR "can't set codec system clock\n");
 		return ret;
 	}
+	return ret;
 }
 
 static struct snd_soc_ops sdp4430_ops = {
@@ -126,8 +126,9 @@
 	{"Earphone Spk", NULL, "EP"},
 };
 
-static int sdp4430_twl6040_init(struct snd_soc_codec *codec)
+static int sdp4430_twl6040_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int ret;
 
 	/* Add SDP4430 specific controls */
@@ -164,8 +165,10 @@
 static struct snd_soc_dai_link sdp4430_dai = {
 	.name = "TWL6040",
 	.stream_name = "TWL6040",
-	.cpu_dai = &omap_mcpdm_dai,
-	.codec_dai = &twl6040_dai,
+	.cpu_dai_name ="omap-mcpdm-dai",
+	.codec_dai_name = "twl6040-hifi",
+	.platform_name = "omap-pcm-audio",
+	.codec_name = "twl6040-codec",
 	.init = sdp4430_twl6040_init,
 	.ops = &sdp4430_ops,
 };
@@ -173,17 +176,10 @@
 /* Audio machine driver */
 static struct snd_soc_card snd_soc_sdp4430 = {
 	.name = "SDP4430",
-	.platform = &omap_soc_platform,
 	.dai_link = &sdp4430_dai,
 	.num_links = 1,
 };
 
-/* Audio subsystem */
-static struct snd_soc_device sdp4430_snd_devdata = {
-	.card = &snd_soc_sdp4430,
-	.codec_dev = &soc_codec_dev_twl6040,
-};
-
 static struct platform_device *sdp4430_snd_device;
 
 static int __init sdp4430_soc_init(void)
@@ -202,8 +198,7 @@
 		return -ENOMEM;
 	}
 
-	platform_set_drvdata(sdp4430_snd_device, &sdp4430_snd_devdata);
-	sdp4430_snd_devdata.dev = &sdp4430_snd_device->dev;
+	platform_set_drvdata(sdp4430_snd_device, &snd_soc_sdp4430);
 
 	ret = platform_device_add(sdp4430_snd_device);
 	if (ret)
diff --git a/sound/soc/omap/zoom2.c b/sound/soc/omap/zoom2.c
index 50a94ee7..338dc95 100644
--- a/sound/soc/omap/zoom2.c
+++ b/sound/soc/omap/zoom2.c
@@ -29,21 +29,23 @@
 #include <asm/mach-types.h>
 #include <mach/hardware.h>
 #include <mach/gpio.h>
+#include <mach/board-zoom.h>
 #include <plat/mcbsp.h>
 
+/* Register descriptions for twl4030 codec part */
+#include <linux/mfd/twl4030-codec.h>
+
 #include "omap-mcbsp.h"
 #include "omap-pcm.h"
-#include "../codecs/twl4030.h"
 
 #define ZOOM2_HEADSET_MUX_GPIO		(OMAP_MAX_GPIO_LINES + 15)
-#define ZOOM2_HEADSET_EXTMUTE_GPIO	153
 
 static int zoom2_hw_params(struct snd_pcm_substream *substream,
 				struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret;
 
 	/* Set codec DAI configuration */
@@ -85,8 +87,8 @@
 				struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret;
 
 	/* Set codec DAI configuration */
@@ -157,8 +159,9 @@
 	{"Aux In", NULL, "AUXR"},
 };
 
-static int zoom2_twl4030_init(struct snd_soc_codec *codec)
+static int zoom2_twl4030_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int ret;
 
 	/* Add Zoom2 specific widgets */
@@ -192,14 +195,15 @@
 	return ret;
 }
 
-static int zoom2_twl4030_voice_init(struct snd_soc_codec *codec)
+static int zoom2_twl4030_voice_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	unsigned short reg;
 
 	/* Enable voice interface */
-	reg = codec->read(codec, TWL4030_REG_VOICE_IF);
+	reg = codec->driver->read(codec, TWL4030_REG_VOICE_IF);
 	reg |= TWL4030_VIF_DIN_EN | TWL4030_VIF_DOUT_EN | TWL4030_VIF_EN;
-	codec->write(codec, TWL4030_REG_VOICE_IF, reg);
+	codec->driver->write(codec, TWL4030_REG_VOICE_IF, reg);
 
 	return 0;
 }
@@ -209,16 +213,20 @@
 	{
 		.name = "TWL4030 I2S",
 		.stream_name = "TWL4030 Audio",
-		.cpu_dai = &omap_mcbsp_dai[0],
-		.codec_dai = &twl4030_dai[TWL4030_DAI_HIFI],
+		.cpu_dai_name = "omap-mcbsp-dai.1",
+		.codec_dai_name = "twl4030-hifi",
+		.platform_name = "omap-pcm-audio",
+		.codec_name = "twl4030-codec",
 		.init = zoom2_twl4030_init,
 		.ops = &zoom2_ops,
 	},
 	{
 		.name = "TWL4030 PCM",
 		.stream_name = "TWL4030 Voice",
-		.cpu_dai = &omap_mcbsp_dai[1],
-		.codec_dai = &twl4030_dai[TWL4030_DAI_VOICE],
+		.cpu_dai_name = "omap-mcbsp-dai.2",
+		.codec_dai_name = "twl4030-voice",
+		.platform_name = "omap-pcm-audio",
+		.codec_name = "twl4030-codec",
 		.init = zoom2_twl4030_voice_init,
 		.ops = &zoom2_voice_ops,
 	},
@@ -227,32 +235,10 @@
 /* Audio machine driver */
 static struct snd_soc_card snd_soc_zoom2 = {
 	.name = "Zoom2",
-	.platform = &omap_soc_platform,
 	.dai_link = zoom2_dai,
 	.num_links = ARRAY_SIZE(zoom2_dai),
 };
 
-/* EXTMUTE callback function */
-void zoom2_set_hs_extmute(int mute)
-{
-	gpio_set_value(ZOOM2_HEADSET_EXTMUTE_GPIO, mute);
-}
-
-/* twl4030 setup */
-static struct twl4030_setup_data twl4030_setup = {
-	.ramp_delay_value = 3,	/* 161 ms */
-	.sysclk = 26000,
-	.hs_extmute = 1,
-	.set_hs_extmute = zoom2_set_hs_extmute,
-};
-
-/* Audio subsystem */
-static struct snd_soc_device zoom2_snd_devdata = {
-	.card = &snd_soc_zoom2,
-	.codec_dev = &soc_codec_dev_twl4030,
-	.codec_data = &twl4030_setup,
-};
-
 static struct platform_device *zoom2_snd_device;
 
 static int __init zoom2_soc_init(void)
@@ -271,11 +257,7 @@
 		return -ENOMEM;
 	}
 
-	platform_set_drvdata(zoom2_snd_device, &zoom2_snd_devdata);
-	zoom2_snd_devdata.dev = &zoom2_snd_device->dev;
-	*(unsigned int *)zoom2_dai[0].cpu_dai->private_data = 1; /* McBSP2 */
-	*(unsigned int *)zoom2_dai[1].cpu_dai->private_data = 2; /* McBSP3 */
-
+	platform_set_drvdata(zoom2_snd_device, &snd_soc_zoom2);
 	ret = platform_device_add(zoom2_snd_device);
 	if (ret)
 		goto err1;
diff --git a/sound/soc/pxa/Kconfig b/sound/soc/pxa/Kconfig
index e30c832..37f191bb 100644
--- a/sound/soc/pxa/Kconfig
+++ b/sound/soc/pxa/Kconfig
@@ -117,6 +117,24 @@
 	  Say Y if you want to add support for SoC audio on
 	  Palm T|X, T5, E2 or LifeDrive handheld computer.
 
+config SND_SOC_SAARB
+	tristate "SoC Audio support for Marvell Saarb"
+	depends on SND_PXA2XX_SOC && MACH_SAARB
+	select SND_PXA_SOC_SSP
+	select SND_SOC_88PM860X
+	help
+	  Say Y if you want to add support for SoC audio on the
+	  Marvell Saarb reference platform.
+
+config SND_SOC_TAVOREVB3
+	tristate "SoC Audio support for Marvell Tavor EVB3"
+	depends on SND_PXA2XX_SOC && MACH_TAVOREVB3
+	select SND_PXA_SOC_SSP
+	select SND_SOC_88PM860X
+	help
+	  Say Y if you want to add support for SoC audio on the
+	  Marvell Saarb reference platform.
+
 config SND_SOC_ZYLONITE
 	tristate "SoC Audio support for Marvell Zylonite"
 	depends on SND_PXA2XX_SOC && MACH_ZYLONITE
diff --git a/sound/soc/pxa/Makefile b/sound/soc/pxa/Makefile
index caa03d8..0766016 100644
--- a/sound/soc/pxa/Makefile
+++ b/sound/soc/pxa/Makefile
@@ -19,6 +19,8 @@
 snd-soc-spitz-objs := spitz.o
 snd-soc-em-x270-objs := em-x270.o
 snd-soc-palm27x-objs := palm27x.o
+snd-soc-saarb-objs := saarb.o
+snd-soc-tavorevb3-objs := tavorevb3.o
 snd-soc-zylonite-objs := zylonite.o
 snd-soc-magician-objs := magician.o
 snd-soc-mioa701-objs := mioa701_wm9713.o
@@ -38,6 +40,8 @@
 obj-$(CONFIG_SND_PXA2XX_SOC_MAGICIAN) += snd-soc-magician.o
 obj-$(CONFIG_SND_PXA2XX_SOC_MIOA701) += snd-soc-mioa701.o
 obj-$(CONFIG_SND_PXA2XX_SOC_Z2) += snd-soc-z2.o
+obj-$(CONFIG_SND_SOC_SAARB) += snd-soc-saarb.o
+obj-$(CONFIG_SND_SOC_TAVOREVB3) += snd-soc-tavorevb3.o
 obj-$(CONFIG_SND_SOC_ZYLONITE) += snd-soc-zylonite.o
 obj-$(CONFIG_SND_PXA2XX_SOC_IMOTE2) += snd-soc-imote2.o
 obj-$(CONFIG_SND_SOC_RAUMFELD) += snd-soc-raumfeld.o
diff --git a/sound/soc/pxa/corgi.c b/sound/soc/pxa/corgi.c
index fefe1a5..97e9423 100644
--- a/sound/soc/pxa/corgi.c
+++ b/sound/soc/pxa/corgi.c
@@ -30,7 +30,6 @@
 #include <mach/audio.h>
 
 #include "../codecs/wm8731.h"
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-i2s.h"
 
 #define CORGI_HP        0
@@ -99,7 +98,7 @@
 static int corgi_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_codec *codec = rtd->socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 
 	/* check the jack status at stream startup */
 	corgi_ext_control(codec);
@@ -118,8 +117,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	unsigned int clk = 0;
 	int ret = 0;
 
@@ -150,7 +149,7 @@
 		return ret;
 
 	/* set the codec system clock for DAC and ADC */
-	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK, clk,
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL, clk,
 		SND_SOC_CLOCK_IN);
 	if (ret < 0)
 		return ret;
@@ -272,8 +271,9 @@
 /*
  * Logic for a wm8731 as connected on a Sharp SL-C7x0 Device
  */
-static int corgi_wm8731_init(struct snd_soc_codec *codec)
+static int corgi_wm8731_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int err;
 
 	snd_soc_dapm_nc_pin(codec, "LLINEIN");
@@ -300,8 +300,10 @@
 static struct snd_soc_dai_link corgi_dai = {
 	.name = "WM8731",
 	.stream_name = "WM8731",
-	.cpu_dai = &pxa_i2s_dai,
-	.codec_dai = &wm8731_dai,
+	.cpu_dai_name = "pxa-is2-dai",
+	.codec_dai_name = "wm8731-hifi",
+	.platform_name = "pxa-pcm-audio",
+	.codec_name = "wm8731-codec-0.001a",
 	.init = corgi_wm8731_init,
 	.ops = &corgi_ops,
 };
@@ -309,17 +311,10 @@
 /* corgi audio machine driver */
 static struct snd_soc_card snd_soc_corgi = {
 	.name = "Corgi",
-	.platform = &pxa2xx_soc_platform,
 	.dai_link = &corgi_dai,
 	.num_links = 1,
 };
 
-/* corgi audio subsystem */
-static struct snd_soc_device corgi_snd_devdata = {
-	.card = &snd_soc_corgi,
-	.codec_dev = &soc_codec_dev_wm8731,
-};
-
 static struct platform_device *corgi_snd_device;
 
 static int __init corgi_init(void)
@@ -334,8 +329,7 @@
 	if (!corgi_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(corgi_snd_device, &corgi_snd_devdata);
-	corgi_snd_devdata.dev = &corgi_snd_device->dev;
+	platform_set_drvdata(corgi_snd_device, &snd_soc_corgi);
 	ret = platform_device_add(corgi_snd_device);
 
 	if (ret)
diff --git a/sound/soc/pxa/e740_wm9705.c b/sound/soc/pxa/e740_wm9705.c
index 7cd2f89..c82cedb 100644
--- a/sound/soc/pxa/e740_wm9705.c
+++ b/sound/soc/pxa/e740_wm9705.c
@@ -24,7 +24,6 @@
 #include <asm/mach-types.h>
 
 #include "../codecs/wm9705.h"
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-ac97.h"
 
 
@@ -90,8 +89,10 @@
 	{"Mic Amp", NULL, "Mic (Internal)"},
 };
 
-static int e740_ac97_init(struct snd_soc_codec *codec)
+static int e740_ac97_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+
 	snd_soc_dapm_nc_pin(codec, "HPOUTL");
 	snd_soc_dapm_nc_pin(codec, "HPOUTR");
 	snd_soc_dapm_nc_pin(codec, "PHONE");
@@ -116,30 +117,28 @@
 	{
 		.name = "AC97",
 		.stream_name = "AC97 HiFi",
-		.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
-		.codec_dai = &wm9705_dai[WM9705_DAI_AC97_HIFI],
+		.cpu_dai_name = "pxa-ac97.0",
+		.codec_dai_name = "wm9705-hifi",
+		.platform_name = "pxa-pcm-audio",
+		.codec_name = "wm9705-codec",
 		.init = e740_ac97_init,
 	},
 	{
 		.name = "AC97 Aux",
 		.stream_name = "AC97 Aux",
-		.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
-		.codec_dai = &wm9705_dai[WM9705_DAI_AC97_AUX],
+		.cpu_dai_name = "pxa-ac97.1",
+		.codec_dai_name = "wm9705-aux",
+		.platform_name = "pxa-pcm-audio",
+		.codec_name = "wm9705-codec",
 	},
 };
 
 static struct snd_soc_card e740 = {
 	.name = "Toshiba e740",
-	.platform = &pxa2xx_soc_platform,
 	.dai_link = e740_dai,
 	.num_links = ARRAY_SIZE(e740_dai),
 };
 
-static struct snd_soc_device e740_snd_devdata = {
-	.card = &e740,
-	.codec_dev = &soc_codec_dev_wm9705,
-};
-
 static struct platform_device *e740_snd_device;
 
 static int __init e740_init(void)
@@ -178,8 +177,7 @@
 		goto free_apwr_gpio;
 	}
 
-	platform_set_drvdata(e740_snd_device, &e740_snd_devdata);
-	e740_snd_devdata.dev = &e740_snd_device->dev;
+	platform_set_drvdata(e740_snd_device, &e740);
 	ret = platform_device_add(e740_snd_device);
 
 	if (!ret)
@@ -200,6 +198,9 @@
 static void __exit e740_exit(void)
 {
 	platform_device_unregister(e740_snd_device);
+	gpio_free(GPIO_E740_WM9705_nAVDD2);
+	gpio_free(GPIO_E740_AMP_ON);
+	gpio_free(GPIO_E740_MIC_ON);
 }
 
 module_init(e740_init);
diff --git a/sound/soc/pxa/e750_wm9705.c b/sound/soc/pxa/e750_wm9705.c
index 8dceccc..4c14380 100644
--- a/sound/soc/pxa/e750_wm9705.c
+++ b/sound/soc/pxa/e750_wm9705.c
@@ -24,7 +24,6 @@
 #include <asm/mach-types.h>
 
 #include "../codecs/wm9705.h"
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-ac97.h"
 
 static int e750_spk_amp_event(struct snd_soc_dapm_widget *w,
@@ -72,8 +71,10 @@
 	{"MIC1", NULL, "Mic (Internal)"},
 };
 
-static int e750_ac97_init(struct snd_soc_codec *codec)
+static int e750_ac97_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+
 	snd_soc_dapm_nc_pin(codec, "LOUT");
 	snd_soc_dapm_nc_pin(codec, "ROUT");
 	snd_soc_dapm_nc_pin(codec, "PHONE");
@@ -98,31 +99,29 @@
 	{
 		.name = "AC97",
 		.stream_name = "AC97 HiFi",
-		.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
-		.codec_dai = &wm9705_dai[WM9705_DAI_AC97_HIFI],
+		.cpu_dai_name = "pxa-ac97.0",
+		.codec_dai_name = "wm9705-hifi",
+		.platform_name = "pxa-pcm-audio",
+		.codec_name = "wm9705-codec",
 		.init = e750_ac97_init,
 		/* use ops to check startup state */
 	},
 	{
 		.name = "AC97 Aux",
 		.stream_name = "AC97 Aux",
-		.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
-		.codec_dai = &wm9705_dai[WM9705_DAI_AC97_AUX],
+		.cpu_dai_name = "pxa-ac97.1",
+		.codec_dai_name ="wm9705-aux",
+		.platform_name = "pxa-pcm-audio",
+		.codec_name = "wm9705-codec",
 	},
 };
 
 static struct snd_soc_card e750 = {
 	.name = "Toshiba e750",
-	.platform = &pxa2xx_soc_platform,
 	.dai_link = e750_dai,
 	.num_links = ARRAY_SIZE(e750_dai),
 };
 
-static struct snd_soc_device e750_snd_devdata = {
-	.card = &e750,
-	.codec_dev = &soc_codec_dev_wm9705,
-};
-
 static struct platform_device *e750_snd_device;
 
 static int __init e750_init(void)
@@ -154,8 +153,7 @@
 		goto free_spk_amp_gpio;
 	}
 
-	platform_set_drvdata(e750_snd_device, &e750_snd_devdata);
-	e750_snd_devdata.dev = &e750_snd_device->dev;
+	platform_set_drvdata(e750_snd_device, &e750);
 	ret = platform_device_add(e750_snd_device);
 
 	if (!ret)
diff --git a/sound/soc/pxa/e800_wm9712.c b/sound/soc/pxa/e800_wm9712.c
index bc019cd..d42e5fe 100644
--- a/sound/soc/pxa/e800_wm9712.c
+++ b/sound/soc/pxa/e800_wm9712.c
@@ -23,7 +23,6 @@
 #include <mach/eseries-gpio.h>
 
 #include "../codecs/wm9712.h"
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-ac97.h"
 
 static int e800_spk_amp_event(struct snd_soc_dapm_widget *w,
@@ -73,8 +72,10 @@
 	{"MIC2", NULL, "Mic (Internal2)"},
 };
 
-static int e800_ac97_init(struct snd_soc_codec *codec)
+static int e800_ac97_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+
 	snd_soc_dapm_new_controls(codec, e800_dapm_widgets,
 					ARRAY_SIZE(e800_dapm_widgets));
 
@@ -88,30 +89,28 @@
 	{
 		.name = "AC97",
 		.stream_name = "AC97 HiFi",
-		.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
-		.codec_dai = &wm9712_dai[WM9712_DAI_AC97_HIFI],
+		.cpu_dai_name = "pxa-ac97.0",
+		.codec_dai_name = "wm9712-hifi",
+		.platform_name = "pxa-pcm-audio",
+		.codec_name = "wm9712-codec",
 		.init = e800_ac97_init,
 	},
 	{
 		.name = "AC97 Aux",
 		.stream_name = "AC97 Aux",
-		.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
-		.codec_dai = &wm9712_dai[WM9712_DAI_AC97_AUX],
+		.cpu_dai_name = "pxa-ac97.1",
+		.codec_dai_name ="wm9712-aux",
+		.platform_name = "pxa-pcm-audio",
+		.codec_name = "wm9712-codec",
 	},
 };
 
 static struct snd_soc_card e800 = {
 	.name = "Toshiba e800",
-	.platform = &pxa2xx_soc_platform,
 	.dai_link = e800_dai,
 	.num_links = ARRAY_SIZE(e800_dai),
 };
 
-static struct snd_soc_device e800_snd_devdata = {
-	.card = &e800,
-	.codec_dev = &soc_codec_dev_wm9712,
-};
-
 static struct platform_device *e800_snd_device;
 
 static int __init e800_init(void)
@@ -141,8 +140,7 @@
 	if (!e800_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(e800_snd_device, &e800_snd_devdata);
-	e800_snd_devdata.dev = &e800_snd_device->dev;
+	platform_set_drvdata(e800_snd_device, &e800);
 	ret = platform_device_add(e800_snd_device);
 
 	if (!ret)
diff --git a/sound/soc/pxa/em-x270.c b/sound/soc/pxa/em-x270.c
index f4756e4..eadf9d3 100644
--- a/sound/soc/pxa/em-x270.c
+++ b/sound/soc/pxa/em-x270.c
@@ -32,36 +32,33 @@
 #include <mach/audio.h>
 
 #include "../codecs/wm9712.h"
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-ac97.h"
 
 static struct snd_soc_dai_link em_x270_dai[] = {
 	{
 		.name = "AC97",
 		.stream_name = "AC97 HiFi",
-		.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
-		.codec_dai = &wm9712_dai[WM9712_DAI_AC97_HIFI],
+		.cpu_dai_name = "pxa-ac97.0",
+		.codec_dai_name = "wm9712-hifi",
+		.platform_name = "pxa-pcm-audio",
+		.codec_name = "wm9712-codec",
 	},
 	{
 		.name = "AC97 Aux",
 		.stream_name = "AC97 Aux",
-		.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
-		.codec_dai = &wm9712_dai[WM9712_DAI_AC97_AUX],
+		.cpu_dai_name = "pxa-ac97.1",
+		.codec_dai_name ="wm9712-aux",
+		.platform_name = "pxa-pcm-audio",
+		.codec_name = "wm9712-codec",
 	},
 };
 
 static struct snd_soc_card em_x270 = {
 	.name = "EM-X270",
-	.platform = &pxa2xx_soc_platform,
 	.dai_link = em_x270_dai,
 	.num_links = ARRAY_SIZE(em_x270_dai),
 };
 
-static struct snd_soc_device em_x270_snd_devdata = {
-	.card = &em_x270,
-	.codec_dev = &soc_codec_dev_wm9712,
-};
-
 static struct platform_device *em_x270_snd_device;
 
 static int __init em_x270_init(void)
@@ -76,8 +73,7 @@
 	if (!em_x270_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(em_x270_snd_device, &em_x270_snd_devdata);
-	em_x270_snd_devdata.dev = &em_x270_snd_device->dev;
+	platform_set_drvdata(em_x270_snd_device, &em_x270);
 	ret = platform_device_add(em_x270_snd_device);
 
 	if (ret)
diff --git a/sound/soc/pxa/imote2.c b/sound/soc/pxa/imote2.c
index 405587a..154fc6f 100644
--- a/sound/soc/pxa/imote2.c
+++ b/sound/soc/pxa/imote2.c
@@ -6,14 +6,13 @@
 
 #include "../codecs/wm8940.h"
 #include "pxa2xx-i2s.h"
-#include "pxa2xx-pcm.h"
 
 static int imote2_asoc_hw_params(struct snd_pcm_substream *substream,
 				 struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	unsigned int clk = 0;
 	int ret;
 
@@ -64,23 +63,19 @@
 static struct snd_soc_dai_link imote2_dai = {
 	.name = "WM8940",
 	.stream_name = "WM8940",
-	.cpu_dai = &pxa_i2s_dai,
-	.codec_dai = &wm8940_dai,
+	.cpu_dai_name = "pxa2xx-i2s",
+	.codec_dai_name = "wm8940-hifi",
+	.platform_name = "pxa-pcm-audio",
+	.codec_name = "wm8940-codec.0-0034",
 	.ops = &imote2_asoc_ops,
 };
 
 static struct snd_soc_card snd_soc_imote2 = {
 	.name = "Imote2",
-	.platform = &pxa2xx_soc_platform,
 	.dai_link = &imote2_dai,
 	.num_links = 1,
 };
 
-static struct snd_soc_device imote2_snd_devdata = {
-	.card = &snd_soc_imote2,
-	.codec_dev = &soc_codec_dev_wm8940,
-};
-
 static struct platform_device *imote2_snd_device;
 
 static int __init imote2_asoc_init(void)
@@ -93,8 +88,7 @@
 	if (!imote2_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(imote2_snd_device, &imote2_snd_devdata);
-	imote2_snd_devdata.dev = &imote2_snd_device->dev;
+	platform_set_drvdata(imote2_snd_device, &snd_soc_imote2);
 	ret = platform_device_add(imote2_snd_device);
 	if (ret)
 		platform_device_put(imote2_snd_device);
diff --git a/sound/soc/pxa/magician.c b/sound/soc/pxa/magician.c
index 4c8d99a..b8207ce 100644
--- a/sound/soc/pxa/magician.c
+++ b/sound/soc/pxa/magician.c
@@ -32,7 +32,6 @@
 #include <mach/magician.h>
 #include <asm/mach-types.h>
 #include "../codecs/uda1380.h"
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-i2s.h"
 #include "pxa-ssp.h"
 
@@ -71,7 +70,7 @@
 static int magician_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_codec *codec = rtd->socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 
 	/* check the jack status at stream startup */
 	magician_ext_control(codec);
@@ -86,8 +85,8 @@
 				       struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	unsigned int acps, acds, width, rate;
 	unsigned int div4 = PXA_SSP_CLK_SCDB_4;
 	int ret = 0;
@@ -227,8 +226,8 @@
 				      struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret = 0;
 
 	/* set codec DAI configuration */
@@ -393,8 +392,9 @@
 /*
  * Logic for a uda1380 as connected on a HTC Magician
  */
-static int magician_uda1380_init(struct snd_soc_codec *codec)
+static int magician_uda1380_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int err;
 
 	/* NC codec pins */
@@ -427,16 +427,20 @@
 {
 	.name = "uda1380",
 	.stream_name = "UDA1380 Playback",
-	.cpu_dai = &pxa_ssp_dai[PXA_DAI_SSP1],
-	.codec_dai = &uda1380_dai[UDA1380_DAI_PLAYBACK],
+	.cpu_dai_name = "pxa-ssp-dai.0",
+	.codec_dai_name = "uda1380-hifi-playback",
+	.platform_name = "pxa-pcm-audio",
+	.codec_name = "uda1380-codec.0-0018",
 	.init = magician_uda1380_init,
 	.ops = &magician_playback_ops,
 },
 {
 	.name = "uda1380",
 	.stream_name = "UDA1380 Capture",
-	.cpu_dai = &pxa_i2s_dai,
-	.codec_dai = &uda1380_dai[UDA1380_DAI_CAPTURE],
+	.cpu_dai_name = "pxa2xx-i2s",
+	.codec_dai_name = "uda1380-hifi-capture",
+	.platform_name = "pxa-pcm-audio",
+	.codec_name = "uda1380-codec.0-0018",
 	.ops = &magician_capture_ops,
 }
 };
@@ -446,13 +450,7 @@
 	.name = "Magician",
 	.dai_link = magician_dai,
 	.num_links = ARRAY_SIZE(magician_dai),
-	.platform = &pxa2xx_soc_platform,
-};
 
-/* magician audio subsystem */
-static struct snd_soc_device magician_snd_devdata = {
-	.card = &snd_soc_card_magician,
-	.codec_dev = &soc_codec_dev_uda1380,
 };
 
 static struct platform_device *magician_snd_device;
@@ -514,8 +512,7 @@
 		goto err_pdev;
 	}
 
-	platform_set_drvdata(magician_snd_device, &magician_snd_devdata);
-	magician_snd_devdata.dev = &magician_snd_device->dev;
+	platform_set_drvdata(magician_snd_device, &snd_soc_card_magician);
 	ret = platform_device_add(magician_snd_device);
 	if (ret) {
 		platform_device_put(magician_snd_device);
diff --git a/sound/soc/pxa/mioa701_wm9713.c b/sound/soc/pxa/mioa701_wm9713.c
index 19eda8b..f284cc5 100644
--- a/sound/soc/pxa/mioa701_wm9713.c
+++ b/sound/soc/pxa/mioa701_wm9713.c
@@ -54,7 +54,6 @@
 #include <sound/initval.h>
 #include <sound/ac97_codec.h>
 
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-ac97.h"
 #include "../codecs/wm9713.h"
 
@@ -128,8 +127,9 @@
 	{"Rear Speaker", NULL, "SPKR"},
 };
 
-static int mioa701_wm9713_init(struct snd_soc_codec *codec)
+static int mioa701_wm9713_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	unsigned short reg;
 
 	/* Add mioa701 specific widgets */
@@ -139,12 +139,12 @@
 	snd_soc_dapm_add_routes(codec, ARRAY_AND_SIZE(audio_map));
 
 	/* Prepare GPIO8 for rear speaker amplifier */
-	reg = codec->read(codec, AC97_GPIO_CFG);
-	codec->write(codec, AC97_GPIO_CFG, reg | 0x0100);
+	reg = codec->driver->read(codec, AC97_GPIO_CFG);
+	codec->driver->write(codec, AC97_GPIO_CFG, reg | 0x0100);
 
 	/* Prepare MIC input */
-	reg = codec->read(codec, AC97_3D_CONTROL);
-	codec->write(codec, AC97_3D_CONTROL, reg | 0xc000);
+	reg = codec->driver->read(codec, AC97_3D_CONTROL);
+	codec->driver->write(codec, AC97_3D_CONTROL, reg | 0xc000);
 
 	snd_soc_dapm_enable_pin(codec, "Front Speaker");
 	snd_soc_dapm_enable_pin(codec, "Rear Speaker");
@@ -162,32 +162,30 @@
 	{
 		.name = "AC97",
 		.stream_name = "AC97 HiFi",
-		.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
-		.codec_dai = &wm9713_dai[WM9713_DAI_AC97_HIFI],
+		.cpu_dai_name = "pxa-ac97.0",
+		.codec_dai_name = "wm9713-hifi",
+		.codec_name = "wm9713-codec",
 		.init = mioa701_wm9713_init,
+		.platform_name = "pxa-pcm-audio",
 		.ops = &mioa701_ops,
 	},
 	{
 		.name = "AC97 Aux",
 		.stream_name = "AC97 Aux",
-		.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
-		.codec_dai = &wm9713_dai[WM9713_DAI_AC97_AUX],
+		.cpu_dai_name = "pxa-ac97.1",
+		.codec_dai_name ="wm9713-aux",
+		.codec_name = "wm9713-codec",
+		.platform_name = "pxa-pcm-audio",
 		.ops = &mioa701_ops,
 	},
 };
 
 static struct snd_soc_card mioa701 = {
 	.name = "MioA701",
-	.platform = &pxa2xx_soc_platform,
 	.dai_link = mioa701_dai,
 	.num_links = ARRAY_SIZE(mioa701_dai),
 };
 
-static struct snd_soc_device mioa701_snd_devdata = {
-	.card = &mioa701,
-	.codec_dev = &soc_codec_dev_wm9713,
-};
-
 static struct platform_device *mioa701_snd_device;
 
 static int mioa701_wm9713_probe(struct platform_device *pdev)
@@ -205,8 +203,7 @@
 	if (!mioa701_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(mioa701_snd_device, &mioa701_snd_devdata);
-	mioa701_snd_devdata.dev = &mioa701_snd_device->dev;
+	platform_set_drvdata(mioa701_snd_device, &mioa701);
 
 	ret = platform_device_add(mioa701_snd_device);
 	if (!ret)
diff --git a/sound/soc/pxa/palm27x.c b/sound/soc/pxa/palm27x.c
index 1f96e32..13f6d48 100644
--- a/sound/soc/pxa/palm27x.c
+++ b/sound/soc/pxa/palm27x.c
@@ -29,7 +29,6 @@
 #include <mach/palmasoc.h>
 
 #include "../codecs/wm9712.h"
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-ac97.h"
 
 static struct snd_soc_jack hs_jack;
@@ -75,8 +74,9 @@
 
 static struct snd_soc_card palm27x_asoc;
 
-static int palm27x_ac97_init(struct snd_soc_codec *codec)
+static int palm27x_ac97_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int err;
 
 	/* add palm27x specific widgets */
@@ -112,7 +112,7 @@
 		return err;
 
 	/* Jack detection API stuff */
-	err = snd_soc_jack_new(&palm27x_asoc, "Headphone Jack",
+	err = snd_soc_jack_new(codec, "Headphone Jack",
 				SND_JACK_HEADPHONE, &hs_jack);
 	if (err)
 		return err;
@@ -132,30 +132,28 @@
 {
 	.name = "AC97 HiFi",
 	.stream_name = "AC97 HiFi",
-	.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
-	.codec_dai = &wm9712_dai[WM9712_DAI_AC97_HIFI],
+	.cpu_dai_name = "pxa-ac97.0",
+	.codec_dai_name =  "wm9712-hifi",
+	.codec_name = "wm9712-codec",
+	.platform_name = "pxa-pcm-audio",
 	.init = palm27x_ac97_init,
 },
 {
 	.name = "AC97 Aux",
 	.stream_name = "AC97 Aux",
-	.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
-	.codec_dai = &wm9712_dai[WM9712_DAI_AC97_AUX],
+	.cpu_dai_name = "pxa-ac97.1",
+	.codec_dai_name = "wm9712-aux",
+	.codec_name = "wm9712-codec",
+	.platform_name = "pxa-pcm-audio",
 },
 };
 
 static struct snd_soc_card palm27x_asoc = {
 	.name = "Palm/PXA27x",
-	.platform = &pxa2xx_soc_platform,
 	.dai_link = palm27x_dai,
 	.num_links = ARRAY_SIZE(palm27x_dai),
 };
 
-static struct snd_soc_device palm27x_snd_devdata = {
-	.card = &palm27x_asoc,
-	.codec_dev = &soc_codec_dev_wm9712,
-};
-
 static struct platform_device *palm27x_snd_device;
 
 static int palm27x_asoc_probe(struct platform_device *pdev)
@@ -178,8 +176,7 @@
 	if (!palm27x_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(palm27x_snd_device, &palm27x_snd_devdata);
-	palm27x_snd_devdata.dev = &palm27x_snd_device->dev;
+	platform_set_drvdata(palm27x_snd_device, &palm27x_asoc);
 	ret = platform_device_add(palm27x_snd_device);
 
 	if (ret != 0)
diff --git a/sound/soc/pxa/poodle.c b/sound/soc/pxa/poodle.c
index c5f36e0..af84ee9 100644
--- a/sound/soc/pxa/poodle.c
+++ b/sound/soc/pxa/poodle.c
@@ -31,7 +31,6 @@
 #include <mach/audio.h>
 
 #include "../codecs/wm8731.h"
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-i2s.h"
 
 #define POODLE_HP        1
@@ -76,7 +75,7 @@
 static int poodle_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_codec *codec = rtd->socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 
 	/* check the jack status at stream startup */
 	poodle_ext_control(codec);
@@ -97,8 +96,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	unsigned int clk = 0;
 	int ret = 0;
 
@@ -129,7 +128,7 @@
 		return ret;
 
 	/* set the codec system clock for DAC and ADC */
-	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK, clk,
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL, clk,
 		SND_SOC_CLOCK_IN);
 	if (ret < 0)
 		return ret;
@@ -237,8 +236,9 @@
 /*
  * Logic for a wm8731 as connected on a Sharp SL-C7x0 Device
  */
-static int poodle_wm8731_init(struct snd_soc_codec *codec)
+static int poodle_wm8731_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int err;
 
 	snd_soc_dapm_nc_pin(codec, "LLINEIN");
@@ -266,8 +266,10 @@
 static struct snd_soc_dai_link poodle_dai = {
 	.name = "WM8731",
 	.stream_name = "WM8731",
-	.cpu_dai = &pxa_i2s_dai,
-	.codec_dai = &wm8731_dai,
+	.cpu_dai_name = "pxa2xx-i2s",
+	.codec_dai_name = "wm8731-hifi",
+	.platform_name = "pxa-pcm-audio",
+	.codec_name = "wm8731-codec.0-001a",
 	.init = poodle_wm8731_init,
 	.ops = &poodle_ops,
 };
@@ -275,15 +277,9 @@
 /* poodle audio machine driver */
 static struct snd_soc_card snd_soc_poodle = {
 	.name = "Poodle",
-	.platform = &pxa2xx_soc_platform,
 	.dai_link = &poodle_dai,
 	.num_links = 1,
-};
-
-/* poodle audio subsystem */
-static struct snd_soc_device poodle_snd_devdata = {
-	.card = &snd_soc_poodle,
-	.codec_dev = &soc_codec_dev_wm8731,
+	.owner = THIS_MODULE,
 };
 
 static struct platform_device *poodle_snd_device;
@@ -307,8 +303,7 @@
 	if (!poodle_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(poodle_snd_device, &poodle_snd_devdata);
-	poodle_snd_devdata.dev = &poodle_snd_device->dev;
+	platform_set_drvdata(poodle_snd_device, &snd_soc_poodle);
 	ret = platform_device_add(poodle_snd_device);
 
 	if (ret)
diff --git a/sound/soc/pxa/pxa-ssp.c b/sound/soc/pxa/pxa-ssp.c
index a1fd23e..b439eee 100644
--- a/sound/soc/pxa/pxa-ssp.c
+++ b/sound/soc/pxa/pxa-ssp.c
@@ -35,7 +35,7 @@
 #include <mach/audio.h>
 #include <plat/ssp.h>
 
-#include "pxa2xx-pcm.h"
+#include "../../arm/pxa2xx-pcm.h"
 #include "pxa-ssp.h"
 
 /*
@@ -108,11 +108,9 @@
 }
 
 static int pxa_ssp_startup(struct snd_pcm_substream *substream,
-			   struct snd_soc_dai *dai)
+			   struct snd_soc_dai *cpu_dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct ssp_priv *priv = cpu_dai->private_data;
+	struct ssp_priv *priv = snd_soc_dai_get_drvdata(cpu_dai);
 	struct ssp_device *ssp = priv->ssp;
 	int ret = 0;
 
@@ -128,11 +126,9 @@
 }
 
 static void pxa_ssp_shutdown(struct snd_pcm_substream *substream,
-			     struct snd_soc_dai *dai)
+			     struct snd_soc_dai *cpu_dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct ssp_priv *priv = cpu_dai->private_data;
+	struct ssp_priv *priv = snd_soc_dai_get_drvdata(cpu_dai);
 	struct ssp_device *ssp = priv->ssp;
 
 	if (!cpu_dai->active) {
@@ -148,7 +144,7 @@
 
 static int pxa_ssp_suspend(struct snd_soc_dai *cpu_dai)
 {
-	struct ssp_priv *priv = cpu_dai->private_data;
+	struct ssp_priv *priv = snd_soc_dai_get_drvdata(cpu_dai);
 	struct ssp_device *ssp = priv->ssp;
 
 	if (!cpu_dai->active)
@@ -166,7 +162,7 @@
 
 static int pxa_ssp_resume(struct snd_soc_dai *cpu_dai)
 {
-	struct ssp_priv *priv = cpu_dai->private_data;
+	struct ssp_priv *priv = snd_soc_dai_get_drvdata(cpu_dai);
 	struct ssp_device *ssp = priv->ssp;
 	uint32_t sssr = SSSR_ROR | SSSR_TUR | SSSR_BCE;
 
@@ -230,7 +226,7 @@
 static int pxa_ssp_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
 	int clk_id, unsigned int freq, int dir)
 {
-	struct ssp_priv *priv = cpu_dai->private_data;
+	struct ssp_priv *priv = snd_soc_dai_get_drvdata(cpu_dai);
 	struct ssp_device *ssp = priv->ssp;
 	int val;
 
@@ -287,7 +283,7 @@
 static int pxa_ssp_set_dai_clkdiv(struct snd_soc_dai *cpu_dai,
 	int div_id, int div)
 {
-	struct ssp_priv *priv = cpu_dai->private_data;
+	struct ssp_priv *priv = snd_soc_dai_get_drvdata(cpu_dai);
 	struct ssp_device *ssp = priv->ssp;
 	int val;
 
@@ -338,7 +334,7 @@
 static int pxa_ssp_set_dai_pll(struct snd_soc_dai *cpu_dai, int pll_id,
 	int source, unsigned int freq_in, unsigned int freq_out)
 {
-	struct ssp_priv *priv = cpu_dai->private_data;
+	struct ssp_priv *priv = snd_soc_dai_get_drvdata(cpu_dai);
 	struct ssp_device *ssp = priv->ssp;
 	u32 ssacd = pxa_ssp_read_reg(ssp, SSACD) & ~0x70;
 
@@ -407,7 +403,7 @@
 static int pxa_ssp_set_dai_tdm_slot(struct snd_soc_dai *cpu_dai,
 	unsigned int tx_mask, unsigned int rx_mask, int slots, int slot_width)
 {
-	struct ssp_priv *priv = cpu_dai->private_data;
+	struct ssp_priv *priv = snd_soc_dai_get_drvdata(cpu_dai);
 	struct ssp_device *ssp = priv->ssp;
 	u32 sscr0;
 
@@ -442,7 +438,7 @@
 static int pxa_ssp_set_dai_tristate(struct snd_soc_dai *cpu_dai,
 	int tristate)
 {
-	struct ssp_priv *priv = cpu_dai->private_data;
+	struct ssp_priv *priv = snd_soc_dai_get_drvdata(cpu_dai);
 	struct ssp_device *ssp = priv->ssp;
 	u32 sscr1;
 
@@ -464,11 +460,9 @@
 static int pxa_ssp_set_dai_fmt(struct snd_soc_dai *cpu_dai,
 		unsigned int fmt)
 {
-	struct ssp_priv *priv = cpu_dai->private_data;
+	struct ssp_priv *priv = snd_soc_dai_get_drvdata(cpu_dai);
 	struct ssp_device *ssp = priv->ssp;
-	u32 sscr0;
-	u32 sscr1;
-	u32 sspsp;
+	u32 sscr0, sscr1, sspsp, scfr;
 
 	/* check if we need to change anything at all */
 	if (priv->dai_fmt == fmt)
@@ -483,16 +477,16 @@
 
 	/* reset port settings */
 	sscr0 = pxa_ssp_read_reg(ssp, SSCR0) &
-		(SSCR0_ECS |  SSCR0_NCS | SSCR0_MOD | SSCR0_ACS);
+		~(SSCR0_ECS |  SSCR0_NCS | SSCR0_MOD | SSCR0_ACS);
 	sscr1 = SSCR1_RxTresh(8) | SSCR1_TxTresh(7);
 	sspsp = 0;
 
 	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
 	case SND_SOC_DAIFMT_CBM_CFM:
-		sscr1 |= SSCR1_SCLKDIR | SSCR1_SFRMDIR;
+		sscr1 |= SSCR1_SCLKDIR | SSCR1_SFRMDIR | SSCR1_SCFR;
 		break;
 	case SND_SOC_DAIFMT_CBM_CFS:
-		sscr1 |= SSCR1_SCLKDIR;
+		sscr1 |= SSCR1_SCLKDIR | SSCR1_SCFR;
 		break;
 	case SND_SOC_DAIFMT_CBS_CFS:
 		break;
@@ -538,6 +532,17 @@
 	pxa_ssp_write_reg(ssp, SSCR1, sscr1);
 	pxa_ssp_write_reg(ssp, SSPSP, sspsp);
 
+	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
+	case SND_SOC_DAIFMT_CBM_CFM:
+	case SND_SOC_DAIFMT_CBM_CFS:
+		scfr = pxa_ssp_read_reg(ssp, SSCR1) | SSCR1_SCFR;
+		pxa_ssp_write_reg(ssp, SSCR1, scfr);
+
+		while (pxa_ssp_read_reg(ssp, SSSR) & SSSR_BSY)
+			cpu_relax();
+		break;
+	}
+
 	dump_registers(ssp);
 
 	/* Since we are configuring the timings for the format by hand
@@ -555,11 +560,9 @@
  */
 static int pxa_ssp_hw_params(struct snd_pcm_substream *substream,
 				struct snd_pcm_hw_params *params,
-				struct snd_soc_dai *dai)
+				struct snd_soc_dai *cpu_dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct ssp_priv *priv = cpu_dai->private_data;
+	struct ssp_priv *priv = snd_soc_dai_get_drvdata(cpu_dai);
 	struct ssp_device *ssp = priv->ssp;
 	int chn = params_channels(params);
 	u32 sscr0;
@@ -568,7 +571,7 @@
 	int ttsa = pxa_ssp_read_reg(ssp, SSTSA) & 0xf;
 	struct pxa2xx_pcm_dma_params *dma_data;
 
-	dma_data = snd_soc_dai_get_dma_data(dai, substream);
+	dma_data = snd_soc_dai_get_dma_data(cpu_dai, substream);
 
 	/* generate correct DMA params */
 	kfree(dma_data);
@@ -581,7 +584,7 @@
 			((chn == 2) && (ttsa != 1)) || (width == 32),
 			substream->stream == SNDRV_PCM_STREAM_PLAYBACK);
 
-	snd_soc_dai_set_dma_data(dai, substream, dma_data);
+	snd_soc_dai_set_dma_data(cpu_dai, substream, dma_data);
 
 	/* we can only change the settings if the port is not in use */
 	if (pxa_ssp_read_reg(ssp, SSCR0) & SSCR0_SSE)
@@ -589,10 +592,8 @@
 
 	/* clear selected SSP bits */
 	sscr0 = pxa_ssp_read_reg(ssp, SSCR0) & ~(SSCR0_DSS | SSCR0_EDSS);
-	pxa_ssp_write_reg(ssp, SSCR0, sscr0);
 
 	/* bit size */
-	sscr0 = pxa_ssp_read_reg(ssp, SSCR0);
 	switch (params_format(params)) {
 	case SNDRV_PCM_FORMAT_S16_LE:
 #ifdef CONFIG_PXA3xx
@@ -668,12 +669,10 @@
 }
 
 static int pxa_ssp_trigger(struct snd_pcm_substream *substream, int cmd,
-			   struct snd_soc_dai *dai)
+			   struct snd_soc_dai *cpu_dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
 	int ret = 0;
-	struct ssp_priv *priv = cpu_dai->private_data;
+	struct ssp_priv *priv = snd_soc_dai_get_drvdata(cpu_dai);
 	struct ssp_device *ssp = priv->ssp;
 	int val;
 
@@ -729,8 +728,7 @@
 	return ret;
 }
 
-static int pxa_ssp_probe(struct platform_device *pdev,
-			    struct snd_soc_dai *dai)
+static int pxa_ssp_probe(struct snd_soc_dai *dai)
 {
 	struct ssp_priv *priv;
 	int ret;
@@ -746,7 +744,7 @@
 	}
 
 	priv->dai_fmt = (unsigned int) -1;
-	dai->private_data = priv;
+	snd_soc_dai_set_drvdata(dai, priv);
 
 	return 0;
 
@@ -755,11 +753,13 @@
 	return ret;
 }
 
-static void pxa_ssp_remove(struct platform_device *pdev,
-			      struct snd_soc_dai *dai)
+static int pxa_ssp_remove(struct snd_soc_dai *dai)
 {
-	struct ssp_priv *priv = dai->private_data;
+	struct ssp_priv *priv = snd_soc_dai_get_drvdata(dai);
+
 	pxa_ssp_free(priv->ssp);
+	kfree(priv);
+	return 0;
 }
 
 #define PXA_SSP_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |\
@@ -784,10 +784,7 @@
 	.set_tristate	= pxa_ssp_set_dai_tristate,
 };
 
-struct snd_soc_dai pxa_ssp_dai[] = {
-	{
-		.name = "pxa2xx-ssp1",
-		.id = 0,
+static struct snd_soc_dai_driver pxa_ssp_dai = {
 		.probe = pxa_ssp_probe,
 		.remove = pxa_ssp_remove,
 		.suspend = pxa_ssp_suspend,
@@ -805,81 +802,38 @@
 			.formats = PXA_SSP_FORMATS,
 		 },
 		.ops = &pxa_ssp_dai_ops,
-	},
-	{	.name = "pxa2xx-ssp2",
-		.id = 1,
-		.probe = pxa_ssp_probe,
-		.remove = pxa_ssp_remove,
-		.suspend = pxa_ssp_suspend,
-		.resume = pxa_ssp_resume,
-		.playback = {
-			.channels_min = 1,
-			.channels_max = 8,
-			.rates = PXA_SSP_RATES,
-			.formats = PXA_SSP_FORMATS,
-		},
-		.capture = {
-			.channels_min = 1,
-			.channels_max = 8,
-			.rates = PXA_SSP_RATES,
-			.formats = PXA_SSP_FORMATS,
-		 },
-		.ops = &pxa_ssp_dai_ops,
-	},
-	{
-		.name = "pxa2xx-ssp3",
-		.id = 2,
-		.probe = pxa_ssp_probe,
-		.remove = pxa_ssp_remove,
-		.suspend = pxa_ssp_suspend,
-		.resume = pxa_ssp_resume,
-		.playback = {
-			.channels_min = 1,
-			.channels_max = 8,
-			.rates = PXA_SSP_RATES,
-			.formats = PXA_SSP_FORMATS,
-		},
-		.capture = {
-			.channels_min = 1,
-			.channels_max = 8,
-			.rates = PXA_SSP_RATES,
-			.formats = PXA_SSP_FORMATS,
-		 },
-		.ops = &pxa_ssp_dai_ops,
-	},
-	{
-		.name = "pxa2xx-ssp4",
-		.id = 3,
-		.probe = pxa_ssp_probe,
-		.remove = pxa_ssp_remove,
-		.suspend = pxa_ssp_suspend,
-		.resume = pxa_ssp_resume,
-		.playback = {
-			.channels_min = 1,
-			.channels_max = 8,
-			.rates = PXA_SSP_RATES,
-			.formats = PXA_SSP_FORMATS,
-		},
-		.capture = {
-			.channels_min = 1,
-			.channels_max = 8,
-			.rates = PXA_SSP_RATES,
-			.formats = PXA_SSP_FORMATS,
-		 },
-		.ops = &pxa_ssp_dai_ops,
-	},
 };
-EXPORT_SYMBOL_GPL(pxa_ssp_dai);
+
+static __devinit int asoc_ssp_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_dai(&pdev->dev, &pxa_ssp_dai);
+}
+
+static int __devexit asoc_ssp_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_dai(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver asoc_ssp_driver = {
+	.driver = {
+			.name = "pxa-ssp-dai",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = asoc_ssp_probe,
+	.remove = __devexit_p(asoc_ssp_remove),
+};
 
 static int __init pxa_ssp_init(void)
 {
-	return snd_soc_register_dais(pxa_ssp_dai, ARRAY_SIZE(pxa_ssp_dai));
+	return platform_driver_register(&asoc_ssp_driver);
 }
 module_init(pxa_ssp_init);
 
 static void __exit pxa_ssp_exit(void)
 {
-	snd_soc_unregister_dais(pxa_ssp_dai, ARRAY_SIZE(pxa_ssp_dai));
+	platform_driver_unregister(&asoc_ssp_driver);
 }
 module_exit(pxa_ssp_exit);
 
diff --git a/sound/soc/pxa/pxa-ssp.h b/sound/soc/pxa/pxa-ssp.h
index 91deadd..bc79da2 100644
--- a/sound/soc/pxa/pxa-ssp.h
+++ b/sound/soc/pxa/pxa-ssp.h
@@ -42,6 +42,4 @@
 
 #define PXA_SSP_PLL_OUT  0
 
-extern struct snd_soc_dai pxa_ssp_dai[4];
-
 #endif
diff --git a/sound/soc/pxa/pxa2xx-ac97.c b/sound/soc/pxa/pxa2xx-ac97.c
index d314115..ac51c6d 100644
--- a/sound/soc/pxa/pxa2xx-ac97.c
+++ b/sound/soc/pxa/pxa2xx-ac97.c
@@ -24,7 +24,6 @@
 #include <mach/dma.h>
 #include <mach/audio.h>
 
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-ac97.h"
 
 static void pxa2xx_ac97_warm_reset(struct snd_ac97 *ac97)
@@ -104,24 +103,21 @@
 #define pxa2xx_ac97_resume	NULL
 #endif
 
-static int pxa2xx_ac97_probe(struct platform_device *pdev,
-			     struct snd_soc_dai *dai)
+static int pxa2xx_ac97_probe(struct snd_soc_dai *dai)
 {
 	return pxa2xx_ac97_hw_probe(to_platform_device(dai->dev));
 }
 
-static void pxa2xx_ac97_remove(struct platform_device *pdev,
-			       struct snd_soc_dai *dai)
+static int pxa2xx_ac97_remove(struct snd_soc_dai *dai)
 {
 	pxa2xx_ac97_hw_remove(to_platform_device(dai->dev));
+	return 0;
 }
 
 static int pxa2xx_ac97_hw_params(struct snd_pcm_substream *substream,
 				 struct snd_pcm_hw_params *params,
-				 struct snd_soc_dai *dai)
+				 struct snd_soc_dai *cpu_dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
 	struct pxa2xx_pcm_dma_params *dma_data;
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
@@ -136,10 +132,8 @@
 
 static int pxa2xx_ac97_hw_aux_params(struct snd_pcm_substream *substream,
 				     struct snd_pcm_hw_params *params,
-				     struct snd_soc_dai *dai)
+				     struct snd_soc_dai *cpu_dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
 	struct pxa2xx_pcm_dma_params *dma_data;
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
@@ -154,11 +148,8 @@
 
 static int pxa2xx_ac97_hw_mic_params(struct snd_pcm_substream *substream,
 				     struct snd_pcm_hw_params *params,
-				     struct snd_soc_dai *dai)
+				     struct snd_soc_dai *cpu_dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
 		return -ENODEV;
 	else
@@ -188,10 +179,9 @@
  * There is only 1 physical AC97 interface for pxa2xx, but it
  * has extra fifo's that can be used for aux DACs and ADCs.
  */
-struct snd_soc_dai pxa_ac97_dai[] = {
+static struct snd_soc_dai_driver pxa_ac97_dai[] = {
 {
 	.name = "pxa2xx-ac97",
-	.id = 0,
 	.ac97_control = 1,
 	.probe = pxa2xx_ac97_probe,
 	.remove = pxa2xx_ac97_remove,
@@ -213,7 +203,6 @@
 },
 {
 	.name = "pxa2xx-ac97-aux",
-	.id = 1,
 	.ac97_control = 1,
 	.playback = {
 		.stream_name = "AC97 Aux Playback",
@@ -231,7 +220,6 @@
 },
 {
 	.name = "pxa2xx-ac97-mic",
-	.id = 2,
 	.ac97_control = 1,
 	.capture = {
 		.stream_name = "AC97 Mic Capture",
@@ -243,36 +231,26 @@
 },
 };
 
-EXPORT_SYMBOL_GPL(pxa_ac97_dai);
 EXPORT_SYMBOL_GPL(soc_ac97_ops);
 
-static int __devinit pxa2xx_ac97_dev_probe(struct platform_device *pdev)
+static __devinit int pxa2xx_ac97_dev_probe(struct platform_device *pdev)
 {
-	int i;
-	pxa2xx_audio_ops_t *pdata = pdev->dev.platform_data;
-
-	if (pdev->id >= 0) {
+	if (pdev->id != -1) {
 		dev_err(&pdev->dev, "PXA2xx has only one AC97 port.\n");
 		return -ENXIO;
 	}
 
-	for (i = 0; i < ARRAY_SIZE(pxa_ac97_dai); i++) {
-		pxa_ac97_dai[i].dev = &pdev->dev;
-		if (pdata && pdata->codec_pdata[0])
-			pxa_ac97_dai[i].ac97_pdata = pdata->codec_pdata[0];
-	}
-
 	/* Punt most of the init to the SoC probe; we may need the machine
 	 * driver to do interesting things with the clocking to get us up
 	 * and running.
 	 */
-	return snd_soc_register_dais(pxa_ac97_dai, ARRAY_SIZE(pxa_ac97_dai));
+	return snd_soc_register_dais(&pdev->dev, pxa_ac97_dai,
+			ARRAY_SIZE(pxa_ac97_dai));
 }
 
 static int __devexit pxa2xx_ac97_dev_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_dais(pxa_ac97_dai, ARRAY_SIZE(pxa_ac97_dai));
-
+	snd_soc_unregister_dais(&pdev->dev, ARRAY_SIZE(pxa_ac97_dai));
 	return 0;
 }
 
diff --git a/sound/soc/pxa/pxa2xx-ac97.h b/sound/soc/pxa/pxa2xx-ac97.h
index e390de8..eda891e 100644
--- a/sound/soc/pxa/pxa2xx-ac97.h
+++ b/sound/soc/pxa/pxa2xx-ac97.h
@@ -14,8 +14,6 @@
 #define PXA2XX_DAI_AC97_AUX		1
 #define PXA2XX_DAI_AC97_MIC		2
 
-extern struct snd_soc_dai pxa_ac97_dai[3];
-
 /* platform data */
 extern struct snd_ac97_bus_ops pxa2xx_ac97_ops;
 
diff --git a/sound/soc/pxa/pxa2xx-i2s.c b/sound/soc/pxa/pxa2xx-i2s.c
index c1a52757..11be595 100644
--- a/sound/soc/pxa/pxa2xx-i2s.c
+++ b/sound/soc/pxa/pxa2xx-i2s.c
@@ -27,7 +27,6 @@
 #include <mach/dma.h>
 #include <mach/audio.h>
 
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-i2s.h"
 
 /*
@@ -80,6 +79,7 @@
 };
 static struct pxa_i2s_port pxa_i2s;
 static struct clk *clk_i2s;
+static int clk_ena = 0;
 
 static struct pxa2xx_pcm_dma_params pxa2xx_i2s_pcm_stereo_out = {
 	.name			= "I2S PCM Stereo out",
@@ -101,7 +101,7 @@
 			      struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 
 	if (IS_ERR(clk_i2s))
 		return PTR_ERR(clk_i2s);
@@ -162,13 +162,11 @@
 				struct snd_pcm_hw_params *params,
 				struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
 	struct pxa2xx_pcm_dma_params *dma_data;
 
 	BUG_ON(IS_ERR(clk_i2s));
 	clk_enable(clk_i2s);
-	dai->private_data = dai;
+	clk_ena = 1;
 	pxa_i2s_wait();
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
@@ -176,7 +174,7 @@
 	else
 		dma_data = &pxa2xx_i2s_pcm_stereo_in;
 
-	snd_soc_dai_set_dma_data(cpu_dai, substream, dma_data);
+	snd_soc_dai_set_dma_data(dai, substream, dma_data);
 
 	/* is port used by another stream */
 	if (!(SACR0 & SACR0_ENB)) {
@@ -259,9 +257,9 @@
 	if ((SACR1 & (SACR1_DREC | SACR1_DRPL)) == (SACR1_DREC | SACR1_DRPL)) {
 		SACR0 &= ~SACR0_ENB;
 		pxa_i2s_wait();
-		if (dai->private_data != NULL) {
+		if (clk_ena) {
 			clk_disable(clk_i2s);
-			dai->private_data = NULL;
+			clk_ena = 0;
 		}
 	}
 }
@@ -300,6 +298,35 @@
 #define pxa2xx_i2s_resume	NULL
 #endif
 
+static int pxa2xx_i2s_probe(struct snd_soc_dai *dai)
+{
+	clk_i2s = clk_get(dai->dev, "I2SCLK");
+	if (IS_ERR(clk_i2s))
+		return PTR_ERR(clk_i2s);
+
+	/*
+	 * PXA Developer's Manual:
+	 * If SACR0[ENB] is toggled in the middle of a normal operation,
+	 * the SACR0[RST] bit must also be set and cleared to reset all
+	 * I2S controller registers.
+	 */
+	SACR0 = SACR0_RST;
+	SACR0 = 0;
+	/* Make sure RPL and REC are disabled */
+	SACR1 = SACR1_DRPL | SACR1_DREC;
+	/* Along with FIFO servicing */
+	SAIMR &= ~(SAIMR_RFS | SAIMR_TFS);
+
+	return 0;
+}
+
+static int  pxa2xx_i2s_remove(struct snd_soc_dai *dai)
+{
+	clk_put(clk_i2s);
+	clk_i2s = ERR_PTR(-ENOENT);
+	return 0;
+}
+
 #define PXA2XX_I2S_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |\
 		SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | \
 		SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000)
@@ -313,9 +340,9 @@
 	.set_sysclk	= pxa2xx_i2s_set_dai_sysclk,
 };
 
-struct snd_soc_dai pxa_i2s_dai = {
-	.name = "pxa2xx-i2s",
-	.id = 0,
+static struct snd_soc_dai_driver pxa_i2s_dai = {
+	.probe = pxa2xx_i2s_probe,
+	.remove = pxa2xx_i2s_remove,
 	.suspend = pxa2xx_i2s_suspend,
 	.resume = pxa2xx_i2s_resume,
 	.playback = {
@@ -332,49 +359,20 @@
 	.symmetric_rates = 1,
 };
 
-EXPORT_SYMBOL_GPL(pxa_i2s_dai);
-
-static int pxa2xx_i2s_probe(struct platform_device *dev)
+static int pxa2xx_i2s_drv_probe(struct platform_device *pdev)
 {
-	int ret;
-
-	clk_i2s = clk_get(&dev->dev, "I2SCLK");
-	if (IS_ERR(clk_i2s))
-		return PTR_ERR(clk_i2s);
-
-	pxa_i2s_dai.dev = &dev->dev;
-	pxa_i2s_dai.private_data = NULL;
-	ret = snd_soc_register_dai(&pxa_i2s_dai);
-	if (ret != 0)
-		clk_put(clk_i2s);
-
-	/*
-	 * PXA Developer's Manual:
-	 * If SACR0[ENB] is toggled in the middle of a normal operation,
-	 * the SACR0[RST] bit must also be set and cleared to reset all
-	 * I2S controller registers.
-	 */
-	SACR0 = SACR0_RST;
-	SACR0 = 0;
-	/* Make sure RPL and REC are disabled */
-	SACR1 = SACR1_DRPL | SACR1_DREC;
-	/* Along with FIFO servicing */
-	SAIMR &= ~(SAIMR_RFS | SAIMR_TFS);
-
-	return ret;
+	return snd_soc_register_dai(&pdev->dev, &pxa_i2s_dai);
 }
 
-static int __devexit pxa2xx_i2s_remove(struct platform_device *dev)
+static int __devexit pxa2xx_i2s_drv_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_dai(&pxa_i2s_dai);
-	clk_put(clk_i2s);
-	clk_i2s = ERR_PTR(-ENOENT);
+	snd_soc_unregister_dai(&pdev->dev);
 	return 0;
 }
 
 static struct platform_driver pxa2xx_i2s_driver = {
-	.probe = pxa2xx_i2s_probe,
-	.remove = __devexit_p(pxa2xx_i2s_remove),
+	.probe = pxa2xx_i2s_drv_probe,
+	.remove = __devexit_p(pxa2xx_i2s_drv_remove),
 
 	.driver = {
 		.name = "pxa2xx-i2s",
@@ -400,3 +398,4 @@
 MODULE_AUTHOR("Liam Girdwood, lrg@slimlogic.co.uk");
 MODULE_DESCRIPTION("pxa2xx I2S SoC Interface");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:pxa2xx-i2s");
diff --git a/sound/soc/pxa/pxa2xx-i2s.h b/sound/soc/pxa/pxa2xx-i2s.h
index e2def44..070f3c6 100644
--- a/sound/soc/pxa/pxa2xx-i2s.h
+++ b/sound/soc/pxa/pxa2xx-i2s.h
@@ -15,6 +15,4 @@
 /* I2S clock */
 #define PXA2XX_I2S_SYSCLK		0
 
-extern struct snd_soc_dai pxa_i2s_dai;
-
 #endif
diff --git a/sound/soc/pxa/pxa2xx-pcm.c b/sound/soc/pxa/pxa2xx-pcm.c
index adc7e6f..02fb664 100644
--- a/sound/soc/pxa/pxa2xx-pcm.c
+++ b/sound/soc/pxa/pxa2xx-pcm.c
@@ -16,7 +16,6 @@
 #include <sound/soc.h>
 #include <sound/pxa2xx-lib.h>
 
-#include "pxa2xx-pcm.h"
 #include "../../arm/pxa2xx-pcm.h"
 
 static int pxa2xx_pcm_hw_params(struct snd_pcm_substream *substream,
@@ -28,7 +27,7 @@
 	struct pxa2xx_pcm_dma_params *dma;
 	int ret;
 
-	dma = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
+	dma = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 
 	/* return if this is a bufferless transfer e.g.
 	 * codec <--> BT codec or GSM modem -- lg FIXME */
@@ -95,14 +94,14 @@
 	if (!card->dev->coherent_dma_mask)
 		card->dev->coherent_dma_mask = DMA_BIT_MASK(32);
 
-	if (dai->playback.channels_min) {
+	if (dai->driver->playback.channels_min) {
 		ret = pxa2xx_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_PLAYBACK);
 		if (ret)
 			goto out;
 	}
 
-	if (dai->capture.channels_min) {
+	if (dai->driver->capture.channels_min) {
 		ret = pxa2xx_pcm_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_CAPTURE);
 		if (ret)
@@ -112,25 +111,44 @@
 	return ret;
 }
 
-struct snd_soc_platform pxa2xx_soc_platform = {
-	.name		= "pxa2xx-audio",
-	.pcm_ops 	= &pxa2xx_pcm_ops,
+static struct snd_soc_platform_driver pxa2xx_soc_platform = {
+	.ops 	= &pxa2xx_pcm_ops,
 	.pcm_new	= pxa2xx_soc_pcm_new,
 	.pcm_free	= pxa2xx_pcm_free_dma_buffers,
 };
-EXPORT_SYMBOL_GPL(pxa2xx_soc_platform);
 
-static int __init pxa2xx_soc_platform_init(void)
+static int __devinit pxa2xx_soc_platform_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_platform(&pxa2xx_soc_platform);
+	return snd_soc_register_platform(&pdev->dev, &pxa2xx_soc_platform);
 }
-module_init(pxa2xx_soc_platform_init);
 
-static void __exit pxa2xx_soc_platform_exit(void)
+static int __devexit pxa2xx_soc_platform_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_platform(&pxa2xx_soc_platform);
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
 }
-module_exit(pxa2xx_soc_platform_exit);
+
+static struct platform_driver pxa_pcm_driver = {
+	.driver = {
+			.name = "pxa-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = pxa2xx_soc_platform_probe,
+	.remove = __devexit_p(pxa2xx_soc_platform_remove),
+};
+
+static int __init snd_pxa_pcm_init(void)
+{
+	return platform_driver_register(&pxa_pcm_driver);
+}
+module_init(snd_pxa_pcm_init);
+
+static void __exit snd_pxa_pcm_exit(void)
+{
+	platform_driver_unregister(&pxa_pcm_driver);
+}
+module_exit(snd_pxa_pcm_exit);
 
 MODULE_AUTHOR("Nicolas Pitre");
 MODULE_DESCRIPTION("Intel PXA2xx PCM DMA module");
diff --git a/sound/soc/pxa/pxa2xx-pcm.h b/sound/soc/pxa/pxa2xx-pcm.h
deleted file mode 100644
index 60c3b20..0000000
--- a/sound/soc/pxa/pxa2xx-pcm.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * linux/sound/arm/pxa2xx-pcm.h -- ALSA PCM interface for the Intel PXA2xx chip
- *
- * Author:	Nicolas Pitre
- * Created:	Nov 30, 2004
- * Copyright:	MontaVista Software, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef _PXA2XX_PCM_H
-#define _PXA2XX_PCM_H
-
-/* platform data */
-extern struct snd_soc_platform pxa2xx_soc_platform;
-
-#endif
diff --git a/sound/soc/pxa/raumfeld.c b/sound/soc/pxa/raumfeld.c
index 7e3f416..2cda82bc 100644
--- a/sound/soc/pxa/raumfeld.c
+++ b/sound/soc/pxa/raumfeld.c
@@ -26,9 +26,6 @@
 
 #include <asm/mach-types.h>
 
-#include "../codecs/cs4270.h"
-#include "../codecs/ak4104.h"
-#include "pxa2xx-pcm.h"
 #include "pxa-ssp.h"
 
 #define GPIO_SPDIF_RESET	(38)
@@ -71,7 +68,7 @@
 static int raumfeld_cs4270_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 
 	/* set freq to 0 to enable all possible codec sample rates */
 	return snd_soc_dai_set_sysclk(codec_dai, 0, 0, 0);
@@ -80,7 +77,7 @@
 static void raumfeld_cs4270_shutdown(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 
 	/* set freq to 0 to enable all possible codec sample rates */
 	snd_soc_dai_set_sysclk(codec_dai, 0, 0, 0);
@@ -90,8 +87,8 @@
 				     struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	unsigned int fmt, clk = 0;
 	int ret = 0;
 
@@ -167,32 +164,14 @@
 	return 0;
 }
 
-static struct snd_soc_dai_link raumfeld_line_dai = {
-	.name		= "CS4270",
-	.stream_name	= "CS4270",
-	.cpu_dai	= &pxa_ssp_dai[PXA_DAI_SSP1],
-	.codec_dai	= &cs4270_dai,
-	.ops		= &raumfeld_cs4270_ops,
-};
-
-static struct snd_soc_card snd_soc_line_raumfeld = {
-	.name		= "Raumfeld analog",
-	.platform	= &pxa2xx_soc_platform,
-	.dai_link	= &raumfeld_line_dai,
-	.suspend_post	= raumfeld_line_suspend,
-	.resume_pre	= raumfeld_line_resume,
-	.num_links	= 1,
-};
-
-
 /* AK4104 */
 
 static int raumfeld_ak4104_hw_params(struct snd_pcm_substream *substream,
 				     struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int fmt, ret = 0, clk = 0;
 
 	switch (params_rate(params)) {
@@ -247,34 +226,35 @@
 	.hw_params = raumfeld_ak4104_hw_params,
 };
 
-static struct snd_soc_dai_link raumfeld_spdif_dai = {
+static struct snd_soc_dai_link raumfeld_dai[] = {
+{
 	.name		= "ak4104",
 	.stream_name	= "Playback",
-	.cpu_dai	= &pxa_ssp_dai[PXA_DAI_SSP2],
-	.codec_dai	= &ak4104_dai,
+	.cpu_dai_name = "pxa-ssp-dai.1",
+	.codec_dai_name = "ak4104-hifi",
+	.platform_name = "pxa-pcm-audio",
 	.ops		= &raumfeld_ak4104_ops,
+	.codec_name = "ak4104-codec.0",
+},
+{
+	.name		= "CS4270",
+	.stream_name	= "CS4270",
+	.cpu_dai_name = "pxa-ssp-dai.0",
+	.platform_name = "pxa-pcm-audio",
+	.codec_dai_name = "cs4270-hifi",
+	.codec_name = "cs4270-codec.0-0048",
+	.ops		= &raumfeld_cs4270_ops,
+},};
+
+static struct snd_soc_card snd_soc_raumfeld = {
+	.name		= "Raumfeld",
+	.dai_link	= raumfeld_dai,
+	.suspend_post	= raumfeld_line_suspend,
+	.resume_pre	= raumfeld_line_resume,
+	.num_links	= ARRAY_SIZE(raumfeld_dai),
 };
 
-static struct snd_soc_card snd_soc_spdif_raumfeld = {
-	.name		= "Raumfeld S/PDIF",
-	.platform	= &pxa2xx_soc_platform,
-	.dai_link	= &raumfeld_spdif_dai,
-	.num_links	= 1
-};
-
-/* raumfeld_audio audio subsystem */
-static struct snd_soc_device raumfeld_line_devdata = {
-	.card = &snd_soc_line_raumfeld,
-	.codec_dev = &soc_codec_device_cs4270,
-};
-
-static struct snd_soc_device raumfeld_spdif_devdata = {
-	.card = &snd_soc_spdif_raumfeld,
-	.codec_dev = &soc_codec_device_ak4104,
-};
-
-static struct platform_device *raumfeld_audio_line_device;
-static struct platform_device *raumfeld_audio_spdif_device;
+static struct platform_device *raumfeld_audio_device;
 
 static int __init raumfeld_audio_init(void)
 {
@@ -292,38 +272,19 @@
 
 	set_max9485_clk(MAX9485_MCLK_FREQ_122880);
 
-	/* LINE */
-	raumfeld_audio_line_device = platform_device_alloc("soc-audio", 0);
-	if (!raumfeld_audio_line_device)
+	/* Register LINE and SPDIF */
+	raumfeld_audio_device = platform_device_alloc("soc-audio", 0);
+	if (!raumfeld_audio_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(raumfeld_audio_line_device,
-			     &raumfeld_line_devdata);
-	raumfeld_line_devdata.dev = &raumfeld_audio_line_device->dev;
-	ret = platform_device_add(raumfeld_audio_line_device);
-	if (ret)
-		platform_device_put(raumfeld_audio_line_device);
+	platform_set_drvdata(raumfeld_audio_device,
+			     &snd_soc_raumfeld);
+	ret = platform_device_add(raumfeld_audio_device);
 
 	/* no S/PDIF on Speakers */
 	if (machine_is_raumfeld_speaker())
 		return ret;
 
-	/* S/PDIF */
-	raumfeld_audio_spdif_device = platform_device_alloc("soc-audio", 1);
-	if (!raumfeld_audio_spdif_device) {
-		platform_device_put(raumfeld_audio_line_device);
-		return -ENOMEM;
-	}
-
-	platform_set_drvdata(raumfeld_audio_spdif_device,
-			     &raumfeld_spdif_devdata);
-	raumfeld_spdif_devdata.dev = &raumfeld_audio_spdif_device->dev;
-	ret = platform_device_add(raumfeld_audio_spdif_device);
-	if (ret) {
-		platform_device_put(raumfeld_audio_line_device);
-		platform_device_put(raumfeld_audio_spdif_device);
-	}
-
 	raumfeld_enable_audio(true);
 
 	return ret;
@@ -333,10 +294,7 @@
 {
 	raumfeld_enable_audio(false);
 
-	platform_device_unregister(raumfeld_audio_line_device);
-
-	if (machine_is_raumfeld_connector())
-		platform_device_unregister(raumfeld_audio_spdif_device);
+	platform_device_unregister(raumfeld_audio_device);
 
 	i2c_unregister_device(max9486_client);
 
diff --git a/sound/soc/pxa/saarb.c b/sound/soc/pxa/saarb.c
new file mode 100644
index 0000000..d63cb47
--- /dev/null
+++ b/sound/soc/pxa/saarb.c
@@ -0,0 +1,200 @@
+/*
+ * saarb.c -- SoC audio for saarb
+ *
+ * Copyright (C) 2010 Marvell International Ltd.
+ * 	Haojian Zhuang <haojian.zhuang@marvell.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/device.h>
+#include <linux/clk.h>
+#include <linux/i2c.h>
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+#include <sound/soc-dapm.h>
+#include <sound/jack.h>
+
+#include <asm/mach-types.h>
+
+#include "../codecs/88pm860x-codec.h"
+#include "pxa-ssp.h"
+
+static int saarb_pm860x_init(struct snd_soc_pcm_runtime *rtd);
+
+static struct platform_device *saarb_snd_device;
+
+static struct snd_soc_jack hs_jack, mic_jack;
+
+static struct snd_soc_jack_pin hs_jack_pins[] = {
+	{ .pin = "Headset Stereophone",	.mask = SND_JACK_HEADPHONE, },
+};
+
+static struct snd_soc_jack_pin mic_jack_pins[] = {
+	{ .pin = "Headset Mic 2",	.mask = SND_JACK_MICROPHONE, },
+};
+
+/* saarb machine dapm widgets */
+static const struct snd_soc_dapm_widget saarb_dapm_widgets[] = {
+	SND_SOC_DAPM_HP("Headphone Stereophone", NULL),
+	SND_SOC_DAPM_LINE("Lineout Out 1", NULL),
+	SND_SOC_DAPM_LINE("Lineout Out 2", NULL),
+	SND_SOC_DAPM_SPK("Ext Speaker", NULL),
+	SND_SOC_DAPM_MIC("Ext Mic 1", NULL),
+	SND_SOC_DAPM_MIC("Headset Mic", NULL),
+	SND_SOC_DAPM_MIC("Ext Mic 3", NULL),
+};
+
+/* saarb machine audio map */
+static const struct snd_soc_dapm_route audio_map[] = {
+	{"Headset Stereophone", NULL, "HS1"},
+	{"Headset Stereophone", NULL, "HS2"},
+
+	{"Ext Speaker", NULL, "LSP"},
+	{"Ext Speaker", NULL, "LSN"},
+
+	{"Lineout Out 1", NULL, "LINEOUT1"},
+	{"Lineout Out 2", NULL, "LINEOUT2"},
+
+	{"MIC1P", NULL, "Mic1 Bias"},
+	{"MIC1N", NULL, "Mic1 Bias"},
+	{"Mic1 Bias", NULL, "Ext Mic 1"},
+
+	{"MIC2P", NULL, "Mic1 Bias"},
+	{"MIC2N", NULL, "Mic1 Bias"},
+	{"Mic1 Bias", NULL, "Headset Mic 2"},
+
+	{"MIC3P", NULL, "Mic3 Bias"},
+	{"MIC3N", NULL, "Mic3 Bias"},
+	{"Mic3 Bias", NULL, "Ext Mic 3"},
+};
+
+static int saarb_i2s_hw_params(struct snd_pcm_substream *substream,
+				struct snd_pcm_hw_params *params)
+{
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	int width = snd_pcm_format_physical_width(params_format(params));
+	int ret;
+
+	ret = snd_soc_dai_set_sysclk(cpu_dai, PXA_SSP_CLK_NET_PLL, 0,
+				     PM860X_CLK_DIR_OUT);
+	if (ret < 0)
+		return ret;
+
+	ret = snd_soc_dai_set_sysclk(codec_dai, 0, 0, PM860X_CLK_DIR_OUT);
+	if (ret < 0)
+		return ret;
+
+	ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
+			SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);
+	if (ret < 0)
+		return ret;
+	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
+			SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);
+	if (ret < 0)
+		return ret;
+
+	ret = snd_soc_dai_set_tdm_slot(cpu_dai, 3, 3, 2, width);
+
+	return ret;
+}
+
+static struct snd_soc_ops saarb_i2s_ops = {
+	.hw_params	= saarb_i2s_hw_params,
+};
+
+static struct snd_soc_dai_link saarb_dai[] = {
+	{
+		.name		= "88PM860x I2S",
+		.stream_name	= "I2S Audio",
+		.cpu_dai_name	= "pxa-ssp-dai.1",
+		.codec_dai_name	= "88pm860x-i2s",
+		.platform_name	= "pxa-pcm-audio",
+		.codec_name	= "88pm860x-codec",
+		.init		= saarb_pm860x_init,
+		.ops		= &saarb_i2s_ops,
+	},
+};
+
+static struct snd_soc_card snd_soc_card_saarb = {
+	.name = "Saarb",
+	.dai_link = saarb_dai,
+	.num_links = ARRAY_SIZE(saarb_dai),
+};
+
+static int saarb_pm860x_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_codec *codec = rtd->codec;
+	int ret;
+
+	snd_soc_dapm_new_controls(codec, saarb_dapm_widgets,
+				  ARRAY_SIZE(saarb_dapm_widgets));
+	snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
+
+	/* connected pins */
+	snd_soc_dapm_enable_pin(codec, "Ext Speaker");
+	snd_soc_dapm_enable_pin(codec, "Ext Mic 1");
+	snd_soc_dapm_enable_pin(codec, "Ext Mic 3");
+	snd_soc_dapm_disable_pin(codec, "Headset Mic 2");
+	snd_soc_dapm_disable_pin(codec, "Headset Stereophone");
+
+	ret = snd_soc_dapm_sync(codec);
+	if (ret)
+		return ret;
+
+	/* Headset jack detection */
+	snd_soc_jack_new(codec, "Headphone Jack", SND_JACK_HEADPHONE
+			| SND_JACK_BTN_0 | SND_JACK_BTN_1 | SND_JACK_BTN_2,
+			&hs_jack);
+	snd_soc_jack_add_pins(&hs_jack, ARRAY_SIZE(hs_jack_pins),
+			      hs_jack_pins);
+	snd_soc_jack_new(codec, "Microphone Jack", SND_JACK_MICROPHONE,
+			 &mic_jack);
+	snd_soc_jack_add_pins(&mic_jack, ARRAY_SIZE(mic_jack_pins),
+			      mic_jack_pins);
+
+	/* headphone, microphone detection & headset short detection */
+	pm860x_hs_jack_detect(codec, &hs_jack, SND_JACK_HEADPHONE,
+			      SND_JACK_BTN_0, SND_JACK_BTN_1, SND_JACK_BTN_2);
+	pm860x_mic_jack_detect(codec, &hs_jack, SND_JACK_MICROPHONE);
+	return 0;
+}
+
+static int __init saarb_init(void)
+{
+	int ret;
+
+	if (!machine_is_saarb())
+		return -ENODEV;
+	saarb_snd_device = platform_device_alloc("soc-audio", -1);
+	if (!saarb_snd_device)
+		return -ENOMEM;
+
+	platform_set_drvdata(saarb_snd_device, &snd_soc_card_saarb);
+
+	ret = platform_device_add(saarb_snd_device);
+	if (ret)
+		platform_device_put(saarb_snd_device);
+
+	return ret;
+}
+
+static void __exit saarb_exit(void)
+{
+	platform_device_unregister(saarb_snd_device);
+}
+
+module_init(saarb_init);
+module_exit(saarb_exit);
+
+MODULE_AUTHOR("Haojian Zhuang <haojian.zhuang@marvell.com>");
+MODULE_DESCRIPTION("ALSA SoC 88PM860x Saarb");
+MODULE_LICENSE("GPL");
diff --git a/sound/soc/pxa/spitz.c b/sound/soc/pxa/spitz.c
index d256f5f..f470f36 100644
--- a/sound/soc/pxa/spitz.c
+++ b/sound/soc/pxa/spitz.c
@@ -28,7 +28,6 @@
 #include <asm/mach-types.h>
 #include <mach/spitz.h>
 #include "../codecs/wm8750.h"
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-i2s.h"
 
 #define SPITZ_HP        0
@@ -107,7 +106,7 @@
 static int spitz_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_codec *codec = rtd->socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->codec;
 
 	/* check the jack status at stream startup */
 	spitz_ext_control(codec);
@@ -118,8 +117,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	unsigned int clk = 0;
 	int ret = 0;
 
@@ -274,8 +273,9 @@
 /*
  * Logic for a wm8750 as connected on a Sharp SL-Cxx00 Device
  */
-static int spitz_wm8750_init(struct snd_soc_codec *codec)
+static int spitz_wm8750_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int err;
 
 	/* NC codec pins */
@@ -308,8 +308,10 @@
 static struct snd_soc_dai_link spitz_dai = {
 	.name = "wm8750",
 	.stream_name = "WM8750",
-	.cpu_dai = &pxa_i2s_dai,
-	.codec_dai = &wm8750_dai,
+	.cpu_dai_name = "pxa-is2",
+	.codec_dai_name = "wm8750-hifi",
+	.platform_name = "pxa-pcm-audio",
+	.codec_name = "wm8750-codec.0-001a",
 	.init = spitz_wm8750_init,
 	.ops = &spitz_ops,
 };
@@ -317,17 +319,10 @@
 /* spitz audio machine driver */
 static struct snd_soc_card snd_soc_spitz = {
 	.name = "Spitz",
-	.platform = &pxa2xx_soc_platform,
 	.dai_link = &spitz_dai,
 	.num_links = 1,
 };
 
-/* spitz audio subsystem */
-static struct snd_soc_device spitz_snd_devdata = {
-	.card = &snd_soc_spitz,
-	.codec_dev = &soc_codec_dev_wm8750,
-};
-
 static struct platform_device *spitz_snd_device;
 
 static int __init spitz_init(void)
@@ -341,8 +336,7 @@
 	if (!spitz_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(spitz_snd_device, &spitz_snd_devdata);
-	spitz_snd_devdata.dev = &spitz_snd_device->dev;
+	platform_set_drvdata(spitz_snd_device, &snd_soc_spitz);
 	ret = platform_device_add(spitz_snd_device);
 
 	if (ret)
diff --git a/sound/soc/pxa/tavorevb3.c b/sound/soc/pxa/tavorevb3.c
new file mode 100644
index 0000000..248c283
--- /dev/null
+++ b/sound/soc/pxa/tavorevb3.c
@@ -0,0 +1,200 @@
+/*
+ * tavorevb3.c -- SoC audio for Tavor EVB3
+ *
+ * Copyright (C) 2010 Marvell International Ltd.
+ * 	Haojian Zhuang <haojian.zhuang@marvell.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/device.h>
+#include <linux/clk.h>
+#include <linux/i2c.h>
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+#include <sound/soc-dapm.h>
+#include <sound/jack.h>
+
+#include <asm/mach-types.h>
+
+#include "../codecs/88pm860x-codec.h"
+#include "pxa-ssp.h"
+
+static int evb3_pm860x_init(struct snd_soc_pcm_runtime *rtd);
+
+static struct platform_device *evb3_snd_device;
+
+static struct snd_soc_jack hs_jack, mic_jack;
+
+static struct snd_soc_jack_pin hs_jack_pins[] = {
+	{ .pin = "Headset Stereophone",	.mask = SND_JACK_HEADPHONE, },
+};
+
+static struct snd_soc_jack_pin mic_jack_pins[] = {
+	{ .pin = "Headset Mic 2",	.mask = SND_JACK_MICROPHONE, },
+};
+
+/* tavorevb3 machine dapm widgets */
+static const struct snd_soc_dapm_widget evb3_dapm_widgets[] = {
+	SND_SOC_DAPM_HP("Headset Stereophone", NULL),
+	SND_SOC_DAPM_LINE("Lineout Out 1", NULL),
+	SND_SOC_DAPM_LINE("Lineout Out 2", NULL),
+	SND_SOC_DAPM_SPK("Ext Speaker", NULL),
+	SND_SOC_DAPM_MIC("Ext Mic 1", NULL),
+	SND_SOC_DAPM_MIC("Headset Mic 2", NULL),
+	SND_SOC_DAPM_MIC("Ext Mic 3", NULL),
+};
+
+/* tavorevb3 machine audio map */
+static const struct snd_soc_dapm_route audio_map[] = {
+	{"Headset Stereophone", NULL, "HS1"},
+	{"Headset Stereophone", NULL, "HS2"},
+
+	{"Ext Speaker", NULL, "LSP"},
+	{"Ext Speaker", NULL, "LSN"},
+
+	{"Lineout Out 1", NULL, "LINEOUT1"},
+	{"Lineout Out 2", NULL, "LINEOUT2"},
+
+	{"MIC1P", NULL, "Mic1 Bias"},
+	{"MIC1N", NULL, "Mic1 Bias"},
+	{"Mic1 Bias", NULL, "Ext Mic 1"},
+
+	{"MIC2P", NULL, "Mic1 Bias"},
+	{"MIC2N", NULL, "Mic1 Bias"},
+	{"Mic1 Bias", NULL, "Headset Mic 2"},
+
+	{"MIC3P", NULL, "Mic3 Bias"},
+	{"MIC3N", NULL, "Mic3 Bias"},
+	{"Mic3 Bias", NULL, "Ext Mic 3"},
+};
+
+static int evb3_i2s_hw_params(struct snd_pcm_substream *substream,
+			      struct snd_pcm_hw_params *params)
+{
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	int width = snd_pcm_format_physical_width(params_format(params));
+	int ret;
+
+	ret = snd_soc_dai_set_sysclk(cpu_dai, PXA_SSP_CLK_NET_PLL, 0,
+				     PM860X_CLK_DIR_OUT);
+	if (ret < 0)
+		return ret;
+
+	ret = snd_soc_dai_set_sysclk(codec_dai, 0, 0, PM860X_CLK_DIR_OUT);
+	if (ret < 0)
+		return ret;
+
+	ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
+			SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);
+	if (ret < 0)
+		return ret;
+
+	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
+			SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);
+	if (ret < 0)
+		return ret;
+
+	ret = snd_soc_dai_set_tdm_slot(cpu_dai, 3, 3, 2, width);
+	return ret;
+}
+
+static struct snd_soc_ops evb3_i2s_ops = {
+	.hw_params	= evb3_i2s_hw_params,
+};
+
+static struct snd_soc_dai_link evb3_dai[] = {
+	{
+		.name		= "88PM860x I2S",
+		.stream_name	= "I2S Audio",
+		.cpu_dai_name	= "pxa-ssp-dai.1",
+		.codec_dai_name	= "88pm860x-i2s",
+		.platform_name	= "pxa-pcm-audio",
+		.codec_name	= "88pm860x-codec",
+		.init		= evb3_pm860x_init,
+		.ops		= &evb3_i2s_ops,
+	},
+};
+
+static struct snd_soc_card snd_soc_card_evb3 = {
+	.name = "Tavor EVB3",
+	.dai_link = evb3_dai,
+	.num_links = ARRAY_SIZE(evb3_dai),
+};
+
+static int evb3_pm860x_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_codec *codec = rtd->codec;
+	int ret;
+
+	snd_soc_dapm_new_controls(codec, evb3_dapm_widgets,
+				  ARRAY_SIZE(evb3_dapm_widgets));
+	snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
+
+	/* connected pins */
+	snd_soc_dapm_enable_pin(codec, "Ext Speaker");
+	snd_soc_dapm_enable_pin(codec, "Ext Mic 1");
+	snd_soc_dapm_enable_pin(codec, "Ext Mic 3");
+	snd_soc_dapm_disable_pin(codec, "Headset Mic 2");
+	snd_soc_dapm_disable_pin(codec, "Headset Stereophone");
+
+	ret = snd_soc_dapm_sync(codec);
+	if (ret)
+		return ret;
+
+	/* Headset jack detection */
+	snd_soc_jack_new(codec, "Headphone Jack", SND_JACK_HEADPHONE
+			| SND_JACK_BTN_0 | SND_JACK_BTN_1 | SND_JACK_BTN_2,
+			&hs_jack);
+	snd_soc_jack_add_pins(&hs_jack, ARRAY_SIZE(hs_jack_pins),
+			      hs_jack_pins);
+	snd_soc_jack_new(codec, "Microphone Jack", SND_JACK_MICROPHONE,
+			 &mic_jack);
+	snd_soc_jack_add_pins(&mic_jack, ARRAY_SIZE(mic_jack_pins),
+			      mic_jack_pins);
+
+	/* headphone, microphone detection & headset short detection */
+	pm860x_hs_jack_detect(codec, &hs_jack, SND_JACK_HEADPHONE,
+			      SND_JACK_BTN_0, SND_JACK_BTN_1, SND_JACK_BTN_2);
+	pm860x_mic_jack_detect(codec, &hs_jack, SND_JACK_MICROPHONE);
+	return 0;
+}
+
+static int __init tavorevb3_init(void)
+{
+	int ret;
+
+	if (!machine_is_tavorevb3())
+		return -ENODEV;
+	evb3_snd_device = platform_device_alloc("soc-audio", -1);
+	if (!evb3_snd_device)
+		return -ENOMEM;
+
+	platform_set_drvdata(evb3_snd_device, &snd_soc_card_evb3);
+
+	ret = platform_device_add(evb3_snd_device);
+	if (ret)
+		platform_device_put(evb3_snd_device);
+
+	return ret;
+}
+
+static void __exit tavorevb3_exit(void)
+{
+	platform_device_unregister(evb3_snd_device);
+}
+
+module_init(tavorevb3_init);
+module_exit(tavorevb3_exit);
+
+MODULE_AUTHOR("Haojian Zhuang <haojian.zhuang@marvell.com>");
+MODULE_DESCRIPTION("ALSA SoC 88PM860x Tavor EVB3");
+MODULE_LICENSE("GPL");
diff --git a/sound/soc/pxa/tosa.c b/sound/soc/pxa/tosa.c
index dbbd3e9..a3bfb2e 100644
--- a/sound/soc/pxa/tosa.c
+++ b/sound/soc/pxa/tosa.c
@@ -33,7 +33,6 @@
 #include <mach/audio.h>
 
 #include "../codecs/wm9712.h"
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-ac97.h"
 
 static struct snd_soc_card tosa;
@@ -80,7 +79,7 @@
 static int tosa_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_codec *codec = rtd->socdev->card->codec;
+	struct snd_soc_codec *codec = rtd->card->codec;
 
 	/* check the jack status at stream startup */
 	tosa_ext_control(codec);
@@ -184,8 +183,9 @@
 		tosa_set_spk),
 };
 
-static int tosa_ac97_init(struct snd_soc_codec *codec)
+static int tosa_ac97_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int err;
 
 	snd_soc_dapm_nc_pin(codec, "OUT3");
@@ -212,16 +212,20 @@
 {
 	.name = "AC97",
 	.stream_name = "AC97 HiFi",
-	.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
-	.codec_dai = &wm9712_dai[WM9712_DAI_AC97_HIFI],
+	.cpu_dai_name = "pxa-ac97.0",
+	.codec_dai_name = "wm9712-hifi",
+	.platform_name = "pxa-pcm-audio",
+	.codec_name = "wm9712-codec",
 	.init = tosa_ac97_init,
 	.ops = &tosa_ops,
 },
 {
 	.name = "AC97 Aux",
 	.stream_name = "AC97 Aux",
-	.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
-	.codec_dai = &wm9712_dai[WM9712_DAI_AC97_AUX],
+	.cpu_dai_name = "pxa-ac97.1",
+	.codec_dai_name = "wm9712-aux",
+	.platform_name = "pxa-pcm-audio",
+	.codec_name = "wm9712-codec",
 	.ops = &tosa_ops,
 },
 };
@@ -248,18 +252,12 @@
 
 static struct snd_soc_card tosa = {
 	.name = "Tosa",
-	.platform = &pxa2xx_soc_platform,
 	.dai_link = tosa_dai,
 	.num_links = ARRAY_SIZE(tosa_dai),
 	.probe = tosa_probe,
 	.remove = tosa_remove,
 };
 
-static struct snd_soc_device tosa_snd_devdata = {
-	.card = &tosa,
-	.codec_dev = &soc_codec_dev_wm9712,
-};
-
 static struct platform_device *tosa_snd_device;
 
 static int __init tosa_init(void)
@@ -275,8 +273,7 @@
 		goto err_alloc;
 	}
 
-	platform_set_drvdata(tosa_snd_device, &tosa_snd_devdata);
-	tosa_snd_devdata.dev = &tosa_snd_device->dev;
+	platform_set_drvdata(tosa_snd_device, &tosa);
 	ret = platform_device_add(tosa_snd_device);
 
 	if (!ret)
diff --git a/sound/soc/pxa/z2.c b/sound/soc/pxa/z2.c
index 4e4d2fa..4cc841b 100644
--- a/sound/soc/pxa/z2.c
+++ b/sound/soc/pxa/z2.c
@@ -30,7 +30,6 @@
 #include <mach/z2.h>
 
 #include "../codecs/wm8750.h"
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-i2s.h"
 
 static struct snd_soc_card snd_soc_z2;
@@ -39,8 +38,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	unsigned int clk = 0;
 	int ret = 0;
 
@@ -138,8 +137,9 @@
 /*
  * Logic for a wm8750 as connected on a Z2 Device
  */
-static int z2_wm8750_init(struct snd_soc_codec *codec)
+static int z2_wm8750_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int ret;
 
 	/* NC codec pins */
@@ -160,7 +160,7 @@
 		goto err;
 
 	/* Jack detection API stuff */
-	ret = snd_soc_jack_new(&snd_soc_z2, "Headset Jack", SND_JACK_HEADSET,
+	ret = snd_soc_jack_new(codec, "Headset Jack", SND_JACK_HEADSET,
 				&hs_jack);
 	if (ret)
 		goto err;
@@ -189,8 +189,10 @@
 static struct snd_soc_dai_link z2_dai = {
 	.name		= "wm8750",
 	.stream_name	= "WM8750",
-	.cpu_dai	= &pxa_i2s_dai,
-	.codec_dai	= &wm8750_dai,
+	.cpu_dai_name	= "pxa2xx-i2s",
+	.codec_dai_name	= "wm8750-hifi",
+	.platform_name = "pxa-pcm-audio",
+	.codec_name	= "wm8750-codec.0-001a",
 	.init		= z2_wm8750_init,
 	.ops		= &z2_ops,
 };
@@ -198,17 +200,10 @@
 /* z2 audio machine driver */
 static struct snd_soc_card snd_soc_z2 = {
 	.name		= "Z2",
-	.platform	= &pxa2xx_soc_platform,
 	.dai_link	= &z2_dai,
 	.num_links	= 1,
 };
 
-/* z2 audio subsystem */
-static struct snd_soc_device z2_snd_devdata = {
-	.card		= &snd_soc_z2,
-	.codec_dev	= &soc_codec_dev_wm8750,
-};
-
 static struct platform_device *z2_snd_device;
 
 static int __init z2_init(void)
@@ -222,8 +217,7 @@
 	if (!z2_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(z2_snd_device, &z2_snd_devdata);
-	z2_snd_devdata.dev = &z2_snd_device->dev;
+	platform_set_drvdata(z2_snd_device, &snd_soc_z2);
 	ret = platform_device_add(z2_snd_device);
 
 	if (ret)
diff --git a/sound/soc/pxa/zylonite.c b/sound/soc/pxa/zylonite.c
index dd678ae..d27e05a 100644
--- a/sound/soc/pxa/zylonite.c
+++ b/sound/soc/pxa/zylonite.c
@@ -23,7 +23,6 @@
 #include <sound/soc-dapm.h>
 
 #include "../codecs/wm9713.h"
-#include "pxa2xx-pcm.h"
 #include "pxa2xx-ac97.h"
 #include "pxa-ssp.h"
 
@@ -71,10 +70,12 @@
 	{ "Multiactor", NULL, "SPKR" },
 };
 
-static int zylonite_wm9713_init(struct snd_soc_codec *codec)
+static int zylonite_wm9713_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+
 	if (clk_pout)
-		snd_soc_dai_set_pll(&codec->dai[0], 0, 0,
+		snd_soc_dai_set_pll(rtd->codec_dai, 0, 0,
 				    clk_get_rate(pout), 0);
 
 	snd_soc_dapm_new_controls(codec, zylonite_dapm_widgets,
@@ -94,8 +95,8 @@
 				    struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	unsigned int pll_out = 0;
 	unsigned int wm9713_div = 0;
 	int ret = 0;
@@ -163,21 +164,27 @@
 {
 	.name = "AC97",
 	.stream_name = "AC97 HiFi",
-	.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
-	.codec_dai = &wm9713_dai[WM9713_DAI_AC97_HIFI],
+	.codec_name = "wm9713-codec",
+	.platform_name = "pxa-pcm-audio",
+	.cpu_dai_name = "pxa-ac97.0",
+	.codec_name = "wm9713-hifi",
 	.init = zylonite_wm9713_init,
 },
 {
 	.name = "AC97 Aux",
 	.stream_name = "AC97 Aux",
-	.cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
-	.codec_dai = &wm9713_dai[WM9713_DAI_AC97_AUX],
+	.codec_name = "wm9713-codec",
+	.platform_name = "pxa-pcm-audio",
+	.cpu_dai_name = "pxa-ac97.1",
+	.codec_name = "wm9713-aux",
 },
 {
 	.name = "WM9713 Voice",
 	.stream_name = "WM9713 Voice",
-	.cpu_dai = &pxa_ssp_dai[PXA_DAI_SSP3],
-	.codec_dai = &wm9713_dai[WM9713_DAI_PCM_VOICE],
+	.codec_name = "wm9713-codec",
+	.platform_name = "pxa-pcm-audio",
+	.cpu_dai_name = "pxa-ssp-dai.2",
+	.codec_name = "wm9713-voice",
 	.ops = &zylonite_voice_ops,
 },
 };
@@ -248,14 +255,9 @@
 	.remove = &zylonite_remove,
 	.suspend_post = &zylonite_suspend_post,
 	.resume_pre = &zylonite_resume_pre,
-	.platform = &pxa2xx_soc_platform,
 	.dai_link = zylonite_dai,
 	.num_links = ARRAY_SIZE(zylonite_dai),
-};
-
-static struct snd_soc_device zylonite_snd_ac97_devdata = {
-	.card = &zylonite,
-	.codec_dev = &soc_codec_dev_wm9713,
+	.owner = THIS_MODULE,
 };
 
 static struct platform_device *zylonite_snd_ac97_device;
@@ -268,9 +270,7 @@
 	if (!zylonite_snd_ac97_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(zylonite_snd_ac97_device,
-			     &zylonite_snd_ac97_devdata);
-	zylonite_snd_ac97_devdata.dev = &zylonite_snd_ac97_device->dev;
+	platform_set_drvdata(zylonite_snd_ac97_device, &zylonite);
 
 	ret = platform_device_add(zylonite_snd_ac97_device);
 	if (ret != 0)
diff --git a/sound/soc/s3c24xx/Kconfig b/sound/soc/s3c24xx/Kconfig
index 213963ac..7d8235d 100644
--- a/sound/soc/s3c24xx/Kconfig
+++ b/sound/soc/s3c24xx/Kconfig
@@ -118,6 +118,14 @@
 	select SND_SOC_TLV320AIC3X
 	select SND_S3C24XX_SOC_SIMTEC
 
+config SND_S3C24XX_SOC_RX1950_UDA1380
+	tristate "Audio support for the HP iPAQ RX1950"
+	depends on SND_S3C24XX_SOC && MACH_RX1950
+	select SND_S3C24XX_SOC_I2S
+	select SND_SOC_UDA1380
+	help
+	  This driver provides audio support for HP iPAQ RX1950 PDA.
+
 config SND_SOC_SMDK_WM9713
 	tristate "SoC AC97 Audio support for SMDK with WM9713"
 	depends on SND_S3C24XX_SOC && (MACH_SMDK6410 || MACH_SMDKC100 || MACH_SMDKV210 || MACH_SMDKC110)
@@ -131,3 +139,21 @@
 	depends on SND_S3C24XX_SOC && MACH_SMARTQ
 	select SND_S3C64XX_SOC_I2S
 	select SND_SOC_WM8750
+
+config SND_S5PC110_SOC_AQUILA_WM8994
+	tristate "SoC I2S Audio support for AQUILA - WM8994"
+	depends on SND_S3C24XX_SOC && MACH_AQUILA
+	select SND_S3C64XX_SOC_I2S_V4
+	select SND_SOC_WM8994
+	help
+	  Say Y if you want to add support for SoC audio on aquila
+	  with the WM8994.
+
+config SND_S5PV210_SOC_GONI_WM8994
+	tristate "SoC I2S Audio support for GONI - WM8994"
+	depends on SND_S3C24XX_SOC && MACH_GONI
+	select SND_S3C64XX_SOC_I2S_V4
+	select SND_SOC_WM8994
+	help
+	  Say Y if you want to add support for SoC audio on goni
+	  with the WM8994.
diff --git a/sound/soc/s3c24xx/Makefile b/sound/soc/s3c24xx/Makefile
index 50172c3..dd412a9 100644
--- a/sound/soc/s3c24xx/Makefile
+++ b/sound/soc/s3c24xx/Makefile
@@ -27,9 +27,12 @@
 snd-soc-s3c24xx-simtec-objs := s3c24xx_simtec.o
 snd-soc-s3c24xx-simtec-hermes-objs := s3c24xx_simtec_hermes.o
 snd-soc-s3c24xx-simtec-tlv320aic23-objs := s3c24xx_simtec_tlv320aic23.o
+snd-soc-rx1950-uda1380-objs := rx1950_uda1380.o
 snd-soc-smdk64xx-wm8580-objs := smdk64xx_wm8580.o
 snd-soc-smdk-wm9713-objs := smdk_wm9713.o
 snd-soc-s3c64xx-smartq-wm8987-objs := smartq_wm8987.o
+snd-soc-aquila-wm8994-objs := aquila_wm8994.o
+snd-soc-goni-wm8994-objs := goni_wm8994.o
 
 obj-$(CONFIG_SND_S3C24XX_SOC_JIVE_WM8750) += snd-soc-jive-wm8750.o
 obj-$(CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753) += snd-soc-neo1973-wm8753.o
@@ -40,6 +43,9 @@
 obj-$(CONFIG_SND_S3C24XX_SOC_SIMTEC) += snd-soc-s3c24xx-simtec.o
 obj-$(CONFIG_SND_S3C24XX_SOC_SIMTEC_HERMES) += snd-soc-s3c24xx-simtec-hermes.o
 obj-$(CONFIG_SND_S3C24XX_SOC_SIMTEC_TLV320AIC23) += snd-soc-s3c24xx-simtec-tlv320aic23.o
+obj-$(CONFIG_SND_S3C24XX_SOC_RX1950_UDA1380) += snd-soc-rx1950-uda1380.o
 obj-$(CONFIG_SND_S3C64XX_SOC_WM8580) += snd-soc-smdk64xx-wm8580.o
 obj-$(CONFIG_SND_SOC_SMDK_WM9713) += snd-soc-smdk-wm9713.o
 obj-$(CONFIG_SND_S3C64XX_SOC_SMARTQ) += snd-soc-s3c64xx-smartq-wm8987.o
+obj-$(CONFIG_SND_S5PC110_SOC_AQUILA_WM8994) += snd-soc-aquila-wm8994.o
+obj-$(CONFIG_SND_S5PV210_SOC_GONI_WM8994) += snd-soc-goni-wm8994.o
diff --git a/sound/soc/s3c24xx/aquila_wm8994.c b/sound/soc/s3c24xx/aquila_wm8994.c
new file mode 100644
index 0000000..235d197
--- /dev/null
+++ b/sound/soc/s3c24xx/aquila_wm8994.c
@@ -0,0 +1,295 @@
+/*
+ * aquila_wm8994.c
+ *
+ * Copyright (C) 2010 Samsung Electronics Co.Ltd
+ * Author: Chanwoo Choi <cw00.choi@samsung.com>
+ *
+ *  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;  either version 2 of the  License, or (at your
+ *  option) any later version.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/io.h>
+#include <linux/platform_device.h>
+#include <sound/soc.h>
+#include <sound/soc-dapm.h>
+#include <sound/jack.h>
+#include <asm/mach-types.h>
+#include <mach/gpio.h>
+#include <mach/regs-clock.h>
+
+#include <linux/mfd/wm8994/core.h>
+#include <linux/mfd/wm8994/registers.h>
+#include "../codecs/wm8994.h"
+#include "s3c-dma.h"
+#include "s3c64xx-i2s.h"
+
+static struct snd_soc_card aquila;
+static struct platform_device *aquila_snd_device;
+
+/* 3.5 pie jack */
+static struct snd_soc_jack jack;
+
+/* 3.5 pie jack detection DAPM pins */
+static struct snd_soc_jack_pin jack_pins[] = {
+	{
+		.pin = "Headset Mic",
+		.mask = SND_JACK_MICROPHONE,
+	}, {
+		.pin = "Headset Stereophone",
+		.mask = SND_JACK_HEADPHONE | SND_JACK_MECHANICAL |
+			SND_JACK_AVOUT,
+	},
+};
+
+/* 3.5 pie jack detection gpios */
+static struct snd_soc_jack_gpio jack_gpios[] = {
+	{
+		.gpio = S5PV210_GPH0(6),
+		.name = "DET_3.5",
+		.report = SND_JACK_HEADSET | SND_JACK_MECHANICAL |
+			SND_JACK_AVOUT,
+		.debounce_time = 200,
+	},
+};
+
+static const struct snd_soc_dapm_widget aquila_dapm_widgets[] = {
+	SND_SOC_DAPM_SPK("Ext Spk", NULL),
+	SND_SOC_DAPM_SPK("Ext Rcv", NULL),
+	SND_SOC_DAPM_HP("Headset Stereophone", NULL),
+	SND_SOC_DAPM_MIC("Headset Mic", NULL),
+	SND_SOC_DAPM_MIC("Main Mic", NULL),
+	SND_SOC_DAPM_MIC("2nd Mic", NULL),
+	SND_SOC_DAPM_LINE("Radio In", NULL),
+};
+
+static const struct snd_soc_dapm_route aquila_dapm_routes[] = {
+	{"Ext Spk", NULL, "SPKOUTLP"},
+	{"Ext Spk", NULL, "SPKOUTLN"},
+
+	{"Ext Rcv", NULL, "HPOUT2N"},
+	{"Ext Rcv", NULL, "HPOUT2P"},
+
+	{"Headset Stereophone", NULL, "HPOUT1L"},
+	{"Headset Stereophone", NULL, "HPOUT1R"},
+
+	{"IN1RN", NULL, "Headset Mic"},
+	{"IN1RP", NULL, "Headset Mic"},
+
+	{"IN1RN", NULL, "2nd Mic"},
+	{"IN1RP", NULL, "2nd Mic"},
+
+	{"IN1LN", NULL, "Main Mic"},
+	{"IN1LP", NULL, "Main Mic"},
+
+	{"IN2LN", NULL, "Radio In"},
+	{"IN2RN", NULL, "Radio In"},
+};
+
+static int aquila_wm8994_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_codec *codec = rtd->codec;
+	int ret;
+
+	/* add aquila specific widgets */
+	snd_soc_dapm_new_controls(codec, aquila_dapm_widgets,
+			ARRAY_SIZE(aquila_dapm_widgets));
+
+	/* set up aquila specific audio routes */
+	snd_soc_dapm_add_routes(codec, aquila_dapm_routes,
+			ARRAY_SIZE(aquila_dapm_routes));
+
+	/* set endpoints to not connected */
+	snd_soc_dapm_nc_pin(codec, "IN2LP:VXRN");
+	snd_soc_dapm_nc_pin(codec, "IN2RP:VXRP");
+	snd_soc_dapm_nc_pin(codec, "LINEOUT1N");
+	snd_soc_dapm_nc_pin(codec, "LINEOUT1P");
+	snd_soc_dapm_nc_pin(codec, "LINEOUT2N");
+	snd_soc_dapm_nc_pin(codec, "LINEOUT2P");
+	snd_soc_dapm_nc_pin(codec, "SPKOUTRN");
+	snd_soc_dapm_nc_pin(codec, "SPKOUTRP");
+
+	snd_soc_dapm_sync(codec);
+
+	/* Headset jack detection */
+	ret = snd_soc_jack_new(&aquila, "Headset Jack",
+			SND_JACK_HEADSET | SND_JACK_MECHANICAL | SND_JACK_AVOUT,
+			&jack);
+	if (ret)
+		return ret;
+
+	ret = snd_soc_jack_add_pins(&jack, ARRAY_SIZE(jack_pins), jack_pins);
+	if (ret)
+		return ret;
+
+	ret = snd_soc_jack_add_gpios(&jack, ARRAY_SIZE(jack_gpios), jack_gpios);
+	if (ret)
+		return ret;
+
+	return 0;
+}
+
+static int aquila_hifi_hw_params(struct snd_pcm_substream *substream,
+		struct snd_pcm_hw_params *params)
+{
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	unsigned int pll_out = 24000000;
+	int ret = 0;
+
+	/* set the cpu DAI configuration */
+	ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
+			SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);
+	if (ret < 0)
+		return ret;
+
+	/* set the cpu system clock */
+	ret = snd_soc_dai_set_sysclk(cpu_dai, S3C64XX_CLKSRC_PCLK,
+			0, SND_SOC_CLOCK_IN);
+	if (ret < 0)
+		return ret;
+
+	/* set codec DAI configuration */
+	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
+			SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);
+	if (ret < 0)
+		return ret;
+
+	/* set the codec FLL */
+	ret = snd_soc_dai_set_pll(codec_dai, WM8994_FLL1, 0, pll_out,
+			params_rate(params) * 256);
+	if (ret < 0)
+		return ret;
+
+	/* set the codec system clock */
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL1,
+			params_rate(params) * 256, SND_SOC_CLOCK_IN);
+	if (ret < 0)
+		return ret;
+
+	return 0;
+}
+
+static struct snd_soc_ops aquila_hifi_ops = {
+	.hw_params = aquila_hifi_hw_params,
+};
+
+static int aquila_voice_hw_params(struct snd_pcm_substream *substream,
+		struct snd_pcm_hw_params *params)
+{
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	unsigned int pll_out = 24000000;
+	int ret = 0;
+
+	if (params_rate(params) != 8000)
+		return -EINVAL;
+
+	/* set codec DAI configuration */
+	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_LEFT_J |
+			SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_CBM_CFM);
+	if (ret < 0)
+		return ret;
+
+	/* set the codec FLL */
+	ret = snd_soc_dai_set_pll(codec_dai, WM8994_FLL2, 0, pll_out,
+			params_rate(params) * 256);
+	if (ret < 0)
+		return ret;
+
+	/* set the codec system clock */
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL2,
+			params_rate(params) * 256, SND_SOC_CLOCK_IN);
+	if (ret < 0)
+		return ret;
+
+	return 0;
+}
+
+static struct snd_soc_dai_driver voice_dai = {
+	.name = "aquila-voice-dai",
+	.playback = {
+		.channels_min = 1,
+		.channels_max = 2,
+		.rates = SNDRV_PCM_RATE_8000,
+		.formats = SNDRV_PCM_FMTBIT_S16_LE,},
+	.capture = {
+		.channels_min = 1,
+		.channels_max = 2,
+		.rates = SNDRV_PCM_RATE_8000,
+		.formats = SNDRV_PCM_FMTBIT_S16_LE,},
+};
+
+static struct snd_soc_ops aquila_voice_ops = {
+	.hw_params = aquila_voice_hw_params,
+};
+
+static struct snd_soc_dai_link aquila_dai[] = {
+{
+	.name = "WM8994",
+	.stream_name = "WM8994 HiFi",
+	.cpu_dai_name = "s3c64xx-i2s-v4",
+	.codec_dai_name = "wm8994-hifi",
+	.platform_name = "s3c24xx-pcm-audio",
+	.codec_name = "wm8994-codec.0-0x1a",
+	.init = aquila_wm8994_init,
+	.ops = &aquila_hifi_ops,
+}, {
+	.name = "WM8994 Voice",
+	.stream_name = "Voice",
+	.cpu_dai_name = "aquila-voice-dai",
+	.codec_dai_name = "wm8994-voice",
+	.platform_name = "s3c24xx-pcm-audio",
+	.codec_name = "wm8994-codec.0-0x1a",
+	.ops = &aquila_voice_ops,
+},
+};
+
+static struct snd_soc_card aquila = {
+	.name = "aquila",
+	.dai_link = aquila_dai,
+	.num_links = ARRAY_SIZE(aquila_dai),
+};
+
+static int __init aquila_init(void)
+{
+	int ret;
+
+	if (!machine_is_aquila())
+		return -ENODEV;
+
+	aquila_snd_device = platform_device_alloc("soc-audio", -1);
+	if (!aquila_snd_device)
+		return -ENOMEM;
+
+	/* register voice DAI here */
+	ret = snd_soc_register_dai(&aquila_snd_device->dev, &voice_dai);
+	if (ret)
+		return ret;
+
+	platform_set_drvdata(aquila_snd_device, &aquila);
+	ret = platform_device_add(aquila_snd_device);
+
+	if (ret)
+		platform_device_put(aquila_snd_device);
+
+	return ret;
+}
+
+static void __exit aquila_exit(void)
+{
+	platform_device_unregister(aquila_snd_device);
+}
+
+module_init(aquila_init);
+module_exit(aquila_exit);
+
+/* Module information */
+MODULE_DESCRIPTION("ALSA SoC WM8994 Aquila(S5PC110)");
+MODULE_AUTHOR("Chanwoo Choi <cw00.choi@samsung.com>");
+MODULE_LICENSE("GPL");
diff --git a/sound/soc/s3c24xx/goni_wm8994.c b/sound/soc/s3c24xx/goni_wm8994.c
new file mode 100644
index 0000000..694f702
--- /dev/null
+++ b/sound/soc/s3c24xx/goni_wm8994.c
@@ -0,0 +1,298 @@
+/*
+ * goni_wm8994.c
+ *
+ * Copyright (C) 2010 Samsung Electronics Co.Ltd
+ * Author: Chanwoo Choi <cw00.choi@samsung.com>
+ *
+ *  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;  either version 2 of the  License, or (at your
+ *  option) any later version.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/io.h>
+#include <linux/platform_device.h>
+#include <sound/soc.h>
+#include <sound/soc-dapm.h>
+#include <sound/jack.h>
+#include <asm/mach-types.h>
+#include <mach/gpio.h>
+#include <mach/regs-clock.h>
+
+#include <linux/mfd/wm8994/core.h>
+#include <linux/mfd/wm8994/registers.h>
+#include "../codecs/wm8994.h"
+#include "s3c-dma.h"
+#include "s3c64xx-i2s.h"
+
+static struct snd_soc_card goni;
+static struct platform_device *goni_snd_device;
+
+/* 3.5 pie jack */
+static struct snd_soc_jack jack;
+
+/* 3.5 pie jack detection DAPM pins */
+static struct snd_soc_jack_pin jack_pins[] = {
+	{
+		.pin = "Headset Mic",
+		.mask = SND_JACK_MICROPHONE,
+	}, {
+		.pin = "Headset Stereophone",
+		.mask = SND_JACK_HEADPHONE | SND_JACK_MECHANICAL |
+			SND_JACK_AVOUT,
+	},
+};
+
+/* 3.5 pie jack detection gpios */
+static struct snd_soc_jack_gpio jack_gpios[] = {
+	{
+		.gpio = S5PV210_GPH0(6),
+		.name = "DET_3.5",
+		.report = SND_JACK_HEADSET | SND_JACK_MECHANICAL |
+			SND_JACK_AVOUT,
+		.debounce_time = 200,
+	},
+};
+
+static const struct snd_soc_dapm_widget goni_dapm_widgets[] = {
+	SND_SOC_DAPM_SPK("Ext Left Spk", NULL),
+	SND_SOC_DAPM_SPK("Ext Right Spk", NULL),
+	SND_SOC_DAPM_SPK("Ext Rcv", NULL),
+	SND_SOC_DAPM_HP("Headset Stereophone", NULL),
+	SND_SOC_DAPM_MIC("Headset Mic", NULL),
+	SND_SOC_DAPM_MIC("Main Mic", NULL),
+	SND_SOC_DAPM_MIC("2nd Mic", NULL),
+	SND_SOC_DAPM_LINE("Radio In", NULL),
+};
+
+static const struct snd_soc_dapm_route goni_dapm_routes[] = {
+	{"Ext Left Spk", NULL, "SPKOUTLP"},
+	{"Ext Left Spk", NULL, "SPKOUTLN"},
+
+	{"Ext Right Spk", NULL, "SPKOUTRP"},
+	{"Ext Right Spk", NULL, "SPKOUTRN"},
+
+	{"Ext Rcv", NULL, "HPOUT2N"},
+	{"Ext Rcv", NULL, "HPOUT2P"},
+
+	{"Headset Stereophone", NULL, "HPOUT1L"},
+	{"Headset Stereophone", NULL, "HPOUT1R"},
+
+	{"IN1RN", NULL, "Headset Mic"},
+	{"IN1RP", NULL, "Headset Mic"},
+
+	{"IN1RN", NULL, "2nd Mic"},
+	{"IN1RP", NULL, "2nd Mic"},
+
+	{"IN1LN", NULL, "Main Mic"},
+	{"IN1LP", NULL, "Main Mic"},
+
+	{"IN2LN", NULL, "Radio In"},
+	{"IN2RN", NULL, "Radio In"},
+};
+
+static int goni_wm8994_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_codec *codec = rtd->codec;
+	int ret;
+
+	/* add goni specific widgets */
+	snd_soc_dapm_new_controls(codec, goni_dapm_widgets,
+			ARRAY_SIZE(goni_dapm_widgets));
+
+	/* set up goni specific audio routes */
+	snd_soc_dapm_add_routes(codec, goni_dapm_routes,
+			ARRAY_SIZE(goni_dapm_routes));
+
+	/* set endpoints to not connected */
+	snd_soc_dapm_nc_pin(codec, "IN2LP:VXRN");
+	snd_soc_dapm_nc_pin(codec, "IN2RP:VXRP");
+	snd_soc_dapm_nc_pin(codec, "LINEOUT1N");
+	snd_soc_dapm_nc_pin(codec, "LINEOUT1P");
+	snd_soc_dapm_nc_pin(codec, "LINEOUT2N");
+	snd_soc_dapm_nc_pin(codec, "LINEOUT2P");
+
+	snd_soc_dapm_sync(codec);
+
+	/* Headset jack detection */
+	ret = snd_soc_jack_new(&goni, "Headset Jack",
+			SND_JACK_HEADSET | SND_JACK_MECHANICAL | SND_JACK_AVOUT,
+			&jack);
+	if (ret)
+		return ret;
+
+	ret = snd_soc_jack_add_pins(&jack, ARRAY_SIZE(jack_pins), jack_pins);
+	if (ret)
+		return ret;
+
+	ret = snd_soc_jack_add_gpios(&jack, ARRAY_SIZE(jack_gpios), jack_gpios);
+	if (ret)
+		return ret;
+
+	return 0;
+}
+
+static int goni_hifi_hw_params(struct snd_pcm_substream *substream,
+		struct snd_pcm_hw_params *params)
+{
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	unsigned int pll_out = 24000000;
+	int ret = 0;
+
+	/* set the cpu DAI configuration */
+	ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
+			SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);
+	if (ret < 0)
+		return ret;
+
+	/* set the cpu system clock */
+	ret = snd_soc_dai_set_sysclk(cpu_dai, S3C64XX_CLKSRC_PCLK,
+			0, SND_SOC_CLOCK_IN);
+	if (ret < 0)
+		return ret;
+
+	/* set codec DAI configuration */
+	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
+			SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);
+	if (ret < 0)
+		return ret;
+
+	/* set the codec FLL */
+	ret = snd_soc_dai_set_pll(codec_dai, WM8994_FLL1, 0, pll_out,
+			params_rate(params) * 256);
+	if (ret < 0)
+		return ret;
+
+	/* set the codec system clock */
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL1,
+			params_rate(params) * 256, SND_SOC_CLOCK_IN);
+	if (ret < 0)
+		return ret;
+
+	return 0;
+}
+
+static struct snd_soc_ops goni_hifi_ops = {
+	.hw_params = goni_hifi_hw_params,
+};
+
+static int goni_voice_hw_params(struct snd_pcm_substream *substream,
+		struct snd_pcm_hw_params *params)
+{
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	unsigned int pll_out = 24000000;
+	int ret = 0;
+
+	if (params_rate(params) != 8000)
+		return -EINVAL;
+
+	/* set codec DAI configuration */
+	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_LEFT_J |
+			SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_CBM_CFM);
+	if (ret < 0)
+		return ret;
+
+	/* set the codec FLL */
+	ret = snd_soc_dai_set_pll(codec_dai, WM8994_FLL2, 0, pll_out,
+			params_rate(params) * 256);
+	if (ret < 0)
+		return ret;
+
+	/* set the codec system clock */
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL2,
+			params_rate(params) * 256, SND_SOC_CLOCK_IN);
+	if (ret < 0)
+		return ret;
+
+	return 0;
+}
+
+static struct snd_soc_dai_driver voice_dai = {
+	.name = "goni-voice-dai",
+	.id = 0,
+	.playback = {
+		.channels_min = 1,
+		.channels_max = 2,
+		.rates = SNDRV_PCM_RATE_8000,
+		.formats = SNDRV_PCM_FMTBIT_S16_LE,},
+	.capture = {
+		.channels_min = 1,
+		.channels_max = 2,
+		.rates = SNDRV_PCM_RATE_8000,
+		.formats = SNDRV_PCM_FMTBIT_S16_LE,},
+};
+
+static struct snd_soc_ops goni_voice_ops = {
+	.hw_params = goni_voice_hw_params,
+};
+
+static struct snd_soc_dai_link goni_dai[] = {
+{
+	.name = "WM8994",
+	.stream_name = "WM8994 HiFi",
+	.cpu_dai_name = "s3c64xx-i2s-v4",
+	.codec_dai_name = "wm8994-hifi",
+	.platform_name = "s3c24xx-pcm-audio",
+	.codec_name = "wm8994-codec.0-0x1a",
+	.init = goni_wm8994_init,
+	.ops = &goni_hifi_ops,
+}, {
+	.name = "WM8994 Voice",
+	.stream_name = "Voice",
+	.cpu_dai_name = "goni-voice-dai",
+	.codec_dai_name = "wm8994-voice",
+	.platform_name = "s3c24xx-pcm-audio",
+	.codec_name = "wm8994-codec.0-0x1a",
+	.ops = &goni_voice_ops,
+},
+};
+
+static struct snd_soc_card goni = {
+	.name = "goni",
+	.dai_link = goni_dai,
+	.num_links = ARRAY_SIZE(goni_dai),
+};
+
+static int __init goni_init(void)
+{
+	int ret;
+
+	if (!machine_is_goni())
+		return -ENODEV;
+
+	goni_snd_device = platform_device_alloc("soc-audio", -1);
+	if (!goni_snd_device)
+		return -ENOMEM;
+
+	/* register voice DAI here */
+	ret = snd_soc_register_dai(&goni_snd_device->dev, &voice_dai);
+	if (ret)
+		return ret;
+
+	platform_set_drvdata(goni_snd_device, &goni);
+	ret = platform_device_add(goni_snd_device);
+
+	if (ret)
+		platform_device_put(goni_snd_device);
+
+	return ret;
+}
+
+static void __exit goni_exit(void)
+{
+	platform_device_unregister(goni_snd_device);
+}
+
+module_init(goni_init);
+module_exit(goni_exit);
+
+/* Module information */
+MODULE_DESCRIPTION("ALSA SoC WM8994 GONI(S5PV210)");
+MODULE_AUTHOR("Chanwoo Choi <cw00.choi@samsung.com>");
+MODULE_LICENSE("GPL");
diff --git a/sound/soc/s3c24xx/jive_wm8750.c b/sound/soc/s3c24xx/jive_wm8750.c
index 8c108b1..49605cd 100644
--- a/sound/soc/s3c24xx/jive_wm8750.c
+++ b/sound/soc/s3c24xx/jive_wm8750.c
@@ -49,8 +49,8 @@
 			  struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	struct s3c_i2sv2_rate_calc div;
 	unsigned int clk = 0;
 	int ret = 0;
@@ -108,8 +108,9 @@
 	.hw_params	= jive_hw_params,
 };
 
-static int jive_wm8750_init(struct snd_soc_codec *codec)
+static int jive_wm8750_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int err;
 
 	/* These endpoints are not being used. */
@@ -138,8 +139,10 @@
 static struct snd_soc_dai_link jive_dai = {
 	.name		= "wm8750",
 	.stream_name	= "WM8750",
-	.cpu_dai	= &s3c2412_i2s_dai,
-	.codec_dai	= &wm8750_dai,
+	.cpu_dai_name	= "s3c2412-i2s",
+	.codec_dai_name = "wm8750-hifi",
+	.platform_name	= "s3c24xx-pcm-audio",
+	.codec_name	= "wm8750-codec.0-0x1a",
 	.init		= jive_wm8750_init,
 	.ops		= &jive_ops,
 };
@@ -147,17 +150,10 @@
 /* jive audio machine driver */
 static struct snd_soc_card snd_soc_machine_jive = {
 	.name		= "Jive",
-	.platform	= &s3c24xx_soc_platform,
 	.dai_link	= &jive_dai,
 	.num_links	= 1,
 };
 
-/* jive audio subsystem */
-static struct snd_soc_device jive_snd_devdata = {
-	.card		= &snd_soc_machine_jive,
-	.codec_dev	= &soc_codec_dev_wm8750,
-};
-
 static struct platform_device *jive_snd_device;
 
 static int __init jive_init(void)
@@ -173,8 +169,7 @@
 	if (!jive_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(jive_snd_device, &jive_snd_devdata);
-	jive_snd_devdata.dev = &jive_snd_device->dev;
+	platform_set_drvdata(jive_snd_device, &snd_soc_machine_jive);
 	ret = platform_device_add(jive_snd_device);
 
 	if (ret)
diff --git a/sound/soc/s3c24xx/ln2440sbc_alc650.c b/sound/soc/s3c24xx/ln2440sbc_alc650.c
index ffa954f..abe64ab 100644
--- a/sound/soc/s3c24xx/ln2440sbc_alc650.c
+++ b/sound/soc/s3c24xx/ln2440sbc_alc650.c
@@ -23,7 +23,6 @@
 #include <sound/soc.h>
 #include <sound/soc-dapm.h>
 
-#include "../codecs/ac97.h"
 #include "s3c-dma.h"
 #include "s3c-ac97.h"
 
@@ -33,23 +32,19 @@
 {
 	.name = "AC97",
 	.stream_name = "AC97 HiFi",
-	.cpu_dai = &s3c_ac97_dai[S3C_AC97_DAI_PCM],
-	.codec_dai = &ac97_dai,
+	.cpu_dai_name = "s3c-ac97",
+	.codec_dai_name = "ac97-hifi",
+	.codec_name = "ac97-codec",
+	.platform_name = "s3c24xx-pcm-audio",
 },
 };
 
 static struct snd_soc_card ln2440sbc = {
 	.name = "LN2440SBC",
-	.platform = &s3c24xx_soc_platform,
 	.dai_link = ln2440sbc_dai,
 	.num_links = ARRAY_SIZE(ln2440sbc_dai),
 };
 
-static struct snd_soc_device ln2440sbc_snd_ac97_devdata = {
-	.card = &ln2440sbc,
-	.codec_dev = &soc_codec_dev_ac97,
-};
-
 static struct platform_device *ln2440sbc_snd_ac97_device;
 
 static int __init ln2440sbc_init(void)
@@ -60,9 +55,7 @@
 	if (!ln2440sbc_snd_ac97_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(ln2440sbc_snd_ac97_device,
-				&ln2440sbc_snd_ac97_devdata);
-	ln2440sbc_snd_ac97_devdata.dev = &ln2440sbc_snd_ac97_device->dev;
+	platform_set_drvdata(ln2440sbc_snd_ac97_device, &ln2440sbc);
 	ret = platform_device_add(ln2440sbc_snd_ac97_device);
 
 	if (ret)
diff --git a/sound/soc/s3c24xx/neo1973_gta02_wm8753.c b/sound/soc/s3c24xx/neo1973_gta02_wm8753.c
index 209c259..c457bfd 100644
--- a/sound/soc/s3c24xx/neo1973_gta02_wm8753.c
+++ b/sound/soc/s3c24xx/neo1973_gta02_wm8753.c
@@ -41,8 +41,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	unsigned int pll_out = 0, bclk = 0;
 	int ret = 0;
 	unsigned long iis_clkrate;
@@ -130,7 +130,7 @@
 static int neo1973_gta02_hifi_hw_free(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 
 	/* disable the PLL */
 	return snd_soc_dai_set_pll(codec_dai, WM8753_PLL1, 0, 0, 0);
@@ -149,7 +149,7 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 	unsigned int pcmdiv = 0;
 	int ret = 0;
 	unsigned long iis_clkrate;
@@ -194,7 +194,7 @@
 static int neo1973_gta02_voice_hw_free(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 
 	/* disable the PLL */
 	return snd_soc_dai_set_pll(codec_dai, WM8753_PLL2, 0, 0, 0);
@@ -262,7 +262,7 @@
 			struct snd_kcontrol *k,
 			int event)
 {
-	gpio_set_value(GTA02_GPIO_AMP_SHUT, SND_SOC_DAPM_EVENT_OFF(value));
+	gpio_set_value(GTA02_GPIO_AMP_SHUT, SND_SOC_DAPM_EVENT_OFF(event));
 
 	return 0;
 }
@@ -330,8 +330,9 @@
  * This is an example machine initialisation for a wm8753 connected to a
  * neo1973 GTA02.
  */
-static int neo1973_gta02_wm8753_init(struct snd_soc_codec *codec)
+static int neo1973_gta02_wm8753_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int err;
 
 	/* set up NC codec pins */
@@ -378,9 +379,8 @@
 /*
  * BT Codec DAI
  */
-static struct snd_soc_dai bt_dai = {
-	.name = "Bluetooth",
-	.id = 0,
+static struct snd_soc_dai_driver bt_dai = {
+	.name = "bluetooth-dai",
 	.playback = {
 		.channels_min = 1,
 		.channels_max = 1,
@@ -397,32 +397,30 @@
 { /* Hifi Playback - for similatious use with voice below */
 	.name = "WM8753",
 	.stream_name = "WM8753 HiFi",
-	.cpu_dai = &s3c24xx_i2s_dai,
-	.codec_dai = &wm8753_dai[WM8753_DAI_HIFI],
+	.cpu_dai_name = "s3c24xx-i2s",
+	.codec_dai_name = "wm8753-hifi",
 	.init = neo1973_gta02_wm8753_init,
+	.platform_name = "s3c24xx-pcm-audio",
+	.codec_name = "wm8753-codec.0-0x1a",
 	.ops = &neo1973_gta02_hifi_ops,
 },
 { /* Voice via BT */
 	.name = "Bluetooth",
 	.stream_name = "Voice",
-	.cpu_dai = &bt_dai,
-	.codec_dai = &wm8753_dai[WM8753_DAI_VOICE],
+	.cpu_dai_name = "bluetooth-dai",
+	.codec_dai_name = "wm8753-voice",
 	.ops = &neo1973_gta02_voice_ops,
+	.codec_name = "wm8753-codec.0-0x1a",
+	.platform_name = "s3c24xx-pcm-audio",
 },
 };
 
 static struct snd_soc_card neo1973_gta02 = {
 	.name = "neo1973-gta02",
-	.platform = &s3c24xx_soc_platform,
 	.dai_link = neo1973_gta02_dai,
 	.num_links = ARRAY_SIZE(neo1973_gta02_dai),
 };
 
-static struct snd_soc_device neo1973_gta02_snd_devdata = {
-	.card = &neo1973_gta02,
-	.codec_dev = &soc_codec_dev_wm8753,
-};
-
 static struct platform_device *neo1973_gta02_snd_device;
 
 static int __init neo1973_gta02_init(void)
@@ -435,18 +433,18 @@
 		return -ENODEV;
 	}
 
-	/* register bluetooth DAI here */
-	ret = snd_soc_register_dai(&bt_dai);
-	if (ret)
-		return ret;
-
 	neo1973_gta02_snd_device = platform_device_alloc("soc-audio", -1);
 	if (!neo1973_gta02_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(neo1973_gta02_snd_device,
-			&neo1973_gta02_snd_devdata);
-	neo1973_gta02_snd_devdata.dev = &neo1973_gta02_snd_device->dev;
+	/* register bluetooth DAI here */
+	ret = snd_soc_register_dai(&neo1973_gta02_snd_device->dev, -1, &bt_dai);
+	if (ret) {
+		platform_device_put(neo1973_gta02_snd_device);
+		return ret;
+	}
+
+	platform_set_drvdata(neo1973_gta02_snd_device, &neo1973_gta02);
 	ret = platform_device_add(neo1973_gta02_snd_device);
 
 	if (ret) {
@@ -461,7 +459,7 @@
 		goto err_unregister_device;
 	}
 
-	ret = gpio_direction_output(GTA02_GPIO_AMP_HP_IN, 1);
+	ret = gpio_direction_output(GTA02_GPIO_HP_IN, 1);
 	if (ret) {
 		pr_err("gta02_wm8753: Failed to configure GPIO %d\n", GTA02_GPIO_HP_IN);
 		goto err_free_gpio_hp_in;
@@ -493,7 +491,7 @@
 
 static void __exit neo1973_gta02_exit(void)
 {
-	snd_soc_unregister_dai(&bt_dai);
+	snd_soc_unregister_dai(&neo1973_gta02_snd_device->dev, -1);
 	platform_device_unregister(neo1973_gta02_snd_device);
 	gpio_free(GTA02_GPIO_HP_IN);
 	gpio_free(GTA02_GPIO_AMP_SHUT);
diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c b/sound/soc/s3c24xx/neo1973_wm8753.c
index 0cb4f86..d7a39a0 100644
--- a/sound/soc/s3c24xx/neo1973_wm8753.c
+++ b/sound/soc/s3c24xx/neo1973_wm8753.c
@@ -57,8 +57,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	unsigned int pll_out = 0, bclk = 0;
 	int ret = 0;
 	unsigned long iis_clkrate;
@@ -147,7 +147,7 @@
 static int neo1973_hifi_hw_free(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 
 	pr_debug("Entered %s\n", __func__);
 
@@ -167,7 +167,7 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 	unsigned int pcmdiv = 0;
 	int ret = 0;
 	unsigned long iis_clkrate;
@@ -213,7 +213,7 @@
 static int neo1973_voice_hw_free(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 
 	pr_debug("Entered %s\n", __func__);
 
@@ -499,8 +499,9 @@
  * neo1973 II. It is missing logic to detect hp/mic insertions and logic
  * to re-route the audio in such an event.
  */
-static int neo1973_wm8753_init(struct snd_soc_codec *codec)
+static int neo1973_wm8753_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	int err;
 
 	pr_debug("Entered %s\n", __func__);
@@ -538,8 +539,7 @@
  * BT Codec DAI
  */
 static struct snd_soc_dai bt_dai = {
-	.name = "Bluetooth",
-	.id = 0,
+	.name = "bluetooth-dai",
 	.playback = {
 		.channels_min = 1,
 		.channels_max = 1,
@@ -556,32 +556,30 @@
 { /* Hifi Playback - for similatious use with voice below */
 	.name = "WM8753",
 	.stream_name = "WM8753 HiFi",
-	.cpu_dai = &s3c24xx_i2s_dai,
-	.codec_dai = &wm8753_dai[WM8753_DAI_HIFI],
+	.platform_name = "s3c24xx-pcm-audio",
+	.cpu_dai_name = "s3c24xx-i2s",
+	.codec_dai_name = "wm8753-hifi",
+	.codec_name = "wm8753-codec.0-0x1a",
 	.init = neo1973_wm8753_init,
 	.ops = &neo1973_hifi_ops,
 },
 { /* Voice via BT */
 	.name = "Bluetooth",
 	.stream_name = "Voice",
-	.cpu_dai = &bt_dai,
-	.codec_dai = &wm8753_dai[WM8753_DAI_VOICE],
+	.platform_name = "s3c24xx-pcm-audio",
+	.cpu_dai_name = "bluetooth-dai",
+	.codec_dai_name = "wm8753-voice",
+	.codec_name = "wm8753-codec.0-0x1a",
 	.ops = &neo1973_voice_ops,
 },
 };
 
 static struct snd_soc_card neo1973 = {
 	.name = "neo1973",
-	.platform = &s3c24xx_soc_platform,
 	.dai_link = neo1973_dai,
 	.num_links = ARRAY_SIZE(neo1973_dai),
 };
 
-static struct snd_soc_device neo1973_snd_devdata = {
-	.card = &neo1973,
-	.codec_dev = &soc_codec_dev_wm8753,
-};
-
 static int lm4857_i2c_probe(struct i2c_client *client,
 			    const struct i2c_device_id *id)
 {
@@ -673,8 +671,7 @@
 	if (!neo1973_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(neo1973_snd_device, &neo1973_snd_devdata);
-	neo1973_snd_devdata.dev = &neo1973_snd_device->dev;
+	platform_set_drvdata(neo1973_snd_device, &neo1973);
 	ret = platform_device_add(neo1973_snd_device);
 
 	if (ret) {
diff --git a/sound/soc/s3c24xx/rx1950_uda1380.c b/sound/soc/s3c24xx/rx1950_uda1380.c
new file mode 100644
index 0000000..ffd5cf2
--- /dev/null
+++ b/sound/soc/s3c24xx/rx1950_uda1380.c
@@ -0,0 +1,333 @@
+/*
+ * rx1950.c  --  ALSA Soc Audio Layer
+ *
+ * Copyright (c) 2010 Vasily Khoruzhick <anarsoul@gmail.com>
+ *
+ * Based on smdk2440.c and magician.c
+ *
+ * Authors: Graeme Gregory graeme.gregory@wolfsonmicro.com
+ *          Philipp Zabel <philipp.zabel@gmail.com>
+ *          Denis Grigoriev <dgreenday@gmail.com>
+ *          Vasily Khoruzhick <anarsoul@gmail.com>
+ *
+ *  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;  either version 2 of the  License, or (at your
+ *  option) any later version.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/platform_device.h>
+#include <linux/i2c.h>
+#include <linux/gpio.h>
+#include <linux/clk.h>
+
+#include <sound/soc.h>
+#include <sound/soc-dapm.h>
+#include <sound/uda1380.h>
+#include <sound/jack.h>
+
+#include <plat/regs-iis.h>
+
+#include <mach/regs-clock.h>
+
+#include <asm/mach-types.h>
+
+#include "s3c-dma.h"
+#include "s3c24xx-i2s.h"
+#include "../codecs/uda1380.h"
+
+static int rx1950_uda1380_init(struct snd_soc_pcm_runtime *rtd);
+static int rx1950_startup(struct snd_pcm_substream *substream);
+static int rx1950_hw_params(struct snd_pcm_substream *substream,
+				struct snd_pcm_hw_params *params);
+static int rx1950_spk_power(struct snd_soc_dapm_widget *w,
+				struct snd_kcontrol *kcontrol, int event);
+
+static unsigned int rates[] = {
+	16000,
+	44100,
+	48000,
+	88200,
+};
+
+static struct snd_pcm_hw_constraint_list hw_rates = {
+	.count = ARRAY_SIZE(rates),
+	.list = rates,
+	.mask = 0,
+};
+
+static struct snd_soc_jack hp_jack;
+
+static struct snd_soc_jack_pin hp_jack_pins[] = {
+	{
+		.pin	= "Headphone Jack",
+		.mask	= SND_JACK_HEADPHONE,
+	},
+	{
+		.pin	= "Speaker",
+		.mask	= SND_JACK_HEADPHONE,
+		.invert	= 1,
+	},
+};
+
+static struct snd_soc_jack_gpio hp_jack_gpios[] = {
+	[0] = {
+		.gpio			= S3C2410_GPG(12),
+		.name			= "hp-gpio",
+		.report			= SND_JACK_HEADPHONE,
+		.invert			= 1,
+		.debounce_time		= 200,
+	},
+};
+
+static struct snd_soc_ops rx1950_ops = {
+	.startup	= rx1950_startup,
+	.hw_params	= rx1950_hw_params,
+};
+
+/* s3c24xx digital audio interface glue - connects codec <--> CPU */
+static struct snd_soc_dai_link rx1950_uda1380_dai[] = {
+	{
+		.name		= "uda1380",
+		.stream_name	= "UDA1380 Duplex",
+		.cpu_dai_name	= "s3c24xx-iis",
+		.codec_dai_name	= "uda1380-hifi",
+		.init		= rx1950_uda1380_init,
+		.platform_name	= "s3c24xx-pcm-audio",
+		.codec_name	= "uda1380-codec.0-001a",
+		.ops		= &rx1950_ops,
+	},
+};
+
+static struct snd_soc_card rx1950_asoc = {
+	.name = "rx1950",
+	.dai_link = rx1950_uda1380_dai,
+	.num_links = ARRAY_SIZE(rx1950_uda1380_dai),
+};
+
+/* rx1950 machine dapm widgets */
+static const struct snd_soc_dapm_widget uda1380_dapm_widgets[] = {
+	SND_SOC_DAPM_HP("Headphone Jack", NULL),
+	SND_SOC_DAPM_MIC("Mic Jack", NULL),
+	SND_SOC_DAPM_SPK("Speaker", rx1950_spk_power),
+};
+
+/* rx1950 machine audio_map */
+static const struct snd_soc_dapm_route audio_map[] = {
+	/* headphone connected to VOUTLHP, VOUTRHP */
+	{"Headphone Jack", NULL, "VOUTLHP"},
+	{"Headphone Jack", NULL, "VOUTRHP"},
+
+	/* ext speaker connected to VOUTL, VOUTR  */
+	{"Speaker", NULL, "VOUTL"},
+	{"Speaker", NULL, "VOUTR"},
+
+	/* mic is connected to VINM */
+	{"VINM", NULL, "Mic Jack"},
+};
+
+static struct platform_device *s3c24xx_snd_device;
+static struct clk *xtal;
+
+static int rx1950_startup(struct snd_pcm_substream *substream)
+{
+	struct snd_pcm_runtime *runtime = substream->runtime;
+
+	runtime->hw.rate_min = hw_rates.list[0];
+	runtime->hw.rate_max = hw_rates.list[hw_rates.count - 1];
+	runtime->hw.rates = SNDRV_PCM_RATE_KNOT;
+
+	return snd_pcm_hw_constraint_list(runtime, 0,
+					SNDRV_PCM_HW_PARAM_RATE,
+					&hw_rates);
+}
+
+static int rx1950_spk_power(struct snd_soc_dapm_widget *w,
+				struct snd_kcontrol *kcontrol, int event)
+{
+	if (SND_SOC_DAPM_EVENT_ON(event))
+		gpio_set_value(S3C2410_GPA(1), 1);
+	else
+		gpio_set_value(S3C2410_GPA(1), 0);
+
+	return 0;
+}
+
+static int rx1950_hw_params(struct snd_pcm_substream *substream,
+				struct snd_pcm_hw_params *params)
+{
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	int div;
+	int ret;
+	unsigned int rate = params_rate(params);
+	int clk_source, fs_mode;
+
+	switch (rate) {
+	case 16000:
+	case 48000:
+		clk_source = S3C24XX_CLKSRC_PCLK;
+		fs_mode = S3C2410_IISMOD_256FS;
+		div = s3c24xx_i2s_get_clockrate() / (256 * rate);
+		if (s3c24xx_i2s_get_clockrate() % (256 * rate) > (128 * rate))
+			div++;
+		break;
+	case 44100:
+	case 88200:
+		clk_source = S3C24XX_CLKSRC_MPLL;
+		fs_mode = S3C2410_IISMOD_256FS;
+		div = clk_get_rate(xtal) / (256 * rate);
+		if (clk_get_rate(xtal) % (256 * rate) > (128 * rate))
+			div++;
+		break;
+	default:
+		printk(KERN_ERR "%s: rate %d is not supported\n",
+			__func__, rate);
+		return -EINVAL;
+	}
+
+	/* set codec DAI configuration */
+	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
+		SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);
+	if (ret < 0)
+		return ret;
+
+	/* set cpu DAI configuration */
+	ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
+		SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);
+	if (ret < 0)
+		return ret;
+
+	/* select clock source */
+	ret = snd_soc_dai_set_sysclk(cpu_dai, clk_source, rate,
+			SND_SOC_CLOCK_OUT);
+	if (ret < 0)
+		return ret;
+
+	/* set MCLK division for sample rate */
+	ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C24XX_DIV_MCLK,
+		S3C2410_IISMOD_384FS);
+	if (ret < 0)
+		return ret;
+
+	/* set BCLK division for sample rate */
+	ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C24XX_DIV_BCLK,
+		S3C2410_IISMOD_32FS);
+	if (ret < 0)
+		return ret;
+
+	/* set prescaler division for sample rate */
+	ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C24XX_DIV_PRESCALER,
+		S3C24XX_PRESCALE(div, div));
+	if (ret < 0)
+		return ret;
+
+	return 0;
+}
+
+static int rx1950_uda1380_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_codec *codec = rtd->codec;
+	int err;
+
+	/* Add rx1950 specific widgets */
+	err = snd_soc_dapm_new_controls(codec, uda1380_dapm_widgets,
+				  ARRAY_SIZE(uda1380_dapm_widgets));
+
+	if (err)
+		return err;
+
+	/* Set up rx1950 specific audio path audio_mapnects */
+	err = snd_soc_dapm_add_routes(codec, audio_map,
+				      ARRAY_SIZE(audio_map));
+
+	if (err)
+		return err;
+
+	snd_soc_dapm_enable_pin(codec, "Headphone Jack");
+	snd_soc_dapm_enable_pin(codec, "Speaker");
+
+	snd_soc_dapm_sync(codec);
+
+	snd_soc_jack_new(codec, "Headphone Jack", SND_JACK_HEADPHONE,
+		&hp_jack);
+
+	snd_soc_jack_add_pins(&hp_jack, ARRAY_SIZE(hp_jack_pins),
+		hp_jack_pins);
+
+	snd_soc_jack_add_gpios(&hp_jack, ARRAY_SIZE(hp_jack_gpios),
+		hp_jack_gpios);
+
+	return 0;
+}
+
+static int __init rx1950_init(void)
+{
+	int ret;
+
+	if (!machine_is_rx1950())
+		return -ENODEV;
+
+	/* configure some gpios */
+	ret = gpio_request(S3C2410_GPA(1), "speaker-power");
+	if (ret)
+		goto err_gpio;
+
+	ret = gpio_direction_output(S3C2410_GPA(1), 0);
+	if (ret)
+		goto err_gpio_conf;
+
+	s3c24xx_snd_device = platform_device_alloc("soc-audio", -1);
+	if (!s3c24xx_snd_device) {
+		ret = -ENOMEM;
+		goto err_plat_alloc;
+	}
+
+	platform_set_drvdata(s3c24xx_snd_device, &rx1950_asoc);
+	ret = platform_device_add(s3c24xx_snd_device);
+
+	if (ret) {
+		platform_device_put(s3c24xx_snd_device);
+		goto err_plat_add;
+	}
+
+	xtal = clk_get(&s3c24xx_snd_device->dev, "xtal");
+
+	if (IS_ERR(xtal)) {
+		ret = PTR_ERR(xtal);
+		platform_device_unregister(s3c24xx_snd_device);
+		goto err_clk;
+	}
+
+	return 0;
+
+err_clk:
+err_plat_add:
+err_plat_alloc:
+err_gpio_conf:
+	gpio_free(S3C2410_GPA(1));
+
+err_gpio:
+	return ret;
+}
+
+static void __exit rx1950_exit(void)
+{
+	platform_device_unregister(s3c24xx_snd_device);
+	snd_soc_jack_free_gpios(&hp_jack, ARRAY_SIZE(hp_jack_gpios),
+		hp_jack_gpios);
+	clk_put(xtal);
+	gpio_free(S3C2410_GPA(1));
+}
+
+module_init(rx1950_init);
+module_exit(rx1950_exit);
+
+/* Module information */
+MODULE_AUTHOR("Vasily Khoruzhick");
+MODULE_DESCRIPTION("ALSA SoC RX1950");
+MODULE_LICENSE("GPL");
diff --git a/sound/soc/s3c24xx/s3c-ac97.c b/sound/soc/s3c24xx/s3c-ac97.c
index 31f6d45..26f4ed9 100644
--- a/sound/soc/s3c24xx/s3c-ac97.c
+++ b/sound/soc/s3c24xx/s3c-ac97.c
@@ -222,7 +222,7 @@
 				  struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	struct s3c_dma_params *dma_data;
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
@@ -241,7 +241,7 @@
 	u32 ac_glbctrl;
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
 	struct s3c_dma_params *dma_data =
-		snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
+		snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 
 	ac_glbctrl = readl(s3c_ac97.regs + S3C_AC97_GLBCTRL);
 	if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
@@ -277,7 +277,7 @@
 				      struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
 		return -ENODEV;
@@ -293,7 +293,7 @@
 	u32 ac_glbctrl;
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
 	struct s3c_dma_params *dma_data =
-		snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
+		snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 
 	ac_glbctrl = readl(s3c_ac97.regs + S3C_AC97_GLBCTRL);
 	ac_glbctrl &= ~S3C_AC97_GLBCTRL_MICINTM_MASK;
@@ -328,10 +328,9 @@
 	.trigger	= s3c_ac97_mic_trigger,
 };
 
-struct snd_soc_dai s3c_ac97_dai[] = {
+static struct snd_soc_dai_driver s3c_ac97_dai[] = {
 	[S3C_AC97_DAI_PCM] = {
 		.name =	"s3c-ac97",
-		.id = S3C_AC97_DAI_PCM,
 		.ac97_control = 1,
 		.playback = {
 			.stream_name = "AC97 Playback",
@@ -349,7 +348,6 @@
 	},
 	[S3C_AC97_DAI_MIC] = {
 		.name = "s3c-ac97-mic",
-		.id = S3C_AC97_DAI_MIC,
 		.ac97_control = 1,
 		.capture = {
 			.stream_name = "AC97 Mic Capture",
@@ -360,7 +358,6 @@
 		.ops = &s3c_ac97_mic_dai_ops,
 	},
 };
-EXPORT_SYMBOL_GPL(s3c_ac97_dai);
 
 static __devinit int s3c_ac97_probe(struct platform_device *pdev)
 {
@@ -449,10 +446,8 @@
 		goto err4;
 	}
 
-	s3c_ac97_dai[S3C_AC97_DAI_PCM].dev = &pdev->dev;
-	s3c_ac97_dai[S3C_AC97_DAI_MIC].dev = &pdev->dev;
-
-	ret = snd_soc_register_dais(s3c_ac97_dai, ARRAY_SIZE(s3c_ac97_dai));
+	ret = snd_soc_register_dais(&pdev->dev, s3c_ac97_dai,
+			ARRAY_SIZE(s3c_ac97_dai));
 	if (ret)
 		goto err5;
 
@@ -476,7 +471,7 @@
 {
 	struct resource *mem_res, *irq_res;
 
-	snd_soc_unregister_dais(s3c_ac97_dai, ARRAY_SIZE(s3c_ac97_dai));
+	snd_soc_unregister_dais(&pdev->dev, ARRAY_SIZE(s3c_ac97_dai));
 
 	irq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
 	if (irq_res)
@@ -518,3 +513,4 @@
 MODULE_AUTHOR("Jaswinder Singh, <jassi.brar@samsung.com>");
 MODULE_DESCRIPTION("AC97 driver for the Samsung SoC");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:s3c-ac97");
diff --git a/sound/soc/s3c24xx/s3c-ac97.h b/sound/soc/s3c24xx/s3c-ac97.h
index 2781983..5dcedd0 100644
--- a/sound/soc/s3c24xx/s3c-ac97.h
+++ b/sound/soc/s3c24xx/s3c-ac97.h
@@ -18,6 +18,4 @@
 #define S3C_AC97_DAI_PCM 0
 #define S3C_AC97_DAI_MIC 1
 
-extern struct snd_soc_dai s3c_ac97_dai[];
-
 #endif /* __S3C_AC97_H_ */
diff --git a/sound/soc/s3c24xx/s3c-dma.c b/sound/soc/s3c24xx/s3c-dma.c
index 1b61c23..54bff83 100644
--- a/sound/soc/s3c24xx/s3c-dma.c
+++ b/sound/soc/s3c24xx/s3c-dma.c
@@ -147,7 +147,7 @@
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
 	unsigned long totbytes = params_buffer_bytes(params);
 	struct s3c_dma_params *dma =
-		snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
+		snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 	int ret = 0;
 
 
@@ -441,14 +441,14 @@
 	if (!card->dev->coherent_dma_mask)
 		card->dev->coherent_dma_mask = 0xffffffff;
 
-	if (dai->playback.channels_min) {
+	if (dai->driver->playback.channels_min) {
 		ret = s3c_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_PLAYBACK);
 		if (ret)
 			goto out;
 	}
 
-	if (dai->capture.channels_min) {
+	if (dai->driver->capture.channels_min) {
 		ret = s3c_preallocate_dma_buffer(pcm,
 			SNDRV_PCM_STREAM_CAPTURE);
 		if (ret)
@@ -458,26 +458,46 @@
 	return ret;
 }
 
-struct snd_soc_platform s3c24xx_soc_platform = {
-	.name		= "s3c24xx-audio",
-	.pcm_ops 	= &s3c_dma_ops,
+static struct snd_soc_platform_driver s3c24xx_soc_platform = {
+	.ops		= &s3c_dma_ops,
 	.pcm_new	= s3c_dma_new,
 	.pcm_free	= s3c_dma_free_dma_buffers,
 };
-EXPORT_SYMBOL_GPL(s3c24xx_soc_platform);
 
-static int __init s3c24xx_soc_platform_init(void)
+static int __devinit s3c24xx_soc_platform_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_platform(&s3c24xx_soc_platform);
+	return snd_soc_register_platform(&pdev->dev, &s3c24xx_soc_platform);
 }
-module_init(s3c24xx_soc_platform_init);
 
-static void __exit s3c24xx_soc_platform_exit(void)
+static int __devexit s3c24xx_soc_platform_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_platform(&s3c24xx_soc_platform);
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
 }
-module_exit(s3c24xx_soc_platform_exit);
+
+static struct platform_driver s3c24xx_pcm_driver = {
+	.driver = {
+		.name = "s3c24xx-pcm-audio",
+		.owner = THIS_MODULE,
+	},
+
+	.probe = s3c24xx_soc_platform_probe,
+	.remove = __devexit_p(s3c24xx_soc_platform_remove),
+};
+
+static int __init snd_s3c24xx_pcm_init(void)
+{
+	return platform_driver_register(&s3c24xx_pcm_driver);
+}
+module_init(snd_s3c24xx_pcm_init);
+
+static void __exit snd_s3c24xx_pcm_exit(void)
+{
+	platform_driver_unregister(&s3c24xx_pcm_driver);
+}
+module_exit(snd_s3c24xx_pcm_exit);
 
 MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>");
 MODULE_DESCRIPTION("Samsung S3C Audio DMA module");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:s3c24xx-pcm-audio");
diff --git a/sound/soc/s3c24xx/s3c-dma.h b/sound/soc/s3c24xx/s3c-dma.h
index 69bb6bf..748c07d 100644
--- a/sound/soc/s3c24xx/s3c-dma.h
+++ b/sound/soc/s3c24xx/s3c-dma.h
@@ -25,7 +25,6 @@
 #define S3C24XX_DAI_I2S			0
 
 /* platform data */
-extern struct snd_soc_platform s3c24xx_soc_platform;
 extern struct snd_ac97_bus_ops s3c24xx_ac97_ops;
 
 #endif
diff --git a/sound/soc/s3c24xx/s3c-i2s-v2.c b/sound/soc/s3c24xx/s3c-i2s-v2.c
index 64376b2..b3866d5 100644
--- a/sound/soc/s3c24xx/s3c-i2s-v2.c
+++ b/sound/soc/s3c24xx/s3c-i2s-v2.c
@@ -49,7 +49,7 @@
 
 static inline struct s3c_i2sv2_info *to_info(struct snd_soc_dai *cpu_dai)
 {
-	return cpu_dai->private_data;
+	return snd_soc_dai_get_drvdata(cpu_dai);
 }
 
 #define bit_set(v, b) (((v) & (b)) ? 1 : 0)
@@ -307,11 +307,9 @@
 
 static int s3c_i2sv2_hw_params(struct snd_pcm_substream *substream,
 				 struct snd_pcm_hw_params *params,
-				 struct snd_soc_dai *socdai)
+				 struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai_link *dai = rtd->dai;
-	struct s3c_i2sv2_info *i2s = to_info(dai->cpu_dai);
+	struct s3c_i2sv2_info *i2s = to_info(dai);
 	struct s3c_dma_params *dma_data;
 	u32 iismod;
 
@@ -322,7 +320,7 @@
 	else
 		dma_data = i2s->dma_capture;
 
-	snd_soc_dai_set_dma_data(dai->cpu_dai, substream, dma_data);
+	snd_soc_dai_set_dma_data(dai, substream, dma_data);
 
 	/* Working copies of register */
 	iismod = readl(i2s->regs + S3C2412_IISMOD);
@@ -396,12 +394,12 @@
 			       struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct s3c_i2sv2_info *i2s = to_info(rtd->dai->cpu_dai);
+	struct s3c_i2sv2_info *i2s = to_info(rtd->cpu_dai);
 	int capture = (substream->stream == SNDRV_PCM_STREAM_CAPTURE);
 	unsigned long irqs;
 	int ret = 0;
 	struct s3c_dma_params *dma_data =
-		snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
+		snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 
 	pr_debug("Entered %s\n", __func__);
 
@@ -640,36 +638,17 @@
 }
 EXPORT_SYMBOL_GPL(s3c_i2sv2_iis_calc_rate);
 
-int s3c_i2sv2_probe(struct platform_device *pdev,
-		    struct snd_soc_dai *dai,
+int s3c_i2sv2_probe(struct snd_soc_dai *dai,
 		    struct s3c_i2sv2_info *i2s,
 		    unsigned long base)
 {
-	struct device *dev = &pdev->dev;
+	struct device *dev = dai->dev;
 	unsigned int iismod;
 
 	i2s->dev = dev;
 
 	/* record our i2s structure for later use in the callbacks */
-	dai->private_data = i2s;
-
-	if (!base) {
-		struct resource *res = platform_get_resource(pdev,
-							     IORESOURCE_MEM,
-							     0);
-		if (!res) {
-			dev_err(dev, "Unable to get register resource\n");
-			return -ENXIO;
-		}
-
-		if (!request_mem_region(res->start, resource_size(res),
-					"s3c64xx-i2s-v4")) {
-			dev_err(dev, "Unable to request register region\n");
-			return -EBUSY;
-		}
-
-		base = res->start;
-	}
+	snd_soc_dai_set_drvdata(dai, i2s);
 
 	i2s->regs = ioremap(base, 0x100);
 	if (i2s->regs == NULL) {
@@ -752,9 +731,10 @@
 #define s3c2412_i2s_resume  NULL
 #endif
 
-int s3c_i2sv2_register_dai(struct snd_soc_dai *dai)
+int s3c_i2sv2_register_dai(struct device *dev, int id,
+		struct snd_soc_dai_driver *drv)
 {
-	struct snd_soc_dai_ops *ops = dai->ops;
+	struct snd_soc_dai_ops *ops = drv->ops;
 
 	ops->trigger = s3c2412_i2s_trigger;
 	if (!ops->hw_params)
@@ -767,10 +747,10 @@
 	if (!ops->delay)
 		ops->delay = s3c2412_i2s_delay;
 
-	dai->suspend = s3c2412_i2s_suspend;
-	dai->resume = s3c2412_i2s_resume;
+	drv->suspend = s3c2412_i2s_suspend;
+	drv->resume = s3c2412_i2s_resume;
 
-	return snd_soc_register_dai(dai);
+	return snd_soc_register_dai(dev, drv);
 }
 EXPORT_SYMBOL_GPL(s3c_i2sv2_register_dai);
 
diff --git a/sound/soc/s3c24xx/s3c-i2s-v2.h b/sound/soc/s3c24xx/s3c-i2s-v2.h
index 766f43a..d458301 100644
--- a/sound/soc/s3c24xx/s3c-i2s-v2.h
+++ b/sound/soc/s3c24xx/s3c-i2s-v2.h
@@ -66,6 +66,8 @@
 	u32		 suspend_iismod;
 	u32		 suspend_iiscon;
 	u32		 suspend_iispsr;
+
+	unsigned long	base;
 };
 
 extern struct clk *s3c_i2sv2_get_clock(struct snd_soc_dai *cpu_dai);
@@ -81,23 +83,24 @@
 
 /**
  * s3c_i2sv2_probe - probe for i2s device helper
- * @pdev: The platform device supplied to the original probe.
  * @dai: The ASoC DAI structure supplied to the original probe.
  * @i2s: Our local i2s structure to fill in.
  * @base: The base address for the registers.
  */
-extern int s3c_i2sv2_probe(struct platform_device *pdev,
-			   struct snd_soc_dai *dai,
+extern int s3c_i2sv2_probe(struct snd_soc_dai *dai,
 			   struct s3c_i2sv2_info *i2s,
 			   unsigned long base);
 
 /**
  * s3c_i2sv2_register_dai - register dai with soc core
- * @dai: The snd_soc_dai structure to register
+ * @dev: DAI device
+ * @id: DAI ID
+ * @drv: The driver structure to register
  *
  * Fill in any missing fields and then register the given dai with the
  * soc core.
  */
-extern int s3c_i2sv2_register_dai(struct snd_soc_dai *dai);
+extern int s3c_i2sv2_register_dai(struct device *dev, int id,
+		struct snd_soc_dai_driver *drv);
 
 #endif /* __SND_SOC_S3C24XX_S3C_I2SV2_I2S_H */
diff --git a/sound/soc/s3c24xx/s3c-pcm.c b/sound/soc/s3c24xx/s3c-pcm.c
index 326f0a9..2e020e1 100644
--- a/sound/soc/s3c24xx/s3c-pcm.c
+++ b/sound/soc/s3c24xx/s3c-pcm.c
@@ -64,11 +64,6 @@
 
 static struct s3c_pcm_info s3c_pcm[2];
 
-static inline struct s3c_pcm_info *to_info(struct snd_soc_dai *cpu_dai)
-{
-	return cpu_dai->private_data;
-}
-
 static void s3c_pcm_snd_txctrl(struct s3c_pcm_info *pcm, int on)
 {
 	void __iomem *regs = pcm->regs;
@@ -83,7 +78,7 @@
 		ctl |= S3C_PCM_CTL_TXDMA_EN;
 		ctl |= S3C_PCM_CTL_TXFIFO_EN;
 		ctl |= S3C_PCM_CTL_ENABLE;
-		ctl |= (0x20<<S3C_PCM_CTL_TXDIPSTICK_SHIFT);
+		ctl |= (0x4<<S3C_PCM_CTL_TXDIPSTICK_SHIFT);
 		clkctl |= S3C_PCM_CLKCTL_SERCLK_EN;
 	} else {
 		ctl &= ~S3C_PCM_CTL_TXDMA_EN;
@@ -107,11 +102,14 @@
 
 	ctl = readl(regs + S3C_PCM_CTL);
 	clkctl = readl(regs + S3C_PCM_CLKCTL);
+	ctl &= ~(S3C_PCM_CTL_RXDIPSTICK_MASK
+			 << S3C_PCM_CTL_RXDIPSTICK_SHIFT);
 
 	if (on) {
 		ctl |= S3C_PCM_CTL_RXDMA_EN;
 		ctl |= S3C_PCM_CTL_RXFIFO_EN;
 		ctl |= S3C_PCM_CTL_ENABLE;
+		ctl |= (0x20<<S3C_PCM_CTL_RXDIPSTICK_SHIFT);
 		clkctl |= S3C_PCM_CLKCTL_SERCLK_EN;
 	} else {
 		ctl &= ~S3C_PCM_CTL_RXDMA_EN;
@@ -132,7 +130,7 @@
 			       struct snd_soc_dai *dai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct s3c_pcm_info *pcm = to_info(rtd->dai->cpu_dai);
+	struct s3c_pcm_info *pcm = snd_soc_dai_get_drvdata(rtd->cpu_dai);
 	unsigned long flags;
 
 	dev_dbg(pcm->dev, "Entered %s\n", __func__);
@@ -176,8 +174,7 @@
 				 struct snd_soc_dai *socdai)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai_link *dai = rtd->dai;
-	struct s3c_pcm_info *pcm = to_info(dai->cpu_dai);
+	struct s3c_pcm_info *pcm = snd_soc_dai_get_drvdata(rtd->cpu_dai);
 	struct s3c_dma_params *dma_data;
 	void __iomem *regs = pcm->regs;
 	struct clk *clk;
@@ -192,7 +189,7 @@
 	else
 		dma_data = pcm->dma_capture;
 
-	snd_soc_dai_set_dma_data(dai->cpu_dai, substream, dma_data);
+	snd_soc_dai_set_dma_data(rtd->cpu_dai, substream, dma_data);
 
 	/* Strictly check for sample size */
 	switch (params_format(params)) {
@@ -242,7 +239,7 @@
 static int s3c_pcm_set_fmt(struct snd_soc_dai *cpu_dai,
 			       unsigned int fmt)
 {
-	struct s3c_pcm_info *pcm = to_info(cpu_dai);
+	struct s3c_pcm_info *pcm = snd_soc_dai_get_drvdata(cpu_dai);
 	void __iomem *regs = pcm->regs;
 	unsigned long flags;
 	int ret = 0;
@@ -313,7 +310,7 @@
 static int s3c_pcm_set_clkdiv(struct snd_soc_dai *cpu_dai,
 						int div_id, int div)
 {
-	struct s3c_pcm_info *pcm = to_info(cpu_dai);
+	struct s3c_pcm_info *pcm = snd_soc_dai_get_drvdata(cpu_dai);
 
 	switch (div_id) {
 	case S3C_PCM_SCLK_PER_FS:
@@ -330,7 +327,7 @@
 static int s3c_pcm_set_sysclk(struct snd_soc_dai *cpu_dai,
 				  int clk_id, unsigned int freq, int dir)
 {
-	struct s3c_pcm_info *pcm = to_info(cpu_dai);
+	struct s3c_pcm_info *pcm = snd_soc_dai_get_drvdata(cpu_dai);
 	void __iomem *regs = pcm->regs;
 	u32 clkctl = readl(regs + S3C_PCM_CLKCTL);
 
@@ -366,10 +363,7 @@
 
 #define S3C_PCM_RATES  SNDRV_PCM_RATE_8000_96000
 
-#define S3C_PCM_DECLARE(n)			\
-{								\
-	.name		 = "samsung-pcm",			\
-	.id		 = (n),				\
+#define S3C_PCM_DAI_DECLARE			\
 	.symmetric_rates = 1,					\
 	.ops = &s3c_pcm_dai_ops,				\
 	.playback = {						\
@@ -383,19 +377,23 @@
 		.channels_max	= 2,				\
 		.rates		= S3C_PCM_RATES,		\
 		.formats	= SNDRV_PCM_FMTBIT_S16_LE,	\
-	},							\
-}
+	}
 
-struct snd_soc_dai s3c_pcm_dai[] = {
-	S3C_PCM_DECLARE(0),
-	S3C_PCM_DECLARE(1),
+struct snd_soc_dai_driver s3c_pcm_dai[] = {
+	[0] = {
+		.name	= "samsung-pcm.0",
+		S3C_PCM_DAI_DECLARE,
+	},
+	[1] = {
+		.name	= "samsung-pcm.1",
+		S3C_PCM_DAI_DECLARE,
+	},
 };
 EXPORT_SYMBOL_GPL(s3c_pcm_dai);
 
 static __devinit int s3c_pcm_dev_probe(struct platform_device *pdev)
 {
 	struct s3c_pcm_info *pcm;
-	struct snd_soc_dai *dai;
 	struct resource *mem_res, *dmatx_res, *dmarx_res;
 	struct s3c_audio_pdata *pcm_pdata;
 	int ret;
@@ -437,9 +435,6 @@
 
 	spin_lock_init(&pcm->lock);
 
-	dai = &s3c_pcm_dai[pdev->id];
-	dai->dev = &pdev->dev;
-
 	/* Default is 128fs */
 	pcm->sclk_per_fs = 128;
 
@@ -452,7 +447,7 @@
 	clk_enable(pcm->cclk);
 
 	/* record our pcm structure for later use in the callbacks */
-	dai->private_data = pcm;
+	dev_set_drvdata(&pdev->dev, pcm);
 
 	if (!request_mem_region(mem_res->start,
 				resource_size(mem_res), "samsung-pcm")) {
@@ -476,7 +471,7 @@
 	}
 	clk_enable(pcm->pclk);
 
-	ret = snd_soc_register_dai(dai);
+	ret = snd_soc_register_dai(&pdev->dev, &s3c_pcm_dai[pdev->id]);
 	if (ret != 0) {
 		dev_err(&pdev->dev, "failed to get pcm_clock\n");
 		goto err5;
@@ -514,6 +509,8 @@
 	struct s3c_pcm_info *pcm = &s3c_pcm[pdev->id];
 	struct resource *mem_res;
 
+	snd_soc_unregister_dai(&pdev->dev);
+
 	iounmap(pcm->regs);
 
 	mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -552,3 +549,4 @@
 MODULE_AUTHOR("Jaswinder Singh, <jassi.brar@samsung.com>");
 MODULE_DESCRIPTION("S3C PCM Controller Driver");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:samsung-pcm");
diff --git a/sound/soc/s3c24xx/s3c-pcm.h b/sound/soc/s3c24xx/s3c-pcm.h
index 69ff997..f60baa1 100644
--- a/sound/soc/s3c24xx/s3c-pcm.h
+++ b/sound/soc/s3c24xx/s3c-pcm.h
@@ -22,7 +22,8 @@
 /* PCM_CTL Bit-Fields */
 #define S3C_PCM_CTL_TXDIPSTICK_MASK		(0x3f)
 #define S3C_PCM_CTL_TXDIPSTICK_SHIFT	(13)
-#define S3C_PCM_CTL_RXDIPSTICK_MSK		(0x3f<<7)
+#define S3C_PCM_CTL_RXDIPSTICK_MASK		(0x3f)
+#define S3C_PCM_CTL_RXDIPSTICK_SHIFT	(7)
 #define S3C_PCM_CTL_TXDMA_EN		(0x1<<6)
 #define S3C_PCM_CTL_RXDMA_EN		(0x1<<5)
 #define S3C_PCM_CTL_TXMSB_AFTER_FSYNC	(0x1<<4)
diff --git a/sound/soc/s3c24xx/s3c2412-i2s.c b/sound/soc/s3c24xx/s3c2412-i2s.c
index 709adef..4a861cf 100644
--- a/sound/soc/s3c24xx/s3c2412-i2s.c
+++ b/sound/soc/s3c24xx/s3c2412-i2s.c
@@ -65,26 +65,20 @@
 
 static struct s3c_i2sv2_info s3c2412_i2s;
 
-static inline struct s3c_i2sv2_info *to_info(struct snd_soc_dai *cpu_dai)
-{
-	return cpu_dai->private_data;
-}
-
-static int s3c2412_i2s_probe(struct platform_device *pdev,
-			     struct snd_soc_dai *dai)
+static int s3c2412_i2s_probe(struct snd_soc_dai *dai)
 {
 	int ret;
 
 	pr_debug("Entered %s\n", __func__);
 
-	ret = s3c_i2sv2_probe(pdev, dai, &s3c2412_i2s, S3C2410_PA_IIS);
+	ret = s3c_i2sv2_probe(dai, &s3c2412_i2s, S3C2410_PA_IIS);
 	if (ret)
 		return ret;
 
 	s3c2412_i2s.dma_capture = &s3c2412_i2s_pcm_stereo_in;
 	s3c2412_i2s.dma_playback = &s3c2412_i2s_pcm_stereo_out;
 
-	s3c2412_i2s.iis_cclk = clk_get(&pdev->dev, "i2sclk");
+	s3c2412_i2s.iis_cclk = clk_get(dai->dev, "i2sclk");
 	if (s3c2412_i2s.iis_cclk == NULL) {
 		pr_err("failed to get i2sclk clock\n");
 		iounmap(s3c2412_i2s.regs);
@@ -108,11 +102,20 @@
 	return 0;
 }
 
+static int s3c2412_i2s_remove(struct snd_soc_dai *dai)
+{
+	clk_disable(s3c2412_i2s.iis_cclk);
+	clk_put(s3c2412_i2s.iis_cclk);
+	iounmap(s3c2412_i2s.regs);
+
+	return 0;
+}
+
 static int s3c2412_i2s_hw_params(struct snd_pcm_substream *substream,
 				 struct snd_pcm_hw_params *params,
 				 struct snd_soc_dai *cpu_dai)
 {
-	struct s3c_i2sv2_info *i2s = to_info(cpu_dai);
+	struct s3c_i2sv2_info *i2s = snd_soc_dai_get_drvdata(cpu_dai);
 	struct s3c_dma_params *dma_data;
 	u32 iismod;
 
@@ -152,10 +155,9 @@
 	.hw_params	= s3c2412_i2s_hw_params,
 };
 
-struct snd_soc_dai s3c2412_i2s_dai = {
-	.name		= "s3c2412-i2s",
-	.id		= 0,
+static struct snd_soc_dai_driver s3c2412_i2s_dai = {
 	.probe		= s3c2412_i2s_probe,
+	.remove	= s3c2412_i2s_remove,
 	.playback = {
 		.channels_min	= 2,
 		.channels_max	= 2,
@@ -170,17 +172,36 @@
 	},
 	.ops = &s3c2412_i2s_dai_ops,
 };
-EXPORT_SYMBOL_GPL(s3c2412_i2s_dai);
+
+static __devinit int s3c2412_iis_dev_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_dai(&pdev->dev, &s3c2412_i2s_dai);
+}
+
+static __devexit int s3c2412_iis_dev_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_dai(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver s3c2412_iis_driver = {
+	.probe  = s3c2412_iis_dev_probe,
+	.remove = s3c2412_iis_dev_remove,
+	.driver = {
+		.name = "s3c2412-iis",
+		.owner = THIS_MODULE,
+	},
+};
 
 static int __init s3c2412_i2s_init(void)
 {
-	return  s3c_i2sv2_register_dai(&s3c2412_i2s_dai);
+	return platform_driver_register(&s3c2412_iis_driver);
 }
 module_init(s3c2412_i2s_init);
 
 static void __exit s3c2412_i2s_exit(void)
 {
-	snd_soc_unregister_dai(&s3c2412_i2s_dai);
+	platform_driver_unregister(&s3c2412_iis_driver);
 }
 module_exit(s3c2412_i2s_exit);
 
@@ -188,3 +209,4 @@
 MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>");
 MODULE_DESCRIPTION("S3C2412 I2S SoC Interface");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:s3c2412-iis");
diff --git a/sound/soc/s3c24xx/s3c2412-i2s.h b/sound/soc/s3c24xx/s3c2412-i2s.h
index 0b5686b..01a0471 100644
--- a/sound/soc/s3c24xx/s3c2412-i2s.h
+++ b/sound/soc/s3c24xx/s3c2412-i2s.h
@@ -24,6 +24,4 @@
 #define S3C2412_CLKSRC_PCLK	S3C_I2SV2_CLKSRC_PCLK
 #define S3C2412_CLKSRC_I2SCLK	S3C_I2SV2_CLKSRC_AUDIOBUS
 
-extern struct snd_soc_dai s3c2412_i2s_dai;
-
 #endif /* __SND_SOC_S3C24XX_S3C2412_I2S_H */
diff --git a/sound/soc/s3c24xx/s3c24xx-i2s.c b/sound/soc/s3c24xx/s3c24xx-i2s.c
index c3ac890..e060daa 100644
--- a/sound/soc/s3c24xx/s3c24xx-i2s.c
+++ b/sound/soc/s3c24xx/s3c24xx-i2s.c
@@ -252,7 +252,7 @@
 	else
 		dma_data = &s3c24xx_i2s_pcm_stereo_in;
 
-	snd_soc_dai_set_dma_data(rtd->dai->cpu_dai, substream, dma_data);
+	snd_soc_dai_set_dma_data(rtd->cpu_dai, substream, dma_data);
 
 	/* Working copies of register */
 	iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD);
@@ -280,9 +280,8 @@
 			       struct snd_soc_dai *dai)
 {
 	int ret = 0;
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
 	struct s3c_dma_params *dma_data =
-		snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
+		snd_soc_dai_get_dma_data(dai, substream);
 
 	pr_debug("Entered %s\n", __func__);
 
@@ -387,8 +386,7 @@
 }
 EXPORT_SYMBOL_GPL(s3c24xx_i2s_get_clockrate);
 
-static int s3c24xx_i2s_probe(struct platform_device *pdev,
-			     struct snd_soc_dai *dai)
+static int s3c24xx_i2s_probe(struct snd_soc_dai *dai)
 {
 	pr_debug("Entered %s\n", __func__);
 
@@ -396,7 +394,7 @@
 	if (s3c24xx_i2s.regs == NULL)
 		return -ENXIO;
 
-	s3c24xx_i2s.iis_clk = clk_get(&pdev->dev, "iis");
+	s3c24xx_i2s.iis_clk = clk_get(dai->dev, "iis");
 	if (s3c24xx_i2s.iis_clk == NULL) {
 		pr_err("failed to get iis_clock\n");
 		iounmap(s3c24xx_i2s.regs);
@@ -465,9 +463,7 @@
 	.set_sysclk	= s3c24xx_i2s_set_sysclk,
 };
 
-struct snd_soc_dai s3c24xx_i2s_dai = {
-	.name = "s3c24xx-i2s",
-	.id = 0,
+static struct snd_soc_dai_driver s3c24xx_i2s_dai = {
 	.probe = s3c24xx_i2s_probe,
 	.suspend = s3c24xx_i2s_suspend,
 	.resume = s3c24xx_i2s_resume,
@@ -483,17 +479,36 @@
 		.formats = SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE,},
 	.ops = &s3c24xx_i2s_dai_ops,
 };
-EXPORT_SYMBOL_GPL(s3c24xx_i2s_dai);
+
+static __devinit int s3c24xx_iis_dev_probe(struct platform_device *pdev)
+{
+	return snd_soc_register_dai(&pdev->dev, &s3c24xx_i2s_dai);
+}
+
+static __devexit int s3c24xx_iis_dev_remove(struct platform_device *pdev)
+{
+	snd_soc_unregister_dai(&pdev->dev);
+	return 0;
+}
+
+static struct platform_driver s3c24xx_iis_driver = {
+	.probe  = s3c24xx_iis_dev_probe,
+	.remove = s3c24xx_iis_dev_remove,
+	.driver = {
+		.name = "s3c24xx-iis",
+		.owner = THIS_MODULE,
+	},
+};
 
 static int __init s3c24xx_i2s_init(void)
 {
-	return snd_soc_register_dai(&s3c24xx_i2s_dai);
+	return platform_driver_register(&s3c24xx_iis_driver);
 }
 module_init(s3c24xx_i2s_init);
 
 static void __exit s3c24xx_i2s_exit(void)
 {
-	snd_soc_unregister_dai(&s3c24xx_i2s_dai);
+	platform_driver_unregister(&s3c24xx_iis_driver);
 }
 module_exit(s3c24xx_i2s_exit);
 
@@ -501,3 +516,4 @@
 MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>");
 MODULE_DESCRIPTION("s3c24xx I2S SoC Interface");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:s3c24xx-iis");
diff --git a/sound/soc/s3c24xx/s3c24xx-i2s.h b/sound/soc/s3c24xx/s3c24xx-i2s.h
index 726d91c..f9ca04e 100644
--- a/sound/soc/s3c24xx/s3c24xx-i2s.h
+++ b/sound/soc/s3c24xx/s3c24xx-i2s.h
@@ -32,6 +32,4 @@
 
 u32 s3c24xx_i2s_get_clockrate(void);
 
-extern struct snd_soc_dai s3c24xx_i2s_dai;
-
 #endif /*S3C24XXI2S_H_*/
diff --git a/sound/soc/s3c24xx/s3c24xx_simtec.c b/sound/soc/s3c24xx/s3c24xx_simtec.c
index 4984754..c4c1114 100644
--- a/sound/soc/s3c24xx/s3c24xx_simtec.c
+++ b/sound/soc/s3c24xx/s3c24xx_simtec.c
@@ -139,8 +139,10 @@
 		       speaker_unmute_get, speaker_unmute_put),
 };
 
-void simtec_audio_init(struct snd_soc_codec *codec)
+void simtec_audio_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+
 	if (pdata->amp_gpio > 0) {
 		pr_debug("%s: adding amp routes\n", __func__);
 
@@ -170,8 +172,8 @@
 			    struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret;
 
 	/* Set the CODEC as the bus clock master, I2S */
@@ -319,12 +321,12 @@
 #endif
 
 int __devinit simtec_audio_core_probe(struct platform_device *pdev,
-				      struct snd_soc_device *socdev)
+				      struct snd_soc_card *card)
 {
 	struct platform_device *snd_dev;
 	int ret;
 
-	socdev->card->dai_link->ops = &simtec_snd_ops;
+	card->dai_link->ops = &simtec_snd_ops;
 
 	pdata = pdev->dev.platform_data;
 	if (!pdata) {
@@ -353,8 +355,7 @@
 		goto err_gpio;
 	}
 
-	platform_set_drvdata(snd_dev, socdev);
-	socdev->dev = &snd_dev->dev;
+	platform_set_drvdata(snd_dev, card);
 
 	ret = platform_device_add(snd_dev);
 	if (ret) {
diff --git a/sound/soc/s3c24xx/s3c24xx_simtec.h b/sound/soc/s3c24xx/s3c24xx_simtec.h
index e18faee..e63d5ff 100644
--- a/sound/soc/s3c24xx/s3c24xx_simtec.h
+++ b/sound/soc/s3c24xx/s3c24xx_simtec.h
@@ -7,10 +7,10 @@
  * published by the Free Software Foundation.
 */
 
-extern void simtec_audio_init(struct snd_soc_codec *codec);
+extern void simtec_audio_init(struct snd_soc_pcm_runtime *rtd);
 
 extern int simtec_audio_core_probe(struct platform_device *pdev,
-				   struct snd_soc_device *socdev);
+				   struct snd_soc_card *card);
 
 extern int simtec_audio_remove(struct platform_device *pdev);
 
diff --git a/sound/soc/s3c24xx/s3c24xx_simtec_hermes.c b/sound/soc/s3c24xx/s3c24xx_simtec_hermes.c
index bdf8951..f884537 100644
--- a/sound/soc/s3c24xx/s3c24xx_simtec_hermes.c
+++ b/sound/soc/s3c24xx/s3c24xx_simtec_hermes.c
@@ -73,8 +73,10 @@
  * Attach our controls and configure the necessary codec
  * mappings for our sound card instance.
 */
-static int simtec_hermes_init(struct snd_soc_codec *codec)
+static int simtec_hermes_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+
 	snd_soc_dapm_new_controls(codec, dapm_widgets,
 				  ARRAY_SIZE(dapm_widgets));
 
@@ -85,42 +87,33 @@
 	snd_soc_dapm_enable_pin(codec, "Line Out");
 	snd_soc_dapm_enable_pin(codec, "Mic Jack");
 
-	simtec_audio_init(codec);
+	simtec_audio_init(rtd);
 	snd_soc_dapm_sync(codec);
 
 	return 0;
 }
 
-static struct aic3x_setup_data codec_setup = {
-};
-
 static struct snd_soc_dai_link simtec_dai_aic33 = {
 	.name		= "tlv320aic33",
 	.stream_name	= "TLV320AIC33",
-	.cpu_dai	= &s3c24xx_i2s_dai,
-	.codec_dai	= &aic3x_dai,
+	.codec_name	= "tlv320aic3x-codec.0-0x1a",
+	.cpu_dai_name	= "s3c24xx-i2s",
+	.codec_dai_name = "tlv320aic3x-hifi",
+	.platform_name	= "s3c24xx-pcm-audio",
 	.init		= simtec_hermes_init,
 };
 
 /* simtec audio machine driver */
 static struct snd_soc_card snd_soc_machine_simtec_aic33 = {
 	.name		= "Simtec-Hermes",
-	.platform	= &s3c24xx_soc_platform,
 	.dai_link	= &simtec_dai_aic33,
 	.num_links	= 1,
 };
 
-/* simtec audio subsystem */
-static struct snd_soc_device simtec_snd_devdata_aic33 = {
-	.card		= &snd_soc_machine_simtec_aic33,
-	.codec_dev	= &soc_codec_dev_aic3x,
-	.codec_data	= &codec_setup,
-};
-
 static int __devinit simtec_audio_hermes_probe(struct platform_device *pd)
 {
 	dev_info(&pd->dev, "probing....\n");
-	return simtec_audio_core_probe(pd, &simtec_snd_devdata_aic33);
+	return simtec_audio_core_probe(pd, &snd_soc_machine_simtec_aic33);
 }
 
 static struct platform_driver simtec_audio_hermes_platdrv = {
diff --git a/sound/soc/s3c24xx/s3c24xx_simtec_tlv320aic23.c b/sound/soc/s3c24xx/s3c24xx_simtec_tlv320aic23.c
index 185c0ac..c096759 100644
--- a/sound/soc/s3c24xx/s3c24xx_simtec_tlv320aic23.c
+++ b/sound/soc/s3c24xx/s3c24xx_simtec_tlv320aic23.c
@@ -62,8 +62,10 @@
  * Attach our controls and configure the necessary codec
  * mappings for our sound card instance.
 */
-static int simtec_tlv320aic23_init(struct snd_soc_codec *codec)
+static int simtec_tlv320aic23_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+
 	snd_soc_dapm_new_controls(codec, dapm_widgets,
 				  ARRAY_SIZE(dapm_widgets));
 
@@ -74,7 +76,7 @@
 	snd_soc_dapm_enable_pin(codec, "Line Out");
 	snd_soc_dapm_enable_pin(codec, "Mic Jack");
 
-	simtec_audio_init(codec);
+	simtec_audio_init(rtd);
 	snd_soc_dapm_sync(codec);
 
 	return 0;
@@ -83,28 +85,23 @@
 static struct snd_soc_dai_link simtec_dai_aic23 = {
 	.name		= "tlv320aic23",
 	.stream_name	= "TLV320AIC23",
-	.cpu_dai	= &s3c24xx_i2s_dai,
-	.codec_dai	= &tlv320aic23_dai,
+	.codec_name	= "tlv320aic3x-codec.0-0x1a",
+	.cpu_dai_name	= "s3c24xx-i2s",
+	.codec_dai_name = "tlv320aic3x-hifi",
+	.platform_name	= "s3c24xx-pcm-audio",
 	.init		= simtec_tlv320aic23_init,
 };
 
 /* simtec audio machine driver */
 static struct snd_soc_card snd_soc_machine_simtec_aic23 = {
 	.name		= "Simtec",
-	.platform	= &s3c24xx_soc_platform,
 	.dai_link	= &simtec_dai_aic23,
 	.num_links	= 1,
 };
 
-/* simtec audio subsystem */
-static struct snd_soc_device simtec_snd_devdata_aic23 = {
-	.card		= &snd_soc_machine_simtec_aic23,
-	.codec_dev	= &soc_codec_dev_tlv320aic23,
-};
-
 static int __devinit simtec_audio_tlv320aic23_probe(struct platform_device *pd)
 {
-	return simtec_audio_core_probe(pd, &simtec_snd_devdata_aic23);
+	return simtec_audio_core_probe(pd, &snd_soc_machine_simtec_aic23);
 }
 
 static struct platform_driver simtec_audio_tlv320aic23_platdrv = {
diff --git a/sound/soc/s3c24xx/s3c24xx_uda134x.c b/sound/soc/s3c24xx/s3c24xx_uda134x.c
index 052d596..bd48ffb 100644
--- a/sound/soc/s3c24xx/s3c24xx_uda134x.c
+++ b/sound/soc/s3c24xx/s3c24xx_uda134x.c
@@ -133,8 +133,8 @@
 					struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	unsigned int clk = 0;
 	int ret = 0;
 	int clk_source, fs_mode;
@@ -227,14 +227,15 @@
 static struct snd_soc_dai_link s3c24xx_uda134x_dai_link = {
 	.name = "UDA134X",
 	.stream_name = "UDA134X",
-	.codec_dai = &uda134x_dai,
-	.cpu_dai = &s3c24xx_i2s_dai,
+	.codec_name = "uda134x-hifi",
+	.codec_dai_name = "uda134x-hifi",
+	.cpu_dai_name = "s3c24xx-i2s",
 	.ops = &s3c24xx_uda134x_ops,
+	.platform_name	= "s3c24xx-pcm-audio",
 };
 
 static struct snd_soc_card snd_soc_s3c24xx_uda134x = {
 	.name = "S3C24XX_UDA134X",
-	.platform = &s3c24xx_soc_platform,
 	.dai_link = &s3c24xx_uda134x_dai_link,
 	.num_links = 1,
 };
@@ -256,6 +257,7 @@
 	gpio_set_value(s3c24xx_uda134x_l3_pins->l3_mode, v > 0);
 }
 
+/* FIXME - This must be codec platform data but in which board file ?? */
 static struct uda134x_platform_data s3c24xx_uda134x = {
 	.l3 = {
 		.setdat = setdat,
@@ -270,12 +272,6 @@
 	},
 };
 
-static struct snd_soc_device s3c24xx_uda134x_snd_devdata = {
-	.card = &snd_soc_s3c24xx_uda134x,
-	.codec_dev = &soc_codec_dev_uda134x,
-	.codec_data = &s3c24xx_uda134x,
-};
-
 static int s3c24xx_uda134x_setup_pin(int pin, char *fun)
 {
 	if (gpio_request(pin, "s3c24xx_uda134x") < 0) {
@@ -325,8 +321,7 @@
 	}
 
 	platform_set_drvdata(s3c24xx_uda134x_snd_device,
-			     &s3c24xx_uda134x_snd_devdata);
-	s3c24xx_uda134x_snd_devdata.dev = &s3c24xx_uda134x_snd_device->dev;
+			     &snd_soc_s3c24xx_uda134x);
 	ret = platform_device_add(s3c24xx_uda134x_snd_device);
 	if (ret) {
 		printk(KERN_ERR "S3C24XX_UDA134X SoC Audio: Unable to add\n");
diff --git a/sound/soc/s3c24xx/s3c64xx-i2s-v4.c b/sound/soc/s3c24xx/s3c64xx-i2s-v4.c
index 06db130..a962847 100644
--- a/sound/soc/s3c24xx/s3c64xx-i2s-v4.c
+++ b/sound/soc/s3c24xx/s3c64xx-i2s-v4.c
@@ -16,9 +16,7 @@
 #include <sound/soc.h>
 #include <sound/pcm_params.h>
 
-#include <mach/gpio-bank-c.h>
-#include <mach/gpio-bank-h.h>
-#include <plat/gpio-cfg.h>
+#include <plat/audio.h>
 
 #include <mach/map.h>
 #include <mach/dma.h>
@@ -39,34 +37,23 @@
 static struct s3c_dma_params s3c64xx_i2sv4_pcm_stereo_in;
 static struct s3c_i2sv2_info s3c64xx_i2sv4;
 
-struct snd_soc_dai s3c64xx_i2s_v4_dai;
-EXPORT_SYMBOL_GPL(s3c64xx_i2s_v4_dai);
-
-static inline struct s3c_i2sv2_info *to_info(struct snd_soc_dai *cpu_dai)
+static int s3c64xx_i2sv4_probe(struct snd_soc_dai *dai)
 {
-	return cpu_dai->private_data;
-}
+	struct s3c_i2sv2_info *i2s = &s3c64xx_i2sv4;
+	int ret = 0;
 
-static int s3c64xx_i2sv4_probe(struct platform_device *pdev,
-			     struct snd_soc_dai *dai)
-{
-	/* configure GPIO for i2s port */
-	s3c_gpio_cfgpin(S3C64XX_GPC(4), S3C64XX_GPC4_I2S_V40_DO0);
-	s3c_gpio_cfgpin(S3C64XX_GPC(5), S3C64XX_GPC5_I2S_V40_DO1);
-	s3c_gpio_cfgpin(S3C64XX_GPC(7), S3C64XX_GPC7_I2S_V40_DO2);
-	s3c_gpio_cfgpin(S3C64XX_GPH(6), S3C64XX_GPH6_I2S_V40_BCLK);
-	s3c_gpio_cfgpin(S3C64XX_GPH(7), S3C64XX_GPH7_I2S_V40_CDCLK);
-	s3c_gpio_cfgpin(S3C64XX_GPH(8), S3C64XX_GPH8_I2S_V40_LRCLK);
-	s3c_gpio_cfgpin(S3C64XX_GPH(9), S3C64XX_GPH9_I2S_V40_DI);
+	snd_soc_dai_set_drvdata(dai, i2s);
 
-	return 0;
+	ret = s3c_i2sv2_probe(dai, i2s, i2s->base);
+
+	return ret;
 }
 
 static int s3c_i2sv4_hw_params(struct snd_pcm_substream *substream,
 				 struct snd_pcm_hw_params *params,
 				 struct snd_soc_dai *cpu_dai)
 {
-	struct s3c_i2sv2_info *i2s = to_info(cpu_dai);
+	struct s3c_i2sv2_info *i2s = snd_soc_dai_get_drvdata(cpu_dai);
 	struct s3c_dma_params *dma_data;
 	u32 iismod;
 
@@ -104,51 +91,79 @@
 	.hw_params	= s3c_i2sv4_hw_params,
 };
 
+static struct snd_soc_dai_driver s3c64xx_i2s_v4_dai = {
+	.symmetric_rates = 1,
+	.playback = {
+		.channels_min = 2,
+		.channels_max = 2,
+		.rates = S3C64XX_I2S_RATES,
+		.formats = S3C64XX_I2S_FMTS,
+	},
+	.capture = {
+		.channels_min = 2,
+		.channels_max = 2,
+		.rates = S3C64XX_I2S_RATES,
+		.formats = S3C64XX_I2S_FMTS,
+	},
+	.probe = s3c64xx_i2sv4_probe,
+	.ops = &s3c64xx_i2sv4_dai_ops,
+};
+
 static __devinit int s3c64xx_i2sv4_dev_probe(struct platform_device *pdev)
 {
+	struct s3c_audio_pdata *i2s_pdata;
 	struct s3c_i2sv2_info *i2s;
-	struct snd_soc_dai *dai;
+	struct resource *res;
 	int ret;
 
 	i2s = &s3c64xx_i2sv4;
-	dai = &s3c64xx_i2s_v4_dai;
-
-	if (dai->dev) {
-		dev_dbg(dai->dev, "%s: \
-			I2Sv4 instance already registered!\n", __func__);
-		return -EBUSY;
-	}
-
-	dai->dev = &pdev->dev;
-	dai->name = "s3c64xx-i2s-v4";
-	dai->id = 0;
-	dai->symmetric_rates = 1;
-	dai->playback.channels_min = 2;
-	dai->playback.channels_max = 2;
-	dai->playback.rates = S3C64XX_I2S_RATES;
-	dai->playback.formats = S3C64XX_I2S_FMTS;
-	dai->capture.channels_min = 2;
-	dai->capture.channels_max = 2;
-	dai->capture.rates = S3C64XX_I2S_RATES;
-	dai->capture.formats = S3C64XX_I2S_FMTS;
-	dai->probe = s3c64xx_i2sv4_probe;
-	dai->ops = &s3c64xx_i2sv4_dai_ops;
 
 	i2s->feature |= S3C_FEATURE_CDCLKCON;
 
 	i2s->dma_capture = &s3c64xx_i2sv4_pcm_stereo_in;
 	i2s->dma_playback = &s3c64xx_i2sv4_pcm_stereo_out;
 
-	i2s->dma_capture->channel = DMACH_HSI_I2SV40_RX;
-	i2s->dma_capture->dma_addr = S3C64XX_PA_IISV4 + S3C2412_IISRXD;
-	i2s->dma_playback->channel = DMACH_HSI_I2SV40_TX;
-	i2s->dma_playback->dma_addr = S3C64XX_PA_IISV4 + S3C2412_IISTXD;
+	res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
+	if (!res) {
+		dev_err(&pdev->dev, "Unable to get I2S-TX dma resource\n");
+		return -ENXIO;
+	}
+	i2s->dma_playback->channel = res->start;
+
+	res = platform_get_resource(pdev, IORESOURCE_DMA, 1);
+	if (!res) {
+		dev_err(&pdev->dev, "Unable to get I2S-RX dma resource\n");
+		return -ENXIO;
+	}
+	i2s->dma_capture->channel = res->start;
+
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!res) {
+		dev_err(&pdev->dev, "Unable to get I2S SFR address\n");
+		return -ENXIO;
+	}
+
+	if (!request_mem_region(res->start, resource_size(res),
+				"s3c64xx-i2s-v4")) {
+		dev_err(&pdev->dev, "Unable to request SFR region\n");
+		return -EBUSY;
+	}
+	i2s->dma_capture->dma_addr = res->start + S3C2412_IISRXD;
+	i2s->dma_playback->dma_addr = res->start + S3C2412_IISTXD;
 
 	i2s->dma_capture->client = &s3c64xx_dma_client_in;
 	i2s->dma_capture->dma_size = 4;
 	i2s->dma_playback->client = &s3c64xx_dma_client_out;
 	i2s->dma_playback->dma_size = 4;
 
+	i2s->base = res->start;
+
+	i2s_pdata = pdev->dev.platform_data;
+	if (i2s_pdata && i2s_pdata->cfg_gpio && i2s_pdata->cfg_gpio(pdev)) {
+		dev_err(&pdev->dev, "Unable to configure gpio\n");
+		return -EINVAL;
+	}
+
 	i2s->iis_cclk = clk_get(&pdev->dev, "audio-bus");
 	if (IS_ERR(i2s->iis_cclk)) {
 		dev_err(&pdev->dev, "failed to get audio-bus\n");
@@ -158,19 +173,13 @@
 
 	clk_enable(i2s->iis_cclk);
 
-	ret = s3c_i2sv2_probe(pdev, dai, i2s, 0);
-	if (ret)
-		goto err_clk;
-
-	ret = s3c_i2sv2_register_dai(dai);
+	ret = s3c_i2sv2_register_dai(&pdev->dev, pdev->id, &s3c64xx_i2s_v4_dai);
 	if (ret != 0)
 		goto err_i2sv2;
 
 	return 0;
 
 err_i2sv2:
-	/* Not implemented for I2Sv2 core yet */
-err_clk:
 	clk_put(i2s->iis_cclk);
 err:
 	return ret;
@@ -178,7 +187,18 @@
 
 static __devexit int s3c64xx_i2sv4_dev_remove(struct platform_device *pdev)
 {
-	dev_err(&pdev->dev, "Device removal not yet supported\n");
+	struct s3c_i2sv2_info *i2s = &s3c64xx_i2sv4;
+	struct resource *res;
+
+	snd_soc_unregister_dai(&pdev->dev);
+	clk_put(i2s->iis_cclk);
+
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (res)
+		release_mem_region(res->start, resource_size(res));
+	else
+		dev_warn(&pdev->dev, "Unable to get I2S SFR address\n");
+		
 	return 0;
 }
 
@@ -207,3 +227,4 @@
 MODULE_AUTHOR("Jaswinder Singh, <jassi.brar@samsung.com>");
 MODULE_DESCRIPTION("S3C64XX I2Sv4 SoC Interface");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:s3c64xx-iis-v4");
diff --git a/sound/soc/s3c24xx/s3c64xx-i2s.c b/sound/soc/s3c24xx/s3c64xx-i2s.c
index 1d85cb8..ae7acb6 100644
--- a/sound/soc/s3c24xx/s3c64xx-i2s.c
+++ b/sound/soc/s3c24xx/s3c64xx-i2s.c
@@ -12,15 +12,15 @@
  * published by the Free Software Foundation.
  */
 
+#include <linux/module.h>
 #include <linux/clk.h>
 #include <linux/gpio.h>
 #include <linux/io.h>
+#include <linux/slab.h>
 
 #include <sound/soc.h>
 
-#include <mach/gpio-bank-d.h>
-#include <mach/gpio-bank-e.h>
-#include <plat/gpio-cfg.h>
+#include <plat/audio.h>
 
 #include <mach/map.h>
 #include <mach/dma.h>
@@ -46,45 +46,107 @@
 static struct s3c_dma_params s3c64xx_i2s_pcm_stereo_in[MAX_I2SV3];
 static struct s3c_i2sv2_info s3c64xx_i2s[MAX_I2SV3];
 
-struct snd_soc_dai s3c64xx_i2s_dai[MAX_I2SV3];
-EXPORT_SYMBOL_GPL(s3c64xx_i2s_dai);
-
-static inline struct s3c_i2sv2_info *to_info(struct snd_soc_dai *cpu_dai)
+struct clk *s3c64xx_i2s_get_clock(struct snd_soc_dai *dai)
 {
-	return cpu_dai->private_data;
+	struct s3c_i2sv2_info *i2s = snd_soc_dai_get_drvdata(dai);
+	u32 iismod = readl(i2s->regs + S3C2412_IISMOD);
+
+	if (iismod & S3C2412_IISMOD_IMS_SYSMUX)
+		return i2s->iis_cclk;
+	else
+		return i2s->iis_pclk;
 }
+EXPORT_SYMBOL_GPL(s3c64xx_i2s_get_clock);
 
-static int s3c64xx_i2s_probe(struct platform_device *pdev,
-			     struct snd_soc_dai *dai)
+static int s3c64xx_i2s_probe(struct snd_soc_dai *dai)
 {
-	/* configure GPIO for i2s port */
-	switch (dai->id) {
-	case 0:
-		s3c_gpio_cfgpin(S3C64XX_GPD(0), S3C64XX_GPD0_I2S0_CLK);
-		s3c_gpio_cfgpin(S3C64XX_GPD(1), S3C64XX_GPD1_I2S0_CDCLK);
-		s3c_gpio_cfgpin(S3C64XX_GPD(2), S3C64XX_GPD2_I2S0_LRCLK);
-		s3c_gpio_cfgpin(S3C64XX_GPD(3), S3C64XX_GPD3_I2S0_DI);
-		s3c_gpio_cfgpin(S3C64XX_GPD(4), S3C64XX_GPD4_I2S0_D0);
-		break;
-	case 1:
-		s3c_gpio_cfgpin(S3C64XX_GPE(0), S3C64XX_GPE0_I2S1_CLK);
-		s3c_gpio_cfgpin(S3C64XX_GPE(1), S3C64XX_GPE1_I2S1_CDCLK);
-		s3c_gpio_cfgpin(S3C64XX_GPE(2), S3C64XX_GPE2_I2S1_LRCLK);
-		s3c_gpio_cfgpin(S3C64XX_GPE(3), S3C64XX_GPE3_I2S1_DI);
-		s3c_gpio_cfgpin(S3C64XX_GPE(4), S3C64XX_GPE4_I2S1_D0);
+	struct s3c_i2sv2_info *i2s;
+	int ret;
+
+	if (dai->id >= MAX_I2SV3) {
+		dev_err(dai->dev, "id %d out of range\n", dai->id);
+		return -EINVAL;
 	}
 
+	i2s = &s3c64xx_i2s[dai->id];
+	snd_soc_dai_set_drvdata(dai, i2s);
+
+	i2s->iis_cclk = clk_get(dai->dev, "audio-bus");
+	if (IS_ERR(i2s->iis_cclk)) {
+		dev_err(dai->dev, "failed to get audio-bus\n");
+		ret = PTR_ERR(i2s->iis_cclk);
+		goto err;
+	}
+
+	clk_enable(i2s->iis_cclk);
+
+	ret = s3c_i2sv2_probe(dai, i2s, i2s->base);
+	if (ret)
+		goto err_clk;
+
+	return 0;
+
+err_clk:
+	clk_disable(i2s->iis_cclk);
+	clk_put(i2s->iis_cclk);
+err:
+	kfree(i2s);
+	return ret;
+}
+
+static int s3c64xx_i2s_remove(struct snd_soc_dai *dai)
+{
+	struct s3c_i2sv2_info *i2s = snd_soc_dai_get_drvdata(dai);
+
+	clk_disable(i2s->iis_cclk);
+	clk_put(i2s->iis_cclk);
+	kfree(i2s);
 	return 0;
 }
 
-
 static struct snd_soc_dai_ops s3c64xx_i2s_dai_ops;
 
+static struct snd_soc_dai_driver s3c64xx_i2s_dai[MAX_I2SV3] = {
+{
+	.name = "s3c64xx-i2s-0",
+	.probe = s3c64xx_i2s_probe,
+	.remove = s3c64xx_i2s_remove,
+	.playback = {
+		.channels_min = 2,
+		.channels_max = 2,
+		.rates = S3C64XX_I2S_RATES,
+		.formats = S3C64XX_I2S_FMTS,},
+	.capture = {
+		.channels_min = 2,
+		.channels_max = 2,
+		.rates = S3C64XX_I2S_RATES,
+		.formats = S3C64XX_I2S_FMTS,},
+	.ops = &s3c64xx_i2s_dai_ops,
+	.symmetric_rates = 1,
+}, {
+	.name = "s3c64xx-i2s-1",
+	.probe = s3c64xx_i2s_probe,
+	.remove = s3c64xx_i2s_remove,
+	.playback = {
+		.channels_min = 2,
+		.channels_max = 2,
+		.rates = S3C64XX_I2S_RATES,
+		.formats = S3C64XX_I2S_FMTS,},
+	.capture = {
+		.channels_min = 2,
+		.channels_max = 2,
+		.rates = S3C64XX_I2S_RATES,
+		.formats = S3C64XX_I2S_FMTS,},
+	.ops = &s3c64xx_i2s_dai_ops,
+	.symmetric_rates = 1,
+},};
+
 static __devinit int s3c64xx_iis_dev_probe(struct platform_device *pdev)
 {
+	struct s3c_audio_pdata *i2s_pdata;
 	struct s3c_i2sv2_info *i2s;
-	struct snd_soc_dai *dai;
-	int ret;
+	struct resource *res;
+	int i, ret;
 
 	if (pdev->id >= MAX_I2SV3) {
 		dev_err(&pdev->dev, "id %d out of range\n", pdev->id);
@@ -92,74 +154,63 @@
 	}
 
 	i2s = &s3c64xx_i2s[pdev->id];
-	dai = &s3c64xx_i2s_dai[pdev->id];
-	dai->dev = &pdev->dev;
-	dai->name = "s3c64xx-i2s";
-	dai->id = pdev->id;
-	dai->symmetric_rates = 1;
-	dai->playback.channels_min = 2;
-	dai->playback.channels_max = 2;
-	dai->playback.rates = S3C64XX_I2S_RATES;
-	dai->playback.formats = S3C64XX_I2S_FMTS;
-	dai->capture.channels_min = 2;
-	dai->capture.channels_max = 2;
-	dai->capture.rates = S3C64XX_I2S_RATES;
-	dai->capture.formats = S3C64XX_I2S_FMTS;
-	dai->probe = s3c64xx_i2s_probe;
-	dai->ops = &s3c64xx_i2s_dai_ops;
-
-	i2s->feature |= S3C_FEATURE_CDCLKCON;
 
 	i2s->dma_capture = &s3c64xx_i2s_pcm_stereo_in[pdev->id];
 	i2s->dma_playback = &s3c64xx_i2s_pcm_stereo_out[pdev->id];
 
-	if (pdev->id == 0) {
-		i2s->dma_capture->channel = DMACH_I2S0_IN;
-		i2s->dma_capture->dma_addr = S3C64XX_PA_IIS0 + S3C2412_IISRXD;
-		i2s->dma_playback->channel = DMACH_I2S0_OUT;
-		i2s->dma_playback->dma_addr = S3C64XX_PA_IIS0 + S3C2412_IISTXD;
-	} else {
-		i2s->dma_capture->channel = DMACH_I2S1_IN;
-		i2s->dma_capture->dma_addr = S3C64XX_PA_IIS1 + S3C2412_IISRXD;
-		i2s->dma_playback->channel = DMACH_I2S1_OUT;
-		i2s->dma_playback->dma_addr = S3C64XX_PA_IIS1 + S3C2412_IISTXD;
+	res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
+	if (!res) {
+		dev_err(&pdev->dev, "Unable to get I2S-TX dma resource\n");
+		return -ENXIO;
 	}
+	i2s->dma_playback->channel = res->start;
+
+	res = platform_get_resource(pdev, IORESOURCE_DMA, 1);
+	if (!res) {
+		dev_err(&pdev->dev, "Unable to get I2S-RX dma resource\n");
+		return -ENXIO;
+	}
+	i2s->dma_capture->channel = res->start;
+
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!res) {
+		dev_err(&pdev->dev, "Unable to get I2S SFR address\n");
+		return -ENXIO;
+	}
+
+	if (!request_mem_region(res->start, resource_size(res),
+				"s3c64xx-i2s")) {
+		dev_err(&pdev->dev, "Unable to request SFR region\n");
+		return -EBUSY;
+	}
+	i2s->base = res->start;
+
+	i2s_pdata = pdev->dev.platform_data;
+	if (i2s_pdata && i2s_pdata->cfg_gpio && i2s_pdata->cfg_gpio(pdev)) {
+		dev_err(&pdev->dev, "Unable to configure gpio\n");
+		return -EINVAL;
+	}
+	i2s->dma_capture->dma_addr = res->start + S3C2412_IISRXD;
+	i2s->dma_playback->dma_addr = res->start + S3C2412_IISTXD;
 
 	i2s->dma_capture->client = &s3c64xx_dma_client_in;
 	i2s->dma_capture->dma_size = 4;
 	i2s->dma_playback->client = &s3c64xx_dma_client_out;
 	i2s->dma_playback->dma_size = 4;
 
-	i2s->iis_cclk = clk_get(&pdev->dev, "audio-bus");
-	if (IS_ERR(i2s->iis_cclk)) {
-		dev_err(&pdev->dev, "failed to get audio-bus\n");
-		ret = PTR_ERR(i2s->iis_cclk);
-		goto err;
+	for (i = 0; i < ARRAY_SIZE(s3c64xx_i2s_dai); i++) {
+		ret = s3c_i2sv2_register_dai(&pdev->dev, i,
+						&s3c64xx_i2s_dai[i]);
+		if (ret != 0)
+			return ret;
 	}
 
-	clk_enable(i2s->iis_cclk);
-
-	ret = s3c_i2sv2_probe(pdev, dai, i2s, 0);
-	if (ret)
-		goto err_clk;
-
-	ret = s3c_i2sv2_register_dai(dai);
-	if (ret != 0)
-		goto err_i2sv2;
-
 	return 0;
-
-err_i2sv2:
-	/* Not implemented for I2Sv2 core yet */
-err_clk:
-	clk_put(i2s->iis_cclk);
-err:
-	return ret;
 }
 
 static __devexit int s3c64xx_iis_dev_remove(struct platform_device *pdev)
 {
-	dev_err(&pdev->dev, "Device removal not yet supported\n");
+	snd_soc_unregister_dais(&pdev->dev, ARRAY_SIZE(s3c64xx_i2s_dai));
 	return 0;
 }
 
@@ -188,3 +239,4 @@
 MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>");
 MODULE_DESCRIPTION("S3C64XX I2S SoC Interface");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:s3c64xx-iis");
diff --git a/sound/soc/s3c24xx/s3c64xx-i2s.h b/sound/soc/s3c24xx/s3c64xx-i2s.h
index 7a40f43..de4075d 100644
--- a/sound/soc/s3c24xx/s3c64xx-i2s.h
+++ b/sound/soc/s3c24xx/s3c64xx-i2s.h
@@ -36,7 +36,6 @@
 	(SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE |\
 	 SNDRV_PCM_FMTBIT_S24_LE)
 
-extern struct snd_soc_dai s3c64xx_i2s_dai[];
-extern struct snd_soc_dai s3c64xx_i2s_v4_dai;
+struct clk *s3c64xx_i2s_get_clock(struct snd_soc_dai *dai);
 
 #endif /* __SND_SOC_S3C24XX_S3C64XX_I2S_H */
diff --git a/sound/soc/s3c24xx/smartq_wm8987.c b/sound/soc/s3c24xx/smartq_wm8987.c
index b480348..dd20ca7 100644
--- a/sound/soc/s3c24xx/smartq_wm8987.c
+++ b/sound/soc/s3c24xx/smartq_wm8987.c
@@ -211,8 +211,10 @@
 	{
 		.name		= "wm8987",
 		.stream_name	= "SmartQ Hi-Fi",
-		.cpu_dai	= &s3c64xx_i2s_dai[0],
-		.codec_dai	= &wm8750_dai,
+		.cpu_dai_name	= "s3c64xx-i2s.0",
+		.codec_dai_name	= "wm8750-hifi",
+		.platform_name	= "s3c24xx-pcm-audio",
+		.codec_name	= "wm8750-codec.0-0x1a",
 		.init		= smartq_wm8987_init,
 		.ops		= &smartq_hifi_ops,
 	},
@@ -220,16 +222,10 @@
 
 static struct snd_soc_card snd_soc_smartq = {
 	.name = "SmartQ",
-	.platform = &s3c24xx_soc_platform,
 	.dai_link = smartq_dai,
 	.num_links = ARRAY_SIZE(smartq_dai),
 };
 
-static struct snd_soc_device smartq_snd_devdata = {
-	.card = &snd_soc_smartq,
-	.codec_dev = &soc_codec_dev_wm8750,
-};
-
 static struct platform_device *smartq_snd_device;
 
 static int __init smartq_init(void)
@@ -245,8 +241,7 @@
 	if (!smartq_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(smartq_snd_device, &smartq_snd_devdata);
-	smartq_snd_devdata.dev = &smartq_snd_device->dev;
+	platform_set_drvdata(smartq_snd_device, &snd_soc_smartq);
 
 	ret = platform_device_add(smartq_snd_device);
 	if (ret) {
diff --git a/sound/soc/s3c24xx/smdk2443_wm9710.c b/sound/soc/s3c24xx/smdk2443_wm9710.c
index 3622588..4613288 100644
--- a/sound/soc/s3c24xx/smdk2443_wm9710.c
+++ b/sound/soc/s3c24xx/smdk2443_wm9710.c
@@ -19,7 +19,6 @@
 #include <sound/soc.h>
 #include <sound/soc-dapm.h>
 
-#include "../codecs/ac97.h"
 #include "s3c-dma.h"
 #include "s3c-ac97.h"
 
@@ -29,23 +28,19 @@
 {
 	.name = "AC97",
 	.stream_name = "AC97 HiFi",
-	.cpu_dai = &s3c_ac97_dai[S3C_AC97_DAI_PCM],
-	.codec_dai = &ac97_dai,
+	.cpu_dai_name = "s3c-ac97",
+	.codec_dai_name = "ac97-hifi",
+	.codec_name = "ac97-codec",
+	.platform_name = "s3c24xx-pcm-audio",
 },
 };
 
 static struct snd_soc_card smdk2443 = {
 	.name = "SMDK2443",
-	.platform = &s3c24xx_soc_platform,
 	.dai_link = smdk2443_dai,
 	.num_links = ARRAY_SIZE(smdk2443_dai),
 };
 
-static struct snd_soc_device smdk2443_snd_ac97_devdata = {
-	.card = &smdk2443,
-	.codec_dev = &soc_codec_dev_ac97,
-};
-
 static struct platform_device *smdk2443_snd_ac97_device;
 
 static int __init smdk2443_init(void)
@@ -56,9 +51,7 @@
 	if (!smdk2443_snd_ac97_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(smdk2443_snd_ac97_device,
-				&smdk2443_snd_ac97_devdata);
-	smdk2443_snd_ac97_devdata.dev = &smdk2443_snd_ac97_device->dev;
+	platform_set_drvdata(smdk2443_snd_ac97_device, &smdk2443);
 	ret = platform_device_add(smdk2443_snd_ac97_device);
 
 	if (ret)
diff --git a/sound/soc/s3c24xx/smdk64xx_wm8580.c b/sound/soc/s3c24xx/smdk64xx_wm8580.c
index 07e8e51..052e499 100644
--- a/sound/soc/s3c24xx/smdk64xx_wm8580.c
+++ b/sound/soc/s3c24xx/smdk64xx_wm8580.c
@@ -22,6 +22,12 @@
 #include "s3c-dma.h"
 #include "s3c64xx-i2s.h"
 
+/*
+ * Default CFG switch settings to use this driver:
+ *
+ *   SMDK6410: Set CFG1 1-3 Off, CFG2 1-4 On
+ */
+
 /* SMDK64XX has a 12MHZ crystal attached to WM8580 */
 #define SMDK64XX_WM8580_FREQ 12000000
 
@@ -29,8 +35,8 @@
 	struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 	unsigned int pll_out;
 	int bfs, rfs, ret;
 
@@ -107,14 +113,13 @@
 	if (ret < 0)
 		return ret;
 
-	/* Explicitly set WM8580-DAC to source from MCLK */
-	ret = snd_soc_dai_set_clkdiv(codec_dai, WM8580_DAC_CLKSEL,
-					WM8580_CLKSRC_MCLK);
+	ret = snd_soc_dai_set_pll(codec_dai, WM8580_PLLA, 0,
+					SMDK64XX_WM8580_FREQ, pll_out);
 	if (ret < 0)
 		return ret;
 
-	ret = snd_soc_dai_set_pll(codec_dai, WM8580_PLLA, 0,
-					SMDK64XX_WM8580_FREQ, pll_out);
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8580_CLKSRC_PLLA,
+				     pll_out, SND_SOC_CLOCK_IN);
 	if (ret < 0)
 		return ret;
 
@@ -138,9 +143,9 @@
 
 /* SMDK64xx Playback widgets */
 static const struct snd_soc_dapm_widget wm8580_dapm_widgets_pbk[] = {
-	SND_SOC_DAPM_HP("Front-L/R", NULL),
-	SND_SOC_DAPM_HP("Center/Sub", NULL),
-	SND_SOC_DAPM_HP("Rear-L/R", NULL),
+	SND_SOC_DAPM_HP("Front", NULL),
+	SND_SOC_DAPM_HP("Center+Sub", NULL),
+	SND_SOC_DAPM_HP("Rear", NULL),
 };
 
 /* SMDK64xx Capture widgets */
@@ -162,20 +167,22 @@
 /* SMDK-PAIFRX connections */
 static const struct snd_soc_dapm_route audio_map_rx[] = {
 	/* Front Left/Right are fed VOUT1L/R */
-	{"Front-L/R", NULL, "VOUT1L"},
-	{"Front-L/R", NULL, "VOUT1R"},
+	{"Front", NULL, "VOUT1L"},
+	{"Front", NULL, "VOUT1R"},
 
 	/* Center/Sub are fed VOUT2L/R */
-	{"Center/Sub", NULL, "VOUT2L"},
-	{"Center/Sub", NULL, "VOUT2R"},
+	{"Center+Sub", NULL, "VOUT2L"},
+	{"Center+Sub", NULL, "VOUT2R"},
 
 	/* Rear Left/Right are fed VOUT3L/R */
-	{"Rear-L/R", NULL, "VOUT3L"},
-	{"Rear-L/R", NULL, "VOUT3R"},
+	{"Rear", NULL, "VOUT3L"},
+	{"Rear", NULL, "VOUT3R"},
 };
 
-static int smdk64xx_wm8580_init_paiftx(struct snd_soc_codec *codec)
+static int smdk64xx_wm8580_init_paiftx(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+
 	/* Add smdk64xx specific Capture widgets */
 	snd_soc_dapm_new_controls(codec, wm8580_dapm_widgets_cpt,
 				  ARRAY_SIZE(wm8580_dapm_widgets_cpt));
@@ -194,8 +201,10 @@
 	return 0;
 }
 
-static int smdk64xx_wm8580_init_paifrx(struct snd_soc_codec *codec)
+static int smdk64xx_wm8580_init_paifrx(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+
 	/* Add smdk64xx specific Playback widgets */
 	snd_soc_dapm_new_controls(codec, wm8580_dapm_widgets_pbk,
 				  ARRAY_SIZE(wm8580_dapm_widgets_pbk));
@@ -213,33 +222,31 @@
 { /* Primary Playback i/f */
 	.name = "WM8580 PAIF RX",
 	.stream_name = "Playback",
-	.cpu_dai = &s3c64xx_i2s_v4_dai,
-	.codec_dai = &wm8580_dai[WM8580_DAI_PAIFRX],
+	.cpu_dai_name = "s3c64xx-iis-v4",
+	.codec_dai_name = "wm8580-hifi-playback",
+	.platform_name = "s3c24xx-pcm-audio",
+	.codec_name = "wm8580-codec.0-001b",
 	.init = smdk64xx_wm8580_init_paifrx,
 	.ops = &smdk64xx_ops,
 },
 { /* Primary Capture i/f */
 	.name = "WM8580 PAIF TX",
 	.stream_name = "Capture",
-	.cpu_dai = &s3c64xx_i2s_v4_dai,
-	.codec_dai = &wm8580_dai[WM8580_DAI_PAIFTX],
+	.cpu_dai_name = "s3c64xx-iis-v4",
+	.codec_dai_name = "wm8580-hifi-capture",
+	.platform_name = "s3c24xx-pcm-audio",
+	.codec_name = "wm8580-codec.0-001b",
 	.init = smdk64xx_wm8580_init_paiftx,
 	.ops = &smdk64xx_ops,
 },
 };
 
 static struct snd_soc_card smdk64xx = {
-	.name = "smdk64xx",
-	.platform = &s3c24xx_soc_platform,
+	.name = "SMDK64xx 5.1",
 	.dai_link = smdk64xx_dai,
 	.num_links = ARRAY_SIZE(smdk64xx_dai),
 };
 
-static struct snd_soc_device smdk64xx_snd_devdata = {
-	.card = &smdk64xx,
-	.codec_dev = &soc_codec_dev_wm8580,
-};
-
 static struct platform_device *smdk64xx_snd_device;
 
 static int __init smdk64xx_audio_init(void)
@@ -250,8 +257,7 @@
 	if (!smdk64xx_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(smdk64xx_snd_device, &smdk64xx_snd_devdata);
-	smdk64xx_snd_devdata.dev = &smdk64xx_snd_device->dev;
+	platform_set_drvdata(smdk64xx_snd_device, &smdk64xx);
 	ret = platform_device_add(smdk64xx_snd_device);
 
 	if (ret)
diff --git a/sound/soc/s3c24xx/smdk_wm9713.c b/sound/soc/s3c24xx/smdk_wm9713.c
index 5527b9e..11086f8 100644
--- a/sound/soc/s3c24xx/smdk_wm9713.c
+++ b/sound/soc/s3c24xx/smdk_wm9713.c
@@ -46,40 +46,50 @@
 static struct snd_soc_dai_link smdk_dai = {
 	.name = "AC97",
 	.stream_name = "AC97 PCM",
-	.cpu_dai = &s3c_ac97_dai[S3C_AC97_DAI_PCM],
-	.codec_dai = &wm9713_dai[WM9713_DAI_AC97_HIFI],
+	.platform_name = "s3c24xx-pcm-audio",
+	.cpu_dai_name = "s3c-ac97",
+	.codec_dai_name = "wm9713-hifi",
+	.codec_name = "wm9713-codec",
 };
 
 static struct snd_soc_card smdk = {
 	.name = "SMDK",
-	.platform = &s3c24xx_soc_platform,
 	.dai_link = &smdk_dai,
 	.num_links = 1,
 };
 
-static struct snd_soc_device smdk_snd_ac97_devdata = {
-	.card = &smdk,
-	.codec_dev = &soc_codec_dev_wm9713,
-};
-
+static struct platform_device *smdk_snd_wm9713_device;
 static struct platform_device *smdk_snd_ac97_device;
 
 static int __init smdk_init(void)
 {
 	int ret;
 
-	smdk_snd_ac97_device = platform_device_alloc("soc-audio", -1);
-	if (!smdk_snd_ac97_device)
+	smdk_snd_wm9713_device = platform_device_alloc("wm9713-codec", -1);
+	if (!smdk_snd_wm9713_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(smdk_snd_ac97_device,
-			     &smdk_snd_ac97_devdata);
-	smdk_snd_ac97_devdata.dev = &smdk_snd_ac97_device->dev;
+	ret = platform_device_add(smdk_snd_wm9713_device);
+	if (ret)
+		goto err;
+
+	smdk_snd_ac97_device = platform_device_alloc("soc-audio", -1);
+	if (!smdk_snd_ac97_device) {
+		ret = -ENOMEM;
+		goto err;
+	}
+
+	platform_set_drvdata(smdk_snd_ac97_device, &smdk);
 
 	ret = platform_device_add(smdk_snd_ac97_device);
-	if (ret)
+	if (ret) {
 		platform_device_put(smdk_snd_ac97_device);
+		goto err;
+	}
 
+	return 0;
+err:
+	platform_device_put(smdk_snd_wm9713_device);
 	return ret;
 }
 
diff --git a/sound/soc/s6000/s6000-i2s.c b/sound/soc/s6000/s6000-i2s.c
index 59e3fa7..8778faa 100644
--- a/sound/soc/s6000/s6000-i2s.c
+++ b/sound/soc/s6000/s6000-i2s.c
@@ -140,7 +140,7 @@
 static void s6000_i2s_start(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct s6000_i2s_dev *dev = rtd->dai->cpu_dai->private_data;
+	struct s6000_i2s_dev *dev = snd_soc_dai_get_drvdata(rtd->cpu_dai);
 	int channel;
 
 	channel = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
@@ -152,7 +152,7 @@
 static void s6000_i2s_stop(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct s6000_i2s_dev *dev = rtd->dai->cpu_dai->private_data;
+	struct s6000_i2s_dev *dev = snd_soc_dai_get_drvdata(rtd->cpu_dai);
 	int channel;
 
 	channel = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
@@ -194,7 +194,7 @@
 
 static unsigned int s6000_i2s_check_xrun(struct snd_soc_dai *cpu_dai)
 {
-	struct s6000_i2s_dev *dev = cpu_dai->private_data;
+	struct s6000_i2s_dev *dev = snd_soc_dai_get_drvdata(cpu_dai);
 	unsigned int errors;
 	unsigned int ret;
 
@@ -232,7 +232,7 @@
 static int s6000_i2s_set_dai_fmt(struct snd_soc_dai *cpu_dai,
 				   unsigned int fmt)
 {
-	struct s6000_i2s_dev *dev = cpu_dai->private_data;
+	struct s6000_i2s_dev *dev = snd_soc_dai_get_drvdata(cpu_dai);
 	u32 w;
 
 	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
@@ -273,7 +273,7 @@
 
 static int s6000_i2s_set_clkdiv(struct snd_soc_dai *dai, int div_id, int div)
 {
-	struct s6000_i2s_dev *dev = dai->private_data;
+	struct s6000_i2s_dev *dev = snd_soc_dai_get_drvdata(dai);
 
 	if (!div || (div & 1) || div > (S6_I2S_DIV_MASK + 1) * 2)
 		return -EINVAL;
@@ -287,7 +287,7 @@
 			       struct snd_pcm_hw_params *params,
 			       struct snd_soc_dai *dai)
 {
-	struct s6000_i2s_dev *dev = dai->private_data;
+	struct s6000_i2s_dev *dev = snd_soc_dai_get_drvdata(dai);
 	int interf;
 	u32 w = 0;
 
@@ -326,15 +326,17 @@
 	return 0;
 }
 
-static int s6000_i2s_dai_probe(struct platform_device *pdev,
-			       struct snd_soc_dai *dai)
+static int s6000_i2s_dai_probe(struct snd_soc_dai *dai)
 {
-	struct s6000_i2s_dev *dev = dai->private_data;
-	struct s6000_snd_platform_data *pdata = pdev->dev.platform_data;
+	struct s6000_i2s_dev *dev = snd_soc_dai_get_drvdata(dai);
+	struct s6000_snd_platform_data *pdata = dai->dev->platform_data;
 
 	if (!pdata)
 		return -EINVAL;
 
+	dai->capture_dma_data = &dev->dma_params;
+	dai->playback_dma_data = &dev->dma_params;
+
 	dev->wide = pdata->wide;
 	dev->channel_in = pdata->channel_in;
 	dev->channel_out = pdata->channel_out;
@@ -352,10 +354,10 @@
 
 		dev->channel_in = 0;
 		dev->channel_out = 1;
-		dai->capture.channels_min = 2 * dev->lines_in;
-		dai->capture.channels_max = dai->capture.channels_min;
-		dai->playback.channels_min = 2 * dev->lines_out;
-		dai->playback.channels_max = dai->playback.channels_min;
+		dai->driver->capture.channels_min = 2 * dev->lines_in;
+		dai->driver->capture.channels_max = dai->driver->capture.channels_min;
+		dai->driver->playback.channels_min = 2 * dev->lines_out;
+		dai->driver->playback.channels_max = dai->driver->playback.channels_min;
 
 		for (i = 0; i < dev->lines_out; i++)
 			s6_i2s_write_reg(dev, S6_I2S_DATA_CFG(i), S6_I2S_OUT);
@@ -372,10 +374,10 @@
 		if (dev->lines_in > 1 || dev->lines_out > 1)
 			return -EINVAL;
 
-		dai->capture.channels_min = 2 * dev->lines_in;
-		dai->capture.channels_max = 8 * dev->lines_in;
-		dai->playback.channels_min = 2 * dev->lines_out;
-		dai->playback.channels_max = 8 * dev->lines_out;
+		dai->driver->capture.channels_min = 2 * dev->lines_in;
+		dai->driver->capture.channels_max = 8 * dev->lines_in;
+		dai->driver->playback.channels_min = 2 * dev->lines_out;
+		dai->driver->playback.channels_max = 8 * dev->lines_out;
 
 		if (dev->lines_in)
 			cfg[dev->channel_in] = S6_I2S_IN;
@@ -413,9 +415,7 @@
 	.hw_params = s6000_i2s_hw_params,
 };
 
-struct snd_soc_dai s6000_i2s_dai = {
-	.name = "s6000-i2s",
-	.id = 0,
+static struct snd_soc_dai_driver s6000_i2s_dai = {
 	.probe = s6000_i2s_dai_probe,
 	.playback = {
 		.channels_min = 2,
@@ -435,7 +435,6 @@
 	},
 	.ops = &s6000_i2s_dai_ops,
 }
-EXPORT_SYMBOL_GPL(s6000_i2s_dai);
 
 static int __devinit s6000_i2s_probe(struct platform_device *pdev)
 {
@@ -513,11 +512,7 @@
 		ret = -ENOMEM;
 		goto err_release_dma2;
 	}
-
-	s6000_i2s_dai.dev = &pdev->dev;
-	s6000_i2s_dai.private_data = dev;
-	s6000_i2s_dai.capture.dma_data = &dev->dma_params;
-	s6000_i2s_dai.playback.dma_data = &dev->dma_params;
+	dev_set_drvdata(&pdev->dev, dev);
 
 	dev->sifbase = sifmem->start;
 	dev->scbbase = mmio;
@@ -548,7 +543,7 @@
 			 S6_I2S_INT_UNDERRUN |
 			 S6_I2S_INT_OVERRUN);
 
-	ret = snd_soc_register_dai(&s6000_i2s_dai);
+	ret = snd_soc_register_dai(&pdev->dev, &s6000_i2s_dai);
 	if (ret)
 		goto err_release_dev;
 
@@ -573,17 +568,16 @@
 
 static void __devexit s6000_i2s_remove(struct platform_device *pdev)
 {
-	struct s6000_i2s_dev *dev = s6000_i2s_dai.private_data;
+	struct s6000_i2s_dev *dev = dev_get_drvdata(&pdev->dev);
 	struct resource *region;
 	void __iomem *mmio = dev->scbbase;
 
-	snd_soc_unregister_dai(&s6000_i2s_dai);
+	snd_soc_unregister_dai(&pdev->dev);
 
 	s6000_i2s_stop_channel(dev, 0);
 	s6000_i2s_stop_channel(dev, 1);
 
 	s6_i2s_write_reg(dev, S6_I2S_INTERRUPT_ENABLE, 0);
-	s6000_i2s_dai.private_data = 0;
 	kfree(dev);
 
 	region = platform_get_resource(pdev, IORESOURCE_DMA, 0);
diff --git a/sound/soc/s6000/s6000-i2s.h b/sound/soc/s6000/s6000-i2s.h
index 2375fdf..86aa192 100644
--- a/sound/soc/s6000/s6000-i2s.h
+++ b/sound/soc/s6000/s6000-i2s.h
@@ -12,8 +12,6 @@
 #ifndef _S6000_I2S_H
 #define _S6000_I2S_H
 
-extern struct snd_soc_dai s6000_i2s_dai;
-
 struct s6000_snd_platform_data {
 	int lines_in;
 	int lines_out;
diff --git a/sound/soc/s6000/s6000-pcm.c b/sound/soc/s6000/s6000-pcm.c
index 9c7f7f0..271fd22 100644
--- a/sound/soc/s6000/s6000-pcm.c
+++ b/sound/soc/s6000/s6000-pcm.c
@@ -65,7 +65,7 @@
 	dma_addr_t dma_pos;
 	dma_addr_t src, dst;
 
-	par = snd_soc_dai_get_dma_data(soc_runtime->dai->cpu_dai, substream);
+	par = snd_soc_dai_get_dma_data(soc_runtime->cpu_dai, substream);
 
 	period_size = snd_pcm_lib_period_bytes(substream);
 	dma_offset = prtd->period * period_size;
@@ -103,23 +103,25 @@
 {
 	struct snd_pcm *pcm = data;
 	struct snd_soc_pcm_runtime *runtime = pcm->private_data;
-	struct s6000_pcm_dma_params *params =
-		snd_soc_dai_get_dma_data(soc_runtime->dai->cpu_dai, substream);
 	struct s6000_runtime_data *prtd;
 	unsigned int has_xrun;
 	int i, ret = IRQ_NONE;
-	u32 channel[2] = {
-		[SNDRV_PCM_STREAM_PLAYBACK] = params->dma_out,
-		[SNDRV_PCM_STREAM_CAPTURE] = params->dma_in
-	};
 
-	has_xrun = params->check_xrun(runtime->dai->cpu_dai);
-
-	for (i = 0; i < ARRAY_SIZE(channel); ++i) {
+	for (i = 0; i < 2; ++i) {
 		struct snd_pcm_substream *substream = pcm->streams[i].substream;
+		struct s6000_pcm_dma_params *params =
+					snd_soc_dai_get_dma_data(runtime->cpu_dai, substream);
+		u32 channel;
 		unsigned int pending;
 
-		if (!channel[i])
+		if (substream == SNDRV_PCM_STREAM_PLAYBACK)
+			channel = params->dma_out;
+		else
+			channel = params->dma_in;
+
+		has_xrun = params->check_xrun(runtime->cpu_dai);
+
+		if (!channel)
 			continue;
 
 		if (unlikely(has_xrun & (1 << i)) &&
@@ -130,8 +132,8 @@
 			ret = IRQ_HANDLED;
 		}
 
-		pending = s6dmac_int_sources(DMA_MASK_DMAC(channel[i]),
-					     DMA_INDEX_CHNL(channel[i]));
+		pending = s6dmac_int_sources(DMA_MASK_DMAC(channel),
+					     DMA_INDEX_CHNL(channel));
 
 		if (pending & 1) {
 			ret = IRQ_HANDLED;
@@ -139,10 +141,10 @@
 				   snd_pcm_running(substream))) {
 				snd_pcm_period_elapsed(substream);
 				dev_dbg(pcm->dev, "period elapsed %x %x\n",
-				       s6dmac_cur_src(DMA_MASK_DMAC(channel[i]),
-						   DMA_INDEX_CHNL(channel[i])),
-				       s6dmac_cur_dst(DMA_MASK_DMAC(channel[i]),
-						   DMA_INDEX_CHNL(channel[i])));
+				       s6dmac_cur_src(DMA_MASK_DMAC(channel),
+						   DMA_INDEX_CHNL(channel)),
+				       s6dmac_cur_dst(DMA_MASK_DMAC(channel),
+						   DMA_INDEX_CHNL(channel)));
 				prtd = substream->runtime->private_data;
 				spin_lock(&prtd->lock);
 				s6000_pcm_enqueue_dma(substream);
@@ -154,16 +156,16 @@
 			if (pending & (1 << 3))
 				printk(KERN_WARNING
 				       "s6000-pcm: DMA %x Underflow\n",
-				       channel[i]);
+				       channel);
 			if (pending & (1 << 4))
 				printk(KERN_WARNING
 				       "s6000-pcm: DMA %x Overflow\n",
-				       channel[i]);
+				       channel);
 			if (pending & 0x1e0)
 				printk(KERN_WARNING
 				       "s6000-pcm: DMA %x Master Error "
 				       "(mask %x)\n",
-				       channel[i], pending >> 5);
+				       channel, pending >> 5);
 
 		}
 	}
@@ -180,7 +182,7 @@
 	int srcinc;
 	u32 dma;
 
-	par = snd_soc_dai_get_dma_data(soc_runtime->dai->cpu_dai, substream);
+	par = snd_soc_dai_get_dma_data(soc_runtime->cpu_dai, substream);
 
 	spin_lock_irqsave(&prtd->lock, flags);
 
@@ -221,7 +223,7 @@
 	unsigned long flags;
 	u32 channel;
 
-	par = snd_soc_dai_get_dma_data(soc_runtime->dai->cpu_dai, substream);
+	par = snd_soc_dai_get_dma_data(soc_runtime->cpu_dai, substream);
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
 		channel = par->dma_out;
@@ -246,7 +248,7 @@
 	struct s6000_pcm_dma_params *par;
 	int ret;
 
-	par = snd_soc_dai_get_dma_data(soc_runtime->dai->cpu_dai, substream);
+	par = snd_soc_dai_get_dma_data(soc_runtime->cpu_dai, substream);
 
 	ret = par->trigger(substream, cmd, 0);
 	if (ret < 0)
@@ -291,7 +293,7 @@
 	unsigned int offset;
 	dma_addr_t count;
 
-	par = snd_soc_dai_get_dma_data(soc_runtime->dai->cpu_dai, substream);
+	par = snd_soc_dai_get_dma_data(soc_runtime->cpu_dai, substream);
 
 	spin_lock_irqsave(&prtd->lock, flags);
 
@@ -321,7 +323,7 @@
 	struct s6000_runtime_data *prtd;
 	int ret;
 
-	par = snd_soc_dai_get_dma_data(soc_runtime->dai->cpu_dai, substream);
+	par = snd_soc_dai_get_dma_data(soc_runtime->cpu_dai, substream);
 	snd_soc_set_runtime_hwparams(substream, &s6000_pcm_hardware);
 
 	ret = snd_pcm_hw_constraint_step(runtime, 0,
@@ -385,7 +387,7 @@
 		return ret;
 	}
 
-	par = snd_soc_dai_get_dma_data(soc_runtime->dai->cpu_dai, substream);
+	par = snd_soc_dai_get_dma_data(soc_runtime->cpu_dai, substream);
 
 	if (par->same_rate) {
 		spin_lock(&par->lock);
@@ -407,7 +409,7 @@
 {
 	struct snd_soc_pcm_runtime *soc_runtime = substream->private_data;
 	struct s6000_pcm_dma_params *par =
-		snd_soc_dai_get_dma_data(soc_runtime->dai->cpu_dai, substream);
+		snd_soc_dai_get_dma_data(soc_runtime->cpu_dai, substream);
 
 	spin_lock(&par->lock);
 	par->in_use &= ~(1 << substream->stream);
@@ -433,7 +435,7 @@
 {
 	struct snd_soc_pcm_runtime *runtime = pcm->private_data;
 	struct s6000_pcm_dma_params *params =
-		snd_soc_dai_get_dma_data(soc_runtime->dai->cpu_dai, substream);
+		snd_soc_dai_get_dma_data(runtime->cpu_dai, pcm->streams[0].substream);
 
 	free_irq(params->irq, pcm);
 	snd_pcm_lib_preallocate_free_for_all(pcm);
@@ -448,7 +450,8 @@
 	struct s6000_pcm_dma_params *params;
 	int res;
 
-	params = snd_soc_dai_get_dma_data(soc_runtime->dai->cpu_dai, substream);
+	params = snd_soc_dai_get_dma_data(runtime->cpu_dai,
+			pcm->streams[0].substream);
 
 	if (!card->dev->dma_mask)
 		card->dev->dma_mask = &s6000_pcm_dmamask;
@@ -490,25 +493,44 @@
 	return 0;
 }
 
-struct snd_soc_platform s6000_soc_platform = {
-	.name = 	"s6000-audio",
-	.pcm_ops = 	&s6000_pcm_ops,
+static struct snd_soc_platform_driver s6000_soc_platform = {
+	.ops =		&s6000_pcm_ops,
 	.pcm_new = 	s6000_pcm_new,
 	.pcm_free = 	s6000_pcm_free,
 };
-EXPORT_SYMBOL_GPL(s6000_soc_platform);
 
-static int __init s6000_pcm_init(void)
+static int __devinit s6000_soc_platform_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_platform(&s6000_soc_platform);
+	return snd_soc_register_platform(&pdev->dev, &s6000_soc_platform);
 }
-module_init(s6000_pcm_init);
 
-static void __exit s6000_pcm_exit(void)
+static int __devexit s6000_soc_platform_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_platform(&s6000_soc_platform);
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
 }
-module_exit(s6000_pcm_exit);
+
+static struct platform_driver s6000_pcm_driver = {
+	.driver = {
+			.name = "s6000-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = s6000_soc_platform_probe,
+	.remove = __devexit_p(s6000_soc_platform_remove),
+};
+
+static int __init snd_s6000_pcm_init(void)
+{
+	return platform_driver_register(&s6000_pcm_driver);
+}
+module_init(snd_s6000_pcm_init);
+
+static void __exit snd_s6000_pcm_exit(void)
+{
+	platform_driver_unregister(&s6000_pcm_driver);
+}
+module_exit(snd_s6000_pcm_exit);
 
 MODULE_AUTHOR("Daniel Gloeckner");
 MODULE_DESCRIPTION("Stretch s6000 family PCM DMA module");
diff --git a/sound/soc/s6000/s6000-pcm.h b/sound/soc/s6000/s6000-pcm.h
index 96f23f6..09d9b88 100644
--- a/sound/soc/s6000/s6000-pcm.h
+++ b/sound/soc/s6000/s6000-pcm.h
@@ -30,6 +30,4 @@
 	int rate;
 };
 
-extern struct snd_soc_platform s6000_soc_platform;
-
 #endif
diff --git a/sound/soc/s6000/s6105-ipcam.c b/sound/soc/s6000/s6105-ipcam.c
index c1b40ac..96c05e1 100644
--- a/sound/soc/s6000/s6105-ipcam.c
+++ b/sound/soc/s6000/s6105-ipcam.c
@@ -32,8 +32,8 @@
 			   struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	int ret = 0;
 
 	/* set codec DAI configuration */
@@ -134,8 +134,10 @@
 };
 
 /* Logic for a aic3x as connected on the s6105 ip camera ref design */
-static int s6105_aic3x_init(struct snd_soc_codec *codec)
+static int s6105_aic3x_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+
 	/* Add s6105 specific widgets */
 	snd_soc_dapm_new_controls(codec, aic3x_dapm_widgets,
 				  ARRAY_SIZE(aic3x_dapm_widgets));
@@ -165,7 +167,7 @@
 
 	snd_soc_dapm_sync(codec);
 
-	snd_ctl_add(codec->card, snd_ctl_new1(&audio_out_mux, codec));
+	snd_ctl_add(codec->snd_card, snd_ctl_new1(&audio_out_mux, codec));
 
 	return 0;
 }
@@ -174,8 +176,10 @@
 static struct snd_soc_dai_link s6105_dai = {
 	.name = "TLV320AIC31",
 	.stream_name = "AIC31",
-	.cpu_dai = &s6000_i2s_dai,
-	.codec_dai = &aic3x_dai,
+	.cpu_dai_name = "s6000-i2s",
+	.codec_dai_name = "tlv320aic3x-hifi",
+	.platform_name = "s6000-pcm-audio",
+	.codec_name = "tlv320aic3x-codec.0-001a",
 	.init = s6105_aic3x_init,
 	.ops = &s6105_ops,
 };
@@ -183,22 +187,10 @@
 /* s6105 audio machine driver */
 static struct snd_soc_card snd_soc_card_s6105 = {
 	.name = "Stretch IP Camera",
-	.platform = &s6000_soc_platform,
 	.dai_link = &s6105_dai,
 	.num_links = 1,
 };
 
-/* s6105 audio private data */
-static struct aic3x_setup_data s6105_aic3x_setup = {
-};
-
-/* s6105 audio subsystem */
-static struct snd_soc_device s6105_snd_devdata = {
-	.card = &snd_soc_card_s6105,
-	.codec_dev = &soc_codec_dev_aic3x,
-	.codec_data = &s6105_aic3x_setup,
-};
-
 static struct s6000_snd_platform_data __initdata s6105_snd_data = {
 	.wide		= 0,
 	.channel_in	= 0,
@@ -227,8 +219,7 @@
 	if (!s6105_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(s6105_snd_device, &s6105_snd_devdata);
-	s6105_snd_devdata.dev = &s6105_snd_device->dev;
+	platform_set_drvdata(s6105_snd_device, &snd_soc_card_s6105);
 	platform_device_add_data(s6105_snd_device, &s6105_snd_data,
 				 sizeof(s6105_snd_data));
 
diff --git a/sound/soc/sh/Kconfig b/sound/soc/sh/Kconfig
index 52d7e8e..7f0a496 100644
--- a/sound/soc/sh/Kconfig
+++ b/sound/soc/sh/Kconfig
@@ -47,7 +47,7 @@
 	  AC97 unit of the SH7760.
 
 config SND_FSI_AK4642
-	bool "FSI-AK4642 sound support"
+	tristate "FSI-AK4642 sound support"
 	depends on SND_SOC_SH4_FSI && I2C_SH_MOBILE
 	select SND_SOC_AK4642
 	help
@@ -55,13 +55,20 @@
 	  FSI - AK4642 unit
 
 config SND_FSI_DA7210
-	bool "FSI-DA7210 sound support"
+	tristate "FSI-DA7210 sound support"
 	depends on SND_SOC_SH4_FSI && I2C_SH_MOBILE
 	select SND_SOC_DA7210
 	help
 	  This option enables generic sound support for the
 	  FSI - DA7210 unit
 
+config SND_FSI_HDMI
+	tristate "FSI-HDMI sound support"
+	depends on SND_SOC_SH4_FSI && FB_SH_MOBILE_HDMI
+	help
+	  This option enables generic sound support for the
+	  FSI - HDMI unit
+
 config SND_SIU_MIGOR
 	tristate "SIU sound support on Migo-R"
 	depends on SH_MIGOR
diff --git a/sound/soc/sh/Makefile b/sound/soc/sh/Makefile
index 8a5a192..94476d4 100644
--- a/sound/soc/sh/Makefile
+++ b/sound/soc/sh/Makefile
@@ -16,9 +16,11 @@
 snd-soc-sh7760-ac97-objs	:= sh7760-ac97.o
 snd-soc-fsi-ak4642-objs		:= fsi-ak4642.o
 snd-soc-fsi-da7210-objs		:= fsi-da7210.o
+snd-soc-fsi-hdmi-objs		:= fsi-hdmi.o
 snd-soc-migor-objs		:= migor.o
 
 obj-$(CONFIG_SND_SH7760_AC97)	+= snd-soc-sh7760-ac97.o
 obj-$(CONFIG_SND_FSI_AK4642)	+= snd-soc-fsi-ak4642.o
 obj-$(CONFIG_SND_FSI_DA7210)	+= snd-soc-fsi-da7210.o
+obj-$(CONFIG_SND_FSI_HDMI)	+= snd-soc-fsi-hdmi.o
 obj-$(CONFIG_SND_SIU_MIGOR)	+= snd-soc-migor.o
diff --git a/sound/soc/sh/dma-sh7760.c b/sound/soc/sh/dma-sh7760.c
index 0d8bdf0..c326d29 100644
--- a/sound/soc/sh/dma-sh7760.c
+++ b/sound/soc/sh/dma-sh7760.c
@@ -137,7 +137,7 @@
 static int camelot_pcm_open(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct camelot_pcm *cam = &cam_pcm_data[rtd->dai->cpu_dai->id];
+	struct camelot_pcm *cam = &cam_pcm_data[rtd->cpu_dai->id];
 	int recv = substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 0:1;
 	int ret, dmairq;
 
@@ -150,7 +150,7 @@
 		ret = dmabrg_request_irq(dmairq, camelot_rxdma, cam);
 		if (unlikely(ret)) {
 			pr_debug("audio unit %d irqs already taken!\n",
-			     rtd->dai->cpu_dai->id);
+			     rtd->cpu_dai->id);
 			return -EBUSY;
 		}
 		(void)dmabrg_request_irq(dmairq + 1,camelot_rxdma, cam);
@@ -159,7 +159,7 @@
 		ret = dmabrg_request_irq(dmairq, camelot_txdma, cam);
 		if (unlikely(ret)) {
 			pr_debug("audio unit %d irqs already taken!\n",
-			     rtd->dai->cpu_dai->id);
+			     rtd->cpu_dai->id);
 			return -EBUSY;
 		}
 		(void)dmabrg_request_irq(dmairq + 1, camelot_txdma, cam);
@@ -170,7 +170,7 @@
 static int camelot_pcm_close(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct camelot_pcm *cam = &cam_pcm_data[rtd->dai->cpu_dai->id];
+	struct camelot_pcm *cam = &cam_pcm_data[rtd->cpu_dai->id];
 	int recv = substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 0:1;
 	int dmairq;
 
@@ -191,7 +191,7 @@
 			     struct snd_pcm_hw_params *hw_params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct camelot_pcm *cam = &cam_pcm_data[rtd->dai->cpu_dai->id];
+	struct camelot_pcm *cam = &cam_pcm_data[rtd->cpu_dai->id];
 	int recv = substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 0:1;
 	int ret;
 
@@ -219,7 +219,7 @@
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct camelot_pcm *cam = &cam_pcm_data[rtd->dai->cpu_dai->id];
+	struct camelot_pcm *cam = &cam_pcm_data[rtd->cpu_dai->id];
 
 	pr_debug("PCM data: addr 0x%08ulx len %d\n",
 		 (u32)runtime->dma_addr, runtime->dma_bytes);
@@ -266,7 +266,7 @@
 static int camelot_trigger(struct snd_pcm_substream *substream, int cmd)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct camelot_pcm *cam = &cam_pcm_data[rtd->dai->cpu_dai->id];
+	struct camelot_pcm *cam = &cam_pcm_data[rtd->cpu_dai->id];
 	int recv = substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 0:1;
 
 	switch (cmd) {
@@ -293,7 +293,7 @@
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct camelot_pcm *cam = &cam_pcm_data[rtd->dai->cpu_dai->id];
+	struct camelot_pcm *cam = &cam_pcm_data[rtd->cpu_dai->id];
 	int recv = substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 0:1;
 	unsigned long pos;
 
@@ -342,25 +342,44 @@
 	return 0;
 }
 
-struct snd_soc_platform sh7760_soc_platform = {
-	.name		= "sh7760-pcm",
+static struct snd_soc_platform sh7760_soc_platform = {
 	.pcm_ops 	= &camelot_pcm_ops,
 	.pcm_new	= camelot_pcm_new,
 	.pcm_free	= camelot_pcm_free,
 };
-EXPORT_SYMBOL_GPL(sh7760_soc_platform);
 
-static int __init sh7760_soc_platform_init(void)
+static int __devinit sh7760_soc_platform_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_platform(&sh7760_soc_platform);
+	return snd_soc_register_platform(&pdev->dev, &sh7760_soc_platform);
 }
-module_init(sh7760_soc_platform_init);
 
-static void __exit sh7760_soc_platform_exit(void)
+static int __devexit sh7760_soc_platform_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_platform(&sh7760_soc_platform);
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
 }
-module_exit(sh7760_soc_platform_exit);
+
+static struct platform_driver sh7760_pcm_driver = {
+	.driver = {
+			.name = "sh7760-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = sh7760_soc_platform_probe,
+	.remove = __devexit_p(sh7760_soc_platform_remove),
+};
+
+static int __init snd_sh7760_pcm_init(void)
+{
+	return platform_driver_register(&sh7760_pcm_driver);
+}
+module_init(snd_sh7760_pcm_init);
+
+static void __exit snd_sh7760_pcm_exit(void)
+{
+	platform_driver_unregister(&sh7760_pcm_driver);
+}
+module_exit(snd_sh7760_pcm_exit);
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("SH7760 Audio DMA (DMABRG) driver");
diff --git a/sound/soc/sh/fsi-ak4642.c b/sound/soc/sh/fsi-ak4642.c
index dad575a..d96602d 100644
--- a/sound/soc/sh/fsi-ak4642.c
+++ b/sound/soc/sh/fsi-ak4642.c
@@ -11,17 +11,17 @@
 
 #include <linux/platform_device.h>
 #include <sound/sh_fsi.h>
-#include <../sound/soc/codecs/ak4642.h>
 
-static int fsi_ak4642_dai_init(struct snd_soc_codec *codec)
+static int fsi_ak4642_dai_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_dai *dai = rtd->codec_dai;
 	int ret;
 
-	ret = snd_soc_dai_set_fmt(&ak4642_dai, SND_SOC_DAIFMT_CBM_CFM);
+	ret = snd_soc_dai_set_fmt(dai, SND_SOC_DAIFMT_CBM_CFM);
 	if (ret < 0)
 		return ret;
 
-	ret = snd_soc_dai_set_sysclk(&ak4642_dai, 0, 11289600, 0);
+	ret = snd_soc_dai_set_sysclk(dai, 0, 11289600, 0);
 
 	return ret;
 }
@@ -29,24 +29,25 @@
 static struct snd_soc_dai_link fsi_dai_link = {
 	.name		= "AK4642",
 	.stream_name	= "AK4642",
-	.cpu_dai	= &fsi_soc_dai[FSI_PORT_A],
-	.codec_dai	= &ak4642_dai,
+	.cpu_dai_name	= "fsia-dai", /* fsi A */
+	.codec_dai_name	= "ak4642-hifi",
+#ifdef CONFIG_MACH_AP4EVB
+	.platform_name	= "sh_fsi2",
+	.codec_name	= "ak4642-codec.0-0013",
+#else
+	.platform_name	= "sh_fsi.0",
+	.codec_name	= "ak4642-codec.0-0012",
+#endif
 	.init		= fsi_ak4642_dai_init,
 	.ops		= NULL,
 };
 
 static struct snd_soc_card fsi_soc_card  = {
-	.name		= "FSI",
-	.platform	= &fsi_soc_platform,
+	.name		= "FSI (AK4642)",
 	.dai_link	= &fsi_dai_link,
 	.num_links	= 1,
 };
 
-static struct snd_soc_device fsi_snd_devdata = {
-	.card		= &fsi_soc_card,
-	.codec_dev	= &soc_codec_dev_ak4642,
-};
-
 static struct platform_device *fsi_snd_device;
 
 static int __init fsi_ak4642_init(void)
@@ -57,9 +58,7 @@
 	if (!fsi_snd_device)
 		goto out;
 
-	platform_set_drvdata(fsi_snd_device,
-			     &fsi_snd_devdata);
-	fsi_snd_devdata.dev = &fsi_snd_device->dev;
+	platform_set_drvdata(fsi_snd_device, &fsi_soc_card);
 	ret = platform_device_add(fsi_snd_device);
 
 	if (ret)
diff --git a/sound/soc/sh/fsi-da7210.c b/sound/soc/sh/fsi-da7210.c
index 121bbb0..a6adb6e 100644
--- a/sound/soc/sh/fsi-da7210.c
+++ b/sound/soc/sh/fsi-da7210.c
@@ -12,11 +12,12 @@
 
 #include <linux/platform_device.h>
 #include <sound/sh_fsi.h>
-#include "../codecs/da7210.h"
 
-static int fsi_da7210_init(struct snd_soc_codec *codec)
+static int fsi_da7210_init(struct snd_soc_pcm_runtime *rtd)
 {
-	return snd_soc_dai_set_fmt(&da7210_dai,
+	struct snd_soc_dai *dai = rtd->codec_dai;
+
+	return snd_soc_dai_set_fmt(dai,
 				   SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
 				   SND_SOC_DAIFMT_CBM_CFM);
 }
@@ -24,23 +25,19 @@
 static struct snd_soc_dai_link fsi_da7210_dai = {
 	.name		= "DA7210",
 	.stream_name	= "DA7210",
-	.cpu_dai	= &fsi_soc_dai[FSI_PORT_B],
-	.codec_dai	= &da7210_dai,
+	.cpu_dai_name	= "fsib-dai", /* FSI B */
+	.codec_dai_name	= "da7210-hifi",
+	.platform_name	= "sh_fsi.0",
+	.codec_name	= "da7210-codec.0-001a",
 	.init		= fsi_da7210_init,
 };
 
 static struct snd_soc_card fsi_soc_card = {
-	.name		= "FSI",
-	.platform	= &fsi_soc_platform,
+	.name		= "FSI (DA7210)",
 	.dai_link	= &fsi_da7210_dai,
 	.num_links	= 1,
 };
 
-static struct snd_soc_device fsi_da7210_snd_devdata = {
-	.card		= &fsi_soc_card,
-	.codec_dev	= &soc_codec_dev_da7210,
-};
-
 static struct platform_device *fsi_da7210_snd_device;
 
 static int __init fsi_da7210_sound_init(void)
@@ -51,8 +48,7 @@
 	if (!fsi_da7210_snd_device)
 		return -ENOMEM;
 
-	platform_set_drvdata(fsi_da7210_snd_device, &fsi_da7210_snd_devdata);
-	fsi_da7210_snd_devdata.dev = &fsi_da7210_snd_device->dev;
+	platform_set_drvdata(fsi_da7210_snd_device, &fsi_soc_card);
 	ret = platform_device_add(fsi_da7210_snd_device);
 	if (ret)
 		platform_device_put(fsi_da7210_snd_device);
diff --git a/sound/soc/sh/fsi-hdmi.c b/sound/soc/sh/fsi-hdmi.c
new file mode 100644
index 0000000..a52dd8e
--- /dev/null
+++ b/sound/soc/sh/fsi-hdmi.c
@@ -0,0 +1,60 @@
+/*
+ * FSI - HDMI sound support
+ *
+ * Copyright (C) 2010 Renesas Solutions Corp.
+ * Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+
+#include <linux/platform_device.h>
+#include <sound/sh_fsi.h>
+
+static struct snd_soc_dai_link fsi_dai_link = {
+	.name		= "HDMI",
+	.stream_name	= "HDMI",
+	.cpu_dai_name	= "fsib-dai", /* fsi B */
+	.codec_dai_name	= "sh_mobile_hdmi-hifi",
+	.platform_name	= "sh_fsi2",
+	.codec_name	= "sh-mobile-hdmi",
+};
+
+static struct snd_soc_card fsi_soc_card  = {
+	.name		= "FSI (SH MOBILE HDMI)",
+	.dai_link	= &fsi_dai_link,
+	.num_links	= 1,
+};
+
+static struct platform_device *fsi_snd_device;
+
+static int __init fsi_hdmi_init(void)
+{
+	int ret = -ENOMEM;
+
+	fsi_snd_device = platform_device_alloc("soc-audio", FSI_PORT_B);
+	if (!fsi_snd_device)
+		goto out;
+
+	platform_set_drvdata(fsi_snd_device, &fsi_soc_card);
+	ret = platform_device_add(fsi_snd_device);
+
+	if (ret)
+		platform_device_put(fsi_snd_device);
+
+out:
+	return ret;
+}
+
+static void __exit fsi_hdmi_exit(void)
+{
+	platform_device_unregister(fsi_snd_device);
+}
+
+module_init(fsi_hdmi_init);
+module_exit(fsi_hdmi_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Generic SH4 FSI-HDMI sound card");
+MODULE_AUTHOR("Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>");
diff --git a/sound/soc/sh/fsi.c b/sound/soc/sh/fsi.c
index 58c6bec..82c6190 100644
--- a/sound/soc/sh/fsi.c
+++ b/sound/soc/sh/fsi.c
@@ -101,25 +101,31 @@
 
 #define FSI_FMTS (SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S16_LE)
 
-/************************************************************************
+/*
+ * FSI driver use below type name for variable
+ *
+ * xxx_len	: data length
+ * xxx_width	: data width
+ * xxx_offset	: data offset
+ * xxx_num	: number of data
+ */
 
+/*
+ *		struct
+ */
 
-		struct
-
-
-************************************************************************/
 struct fsi_priv {
 	void __iomem *base;
 	struct snd_pcm_substream *substream;
 	struct fsi_master *master;
 
-	int fifo_max;
-	int chan;
+	int fifo_max_num;
+	int chan_num;
 
-	int byte_offset;
+	int buff_offset;
+	int buff_len;
 	int period_len;
-	int buffer_len;
-	int periods;
+	int period_num;
 
 	u32 mst_ctrl;
 };
@@ -142,13 +148,10 @@
 	spinlock_t lock;
 };
 
-/************************************************************************
+/*
+ *		basic read write function
+ */
 
-
-		basic read write function
-
-
-************************************************************************/
 static void __fsi_reg_write(u32 reg, u32 data)
 {
 	/* valid data area is 24bit */
@@ -251,13 +254,10 @@
 	spin_unlock_irqrestore(&master->lock, flags);
 }
 
-/************************************************************************
+/*
+ *		basic function
+ */
 
-
-		basic function
-
-
-************************************************************************/
 static struct fsi_master *fsi_get_master(struct fsi_priv *fsi)
 {
 	return fsi->master;
@@ -271,16 +271,19 @@
 static struct snd_soc_dai *fsi_get_dai(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai_link *machine = rtd->dai;
 
-	return  machine->cpu_dai;
+	return  rtd->cpu_dai;
 }
 
 static struct fsi_priv *fsi_get_priv(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_dai *dai = fsi_get_dai(substream);
+	struct fsi_master *master = snd_soc_dai_get_drvdata(dai);
 
-	return dai->private_data;
+	if (dai->id == 0)
+		return &master->fsia;
+	else
+		return &master->fsib;
 }
 
 static u32 fsi_get_info_flags(struct fsi_priv *fsi)
@@ -326,41 +329,102 @@
 			    u32 period_len)
 {
 	fsi->substream		= substream;
-	fsi->buffer_len		= buffer_len;
+	fsi->buff_len		= buffer_len;
+	fsi->buff_offset	= 0;
 	fsi->period_len		= period_len;
-	fsi->byte_offset	= 0;
-	fsi->periods		= 0;
+	fsi->period_num		= 0;
 }
 
 static void fsi_stream_pop(struct fsi_priv *fsi)
 {
 	fsi->substream		= NULL;
-	fsi->buffer_len		= 0;
+	fsi->buff_len		= 0;
+	fsi->buff_offset	= 0;
 	fsi->period_len		= 0;
-	fsi->byte_offset	= 0;
-	fsi->periods		= 0;
+	fsi->period_num		= 0;
 }
 
-static int fsi_get_fifo_residue(struct fsi_priv *fsi, int is_play)
+static int fsi_get_fifo_data_num(struct fsi_priv *fsi, int is_play)
 {
 	u32 status;
 	u32 reg = is_play ? DOFF_ST : DIFF_ST;
-	int residue;
+	int data_num;
 
 	status = fsi_reg_read(fsi, reg);
-	residue = 0x1ff & (status >> 8);
-	residue *= fsi->chan;
+	data_num = 0x1ff & (status >> 8);
+	data_num *= fsi->chan_num;
 
-	return residue;
+	return data_num;
 }
 
-/************************************************************************
+static int fsi_len2num(int len, int width)
+{
+	return len / width;
+}
 
+#define fsi_num2offset(a, b) fsi_num2len(a, b)
+static int fsi_num2len(int num, int width)
+{
+	return num * width;
+}
 
-		irq function
+/*
+ *		dma function
+ */
 
+static u8 *fsi_dma_get_area(struct fsi_priv *fsi)
+{
+	return fsi->substream->runtime->dma_area + fsi->buff_offset;
+}
 
-************************************************************************/
+static void fsi_dma_soft_push16(struct fsi_priv *fsi, int num)
+{
+	u16 *start;
+	int i;
+
+	start  = (u16 *)fsi_dma_get_area(fsi);
+
+	for (i = 0; i < num; i++)
+		fsi_reg_write(fsi, DODT, ((u32)*(start + i) << 8));
+}
+
+static void fsi_dma_soft_pop16(struct fsi_priv *fsi, int num)
+{
+	u16 *start;
+	int i;
+
+	start  = (u16 *)fsi_dma_get_area(fsi);
+
+	for (i = 0; i < num; i++)
+		*(start + i) = (u16)(fsi_reg_read(fsi, DIDT) >> 8);
+}
+
+static void fsi_dma_soft_push32(struct fsi_priv *fsi, int num)
+{
+	u32 *start;
+	int i;
+
+	start  = (u32 *)fsi_dma_get_area(fsi);
+
+	for (i = 0; i < num; i++)
+		fsi_reg_write(fsi, DODT, *(start + i));
+}
+
+static void fsi_dma_soft_pop32(struct fsi_priv *fsi, int num)
+{
+	u32 *start;
+	int i;
+
+	start  = (u32 *)fsi_dma_get_area(fsi);
+
+	for (i = 0; i < num; i++)
+		*(start + i) = fsi_reg_read(fsi, DIDT);
+}
+
+/*
+ *		irq function
+ */
+
 static void fsi_irq_enable(struct fsi_priv *fsi, int is_play)
 {
 	u32 data = fsi_port_ab_io_bit(fsi, is_play);
@@ -401,13 +465,11 @@
 	fsi_master_mask_set(master, master->core->int_st, data, 0);
 }
 
-/************************************************************************
-
-
-		SPDIF master clock function
-
-These functions are used later FSI2
-************************************************************************/
+/*
+ *		SPDIF master clock function
+ *
+ * These functions are used later FSI2
+ */
 static void fsi_spdif_clk_ctrl(struct fsi_priv *fsi, int enable)
 {
 	struct fsi_master *master = fsi_get_master(fsi);
@@ -424,13 +486,10 @@
 		fsi_master_mask_set(master, fsi->mst_ctrl, val, 0);
 }
 
-/************************************************************************
+/*
+ *		ctrl function
+ */
 
-
-		ctrl function
-
-
-************************************************************************/
 static void fsi_clk_ctrl(struct fsi_priv *fsi, int enable)
 {
 	u32 val = fsi_is_port_a(fsi) ? (1 << 0) : (1 << 4);
@@ -453,8 +512,8 @@
 	shift = fsi_master_read(master, FIFO_SZ);
 	shift >>= fsi_is_port_a(fsi) ? AO_SZ_SHIFT : BO_SZ_SHIFT;
 	shift &= OUT_SZ_MASK;
-	fsi->fifo_max = 256 << shift;
-	dev_dbg(dai->dev, "fifo = %d words\n", fsi->fifo_max);
+	fsi->fifo_max_num = 256 << shift;
+	dev_dbg(dai->dev, "fifo = %d words\n", fsi->fifo_max_num);
 
 	/*
 	 * The maximum number of sample data varies depending
@@ -475,9 +534,10 @@
 	 * 7 channels:  32 ( 32 x 7 = 224)
 	 * 8 channels:  32 ( 32 x 8 = 256)
 	 */
-	for (i = 1; i < fsi->chan; i <<= 1)
-		fsi->fifo_max >>= 1;
-	dev_dbg(dai->dev, "%d channel %d store\n", fsi->chan, fsi->fifo_max);
+	for (i = 1; i < fsi->chan_num; i <<= 1)
+		fsi->fifo_max_num >>= 1;
+	dev_dbg(dai->dev, "%d channel %d store\n",
+		fsi->chan_num, fsi->fifo_max_num);
 
 	ctrl = is_play ? DOFF_CTL : DIFF_CTL;
 
@@ -500,17 +560,18 @@
 	mdelay(10);
 }
 
-/* playback interrupt */
-static int fsi_data_push(struct fsi_priv *fsi, int startup)
+static int fsi_fifo_data_ctrl(struct fsi_priv *fsi, int startup, int is_play)
 {
 	struct snd_pcm_runtime *runtime;
 	struct snd_pcm_substream *substream = NULL;
 	u32 status;
-	int send;
-	int fifo_free;
-	int width;
-	u8 *start;
-	int i, over_period;
+	u32 status_reg = is_play ? DOFF_ST : DIFF_ST;
+	int data_residue_num;
+	int data_num;
+	int data_num_max;
+	int ch_width;
+	int over_period;
+	void (*fn)(struct fsi_priv *fsi, int size);
 
 	if (!fsi			||
 	    !fsi->substream		||
@@ -524,49 +585,76 @@
 	/* FSI FIFO has limit.
 	 * So, this driver can not send periods data at a time
 	 */
-	if (fsi->byte_offset >=
-	    fsi->period_len * (fsi->periods + 1)) {
+	if (fsi->buff_offset >=
+	    fsi_num2offset(fsi->period_num + 1, fsi->period_len)) {
 
 		over_period = 1;
-		fsi->periods = (fsi->periods + 1) % runtime->periods;
+		fsi->period_num = (fsi->period_num + 1) % runtime->periods;
 
-		if (0 == fsi->periods)
-			fsi->byte_offset = 0;
+		if (0 == fsi->period_num)
+			fsi->buff_offset = 0;
 	}
 
 	/* get 1 channel data width */
-	width = frames_to_bytes(runtime, 1) / fsi->chan;
+	ch_width = frames_to_bytes(runtime, 1) / fsi->chan_num;
 
-	/* get send size for alsa */
-	send = (fsi->buffer_len - fsi->byte_offset) / width;
+	/* get residue data number of alsa */
+	data_residue_num = fsi_len2num(fsi->buff_len - fsi->buff_offset,
+				       ch_width);
 
-	/*  get FIFO free size */
-	fifo_free = (fsi->fifo_max * fsi->chan) - fsi_get_fifo_residue(fsi, 1);
+	if (is_play) {
+		/*
+		 * for play-back
+		 *
+		 * data_num_max	: number of FSI fifo free space
+		 * data_num	: number of ALSA residue data
+		 */
+		data_num_max  = fsi->fifo_max_num * fsi->chan_num;
+		data_num_max -= fsi_get_fifo_data_num(fsi, is_play);
 
-	/* size check */
-	if (fifo_free < send)
-		send = fifo_free;
+		data_num = data_residue_num;
 
-	start = runtime->dma_area;
-	start += fsi->byte_offset;
+		switch (ch_width) {
+		case 2:
+			fn = fsi_dma_soft_push16;
+			break;
+		case 4:
+			fn = fsi_dma_soft_push32;
+			break;
+		default:
+			return -EINVAL;
+		}
+	} else {
+		/*
+		 * for capture
+		 *
+		 * data_num_max	: number of ALSA free space
+		 * data_num	: number of data in FSI fifo
+		 */
+		data_num_max = data_residue_num;
+		data_num     = fsi_get_fifo_data_num(fsi, is_play);
 
-	switch (width) {
-	case 2:
-		for (i = 0; i < send; i++)
-			fsi_reg_write(fsi, DODT,
-				      ((u32)*((u16 *)start + i) << 8));
-		break;
-	case 4:
-		for (i = 0; i < send; i++)
-			fsi_reg_write(fsi, DODT, *((u32 *)start + i));
-		break;
-	default:
-		return -EINVAL;
+		switch (ch_width) {
+		case 2:
+			fn = fsi_dma_soft_pop16;
+			break;
+		case 4:
+			fn = fsi_dma_soft_pop32;
+			break;
+		default:
+			return -EINVAL;
+		}
 	}
 
-	fsi->byte_offset += send * width;
+	data_num = min(data_num, data_num_max);
 
-	status = fsi_reg_read(fsi, DOFF_ST);
+	fn(fsi, data_num);
+
+	/* update buff_offset */
+	fsi->buff_offset += fsi_num2offset(data_num, ch_width);
+
+	/* check fifo status */
+	status = fsi_reg_read(fsi, status_reg);
 	if (!startup) {
 		struct snd_soc_dai *dai = fsi_get_dai(substream);
 
@@ -575,9 +663,10 @@
 		if (status & ERR_UNDER)
 			dev_err(dai->dev, "under run\n");
 	}
-	fsi_reg_write(fsi, DOFF_ST, 0);
+	fsi_reg_write(fsi, status_reg, 0);
 
-	fsi_irq_enable(fsi, 1);
+	/* re-enable irq */
+	fsi_irq_enable(fsi, is_play);
 
 	if (over_period)
 		snd_pcm_period_elapsed(substream);
@@ -587,85 +676,12 @@
 
 static int fsi_data_pop(struct fsi_priv *fsi, int startup)
 {
-	struct snd_pcm_runtime *runtime;
-	struct snd_pcm_substream *substream = NULL;
-	u32 status;
-	int free;
-	int fifo_fill;
-	int width;
-	u8 *start;
-	int i, over_period;
+	return fsi_fifo_data_ctrl(fsi, startup, 0);
+}
 
-	if (!fsi			||
-	    !fsi->substream		||
-	    !fsi->substream->runtime)
-		return -EINVAL;
-
-	over_period	= 0;
-	substream	= fsi->substream;
-	runtime		= substream->runtime;
-
-	/* FSI FIFO has limit.
-	 * So, this driver can not send periods data at a time
-	 */
-	if (fsi->byte_offset >=
-	    fsi->period_len * (fsi->periods + 1)) {
-
-		over_period = 1;
-		fsi->periods = (fsi->periods + 1) % runtime->periods;
-
-		if (0 == fsi->periods)
-			fsi->byte_offset = 0;
-	}
-
-	/* get 1 channel data width */
-	width = frames_to_bytes(runtime, 1) / fsi->chan;
-
-	/* get free space for alsa */
-	free = (fsi->buffer_len - fsi->byte_offset) / width;
-
-	/* get recv size */
-	fifo_fill = fsi_get_fifo_residue(fsi, 0);
-
-	if (free < fifo_fill)
-		fifo_fill = free;
-
-	start = runtime->dma_area;
-	start += fsi->byte_offset;
-
-	switch (width) {
-	case 2:
-		for (i = 0; i < fifo_fill; i++)
-			*((u16 *)start + i) =
-				(u16)(fsi_reg_read(fsi, DIDT) >> 8);
-		break;
-	case 4:
-		for (i = 0; i < fifo_fill; i++)
-			*((u32 *)start + i) = fsi_reg_read(fsi, DIDT);
-		break;
-	default:
-		return -EINVAL;
-	}
-
-	fsi->byte_offset += fifo_fill * width;
-
-	status = fsi_reg_read(fsi, DIFF_ST);
-	if (!startup) {
-		struct snd_soc_dai *dai = fsi_get_dai(substream);
-
-		if (status & ERR_OVER)
-			dev_err(dai->dev, "over run\n");
-		if (status & ERR_UNDER)
-			dev_err(dai->dev, "under run\n");
-	}
-	fsi_reg_write(fsi, DIFF_ST, 0);
-
-	fsi_irq_enable(fsi, 0);
-
-	if (over_period)
-		snd_pcm_period_elapsed(substream);
-
-	return 0;
+static int fsi_data_push(struct fsi_priv *fsi, int startup)
+{
+	return fsi_fifo_data_ctrl(fsi, startup, 1);
 }
 
 static irqreturn_t fsi_interrupt(int irq, void *data)
@@ -691,13 +707,10 @@
 	return IRQ_HANDLED;
 }
 
-/************************************************************************
+/*
+ *		dai ops
+ */
 
-
-		dai ops
-
-
-************************************************************************/
 static int fsi_dai_startup(struct snd_pcm_substream *substream,
 			   struct snd_soc_dai *dai)
 {
@@ -741,29 +754,29 @@
 	switch (fmt) {
 	case SH_FSI_FMT_MONO:
 		data = CR_MONO;
-		fsi->chan = 1;
+		fsi->chan_num = 1;
 		break;
 	case SH_FSI_FMT_MONO_DELAY:
 		data = CR_MONO_D;
-		fsi->chan = 1;
+		fsi->chan_num = 1;
 		break;
 	case SH_FSI_FMT_PCM:
 		data = CR_PCM;
-		fsi->chan = 2;
+		fsi->chan_num = 2;
 		break;
 	case SH_FSI_FMT_I2S:
 		data = CR_I2S;
-		fsi->chan = 2;
+		fsi->chan_num = 2;
 		break;
 	case SH_FSI_FMT_TDM:
-		fsi->chan = is_play ?
+		fsi->chan_num = is_play ?
 			SH_FSI_GET_CH_O(flags) : SH_FSI_GET_CH_I(flags);
-		data = CR_TDM | (fsi->chan - 1);
+		data = CR_TDM | (fsi->chan_num - 1);
 		break;
 	case SH_FSI_FMT_TDM_DELAY:
-		fsi->chan = is_play ?
+		fsi->chan_num = is_play ?
 			SH_FSI_GET_CH_O(flags) : SH_FSI_GET_CH_I(flags);
-		data = CR_TDM_D | (fsi->chan - 1);
+		data = CR_TDM_D | (fsi->chan_num - 1);
 		break;
 	case SH_FSI_FMT_SPDIF:
 		if (master->core->ver < 2) {
@@ -771,7 +784,7 @@
 			return -EINVAL;
 		}
 		data = CR_SPDIF;
-		fsi->chan = 2;
+		fsi->chan_num = 2;
 		fsi_spdif_clk_ctrl(fsi, 1);
 		fsi_reg_mask_set(fsi, OUT_SEL, 0x0010, 0x0010);
 		break;
@@ -916,13 +929,10 @@
 	.hw_params	= fsi_dai_hw_params,
 };
 
-/************************************************************************
+/*
+ *		pcm ops
+ */
 
-
-		pcm ops
-
-
-************************************************************************/
 static struct snd_pcm_hardware fsi_pcm_hardware = {
 	.info =		SNDRV_PCM_INFO_INTERLEAVED	|
 			SNDRV_PCM_INFO_MMAP		|
@@ -973,7 +983,7 @@
 	struct fsi_priv *fsi = fsi_get_priv(substream);
 	long location;
 
-	location = (fsi->byte_offset - 1);
+	location = (fsi->buff_offset - 1);
 	if (location < 0)
 		location = 0;
 
@@ -988,13 +998,10 @@
 	.pointer	= fsi_pointer,
 };
 
-/************************************************************************
+/*
+ *		snd_soc_platform
+ */
 
-
-		snd_soc_platform
-
-
-************************************************************************/
 #define PREALLOC_BUFFER		(32 * 1024)
 #define PREALLOC_BUFFER_MAX	(32 * 1024)
 
@@ -1018,17 +1025,13 @@
 		PREALLOC_BUFFER, PREALLOC_BUFFER_MAX);
 }
 
-/************************************************************************
+/*
+ *		alsa struct
+ */
 
-
-		alsa struct
-
-
-************************************************************************/
-struct snd_soc_dai fsi_soc_dai[] = {
+static struct snd_soc_dai_driver fsi_soc_dai[] = {
 	{
-		.name			= "FSIA",
-		.id			= 0,
+		.name			= "fsia-dai",
 		.playback = {
 			.rates		= FSI_RATES,
 			.formats	= FSI_FMTS,
@@ -1044,8 +1047,7 @@
 		.ops = &fsi_dai_ops,
 	},
 	{
-		.name			= "FSIB",
-		.id			= 1,
+		.name			= "fsib-dai",
 		.playback = {
 			.rates		= FSI_RATES,
 			.formats	= FSI_FMTS,
@@ -1061,23 +1063,17 @@
 		.ops = &fsi_dai_ops,
 	},
 };
-EXPORT_SYMBOL_GPL(fsi_soc_dai);
 
-struct snd_soc_platform fsi_soc_platform = {
-	.name		= "fsi-pcm",
-	.pcm_ops 	= &fsi_pcm_ops,
+static struct snd_soc_platform_driver fsi_soc_platform = {
+	.ops		= &fsi_pcm_ops,
 	.pcm_new	= fsi_pcm_new,
 	.pcm_free	= fsi_pcm_free,
 };
-EXPORT_SYMBOL_GPL(fsi_soc_platform);
 
-/************************************************************************
+/*
+ *		platform function
+ */
 
-
-		platform function
-
-
-************************************************************************/
 static int fsi_probe(struct platform_device *pdev)
 {
 	struct fsi_master *master;
@@ -1132,11 +1128,7 @@
 
 	pm_runtime_enable(&pdev->dev);
 	pm_runtime_resume(&pdev->dev);
-
-	fsi_soc_dai[0].dev		= &pdev->dev;
-	fsi_soc_dai[0].private_data	= &master->fsia;
-	fsi_soc_dai[1].dev		= &pdev->dev;
-	fsi_soc_dai[1].private_data	= &master->fsib;
+	dev_set_drvdata(&pdev->dev, master);
 
 	fsi_soft_all_reset(master);
 
@@ -1147,13 +1139,13 @@
 		goto exit_iounmap;
 	}
 
-	ret = snd_soc_register_platform(&fsi_soc_platform);
+	ret = snd_soc_register_platform(&pdev->dev, &fsi_soc_platform);
 	if (ret < 0) {
 		dev_err(&pdev->dev, "cannot snd soc register\n");
 		goto exit_free_irq;
 	}
 
-	return snd_soc_register_dais(fsi_soc_dai, ARRAY_SIZE(fsi_soc_dai));
+	return snd_soc_register_dais(&pdev->dev, fsi_soc_dai, ARRAY_SIZE(fsi_soc_dai));
 
 exit_free_irq:
 	free_irq(irq, master);
@@ -1171,10 +1163,10 @@
 {
 	struct fsi_master *master;
 
-	master = fsi_get_master(fsi_soc_dai[0].private_data);
+	master = dev_get_drvdata(&pdev->dev);
 
-	snd_soc_unregister_dais(fsi_soc_dai, ARRAY_SIZE(fsi_soc_dai));
-	snd_soc_unregister_platform(&fsi_soc_platform);
+	snd_soc_unregister_dais(&pdev->dev, ARRAY_SIZE(fsi_soc_dai));
+	snd_soc_unregister_platform(&pdev->dev);
 
 	pm_runtime_disable(&pdev->dev);
 
@@ -1183,11 +1175,6 @@
 	iounmap(master->base);
 	kfree(master);
 
-	fsi_soc_dai[0].dev		= NULL;
-	fsi_soc_dai[0].private_data	= NULL;
-	fsi_soc_dai[1].dev		= NULL;
-	fsi_soc_dai[1].private_data	= NULL;
-
 	return 0;
 }
 
@@ -1230,10 +1217,11 @@
 	{ "sh_fsi",	(kernel_ulong_t)&fsi1_core },
 	{ "sh_fsi2",	(kernel_ulong_t)&fsi2_core },
 };
+MODULE_DEVICE_TABLE(platform, fsi_id_table);
 
 static struct platform_driver fsi_driver = {
 	.driver 	= {
-		.name	= "sh_fsi",
+		.name	= "fsi-pcm-audio",
 		.pm	= &fsi_pm_ops,
 	},
 	.probe		= fsi_probe,
@@ -1250,6 +1238,7 @@
 {
 	platform_driver_unregister(&fsi_driver);
 }
+
 module_init(fsi_mobile_init);
 module_exit(fsi_mobile_exit);
 
diff --git a/sound/soc/sh/hac.c b/sound/soc/sh/hac.c
index 41db75a..c87e3ff 100644
--- a/sound/soc/sh/hac.c
+++ b/sound/soc/sh/hac.c
@@ -239,8 +239,7 @@
 			 struct snd_pcm_hw_params *params,
 			 struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct hac_priv *hac = &hac_cpu_data[rtd->dai->cpu_dai->id];
+	struct hac_priv *hac = &hac_cpu_data[dai->id];
 	int d = substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 0 : 1;
 
 	switch (params->msbits) {
@@ -271,10 +270,9 @@
 	.hw_params	= hac_hw_params,
 };
 
-struct snd_soc_dai sh4_hac_dai[] = {
+static struct snd_soc_dai_driver sh4_hac_dai[] = {
 {
-	.name			= "HAC0",
-	.id			= 0,
+	.name			= "hac-dai.0",
 	.ac97_control		= 1,
 	.playback = {
 		.rates		= AC97_RATES,
@@ -292,8 +290,7 @@
 },
 #ifdef CONFIG_CPU_SUBTYPE_SH7760
 {
-	.name			= "HAC1",
-	.ac97_control		= 1,
+	.name			= "hac-dai.1",
 	.id			= 1,
 	.playback = {
 		.rates		= AC97_RATES,
@@ -312,19 +309,40 @@
 },
 #endif
 };
-EXPORT_SYMBOL_GPL(sh4_hac_dai);
 
-static int __init sh4_hac_init(void)
+static int __devinit hac_soc_platform_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_dais(sh4_hac_dai, ARRAY_SIZE(sh4_hac_dai));
+	return snd_soc_register_dais(&pdev->dev, sh4_hac_dai,
+			ARRAY_SIZE(sh4_hac_dai));
 }
-module_init(sh4_hac_init);
 
-static void __exit sh4_hac_exit(void)
+static int __devexit hac_soc_platform_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_dais(sh4_hac_dai, ARRAY_SIZE(sh4_hac_dai));
+	snd_soc_unregister_dais(&pdev->dev, ARRAY_SIZE(sh4_hac_dai));
+	return 0;
 }
-module_exit(sh4_hac_exit);
+
+static struct platform_driver hac_pcm_driver = {
+	.driver = {
+			.name = "hac-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = hac_soc_platform_probe,
+	.remove = __devexit_p(hac_soc_platform_remove),
+};
+
+static int __init sh4_hac_pcm_init(void)
+{
+	return platform_driver_register(&hac_pcm_driver);
+}
+module_init(sh4_hac_pcm_init);
+
+static void __exit sh4_hac_pcm_exit(void)
+{
+	platform_driver_unregister(&hac_pcm_driver);
+}
+module_exit(sh4_hac_pcm_exit);
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("SuperH onchip HAC (AC97) audio driver");
diff --git a/sound/soc/sh/migor.c b/sound/soc/sh/migor.c
index 87e2b7fc..ac6c49c 100644
--- a/sound/soc/sh/migor.c
+++ b/sound/soc/sh/migor.c
@@ -51,7 +51,7 @@
 			   struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 	int ret;
 	unsigned int rate = params_rate(params);
 
@@ -69,7 +69,7 @@
 	if (ret < 0)
 		return ret;
 
-	ret = snd_soc_dai_set_fmt(rtd->dai->cpu_dai, SND_SOC_DAIFMT_NB_IF |
+	ret = snd_soc_dai_set_fmt(rtd->cpu_dai, SND_SOC_DAIFMT_NB_IF |
 				  SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS);
 	if (ret < 0)
 		return ret;
@@ -82,7 +82,7 @@
 	clk_set_rate(&siumckb_clk, codec_freq);
 	dev_dbg(codec_dai->dev, "%s: configure %luHz\n", __func__, codec_freq);
 
-	ret = snd_soc_dai_set_sysclk(rtd->dai->cpu_dai, SIU_CLKB_EXT,
+	ret = snd_soc_dai_set_sysclk(rtd->cpu_dai, SIU_CLKB_EXT,
 				     codec_freq / 2, SND_SOC_CLOCK_IN);
 
 	if (!ret)
@@ -94,7 +94,7 @@
 static int migor_hw_free(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 
 	if (use_count) {
 		use_count--;
@@ -137,8 +137,10 @@
 	{ "Mic Bias", NULL, "External Microphone" },
 };
 
-static int migor_dai_init(struct snd_soc_codec *codec)
+static int migor_dai_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_codec *codec = rtd->codec;
+
 	snd_soc_dapm_new_controls(codec, migor_dapm_widgets,
 				  ARRAY_SIZE(migor_dapm_widgets));
 
@@ -151,8 +153,10 @@
 static struct snd_soc_dai_link migor_dai = {
 	.name = "wm8978",
 	.stream_name = "WM8978",
-	.cpu_dai = &siu_i2s_dai,
-	.codec_dai = &wm8978_dai,
+	.cpu_dai_name = "siu-i2s-dai",
+	.codec_dai_name = "wm8978-hifi",
+	.platform_name = "siu-pcm-audio",
+	.codec_name = "wm8978.0-001a",
 	.ops = &migor_dai_ops,
 	.init = migor_dai_init,
 };
@@ -160,17 +164,10 @@
 /* migor audio machine driver */
 static struct snd_soc_card snd_soc_migor = {
 	.name = "Migo-R",
-	.platform = &siu_platform,
 	.dai_link = &migor_dai,
 	.num_links = 1,
 };
 
-/* migor audio subsystem */
-static struct snd_soc_device migor_snd_devdata = {
-	.card = &snd_soc_migor,
-	.codec_dev = &soc_codec_dev_wm8978,
-};
-
 static struct platform_device *migor_snd_device;
 
 static int __init migor_init(void)
@@ -195,9 +192,7 @@
 		goto epdevalloc;
 	}
 
-	platform_set_drvdata(migor_snd_device, &migor_snd_devdata);
-
-	migor_snd_devdata.dev = &migor_snd_device->dev;
+	platform_set_drvdata(migor_snd_device, &snd_soc_migor);
 
 	ret = platform_device_add(migor_snd_device);
 	if (ret)
diff --git a/sound/soc/sh/sh7760-ac97.c b/sound/soc/sh/sh7760-ac97.c
index ce7f95b..b897f7b 100644
--- a/sound/soc/sh/sh7760-ac97.c
+++ b/sound/soc/sh/sh7760-ac97.c
@@ -15,41 +15,35 @@
 #include <sound/soc-dapm.h>
 #include <asm/io.h>
 
-#include "../codecs/ac97.h"
-
 #define IPSEL 0xFE400034
 
 /* platform specific structs can be declared here */
-extern struct snd_soc_dai sh4_hac_dai[2];
-extern struct snd_soc_platform sh7760_soc_platform;
+extern struct snd_soc_dai_driver sh4_hac_dai[2];
+extern struct snd_soc_platform_driver sh7760_soc_platform;
 
-static int machine_init(struct snd_soc_codec *codec)
+static int machine_init(struct snd_soc_pcm_runtime *rtd)
 {
-	snd_soc_dapm_sync(codec);
+	snd_soc_dapm_sync(rtd->codec);
 	return 0;
 }
 
 static struct snd_soc_dai_link sh7760_ac97_dai = {
 	.name = "AC97",
 	.stream_name = "AC97 HiFi",
-	.cpu_dai = &sh4_hac_dai[0],	/* HAC0 */
-	.codec_dai = &ac97_dai,
+	.cpu_dai_name = "hac-dai.0",	/* HAC0 */
+	.codec_dai_name = "ac97-hifi",
+	.platform_name = "sh7760-pcm-audio",
+	.codec_name = "ac97-codec",
 	.init = machine_init,
 	.ops = NULL,
 };
 
 static struct snd_soc_card sh7760_ac97_soc_machine  = {
 	.name = "SH7760 AC97",
-	.platform = &sh7760_soc_platform,
 	.dai_link = &sh7760_ac97_dai,
 	.num_links = 1,
 };
 
-static struct snd_soc_device sh7760_ac97_snd_devdata = {
-	.card = &sh7760_ac97_soc_machine,
-	.codec_dev = &soc_codec_dev_ac97,
-};
-
 static struct platform_device *sh7760_ac97_snd_device;
 
 static int __init sh7760_ac97_init(void)
@@ -67,8 +61,7 @@
 		goto out;
 
 	platform_set_drvdata(sh7760_ac97_snd_device,
-			     &sh7760_ac97_snd_devdata);
-	sh7760_ac97_snd_devdata.dev = &sh7760_ac97_snd_device->dev;
+			     &sh7760_ac97_soc_machine);
 	ret = platform_device_add(sh7760_ac97_snd_device);
 
 	if (ret)
diff --git a/sound/soc/sh/siu.h b/sound/soc/sh/siu.h
index 492b1ca..9f4dcb9 100644
--- a/sound/soc/sh/siu.h
+++ b/sound/soc/sh/siu.h
@@ -98,7 +98,9 @@
 	SIU_CLKB_EXT
 };
 
+struct device;
 struct siu_info {
+	struct device		*dev;
 	int			port_id;
 	u32 __iomem		*pram;
 	u32 __iomem		*xram;
@@ -181,8 +183,8 @@
 #define SIU_BRGBSEL	(0x108 / sizeof(u32))
 #define SIU_BRRB	(0x10c / sizeof(u32))
 
-extern struct snd_soc_platform siu_platform;
-extern struct snd_soc_dai siu_i2s_dai;
+extern struct snd_soc_platform_driver siu_platform;
+extern struct siu_info *siu_i2s_data;
 
 int siu_init_port(int port, struct siu_port **port_info, struct snd_card *card);
 void siu_free_port(struct siu_port *port_info);
diff --git a/sound/soc/sh/siu_dai.c b/sound/soc/sh/siu_dai.c
index eeed5ed..af53b64 100644
--- a/sound/soc/sh/siu_dai.c
+++ b/sound/soc/sh/siu_dai.c
@@ -71,6 +71,8 @@
 	struct format_flag	capture;
 };
 
+struct siu_info *siu_i2s_data;
+
 static struct port_flag siu_flags[SIU_PORT_NUM] = {
 	[SIU_PORT_A] = {
 		.playback = {
@@ -104,13 +106,13 @@
 
 static void siu_dai_start(struct siu_port *port_info)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	u32 __iomem *base = info->reg;
 
 	dev_dbg(port_info->pcm->card->dev, "%s\n", __func__);
 
 	/* Turn on SIU clock */
-	pm_runtime_get_sync(siu_i2s_dai.dev);
+	pm_runtime_get_sync(info->dev);
 
 	/* Issue software reset to siu */
 	siu_write32(base + SIU_SRCTL, 0);
@@ -148,21 +150,21 @@
 	siu_write32(base + SIU_SBDVCB, port_info->capture.volume);
 }
 
-static void siu_dai_stop(void)
+static void siu_dai_stop(struct siu_port *port_info)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	u32 __iomem *base = info->reg;
 
 	/* SIU software reset */
 	siu_write32(base + SIU_SRCTL, 0);
 
 	/* Turn off SIU clock */
-	pm_runtime_put_sync(siu_i2s_dai.dev);
+	pm_runtime_put_sync(info->dev);
 }
 
 static void siu_dai_spbAselect(struct siu_port *port_info)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	struct siu_firmware *fw = &info->fw;
 	u32 *ydef = fw->yram0;
 	u32 idx;
@@ -187,7 +189,7 @@
 
 static void siu_dai_spbBselect(struct siu_port *port_info)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	struct siu_firmware *fw = &info->fw;
 	u32 *ydef = fw->yram0;
 	u32 idx;
@@ -207,7 +209,7 @@
 
 static void siu_dai_open(struct siu_stream *siu_stream)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	u32 __iomem *base = info->reg;
 	u32 srctl, ifctl;
 
@@ -238,7 +240,7 @@
  */
 static void siu_dai_pcmdatapack(struct siu_stream *siu_stream)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	u32 __iomem *base = info->reg;
 	u32 dpak;
 
@@ -258,7 +260,7 @@
 
 static int siu_dai_spbstart(struct siu_port *port_info)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	u32 __iomem *base = info->reg;
 	struct siu_firmware *fw = &info->fw;
 	u32 *ydef = fw->yram0;
@@ -323,7 +325,7 @@
 
 static void siu_dai_spbstop(struct siu_port *port_info)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	u32 __iomem *base = info->reg;
 
 	siu_write32(base + SIU_SBACTIV, 0);
@@ -402,7 +404,7 @@
 {
 	struct siu_port *port_info = snd_kcontrol_chip(kctrl);
 	struct device *dev = port_info->pcm->card->dev;
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	u32 __iomem *base = info->reg;
 	u32 new_vol;
 	u32 cur_vol;
@@ -510,7 +512,7 @@
 static int siu_dai_startup(struct snd_pcm_substream *substream,
 			   struct snd_soc_dai *dai)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = snd_soc_dai_get_drvdata(dai);
 	struct snd_pcm_runtime *rt = substream->runtime;
 	struct siu_port	*port_info = siu_port_info(substream);
 	int ret;
@@ -532,7 +534,7 @@
 static void siu_dai_shutdown(struct snd_pcm_substream *substream,
 			     struct snd_soc_dai *dai)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = snd_soc_dai_get_drvdata(dai);
 	struct siu_port	*port_info = siu_port_info(substream);
 
 	dev_dbg(substream->pcm->card->dev, "%s: port=%d@%p\n", __func__,
@@ -548,7 +550,7 @@
 		/* during stmread or stmwrite ? */
 		BUG_ON(port_info->playback.rw_flg || port_info->capture.rw_flg);
 		siu_dai_spbstop(port_info);
-		siu_dai_stop();
+		siu_dai_stop(port_info);
 	}
 }
 
@@ -556,7 +558,7 @@
 static int siu_dai_prepare(struct snd_pcm_substream *substream,
 			   struct snd_soc_dai *dai)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = snd_soc_dai_get_drvdata(dai);
 	struct snd_pcm_runtime *rt = substream->runtime;
 	struct siu_port *port_info = siu_port_info(substream);
 	struct siu_stream *siu_stream;
@@ -605,7 +607,7 @@
 static int siu_dai_set_fmt(struct snd_soc_dai *dai,
 			   unsigned int fmt)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = snd_soc_dai_get_drvdata(dai);
 	u32 __iomem *base = info->reg;
 	u32 ifctl;
 
@@ -671,21 +673,37 @@
 		return -EINVAL;
 	}
 
-	siu_clk = clk_get(siu_i2s_dai.dev, siu_name);
-	if (IS_ERR(siu_clk))
+	siu_clk = clk_get(dai->dev, siu_name);
+	if (IS_ERR(siu_clk)) {
+		dev_err(dai->dev, "%s: cannot get a SIU clock: %ld\n", __func__,
+			PTR_ERR(siu_clk));
 		return PTR_ERR(siu_clk);
-
-	parent_clk = clk_get(siu_i2s_dai.dev, parent_name);
-	if (!IS_ERR(parent_clk)) {
-		ret = clk_set_parent(siu_clk, parent_clk);
-		if (!ret)
-			clk_set_rate(siu_clk, freq);
-		clk_put(parent_clk);
 	}
 
+	parent_clk = clk_get(dai->dev, parent_name);
+	if (IS_ERR(parent_clk)) {
+		ret = PTR_ERR(parent_clk);
+		dev_err(dai->dev, "cannot get a SIU clock parent: %d\n", ret);
+		goto epclkget;
+	}
+
+	ret = clk_set_parent(siu_clk, parent_clk);
+	if (ret < 0) {
+		dev_err(dai->dev, "cannot reparent the SIU clock: %d\n", ret);
+		goto eclksetp;
+	}
+
+	ret = clk_set_rate(siu_clk, freq);
+	if (ret < 0)
+		dev_err(dai->dev, "cannot set SIU clock rate: %d\n", ret);
+
+	/* TODO: when clkdev gets reference counting we'll move these to siu_dai_shutdown() */
+eclksetp:
+	clk_put(parent_clk);
+epclkget:
 	clk_put(siu_clk);
 
-	return 0;
+	return ret;
 }
 
 static struct snd_soc_dai_ops siu_dai_ops = {
@@ -696,9 +714,8 @@
 	.set_fmt	= siu_dai_set_fmt,
 };
 
-struct snd_soc_dai siu_i2s_dai = {
-	.name = "sh-siu",
-	.id = 0,
+static struct snd_soc_dai_driver siu_i2s_dai = {
+	.name	= "siu-i2s-dai",
 	.playback = {
 		.channels_min = 2,
 		.channels_max = 2,
@@ -713,7 +730,6 @@
 	 },
 	.ops = &siu_dai_ops,
 };
-EXPORT_SYMBOL_GPL(siu_i2s_dai);
 
 static int __devinit siu_probe(struct platform_device *pdev)
 {
@@ -725,6 +741,8 @@
 	info = kmalloc(sizeof(*info), GFP_KERNEL);
 	if (!info)
 		return -ENOMEM;
+	siu_i2s_data = info;
+	info->dev = &pdev->dev;
 
 	ret = request_firmware(&fw_entry, "siu_spb.bin", &pdev->dev);
 	if (ret)
@@ -767,14 +785,14 @@
 	if (!info->reg)
 		goto emapreg;
 
-	siu_i2s_dai.dev = &pdev->dev;
-	siu_i2s_dai.private_data = info;
+	dev_set_drvdata(&pdev->dev, info);
 
-	ret = snd_soc_register_dais(&siu_i2s_dai, 1);
+	/* register using ARRAY version so we can keep dai name */
+	ret = snd_soc_register_dais(&pdev->dev, &siu_i2s_dai, 1);
 	if (ret < 0)
 		goto edaiinit;
 
-	ret = snd_soc_register_platform(&siu_platform);
+	ret = snd_soc_register_platform(&pdev->dev, &siu_platform);
 	if (ret < 0)
 		goto esocregp;
 
@@ -783,7 +801,7 @@
 	return ret;
 
 esocregp:
-	snd_soc_unregister_dais(&siu_i2s_dai, 1);
+	snd_soc_unregister_dai(&pdev->dev);
 edaiinit:
 	iounmap(info->reg);
 emapreg:
@@ -804,13 +822,13 @@
 
 static int __devexit siu_remove(struct platform_device *pdev)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = dev_get_drvdata(&pdev->dev);
 	struct resource *res;
 
 	pm_runtime_disable(&pdev->dev);
 
-	snd_soc_unregister_platform(&siu_platform);
-	snd_soc_unregister_dais(&siu_i2s_dai, 1);
+	snd_soc_unregister_platform(&pdev->dev);
+	snd_soc_unregister_dai(&pdev->dev);
 
 	iounmap(info->reg);
 	iounmap(info->yram);
@@ -826,7 +844,8 @@
 
 static struct platform_driver siu_driver = {
 	.driver 	= {
-		.name	= "sh_siu",
+		.owner	= THIS_MODULE,
+		.name	= "siu-pcm-audio",
 	},
 	.probe		= siu_probe,
 	.remove		= __devexit_p(siu_remove),
diff --git a/sound/soc/sh/siu_pcm.c b/sound/soc/sh/siu_pcm.c
index 36170be..d6c79fa 100644
--- a/sound/soc/sh/siu_pcm.c
+++ b/sound/soc/sh/siu_pcm.c
@@ -48,7 +48,7 @@
 /* transfersize is number of u32 dma transfers per period */
 static int siu_pcm_stmwrite_stop(struct siu_port *port_info)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	u32 __iomem *base = info->reg;
 	struct siu_stream *siu_stream = &port_info->playback;
 	u32 stfifo;
@@ -114,7 +114,7 @@
 static int siu_pcm_wr_set(struct siu_port *port_info,
 			  dma_addr_t buff, u32 size)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	u32 __iomem *base = info->reg;
 	struct siu_stream *siu_stream = &port_info->playback;
 	struct snd_pcm_substream *substream = siu_stream->substream;
@@ -161,7 +161,7 @@
 static int siu_pcm_rd_set(struct siu_port *port_info,
 			  dma_addr_t buff, size_t size)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	u32 __iomem *base = info->reg;
 	struct siu_stream *siu_stream = &port_info->capture;
 	struct snd_pcm_substream *substream = siu_stream->substream;
@@ -270,7 +270,7 @@
 
 static int siu_pcm_stmread_stop(struct siu_port *port_info)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	u32 __iomem *base = info->reg;
 	struct siu_stream *siu_stream = &port_info->capture;
 	struct device *dev = siu_stream->substream->pcm->card->dev;
@@ -294,7 +294,7 @@
 static int siu_pcm_hw_params(struct snd_pcm_substream *ss,
 			     struct snd_pcm_hw_params *hw_params)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	struct device *dev = ss->pcm->card->dev;
 	int ret;
 
@@ -309,7 +309,7 @@
 
 static int siu_pcm_hw_free(struct snd_pcm_substream *ss)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	struct siu_port	*port_info = siu_port_info(ss);
 	struct device *dev = ss->pcm->card->dev;
 	struct siu_stream *siu_stream;
@@ -340,11 +340,12 @@
 static int siu_pcm_open(struct snd_pcm_substream *ss)
 {
 	/* Playback / Capture */
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct snd_soc_pcm_runtime *rtd = ss->private_data;
+	struct siu_platform *pdata = rtd->platform->dev->platform_data;
+	struct siu_info *info = siu_i2s_data;
 	struct siu_port *port_info = siu_port_info(ss);
 	struct siu_stream *siu_stream;
 	u32 port = info->port_id;
-	struct siu_platform *pdata = siu_i2s_dai.dev->platform_data;
 	struct device *dev = ss->pcm->card->dev;
 	dma_cap_mask_t mask;
 	struct sh_dmae_slave *param;
@@ -381,7 +382,7 @@
 
 static int siu_pcm_close(struct snd_pcm_substream *ss)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	struct device *dev = ss->pcm->card->dev;
 	struct siu_port *port_info = siu_port_info(ss);
 	struct siu_stream *siu_stream;
@@ -403,7 +404,7 @@
 
 static int siu_pcm_prepare(struct snd_pcm_substream *ss)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	struct siu_port *port_info = siu_port_info(ss);
 	struct device *dev = ss->pcm->card->dev;
 	struct snd_pcm_runtime 	*rt = ss->runtime;
@@ -449,7 +450,7 @@
 
 static int siu_pcm_trigger(struct snd_pcm_substream *ss, int cmd)
 {
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	struct device *dev = ss->pcm->card->dev;
 	struct siu_port *port_info = siu_port_info(ss);
 	int ret;
@@ -492,7 +493,7 @@
 static snd_pcm_uframes_t siu_pcm_pointer_dma(struct snd_pcm_substream *ss)
 {
 	struct device *dev = ss->pcm->card->dev;
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	u32 __iomem *base = info->reg;
 	struct siu_port *port_info = siu_port_info(ss);
 	struct snd_pcm_runtime *rt = ss->runtime;
@@ -528,7 +529,7 @@
 		       struct snd_pcm *pcm)
 {
 	/* card->dev == socdev->dev, see snd_soc_new_pcms() */
-	struct siu_info *info = siu_i2s_dai.private_data;
+	struct siu_info *info = siu_i2s_data;
 	struct platform_device *pdev = to_platform_device(card->dev);
 	int ret;
 	int i;
@@ -605,9 +606,8 @@
 	.pointer	= siu_pcm_pointer_dma,
 };
 
-struct snd_soc_platform siu_platform = {
-	.name		= "siu-audio",
-	.pcm_ops 	= &siu_pcm_ops,
+struct snd_soc_platform_driver siu_platform = {
+	.ops			= &siu_pcm_ops,
 	.pcm_new	= siu_pcm_new,
 	.pcm_free	= siu_pcm_free,
 };
diff --git a/sound/soc/sh/ssi.c b/sound/soc/sh/ssi.c
index b378096..40bbdf1 100644
--- a/sound/soc/sh/ssi.c
+++ b/sound/soc/sh/ssi.c
@@ -92,8 +92,7 @@
 static int ssi_startup(struct snd_pcm_substream *substream,
 		       struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct ssi_priv *ssi = &ssi_cpu_data[rtd->dai->cpu_dai->id];
+	struct ssi_priv *ssi = &ssi_cpu_data[dai->id];
 	if (ssi->inuse) {
 		pr_debug("ssi: already in use!\n");
 		return -EBUSY;
@@ -105,8 +104,7 @@
 static void ssi_shutdown(struct snd_pcm_substream *substream,
 			 struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct ssi_priv *ssi = &ssi_cpu_data[rtd->dai->cpu_dai->id];
+	struct ssi_priv *ssi = &ssi_cpu_data[dai->id];
 
 	ssi->inuse = 0;
 }
@@ -114,8 +112,7 @@
 static int ssi_trigger(struct snd_pcm_substream *substream, int cmd,
 		       struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct ssi_priv *ssi = &ssi_cpu_data[rtd->dai->cpu_dai->id];
+	struct ssi_priv *ssi = &ssi_cpu_data[dai->id];
 
 	switch (cmd) {
 	case SNDRV_PCM_TRIGGER_START:
@@ -135,8 +132,7 @@
 			 struct snd_pcm_hw_params *params,
 			 struct snd_soc_dai *dai)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct ssi_priv *ssi = &ssi_cpu_data[rtd->dai->cpu_dai->id];
+	struct ssi_priv *ssi = &ssi_cpu_data[dai->id];
 	unsigned long ssicr = SSIREG(SSICR);
 	unsigned int bits, channels, swl, recv, i;
 
@@ -346,10 +342,9 @@
 	.set_fmt	= ssi_set_fmt,
 };
 
-struct snd_soc_dai sh4_ssi_dai[] = {
+struct snd_soc_dai_driver sh4_ssi_dai[] = {
 {
-	.name			= "SSI0",
-	.id			= 0,
+	.name			= "ssi-dai.0",
 	.playback = {
 		.rates		= SSI_RATES,
 		.formats	= SSI_FMTS,
@@ -366,8 +361,7 @@
 },
 #ifdef CONFIG_CPU_SUBTYPE_SH7760
 {
-	.name			= "SSI1",
-	.id			= 1,
+	.name			= "ssi-dai.1",
 	.playback = {
 		.rates		= SSI_RATES,
 		.formats	= SSI_FMTS,
@@ -384,19 +378,40 @@
 },
 #endif
 };
-EXPORT_SYMBOL_GPL(sh4_ssi_dai);
 
-static int __init sh4_ssi_init(void)
+static int __devinit sh4_soc_dai_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_dais(sh4_ssi_dai, ARRAY_SIZE(sh4_ssi_dai));
+	return snd_soc_register_dais(&pdev->dev, sh4_ssi_dai,
+			ARRAY_SIZE(sh4_ssi_dai));
 }
-module_init(sh4_ssi_init);
 
-static void __exit sh4_ssi_exit(void)
+static int __devexit sh4_soc_dai_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_dais(sh4_ssi_dai, ARRAY_SIZE(sh4_ssi_dai));
+	snd_soc_unregister_dai(&pdev->dev, ARRAY_SIZE(sh4_ssi_dai));
+	return 0;
 }
-module_exit(sh4_ssi_exit);
+
+static struct platform_driver sh4_ssi_driver = {
+	.driver = {
+			.name = "sh4-ssi-dai",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = sh4_soc_dai_probe,
+	.remove = __devexit_p(sh4_soc_dai_remove),
+};
+
+static int __init snd_sh4_ssi_init(void)
+{
+	return platform_driver_register(&sh4_ssi_driver);
+}
+module_init(snd_sh4_ssi_init);
+
+static void __exit snd_sh4_ssi_exit(void)
+{
+	platform_driver_unregister(&sh4_ssi_driver);
+}
+module_exit(snd_sh4_ssi_exit);
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("SuperH onchip SSI (I2S) audio driver");
diff --git a/sound/soc/soc-cache.c b/sound/soc/soc-cache.c
index f6b0d28..d4f11fb 100644
--- a/sound/soc/soc-cache.c
+++ b/sound/soc/soc-cache.c
@@ -19,7 +19,7 @@
 				     unsigned int reg)
 {
 	u16 *cache = codec->reg_cache;
-	if (reg >= codec->reg_cache_size)
+	if (reg >= codec->driver->reg_cache_size)
 		return -1;
 	return cache[reg];
 }
@@ -31,12 +31,12 @@
 	u8 data[2];
 	int ret;
 
-	BUG_ON(codec->volatile_register);
+	BUG_ON(codec->driver->volatile_register);
 
 	data[0] = (reg << 4) | ((value >> 8) & 0x000f);
 	data[1] = value & 0x00ff;
 
-	if (reg < codec->reg_cache_size)
+	if (reg < codec->driver->reg_cache_size)
 		cache[reg] = value;
 
 	if (codec->cache_only) {
@@ -89,7 +89,7 @@
 				     unsigned int reg)
 {
 	u16 *cache = codec->reg_cache;
-	if (reg >= codec->reg_cache_size)
+	if (reg >= codec->driver->reg_cache_size)
 		return -1;
 	return cache[reg];
 }
@@ -101,12 +101,12 @@
 	u8 data[2];
 	int ret;
 
-	BUG_ON(codec->volatile_register);
+	BUG_ON(codec->driver->volatile_register);
 
 	data[0] = (reg << 1) | ((value >> 8) & 0x0001);
 	data[1] = value & 0x00ff;
 
-	if (reg < codec->reg_cache_size)
+	if (reg < codec->driver->reg_cache_size)
 		cache[reg] = value;
 
 	if (codec->cache_only) {
@@ -161,13 +161,13 @@
 	u8 *cache = codec->reg_cache;
 	u8 data[2];
 
-	BUG_ON(codec->volatile_register);
+	BUG_ON(codec->driver->volatile_register);
 
 	reg &= 0xff;
 	data[0] = reg;
 	data[1] = value & 0xff;
 
-	if (reg < codec->reg_cache_size)
+	if (reg < codec->driver->reg_cache_size)
 		cache[reg] = value;
 
 	if (codec->cache_only) {
@@ -188,7 +188,7 @@
 {
 	u8 *cache = codec->reg_cache;
 	reg &= 0xff;
-	if (reg >= codec->reg_cache_size)
+	if (reg >= codec->driver->reg_cache_size)
 		return -1;
 	return cache[reg];
 }
@@ -225,10 +225,10 @@
 {
 	u16 *cache = codec->reg_cache;
 
-	if (reg >= codec->reg_cache_size ||
+	if (reg >= codec->driver->reg_cache_size ||
 	    snd_soc_codec_volatile_register(codec, reg)) {
 		if (codec->cache_only)
-			return -EINVAL;
+			return -1;
 
 		return codec->hw_read(codec, reg);
 	} else {
@@ -344,7 +344,7 @@
 	u8 *cache = codec->reg_cache;
 
 	reg &= 0xff;
-	if (reg >= codec->reg_cache_size)
+	if (reg >= codec->driver->reg_cache_size)
 		return -1;
 	return cache[reg];
 }
@@ -356,14 +356,14 @@
 	u8 data[3];
 	int ret;
 
-	BUG_ON(codec->volatile_register);
+	BUG_ON(codec->driver->volatile_register);
 
 	data[0] = (reg >> 8) & 0xff;
 	data[1] = reg & 0xff;
 	data[2] = value;
 
 	reg &= 0xff;
-	if (reg < codec->reg_cache_size)
+	if (reg < codec->driver->reg_cache_size)
 		cache[reg] = value;
 
 	if (codec->cache_only) {
@@ -452,10 +452,10 @@
 {
 	u16 *cache = codec->reg_cache;
 
-	if (reg >= codec->reg_cache_size ||
+	if (reg >= codec->driver->reg_cache_size ||
 	    snd_soc_codec_volatile_register(codec, reg)) {
 		if (codec->cache_only)
-			return -EINVAL;
+			return -1;
 
 		return codec->hw_read(codec, reg);
 	}
@@ -475,7 +475,7 @@
 	data[2] = (value >> 8) & 0xff;
 	data[3] = value & 0xff;
 
-	if (reg < codec->reg_cache_size)
+	if (reg < codec->driver->reg_cache_size)
 		cache[reg] = value;
 
 	if (codec->cache_only) {
@@ -572,8 +572,8 @@
 		return -EINVAL;
 	}
 
-	codec->write = io_types[i].write;
-	codec->read = io_types[i].read;
+	codec->driver->write = io_types[i].write;
+	codec->driver->read = io_types[i].read;
 
 	switch (control) {
 	case SND_SOC_CUSTOM:
@@ -585,11 +585,19 @@
 #endif
 		if (io_types[i].i2c_read)
 			codec->hw_read = io_types[i].i2c_read;
+
+		codec->control_data = container_of(codec->dev,
+						   struct i2c_client,
+						   dev);
 		break;
 
 	case SND_SOC_SPI:
 		if (io_types[i].spi_write)
 			codec->hw_write = io_types[i].spi_write;
+
+		codec->control_data = container_of(codec->dev,
+						   struct spi_device,
+						   dev);
 		break;
 	}
 
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index acc91da..8751efd 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -3,6 +3,8 @@
  *
  * Copyright 2005 Wolfson Microelectronics PLC.
  * Copyright 2005 Openedhand Ltd.
+ * Copyright (C) 2010 Slimlogic Ltd.
+ * Copyright (C) 2010 Texas Instruments Inc.
  *
  * Author: Liam Girdwood <lrg@slimlogic.co.uk>
  *         with code, comments and ideas from :-
@@ -37,6 +39,8 @@
 #include <sound/soc-dapm.h>
 #include <sound/initval.h>
 
+#define NAME_SIZE	32
+
 static DEFINE_MUTEX(pcm_mutex);
 static DECLARE_WAIT_QUEUE_HEAD(soc_pm_waitq);
 
@@ -52,6 +56,7 @@
 
 static int snd_soc_register_card(struct snd_soc_card *card);
 static int snd_soc_unregister_card(struct snd_soc_card *card);
+static int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num);
 
 /*
  * This is a timeout to do a DAPM powerdown after a stream is closed().
@@ -86,30 +91,30 @@
 {
 	int ret, i, step = 1, count = 0;
 
-	if (!codec->reg_cache_size)
+	if (!codec->driver->reg_cache_size)
 		return 0;
 
-	if (codec->reg_cache_step)
-		step = codec->reg_cache_step;
+	if (codec->driver->reg_cache_step)
+		step = codec->driver->reg_cache_step;
 
 	count += sprintf(buf, "%s registers\n", codec->name);
-	for (i = 0; i < codec->reg_cache_size; i += step) {
-		if (codec->readable_register && !codec->readable_register(i))
+	for (i = 0; i < codec->driver->reg_cache_size; i += step) {
+		if (codec->driver->readable_register && !codec->driver->readable_register(i))
 			continue;
 
 		count += sprintf(buf + count, "%2x: ", i);
 		if (count >= PAGE_SIZE - 1)
 			break;
 
-		if (codec->display_register) {
-			count += codec->display_register(codec, buf + count,
+		if (codec->driver->display_register) {
+			count += codec->driver->display_register(codec, buf + count,
 							 PAGE_SIZE - count, i);
 		} else {
 			/* If the read fails it's almost certainly due to
 			 * the register being volatile and the device being
 			 * powered off.
 			 */
-			ret = codec->read(codec, i);
+			ret = codec->driver->read(codec, i);
 			if (ret >= 0)
 				count += snprintf(buf + count,
 						  PAGE_SIZE - count,
@@ -137,8 +142,10 @@
 static ssize_t codec_reg_show(struct device *dev,
 	struct device_attribute *attr, char *buf)
 {
-	struct snd_soc_device *devdata = dev_get_drvdata(dev);
-	return soc_codec_reg_show(devdata->card->codec, buf);
+	struct snd_soc_pcm_runtime *rtd =
+			container_of(dev, struct snd_soc_pcm_runtime, dev);
+
+	return soc_codec_reg_show(rtd->codec, buf);
 }
 
 static DEVICE_ATTR(codec_reg, 0444, codec_reg_show, NULL);
@@ -146,20 +153,20 @@
 static ssize_t pmdown_time_show(struct device *dev,
 				struct device_attribute *attr, char *buf)
 {
-	struct snd_soc_device *socdev = dev_get_drvdata(dev);
-	struct snd_soc_card *card = socdev->card;
+	struct snd_soc_pcm_runtime *rtd =
+			container_of(dev, struct snd_soc_pcm_runtime, dev);
 
-	return sprintf(buf, "%ld\n", card->pmdown_time);
+	return sprintf(buf, "%ld\n", rtd->pmdown_time);
 }
 
 static ssize_t pmdown_time_set(struct device *dev,
 			       struct device_attribute *attr,
 			       const char *buf, size_t count)
 {
-	struct snd_soc_device *socdev = dev_get_drvdata(dev);
-	struct snd_soc_card *card = socdev->card;
+	struct snd_soc_pcm_runtime *rtd =
+			container_of(dev, struct snd_soc_pcm_runtime, dev);
 
-	strict_strtol(buf, 10, &card->pmdown_time);
+	strict_strtol(buf, 10, &rtd->pmdown_time);
 
 	return count;
 }
@@ -203,19 +210,19 @@
 		return -EFAULT;
 	buf[buf_size] = 0;
 
-	if (codec->reg_cache_step)
-		step = codec->reg_cache_step;
+	if (codec->driver->reg_cache_step)
+		step = codec->driver->reg_cache_step;
 
 	while (*start == ' ')
 		start++;
 	reg = simple_strtoul(start, &start, 16);
-	if ((reg >= codec->reg_cache_size) || (reg % step))
+	if ((reg >= codec->driver->reg_cache_size) || (reg % step))
 		return -EINVAL;
 	while (*start == ' ')
 		start++;
 	if (strict_strtoul(start, 16, &value))
 		return -EINVAL;
-	codec->write(codec, reg, value);
+	codec->driver->write(codec, reg, value);
 	return buf_size;
 }
 
@@ -227,16 +234,7 @@
 
 static void soc_init_codec_debugfs(struct snd_soc_codec *codec)
 {
-	char codec_root[128];
-
-	if (codec->dev)
-		snprintf(codec_root, sizeof(codec_root),
-			"%s.%s", codec->name, dev_name(codec->dev));
-	else
-		snprintf(codec_root, sizeof(codec_root),
-			"%s", codec->name);
-
-	codec->debugfs_codec_root = debugfs_create_dir(codec_root,
+	codec->debugfs_codec_root = debugfs_create_dir(codec->name ,
 						       debugfs_root);
 	if (!codec->debugfs_codec_root) {
 		printk(KERN_WARNING
@@ -272,6 +270,87 @@
 	debugfs_remove_recursive(codec->debugfs_codec_root);
 }
 
+static ssize_t codec_list_read_file(struct file *file, char __user *user_buf,
+				    size_t count, loff_t *ppos)
+{
+	char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
+	ssize_t ret = 0;
+	struct snd_soc_codec *codec;
+
+	if (!buf)
+		return -ENOMEM;
+
+	list_for_each_entry(codec, &codec_list, list)
+		ret += snprintf(buf + ret, PAGE_SIZE - ret, "%s\n",
+				codec->name);
+
+	if (ret >= 0)
+		ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret);
+
+	kfree(buf);
+
+	return ret;
+}
+
+static const struct file_operations codec_list_fops = {
+	.read = codec_list_read_file,
+	.llseek = default_llseek,/* read accesses f_pos */
+};
+
+static ssize_t dai_list_read_file(struct file *file, char __user *user_buf,
+				  size_t count, loff_t *ppos)
+{
+	char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
+	ssize_t ret = 0;
+	struct snd_soc_dai *dai;
+
+	if (!buf)
+		return -ENOMEM;
+
+	list_for_each_entry(dai, &dai_list, list)
+		ret += snprintf(buf + ret, PAGE_SIZE - ret, "%s\n", dai->name);
+
+	if (ret >= 0)
+		ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret);
+
+	kfree(buf);
+
+	return ret;
+}
+
+static const struct file_operations dai_list_fops = {
+	.read = dai_list_read_file,
+	.llseek = default_llseek,/* read accesses f_pos */
+};
+
+static ssize_t platform_list_read_file(struct file *file,
+				       char __user *user_buf,
+				       size_t count, loff_t *ppos)
+{
+	char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
+	ssize_t ret = 0;
+	struct snd_soc_platform *platform;
+
+	if (!buf)
+		return -ENOMEM;
+
+	list_for_each_entry(platform, &platform_list, list)
+		ret += snprintf(buf + ret, PAGE_SIZE - ret, "%s\n",
+				platform->name);
+
+	if (ret >= 0)
+		ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret);
+
+	kfree(buf);
+
+	return ret;
+}
+
+static const struct file_operations platform_list_fops = {
+	.read = platform_list_read_file,
+	.llseek = default_llseek,/* read accesses f_pos */
+};
+
 #else
 
 static inline void soc_init_codec_debugfs(struct snd_soc_codec *codec)
@@ -305,7 +384,7 @@
 	codec->ac97->dev.release = soc_ac97_device_release;
 
 	dev_set_name(&codec->ac97->dev, "%d-%d:%s",
-		     codec->card->number, 0, codec->name);
+		     codec->card->snd_card->number, 0, codec->name);
 	err = device_register(&codec->ac97->dev);
 	if (err < 0) {
 		snd_printk(KERN_ERR "Can't register ac97 bus\n");
@@ -319,24 +398,21 @@
 static int soc_pcm_apply_symmetry(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_card *card = socdev->card;
-	struct snd_soc_dai_link *machine = rtd->dai;
-	struct snd_soc_dai *cpu_dai = machine->cpu_dai;
-	struct snd_soc_dai *codec_dai = machine->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 	int ret;
 
-	if (codec_dai->symmetric_rates || cpu_dai->symmetric_rates ||
-	    machine->symmetric_rates) {
-		dev_dbg(card->dev, "Symmetry forces %dHz rate\n",
-			machine->rate);
+	if (codec_dai->driver->symmetric_rates || cpu_dai->driver->symmetric_rates ||
+			rtd->dai_link->symmetric_rates) {
+		dev_dbg(&rtd->dev, "Symmetry forces %dHz rate\n",
+				rtd->rate);
 
 		ret = snd_pcm_hw_constraint_minmax(substream->runtime,
 						   SNDRV_PCM_HW_PARAM_RATE,
-						   machine->rate,
-						   machine->rate);
+						   rtd->rate,
+						   rtd->rate);
 		if (ret < 0) {
-			dev_err(card->dev,
+			dev_err(&rtd->dev,
 				"Unable to apply rate symmetry constraint: %d\n", ret);
 			return ret;
 		}
@@ -353,20 +429,19 @@
 static int soc_pcm_open(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_card *card = socdev->card;
 	struct snd_pcm_runtime *runtime = substream->runtime;
-	struct snd_soc_dai_link *machine = rtd->dai;
-	struct snd_soc_platform *platform = card->platform;
-	struct snd_soc_dai *cpu_dai = machine->cpu_dai;
-	struct snd_soc_dai *codec_dai = machine->codec_dai;
+	struct snd_soc_platform *platform = rtd->platform;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai_driver *cpu_dai_drv = cpu_dai->driver;
+	struct snd_soc_dai_driver *codec_dai_drv = codec_dai->driver;
 	int ret = 0;
 
 	mutex_lock(&pcm_mutex);
 
 	/* startup the audio subsystem */
-	if (cpu_dai->ops->startup) {
-		ret = cpu_dai->ops->startup(substream, cpu_dai);
+	if (cpu_dai->driver->ops->startup) {
+		ret = cpu_dai->driver->ops->startup(substream, cpu_dai);
 		if (ret < 0) {
 			printk(KERN_ERR "asoc: can't open interface %s\n",
 				cpu_dai->name);
@@ -374,16 +449,16 @@
 		}
 	}
 
-	if (platform->pcm_ops->open) {
-		ret = platform->pcm_ops->open(substream);
+	if (platform->driver->ops->open) {
+		ret = platform->driver->ops->open(substream);
 		if (ret < 0) {
 			printk(KERN_ERR "asoc: can't open platform %s\n", platform->name);
 			goto platform_err;
 		}
 	}
 
-	if (codec_dai->ops->startup) {
-		ret = codec_dai->ops->startup(substream, codec_dai);
+	if (codec_dai->driver->ops->startup) {
+		ret = codec_dai->driver->ops->startup(substream, codec_dai);
 		if (ret < 0) {
 			printk(KERN_ERR "asoc: can't open codec %s\n",
 				codec_dai->name);
@@ -391,10 +466,10 @@
 		}
 	}
 
-	if (machine->ops && machine->ops->startup) {
-		ret = machine->ops->startup(substream);
+	if (rtd->dai_link->ops && rtd->dai_link->ops->startup) {
+		ret = rtd->dai_link->ops->startup(substream);
 		if (ret < 0) {
-			printk(KERN_ERR "asoc: %s startup failed\n", machine->name);
+			printk(KERN_ERR "asoc: %s startup failed\n", rtd->dai_link->name);
 			goto machine_err;
 		}
 	}
@@ -402,50 +477,50 @@
 	/* Check that the codec and cpu DAI's are compatible */
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
 		runtime->hw.rate_min =
-			max(codec_dai->playback.rate_min,
-			    cpu_dai->playback.rate_min);
+			max(codec_dai_drv->playback.rate_min,
+			    cpu_dai_drv->playback.rate_min);
 		runtime->hw.rate_max =
-			min(codec_dai->playback.rate_max,
-			    cpu_dai->playback.rate_max);
+			min(codec_dai_drv->playback.rate_max,
+			    cpu_dai_drv->playback.rate_max);
 		runtime->hw.channels_min =
-			max(codec_dai->playback.channels_min,
-				cpu_dai->playback.channels_min);
+			max(codec_dai_drv->playback.channels_min,
+				cpu_dai_drv->playback.channels_min);
 		runtime->hw.channels_max =
-			min(codec_dai->playback.channels_max,
-				cpu_dai->playback.channels_max);
+			min(codec_dai_drv->playback.channels_max,
+				cpu_dai_drv->playback.channels_max);
 		runtime->hw.formats =
-			codec_dai->playback.formats & cpu_dai->playback.formats;
+			codec_dai_drv->playback.formats & cpu_dai_drv->playback.formats;
 		runtime->hw.rates =
-			codec_dai->playback.rates & cpu_dai->playback.rates;
-		if (codec_dai->playback.rates
+			codec_dai_drv->playback.rates & cpu_dai_drv->playback.rates;
+		if (codec_dai_drv->playback.rates
 			   & (SNDRV_PCM_RATE_KNOT | SNDRV_PCM_RATE_CONTINUOUS))
-			runtime->hw.rates |= cpu_dai->playback.rates;
-		if (cpu_dai->playback.rates
+			runtime->hw.rates |= cpu_dai_drv->playback.rates;
+		if (cpu_dai_drv->playback.rates
 			   & (SNDRV_PCM_RATE_KNOT | SNDRV_PCM_RATE_CONTINUOUS))
-			runtime->hw.rates |= codec_dai->playback.rates;
+			runtime->hw.rates |= codec_dai_drv->playback.rates;
 	} else {
 		runtime->hw.rate_min =
-			max(codec_dai->capture.rate_min,
-			    cpu_dai->capture.rate_min);
+			max(codec_dai_drv->capture.rate_min,
+			    cpu_dai_drv->capture.rate_min);
 		runtime->hw.rate_max =
-			min(codec_dai->capture.rate_max,
-			    cpu_dai->capture.rate_max);
+			min(codec_dai_drv->capture.rate_max,
+			    cpu_dai_drv->capture.rate_max);
 		runtime->hw.channels_min =
-			max(codec_dai->capture.channels_min,
-				cpu_dai->capture.channels_min);
+			max(codec_dai_drv->capture.channels_min,
+				cpu_dai_drv->capture.channels_min);
 		runtime->hw.channels_max =
-			min(codec_dai->capture.channels_max,
-				cpu_dai->capture.channels_max);
+			min(codec_dai_drv->capture.channels_max,
+				cpu_dai_drv->capture.channels_max);
 		runtime->hw.formats =
-			codec_dai->capture.formats & cpu_dai->capture.formats;
+			codec_dai_drv->capture.formats & cpu_dai_drv->capture.formats;
 		runtime->hw.rates =
-			codec_dai->capture.rates & cpu_dai->capture.rates;
-		if (codec_dai->capture.rates
+			codec_dai_drv->capture.rates & cpu_dai_drv->capture.rates;
+		if (codec_dai_drv->capture.rates
 			   & (SNDRV_PCM_RATE_KNOT | SNDRV_PCM_RATE_CONTINUOUS))
-			runtime->hw.rates |= cpu_dai->capture.rates;
-		if (cpu_dai->capture.rates
+			runtime->hw.rates |= cpu_dai_drv->capture.rates;
+		if (cpu_dai_drv->capture.rates
 			   & (SNDRV_PCM_RATE_KNOT | SNDRV_PCM_RATE_CONTINUOUS))
-			runtime->hw.rates |= codec_dai->capture.rates;
+			runtime->hw.rates |= codec_dai_drv->capture.rates;
 	}
 
 	snd_pcm_limit_hw_rates(runtime);
@@ -461,7 +536,7 @@
 	}
 	if (!runtime->hw.channels_min || !runtime->hw.channels_max) {
 		printk(KERN_ERR "asoc: %s <-> %s No matching channels\n",
-			codec_dai->name, cpu_dai->name);
+				codec_dai->name, cpu_dai->name);
 		goto config_err;
 	}
 
@@ -472,7 +547,8 @@
 			goto config_err;
 	}
 
-	pr_debug("asoc: %s <-> %s info:\n", codec_dai->name, cpu_dai->name);
+	pr_debug("asoc: %s <-> %s info:\n",
+			codec_dai->name, cpu_dai->name);
 	pr_debug("asoc: rate mask 0x%x\n", runtime->hw.rates);
 	pr_debug("asoc: min ch %d max ch %d\n", runtime->hw.channels_min,
 		 runtime->hw.channels_max);
@@ -480,33 +556,33 @@
 		 runtime->hw.rate_max);
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-		cpu_dai->playback.active++;
-		codec_dai->playback.active++;
+		cpu_dai->playback_active++;
+		codec_dai->playback_active++;
 	} else {
-		cpu_dai->capture.active++;
-		codec_dai->capture.active++;
+		cpu_dai->capture_active++;
+		codec_dai->capture_active++;
 	}
 	cpu_dai->active++;
 	codec_dai->active++;
-	card->codec->active++;
+	rtd->codec->active++;
 	mutex_unlock(&pcm_mutex);
 	return 0;
 
 config_err:
-	if (machine->ops && machine->ops->shutdown)
-		machine->ops->shutdown(substream);
+	if (rtd->dai_link->ops && rtd->dai_link->ops->shutdown)
+		rtd->dai_link->ops->shutdown(substream);
 
 machine_err:
-	if (codec_dai->ops->shutdown)
-		codec_dai->ops->shutdown(substream, codec_dai);
+	if (codec_dai->driver->ops->shutdown)
+		codec_dai->driver->ops->shutdown(substream, codec_dai);
 
 codec_dai_err:
-	if (platform->pcm_ops->close)
-		platform->pcm_ops->close(substream);
+	if (platform->driver->ops->close)
+		platform->driver->ops->close(substream);
 
 platform_err:
-	if (cpu_dai->ops->shutdown)
-		cpu_dai->ops->shutdown(substream, cpu_dai);
+	if (cpu_dai->driver->ops->shutdown)
+		cpu_dai->driver->ops->shutdown(substream, cpu_dai);
 out:
 	mutex_unlock(&pcm_mutex);
 	return ret;
@@ -519,29 +595,25 @@
  */
 static void close_delayed_work(struct work_struct *work)
 {
-	struct snd_soc_card *card = container_of(work, struct snd_soc_card,
-						 delayed_work.work);
-	struct snd_soc_codec *codec = card->codec;
-	struct snd_soc_dai *codec_dai;
-	int i;
+	struct snd_soc_pcm_runtime *rtd =
+			container_of(work, struct snd_soc_pcm_runtime, delayed_work.work);
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 
 	mutex_lock(&pcm_mutex);
-	for (i = 0; i < codec->num_dai; i++) {
-		codec_dai = &codec->dai[i];
 
-		pr_debug("pop wq checking: %s status: %s waiting: %s\n",
-			 codec_dai->playback.stream_name,
-			 codec_dai->playback.active ? "active" : "inactive",
-			 codec_dai->pop_wait ? "yes" : "no");
+	pr_debug("pop wq checking: %s status: %s waiting: %s\n",
+		 codec_dai->driver->playback.stream_name,
+		 codec_dai->playback_active ? "active" : "inactive",
+		 codec_dai->pop_wait ? "yes" : "no");
 
-		/* are we waiting on this codec DAI stream */
-		if (codec_dai->pop_wait == 1) {
-			codec_dai->pop_wait = 0;
-			snd_soc_dapm_stream_event(codec,
-				codec_dai->playback.stream_name,
-				SND_SOC_DAPM_STREAM_STOP);
-		}
+	/* are we waiting on this codec DAI stream */
+	if (codec_dai->pop_wait == 1) {
+		codec_dai->pop_wait = 0;
+		snd_soc_dapm_stream_event(rtd,
+			codec_dai->driver->playback.stream_name,
+			SND_SOC_DAPM_STREAM_STOP);
 	}
+
 	mutex_unlock(&pcm_mutex);
 }
 
@@ -553,22 +625,19 @@
 static int soc_codec_close(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_card *card = socdev->card;
-	struct snd_soc_dai_link *machine = rtd->dai;
-	struct snd_soc_platform *platform = card->platform;
-	struct snd_soc_dai *cpu_dai = machine->cpu_dai;
-	struct snd_soc_dai *codec_dai = machine->codec_dai;
-	struct snd_soc_codec *codec = card->codec;
+	struct snd_soc_platform *platform = rtd->platform;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_codec *codec = rtd->codec;
 
 	mutex_lock(&pcm_mutex);
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-		cpu_dai->playback.active--;
-		codec_dai->playback.active--;
+		cpu_dai->playback_active--;
+		codec_dai->playback_active--;
 	} else {
-		cpu_dai->capture.active--;
-		codec_dai->capture.active--;
+		cpu_dai->capture_active--;
+		codec_dai->capture_active--;
 	}
 
 	cpu_dai->active--;
@@ -581,27 +650,28 @@
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
 		snd_soc_dai_digital_mute(codec_dai, 1);
 
-	if (cpu_dai->ops->shutdown)
-		cpu_dai->ops->shutdown(substream, cpu_dai);
+	if (cpu_dai->driver->ops->shutdown)
+		cpu_dai->driver->ops->shutdown(substream, cpu_dai);
 
-	if (codec_dai->ops->shutdown)
-		codec_dai->ops->shutdown(substream, codec_dai);
+	if (codec_dai->driver->ops->shutdown)
+		codec_dai->driver->ops->shutdown(substream, codec_dai);
 
-	if (machine->ops && machine->ops->shutdown)
-		machine->ops->shutdown(substream);
+	if (rtd->dai_link->ops && rtd->dai_link->ops->shutdown)
+		rtd->dai_link->ops->shutdown(substream);
 
-	if (platform->pcm_ops->close)
-		platform->pcm_ops->close(substream);
+	if (platform->driver->ops->close)
+		platform->driver->ops->close(substream);
+	cpu_dai->runtime = NULL;
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
 		/* start delayed pop wq here for playback streams */
 		codec_dai->pop_wait = 1;
-		schedule_delayed_work(&card->delayed_work,
-			msecs_to_jiffies(card->pmdown_time));
+		schedule_delayed_work(&rtd->delayed_work,
+			msecs_to_jiffies(rtd->pmdown_time));
 	} else {
 		/* capture streams can be powered down now */
-		snd_soc_dapm_stream_event(codec,
-			codec_dai->capture.stream_name,
+		snd_soc_dapm_stream_event(rtd,
+			codec_dai->driver->capture.stream_name,
 			SND_SOC_DAPM_STREAM_STOP);
 	}
 
@@ -617,43 +687,39 @@
 static int soc_pcm_prepare(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_card *card = socdev->card;
-	struct snd_soc_dai_link *machine = rtd->dai;
-	struct snd_soc_platform *platform = card->platform;
-	struct snd_soc_dai *cpu_dai = machine->cpu_dai;
-	struct snd_soc_dai *codec_dai = machine->codec_dai;
-	struct snd_soc_codec *codec = card->codec;
+	struct snd_soc_platform *platform = rtd->platform;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 	int ret = 0;
 
 	mutex_lock(&pcm_mutex);
 
-	if (machine->ops && machine->ops->prepare) {
-		ret = machine->ops->prepare(substream);
+	if (rtd->dai_link->ops && rtd->dai_link->ops->prepare) {
+		ret = rtd->dai_link->ops->prepare(substream);
 		if (ret < 0) {
 			printk(KERN_ERR "asoc: machine prepare error\n");
 			goto out;
 		}
 	}
 
-	if (platform->pcm_ops->prepare) {
-		ret = platform->pcm_ops->prepare(substream);
+	if (platform->driver->ops->prepare) {
+		ret = platform->driver->ops->prepare(substream);
 		if (ret < 0) {
 			printk(KERN_ERR "asoc: platform prepare error\n");
 			goto out;
 		}
 	}
 
-	if (codec_dai->ops->prepare) {
-		ret = codec_dai->ops->prepare(substream, codec_dai);
+	if (codec_dai->driver->ops->prepare) {
+		ret = codec_dai->driver->ops->prepare(substream, codec_dai);
 		if (ret < 0) {
 			printk(KERN_ERR "asoc: codec DAI prepare error\n");
 			goto out;
 		}
 	}
 
-	if (cpu_dai->ops->prepare) {
-		ret = cpu_dai->ops->prepare(substream, cpu_dai);
+	if (cpu_dai->driver->ops->prepare) {
+		ret = cpu_dai->driver->ops->prepare(substream, cpu_dai);
 		if (ret < 0) {
 			printk(KERN_ERR "asoc: cpu DAI prepare error\n");
 			goto out;
@@ -664,16 +730,16 @@
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK &&
 	    codec_dai->pop_wait) {
 		codec_dai->pop_wait = 0;
-		cancel_delayed_work(&card->delayed_work);
+		cancel_delayed_work(&rtd->delayed_work);
 	}
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-		snd_soc_dapm_stream_event(codec,
-					  codec_dai->playback.stream_name,
+		snd_soc_dapm_stream_event(rtd,
+					  codec_dai->driver->playback.stream_name,
 					  SND_SOC_DAPM_STREAM_START);
 	else
-		snd_soc_dapm_stream_event(codec,
-					  codec_dai->capture.stream_name,
+		snd_soc_dapm_stream_event(rtd,
+					  codec_dai->driver->capture.stream_name,
 					  SND_SOC_DAPM_STREAM_START);
 
 	snd_soc_dai_digital_mute(codec_dai, 0);
@@ -692,26 +758,23 @@
 				struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_dai_link *machine = rtd->dai;
-	struct snd_soc_card *card = socdev->card;
-	struct snd_soc_platform *platform = card->platform;
-	struct snd_soc_dai *cpu_dai = machine->cpu_dai;
-	struct snd_soc_dai *codec_dai = machine->codec_dai;
+	struct snd_soc_platform *platform = rtd->platform;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 	int ret = 0;
 
 	mutex_lock(&pcm_mutex);
 
-	if (machine->ops && machine->ops->hw_params) {
-		ret = machine->ops->hw_params(substream, params);
+	if (rtd->dai_link->ops && rtd->dai_link->ops->hw_params) {
+		ret = rtd->dai_link->ops->hw_params(substream, params);
 		if (ret < 0) {
 			printk(KERN_ERR "asoc: machine hw_params failed\n");
 			goto out;
 		}
 	}
 
-	if (codec_dai->ops->hw_params) {
-		ret = codec_dai->ops->hw_params(substream, params, codec_dai);
+	if (codec_dai->driver->ops->hw_params) {
+		ret = codec_dai->driver->ops->hw_params(substream, params, codec_dai);
 		if (ret < 0) {
 			printk(KERN_ERR "asoc: can't set codec %s hw params\n",
 				codec_dai->name);
@@ -719,8 +782,8 @@
 		}
 	}
 
-	if (cpu_dai->ops->hw_params) {
-		ret = cpu_dai->ops->hw_params(substream, params, cpu_dai);
+	if (cpu_dai->driver->ops->hw_params) {
+		ret = cpu_dai->driver->ops->hw_params(substream, params, cpu_dai);
 		if (ret < 0) {
 			printk(KERN_ERR "asoc: interface %s hw params failed\n",
 				cpu_dai->name);
@@ -728,8 +791,8 @@
 		}
 	}
 
-	if (platform->pcm_ops->hw_params) {
-		ret = platform->pcm_ops->hw_params(substream, params);
+	if (platform->driver->ops->hw_params) {
+		ret = platform->driver->ops->hw_params(substream, params);
 		if (ret < 0) {
 			printk(KERN_ERR "asoc: platform %s hw params failed\n",
 				platform->name);
@@ -737,23 +800,23 @@
 		}
 	}
 
-	machine->rate = params_rate(params);
+	rtd->rate = params_rate(params);
 
 out:
 	mutex_unlock(&pcm_mutex);
 	return ret;
 
 platform_err:
-	if (cpu_dai->ops->hw_free)
-		cpu_dai->ops->hw_free(substream, cpu_dai);
+	if (cpu_dai->driver->ops->hw_free)
+		cpu_dai->driver->ops->hw_free(substream, cpu_dai);
 
 interface_err:
-	if (codec_dai->ops->hw_free)
-		codec_dai->ops->hw_free(substream, codec_dai);
+	if (codec_dai->driver->ops->hw_free)
+		codec_dai->driver->ops->hw_free(substream, codec_dai);
 
 codec_err:
-	if (machine->ops && machine->ops->hw_free)
-		machine->ops->hw_free(substream);
+	if (rtd->dai_link->ops && rtd->dai_link->ops->hw_free)
+		rtd->dai_link->ops->hw_free(substream);
 
 	mutex_unlock(&pcm_mutex);
 	return ret;
@@ -765,13 +828,10 @@
 static int soc_pcm_hw_free(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_dai_link *machine = rtd->dai;
-	struct snd_soc_card *card = socdev->card;
-	struct snd_soc_platform *platform = card->platform;
-	struct snd_soc_dai *cpu_dai = machine->cpu_dai;
-	struct snd_soc_dai *codec_dai = machine->codec_dai;
-	struct snd_soc_codec *codec = card->codec;
+	struct snd_soc_platform *platform = rtd->platform;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_codec *codec = rtd->codec;
 
 	mutex_lock(&pcm_mutex);
 
@@ -780,19 +840,19 @@
 		snd_soc_dai_digital_mute(codec_dai, 1);
 
 	/* free any machine hw params */
-	if (machine->ops && machine->ops->hw_free)
-		machine->ops->hw_free(substream);
+	if (rtd->dai_link->ops && rtd->dai_link->ops->hw_free)
+		rtd->dai_link->ops->hw_free(substream);
 
 	/* free any DMA resources */
-	if (platform->pcm_ops->hw_free)
-		platform->pcm_ops->hw_free(substream);
+	if (platform->driver->ops->hw_free)
+		platform->driver->ops->hw_free(substream);
 
 	/* now free hw params for the DAI's  */
-	if (codec_dai->ops->hw_free)
-		codec_dai->ops->hw_free(substream, codec_dai);
+	if (codec_dai->driver->ops->hw_free)
+		codec_dai->driver->ops->hw_free(substream, codec_dai);
 
-	if (cpu_dai->ops->hw_free)
-		cpu_dai->ops->hw_free(substream, cpu_dai);
+	if (cpu_dai->driver->ops->hw_free)
+		cpu_dai->driver->ops->hw_free(substream, cpu_dai);
 
 	mutex_unlock(&pcm_mutex);
 	return 0;
@@ -801,28 +861,25 @@
 static int soc_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_card *card= socdev->card;
-	struct snd_soc_dai_link *machine = rtd->dai;
-	struct snd_soc_platform *platform = card->platform;
-	struct snd_soc_dai *cpu_dai = machine->cpu_dai;
-	struct snd_soc_dai *codec_dai = machine->codec_dai;
+	struct snd_soc_platform *platform = rtd->platform;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 	int ret;
 
-	if (codec_dai->ops->trigger) {
-		ret = codec_dai->ops->trigger(substream, cmd, codec_dai);
+	if (codec_dai->driver->ops->trigger) {
+		ret = codec_dai->driver->ops->trigger(substream, cmd, codec_dai);
 		if (ret < 0)
 			return ret;
 	}
 
-	if (platform->pcm_ops->trigger) {
-		ret = platform->pcm_ops->trigger(substream, cmd);
+	if (platform->driver->ops->trigger) {
+		ret = platform->driver->ops->trigger(substream, cmd);
 		if (ret < 0)
 			return ret;
 	}
 
-	if (cpu_dai->ops->trigger) {
-		ret = cpu_dai->ops->trigger(substream, cmd, cpu_dai);
+	if (cpu_dai->driver->ops->trigger) {
+		ret = cpu_dai->driver->ops->trigger(substream, cmd, cpu_dai);
 		if (ret < 0)
 			return ret;
 	}
@@ -837,27 +894,24 @@
 static snd_pcm_uframes_t soc_pcm_pointer(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_device *socdev = rtd->socdev;
-	struct snd_soc_card *card = socdev->card;
-	struct snd_soc_platform *platform = card->platform;
-	struct snd_soc_dai_link *machine = rtd->dai;
-	struct snd_soc_dai *cpu_dai = machine->cpu_dai;
-	struct snd_soc_dai *codec_dai = machine->codec_dai;
+	struct snd_soc_platform *platform = rtd->platform;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	snd_pcm_uframes_t offset = 0;
 	snd_pcm_sframes_t delay = 0;
 
-	if (platform->pcm_ops->pointer)
-		offset = platform->pcm_ops->pointer(substream);
+	if (platform->driver->ops->pointer)
+		offset = platform->driver->ops->pointer(substream);
 
-	if (cpu_dai->ops->delay)
-		delay += cpu_dai->ops->delay(substream, cpu_dai);
+	if (cpu_dai->driver->ops->delay)
+		delay += cpu_dai->driver->ops->delay(substream, cpu_dai);
 
-	if (codec_dai->ops->delay)
-		delay += codec_dai->ops->delay(substream, codec_dai);
+	if (codec_dai->driver->ops->delay)
+		delay += codec_dai->driver->ops->delay(substream, codec_dai);
 
-	if (platform->delay)
-		delay += platform->delay(substream, codec_dai);
+	if (platform->driver->delay)
+		delay += platform->driver->delay(substream, codec_dai);
 
 	runtime->delay = delay;
 
@@ -880,104 +934,111 @@
 static int soc_suspend(struct device *dev)
 {
 	struct platform_device *pdev = to_platform_device(dev);
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_card *card = socdev->card;
-	struct snd_soc_platform *platform = card->platform;
-	struct snd_soc_codec_device *codec_dev = socdev->codec_dev;
-	struct snd_soc_codec *codec = card->codec;
+	struct snd_soc_card *card = platform_get_drvdata(pdev);
 	int i;
 
 	/* If the initialization of this soc device failed, there is no codec
 	 * associated with it. Just bail out in this case.
 	 */
-	if (!codec)
+	if (list_empty(&card->codec_dev_list))
 		return 0;
 
 	/* Due to the resume being scheduled into a workqueue we could
 	* suspend before that's finished - wait for it to complete.
 	 */
-	snd_power_lock(codec->card);
-	snd_power_wait(codec->card, SNDRV_CTL_POWER_D0);
-	snd_power_unlock(codec->card);
+	snd_power_lock(card->snd_card);
+	snd_power_wait(card->snd_card, SNDRV_CTL_POWER_D0);
+	snd_power_unlock(card->snd_card);
 
 	/* we're going to block userspace touching us until resume completes */
-	snd_power_change_state(codec->card, SNDRV_CTL_POWER_D3hot);
+	snd_power_change_state(card->snd_card, SNDRV_CTL_POWER_D3hot);
 
 	/* mute any active DAC's */
-	for (i = 0; i < card->num_links; i++) {
-		struct snd_soc_dai *dai = card->dai_link[i].codec_dai;
+	for (i = 0; i < card->num_rtd; i++) {
+		struct snd_soc_dai *dai = card->rtd[i].codec_dai;
+		struct snd_soc_dai_driver *drv = dai->driver;
 
-		if (card->dai_link[i].ignore_suspend)
+		if (card->rtd[i].dai_link->ignore_suspend)
 			continue;
 
-		if (dai->ops->digital_mute && dai->playback.active)
-			dai->ops->digital_mute(dai, 1);
+		if (drv->ops->digital_mute && dai->playback_active)
+			drv->ops->digital_mute(dai, 1);
 	}
 
 	/* suspend all pcms */
-	for (i = 0; i < card->num_links; i++) {
-		if (card->dai_link[i].ignore_suspend)
+	for (i = 0; i < card->num_rtd; i++) {
+		if (card->rtd[i].dai_link->ignore_suspend)
 			continue;
 
-		snd_pcm_suspend_all(card->dai_link[i].pcm);
+		snd_pcm_suspend_all(card->rtd[i].pcm);
 	}
 
 	if (card->suspend_pre)
 		card->suspend_pre(pdev, PMSG_SUSPEND);
 
-	for (i = 0; i < card->num_links; i++) {
-		struct snd_soc_dai  *cpu_dai = card->dai_link[i].cpu_dai;
+	for (i = 0; i < card->num_rtd; i++) {
+		struct snd_soc_dai *cpu_dai = card->rtd[i].cpu_dai;
+		struct snd_soc_platform *platform = card->rtd[i].platform;
 
-		if (card->dai_link[i].ignore_suspend)
+		if (card->rtd[i].dai_link->ignore_suspend)
 			continue;
 
-		if (cpu_dai->suspend && !cpu_dai->ac97_control)
-			cpu_dai->suspend(cpu_dai);
-		if (platform->suspend)
-			platform->suspend(&card->dai_link[i]);
-	}
-
-	/* close any waiting streams and save state */
-	run_delayed_work(&card->delayed_work);
-	codec->suspend_bias_level = codec->bias_level;
-
-	for (i = 0; i < codec->num_dai; i++) {
-		char *stream = codec->dai[i].playback.stream_name;
-
-		if (card->dai_link[i].ignore_suspend)
-			continue;
-
-		if (stream != NULL)
-			snd_soc_dapm_stream_event(codec, stream,
-				SND_SOC_DAPM_STREAM_SUSPEND);
-		stream = codec->dai[i].capture.stream_name;
-		if (stream != NULL)
-			snd_soc_dapm_stream_event(codec, stream,
-				SND_SOC_DAPM_STREAM_SUSPEND);
-	}
-
-	/* If there are paths active then the CODEC will be held with
-	 * bias _ON and should not be suspended. */
-	if (codec_dev->suspend) {
-		switch (codec->bias_level) {
-		case SND_SOC_BIAS_STANDBY:
-		case SND_SOC_BIAS_OFF:
-			codec_dev->suspend(pdev, PMSG_SUSPEND);
-			break;
-		default:
-			dev_dbg(socdev->dev, "CODEC is on over suspend\n");
-			break;
+		if (cpu_dai->driver->suspend && !cpu_dai->driver->ac97_control)
+			cpu_dai->driver->suspend(cpu_dai);
+		if (platform->driver->suspend && !platform->suspended) {
+			platform->driver->suspend(cpu_dai);
+			platform->suspended = 1;
 		}
 	}
 
-	for (i = 0; i < card->num_links; i++) {
-		struct snd_soc_dai *cpu_dai = card->dai_link[i].cpu_dai;
+	/* close any waiting streams and save state */
+	for (i = 0; i < card->num_rtd; i++) {
+		run_delayed_work(&card->rtd[i].delayed_work);
+		card->rtd[i].codec->suspend_bias_level = card->rtd[i].codec->bias_level;
+	}
 
-		if (card->dai_link[i].ignore_suspend)
+	for (i = 0; i < card->num_rtd; i++) {
+		struct snd_soc_dai_driver *driver = card->rtd[i].codec_dai->driver;
+
+		if (card->rtd[i].dai_link->ignore_suspend)
 			continue;
 
-		if (cpu_dai->suspend && cpu_dai->ac97_control)
-			cpu_dai->suspend(cpu_dai);
+		if (driver->playback.stream_name != NULL)
+			snd_soc_dapm_stream_event(&card->rtd[i], driver->playback.stream_name,
+				SND_SOC_DAPM_STREAM_SUSPEND);
+
+		if (driver->capture.stream_name != NULL)
+			snd_soc_dapm_stream_event(&card->rtd[i], driver->capture.stream_name,
+				SND_SOC_DAPM_STREAM_SUSPEND);
+	}
+
+	/* suspend all CODECs */
+	for (i = 0; i < card->num_rtd; i++) {
+		struct snd_soc_codec *codec = card->rtd[i].codec;
+		/* If there are paths active then the CODEC will be held with
+		 * bias _ON and should not be suspended. */
+		if (!codec->suspended && codec->driver->suspend) {
+			switch (codec->bias_level) {
+			case SND_SOC_BIAS_STANDBY:
+			case SND_SOC_BIAS_OFF:
+				codec->driver->suspend(codec, PMSG_SUSPEND);
+				codec->suspended = 1;
+				break;
+			default:
+				dev_dbg(codec->dev, "CODEC is on over suspend\n");
+				break;
+			}
+		}
+	}
+
+	for (i = 0; i < card->num_rtd; i++) {
+		struct snd_soc_dai *cpu_dai = card->rtd[i].cpu_dai;
+
+		if (card->rtd[i].dai_link->ignore_suspend)
+			continue;
+
+		if (cpu_dai->driver->suspend && cpu_dai->driver->ac97_control)
+			cpu_dai->driver->suspend(cpu_dai);
 	}
 
 	if (card->suspend_post)
@@ -991,127 +1052,127 @@
  */
 static void soc_resume_deferred(struct work_struct *work)
 {
-	struct snd_soc_card *card = container_of(work,
-						 struct snd_soc_card,
-						 deferred_resume_work);
-	struct snd_soc_device *socdev = card->socdev;
-	struct snd_soc_platform *platform = card->platform;
-	struct snd_soc_codec_device *codec_dev = socdev->codec_dev;
-	struct snd_soc_codec *codec = card->codec;
-	struct platform_device *pdev = to_platform_device(socdev->dev);
+	struct snd_soc_card *card =
+			container_of(work, struct snd_soc_card, deferred_resume_work);
+	struct platform_device *pdev = to_platform_device(card->dev);
 	int i;
 
 	/* our power state is still SNDRV_CTL_POWER_D3hot from suspend time,
 	 * so userspace apps are blocked from touching us
 	 */
 
-	dev_dbg(socdev->dev, "starting resume work\n");
+	dev_dbg(card->dev, "starting resume work\n");
 
 	/* Bring us up into D2 so that DAPM starts enabling things */
-	snd_power_change_state(codec->card, SNDRV_CTL_POWER_D2);
+	snd_power_change_state(card->snd_card, SNDRV_CTL_POWER_D2);
 
 	if (card->resume_pre)
 		card->resume_pre(pdev);
 
-	for (i = 0; i < card->num_links; i++) {
-		struct snd_soc_dai *cpu_dai = card->dai_link[i].cpu_dai;
+	/* resume AC97 DAIs */
+	for (i = 0; i < card->num_rtd; i++) {
+		struct snd_soc_dai *cpu_dai = card->rtd[i].cpu_dai;
 
-		if (card->dai_link[i].ignore_suspend)
+		if (card->rtd[i].dai_link->ignore_suspend)
 			continue;
 
-		if (cpu_dai->resume && cpu_dai->ac97_control)
-			cpu_dai->resume(cpu_dai);
+		if (cpu_dai->driver->resume && cpu_dai->driver->ac97_control)
+			cpu_dai->driver->resume(cpu_dai);
 	}
 
-	/* If the CODEC was idle over suspend then it will have been
-	 * left with bias OFF or STANDBY and suspended so we must now
-	 * resume.  Otherwise the suspend was suppressed.
-	 */
-	if (codec_dev->resume) {
-		switch (codec->bias_level) {
-		case SND_SOC_BIAS_STANDBY:
-		case SND_SOC_BIAS_OFF:
-			codec_dev->resume(pdev);
-			break;
-		default:
-			dev_dbg(socdev->dev, "CODEC was on over suspend\n");
-			break;
+	for (i = 0; i < card->num_rtd; i++) {
+		struct snd_soc_codec *codec = card->rtd[i].codec;
+		/* If the CODEC was idle over suspend then it will have been
+		 * left with bias OFF or STANDBY and suspended so we must now
+		 * resume.  Otherwise the suspend was suppressed.
+		 */
+		if (codec->driver->resume && codec->suspended) {
+			switch (codec->bias_level) {
+			case SND_SOC_BIAS_STANDBY:
+			case SND_SOC_BIAS_OFF:
+				codec->driver->resume(codec);
+				codec->suspended = 0;
+				break;
+			default:
+				dev_dbg(codec->dev, "CODEC was on over suspend\n");
+				break;
+			}
 		}
 	}
 
-	for (i = 0; i < codec->num_dai; i++) {
-		char *stream = codec->dai[i].playback.stream_name;
+	for (i = 0; i < card->num_rtd; i++) {
+		struct snd_soc_dai_driver *driver = card->rtd[i].codec_dai->driver;
 
-		if (card->dai_link[i].ignore_suspend)
+		if (card->rtd[i].dai_link->ignore_suspend)
 			continue;
 
-		if (stream != NULL)
-			snd_soc_dapm_stream_event(codec, stream,
+		if (driver->playback.stream_name != NULL)
+			snd_soc_dapm_stream_event(&card->rtd[i], driver->playback.stream_name,
 				SND_SOC_DAPM_STREAM_RESUME);
-		stream = codec->dai[i].capture.stream_name;
-		if (stream != NULL)
-			snd_soc_dapm_stream_event(codec, stream,
+
+		if (driver->capture.stream_name != NULL)
+			snd_soc_dapm_stream_event(&card->rtd[i], driver->capture.stream_name,
 				SND_SOC_DAPM_STREAM_RESUME);
 	}
 
 	/* unmute any active DACs */
-	for (i = 0; i < card->num_links; i++) {
-		struct snd_soc_dai *dai = card->dai_link[i].codec_dai;
+	for (i = 0; i < card->num_rtd; i++) {
+		struct snd_soc_dai *dai = card->rtd[i].codec_dai;
+		struct snd_soc_dai_driver *drv = dai->driver;
 
-		if (card->dai_link[i].ignore_suspend)
+		if (card->rtd[i].dai_link->ignore_suspend)
 			continue;
 
-		if (dai->ops->digital_mute && dai->playback.active)
-			dai->ops->digital_mute(dai, 0);
+		if (drv->ops->digital_mute && dai->playback_active)
+			drv->ops->digital_mute(dai, 0);
 	}
 
-	for (i = 0; i < card->num_links; i++) {
-		struct snd_soc_dai *cpu_dai = card->dai_link[i].cpu_dai;
+	for (i = 0; i < card->num_rtd; i++) {
+		struct snd_soc_dai *cpu_dai = card->rtd[i].cpu_dai;
+		struct snd_soc_platform *platform = card->rtd[i].platform;
 
-		if (card->dai_link[i].ignore_suspend)
+		if (card->rtd[i].dai_link->ignore_suspend)
 			continue;
 
-		if (cpu_dai->resume && !cpu_dai->ac97_control)
-			cpu_dai->resume(cpu_dai);
-		if (platform->resume)
-			platform->resume(&card->dai_link[i]);
+		if (cpu_dai->driver->resume && !cpu_dai->driver->ac97_control)
+			cpu_dai->driver->resume(cpu_dai);
+		if (platform->driver->resume && platform->suspended) {
+			platform->driver->resume(cpu_dai);
+			platform->suspended = 0;
+		}
 	}
 
 	if (card->resume_post)
 		card->resume_post(pdev);
 
-	dev_dbg(socdev->dev, "resume work completed\n");
+	dev_dbg(card->dev, "resume work completed\n");
 
 	/* userspace can access us now we are back as we were before */
-	snd_power_change_state(codec->card, SNDRV_CTL_POWER_D0);
+	snd_power_change_state(card->snd_card, SNDRV_CTL_POWER_D0);
 }
 
 /* powers up audio subsystem after a suspend */
 static int soc_resume(struct device *dev)
 {
 	struct platform_device *pdev = to_platform_device(dev);
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_card *card = socdev->card;
-	struct snd_soc_dai *cpu_dai = card->dai_link[0].cpu_dai;
-
-	/* If the initialization of this soc device failed, there is no codec
-	 * associated with it. Just bail out in this case.
-	 */
-	if (!card->codec)
-		return 0;
+	struct snd_soc_card *card = platform_get_drvdata(pdev);
+	int i;
 
 	/* AC97 devices might have other drivers hanging off them so
 	 * need to resume immediately.  Other drivers don't have that
 	 * problem and may take a substantial amount of time to resume
 	 * due to I/O costs and anti-pop so handle them out of line.
 	 */
-	if (cpu_dai->ac97_control) {
-		dev_dbg(socdev->dev, "Resuming AC97 immediately\n");
-		soc_resume_deferred(&card->deferred_resume_work);
-	} else {
-		dev_dbg(socdev->dev, "Scheduling resume work\n");
-		if (!schedule_work(&card->deferred_resume_work))
-			dev_err(socdev->dev, "resume work item may be lost\n");
+	for (i = 0; i < card->num_rtd; i++) {
+		struct snd_soc_dai *cpu_dai = card->rtd[i].cpu_dai;
+		if (cpu_dai->driver->ac97_control) {
+			dev_dbg(dev, "Resuming AC97 immediately\n");
+			soc_resume_deferred(&card->deferred_resume_work);
+		} else {
+			dev_dbg(dev, "Scheduling resume work\n");
+			if (!schedule_work(&card->deferred_resume_work))
+				dev_err(dev, "resume work item may be lost\n");
+		}
 	}
 
 	return 0;
@@ -1124,198 +1185,430 @@
 static struct snd_soc_dai_ops null_dai_ops = {
 };
 
-static void snd_soc_instantiate_card(struct snd_soc_card *card)
+static int soc_bind_dai_link(struct snd_soc_card *card, int num)
 {
-	struct platform_device *pdev = container_of(card->dev,
-						    struct platform_device,
-						    dev);
-	struct snd_soc_codec_device *codec_dev = card->socdev->codec_dev;
+	struct snd_soc_dai_link *dai_link = &card->dai_link[num];
+	struct snd_soc_pcm_runtime *rtd = &card->rtd[num];
 	struct snd_soc_codec *codec;
 	struct snd_soc_platform *platform;
-	struct snd_soc_dai *dai;
-	int i, found, ret, ac97;
+	struct snd_soc_dai *codec_dai, *cpu_dai;
 
-	if (card->instantiated)
-		return;
+	if (rtd->complete)
+		return 1;
+	dev_dbg(card->dev, "binding %s at idx %d\n", dai_link->name, num);
 
-	found = 0;
-	list_for_each_entry(platform, &platform_list, list)
-		if (card->platform == platform) {
-			found = 1;
-			break;
+	/* do we already have the CPU DAI for this link ? */
+	if (rtd->cpu_dai) {
+		goto find_codec;
+	}
+	/* no, then find CPU DAI from registered DAIs*/
+	list_for_each_entry(cpu_dai, &dai_list, list) {
+		if (!strcmp(cpu_dai->name, dai_link->cpu_dai_name)) {
+
+			if (!try_module_get(cpu_dai->dev->driver->owner))
+				return -ENODEV;
+
+			rtd->cpu_dai = cpu_dai;
+			goto find_codec;
 		}
-	if (!found) {
-		dev_dbg(card->dev, "Platform %s not registered\n",
-			card->platform->name);
-		return;
+	}
+	dev_dbg(card->dev, "CPU DAI %s not registered\n",
+			dai_link->cpu_dai_name);
+
+find_codec:
+	/* do we already have the CODEC for this link ? */
+	if (rtd->codec) {
+		goto find_platform;
 	}
 
-	ac97 = 0;
-	for (i = 0; i < card->num_links; i++) {
-		found = 0;
-		list_for_each_entry(dai, &dai_list, list)
-			if (card->dai_link[i].cpu_dai == dai) {
-				found = 1;
-				break;
-			}
-		if (!found) {
-			dev_dbg(card->dev, "DAI %s not registered\n",
-				card->dai_link[i].cpu_dai->name);
-			return;
-		}
+	/* no, then find CODEC from registered CODECs*/
+	list_for_each_entry(codec, &codec_list, list) {
+		if (!strcmp(codec->name, dai_link->codec_name)) {
+			rtd->codec = codec;
 
-		if (card->dai_link[i].cpu_dai->ac97_control)
-			ac97 = 1;
-	}
+			if (!try_module_get(codec->dev->driver->owner))
+				return -ENODEV;
 
-	for (i = 0; i < card->num_links; i++) {
-		if (!card->dai_link[i].codec_dai->ops)
-			card->dai_link[i].codec_dai->ops = &null_dai_ops;
-	}
-
-	/* If we have AC97 in the system then don't wait for the
-	 * codec.  This will need revisiting if we have to handle
-	 * systems with mixed AC97 and non-AC97 parts.  Only check for
-	 * DAIs currently; we can't do this per link since some AC97
-	 * codecs have non-AC97 DAIs.
-	 */
-	if (!ac97)
-		for (i = 0; i < card->num_links; i++) {
-			found = 0;
-			list_for_each_entry(dai, &dai_list, list)
-				if (card->dai_link[i].codec_dai == dai) {
-					found = 1;
-					break;
+			/* CODEC found, so find CODEC DAI from registered DAIs from this CODEC*/
+			list_for_each_entry(codec_dai, &dai_list, list) {
+				if (codec->dev == codec_dai->dev &&
+						!strcmp(codec_dai->name, dai_link->codec_dai_name)) {
+					rtd->codec_dai = codec_dai;
+					goto find_platform;
 				}
-			if (!found) {
-				dev_dbg(card->dev, "DAI %s not registered\n",
-					card->dai_link[i].codec_dai->name);
-				return;
+			}
+			dev_dbg(card->dev, "CODEC DAI %s not registered\n",
+					dai_link->codec_dai_name);
+
+			goto find_platform;
+		}
+	}
+	dev_dbg(card->dev, "CODEC %s not registered\n",
+			dai_link->codec_name);
+
+find_platform:
+	/* do we already have the CODEC DAI for this link ? */
+	if (rtd->platform) {
+		goto out;
+	}
+	/* no, then find CPU DAI from registered DAIs*/
+	list_for_each_entry(platform, &platform_list, list) {
+		if (!strcmp(platform->name, dai_link->platform_name)) {
+
+			if (!try_module_get(platform->dev->driver->owner))
+				return -ENODEV;
+
+			rtd->platform = platform;
+			goto out;
+		}
+	}
+
+	dev_dbg(card->dev, "platform %s not registered\n",
+			dai_link->platform_name);
+	return 0;
+
+out:
+	/* mark rtd as complete if we found all 4 of our client devices */
+	if (rtd->codec && rtd->codec_dai && rtd->platform && rtd->cpu_dai) {
+		rtd->complete = 1;
+		card->num_rtd++;
+	}
+	return 1;
+}
+
+static void soc_remove_dai_link(struct snd_soc_card *card, int num)
+{
+	struct snd_soc_pcm_runtime *rtd = &card->rtd[num];
+	struct snd_soc_codec *codec = rtd->codec;
+	struct snd_soc_platform *platform = rtd->platform;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai, *cpu_dai = rtd->cpu_dai;
+	int err;
+
+	/* unregister the rtd device */
+	if (rtd->dev_registered) {
+		device_remove_file(&rtd->dev, &dev_attr_pmdown_time);
+		device_unregister(&rtd->dev);
+		rtd->dev_registered = 0;
+	}
+
+	/* remove the CODEC DAI */
+	if (codec_dai && codec_dai->probed) {
+		if (codec_dai->driver->remove) {
+			err = codec_dai->driver->remove(codec_dai);
+			if (err < 0)
+				printk(KERN_ERR "asoc: failed to remove %s\n", codec_dai->name);
+		}
+		codec_dai->probed = 0;
+		list_del(&codec_dai->card_list);
+	}
+
+	/* remove the platform */
+	if (platform && platform->probed) {
+		if (platform->driver->remove) {
+			err = platform->driver->remove(platform);
+			if (err < 0)
+				printk(KERN_ERR "asoc: failed to remove %s\n", platform->name);
+		}
+		platform->probed = 0;
+		list_del(&platform->card_list);
+		module_put(platform->dev->driver->owner);
+	}
+
+	/* remove the CODEC */
+	if (codec && codec->probed) {
+		if (codec->driver->remove) {
+			err = codec->driver->remove(codec);
+			if (err < 0)
+				printk(KERN_ERR "asoc: failed to remove %s\n", codec->name);
+		}
+
+		/* Make sure all DAPM widgets are freed */
+		snd_soc_dapm_free(codec);
+
+		soc_cleanup_codec_debugfs(codec);
+		device_remove_file(&rtd->dev, &dev_attr_codec_reg);
+		codec->probed = 0;
+		list_del(&codec->card_list);
+		module_put(codec->dev->driver->owner);
+	}
+
+	/* remove the cpu_dai */
+	if (cpu_dai && cpu_dai->probed) {
+		if (cpu_dai->driver->remove) {
+			err = cpu_dai->driver->remove(cpu_dai);
+			if (err < 0)
+				printk(KERN_ERR "asoc: failed to remove %s\n", cpu_dai->name);
+		}
+		cpu_dai->probed = 0;
+		list_del(&cpu_dai->card_list);
+		module_put(cpu_dai->dev->driver->owner);
+	}
+}
+
+static void rtd_release(struct device *dev) {}
+
+static int soc_probe_dai_link(struct snd_soc_card *card, int num)
+{
+	struct snd_soc_dai_link *dai_link = &card->dai_link[num];
+	struct snd_soc_pcm_runtime *rtd = &card->rtd[num];
+	struct snd_soc_codec *codec = rtd->codec;
+	struct snd_soc_platform *platform = rtd->platform;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai, *cpu_dai = rtd->cpu_dai;
+	int ret;
+
+	dev_dbg(card->dev, "probe %s dai link %d\n", card->name, num);
+
+	/* config components */
+	codec_dai->codec = codec;
+	codec->card = card;
+	cpu_dai->platform = platform;
+	rtd->card = card;
+	rtd->dev.parent = card->dev;
+	codec_dai->card = card;
+	cpu_dai->card = card;
+
+	/* set default power off timeout */
+	rtd->pmdown_time = pmdown_time;
+
+	/* probe the cpu_dai */
+	if (!cpu_dai->probed) {
+		if (cpu_dai->driver->probe) {
+			ret = cpu_dai->driver->probe(cpu_dai);
+			if (ret < 0) {
+				printk(KERN_ERR "asoc: failed to probe CPU DAI %s\n",
+						cpu_dai->name);
+				return ret;
+			}
+		}
+		cpu_dai->probed = 1;
+		/* mark cpu_dai as probed and add to card cpu_dai list */
+		list_add(&cpu_dai->card_list, &card->dai_dev_list);
+	}
+
+	/* probe the CODEC */
+	if (!codec->probed) {
+		if (codec->driver->probe) {
+			ret = codec->driver->probe(codec);
+			if (ret < 0) {
+				printk(KERN_ERR "asoc: failed to probe CODEC %s\n",
+						codec->name);
+				return ret;
 			}
 		}
 
-	/* Note that we do not current check for codec components */
+		soc_init_codec_debugfs(codec);
 
-	dev_dbg(card->dev, "All components present, instantiating\n");
-
-	/* Found everything, bring it up */
-	card->pmdown_time = pmdown_time;
-
-	if (card->probe) {
-		ret = card->probe(pdev);
-		if (ret < 0)
-			return;
+		/* mark codec as probed and add to card codec list */
+		codec->probed = 1;
+		list_add(&codec->card_list, &card->codec_dev_list);
 	}
 
-	for (i = 0; i < card->num_links; i++) {
-		struct snd_soc_dai *cpu_dai = card->dai_link[i].cpu_dai;
-		if (cpu_dai->probe) {
-			ret = cpu_dai->probe(pdev, cpu_dai);
-			if (ret < 0)
-				goto cpu_dai_err;
+	/* probe the platform */
+	if (!platform->probed) {
+		if (platform->driver->probe) {
+			ret = platform->driver->probe(platform);
+			if (ret < 0) {
+				printk(KERN_ERR "asoc: failed to probe platform %s\n",
+						platform->name);
+				return ret;
+			}
+		}
+		/* mark platform as probed and add to card platform list */
+		platform->probed = 1;
+		list_add(&platform->card_list, &card->platform_dev_list);
+	}
+
+	/* probe the CODEC DAI */
+	if (!codec_dai->probed) {
+		if (codec_dai->driver->probe) {
+			ret = codec_dai->driver->probe(codec_dai);
+			if (ret < 0) {
+				printk(KERN_ERR "asoc: failed to probe CODEC DAI %s\n",
+						codec_dai->name);
+				return ret;
+			}
+		}
+
+		/* mark cpu_dai as probed and add to card cpu_dai list */
+		codec_dai->probed = 1;
+		list_add(&codec_dai->card_list, &card->dai_dev_list);
+	}
+
+	/* DAPM dai link stream work */
+	INIT_DELAYED_WORK(&rtd->delayed_work, close_delayed_work);
+
+	/* now that all clients have probed, initialise the DAI link */
+	if (dai_link->init) {
+		ret = dai_link->init(rtd);
+		if (ret < 0) {
+			printk(KERN_ERR "asoc: failed to init %s\n", dai_link->stream_name);
+			return ret;
 		}
 	}
 
-	if (codec_dev->probe) {
-		ret = codec_dev->probe(pdev);
-		if (ret < 0)
-			goto cpu_dai_err;
-	}
-	codec = card->codec;
+	/* Make sure all DAPM widgets are instantiated */
+	snd_soc_dapm_new_widgets(codec);
+	snd_soc_dapm_sync(codec);
 
-	if (platform->probe) {
-		ret = platform->probe(pdev);
-		if (ret < 0)
-			goto platform_err;
+	/* register the rtd device */
+	rtd->dev.release = rtd_release;
+	rtd->dev.init_name = dai_link->name;
+	ret = device_register(&rtd->dev);
+	if (ret < 0) {
+		printk(KERN_ERR "asoc: failed to register DAI runtime device %d\n", ret);
+		return ret;
 	}
 
-	/* DAPM stream work */
-	INIT_DELAYED_WORK(&card->delayed_work, close_delayed_work);
+	rtd->dev_registered = 1;
+	ret = device_create_file(&rtd->dev, &dev_attr_pmdown_time);
+	if (ret < 0)
+		printk(KERN_WARNING "asoc: failed to add pmdown_time sysfs\n");
+
+	/* add DAPM sysfs entries for this codec */
+	ret = snd_soc_dapm_sys_add(&rtd->dev);
+	if (ret < 0)
+		printk(KERN_WARNING "asoc: failed to add codec dapm sysfs entries\n");
+
+	/* add codec sysfs entries */
+	ret = device_create_file(&rtd->dev, &dev_attr_codec_reg);
+	if (ret < 0)
+		printk(KERN_WARNING "asoc: failed to add codec sysfs files\n");
+
+	/* create the pcm */
+	ret = soc_new_pcm(rtd, num);
+	if (ret < 0) {
+		printk(KERN_ERR "asoc: can't create pcm %s\n", dai_link->stream_name);
+		return ret;
+	}
+
+	/* add platform data for AC97 devices */
+	if (rtd->codec_dai->driver->ac97_control)
+		snd_ac97_dev_add_pdata(codec->ac97, rtd->cpu_dai->ac97_pdata);
+
+	return 0;
+}
+
+#ifdef CONFIG_SND_SOC_AC97_BUS
+static int soc_register_ac97_dai_link(struct snd_soc_pcm_runtime *rtd)
+{
+	int ret;
+
+	/* Only instantiate AC97 if not already done by the adaptor
+	 * for the generic AC97 subsystem.
+	 */
+	if (rtd->codec_dai->driver->ac97_control && !rtd->codec->ac97_registered) {
+
+		ret = soc_ac97_dev_register(rtd->codec);
+		if (ret < 0) {
+			printk(KERN_ERR "asoc: AC97 device register failed\n");
+			return ret;
+		}
+
+		rtd->codec->ac97_registered = 1;
+	}
+	return 0;
+}
+
+static void soc_unregister_ac97_dai_link(struct snd_soc_codec *codec)
+{
+	if (codec->ac97_registered) {
+		soc_ac97_dev_unregister(codec);
+		codec->ac97_registered = 0;
+	}
+}
+#endif
+
+static void snd_soc_instantiate_card(struct snd_soc_card *card)
+{
+	struct platform_device *pdev = to_platform_device(card->dev);
+	int ret, i;
+
+	mutex_lock(&card->mutex);
+
+	if (card->instantiated) {
+		mutex_unlock(&card->mutex);
+		return;
+	}
+
+	/* bind DAIs */
+	for (i = 0; i < card->num_links; i++)
+		soc_bind_dai_link(card, i);
+
+	/* bind completed ? */
+	if (card->num_rtd != card->num_links) {
+		mutex_unlock(&card->mutex);
+		return;
+	}
+
+	/* card bind complete so register a sound card */
+	ret = snd_card_create(SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
+			card->owner, 0, &card->snd_card);
+	if (ret < 0) {
+		printk(KERN_ERR "asoc: can't create sound card for card %s\n",
+			card->name);
+		mutex_unlock(&card->mutex);
+		return;
+	}
+	card->snd_card->dev = card->dev;
+
 #ifdef CONFIG_PM
 	/* deferred resume work */
 	INIT_WORK(&card->deferred_resume_work, soc_resume_deferred);
 #endif
 
+	/* initialise the sound card only once */
+	if (card->probe) {
+		ret = card->probe(pdev);
+		if (ret < 0)
+			goto card_probe_error;
+	}
+
 	for (i = 0; i < card->num_links; i++) {
-		if (card->dai_link[i].init) {
-			ret = card->dai_link[i].init(codec);
+		ret = soc_probe_dai_link(card, i);
+		if (ret < 0) {
+			pr_err("asoc: failed to instantiate card %s: %d\n",
+			       card->name, ret);
+			goto probe_dai_err;
+		}
+	}
+
+	snprintf(card->snd_card->shortname, sizeof(card->snd_card->shortname),
+		 "%s",  card->name);
+	snprintf(card->snd_card->longname, sizeof(card->snd_card->longname),
+		 "%s", card->name);
+
+	ret = snd_card_register(card->snd_card);
+	if (ret < 0) {
+		printk(KERN_ERR "asoc: failed to register soundcard for %s\n", card->name);
+		goto probe_dai_err;
+	}
+
+#ifdef CONFIG_SND_SOC_AC97_BUS
+	/* register any AC97 codecs */
+	for (i = 0; i < card->num_rtd; i++) {
+			ret = soc_register_ac97_dai_link(&card->rtd[i]);
 			if (ret < 0) {
-				printk(KERN_ERR "asoc: failed to init %s\n",
-					card->dai_link[i].stream_name);
-				continue;
+				printk(KERN_ERR "asoc: failed to register AC97 %s\n", card->name);
+				goto probe_dai_err;
 			}
 		}
-		if (card->dai_link[i].codec_dai->ac97_control)
-			ac97 = 1;
-	}
-
-	snprintf(codec->card->shortname, sizeof(codec->card->shortname),
-		 "%s",  card->name);
-	snprintf(codec->card->longname, sizeof(codec->card->longname),
-		 "%s (%s)", card->name, codec->name);
-
-	/* Make sure all DAPM widgets are instantiated */
-	snd_soc_dapm_new_widgets(codec);
-
-	ret = snd_card_register(codec->card);
-	if (ret < 0) {
-		printk(KERN_ERR "asoc: failed to register soundcard for %s\n",
-				codec->name);
-		goto card_err;
-	}
-
-	mutex_lock(&codec->mutex);
-#ifdef CONFIG_SND_SOC_AC97_BUS
-	/* Only instantiate AC97 if not already done by the adaptor
-	 * for the generic AC97 subsystem.
-	 */
-	if (ac97 && strcmp(codec->name, "AC97") != 0) {
-		ret = soc_ac97_dev_register(codec);
-		if (ret < 0) {
-			printk(KERN_ERR "asoc: AC97 device register failed\n");
-			snd_card_free(codec->card);
-			mutex_unlock(&codec->mutex);
-			goto card_err;
-		}
-	}
 #endif
 
-	ret = snd_soc_dapm_sys_add(card->socdev->dev);
-	if (ret < 0)
-		printk(KERN_WARNING "asoc: failed to add dapm sysfs entries\n");
-
-	ret = device_create_file(card->socdev->dev, &dev_attr_pmdown_time);
-	if (ret < 0)
-		printk(KERN_WARNING "asoc: failed to add pmdown_time sysfs\n");
-
-	ret = device_create_file(card->socdev->dev, &dev_attr_codec_reg);
-	if (ret < 0)
-		printk(KERN_WARNING "asoc: failed to add codec sysfs files\n");
-
-	soc_init_codec_debugfs(codec);
-	mutex_unlock(&codec->mutex);
-
 	card->instantiated = 1;
-
+	mutex_unlock(&card->mutex);
 	return;
 
-card_err:
-	if (platform->remove)
-		platform->remove(pdev);
+probe_dai_err:
+	for (i = 0; i < card->num_links; i++)
+		soc_remove_dai_link(card, i);
 
-platform_err:
-	if (codec_dev->remove)
-		codec_dev->remove(pdev);
-
-cpu_dai_err:
-	for (i--; i >= 0; i--) {
-		struct snd_soc_dai *cpu_dai = card->dai_link[i].cpu_dai;
-		if (cpu_dai->remove)
-			cpu_dai->remove(pdev, cpu_dai);
-	}
-
+card_probe_error:
 	if (card->remove)
 		card->remove(pdev);
+
+	snd_card_free(card->snd_card);
+
+	mutex_unlock(&card->mutex);
 }
 
 /*
@@ -1332,15 +1625,15 @@
 /* probes a new socdev */
 static int soc_probe(struct platform_device *pdev)
 {
+	struct snd_soc_card *card = platform_get_drvdata(pdev);
 	int ret = 0;
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_card *card = socdev->card;
-
-	/* Bodge while we push things out of socdev */
-	card->socdev = socdev;
 
 	/* Bodge while we unpick instantiation */
 	card->dev = &pdev->dev;
+	INIT_LIST_HEAD(&card->dai_dev_list);
+	INIT_LIST_HEAD(&card->codec_dev_list);
+	INIT_LIST_HEAD(&card->platform_dev_list);
+
 	ret = snd_soc_register_card(card);
 	if (ret != 0) {
 		dev_err(&pdev->dev, "Failed to register card\n");
@@ -1353,50 +1646,49 @@
 /* removes a socdev */
 static int soc_remove(struct platform_device *pdev)
 {
+	struct snd_soc_card *card = platform_get_drvdata(pdev);
 	int i;
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_card *card = socdev->card;
-	struct snd_soc_platform *platform = card->platform;
-	struct snd_soc_codec_device *codec_dev = socdev->codec_dev;
 
-	if (card->instantiated) {
-		run_delayed_work(&card->delayed_work);
+		if (card->instantiated) {
 
-		if (platform->remove)
-			platform->remove(pdev);
-
-		if (codec_dev->remove)
-			codec_dev->remove(pdev);
-
-		for (i = 0; i < card->num_links; i++) {
-			struct snd_soc_dai *cpu_dai = card->dai_link[i].cpu_dai;
-			if (cpu_dai->remove)
-				cpu_dai->remove(pdev, cpu_dai);
+		/* make sure any delayed work runs */
+		for (i = 0; i < card->num_rtd; i++) {
+			struct snd_soc_pcm_runtime *rtd = &card->rtd[i];
+			run_delayed_work(&rtd->delayed_work);
 		}
 
+		/* remove and free each DAI */
+		for (i = 0; i < card->num_rtd; i++)
+			soc_remove_dai_link(card, i);
+
+		/* remove the card */
 		if (card->remove)
 			card->remove(pdev);
+
+		kfree(card->rtd);
+		snd_card_free(card->snd_card);
 	}
-
 	snd_soc_unregister_card(card);
-
 	return 0;
 }
 
 static int soc_poweroff(struct device *dev)
 {
 	struct platform_device *pdev = to_platform_device(dev);
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct snd_soc_card *card = socdev->card;
+	struct snd_soc_card *card = platform_get_drvdata(pdev);
+	int i;
 
 	if (!card->instantiated)
 		return 0;
 
 	/* Flush out pmdown_time work - we actually do want to run it
 	 * now, we're shutting down so no imminent restart. */
-	run_delayed_work(&card->delayed_work);
+	for (i = 0; i < card->num_rtd; i++) {
+		struct snd_soc_pcm_runtime *rtd = &card->rtd[i];
+		run_delayed_work(&rtd->delayed_work);
+	}
 
-	snd_soc_dapm_shutdown(socdev);
+	snd_soc_dapm_shutdown(card);
 
 	return 0;
 }
@@ -1419,53 +1711,42 @@
 };
 
 /* create a new pcm */
-static int soc_new_pcm(struct snd_soc_device *socdev,
-	struct snd_soc_dai_link *dai_link, int num)
+static int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
 {
-	struct snd_soc_card *card = socdev->card;
-	struct snd_soc_codec *codec = card->codec;
-	struct snd_soc_platform *platform = card->platform;
-	struct snd_soc_dai *codec_dai = dai_link->codec_dai;
-	struct snd_soc_dai *cpu_dai = dai_link->cpu_dai;
-	struct snd_soc_pcm_runtime *rtd;
+	struct snd_soc_codec *codec = rtd->codec;
+	struct snd_soc_platform *platform = rtd->platform;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
 	struct snd_pcm *pcm;
 	char new_name[64];
 	int ret = 0, playback = 0, capture = 0;
 
-	rtd = kzalloc(sizeof(struct snd_soc_pcm_runtime), GFP_KERNEL);
-	if (rtd == NULL)
-		return -ENOMEM;
-
-	rtd->dai = dai_link;
-	rtd->socdev = socdev;
-	codec_dai->codec = card->codec;
-
 	/* check client and interface hw capabilities */
 	snprintf(new_name, sizeof(new_name), "%s %s-%d",
-		 dai_link->stream_name, codec_dai->name, num);
+			rtd->dai_link->stream_name, codec_dai->name, num);
 
-	if (codec_dai->playback.channels_min)
+	if (codec_dai->driver->playback.channels_min)
 		playback = 1;
-	if (codec_dai->capture.channels_min)
+	if (codec_dai->driver->capture.channels_min)
 		capture = 1;
 
-	ret = snd_pcm_new(codec->card, new_name, codec->pcm_devs++, playback,
-		capture, &pcm);
+	dev_dbg(rtd->card->dev, "registered pcm #%d %s\n",num,new_name);
+	ret = snd_pcm_new(rtd->card->snd_card, new_name,
+			num, playback, capture, &pcm);
 	if (ret < 0) {
-		printk(KERN_ERR "asoc: can't create pcm for codec %s\n",
-			codec->name);
-		kfree(rtd);
+		printk(KERN_ERR "asoc: can't create pcm for codec %s\n", codec->name);
 		return ret;
 	}
 
-	dai_link->pcm = pcm;
+	rtd->pcm = pcm;
 	pcm->private_data = rtd;
-	soc_pcm_ops.mmap = platform->pcm_ops->mmap;
-	soc_pcm_ops.ioctl = platform->pcm_ops->ioctl;
-	soc_pcm_ops.copy = platform->pcm_ops->copy;
-	soc_pcm_ops.silence = platform->pcm_ops->silence;
-	soc_pcm_ops.ack = platform->pcm_ops->ack;
-	soc_pcm_ops.page = platform->pcm_ops->page;
+	soc_pcm_ops.mmap = platform->driver->ops->mmap;
+	soc_pcm_ops.pointer = platform->driver->ops->pointer;
+	soc_pcm_ops.ioctl = platform->driver->ops->ioctl;
+	soc_pcm_ops.copy = platform->driver->ops->copy;
+	soc_pcm_ops.silence = platform->driver->ops->silence;
+	soc_pcm_ops.ack = platform->driver->ops->ack;
+	soc_pcm_ops.page = platform->driver->ops->page;
 
 	if (playback)
 		snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &soc_pcm_ops);
@@ -1473,14 +1754,13 @@
 	if (capture)
 		snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &soc_pcm_ops);
 
-	ret = platform->pcm_new(codec->card, codec_dai, pcm);
+	ret = platform->driver->pcm_new(rtd->card->snd_card, codec_dai, pcm);
 	if (ret < 0) {
 		printk(KERN_ERR "asoc: platform pcm constructor failed\n");
-		kfree(rtd);
 		return ret;
 	}
 
-	pcm->private_free = platform->pcm_free;
+	pcm->private_free = platform->driver->pcm_free;
 	printk(KERN_INFO "asoc: %s <-> %s mapping ok\n", codec_dai->name,
 		cpu_dai->name);
 	return ret;
@@ -1496,8 +1776,8 @@
  */
 int snd_soc_codec_volatile_register(struct snd_soc_codec *codec, int reg)
 {
-	if (codec->volatile_register)
-		return codec->volatile_register(reg);
+	if (codec->driver->volatile_register)
+		return codec->driver->volatile_register(reg);
 	else
 		return 0;
 }
@@ -1532,7 +1812,6 @@
 
 	codec->ac97->bus->ops = ops;
 	codec->ac97->num = num;
-	codec->dev = &codec->ac97->dev;
 	mutex_unlock(&codec->mutex);
 	return 0;
 }
@@ -1547,6 +1826,9 @@
 void snd_soc_free_ac97_codec(struct snd_soc_codec *codec)
 {
 	mutex_lock(&codec->mutex);
+#ifdef CONFIG_SND_SOC_AC97_BUS
+	soc_unregister_ac97_dai_link(codec);
+#endif
 	kfree(codec->ac97->bus);
 	kfree(codec->ac97);
 	codec->ac97 = NULL;
@@ -1633,95 +1915,6 @@
 EXPORT_SYMBOL_GPL(snd_soc_test_bits);
 
 /**
- * snd_soc_new_pcms - create new sound card and pcms
- * @socdev: the SoC audio device
- * @idx: ALSA card index
- * @xid: card identification
- *
- * Create a new sound card based upon the codec and interface pcms.
- *
- * Returns 0 for success, else error.
- */
-int snd_soc_new_pcms(struct snd_soc_device *socdev, int idx, const char *xid)
-{
-	struct snd_soc_card *card = socdev->card;
-	struct snd_soc_codec *codec = card->codec;
-	int ret, i;
-
-	mutex_lock(&codec->mutex);
-
-	/* register a sound card */
-	ret = snd_card_create(idx, xid, codec->owner, 0, &codec->card);
-	if (ret < 0) {
-		printk(KERN_ERR "asoc: can't create sound card for codec %s\n",
-			codec->name);
-		mutex_unlock(&codec->mutex);
-		return ret;
-	}
-
-	codec->socdev = socdev;
-	codec->card->dev = socdev->dev;
-	codec->card->private_data = codec;
-	strncpy(codec->card->driver, codec->name, sizeof(codec->card->driver));
-
-	/* create the pcms */
-	for (i = 0; i < card->num_links; i++) {
-		ret = soc_new_pcm(socdev, &card->dai_link[i], i);
-		if (ret < 0) {
-			printk(KERN_ERR "asoc: can't create pcm %s\n",
-				card->dai_link[i].stream_name);
-			mutex_unlock(&codec->mutex);
-			return ret;
-		}
-		/* Check for codec->ac97 to handle the ac97.c fun */
-		if (card->dai_link[i].codec_dai->ac97_control && codec->ac97) {
-			snd_ac97_dev_add_pdata(codec->ac97,
-				card->dai_link[i].cpu_dai->ac97_pdata);
-		}
-	}
-
-	mutex_unlock(&codec->mutex);
-	return ret;
-}
-EXPORT_SYMBOL_GPL(snd_soc_new_pcms);
-
-/**
- * snd_soc_free_pcms - free sound card and pcms
- * @socdev: the SoC audio device
- *
- * Frees sound card and pcms associated with the socdev.
- * Also unregister the codec if it is an AC97 device.
- */
-void snd_soc_free_pcms(struct snd_soc_device *socdev)
-{
-	struct snd_soc_codec *codec = socdev->card->codec;
-#ifdef CONFIG_SND_SOC_AC97_BUS
-	struct snd_soc_dai *codec_dai;
-	int i;
-#endif
-
-	mutex_lock(&codec->mutex);
-	soc_cleanup_codec_debugfs(codec);
-#ifdef CONFIG_SND_SOC_AC97_BUS
-	for (i = 0; i < codec->num_dai; i++) {
-		codec_dai = &codec->dai[i];
-		if (codec_dai->ac97_control && codec->ac97 &&
-		    strcmp(codec->name, "AC97") != 0) {
-			soc_ac97_dev_unregister(codec);
-			goto free_card;
-		}
-	}
-free_card:
-#endif
-
-	if (codec->card)
-		snd_card_free(codec->card);
-	device_remove_file(socdev->dev, &dev_attr_codec_reg);
-	mutex_unlock(&codec->mutex);
-}
-EXPORT_SYMBOL_GPL(snd_soc_free_pcms);
-
-/**
  * snd_soc_set_runtime_hwparams - set the runtime hardware parameters
  * @substream: the pcm substream
  * @hw: the hardware parameters
@@ -1782,15 +1975,15 @@
 int snd_soc_add_controls(struct snd_soc_codec *codec,
 	const struct snd_kcontrol_new *controls, int num_controls)
 {
-	struct snd_card *card = codec->card;
+	struct snd_card *card = codec->card->snd_card;
 	int err, i;
 
 	for (i = 0; i < num_controls; i++) {
 		const struct snd_kcontrol_new *control = &controls[i];
 		err = snd_ctl_add(card, snd_soc_cnew(control, codec, NULL));
 		if (err < 0) {
-			dev_err(codec->dev, "%s: Failed to add %s\n",
-				codec->name, control->name);
+			dev_err(codec->dev, "%s: Failed to add %s: %d\n",
+				codec->name, control->name, err);
 			return err;
 		}
 	}
@@ -2337,7 +2530,7 @@
 int snd_soc_limit_volume(struct snd_soc_codec *codec,
 	const char *name, int max)
 {
-	struct snd_card *card = codec->card;
+	struct snd_card *card = codec->card->snd_card;
 	struct snd_kcontrol *kctl;
 	struct soc_mixer_control *mc;
 	int found = 0;
@@ -2469,8 +2662,8 @@
 int snd_soc_dai_set_sysclk(struct snd_soc_dai *dai, int clk_id,
 	unsigned int freq, int dir)
 {
-	if (dai->ops && dai->ops->set_sysclk)
-		return dai->ops->set_sysclk(dai, clk_id, freq, dir);
+	if (dai->driver && dai->driver->ops->set_sysclk)
+		return dai->driver->ops->set_sysclk(dai, clk_id, freq, dir);
 	else
 		return -EINVAL;
 }
@@ -2489,8 +2682,8 @@
 int snd_soc_dai_set_clkdiv(struct snd_soc_dai *dai,
 	int div_id, int div)
 {
-	if (dai->ops && dai->ops->set_clkdiv)
-		return dai->ops->set_clkdiv(dai, div_id, div);
+	if (dai->driver && dai->driver->ops->set_clkdiv)
+		return dai->driver->ops->set_clkdiv(dai, div_id, div);
 	else
 		return -EINVAL;
 }
@@ -2509,8 +2702,8 @@
 int snd_soc_dai_set_pll(struct snd_soc_dai *dai, int pll_id, int source,
 	unsigned int freq_in, unsigned int freq_out)
 {
-	if (dai->ops && dai->ops->set_pll)
-		return dai->ops->set_pll(dai, pll_id, source,
+	if (dai->driver && dai->driver->ops->set_pll)
+		return dai->driver->ops->set_pll(dai, pll_id, source,
 					 freq_in, freq_out);
 	else
 		return -EINVAL;
@@ -2526,8 +2719,8 @@
  */
 int snd_soc_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
 {
-	if (dai->ops && dai->ops->set_fmt)
-		return dai->ops->set_fmt(dai, fmt);
+	if (dai->driver && dai->driver->ops->set_fmt)
+		return dai->driver->ops->set_fmt(dai, fmt);
 	else
 		return -EINVAL;
 }
@@ -2547,8 +2740,8 @@
 int snd_soc_dai_set_tdm_slot(struct snd_soc_dai *dai,
 	unsigned int tx_mask, unsigned int rx_mask, int slots, int slot_width)
 {
-	if (dai->ops && dai->ops->set_tdm_slot)
-		return dai->ops->set_tdm_slot(dai, tx_mask, rx_mask,
+	if (dai->driver && dai->driver->ops->set_tdm_slot)
+		return dai->driver->ops->set_tdm_slot(dai, tx_mask, rx_mask,
 				slots, slot_width);
 	else
 		return -EINVAL;
@@ -2571,8 +2764,8 @@
 	unsigned int tx_num, unsigned int *tx_slot,
 	unsigned int rx_num, unsigned int *rx_slot)
 {
-	if (dai->ops && dai->ops->set_channel_map)
-		return dai->ops->set_channel_map(dai, tx_num, tx_slot,
+	if (dai->driver && dai->driver->ops->set_channel_map)
+		return dai->driver->ops->set_channel_map(dai, tx_num, tx_slot,
 			rx_num, rx_slot);
 	else
 		return -EINVAL;
@@ -2588,8 +2781,8 @@
  */
 int snd_soc_dai_set_tristate(struct snd_soc_dai *dai, int tristate)
 {
-	if (dai->ops && dai->ops->set_tristate)
-		return dai->ops->set_tristate(dai, tristate);
+	if (dai->driver && dai->driver->ops->set_tristate)
+		return dai->driver->ops->set_tristate(dai, tristate);
 	else
 		return -EINVAL;
 }
@@ -2604,8 +2797,8 @@
  */
 int snd_soc_dai_digital_mute(struct snd_soc_dai *dai, int mute)
 {
-	if (dai->ops && dai->ops->digital_mute)
-		return dai->ops->digital_mute(dai, mute);
+	if (dai->driver && dai->driver->ops->digital_mute)
+		return dai->driver->ops->digital_mute(dai, mute);
 	else
 		return -EINVAL;
 }
@@ -2622,11 +2815,22 @@
  */
 static int snd_soc_register_card(struct snd_soc_card *card)
 {
+	int i;
+
 	if (!card->name || !card->dev)
 		return -EINVAL;
 
+	card->rtd = kzalloc(sizeof(struct snd_soc_pcm_runtime) * card->num_links,
+			GFP_KERNEL);
+	if (card->rtd == NULL)
+		return -ENOMEM;
+
+	for (i = 0; i < card->num_links; i++)
+		card->rtd[i].dai_link = &card->dai_link[i];
+
 	INIT_LIST_HEAD(&card->list);
 	card->instantiated = 0;
+	mutex_init(&card->mutex);
 
 	mutex_lock(&client_mutex);
 	list_add(&card->list, &card_list);
@@ -2652,30 +2856,97 @@
 	mutex_lock(&client_mutex);
 	list_del(&card->list);
 	mutex_unlock(&client_mutex);
-
 	dev_dbg(card->dev, "Unregistered card '%s'\n", card->name);
 
 	return 0;
 }
 
+/*
+ * Simplify DAI link configuration by removing ".-1" from device names
+ * and sanitizing names.
+ */
+static inline char *fmt_single_name(struct device *dev, int *id)
+{
+	char *found, name[NAME_SIZE];
+	int id1, id2;
+
+	if (dev_name(dev) == NULL)
+		return NULL;
+
+	strncpy(name, dev_name(dev), NAME_SIZE);
+
+	/* are we a "%s.%d" name (platform and SPI components) */
+	found = strstr(name, dev->driver->name);
+	if (found) {
+		/* get ID */
+		if (sscanf(&found[strlen(dev->driver->name)], ".%d", id) == 1) {
+
+			/* discard ID from name if ID == -1 */
+			if (*id == -1)
+				found[strlen(dev->driver->name)] = '\0';
+		}
+
+	} else {
+		/* I2C component devices are named "bus-addr"  */
+		if (sscanf(name, "%x-%x", &id1, &id2) == 2) {
+			char tmp[NAME_SIZE];
+
+			/* create unique ID number from I2C addr and bus */
+			*id = ((id1 && 0xffff) << 16) + id2;
+
+			/* sanitize component name for DAI link creation */
+			snprintf(tmp, NAME_SIZE, "%s.%s", dev->driver->name, name);
+			strncpy(name, tmp, NAME_SIZE);
+		} else
+			*id = 0;
+	}
+
+	return kstrdup(name, GFP_KERNEL);
+}
+
+/*
+ * Simplify DAI link naming for single devices with multiple DAIs by removing
+ * any ".-1" and using the DAI name (instead of device name).
+ */
+static inline char *fmt_multiple_name(struct device *dev,
+		struct snd_soc_dai_driver *dai_drv)
+{
+	if (dai_drv->name == NULL) {
+		printk(KERN_ERR "asoc: error - multiple DAI %s registered with no name\n",
+				dev_name(dev));
+		return NULL;
+	}
+
+	return kstrdup(dai_drv->name, GFP_KERNEL);
+}
+
 /**
  * snd_soc_register_dai - Register a DAI with the ASoC core
  *
  * @dai: DAI to register
  */
-int snd_soc_register_dai(struct snd_soc_dai *dai)
+int snd_soc_register_dai(struct device *dev,
+		struct snd_soc_dai_driver *dai_drv)
 {
-	if (!dai->name)
-		return -EINVAL;
+	struct snd_soc_dai *dai;
 
-	/* The device should become mandatory over time */
-	if (!dai->dev)
-		printk(KERN_WARNING "No device for DAI %s\n", dai->name);
+	dev_dbg(dev, "dai register %s\n", dev_name(dev));
 
-	if (!dai->ops)
-		dai->ops = &null_dai_ops;
+	dai = kzalloc(sizeof(struct snd_soc_dai), GFP_KERNEL);
+	if (dai == NULL)
+			return -ENOMEM;
 
-	INIT_LIST_HEAD(&dai->list);
+	/* create DAI component name */
+	dai->name = fmt_single_name(dev, &dai->id);
+	if (dai->name == NULL) {
+		kfree(dai);
+		return -ENOMEM;
+	}
+
+	dai->dev = dev;
+	dai->driver = dai_drv;
+	if (!dai->driver->ops)
+		dai->driver->ops = &null_dai_ops;
 
 	mutex_lock(&client_mutex);
 	list_add(&dai->list, &dai_list);
@@ -2693,13 +2964,24 @@
  *
  * @dai: DAI to unregister
  */
-void snd_soc_unregister_dai(struct snd_soc_dai *dai)
+void snd_soc_unregister_dai(struct device *dev)
 {
+	struct snd_soc_dai *dai;
+
+	list_for_each_entry(dai, &dai_list, list) {
+		if (dev == dai->dev)
+			goto found;
+	}
+	return;
+
+found:
 	mutex_lock(&client_mutex);
 	list_del(&dai->list);
 	mutex_unlock(&client_mutex);
 
 	pr_debug("Unregistered DAI '%s'\n", dai->name);
+	kfree(dai->name);
+	kfree(dai);
 }
 EXPORT_SYMBOL_GPL(snd_soc_unregister_dai);
 
@@ -2709,21 +2991,47 @@
  * @dai: Array of DAIs to register
  * @count: Number of DAIs
  */
-int snd_soc_register_dais(struct snd_soc_dai *dai, size_t count)
+int snd_soc_register_dais(struct device *dev,
+		struct snd_soc_dai_driver *dai_drv, size_t count)
 {
-	int i, ret;
+	struct snd_soc_dai *dai;
+	int i, ret = 0;
+
+	dev_dbg(dev, "dai register %s #%Zu\n", dev_name(dev), count);
 
 	for (i = 0; i < count; i++) {
-		ret = snd_soc_register_dai(&dai[i]);
-		if (ret != 0)
+
+		dai = kzalloc(sizeof(struct snd_soc_dai), GFP_KERNEL);
+		if (dai == NULL)
+			return -ENOMEM;
+
+		/* create DAI component name */
+		dai->name = fmt_multiple_name(dev, &dai_drv[i]);
+		if (dai->name == NULL) {
+			kfree(dai);
+			ret = -EINVAL;
 			goto err;
+		}
+
+		dai->dev = dev;
+		dai->id = i;
+		dai->driver = &dai_drv[i];
+		if (!dai->driver->ops)
+			dai->driver->ops = &null_dai_ops;
+
+		mutex_lock(&client_mutex);
+		list_add(&dai->list, &dai_list);
+		mutex_unlock(&client_mutex);
+
+		pr_debug("Registered DAI '%s'\n", dai->name);
 	}
 
+	snd_soc_instantiate_cards();
 	return 0;
 
 err:
 	for (i--; i >= 0; i--)
-		snd_soc_unregister_dai(&dai[i]);
+		snd_soc_unregister_dai(dev);
 
 	return ret;
 }
@@ -2735,12 +3043,12 @@
  * @dai: Array of DAIs to unregister
  * @count: Number of DAIs
  */
-void snd_soc_unregister_dais(struct snd_soc_dai *dai, size_t count)
+void snd_soc_unregister_dais(struct device *dev, size_t count)
 {
 	int i;
 
 	for (i = 0; i < count; i++)
-		snd_soc_unregister_dai(&dai[i]);
+		snd_soc_unregister_dai(dev);
 }
 EXPORT_SYMBOL_GPL(snd_soc_unregister_dais);
 
@@ -2749,12 +3057,26 @@
  *
  * @platform: platform to register
  */
-int snd_soc_register_platform(struct snd_soc_platform *platform)
+int snd_soc_register_platform(struct device *dev,
+		struct snd_soc_platform_driver *platform_drv)
 {
-	if (!platform->name)
-		return -EINVAL;
+	struct snd_soc_platform *platform;
 
-	INIT_LIST_HEAD(&platform->list);
+	dev_dbg(dev, "platform register %s\n", dev_name(dev));
+
+	platform = kzalloc(sizeof(struct snd_soc_platform), GFP_KERNEL);
+	if (platform == NULL)
+			return -ENOMEM;
+
+	/* create platform component name */
+	platform->name = fmt_single_name(dev, &platform->id);
+	if (platform->name == NULL) {
+		kfree(platform);
+		return -ENOMEM;
+	}
+
+	platform->dev = dev;
+	platform->driver = platform_drv;
 
 	mutex_lock(&client_mutex);
 	list_add(&platform->list, &platform_list);
@@ -2772,13 +3094,24 @@
  *
  * @platform: platform to unregister
  */
-void snd_soc_unregister_platform(struct snd_soc_platform *platform)
+void snd_soc_unregister_platform(struct device *dev)
 {
+	struct snd_soc_platform *platform;
+
+	list_for_each_entry(platform, &platform_list, list) {
+		if (dev == platform->dev)
+			goto found;
+	}
+	return;
+
+found:
 	mutex_lock(&client_mutex);
 	list_del(&platform->list);
 	mutex_unlock(&client_mutex);
 
 	pr_debug("Unregistered platform '%s'\n", platform->name);
+	kfree(platform->name);
+	kfree(platform);
 }
 EXPORT_SYMBOL_GPL(snd_soc_unregister_platform);
 
@@ -2820,22 +3153,61 @@
  *
  * @codec: codec to register
  */
-int snd_soc_register_codec(struct snd_soc_codec *codec)
+int snd_soc_register_codec(struct device *dev,
+		struct snd_soc_codec_driver *codec_drv,
+		struct snd_soc_dai_driver *dai_drv, int num_dai)
 {
-	int i;
+	struct snd_soc_codec *codec;
+	int ret, i;
 
-	if (!codec->name)
-		return -EINVAL;
+	dev_dbg(dev, "codec register %s\n", dev_name(dev));
 
-	/* The device should become mandatory over time */
-	if (!codec->dev)
-		printk(KERN_WARNING "No device for codec %s\n", codec->name);
+	codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
+	if (codec == NULL)
+		return -ENOMEM;
 
-	INIT_LIST_HEAD(&codec->list);
+	/* create CODEC component name */
+	codec->name = fmt_single_name(dev, &codec->id);
+	if (codec->name == NULL) {
+		kfree(codec);
+		return -ENOMEM;
+	}
 
-	for (i = 0; i < codec->num_dai; i++) {
-		fixup_codec_formats(&codec->dai[i].playback);
-		fixup_codec_formats(&codec->dai[i].capture);
+	/* allocate CODEC register cache */
+	if (codec_drv->reg_cache_size && codec_drv->reg_word_size) {
+
+		if (codec_drv->reg_cache_default)
+			codec->reg_cache = kmemdup(codec_drv->reg_cache_default,
+				codec_drv->reg_cache_size * codec_drv->reg_word_size, GFP_KERNEL);
+		else
+			codec->reg_cache = kzalloc(codec_drv->reg_cache_size *
+				codec_drv->reg_word_size, GFP_KERNEL);
+
+		if (codec->reg_cache == NULL) {
+			kfree(codec->name);
+			kfree(codec);
+			return -ENOMEM;
+		}
+	}
+
+	codec->dev = dev;
+	codec->driver = codec_drv;
+	codec->bias_level = SND_SOC_BIAS_OFF;
+	codec->num_dai = num_dai;
+	mutex_init(&codec->mutex);
+	INIT_LIST_HEAD(&codec->dapm_widgets);
+	INIT_LIST_HEAD(&codec->dapm_paths);
+
+	for (i = 0; i < num_dai; i++) {
+		fixup_codec_formats(&dai_drv[i].playback);
+		fixup_codec_formats(&dai_drv[i].capture);
+	}
+
+	/* register any DAIs */
+	if (num_dai) {
+		ret = snd_soc_register_dais(dev, dai_drv, num_dai);
+		if (ret < 0)
+			goto error;
 	}
 
 	mutex_lock(&client_mutex);
@@ -2844,8 +3216,17 @@
 	mutex_unlock(&client_mutex);
 
 	pr_debug("Registered codec '%s'\n", codec->name);
-
 	return 0;
+
+error:
+	for (i--; i >= 0; i--)
+		snd_soc_unregister_dai(dev);
+
+	if (codec->reg_cache)
+		kfree(codec->reg_cache);
+	kfree(codec->name);
+	kfree(codec);
+	return ret;
 }
 EXPORT_SYMBOL_GPL(snd_soc_register_codec);
 
@@ -2854,13 +3235,31 @@
  *
  * @codec: codec to unregister
  */
-void snd_soc_unregister_codec(struct snd_soc_codec *codec)
+void snd_soc_unregister_codec(struct device *dev)
 {
+	struct snd_soc_codec *codec;
+	int i;
+
+	list_for_each_entry(codec, &codec_list, list) {
+		if (dev == codec->dev)
+			goto found;
+	}
+	return;
+
+found:
+	if (codec->num_dai)
+		for (i = 0; i < codec->num_dai; i++)
+			snd_soc_unregister_dai(dev);
+
 	mutex_lock(&client_mutex);
 	list_del(&codec->list);
 	mutex_unlock(&client_mutex);
 
 	pr_debug("Unregistered codec '%s'\n", codec->name);
+
+	if (codec->reg_cache)
+		kfree(codec->reg_cache);
+	kfree(codec);
 }
 EXPORT_SYMBOL_GPL(snd_soc_unregister_codec);
 
@@ -2873,6 +3272,18 @@
 		       "ASoC: Failed to create debugfs directory\n");
 		debugfs_root = NULL;
 	}
+
+	if (!debugfs_create_file("codecs", 0444, debugfs_root, NULL,
+				 &codec_list_fops))
+		pr_warn("ASoC: Failed to create CODEC list debugfs file\n");
+
+	if (!debugfs_create_file("dais", 0444, debugfs_root, NULL,
+				 &dai_list_fops))
+		pr_warn("ASoC: Failed to create DAI list debugfs file\n");
+
+	if (!debugfs_create_file("platforms", 0444, debugfs_root, NULL,
+				 &platform_list_fops))
+		pr_warn("ASoC: Failed to create platform list debugfs file\n");
 #endif
 
 	return platform_driver_register(&soc_driver);
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 03cb7c0..035cab8 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -112,43 +112,41 @@
 
 /**
  * snd_soc_dapm_set_bias_level - set the bias level for the system
- * @socdev: audio device
+ * @card: audio device
  * @level: level to configure
  *
  * Configure the bias (power) levels for the SoC audio device.
  *
  * Returns 0 for success else error.
  */
-static int snd_soc_dapm_set_bias_level(struct snd_soc_device *socdev,
-				       enum snd_soc_bias_level level)
+static int snd_soc_dapm_set_bias_level(struct snd_soc_card *card,
+		struct snd_soc_codec *codec, enum snd_soc_bias_level level)
 {
-	struct snd_soc_card *card = socdev->card;
-	struct snd_soc_codec *codec = socdev->card->codec;
 	int ret = 0;
 
 	switch (level) {
 	case SND_SOC_BIAS_ON:
-		dev_dbg(socdev->dev, "Setting full bias\n");
+		dev_dbg(codec->dev, "Setting full bias\n");
 		break;
 	case SND_SOC_BIAS_PREPARE:
-		dev_dbg(socdev->dev, "Setting bias prepare\n");
+		dev_dbg(codec->dev, "Setting bias prepare\n");
 		break;
 	case SND_SOC_BIAS_STANDBY:
-		dev_dbg(socdev->dev, "Setting standby bias\n");
+		dev_dbg(codec->dev, "Setting standby bias\n");
 		break;
 	case SND_SOC_BIAS_OFF:
-		dev_dbg(socdev->dev, "Setting bias off\n");
+		dev_dbg(codec->dev, "Setting bias off\n");
 		break;
 	default:
-		dev_err(socdev->dev, "Setting invalid bias %d\n", level);
+		dev_err(codec->dev, "Setting invalid bias %d\n", level);
 		return -EINVAL;
 	}
 
-	if (card->set_bias_level)
+	if (card && card->set_bias_level)
 		ret = card->set_bias_level(card, level);
 	if (ret == 0) {
-		if (codec->set_bias_level)
-			ret = codec->set_bias_level(codec, level);
+		if (codec->driver->set_bias_level)
+			ret = codec->driver->set_bias_level(codec, level);
 		else
 			codec->bias_level = level;
 	}
@@ -370,7 +368,7 @@
 
 			path->kcontrol = snd_soc_cnew(&w->kcontrols[i], w,
 				path->long_name);
-			ret = snd_ctl_add(codec->card, path->kcontrol);
+			ret = snd_ctl_add(codec->card->snd_card, path->kcontrol);
 			if (ret < 0) {
 				printk(KERN_ERR "asoc: failed to add dapm kcontrol %s: %d\n",
 				       path->long_name,
@@ -398,7 +396,7 @@
 	}
 
 	kcontrol = snd_soc_cnew(&w->kcontrols[0], w, w->name);
-	ret = snd_ctl_add(codec->card, kcontrol);
+	ret = snd_ctl_add(codec->card->snd_card, kcontrol);
 	if (ret < 0)
 		goto err;
 
@@ -437,9 +435,9 @@
  */
 static int snd_soc_dapm_suspend_check(struct snd_soc_dapm_widget *widget)
 {
-	struct snd_soc_codec *codec = widget->codec;
+	int level = snd_power_get_state(widget->codec->card->snd_card);
 
-	switch (snd_power_get_state(codec->card)) {
+	switch (level) {
 	case SNDRV_CTL_POWER_D3hot:
 	case SNDRV_CTL_POWER_D3cold:
 		if (widget->ignore_suspend)
@@ -893,7 +891,7 @@
  */
 static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
 {
-	struct snd_soc_device *socdev = codec->socdev;
+	struct snd_soc_card *card = codec->card;
 	struct snd_soc_dapm_widget *w;
 	LIST_HEAD(up_list);
 	LIST_HEAD(down_list);
@@ -966,7 +964,7 @@
 	}
 
 	if (sys_power && codec->bias_level == SND_SOC_BIAS_OFF) {
-		ret = snd_soc_dapm_set_bias_level(socdev,
+		ret = snd_soc_dapm_set_bias_level(card, codec,
 						  SND_SOC_BIAS_STANDBY);
 		if (ret != 0)
 			pr_err("Failed to turn on bias: %d\n", ret);
@@ -975,8 +973,7 @@
 	/* If we're changing to all on or all off then prepare */
 	if ((sys_power && codec->bias_level == SND_SOC_BIAS_STANDBY) ||
 	    (!sys_power && codec->bias_level == SND_SOC_BIAS_ON)) {
-		ret = snd_soc_dapm_set_bias_level(socdev,
-						  SND_SOC_BIAS_PREPARE);
+		ret = snd_soc_dapm_set_bias_level(card, codec, SND_SOC_BIAS_PREPARE);
 		if (ret != 0)
 			pr_err("Failed to prepare bias: %d\n", ret);
 	}
@@ -989,8 +986,7 @@
 
 	/* If we just powered the last thing off drop to standby bias */
 	if (codec->bias_level == SND_SOC_BIAS_PREPARE && !sys_power) {
-		ret = snd_soc_dapm_set_bias_level(socdev,
-						  SND_SOC_BIAS_STANDBY);
+		ret = snd_soc_dapm_set_bias_level(card, codec, SND_SOC_BIAS_STANDBY);
 		if (ret != 0)
 			pr_err("Failed to apply standby bias: %d\n", ret);
 	}
@@ -998,15 +994,14 @@
 	/* If we're in standby and can support bias off then do that */
 	if (codec->bias_level == SND_SOC_BIAS_STANDBY &&
 	    codec->idle_bias_off) {
-		ret = snd_soc_dapm_set_bias_level(socdev, SND_SOC_BIAS_OFF);
+		ret = snd_soc_dapm_set_bias_level(card, codec, SND_SOC_BIAS_OFF);
 		if (ret != 0)
 			pr_err("Failed to turn off bias: %d\n", ret);
 	}
 
 	/* If we just powered up then move to active bias */
 	if (codec->bias_level == SND_SOC_BIAS_PREPARE && sys_power) {
-		ret = snd_soc_dapm_set_bias_level(socdev,
-						  SND_SOC_BIAS_ON);
+		ret = snd_soc_dapm_set_bias_level(card, codec, SND_SOC_BIAS_ON);
 		if (ret != 0)
 			pr_err("Failed to apply active bias: %d\n", ret);
 	}
@@ -1188,8 +1183,9 @@
 static ssize_t dapm_widget_show(struct device *dev,
 	struct device_attribute *attr, char *buf)
 {
-	struct snd_soc_device *devdata = dev_get_drvdata(dev);
-	struct snd_soc_codec *codec = devdata->card->codec;
+	struct snd_soc_pcm_runtime *rtd =
+			container_of(dev, struct snd_soc_pcm_runtime, dev);
+	struct snd_soc_codec *codec =rtd->codec;
 	struct snd_soc_dapm_widget *w;
 	int count = 0;
 	char *state = "not set";
@@ -1998,9 +1994,10 @@
  *
  * Returns 0 for success else error.
  */
-int snd_soc_dapm_stream_event(struct snd_soc_codec *codec,
-	char *stream, int event)
+int snd_soc_dapm_stream_event(struct snd_soc_pcm_runtime *rtd,
+	const char *stream, int event)
 {
+	struct snd_soc_codec *codec = rtd->codec;
 	struct snd_soc_dapm_widget *w;
 
 	if (stream == NULL)
@@ -2168,25 +2165,19 @@
 
 /**
  * snd_soc_dapm_free - free dapm resources
- * @socdev: SoC device
+ * @card: SoC device
  *
  * Free all dapm widgets and resources.
  */
-void snd_soc_dapm_free(struct snd_soc_device *socdev)
+void snd_soc_dapm_free(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = socdev->card->codec;
-
-	snd_soc_dapm_sys_remove(socdev->dev);
+	snd_soc_dapm_sys_remove(codec->dev);
 	dapm_free_widgets(codec);
 }
 EXPORT_SYMBOL_GPL(snd_soc_dapm_free);
 
-/*
- * snd_soc_dapm_shutdown - callback for system shutdown
- */
-void snd_soc_dapm_shutdown(struct snd_soc_device *socdev)
+static void soc_dapm_shutdown_codec(struct snd_soc_codec *codec)
 {
-	struct snd_soc_codec *codec = socdev->card->codec;
 	struct snd_soc_dapm_widget *w;
 	LIST_HEAD(down_list);
 	int powerdown = 0;
@@ -2203,12 +2194,23 @@
 	 * standby.
 	 */
 	if (powerdown) {
-		snd_soc_dapm_set_bias_level(socdev, SND_SOC_BIAS_PREPARE);
+		snd_soc_dapm_set_bias_level(NULL, codec, SND_SOC_BIAS_PREPARE);
 		dapm_seq_run(codec, &down_list, 0, dapm_down_seq);
-		snd_soc_dapm_set_bias_level(socdev, SND_SOC_BIAS_STANDBY);
+		snd_soc_dapm_set_bias_level(NULL, codec, SND_SOC_BIAS_STANDBY);
 	}
+}
 
-	snd_soc_dapm_set_bias_level(socdev, SND_SOC_BIAS_OFF);
+/*
+ * snd_soc_dapm_shutdown - callback for system shutdown
+ */
+void snd_soc_dapm_shutdown(struct snd_soc_card *card)
+{
+	struct snd_soc_codec *codec;
+
+	list_for_each_entry(codec, &card->codec_dev_list, list)
+		soc_dapm_shutdown_codec(codec);
+
+	snd_soc_dapm_set_bias_level(card, codec, SND_SOC_BIAS_OFF);
 }
 
 /* Module information */
diff --git a/sound/soc/soc-jack.c b/sound/soc/soc-jack.c
index 29159e1..8862770 100644
--- a/sound/soc/soc-jack.c
+++ b/sound/soc/soc-jack.c
@@ -32,14 +32,14 @@
  * Returns zero if successful, or a negative error code on failure.
  * On success jack will be initialised.
  */
-int snd_soc_jack_new(struct snd_soc_card *card, const char *id, int type,
+int snd_soc_jack_new(struct snd_soc_codec *codec, const char *id, int type,
 		     struct snd_soc_jack *jack)
 {
-	jack->card = card;
+	jack->codec = codec;
 	INIT_LIST_HEAD(&jack->pins);
 	BLOCKING_INIT_NOTIFIER_HEAD(&jack->notifier);
 
-	return snd_jack_new(card->codec->card, id, type, &jack->jack);
+	return snd_jack_new(codec->card->snd_card, id, type, &jack->jack);
 }
 EXPORT_SYMBOL_GPL(snd_soc_jack_new);
 
@@ -67,7 +67,7 @@
 	if (!jack)
 		return;
 
-	codec = jack->card->codec;
+	codec = jack->codec;
 
 	mutex_lock(&codec->mutex);
 
@@ -268,7 +268,7 @@
 		ret = request_irq(gpio_to_irq(gpios[i].gpio),
 				gpio_handler,
 				IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
-				jack->card->dev->driver->name,
+				jack->codec->dev->driver->name,
 				&gpios[i]);
 		if (ret)
 			goto err;
diff --git a/sound/soc/txx9/txx9aclc-ac97.c b/sound/soc/txx9/txx9aclc-ac97.c
index 0ec20b6..743d07b 100644
--- a/sound/soc/txx9/txx9aclc-ac97.c
+++ b/sound/soc/txx9/txx9aclc-ac97.c
@@ -36,13 +36,11 @@
 
 static DECLARE_WAIT_QUEUE_HEAD(ac97_waitq);
 
-/* REVISIT: How to find txx9aclc_soc_device from snd_ac97? */
-static struct txx9aclc_soc_device *txx9aclc_soc_dev;
+/* REVISIT: How to find txx9aclc_drvdata from snd_ac97? */
+static struct txx9aclc_plat_drvdata *txx9aclc_drvdata;
 
-static int txx9aclc_regready(struct txx9aclc_soc_device *dev)
+static int txx9aclc_regready(struct txx9aclc_plat_drvdata *drvdata)
 {
-	struct txx9aclc_plat_drvdata *drvdata = txx9aclc_get_plat_drvdata(dev);
-
 	return __raw_readl(drvdata->base + ACINTSTS) & ACINT_REGACCRDY;
 }
 
@@ -50,8 +48,7 @@
 static unsigned short txx9aclc_ac97_read(struct snd_ac97 *ac97,
 					 unsigned short reg)
 {
-	struct txx9aclc_soc_device *dev = txx9aclc_soc_dev;
-	struct txx9aclc_plat_drvdata *drvdata = txx9aclc_get_plat_drvdata(dev);
+	struct txx9aclc_plat_drvdata *drvdata = txx9aclc_drvdata;
 	void __iomem *base = drvdata->base;
 	u32 dat;
 
@@ -61,15 +58,15 @@
 	dat = (reg << ACREGACC_REG_SHIFT) | ACREGACC_READ;
 	__raw_writel(dat, base + ACREGACC);
 	__raw_writel(ACINT_REGACCRDY, base + ACINTEN);
-	if (!wait_event_timeout(ac97_waitq, txx9aclc_regready(dev), HZ)) {
+	if (!wait_event_timeout(ac97_waitq, txx9aclc_regready(txx9aclc_drvdata), HZ)) {
 		__raw_writel(ACINT_REGACCRDY, base + ACINTDIS);
-		dev_err(dev->soc_dev.dev, "ac97 read timeout (reg %#x)\n", reg);
+		printk(KERN_ERR "ac97 read timeout (reg %#x)\n", reg);
 		dat = 0xffff;
 		goto done;
 	}
 	dat = __raw_readl(base + ACREGACC);
 	if (((dat >> ACREGACC_REG_SHIFT) & 0xff) != reg) {
-		dev_err(dev->soc_dev.dev, "reg mismatch %x with %x\n",
+		printk(KERN_ERR "reg mismatch %x with %x\n",
 			dat, reg);
 		dat = 0xffff;
 		goto done;
@@ -84,16 +81,15 @@
 static void txx9aclc_ac97_write(struct snd_ac97 *ac97, unsigned short reg,
 				unsigned short val)
 {
-	struct txx9aclc_soc_device *dev = txx9aclc_soc_dev;
-	struct txx9aclc_plat_drvdata *drvdata = txx9aclc_get_plat_drvdata(dev);
+	struct txx9aclc_plat_drvdata *drvdata = txx9aclc_drvdata;
 	void __iomem *base = drvdata->base;
 
 	__raw_writel(((reg | (ac97->num << 7)) << ACREGACC_REG_SHIFT) |
 		     (val << ACREGACC_DAT_SHIFT),
 		     base + ACREGACC);
 	__raw_writel(ACINT_REGACCRDY, base + ACINTEN);
-	if (!wait_event_timeout(ac97_waitq, txx9aclc_regready(dev), HZ)) {
-		dev_err(dev->soc_dev.dev,
+	if (!wait_event_timeout(ac97_waitq, txx9aclc_regready(txx9aclc_drvdata), HZ)) {
+		printk(KERN_ERR
 			"ac97 write timeout (reg %#x)\n", reg);
 	}
 	__raw_writel(ACINT_REGACCRDY, base + ACINTDIS);
@@ -101,8 +97,7 @@
 
 static void txx9aclc_ac97_cold_reset(struct snd_ac97 *ac97)
 {
-	struct txx9aclc_soc_device *dev = txx9aclc_soc_dev;
-	struct txx9aclc_plat_drvdata *drvdata = txx9aclc_get_plat_drvdata(dev);
+	struct txx9aclc_plat_drvdata *drvdata = txx9aclc_drvdata;
 	void __iomem *base = drvdata->base;
 	u32 ready = ACINT_CODECRDY(ac97->num) | ACINT_REGACCRDY;
 
@@ -141,31 +136,23 @@
 	return IRQ_HANDLED;
 }
 
-static int txx9aclc_ac97_probe(struct platform_device *pdev,
-			       struct snd_soc_dai *dai)
+static int txx9aclc_ac97_probe(struct snd_soc_dai *dai)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct txx9aclc_soc_device *dev =
-		container_of(socdev, struct txx9aclc_soc_device, soc_dev);
-
-	dev->aclc_pdev = to_platform_device(dai->dev);
-	txx9aclc_soc_dev = dev;
+	txx9aclc_drvdata = snd_soc_dai_get_drvdata(dai);
 	return 0;
 }
 
-static void txx9aclc_ac97_remove(struct platform_device *pdev,
-				 struct snd_soc_dai *dai)
+static int txx9aclc_ac97_remove(struct snd_soc_dai *dai)
 {
-	struct platform_device *aclc_pdev = to_platform_device(dai->dev);
-	struct txx9aclc_plat_drvdata *drvdata = platform_get_drvdata(aclc_pdev);
+	struct txx9aclc_plat_drvdata *drvdata = snd_soc_dai_get_drvdata(dai);
 
 	/* disable AC-link */
 	__raw_writel(ACCTL_ENLINK, drvdata->base + ACCTLDIS);
-	txx9aclc_soc_dev = NULL;
+	txx9aclc_drvdata = NULL;
+	return 0;
 }
 
-struct snd_soc_dai txx9aclc_ac97_dai = {
-	.name			= "txx9aclc_ac97",
+static struct snd_soc_dai_driver txx9aclc_ac97_dai = {
 	.ac97_control		= 1,
 	.probe			= txx9aclc_ac97_probe,
 	.remove			= txx9aclc_ac97_remove,
@@ -182,7 +169,6 @@
 		.channels_max	= 2,
 	},
 };
-EXPORT_SYMBOL_GPL(txx9aclc_ac97_dai);
 
 static int __devinit txx9aclc_ac97_dev_probe(struct platform_device *pdev)
 {
@@ -219,13 +205,12 @@
 	if (err < 0)
 		return err;
 
-	txx9aclc_ac97_dai.dev = &pdev->dev;
-	return snd_soc_register_dai(&txx9aclc_ac97_dai);
+	return snd_soc_register_dai(&pdev->dev, &txx9aclc_ac97_dai);
 }
 
 static int __devexit txx9aclc_ac97_dev_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_dai(&txx9aclc_ac97_dai);
+	snd_soc_unregister_dai(&pdev->dev);
 	return 0;
 }
 
diff --git a/sound/soc/txx9/txx9aclc-generic.c b/sound/soc/txx9/txx9aclc-generic.c
index 95b17f7..6770e71 100644
--- a/sound/soc/txx9/txx9aclc-generic.c
+++ b/sound/soc/txx9/txx9aclc-generic.c
@@ -19,54 +19,44 @@
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/soc.h>
-#include "../codecs/ac97.h"
 #include "txx9aclc.h"
 
 static struct snd_soc_dai_link txx9aclc_generic_dai = {
 	.name = "AC97",
 	.stream_name = "AC97 HiFi",
-	.cpu_dai = &txx9aclc_ac97_dai,
-	.codec_dai = &ac97_dai,
+	.cpu_dai_name = "txx9aclc-ac97",
+	.codec_dai_name = "ac97-hifi",
+	.platform_name	= "txx9aclc-pcm-audio",
+	.codec_name	= "ac97-codec",
 };
 
 static struct snd_soc_card txx9aclc_generic_card = {
 	.name		= "Generic TXx9 ACLC Audio",
-	.platform	= &txx9aclc_soc_platform,
 	.dai_link	= &txx9aclc_generic_dai,
 	.num_links	= 1,
 };
 
-static struct txx9aclc_soc_device txx9aclc_generic_soc_device = {
-	.soc_dev = {
-		.card		= &txx9aclc_generic_card,
-		.codec_dev	= &soc_codec_dev_ac97,
-	},
-};
+static struct platform_device *soc_pdev;
 
 static int __init txx9aclc_generic_probe(struct platform_device *pdev)
 {
-	struct txx9aclc_soc_device *dev = &txx9aclc_generic_soc_device;
-	struct platform_device *soc_pdev;
 	int ret;
 
 	soc_pdev = platform_device_alloc("soc-audio", -1);
 	if (!soc_pdev)
 		return -ENOMEM;
-	platform_set_drvdata(soc_pdev, &dev->soc_dev);
-	dev->soc_dev.dev = &soc_pdev->dev;
+	platform_set_drvdata(soc_pdev, &txx9aclc_generic_card);
 	ret = platform_device_add(soc_pdev);
 	if (ret) {
 		platform_device_put(soc_pdev);
 		return ret;
 	}
-	platform_set_drvdata(pdev, soc_pdev);
+
 	return 0;
 }
 
 static int __exit txx9aclc_generic_remove(struct platform_device *pdev)
 {
-	struct platform_device *soc_pdev = platform_get_drvdata(pdev);
-
 	platform_device_unregister(soc_pdev);
 	return 0;
 }
diff --git a/sound/soc/txx9/txx9aclc.c b/sound/soc/txx9/txx9aclc.c
index 0e34523..f4aa4e0 100644
--- a/sound/soc/txx9/txx9aclc.c
+++ b/sound/soc/txx9/txx9aclc.c
@@ -22,6 +22,16 @@
 #include <sound/soc.h>
 #include "txx9aclc.h"
 
+static struct txx9aclc_soc_device {
+	struct txx9aclc_dmadata dmadata[2];
+} txx9aclc_soc_device;
+
+/* REVISIT: How to find txx9aclc_drvdata from snd_ac97? */
+static struct txx9aclc_plat_drvdata *txx9aclc_drvdata;
+
+static int txx9aclc_dma_init(struct txx9aclc_soc_device *dev,
+			     struct txx9aclc_dmadata *dmadata);
+
 static const struct snd_pcm_hardware txx9aclc_pcm_hardware = {
 	/*
 	 * REVISIT: SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID
@@ -46,7 +56,6 @@
 				  struct snd_pcm_hw_params *params)
 {
 	struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
-	struct snd_soc_device *socdev = rtd->socdev;
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct txx9aclc_dmadata *dmadata = runtime->private_data;
 	int ret;
@@ -55,13 +64,13 @@
 	if (ret < 0)
 		return ret;
 
-	dev_dbg(socdev->dev,
+	dev_dbg(rtd->platform->dev,
 		"runtime->dma_area = %#lx dma_addr = %#lx dma_bytes = %zd "
 		"runtime->min_align %ld\n",
 		(unsigned long)runtime->dma_area,
 		(unsigned long)runtime->dma_addr, runtime->dma_bytes,
 		runtime->min_align);
-	dev_dbg(socdev->dev,
+	dev_dbg(rtd->platform->dev,
 		"periods %d period_bytes %d stream %d\n",
 		params_periods(params), params_period_bytes(params),
 		substream->stream);
@@ -152,11 +161,7 @@
 
 	spin_lock_irqsave(&dmadata->dma_lock, flags);
 	if (dmadata->frag_count < 0) {
-		struct txx9aclc_soc_device *dev =
-			container_of(dmadata, struct txx9aclc_soc_device,
-				     dmadata[substream->stream]);
-		struct txx9aclc_plat_drvdata *drvdata =
-			txx9aclc_get_plat_drvdata(dev);
+		struct txx9aclc_plat_drvdata *drvdata = txx9aclc_drvdata;
 		void __iomem *base = drvdata->base;
 
 		spin_unlock_irqrestore(&dmadata->dma_lock, flags);
@@ -202,10 +207,7 @@
 static int txx9aclc_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
 {
 	struct txx9aclc_dmadata *dmadata = substream->runtime->private_data;
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct txx9aclc_soc_device *dev =
-		container_of(rtd->socdev, struct txx9aclc_soc_device, soc_dev);
-	struct txx9aclc_plat_drvdata *drvdata = txx9aclc_get_plat_drvdata(dev);
+	struct txx9aclc_plat_drvdata *drvdata =txx9aclc_drvdata;
 	void __iomem *base = drvdata->base;
 	unsigned long flags;
 	int ret = 0;
@@ -244,9 +246,7 @@
 
 static int txx9aclc_pcm_open(struct snd_pcm_substream *substream)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct txx9aclc_soc_device *dev =
-		container_of(rtd->socdev, struct txx9aclc_soc_device, soc_dev);
+	struct txx9aclc_soc_device *dev = &txx9aclc_soc_device;
 	struct txx9aclc_dmadata *dmadata = &dev->dmadata[substream->stream];
 	int ret;
 
@@ -291,8 +291,38 @@
 static int txx9aclc_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
 			    struct snd_pcm *pcm)
 {
+	struct platform_device *pdev = to_platform_device(dai->platform->dev);
+	struct txx9aclc_soc_device *dev;
+	struct resource *r;
+	int i;
+	int ret;
+
+	/* at this point onwards the AC97 component has probed and this will be valid */
+	dev = snd_soc_dai_get_drvdata(dai);
+
+	dev->dmadata[0].stream = SNDRV_PCM_STREAM_PLAYBACK;
+	dev->dmadata[1].stream = SNDRV_PCM_STREAM_CAPTURE;
+	for (i = 0; i < 2; i++) {
+		r = platform_get_resource(pdev, IORESOURCE_DMA, i);
+		if (!r) {
+			ret = -EBUSY;
+			goto exit;
+		}
+		dev->dmadata[i].dma_res = r;
+		ret = txx9aclc_dma_init(dev, &dev->dmadata[i]);
+		if (ret)
+			goto exit;
+	}
 	return snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
 		card->dev, 64 * 1024, 4 * 1024 * 1024);
+
+exit:
+	for (i = 0; i < 2; i++) {
+		if (dev->dmadata[i].dma_chan)
+			dma_release_channel(dev->dmadata[i].dma_chan);
+		dev->dmadata[i].dma_chan = NULL;
+	}
+	return ret;
 }
 
 static bool filter(struct dma_chan *chan, void *param)
@@ -314,7 +344,7 @@
 static int txx9aclc_dma_init(struct txx9aclc_soc_device *dev,
 			     struct txx9aclc_dmadata *dmadata)
 {
-	struct txx9aclc_plat_drvdata *drvdata = txx9aclc_get_plat_drvdata(dev);
+	struct txx9aclc_plat_drvdata *drvdata =txx9aclc_drvdata;
 	struct txx9dmac_slave *ds = &dmadata->dma_slave;
 	dma_cap_mask_t mask;
 
@@ -334,7 +364,7 @@
 	dma_cap_set(DMA_SLAVE, mask);
 	dmadata->dma_chan = dma_request_channel(mask, filter, dmadata);
 	if (!dmadata->dma_chan) {
-		dev_err(dev->soc_dev.dev,
+		printk(KERN_ERR
 			"DMA channel for %s is not available\n",
 			dmadata->stream == SNDRV_PCM_STREAM_PLAYBACK ?
 			"playback" : "capture");
@@ -345,45 +375,16 @@
 	return 0;
 }
 
-static int txx9aclc_pcm_probe(struct platform_device *pdev)
+static int txx9aclc_pcm_probe(struct snd_soc_platform *platform)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct txx9aclc_soc_device *dev =
-		container_of(socdev, struct txx9aclc_soc_device, soc_dev);
-	struct resource *r;
-	int i;
-	int ret;
-
-	dev->dmadata[0].stream = SNDRV_PCM_STREAM_PLAYBACK;
-	dev->dmadata[1].stream = SNDRV_PCM_STREAM_CAPTURE;
-	for (i = 0; i < 2; i++) {
-		r = platform_get_resource(dev->aclc_pdev, IORESOURCE_DMA, i);
-		if (!r) {
-			ret = -EBUSY;
-			goto exit;
-		}
-		dev->dmadata[i].dma_res = r;
-		ret = txx9aclc_dma_init(dev, &dev->dmadata[i]);
-		if (ret)
-			goto exit;
-	}
+	snd_soc_platform_set_drvdata(platform, &txx9aclc_soc_device);
 	return 0;
-
-exit:
-	for (i = 0; i < 2; i++) {
-		if (dev->dmadata[i].dma_chan)
-			dma_release_channel(dev->dmadata[i].dma_chan);
-		dev->dmadata[i].dma_chan = NULL;
-	}
-	return ret;
 }
 
-static int txx9aclc_pcm_remove(struct platform_device *pdev)
+static int txx9aclc_pcm_remove(struct snd_soc_platform *platform)
 {
-	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-	struct txx9aclc_soc_device *dev =
-		container_of(socdev, struct txx9aclc_soc_device, soc_dev);
-	struct txx9aclc_plat_drvdata *drvdata = txx9aclc_get_plat_drvdata(dev);
+	struct txx9aclc_soc_device *dev = snd_soc_platform_get_drvdata(platform);
+	struct txx9aclc_plat_drvdata *drvdata = txx9aclc_drvdata;
 	void __iomem *base = drvdata->base;
 	int i;
 
@@ -406,28 +407,46 @@
 	return 0;
 }
 
-struct snd_soc_platform txx9aclc_soc_platform = {
-	.name		= "txx9aclc-audio",
+static struct snd_soc_platform_driver txx9aclc_soc_platform = {
 	.probe		= txx9aclc_pcm_probe,
 	.remove		= txx9aclc_pcm_remove,
-	.pcm_ops 	= &txx9aclc_pcm_ops,
+	.ops		= &txx9aclc_pcm_ops,
 	.pcm_new	= txx9aclc_pcm_new,
 	.pcm_free	= txx9aclc_pcm_free_dma_buffers,
 };
-EXPORT_SYMBOL_GPL(txx9aclc_soc_platform);
 
-static int __init txx9aclc_soc_platform_init(void)
+static int __devinit txx9aclc_soc_platform_probe(struct platform_device *pdev)
 {
-	return snd_soc_register_platform(&txx9aclc_soc_platform);
+	return snd_soc_register_platform(&pdev->dev, &txx9aclc_soc_platform);
 }
 
-static void __exit txx9aclc_soc_platform_exit(void)
+static int __devexit txx9aclc_soc_platform_remove(struct platform_device *pdev)
 {
-	snd_soc_unregister_platform(&txx9aclc_soc_platform);
+	snd_soc_unregister_platform(&pdev->dev);
+	return 0;
 }
 
-module_init(txx9aclc_soc_platform_init);
-module_exit(txx9aclc_soc_platform_exit);
+static struct platform_driver txx9aclc_pcm_driver = {
+	.driver = {
+			.name = "txx9aclc-pcm-audio",
+			.owner = THIS_MODULE,
+	},
+
+	.probe = txx9aclc_soc_platform_probe,
+	.remove = __devexit_p(txx9aclc_soc_platform_remove),
+};
+
+static int __init snd_txx9aclc_pcm_init(void)
+{
+	return platform_driver_register(&txx9aclc_pcm_driver);
+}
+module_init(snd_txx9aclc_pcm_init);
+
+static void __exit snd_txx9aclc_pcm_exit(void)
+{
+	platform_driver_unregister(&txx9aclc_pcm_driver);
+}
+module_exit(snd_txx9aclc_pcm_exit);
 
 MODULE_AUTHOR("Atsushi Nemoto <anemo@mba.ocn.ne.jp>");
 MODULE_DESCRIPTION("TXx9 ACLC Audio DMA driver");
diff --git a/sound/soc/txx9/txx9aclc.h b/sound/soc/txx9/txx9aclc.h
index 6769aab..9c2de84 100644
--- a/sound/soc/txx9/txx9aclc.h
+++ b/sound/soc/txx9/txx9aclc.h
@@ -65,19 +65,10 @@
 	u64 physbase;
 };
 
-struct txx9aclc_soc_device {
-	struct snd_soc_device soc_dev;
-	struct platform_device *aclc_pdev;	/* for ioresources, drvdata */
-	struct txx9aclc_dmadata dmadata[2];
-};
-
 static inline struct txx9aclc_plat_drvdata *txx9aclc_get_plat_drvdata(
-	struct txx9aclc_soc_device *sdev)
+	struct snd_soc_dai *dai)
 {
-	return platform_get_drvdata(sdev->aclc_pdev);
+	return dev_get_drvdata(dai->dev);
 }
 
-extern struct snd_soc_platform txx9aclc_soc_platform;
-extern struct snd_soc_dai txx9aclc_ac97_dai;
-
 #endif /* __TXX9ACLC_H */