#include <linux/irq.h>
 #include <linux/pda_power.h>
 #include <linux/power_supply.h>
-#include <linux/wm97xx_batt.h>
+#include <linux/wm97xx.h>
 #include <linux/mtd/physmap.h>
 #include <linux/usb/gpio_vbus.h>
 #include <linux/regulator/max1586.h>
        },
 };
 
-static struct wm97xx_batt_info mioa701_battery_data = {
+static struct wm97xx_batt_pdata mioa701_battery_data = {
        .batt_aux       = WM97XX_AUX_ID1,
        .temp_aux       = -1,
        .charge_gpio    = -1,
        .batt_name      = "mioa701_battery",
 };
 
+static struct wm97xx_pdata mioa701_wm97xx_pdata = {
+       .batt_pdata     = &mioa701_battery_data,
+};
+
 /*
  * Voltage regulation
  */
 
 static pxa2xx_audio_ops_t mioa701_ac97_info = {
        .reset_gpio = 95,
+       .codec_pdata = { &mioa701_wm97xx_pdata, },
 };
 
 /*
        set_pxa_fb_info(&mioa701_pxafb_info);
        pxa_set_mci_info(&mioa701_mci_info);
        pxa_set_keypad_info(&mioa701_keypad_info);
-       wm97xx_bat_set_pdata(&mioa701_battery_data);
        pxa_set_udc_info(&mioa701_udc_info);
        pxa_set_ac97_info(&mioa701_ac97_info);
        pm_power_off = mioa701_poweroff;
 
 #include <linux/pda_power.h>
 #include <linux/pwm_backlight.h>
 #include <linux/gpio.h>
-#include <linux/wm97xx_batt.h>
+#include <linux/wm97xx.h>
 #include <linux/power_supply.h>
 #include <linux/sysdev.h>
 #include <linux/mtd/mtd.h>
 };
 
 /******************************************************************************
- * WM97xx battery
+ * WM97xx audio, battery
  ******************************************************************************/
-static struct wm97xx_batt_info wm97xx_batt_pdata = {
+static struct wm97xx_batt_pdata palmld_batt_pdata = {
        .batt_aux       = WM97XX_AUX_ID3,
        .temp_aux       = WM97XX_AUX_ID2,
        .charge_gpio    = -1,
        .batt_name      = "main-batt",
 };
 
-/******************************************************************************
- * aSoC audio
- ******************************************************************************/
-static struct palm27x_asoc_info palmld_asoc_pdata = {
-       .jack_gpio      = GPIO_NR_PALMLD_EARPHONE_DETECT,
+static struct wm97xx_pdata palmld_wm97xx_pdata = {
+       .batt_pdata     = &palmld_batt_pdata,
 };
 
 static pxa2xx_audio_ops_t palmld_ac97_pdata = {
        .reset_gpio     = 95,
+       .codec_pdata    = { &palmld_wm97xx_pdata, },
+};
+
+static struct palm27x_asoc_info palmld_asoc_pdata = {
+       .jack_gpio      = GPIO_NR_PALMLD_EARPHONE_DETECT,
 };
 
 static struct platform_device palmld_asoc = {
        pxa_set_ac97_info(&palmld_ac97_pdata);
        pxa_set_ficp_info(&palmld_ficp_platform_data);
        pxa_set_keypad_info(&palmld_keypad_platform_data);
-       wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
 
        platform_add_devices(devices, ARRAY_SIZE(devices));
 }
 
 #include <linux/pda_power.h>
 #include <linux/pwm_backlight.h>
 #include <linux/gpio.h>
-#include <linux/wm97xx_batt.h>
+#include <linux/wm97xx.h>
 #include <linux/power_supply.h>
 #include <linux/usb/gpio_vbus.h>
 
 };
 
 /******************************************************************************
- * WM97xx battery
+ * WM97xx audio, battery
  ******************************************************************************/
-static struct wm97xx_batt_info wm97xx_batt_pdata = {
+static struct wm97xx_batt_pdata palmt5_batt_pdata = {
        .batt_aux       = WM97XX_AUX_ID3,
        .temp_aux       = WM97XX_AUX_ID2,
        .charge_gpio    = -1,
        .batt_name      = "main-batt",
 };
 
-/******************************************************************************
- * aSoC audio
- ******************************************************************************/
-static struct palm27x_asoc_info palmt5_asoc_pdata = {
-       .jack_gpio      = GPIO_NR_PALMT5_EARPHONE_DETECT,
+static struct wm97xx_pdata palmt5_wm97xx_pdata = {
+       .batt_pdata     = &palmt5_batt_pdata,
 };
 
 static pxa2xx_audio_ops_t palmt5_ac97_pdata = {
        .reset_gpio     = 95,
+       .codec_pdata    = { &palmt5_wm97xx_pdata, },
+};
+
+static struct palm27x_asoc_info palmt5_asoc_pdata = {
+       .jack_gpio      = GPIO_NR_PALMT5_EARPHONE_DETECT,
 };
 
 static struct platform_device palmt5_asoc = {
        pxa_set_ac97_info(&palmt5_ac97_pdata);
        pxa_set_ficp_info(&palmt5_ficp_platform_data);
        pxa_set_keypad_info(&palmt5_keypad_platform_data);
-       wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
 
        platform_add_devices(devices, ARRAY_SIZE(devices));
 }
 
 #include <linux/pda_power.h>
 #include <linux/pwm_backlight.h>
 #include <linux/gpio.h>
-#include <linux/wm97xx_batt.h>
+#include <linux/wm97xx.h>
 #include <linux/power_supply.h>
 #include <linux/usb/gpio_vbus.h>
 
 };
 
 /******************************************************************************
- * WM97xx battery
+ * WM97xx audio, battery
  ******************************************************************************/
-static struct wm97xx_batt_info wm97xx_batt_pdata = {
+static struct wm97xx_batt_pdata palmte2_batt_pdata = {
        .batt_aux       = WM97XX_AUX_ID3,
        .temp_aux       = WM97XX_AUX_ID2,
        .charge_gpio    = -1,
        .batt_name      = "main-batt",
 };
 
-/******************************************************************************
- * aSoC audio
- ******************************************************************************/
+static struct wm97xx_pdata palmte2_wm97xx_pdata = {
+       .batt_pdata     = &palmte2_batt_pdata,
+};
+
+static pxa2xx_audio_ops_t palmte2_ac97_pdata = {
+       .codec_pdata    = { &palmte2_wm97xx_pdata, },
+};
+
 static struct palm27x_asoc_info palmte2_asoc_pdata = {
        .jack_gpio      = GPIO_NR_PALMTE2_EARPHONE_DETECT,
 };
        set_pxa_fb_info(&palmte2_lcd_screen);
        pxa_set_mci_info(&palmte2_mci_platform_data);
        palmte2_udc_init();
-       pxa_set_ac97_info(NULL);
+       pxa_set_ac97_info(&palmte2_ac97_pdata);
        pxa_set_ficp_info(&palmte2_ficp_platform_data);
-       wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
 
        platform_add_devices(devices, ARRAY_SIZE(devices));
 }
 
 #include <linux/pda_power.h>
 #include <linux/pwm_backlight.h>
 #include <linux/gpio.h>
-#include <linux/wm97xx_batt.h>
 #include <linux/power_supply.h>
 #include <linux/sysdev.h>
 #include <linux/w1-gpio.h>
 
 #include <linux/pda_power.h>
 #include <linux/pwm_backlight.h>
 #include <linux/gpio.h>
-#include <linux/wm97xx_batt.h>
+#include <linux/wm97xx.h>
 #include <linux/power_supply.h>
 #include <linux/usb/gpio_vbus.h>
 #include <linux/mtd/nand.h>
 };
 
 /******************************************************************************
- * WM97xx battery
+ * WM97xx audio, battery
  ******************************************************************************/
-static struct wm97xx_batt_info wm97xx_batt_pdata = {
+static struct wm97xx_batt_pdata palmtx_batt_pdata = {
        .batt_aux       = WM97XX_AUX_ID3,
        .temp_aux       = WM97XX_AUX_ID2,
        .charge_gpio    = -1,
        .batt_name      = "main-batt",
 };
 
-/******************************************************************************
- * aSoC audio
- ******************************************************************************/
-static struct palm27x_asoc_info palmtx_asoc_pdata = {
-       .jack_gpio      = GPIO_NR_PALMTX_EARPHONE_DETECT,
+static struct wm97xx_pdata palmtx_wm97xx_pdata = {
+       .batt_pdata     = &palmtx_batt_pdata,
 };
 
 static pxa2xx_audio_ops_t palmtx_ac97_pdata = {
        .reset_gpio     = 95,
+       .codec_pdata    = { &palmtx_wm97xx_pdata, },
+};
+
+static struct palm27x_asoc_info palmtx_asoc_pdata = {
+       .jack_gpio      = GPIO_NR_PALMTX_EARPHONE_DETECT,
 };
 
 static struct platform_device palmtx_asoc = {
        pxa_set_ac97_info(&palmtx_ac97_pdata);
        pxa_set_ficp_info(&palmtx_ficp_platform_data);
        pxa_set_keypad_info(&palmtx_keypad_platform_data);
-       wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
 
        platform_add_devices(devices, ARRAY_SIZE(devices));
 }
 
 #include <linux/pda_power.h>
 #include <linux/pwm_backlight.h>
 #include <linux/gpio.h>
-#include <linux/wm97xx_batt.h>
+#include <linux/wm97xx.h>
 #include <linux/power_supply.h>
 #include <linux/usb/gpio_vbus.h>
 
 };
 
 /******************************************************************************
- * WM97xx battery
+ * WM97xx audio, battery
  ******************************************************************************/
-static struct wm97xx_batt_info wm97xx_batt_pdata = {
+static struct wm97xx_batt_pdata palmz72_batt_pdata = {
        .batt_aux       = WM97XX_AUX_ID3,
        .temp_aux       = WM97XX_AUX_ID2,
        .charge_gpio    = -1,
        .batt_name      = "main-batt",
 };
 
-/******************************************************************************
- * aSoC audio
- ******************************************************************************/
+static struct wm97xx_pdata palmz72_wm97xx_pdata = {
+       .batt_pdata     = &palmz72_batt_pdata,
+};
+
+static pxa2xx_audio_ops_t palmz72_ac97_pdata = {
+       .codec_pdata    = { &palmz72_wm97xx_pdata, },
+};
+
 static struct platform_device palmz72_asoc = {
        .name = "palm27x-asoc",
        .id   = -1,
        set_pxa_fb_info(&palmz72_lcd_screen);
        pxa_set_mci_info(&palmz72_mci_platform_data);
        palmz72_udc_init();
-       pxa_set_ac97_info(NULL);
+       pxa_set_ac97_info(&palmz72_ac97_pdata);
        pxa_set_ficp_info(&palmz72_ficp_platform_data);
        pxa_set_keypad_info(&palmz72_keypad_platform_data);
-       wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
 
        platform_add_devices(devices, ARRAY_SIZE(devices));
 }