/*
 * wm8994.c  --  WM8994 ALSA SoC Audio driver
 *
 * Copyright 2009 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/i2c.h>
#include <linux/platform_device.h>
#include <linux/regulator/consumer.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 <linux/mfd/wm8994/core.h>
#include <linux/mfd/wm8994/registers.h>
#include <linux/mfd/wm8994/pdata.h>
#include <linux/mfd/wm8994/gpio.h>

#include "wm8994.h"
#include "wm_hubs.h"

struct fll_config {
	int src;
	int in;
	int out;
};

#define WM8994_NUM_DRC 3
#define WM8994_NUM_EQ  3

static int wm8994_drc_base[] = {
	WM8994_AIF1_DRC1_1,
	WM8994_AIF1_DRC2_1,
	WM8994_AIF2_DRC_1,
};

static int wm8994_retune_mobile_base[] = {
	WM8994_AIF1_DAC1_EQ_GAINS_1,
	WM8994_AIF1_DAC2_EQ_GAINS_1,
	WM8994_AIF2_EQ_GAINS_1,
};

#define WM8994_REG_CACHE_SIZE  0x621

struct wm8994_micdet {
	struct snd_soc_jack *jack;
	int det;
	int shrt;
};

/* codec private data */
struct wm8994_priv {
	struct wm_hubs_data hubs;
	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];
	int mclk[2];
	int aifclk[2];
	struct fll_config fll[2], fll_suspend[2];

	int dac_rates[2];
	int lrclk_shared[2];

	/* Platform dependant DRC configuration */
	const char **drc_texts;
	int drc_cfg[WM8994_NUM_DRC];
	struct soc_enum drc_enum;

	/* Platform dependant ReTune mobile configuration */
	int num_retune_mobile_texts;
	const char **retune_mobile_texts;
	int retune_mobile_cfg[WM8994_NUM_EQ];
	struct soc_enum retune_mobile_enum;

	struct wm8994_micdet micdet[2];

	int revision;
	struct wm8994_pdata *pdata;
};

static const struct {
	unsigned short readable;   /* Mask of readable bits */
	unsigned short writable;   /* Mask of writable bits */
} access_masks[] = {
	{ 0xFFFF, 0xFFFF }, /* R0     - Software Reset */
	{ 0x3B37, 0x3B37 }, /* R1     - Power Management (1) */
	{ 0x6BF0, 0x6BF0 }, /* R2     - Power Management (2) */
	{ 0x3FF0, 0x3FF0 }, /* R3     - Power Management (3) */
	{ 0x3F3F, 0x3F3F }, /* R4     - Power Management (4) */
	{ 0x3F0F, 0x3F0F }, /* R5     - Power Management (5) */
	{ 0x003F, 0x003F }, /* R6     - Power Management (6) */
	{ 0x0000, 0x0000 }, /* R7 */
	{ 0x0000, 0x0000 }, /* R8 */
	{ 0x0000, 0x0000 }, /* R9 */
	{ 0x0000, 0x0000 }, /* R10 */
	{ 0x0000, 0x0000 }, /* R11 */
	{ 0x0000, 0x0000 }, /* R12 */
	{ 0x0000, 0x0000 }, /* R13 */
	{ 0x0000, 0x0000 }, /* R14 */
	{ 0x0000, 0x0000 }, /* R15 */
	{ 0x0000, 0x0000 }, /* R16 */
	{ 0x0000, 0x0000 }, /* R17 */
	{ 0x0000, 0x0000 }, /* R18 */
	{ 0x0000, 0x0000 }, /* R19 */
	{ 0x0000, 0x0000 }, /* R20 */
	{ 0x01C0, 0x01C0 }, /* R21    - Input Mixer (1) */
	{ 0x0000, 0x0000 }, /* R22 */
	{ 0x0000, 0x0000 }, /* R23 */
	{ 0x00DF, 0x01DF }, /* R24    - Left Line Input 1&2 Volume */
	{ 0x00DF, 0x01DF }, /* R25    - Left Line Input 3&4 Volume */
	{ 0x00DF, 0x01DF }, /* R26    - Right Line Input 1&2 Volume */
	{ 0x00DF, 0x01DF }, /* R27    - Right Line Input 3&4 Volume */
	{ 0x00FF, 0x01FF }, /* R28    - Left Output Volume */
	{ 0x00FF, 0x01FF }, /* R29    - Right Output Volume */
	{ 0x0077, 0x0077 }, /* R30    - Line Outputs Volume */
	{ 0x0030, 0x0030 }, /* R31    - HPOUT2 Volume */
	{ 0x00FF, 0x01FF }, /* R32    - Left OPGA Volume */
	{ 0x00FF, 0x01FF }, /* R33    - Right OPGA Volume */
	{ 0x007F, 0x007F }, /* R34    - SPKMIXL Attenuation */
	{ 0x017F, 0x017F }, /* R35    - SPKMIXR Attenuation */
	{ 0x003F, 0x003F }, /* R36    - SPKOUT Mixers */
	{ 0x003F, 0x003F }, /* R37    - ClassD */
	{ 0x00FF, 0x01FF }, /* R38    - Speaker Volume Left */
	{ 0x00FF, 0x01FF }, /* R39    - Speaker Volume Right */
	{ 0x00FF, 0x00FF }, /* R40    - Input Mixer (2) */
	{ 0x01B7, 0x01B7 }, /* R41    - Input Mixer (3) */
	{ 0x01B7, 0x01B7 }, /* R42    - Input Mixer (4) */
	{ 0x01C7, 0x01C7 }, /* R43    - Input Mixer (5) */
	{ 0x01C7, 0x01C7 }, /* R44    - Input Mixer (6) */
	{ 0x01FF, 0x01FF }, /* R45    - Output Mixer (1) */
	{ 0x01FF, 0x01FF }, /* R46    - Output Mixer (2) */
	{ 0x0FFF, 0x0FFF }, /* R47    - Output Mixer (3) */
	{ 0x0FFF, 0x0FFF }, /* R48    - Output Mixer (4) */
	{ 0x0FFF, 0x0FFF }, /* R49    - Output Mixer (5) */
	{ 0x0FFF, 0x0FFF }, /* R50    - Output Mixer (6) */
	{ 0x0038, 0x0038 }, /* R51    - HPOUT2 Mixer */
	{ 0x0077, 0x0077 }, /* R52    - Line Mixer (1) */
	{ 0x0077, 0x0077 }, /* R53    - Line Mixer (2) */
	{ 0x03FF, 0x03FF }, /* R54    - Speaker Mixer */
	{ 0x00C1, 0x00C1 }, /* R55    - Additional Control */
	{ 0x00F0, 0x00F0 }, /* R56    - AntiPOP (1) */
	{ 0x01EF, 0x01EF }, /* R57    - AntiPOP (2) */
	{ 0x00FF, 0x00FF }, /* R58    - MICBIAS */
	{ 0x000F, 0x000F }, /* R59    - LDO 1 */
	{ 0x0007, 0x0007 }, /* R60    - LDO 2 */
	{ 0x0000, 0x0000 }, /* R61 */
	{ 0x0000, 0x0000 }, /* R62 */
	{ 0x0000, 0x0000 }, /* R63 */
	{ 0x0000, 0x0000 }, /* R64 */
	{ 0x0000, 0x0000 }, /* R65 */
	{ 0x0000, 0x0000 }, /* R66 */
	{ 0x0000, 0x0000 }, /* R67 */
	{ 0x0000, 0x0000 }, /* R68 */
	{ 0x0000, 0x0000 }, /* R69 */
	{ 0x0000, 0x0000 }, /* R70 */
	{ 0x0000, 0x0000 }, /* R71 */
	{ 0x0000, 0x0000 }, /* R72 */
	{ 0x0000, 0x0000 }, /* R73 */
	{ 0x0000, 0x0000 }, /* R74 */
	{ 0x0000, 0x0000 }, /* R75 */
	{ 0x8000, 0x8000 }, /* R76    - Charge Pump (1) */
	{ 0x0000, 0x0000 }, /* R77 */
	{ 0x0000, 0x0000 }, /* R78 */
	{ 0x0000, 0x0000 }, /* R79 */
	{ 0x0000, 0x0000 }, /* R80 */
	{ 0x0301, 0x0301 }, /* R81    - Class W (1) */
	{ 0x0000, 0x0000 }, /* R82 */
	{ 0x0000, 0x0000 }, /* R83 */
	{ 0x333F, 0x333F }, /* R84    - DC Servo (1) */
	{ 0x0FEF, 0x0FEF }, /* R85    - DC Servo (2) */
	{ 0x0000, 0x0000 }, /* R86 */
	{ 0xFFFF, 0xFFFF }, /* R87    - DC Servo (4) */
	{ 0x0333, 0x0000 }, /* R88    - DC Servo Readback */
	{ 0x0000, 0x0000 }, /* R89 */
	{ 0x0000, 0x0000 }, /* R90 */
	{ 0x0000, 0x0000 }, /* R91 */
	{ 0x0000, 0x0000 }, /* R92 */
	{ 0x0000, 0x0000 }, /* R93 */
	{ 0x0000, 0x0000 }, /* R94 */
	{ 0x0000, 0x0000 }, /* R95 */
	{ 0x00EE, 0x00EE }, /* R96    - Analogue HP (1) */
	{ 0x0000, 0x0000 }, /* R97 */
	{ 0x0000, 0x0000 }, /* R98 */
	{ 0x0000, 0x0000 }, /* R99 */
	{ 0x0000, 0x0000 }, /* R100 */
	{ 0x0000, 0x0000 }, /* R101 */
	{ 0x0000, 0x0000 }, /* R102 */
	{ 0x0000, 0x0000 }, /* R103 */
	{ 0x0000, 0x0000 }, /* R104 */
	{ 0x0000, 0x0000 }, /* R105 */
	{ 0x0000, 0x0000 }, /* R106 */
	{ 0x0000, 0x0000 }, /* R107 */
	{ 0x0000, 0x0000 }, /* R108 */
	{ 0x0000, 0x0000 }, /* R109 */
	{ 0x0000, 0x0000 }, /* R110 */
	{ 0x0000, 0x0000 }, /* R111 */
	{ 0x0000, 0x0000 }, /* R112 */
	{ 0x0000, 0x0000 }, /* R113 */
	{ 0x0000, 0x0000 }, /* R114 */
	{ 0x0000, 0x0000 }, /* R115 */
	{ 0x0000, 0x0000 }, /* R116 */
	{ 0x0000, 0x0000 }, /* R117 */
	{ 0x0000, 0x0000 }, /* R118 */
	{ 0x0000, 0x0000 }, /* R119 */
	{ 0x0000, 0x0000 }, /* R120 */
	{ 0x0000, 0x0000 }, /* R121 */
	{ 0x0000, 0x0000 }, /* R122 */
	{ 0x0000, 0x0000 }, /* R123 */
	{ 0x0000, 0x0000 }, /* R124 */
	{ 0x0000, 0x0000 }, /* R125 */
	{ 0x0000, 0x0000 }, /* R126 */
	{ 0x0000, 0x0000 }, /* R127 */
	{ 0x0000, 0x0000 }, /* R128 */
	{ 0x0000, 0x0000 }, /* R129 */
	{ 0x0000, 0x0000 }, /* R130 */
	{ 0x0000, 0x0000 }, /* R131 */
	{ 0x0000, 0x0000 }, /* R132 */
	{ 0x0000, 0x0000 }, /* R133 */
	{ 0x0000, 0x0000 }, /* R134 */
	{ 0x0000, 0x0000 }, /* R135 */
	{ 0x0000, 0x0000 }, /* R136 */
	{ 0x0000, 0x0000 }, /* R137 */
	{ 0x0000, 0x0000 }, /* R138 */
	{ 0x0000, 0x0000 }, /* R139 */
	{ 0x0000, 0x0000 }, /* R140 */
	{ 0x0000, 0x0000 }, /* R141 */
	{ 0x0000, 0x0000 }, /* R142 */
	{ 0x0000, 0x0000 }, /* R143 */
	{ 0x0000, 0x0000 }, /* R144 */
	{ 0x0000, 0x0000 }, /* R145 */
	{ 0x0000, 0x0000 }, /* R146 */
	{ 0x0000, 0x0000 }, /* R147 */
	{ 0x0000, 0x0000 }, /* R148 */
	{ 0x0000, 0x0000 }, /* R149 */
	{ 0x0000, 0x0000 }, /* R150 */
	{ 0x0000, 0x0000 }, /* R151 */
	{ 0x0000, 0x0000 }, /* R152 */
	{ 0x0000, 0x0000 }, /* R153 */
	{ 0x0000, 0x0000 }, /* R154 */
	{ 0x0000, 0x0000 }, /* R155 */
	{ 0x0000, 0x0000 }, /* R156 */
	{ 0x0000, 0x0000 }, /* R157 */
	{ 0x0000, 0x0000 }, /* R158 */
	{ 0x0000, 0x0000 }, /* R159 */
	{ 0x0000, 0x0000 }, /* R160 */
	{ 0x0000, 0x0000 }, /* R161 */
	{ 0x0000, 0x0000 }, /* R162 */
	{ 0x0000, 0x0000 }, /* R163 */
	{ 0x0000, 0x0000 }, /* R164 */
	{ 0x0000, 0x0000 }, /* R165 */
	{ 0x0000, 0x0000 }, /* R166 */
	{ 0x0000, 0x0000 }, /* R167 */
	{ 0x0000, 0x0000 }, /* R168 */
	{ 0x0000, 0x0000 }, /* R169 */
	{ 0x0000, 0x0000 }, /* R170 */
	{ 0x0000, 0x0000 }, /* R171 */
	{ 0x0000, 0x0000 }, /* R172 */
	{ 0x0000, 0x0000 }, /* R173 */
	{ 0x0000, 0x0000 }, /* R174 */
	{ 0x0000, 0x0000 }, /* R175 */
	{ 0x0000, 0x0000 }, /* R176 */
	{ 0x0000, 0x0000 }, /* R177 */
	{ 0x0000, 0x0000 }, /* R178 */
	{ 0x0000, 0x0000 }, /* R179 */
	{ 0x0000, 0x0000 }, /* R180 */
	{ 0x0000, 0x0000 }, /* R181 */
	{ 0x0000, 0x0000 }, /* R182 */
	{ 0x0000, 0x0000 }, /* R183 */
	{ 0x0000, 0x0000 }, /* R184 */
	{ 0x0000, 0x0000 }, /* R185 */
	{ 0x0000, 0x0000 }, /* R186 */
	{ 0x0000, 0x0000 }, /* R187 */
	{ 0x0000, 0x0000 }, /* R188 */
	{ 0x0000, 0x0000 }, /* R189 */
	{ 0x0000, 0x0000 }, /* R190 */
	{ 0x0000, 0x0000 }, /* R191 */
	{ 0x0000, 0x0000 }, /* R192 */
	{ 0x0000, 0x0000 }, /* R193 */
	{ 0x0000, 0x0000 }, /* R194 */
	{ 0x0000, 0x0000 }, /* R195 */
	{ 0x0000, 0x0000 }, /* R196 */
	{ 0x0000, 0x0000 }, /* R197 */
	{ 0x0000, 0x0000 }, /* R198 */
	{ 0x0000, 0x0000 }, /* R199 */
	{ 0x0000, 0x0000 }, /* R200 */
	{ 0x0000, 0x0000 }, /* R201 */
	{ 0x0000, 0x0000 }, /* R202 */
	{ 0x0000, 0x0000 }, /* R203 */
	{ 0x0000, 0x0000 }, /* R204 */
	{ 0x0000, 0x0000 }, /* R205 */
	{ 0x0000, 0x0000 }, /* R206 */
	{ 0x0000, 0x0000 }, /* R207 */
	{ 0x0000, 0x0000 }, /* R208 */
	{ 0x0000, 0x0000 }, /* R209 */
	{ 0x0000, 0x0000 }, /* R210 */
	{ 0x0000, 0x0000 }, /* R211 */
	{ 0x0000, 0x0000 }, /* R212 */
	{ 0x0000, 0x0000 }, /* R213 */
	{ 0x0000, 0x0000 }, /* R214 */
	{ 0x0000, 0x0000 }, /* R215 */
	{ 0x0000, 0x0000 }, /* R216 */
	{ 0x0000, 0x0000 }, /* R217 */
	{ 0x0000, 0x0000 }, /* R218 */
	{ 0x0000, 0x0000 }, /* R219 */
	{ 0x0000, 0x0000 }, /* R220 */
	{ 0x0000, 0x0000 }, /* R221 */
	{ 0x0000, 0x0000 }, /* R222 */
	{ 0x0000, 0x0000 }, /* R223 */
	{ 0x0000, 0x0000 }, /* R224 */
	{ 0x0000, 0x0000 }, /* R225 */
	{ 0x0000, 0x0000 }, /* R226 */
	{ 0x0000, 0x0000 }, /* R227 */
	{ 0x0000, 0x0000 }, /* R228 */
	{ 0x0000, 0x0000 }, /* R229 */
	{ 0x0000, 0x0000 }, /* R230 */
	{ 0x0000, 0x0000 }, /* R231 */
	{ 0x0000, 0x0000 }, /* R232 */
	{ 0x0000, 0x0000 }, /* R233 */
	{ 0x0000, 0x0000 }, /* R234 */
	{ 0x0000, 0x0000 }, /* R235 */
	{ 0x0000, 0x0000 }, /* R236 */
	{ 0x0000, 0x0000 }, /* R237 */
	{ 0x0000, 0x0000 }, /* R238 */
	{ 0x0000, 0x0000 }, /* R239 */
	{ 0x0000, 0x0000 }, /* R240 */
	{ 0x0000, 0x0000 }, /* R241 */
	{ 0x0000, 0x0000 }, /* R242 */
	{ 0x0000, 0x0000 }, /* R243 */
	{ 0x0000, 0x0000 }, /* R244 */
	{ 0x0000, 0x0000 }, /* R245 */
	{ 0x0000, 0x0000 }, /* R246 */
	{ 0x0000, 0x0000 }, /* R247 */
	{ 0x0000, 0x0000 }, /* R248 */
	{ 0x0000, 0x0000 }, /* R249 */
	{ 0x0000, 0x0000 }, /* R250 */
	{ 0x0000, 0x0000 }, /* R251 */
	{ 0x0000, 0x0000 }, /* R252 */
	{ 0x0000, 0x0000 }, /* R253 */
	{ 0x0000, 0x0000 }, /* R254 */
	{ 0x0000, 0x0000 }, /* R255 */
	{ 0x000F, 0x0000 }, /* R256   - Chip Revision */
	{ 0x0074, 0x0074 }, /* R257   - Control Interface */
	{ 0x0000, 0x0000 }, /* R258 */
	{ 0x0000, 0x0000 }, /* R259 */
	{ 0x0000, 0x0000 }, /* R260 */
	{ 0x0000, 0x0000 }, /* R261 */
	{ 0x0000, 0x0000 }, /* R262 */
	{ 0x0000, 0x0000 }, /* R263 */
	{ 0x0000, 0x0000 }, /* R264 */
	{ 0x0000, 0x0000 }, /* R265 */
	{ 0x0000, 0x0000 }, /* R266 */
	{ 0x0000, 0x0000 }, /* R267 */
	{ 0x0000, 0x0000 }, /* R268 */
	{ 0x0000, 0x0000 }, /* R269 */
	{ 0x0000, 0x0000 }, /* R270 */
	{ 0x0000, 0x0000 }, /* R271 */
	{ 0x807F, 0x837F }, /* R272   - Write Sequencer Ctrl (1) */
	{ 0x017F, 0x0000 }, /* R273   - Write Sequencer Ctrl (2) */
	{ 0x0000, 0x0000 }, /* R274 */
	{ 0x0000, 0x0000 }, /* R275 */
	{ 0x0000, 0x0000 }, /* R276 */
	{ 0x0000, 0x0000 }, /* R277 */
	{ 0x0000, 0x0000 }, /* R278 */
	{ 0x0000, 0x0000 }, /* R279 */
	{ 0x0000, 0x0000 }, /* R280 */
	{ 0x0000, 0x0000 }, /* R281 */
	{ 0x0000, 0x0000 }, /* R282 */
	{ 0x0000, 0x0000 }, /* R283 */
	{ 0x0000, 0x0000 }, /* R284 */
	{ 0x0000, 0x0000 }, /* R285 */
	{ 0x0000, 0x0000 }, /* R286 */
	{ 0x0000, 0x0000 }, /* R287 */
	{ 0x0000, 0x0000 }, /* R288 */
	{ 0x0000, 0x0000 }, /* R289 */
	{ 0x0000, 0x0000 }, /* R290 */
	{ 0x0000, 0x0000 }, /* R291 */
	{ 0x0000, 0x0000 }, /* R292 */
	{ 0x0000, 0x0000 }, /* R293 */
	{ 0x0000, 0x0000 }, /* R294 */
	{ 0x0000, 0x0000 }, /* R295 */
	{ 0x0000, 0x0000 }, /* R296 */
	{ 0x0000, 0x0000 }, /* R297 */
	{ 0x0000, 0x0000 }, /* R298 */
	{ 0x0000, 0x0000 }, /* R299 */
	{ 0x0000, 0x0000 }, /* R300 */
	{ 0x0000, 0x0000 }, /* R301 */
	{ 0x0000, 0x0000 }, /* R302 */
	{ 0x0000, 0x0000 }, /* R303 */
	{ 0x0000, 0x0000 }, /* R304 */
	{ 0x0000, 0x0000 }, /* R305 */
	{ 0x0000, 0x0000 }, /* R306 */
	{ 0x0000, 0x0000 }, /* R307 */
	{ 0x0000, 0x0000 }, /* R308 */
	{ 0x0000, 0x0000 }, /* R309 */
	{ 0x0000, 0x0000 }, /* R310 */
	{ 0x0000, 0x0000 }, /* R311 */
	{ 0x0000, 0x0000 }, /* R312 */
	{ 0x0000, 0x0000 }, /* R313 */
	{ 0x0000, 0x0000 }, /* R314 */
	{ 0x0000, 0x0000 }, /* R315 */
	{ 0x0000, 0x0000 }, /* R316 */
	{ 0x0000, 0x0000 }, /* R317 */
	{ 0x0000, 0x0000 }, /* R318 */
	{ 0x0000, 0x0000 }, /* R319 */
	{ 0x0000, 0x0000 }, /* R320 */
	{ 0x0000, 0x0000 }, /* R321 */
	{ 0x0000, 0x0000 }, /* R322 */
	{ 0x0000, 0x0000 }, /* R323 */
	{ 0x0000, 0x0000 }, /* R324 */
	{ 0x0000, 0x0000 }, /* R325 */
	{ 0x0000, 0x0000 }, /* R326 */
	{ 0x0000, 0x0000 }, /* R327 */
	{ 0x0000, 0x0000 }, /* R328 */
	{ 0x0000, 0x0000 }, /* R329 */
	{ 0x0000, 0x0000 }, /* R330 */
	{ 0x0000, 0x0000 }, /* R331 */
	{ 0x0000, 0x0000 }, /* R332 */
	{ 0x0000, 0x0000 }, /* R333 */
	{ 0x0000, 0x0000 }, /* R334 */
	{ 0x0000, 0x0000 }, /* R335 */
	{ 0x0000, 0x0000 }, /* R336 */
	{ 0x0000, 0x0000 }, /* R337 */
	{ 0x0000, 0x0000 }, /* R338 */
	{ 0x0000, 0x0000 }, /* R339 */
	{ 0x0000, 0x0000 }, /* R340 */
	{ 0x0000, 0x0000 }, /* R341 */
	{ 0x0000, 0x0000 }, /* R342 */
	{ 0x0000, 0x0000 }, /* R343 */
	{ 0x0000, 0x0000 }, /* R344 */
	{ 0x0000, 0x0000 }, /* R345 */
	{ 0x0000, 0x0000 }, /* R346 */
	{ 0x0000, 0x0000 }, /* R347 */
	{ 0x0000, 0x0000 }, /* R348 */
	{ 0x0000, 0x0000 }, /* R349 */
	{ 0x0000, 0x0000 }, /* R350 */
	{ 0x0000, 0x0000 }, /* R351 */
	{ 0x0000, 0x0000 }, /* R352 */
	{ 0x0000, 0x0000 }, /* R353 */
	{ 0x0000, 0x0000 }, /* R354 */
	{ 0x0000, 0x0000 }, /* R355 */
	{ 0x0000, 0x0000 }, /* R356 */
	{ 0x0000, 0x0000 }, /* R357 */
	{ 0x0000, 0x0000 }, /* R358 */
	{ 0x0000, 0x0000 }, /* R359 */
	{ 0x0000, 0x0000 }, /* R360 */
	{ 0x0000, 0x0000 }, /* R361 */
	{ 0x0000, 0x0000 }, /* R362 */
	{ 0x0000, 0x0000 }, /* R363 */
	{ 0x0000, 0x0000 }, /* R364 */
	{ 0x0000, 0x0000 }, /* R365 */
	{ 0x0000, 0x0000 }, /* R366 */
	{ 0x0000, 0x0000 }, /* R367 */
	{ 0x0000, 0x0000 }, /* R368 */
	{ 0x0000, 0x0000 }, /* R369 */
	{ 0x0000, 0x0000 }, /* R370 */
	{ 0x0000, 0x0000 }, /* R371 */
	{ 0x0000, 0x0000 }, /* R372 */
	{ 0x0000, 0x0000 }, /* R373 */
	{ 0x0000, 0x0000 }, /* R374 */
	{ 0x0000, 0x0000 }, /* R375 */
	{ 0x0000, 0x0000 }, /* R376 */
	{ 0x0000, 0x0000 }, /* R377 */
	{ 0x0000, 0x0000 }, /* R378 */
	{ 0x0000, 0x0000 }, /* R379 */
	{ 0x0000, 0x0000 }, /* R380 */
	{ 0x0000, 0x0000 }, /* R381 */
	{ 0x0000, 0x0000 }, /* R382 */
	{ 0x0000, 0x0000 }, /* R383 */
	{ 0x0000, 0x0000 }, /* R384 */
	{ 0x0000, 0x0000 }, /* R385 */
	{ 0x0000, 0x0000 }, /* R386 */
	{ 0x0000, 0x0000 }, /* R387 */
	{ 0x0000, 0x0000 }, /* R388 */
	{ 0x0000, 0x0000 }, /* R389 */
	{ 0x0000, 0x0000 }, /* R390 */
	{ 0x0000, 0x0000 }, /* R391 */
	{ 0x0000, 0x0000 }, /* R392 */
	{ 0x0000, 0x0000 }, /* R393 */
	{ 0x0000, 0x0000 }, /* R394 */
	{ 0x0000, 0x0000 }, /* R395 */
	{ 0x0000, 0x0000 }, /* R396 */
	{ 0x0000, 0x0000 }, /* R397 */
	{ 0x0000, 0x0000 }, /* R398 */
	{ 0x0000, 0x0000 }, /* R399 */
	{ 0x0000, 0x0000 }, /* R400 */
	{ 0x0000, 0x0000 }, /* R401 */
	{ 0x0000, 0x0000 }, /* R402 */
	{ 0x0000, 0x0000 }, /* R403 */
	{ 0x0000, 0x0000 }, /* R404 */
	{ 0x0000, 0x0000 }, /* R405 */
	{ 0x0000, 0x0000 }, /* R406 */
	{ 0x0000, 0x0000 }, /* R407 */
	{ 0x0000, 0x0000 }, /* R408 */
	{ 0x0000, 0x0000 }, /* R409 */
	{ 0x0000, 0x0000 }, /* R410 */
	{ 0x0000, 0x0000 }, /* R411 */
	{ 0x0000, 0x0000 }, /* R412 */
	{ 0x0000, 0x0000 }, /* R413 */
	{ 0x0000, 0x0000 }, /* R414 */
	{ 0x0000, 0x0000 }, /* R415 */
	{ 0x0000, 0x0000 }, /* R416 */
	{ 0x0000, 0x0000 }, /* R417 */
	{ 0x0000, 0x0000 }, /* R418 */
	{ 0x0000, 0x0000 }, /* R419 */
	{ 0x0000, 0x0000 }, /* R420 */
	{ 0x0000, 0x0000 }, /* R421 */
	{ 0x0000, 0x0000 }, /* R422 */
	{ 0x0000, 0x0000 }, /* R423 */
	{ 0x0000, 0x0000 }, /* R424 */
	{ 0x0000, 0x0000 }, /* R425 */
	{ 0x0000, 0x0000 }, /* R426 */
	{ 0x0000, 0x0000 }, /* R427 */
	{ 0x0000, 0x0000 }, /* R428 */
	{ 0x0000, 0x0000 }, /* R429 */
	{ 0x0000, 0x0000 }, /* R430 */
	{ 0x0000, 0x0000 }, /* R431 */
	{ 0x0000, 0x0000 }, /* R432 */
	{ 0x0000, 0x0000 }, /* R433 */
	{ 0x0000, 0x0000 }, /* R434 */
	{ 0x0000, 0x0000 }, /* R435 */
	{ 0x0000, 0x0000 }, /* R436 */
	{ 0x0000, 0x0000 }, /* R437 */
	{ 0x0000, 0x0000 }, /* R438 */
	{ 0x0000, 0x0000 }, /* R439 */
	{ 0x0000, 0x0000 }, /* R440 */
	{ 0x0000, 0x0000 }, /* R441 */
	{ 0x0000, 0x0000 }, /* R442 */
	{ 0x0000, 0x0000 }, /* R443 */
	{ 0x0000, 0x0000 }, /* R444 */
	{ 0x0000, 0x0000 }, /* R445 */
	{ 0x0000, 0x0000 }, /* R446 */
	{ 0x0000, 0x0000 }, /* R447 */
	{ 0x0000, 0x0000 }, /* R448 */
	{ 0x0000, 0x0000 }, /* R449 */
	{ 0x0000, 0x0000 }, /* R450 */
	{ 0x0000, 0x0000 }, /* R451 */
	{ 0x0000, 0x0000 }, /* R452 */
	{ 0x0000, 0x0000 }, /* R453 */
	{ 0x0000, 0x0000 }, /* R454 */
	{ 0x0000, 0x0000 }, /* R455 */
	{ 0x0000, 0x0000 }, /* R456 */
	{ 0x0000, 0x0000 }, /* R457 */
	{ 0x0000, 0x0000 }, /* R458 */
	{ 0x0000, 0x0000 }, /* R459 */
	{ 0x0000, 0x0000 }, /* R460 */
	{ 0x0000, 0x0000 }, /* R461 */
	{ 0x0000, 0x0000 }, /* R462 */
	{ 0x0000, 0x0000 }, /* R463 */
	{ 0x0000, 0x0000 }, /* R464 */
	{ 0x0000, 0x0000 }, /* R465 */
	{ 0x0000, 0x0000 }, /* R466 */
	{ 0x0000, 0x0000 }, /* R467 */
	{ 0x0000, 0x0000 }, /* R468 */
	{ 0x0000, 0x0000 }, /* R469 */
	{ 0x0000, 0x0000 }, /* R470 */
	{ 0x0000, 0x0000 }, /* R471 */
	{ 0x0000, 0x0000 }, /* R472 */
	{ 0x0000, 0x0000 }, /* R473 */
	{ 0x0000, 0x0000 }, /* R474 */
	{ 0x0000, 0x0000 }, /* R475 */
	{ 0x0000, 0x0000 }, /* R476 */
	{ 0x0000, 0x0000 }, /* R477 */
	{ 0x0000, 0x0000 }, /* R478 */
	{ 0x0000, 0x0000 }, /* R479 */
	{ 0x0000, 0x0000 }, /* R480 */
	{ 0x0000, 0x0000 }, /* R481 */
	{ 0x0000, 0x0000 }, /* R482 */
	{ 0x0000, 0x0000 }, /* R483 */
	{ 0x0000, 0x0000 }, /* R484 */
	{ 0x0000, 0x0000 }, /* R485 */
	{ 0x0000, 0x0000 }, /* R486 */
	{ 0x0000, 0x0000 }, /* R487 */
	{ 0x0000, 0x0000 }, /* R488 */
	{ 0x0000, 0x0000 }, /* R489 */
	{ 0x0000, 0x0000 }, /* R490 */
	{ 0x0000, 0x0000 }, /* R491 */
	{ 0x0000, 0x0000 }, /* R492 */
	{ 0x0000, 0x0000 }, /* R493 */
	{ 0x0000, 0x0000 }, /* R494 */
	{ 0x0000, 0x0000 }, /* R495 */
	{ 0x0000, 0x0000 }, /* R496 */
	{ 0x0000, 0x0000 }, /* R497 */
	{ 0x0000, 0x0000 }, /* R498 */
	{ 0x0000, 0x0000 }, /* R499 */
	{ 0x0000, 0x0000 }, /* R500 */
	{ 0x0000, 0x0000 }, /* R501 */
	{ 0x0000, 0x0000 }, /* R502 */
	{ 0x0000, 0x0000 }, /* R503 */
	{ 0x0000, 0x0000 }, /* R504 */
	{ 0x0000, 0x0000 }, /* R505 */
	{ 0x0000, 0x0000 }, /* R506 */
	{ 0x0000, 0x0000 }, /* R507 */
	{ 0x0000, 0x0000 }, /* R508 */
	{ 0x0000, 0x0000 }, /* R509 */
	{ 0x0000, 0x0000 }, /* R510 */
	{ 0x0000, 0x0000 }, /* R511 */
	{ 0x001F, 0x001F }, /* R512   - AIF1 Clocking (1) */
	{ 0x003F, 0x003F }, /* R513   - AIF1 Clocking (2) */
	{ 0x0000, 0x0000 }, /* R514 */
	{ 0x0000, 0x0000 }, /* R515 */
	{ 0x001F, 0x001F }, /* R516   - AIF2 Clocking (1) */
	{ 0x003F, 0x003F }, /* R517   - AIF2 Clocking (2) */
	{ 0x0000, 0x0000 }, /* R518 */
	{ 0x0000, 0x0000 }, /* R519 */
	{ 0x001F, 0x001F }, /* R520   - Clocking (1) */
	{ 0x0777, 0x0777 }, /* R521   - Clocking (2) */
	{ 0x0000, 0x0000 }, /* R522 */
	{ 0x0000, 0x0000 }, /* R523 */
	{ 0x0000, 0x0000 }, /* R524 */
	{ 0x0000, 0x0000 }, /* R525 */
	{ 0x0000, 0x0000 }, /* R526 */
	{ 0x0000, 0x0000 }, /* R527 */
	{ 0x00FF, 0x00FF }, /* R528   - AIF1 Rate */
	{ 0x00FF, 0x00FF }, /* R529   - AIF2 Rate */
	{ 0x000F, 0x0000 }, /* R530   - Rate Status */
	{ 0x0000, 0x0000 }, /* R531 */
	{ 0x0000, 0x0000 }, /* R532 */
	{ 0x0000, 0x0000 }, /* R533 */
	{ 0x0000, 0x0000 }, /* R534 */
	{ 0x0000, 0x0000 }, /* R535 */
	{ 0x0000, 0x0000 }, /* R536 */
	{ 0x0000, 0x0000 }, /* R537 */
	{ 0x0000, 0x0000 }, /* R538 */
	{ 0x0000, 0x0000 }, /* R539 */
	{ 0x0000, 0x0000 }, /* R540 */
	{ 0x0000, 0x0000 }, /* R541 */
	{ 0x0000, 0x0000 }, /* R542 */
	{ 0x0000, 0x0000 }, /* R543 */
	{ 0x0007, 0x0007 }, /* R544   - FLL1 Control (1) */
	{ 0x3F77, 0x3F77 }, /* R545   - FLL1 Control (2) */
	{ 0xFFFF, 0xFFFF }, /* R546   - FLL1 Control (3) */
	{ 0x7FEF, 0x7FEF }, /* R547   - FLL1 Control (4) */
	{ 0x1FDB, 0x1FDB }, /* R548   - FLL1 Control (5) */
	{ 0x0000, 0x0000 }, /* R549 */
	{ 0x0000, 0x0000 }, /* R550 */
	{ 0x0000, 0x0000 }, /* R551 */
	{ 0x0000, 0x0000 }, /* R552 */
	{ 0x0000, 0x0000 }, /* R553 */
	{ 0x0000, 0x0000 }, /* R554 */
	{ 0x0000, 0x0000 }, /* R555 */
	{ 0x0000, 0x0000 }, /* R556 */
	{ 0x0000, 0x0000 }, /* R557 */
	{ 0x0000, 0x0000 }, /* R558 */
	{ 0x0000, 0x0000 }, /* R559 */
	{ 0x0000, 0x0000 }, /* R560 */
	{ 0x0000, 0x0000 }, /* R561 */
	{ 0x0000, 0x0000 }, /* R562 */
	{ 0x0000, 0x0000 }, /* R563 */
	{ 0x0000, 0x0000 }, /* R564 */
	{ 0x0000, 0x0000 }, /* R565 */
	{ 0x0000, 0x0000 }, /* R566 */
	{ 0x0000, 0x0000 }, /* R567 */
	{ 0x0000, 0x0000 }, /* R568 */
	{ 0x0000, 0x0000 }, /* R569 */
	{ 0x0000, 0x0000 }, /* R570 */
	{ 0x0000, 0x0000 }, /* R571 */
	{ 0x0000, 0x0000 }, /* R572 */
	{ 0x0000, 0x0000 }, /* R573 */
	{ 0x0000, 0x0000 }, /* R574 */
	{ 0x0000, 0x0000 }, /* R575 */
	{ 0x0007, 0x0007 }, /* R576   - FLL2 Control (1) */
	{ 0x3F77, 0x3F77 }, /* R577   - FLL2 Control (2) */
	{ 0xFFFF, 0xFFFF }, /* R578   - FLL2 Control (3) */
	{ 0x7FEF, 0x7FEF }, /* R579   - FLL2 Control (4) */
	{ 0x1FDB, 0x1FDB }, /* R580   - FLL2 Control (5) */
	{ 0x0000, 0x0000 }, /* R581 */
	{ 0x0000, 0x0000 }, /* R582 */
	{ 0x0000, 0x0000 }, /* R583 */
	{ 0x0000, 0x0000 }, /* R584 */
	{ 0x0000, 0x0000 }, /* R585 */
	{ 0x0000, 0x0000 }, /* R586 */
	{ 0x0000, 0x0000 }, /* R587 */
	{ 0x0000, 0x0000 }, /* R588 */
	{ 0x0000, 0x0000 }, /* R589 */
	{ 0x0000, 0x0000 }, /* R590 */
	{ 0x0000, 0x0000 }, /* R591 */
	{ 0x0000, 0x0000 }, /* R592 */
	{ 0x0000, 0x0000 }, /* R593 */
	{ 0x0000, 0x0000 }, /* R594 */
	{ 0x0000, 0x0000 }, /* R595 */
	{ 0x0000, 0x0000 }, /* R596 */
	{ 0x0000, 0x0000 }, /* R597 */
	{ 0x0000, 0x0000 }, /* R598 */
	{ 0x0000, 0x0000 }, /* R599 */
	{ 0x0000, 0x0000 }, /* R600 */
	{ 0x0000, 0x0000 }, /* R601 */
	{ 0x0000, 0x0000 }, /* R602 */
	{ 0x0000, 0x0000 }, /* R603 */
	{ 0x0000, 0x0000 }, /* R604 */
	{ 0x0000, 0x0000 }, /* R605 */
	{ 0x0000, 0x0000 }, /* R606 */
	{ 0x0000, 0x0000 }, /* R607 */
	{ 0x0000, 0x0000 }, /* R608 */
	{ 0x0000, 0x0000 }, /* R609 */
	{ 0x0000, 0x0000 }, /* R610 */
	{ 0x0000, 0x0000 }, /* R611 */
	{ 0x0000, 0x0000 }, /* R612 */
	{ 0x0000, 0x0000 }, /* R613 */
	{ 0x0000, 0x0000 }, /* R614 */
	{ 0x0000, 0x0000 }, /* R615 */
	{ 0x0000, 0x0000 }, /* R616 */
	{ 0x0000, 0x0000 }, /* R617 */
	{ 0x0000, 0x0000 }, /* R618 */
	{ 0x0000, 0x0000 }, /* R619 */
	{ 0x0000, 0x0000 }, /* R620 */
	{ 0x0000, 0x0000 }, /* R621 */
	{ 0x0000, 0x0000 }, /* R622 */
	{ 0x0000, 0x0000 }, /* R623 */
	{ 0x0000, 0x0000 }, /* R624 */
	{ 0x0000, 0x0000 }, /* R625 */
	{ 0x0000, 0x0000 }, /* R626 */
	{ 0x0000, 0x0000 }, /* R627 */
	{ 0x0000, 0x0000 }, /* R628 */
	{ 0x0000, 0x0000 }, /* R629 */
	{ 0x0000, 0x0000 }, /* R630 */
	{ 0x0000, 0x0000 }, /* R631 */
	{ 0x0000, 0x0000 }, /* R632 */
	{ 0x0000, 0x0000 }, /* R633 */
	{ 0x0000, 0x0000 }, /* R634 */
	{ 0x0000, 0x0000 }, /* R635 */
	{ 0x0000, 0x0000 }, /* R636 */
	{ 0x0000, 0x0000 }, /* R637 */
	{ 0x0000, 0x0000 }, /* R638 */
	{ 0x0000, 0x0000 }, /* R639 */
	{ 0x0000, 0x0000 }, /* R640 */
	{ 0x0000, 0x0000 }, /* R641 */
	{ 0x0000, 0x0000 }, /* R642 */
	{ 0x0000, 0x0000 }, /* R643 */
	{ 0x0000, 0x0000 }, /* R644 */
	{ 0x0000, 0x0000 }, /* R645 */
	{ 0x0000, 0x0000 }, /* R646 */
	{ 0x0000, 0x0000 }, /* R647 */
	{ 0x0000, 0x0000 }, /* R648 */
	{ 0x0000, 0x0000 }, /* R649 */
	{ 0x0000, 0x0000 }, /* R650 */
	{ 0x0000, 0x0000 }, /* R651 */
	{ 0x0000, 0x0000 }, /* R652 */
	{ 0x0000, 0x0000 }, /* R653 */
	{ 0x0000, 0x0000 }, /* R654 */
	{ 0x0000, 0x0000 }, /* R655 */
	{ 0x0000, 0x0000 }, /* R656 */
	{ 0x0000, 0x0000 }, /* R657 */
	{ 0x0000, 0x0000 }, /* R658 */
	{ 0x0000, 0x0000 }, /* R659 */
	{ 0x0000, 0x0000 }, /* R660 */
	{ 0x0000, 0x0000 }, /* R661 */
	{ 0x0000, 0x0000 }, /* R662 */
	{ 0x0000, 0x0000 }, /* R663 */
	{ 0x0000, 0x0000 }, /* R664 */
	{ 0x0000, 0x0000 }, /* R665 */
	{ 0x0000, 0x0000 }, /* R666 */
	{ 0x0000, 0x0000 }, /* R667 */
	{ 0x0000, 0x0000 }, /* R668 */
	{ 0x0000, 0x0000 }, /* R669 */
	{ 0x0000, 0x0000 }, /* R670 */
	{ 0x0000, 0x0000 }, /* R671 */
	{ 0x0000, 0x0000 }, /* R672 */
	{ 0x0000, 0x0000 }, /* R673 */
	{ 0x0000, 0x0000 }, /* R674 */
	{ 0x0000, 0x0000 }, /* R675 */
	{ 0x0000, 0x0000 }, /* R676 */
	{ 0x0000, 0x0000 }, /* R677 */
	{ 0x0000, 0x0000 }, /* R678 */
	{ 0x0000, 0x0000 }, /* R679 */
	{ 0x0000, 0x0000 }, /* R680 */
	{ 0x0000, 0x0000 }, /* R681 */
	{ 0x0000, 0x0000 }, /* R682 */
	{ 0x0000, 0x0000 }, /* R683 */
	{ 0x0000, 0x0000 }, /* R684 */
	{ 0x0000, 0x0000 }, /* R685 */
	{ 0x0000, 0x0000 }, /* R686 */
	{ 0x0000, 0x0000 }, /* R687 */
	{ 0x0000, 0x0000 }, /* R688 */
	{ 0x0000, 0x0000 }, /* R689 */
	{ 0x0000, 0x0000 }, /* R690 */
	{ 0x0000, 0x0000 }, /* R691 */
	{ 0x0000, 0x0000 }, /* R692 */
	{ 0x0000, 0x0000 }, /* R693 */
	{ 0x0000, 0x0000 }, /* R694 */
	{ 0x0000, 0x0000 }, /* R695 */
	{ 0x0000, 0x0000 }, /* R696 */
	{ 0x0000, 0x0000 }, /* R697 */
	{ 0x0000, 0x0000 }, /* R698 */
	{ 0x0000, 0x0000 }, /* R699 */
	{ 0x0000, 0x0000 }, /* R700 */
	{ 0x0000, 0x0000 }, /* R701 */
	{ 0x0000, 0x0000 }, /* R702 */
	{ 0x0000, 0x0000 }, /* R703 */
	{ 0x0000, 0x0000 }, /* R704 */
	{ 0x0000, 0x0000 }, /* R705 */
	{ 0x0000, 0x0000 }, /* R706 */
	{ 0x0000, 0x0000 }, /* R707 */
	{ 0x0000, 0x0000 }, /* R708 */
	{ 0x0000, 0x0000 }, /* R709 */
	{ 0x0000, 0x0000 }, /* R710 */
	{ 0x0000, 0x0000 }, /* R711 */
	{ 0x0000, 0x0000 }, /* R712 */
	{ 0x0000, 0x0000 }, /* R713 */
	{ 0x0000, 0x0000 }, /* R714 */
	{ 0x0000, 0x0000 }, /* R715 */
	{ 0x0000, 0x0000 }, /* R716 */
	{ 0x0000, 0x0000 }, /* R717 */
	{ 0x0000, 0x0000 }, /* R718 */
	{ 0x0000, 0x0000 }, /* R719 */
	{ 0x0000, 0x0000 }, /* R720 */
	{ 0x0000, 0x0000 }, /* R721 */
	{ 0x0000, 0x0000 }, /* R722 */
	{ 0x0000, 0x0000 }, /* R723 */
	{ 0x0000, 0x0000 }, /* R724 */
	{ 0x0000, 0x0000 }, /* R725 */
	{ 0x0000, 0x0000 }, /* R726 */
	{ 0x0000, 0x0000 }, /* R727 */
	{ 0x0000, 0x0000 }, /* R728 */
	{ 0x0000, 0x0000 }, /* R729 */
	{ 0x0000, 0x0000 }, /* R730 */
	{ 0x0000, 0x0000 }, /* R731 */
	{ 0x0000, 0x0000 }, /* R732 */
	{ 0x0000, 0x0000 }, /* R733 */
	{ 0x0000, 0x0000 }, /* R734 */
	{ 0x0000, 0x0000 }, /* R735 */
	{ 0x0000, 0x0000 }, /* R736 */
	{ 0x0000, 0x0000 }, /* R737 */
	{ 0x0000, 0x0000 }, /* R738 */
	{ 0x0000, 0x0000 }, /* R739 */
	{ 0x0000, 0x0000 }, /* R740 */
	{ 0x0000, 0x0000 }, /* R741 */
	{ 0x0000, 0x0000 }, /* R742 */
	{ 0x0000, 0x0000 }, /* R743 */
	{ 0x0000, 0x0000 }, /* R744 */
	{ 0x0000, 0x0000 }, /* R745 */
	{ 0x0000, 0x0000 }, /* R746 */
	{ 0x0000, 0x0000 }, /* R747 */
	{ 0x0000, 0x0000 }, /* R748 */
	{ 0x0000, 0x0000 }, /* R749 */
	{ 0x0000, 0x0000 }, /* R750 */
	{ 0x0000, 0x0000 }, /* R751 */
	{ 0x0000, 0x0000 }, /* R752 */
	{ 0x0000, 0x0000 }, /* R753 */
	{ 0x0000, 0x0000 }, /* R754 */
	{ 0x0000, 0x0000 }, /* R755 */
	{ 0x0000, 0x0000 }, /* R756 */
	{ 0x0000, 0x0000 }, /* R757 */
	{ 0x0000, 0x0000 }, /* R758 */
	{ 0x0000, 0x0000 }, /* R759 */
	{ 0x0000, 0x0000 }, /* R760 */
	{ 0x0000, 0x0000 }, /* R761 */
	{ 0x0000, 0x0000 }, /* R762 */
	{ 0x0000, 0x0000 }, /* R763 */
	{ 0x0000, 0x0000 }, /* R764 */
	{ 0x0000, 0x0000 }, /* R765 */
	{ 0x0000, 0x0000 }, /* R766 */
	{ 0x0000, 0x0000 }, /* R767 */
	{ 0xE1F8, 0xE1F8 }, /* R768   - AIF1 Control (1) */
	{ 0xCD1F, 0xCD1F }, /* R769   - AIF1 Control (2) */
	{ 0xF000, 0xF000 }, /* R770   - AIF1 Master/Slave */
	{ 0x01F0, 0x01F0 }, /* R771   - AIF1 BCLK */
	{ 0x0FFF, 0x0FFF }, /* R772   - AIF1ADC LRCLK */
	{ 0x0FFF, 0x0FFF }, /* R773   - AIF1DAC LRCLK */
	{ 0x0003, 0x0003 }, /* R774   - AIF1DAC Data */
	{ 0x0003, 0x0003 }, /* R775   - AIF1ADC Data */
	{ 0x0000, 0x0000 }, /* R776 */
	{ 0x0000, 0x0000 }, /* R777 */
	{ 0x0000, 0x0000 }, /* R778 */
	{ 0x0000, 0x0000 }, /* R779 */
	{ 0x0000, 0x0000 }, /* R780 */
	{ 0x0000, 0x0000 }, /* R781 */
	{ 0x0000, 0x0000 }, /* R782 */
	{ 0x0000, 0x0000 }, /* R783 */
	{ 0xF1F8, 0xF1F8 }, /* R784   - AIF2 Control (1) */
	{ 0xFD1F, 0xFD1F }, /* R785   - AIF2 Control (2) */
	{ 0xF000, 0xF000 }, /* R786   - AIF2 Master/Slave */
	{ 0x01F0, 0x01F0 }, /* R787   - AIF2 BCLK */
	{ 0x0FFF, 0x0FFF }, /* R788   - AIF2ADC LRCLK */
	{ 0x0FFF, 0x0FFF }, /* R789   - AIF2DAC LRCLK */
	{ 0x0003, 0x0003 }, /* R790   - AIF2DAC Data */
	{ 0x0003, 0x0003 }, /* R791   - AIF2ADC Data */
	{ 0x0000, 0x0000 }, /* R792 */
	{ 0x0000, 0x0000 }, /* R793 */
	{ 0x0000, 0x0000 }, /* R794 */
	{ 0x0000, 0x0000 }, /* R795 */
	{ 0x0000, 0x0000 }, /* R796 */
	{ 0x0000, 0x0000 }, /* R797 */
	{ 0x0000, 0x0000 }, /* R798 */
	{ 0x0000, 0x0000 }, /* R799 */
	{ 0x0000, 0x0000 }, /* R800 */
	{ 0x0000, 0x0000 }, /* R801 */
	{ 0x0000, 0x0000 }, /* R802 */
	{ 0x0000, 0x0000 }, /* R803 */
	{ 0x0000, 0x0000 }, /* R804 */
	{ 0x0000, 0x0000 }, /* R805 */
	{ 0x0000, 0x0000 }, /* R806 */
	{ 0x0000, 0x0000 }, /* R807 */
	{ 0x0000, 0x0000 }, /* R808 */
	{ 0x0000, 0x0000 }, /* R809 */
	{ 0x0000, 0x0000 }, /* R810 */
	{ 0x0000, 0x0000 }, /* R811 */
	{ 0x0000, 0x0000 }, /* R812 */
	{ 0x0000, 0x0000 }, /* R813 */
	{ 0x0000, 0x0000 }, /* R814 */
	{ 0x0000, 0x0000 }, /* R815 */
	{ 0x0000, 0x0000 }, /* R816 */
	{ 0x0000, 0x0000 }, /* R817 */
	{ 0x0000, 0x0000 }, /* R818 */
	{ 0x0000, 0x0000 }, /* R819 */
	{ 0x0000, 0x0000 }, /* R820 */
	{ 0x0000, 0x0000 }, /* R821 */
	{ 0x0000, 0x0000 }, /* R822 */
	{ 0x0000, 0x0000 }, /* R823 */
	{ 0x0000, 0x0000 }, /* R824 */
	{ 0x0000, 0x0000 }, /* R825 */
	{ 0x0000, 0x0000 }, /* R826 */
	{ 0x0000, 0x0000 }, /* R827 */
	{ 0x0000, 0x0000 }, /* R828 */
	{ 0x0000, 0x0000 }, /* R829 */
	{ 0x0000, 0x0000 }, /* R830 */
	{ 0x0000, 0x0000 }, /* R831 */
	{ 0x0000, 0x0000 }, /* R832 */
	{ 0x0000, 0x0000 }, /* R833 */
	{ 0x0000, 0x0000 }, /* R834 */
	{ 0x0000, 0x0000 }, /* R835 */
	{ 0x0000, 0x0000 }, /* R836 */
	{ 0x0000, 0x0000 }, /* R837 */
	{ 0x0000, 0x0000 }, /* R838 */
	{ 0x0000, 0x0000 }, /* R839 */
	{ 0x0000, 0x0000 }, /* R840 */
	{ 0x0000, 0x0000 }, /* R841 */
	{ 0x0000, 0x0000 }, /* R842 */
	{ 0x0000, 0x0000 }, /* R843 */
	{ 0x0000, 0x0000 }, /* R844 */
	{ 0x0000, 0x0000 }, /* R845 */
	{ 0x0000, 0x0000 }, /* R846 */
	{ 0x0000, 0x0000 }, /* R847 */
	{ 0x0000, 0x0000 }, /* R848 */
	{ 0x0000, 0x0000 }, /* R849 */
	{ 0x0000, 0x0000 }, /* R850 */
	{ 0x0000, 0x0000 }, /* R851 */
	{ 0x0000, 0x0000 }, /* R852 */
	{ 0x0000, 0x0000 }, /* R853 */
	{ 0x0000, 0x0000 }, /* R854 */
	{ 0x0000, 0x0000 }, /* R855 */
	{ 0x0000, 0x0000 }, /* R856 */
	{ 0x0000, 0x0000 }, /* R857 */
	{ 0x0000, 0x0000 }, /* R858 */
	{ 0x0000, 0x0000 }, /* R859 */
	{ 0x0000, 0x0000 }, /* R860 */
	{ 0x0000, 0x0000 }, /* R861 */
	{ 0x0000, 0x0000 }, /* R862 */
	{ 0x0000, 0x0000 }, /* R863 */
	{ 0x0000, 0x0000 }, /* R864 */
	{ 0x0000, 0x0000 }, /* R865 */
	{ 0x0000, 0x0000 }, /* R866 */
	{ 0x0000, 0x0000 }, /* R867 */
	{ 0x0000, 0x0000 }, /* R868 */
	{ 0x0000, 0x0000 }, /* R869 */
	{ 0x0000, 0x0000 }, /* R870 */
	{ 0x0000, 0x0000 }, /* R871 */
	{ 0x0000, 0x0000 }, /* R872 */
	{ 0x0000, 0x0000 }, /* R873 */
	{ 0x0000, 0x0000 }, /* R874 */
	{ 0x0000, 0x0000 }, /* R875 */
	{ 0x0000, 0x0000 }, /* R876 */
	{ 0x0000, 0x0000 }, /* R877 */
	{ 0x0000, 0x0000 }, /* R878 */
	{ 0x0000, 0x0000 }, /* R879 */
	{ 0x0000, 0x0000 }, /* R880 */
	{ 0x0000, 0x0000 }, /* R881 */
	{ 0x0000, 0x0000 }, /* R882 */
	{ 0x0000, 0x0000 }, /* R883 */
	{ 0x0000, 0x0000 }, /* R884 */
	{ 0x0000, 0x0000 }, /* R885 */
	{ 0x0000, 0x0000 }, /* R886 */
	{ 0x0000, 0x0000 }, /* R887 */
	{ 0x0000, 0x0000 }, /* R888 */
	{ 0x0000, 0x0000 }, /* R889 */
	{ 0x0000, 0x0000 }, /* R890 */
	{ 0x0000, 0x0000 }, /* R891 */
	{ 0x0000, 0x0000 }, /* R892 */
	{ 0x0000, 0x0000 }, /* R893 */
	{ 0x0000, 0x0000 }, /* R894 */
	{ 0x0000, 0x0000 }, /* R895 */
	{ 0x0000, 0x0000 }, /* R896 */
	{ 0x0000, 0x0000 }, /* R897 */
	{ 0x0000, 0x0000 }, /* R898 */
	{ 0x0000, 0x0000 }, /* R899 */
	{ 0x0000, 0x0000 }, /* R900 */
	{ 0x0000, 0x0000 }, /* R901 */
	{ 0x0000, 0x0000 }, /* R902 */
	{ 0x0000, 0x0000 }, /* R903 */
	{ 0x0000, 0x0000 }, /* R904 */
	{ 0x0000, 0x0000 }, /* R905 */
	{ 0x0000, 0x0000 }, /* R906 */
	{ 0x0000, 0x0000 }, /* R907 */
	{ 0x0000, 0x0000 }, /* R908 */
	{ 0x0000, 0x0000 }, /* R909 */
	{ 0x0000, 0x0000 }, /* R910 */
	{ 0x0000, 0x0000 }, /* R911 */
	{ 0x0000, 0x0000 }, /* R912 */
	{ 0x0000, 0x0000 }, /* R913 */
	{ 0x0000, 0x0000 }, /* R914 */
	{ 0x0000, 0x0000 }, /* R915 */
	{ 0x0000, 0x0000 }, /* R916 */
	{ 0x0000, 0x0000 }, /* R917 */
	{ 0x0000, 0x0000 }, /* R918 */
	{ 0x0000, 0x0000 }, /* R919 */
	{ 0x0000, 0x0000 }, /* R920 */
	{ 0x0000, 0x0000 }, /* R921 */
	{ 0x0000, 0x0000 }, /* R922 */
	{ 0x0000, 0x0000 }, /* R923 */
	{ 0x0000, 0x0000 }, /* R924 */
	{ 0x0000, 0x0000 }, /* R925 */
	{ 0x0000, 0x0000 }, /* R926 */
	{ 0x0000, 0x0000 }, /* R927 */
	{ 0x0000, 0x0000 }, /* R928 */
	{ 0x0000, 0x0000 }, /* R929 */
	{ 0x0000, 0x0000 }, /* R930 */
	{ 0x0000, 0x0000 }, /* R931 */
	{ 0x0000, 0x0000 }, /* R932 */
	{ 0x0000, 0x0000 }, /* R933 */
	{ 0x0000, 0x0000 }, /* R934 */
	{ 0x0000, 0x0000 }, /* R935 */
	{ 0x0000, 0x0000 }, /* R936 */
	{ 0x0000, 0x0000 }, /* R937 */
	{ 0x0000, 0x0000 }, /* R938 */
	{ 0x0000, 0x0000 }, /* R939 */
	{ 0x0000, 0x0000 }, /* R940 */
	{ 0x0000, 0x0000 }, /* R941 */
	{ 0x0000, 0x0000 }, /* R942 */
	{ 0x0000, 0x0000 }, /* R943 */
	{ 0x0000, 0x0000 }, /* R944 */
	{ 0x0000, 0x0000 }, /* R945 */
	{ 0x0000, 0x0000 }, /* R946 */
	{ 0x0000, 0x0000 }, /* R947 */
	{ 0x0000, 0x0000 }, /* R948 */
	{ 0x0000, 0x0000 }, /* R949 */
	{ 0x0000, 0x0000 }, /* R950 */
	{ 0x0000, 0x0000 }, /* R951 */
	{ 0x0000, 0x0000 }, /* R952 */
	{ 0x0000, 0x0000 }, /* R953 */
	{ 0x0000, 0x0000 }, /* R954 */
	{ 0x0000, 0x0000 }, /* R955 */
	{ 0x0000, 0x0000 }, /* R956 */
	{ 0x0000, 0x0000 }, /* R957 */
	{ 0x0000, 0x0000 }, /* R958 */
	{ 0x0000, 0x0000 }, /* R959 */
	{ 0x0000, 0x0000 }, /* R960 */
	{ 0x0000, 0x0000 }, /* R961 */
	{ 0x0000, 0x0000 }, /* R962 */
	{ 0x0000, 0x0000 }, /* R963 */
	{ 0x0000, 0x0000 }, /* R964 */
	{ 0x0000, 0x0000 }, /* R965 */
	{ 0x0000, 0x0000 }, /* R966 */
	{ 0x0000, 0x0000 }, /* R967 */
	{ 0x0000, 0x0000 }, /* R968 */
	{ 0x0000, 0x0000 }, /* R969 */
	{ 0x0000, 0x0000 }, /* R970 */
	{ 0x0000, 0x0000 }, /* R971 */
	{ 0x0000, 0x0000 }, /* R972 */
	{ 0x0000, 0x0000 }, /* R973 */
	{ 0x0000, 0x0000 }, /* R974 */
	{ 0x0000, 0x0000 }, /* R975 */
	{ 0x0000, 0x0000 }, /* R976 */
	{ 0x0000, 0x0000 }, /* R977 */
	{ 0x0000, 0x0000 }, /* R978 */
	{ 0x0000, 0x0000 }, /* R979 */
	{ 0x0000, 0x0000 }, /* R980 */
	{ 0x0000, 0x0000 }, /* R981 */
	{ 0x0000, 0x0000 }, /* R982 */
	{ 0x0000, 0x0000 }, /* R983 */
	{ 0x0000, 0x0000 }, /* R984 */
	{ 0x0000, 0x0000 }, /* R985 */
	{ 0x0000, 0x0000 }, /* R986 */
	{ 0x0000, 0x0000 }, /* R987 */
	{ 0x0000, 0x0000 }, /* R988 */
	{ 0x0000, 0x0000 }, /* R989 */
	{ 0x0000, 0x0000 }, /* R990 */
	{ 0x0000, 0x0000 }, /* R991 */
	{ 0x0000, 0x0000 }, /* R992 */
	{ 0x0000, 0x0000 }, /* R993 */
	{ 0x0000, 0x0000 }, /* R994 */
	{ 0x0000, 0x0000 }, /* R995 */
	{ 0x0000, 0x0000 }, /* R996 */
	{ 0x0000, 0x0000 }, /* R997 */
	{ 0x0000, 0x0000 }, /* R998 */
	{ 0x0000, 0x0000 }, /* R999 */
	{ 0x0000, 0x0000 }, /* R1000 */
	{ 0x0000, 0x0000 }, /* R1001 */
	{ 0x0000, 0x0000 }, /* R1002 */
	{ 0x0000, 0x0000 }, /* R1003 */
	{ 0x0000, 0x0000 }, /* R1004 */
	{ 0x0000, 0x0000 }, /* R1005 */
	{ 0x0000, 0x0000 }, /* R1006 */
	{ 0x0000, 0x0000 }, /* R1007 */
	{ 0x0000, 0x0000 }, /* R1008 */
	{ 0x0000, 0x0000 }, /* R1009 */
	{ 0x0000, 0x0000 }, /* R1010 */
	{ 0x0000, 0x0000 }, /* R1011 */
	{ 0x0000, 0x0000 }, /* R1012 */
	{ 0x0000, 0x0000 }, /* R1013 */
	{ 0x0000, 0x0000 }, /* R1014 */
	{ 0x0000, 0x0000 }, /* R1015 */
	{ 0x0000, 0x0000 }, /* R1016 */
	{ 0x0000, 0x0000 }, /* R1017 */
	{ 0x0000, 0x0000 }, /* R1018 */
	{ 0x0000, 0x0000 }, /* R1019 */
	{ 0x0000, 0x0000 }, /* R1020 */
	{ 0x0000, 0x0000 }, /* R1021 */
	{ 0x0000, 0x0000 }, /* R1022 */
	{ 0x0000, 0x0000 }, /* R1023 */
	{ 0x00FF, 0x01FF }, /* R1024  - AIF1 ADC1 Left Volume */
	{ 0x00FF, 0x01FF }, /* R1025  - AIF1 ADC1 Right Volume */
	{ 0x00FF, 0x01FF }, /* R1026  - AIF1 DAC1 Left Volume */
	{ 0x00FF, 0x01FF }, /* R1027  - AIF1 DAC1 Right Volume */
	{ 0x00FF, 0x01FF }, /* R1028  - AIF1 ADC2 Left Volume */
	{ 0x00FF, 0x01FF }, /* R1029  - AIF1 ADC2 Right Volume */
	{ 0x00FF, 0x01FF }, /* R1030  - AIF1 DAC2 Left Volume */
	{ 0x00FF, 0x01FF }, /* R1031  - AIF1 DAC2 Right Volume */
	{ 0x0000, 0x0000 }, /* R1032 */
	{ 0x0000, 0x0000 }, /* R1033 */
	{ 0x0000, 0x0000 }, /* R1034 */
	{ 0x0000, 0x0000 }, /* R1035 */
	{ 0x0000, 0x0000 }, /* R1036 */
	{ 0x0000, 0x0000 }, /* R1037 */
	{ 0x0000, 0x0000 }, /* R1038 */
	{ 0x0000, 0x0000 }, /* R1039 */
	{ 0xF800, 0xF800 }, /* R1040  - AIF1 ADC1 Filters */
	{ 0x7800, 0x7800 }, /* R1041  - AIF1 ADC2 Filters */
	{ 0x0000, 0x0000 }, /* R1042 */
	{ 0x0000, 0x0000 }, /* R1043 */
	{ 0x0000, 0x0000 }, /* R1044 */
	{ 0x0000, 0x0000 }, /* R1045 */
	{ 0x0000, 0x0000 }, /* R1046 */
	{ 0x0000, 0x0000 }, /* R1047 */
	{ 0x0000, 0x0000 }, /* R1048 */
	{ 0x0000, 0x0000 }, /* R1049 */
	{ 0x0000, 0x0000 }, /* R1050 */
	{ 0x0000, 0x0000 }, /* R1051 */
	{ 0x0000, 0x0000 }, /* R1052 */
	{ 0x0000, 0x0000 }, /* R1053 */
	{ 0x0000, 0x0000 }, /* R1054 */
	{ 0x0000, 0x0000 }, /* R1055 */
	{ 0x02B6, 0x02B6 }, /* R1056  - AIF1 DAC1 Filters (1) */
	{ 0x3F00, 0x3F00 }, /* R1057  - AIF1 DAC1 Filters (2) */
	{ 0x02B6, 0x02B6 }, /* R1058  - AIF1 DAC2 Filters (1) */
	{ 0x3F00, 0x3F00 }, /* R1059  - AIF1 DAC2 Filters (2) */
	{ 0x0000, 0x0000 }, /* R1060 */
	{ 0x0000, 0x0000 }, /* R1061 */
	{ 0x0000, 0x0000 }, /* R1062 */
	{ 0x0000, 0x0000 }, /* R1063 */
	{ 0x0000, 0x0000 }, /* R1064 */
	{ 0x0000, 0x0000 }, /* R1065 */
	{ 0x0000, 0x0000 }, /* R1066 */
	{ 0x0000, 0x0000 }, /* R1067 */
	{ 0x0000, 0x0000 }, /* R1068 */
	{ 0x0000, 0x0000 }, /* R1069 */
	{ 0x0000, 0x0000 }, /* R1070 */
	{ 0x0000, 0x0000 }, /* R1071 */
	{ 0x0000, 0x0000 }, /* R1072 */
	{ 0x0000, 0x0000 }, /* R1073 */
	{ 0x0000, 0x0000 }, /* R1074 */
	{ 0x0000, 0x0000 }, /* R1075 */
	{ 0x0000, 0x0000 }, /* R1076 */
	{ 0x0000, 0x0000 }, /* R1077 */
	{ 0x0000, 0x0000 }, /* R1078 */
	{ 0x0000, 0x0000 }, /* R1079 */
	{ 0x0000, 0x0000 }, /* R1080 */
	{ 0x0000, 0x0000 }, /* R1081 */
	{ 0x0000, 0x0000 }, /* R1082 */
	{ 0x0000, 0x0000 }, /* R1083 */
	{ 0x0000, 0x0000 }, /* R1084 */
	{ 0x0000, 0x0000 }, /* R1085 */
	{ 0x0000, 0x0000 }, /* R1086 */
	{ 0x0000, 0x0000 }, /* R1087 */
	{ 0xFFFF, 0xFFFF }, /* R1088  - AIF1 DRC1 (1) */
	{ 0x1FFF, 0x1FFF }, /* R1089  - AIF1 DRC1 (2) */
	{ 0xFFFF, 0xFFFF }, /* R1090  - AIF1 DRC1 (3) */
	{ 0x07FF, 0x07FF }, /* R1091  - AIF1 DRC1 (4) */
	{ 0x03FF, 0x03FF }, /* R1092  - AIF1 DRC1 (5) */
	{ 0x0000, 0x0000 }, /* R1093 */
	{ 0x0000, 0x0000 }, /* R1094 */
	{ 0x0000, 0x0000 }, /* R1095 */
	{ 0x0000, 0x0000 }, /* R1096 */
	{ 0x0000, 0x0000 }, /* R1097 */
	{ 0x0000, 0x0000 }, /* R1098 */
	{ 0x0000, 0x0000 }, /* R1099 */
	{ 0x0000, 0x0000 }, /* R1100 */
	{ 0x0000, 0x0000 }, /* R1101 */
	{ 0x0000, 0x0000 }, /* R1102 */
	{ 0x0000, 0x0000 }, /* R1103 */
	{ 0xFFFF, 0xFFFF }, /* R1104  - AIF1 DRC2 (1) */
	{ 0x1FFF, 0x1FFF }, /* R1105  - AIF1 DRC2 (2) */
	{ 0xFFFF, 0xFFFF }, /* R1106  - AIF1 DRC2 (3) */
	{ 0x07FF, 0x07FF }, /* R1107  - AIF1 DRC2 (4) */
	{ 0x03FF, 0x03FF }, /* R1108  - AIF1 DRC2 (5) */
	{ 0x0000, 0x0000 }, /* R1109 */
	{ 0x0000, 0x0000 }, /* R1110 */
	{ 0x0000, 0x0000 }, /* R1111 */
	{ 0x0000, 0x0000 }, /* R1112 */
	{ 0x0000, 0x0000 }, /* R1113 */
	{ 0x0000, 0x0000 }, /* R1114 */
	{ 0x0000, 0x0000 }, /* R1115 */
	{ 0x0000, 0x0000 }, /* R1116 */
	{ 0x0000, 0x0000 }, /* R1117 */
	{ 0x0000, 0x0000 }, /* R1118 */
	{ 0x0000, 0x0000 }, /* R1119 */
	{ 0x0000, 0x0000 }, /* R1120 */
	{ 0x0000, 0x0000 }, /* R1121 */
	{ 0x0000, 0x0000 }, /* R1122 */
	{ 0x0000, 0x0000 }, /* R1123 */
	{ 0x0000, 0x0000 }, /* R1124 */
	{ 0x0000, 0x0000 }, /* R1125 */
	{ 0x0000, 0x0000 }, /* R1126 */
	{ 0x0000, 0x0000 }, /* R1127 */
	{ 0x0000, 0x0000 }, /* R1128 */
	{ 0x0000, 0x0000 }, /* R1129 */
	{ 0x0000, 0x0000 }, /* R1130 */
	{ 0x0000, 0x0000 }, /* R1131 */
	{ 0x0000, 0x0000 }, /* R1132 */
	{ 0x0000, 0x0000 }, /* R1133 */
	{ 0x0000, 0x0000 }, /* R1134 */
	{ 0x0000, 0x0000 }, /* R1135 */
	{ 0x0000, 0x0000 }, /* R1136 */
	{ 0x0000, 0x0000 }, /* R1137 */
	{ 0x0000, 0x0000 }, /* R1138 */
	{ 0x0000, 0x0000 }, /* R1139 */
	{ 0x0000, 0x0000 }, /* R1140 */
	{ 0x0000, 0x0000 }, /* R1141 */
	{ 0x0000, 0x0000 }, /* R1142 */
	{ 0x0000, 0x0000 }, /* R1143 */
	{ 0x0000, 0x0000 }, /* R1144 */
	{ 0x0000, 0x0000 }, /* R1145 */
	{ 0x0000, 0x0000 }, /* R1146 */
	{ 0x0000, 0x0000 }, /* R1147 */
	{ 0x0000, 0x0000 }, /* R1148 */
	{ 0x0000, 0x0000 }, /* R1149 */
	{ 0x0000, 0x0000 }, /* R1150 */
	{ 0x0000, 0x0000 }, /* R1151 */
	{ 0xFFFF, 0xFFFF }, /* R1152  - AIF1 DAC1 EQ Gains (1) */
	{ 0xFFC0, 0xFFC0 }, /* R1153  - AIF1 DAC1 EQ Gains (2) */
	{ 0xFFFF, 0xFFFF }, /* R1154  - AIF1 DAC1 EQ Band 1 A */
	{ 0xFFFF, 0xFFFF }, /* R1155  - AIF1 DAC1 EQ Band 1 B */
	{ 0xFFFF, 0xFFFF }, /* R1156  - AIF1 DAC1 EQ Band 1 PG */
	{ 0xFFFF, 0xFFFF }, /* R1157  - AIF1 DAC1 EQ Band 2 A */
	{ 0xFFFF, 0xFFFF }, /* R1158  - AIF1 DAC1 EQ Band 2 B */
	{ 0xFFFF, 0xFFFF }, /* R1159  - AIF1 DAC1 EQ Band 2 C */
	{ 0xFFFF, 0xFFFF }, /* R1160  - AIF1 DAC1 EQ Band 2 PG */
	{ 0xFFFF, 0xFFFF }, /* R1161  - AIF1 DAC1 EQ Band 3 A */
	{ 0xFFFF, 0xFFFF }, /* R1162  - AIF1 DAC1 EQ Band 3 B */
	{ 0xFFFF, 0xFFFF }, /* R1163  - AIF1 DAC1 EQ Band 3 C */
	{ 0xFFFF, 0xFFFF }, /* R1164  - AIF1 DAC1 EQ Band 3 PG */
	{ 0xFFFF, 0xFFFF }, /* R1165  - AIF1 DAC1 EQ Band 4 A */
	{ 0xFFFF, 0xFFFF }, /* R1166  - AIF1 DAC1 EQ Band 4 B */
	{ 0xFFFF, 0xFFFF }, /* R1167  - AIF1 DAC1 EQ Band 4 C */
	{ 0xFFFF, 0xFFFF }, /* R1168  - AIF1 DAC1 EQ Band 4 PG */
	{ 0xFFFF, 0xFFFF }, /* R1169  - AIF1 DAC1 EQ Band 5 A */
	{ 0xFFFF, 0xFFFF }, /* R1170  - AIF1 DAC1 EQ Band 5 B */
	{ 0xFFFF, 0xFFFF }, /* R1171  - AIF1 DAC1 EQ Band 5 PG */
	{ 0x0000, 0x0000 }, /* R1172 */
	{ 0x0000, 0x0000 }, /* R1173 */
	{ 0x0000, 0x0000 }, /* R1174 */
	{ 0x0000, 0x0000 }, /* R1175 */
	{ 0x0000, 0x0000 }, /* R1176 */
	{ 0x0000, 0x0000 }, /* R1177 */
	{ 0x0000, 0x0000 }, /* R1178 */
	{ 0x0000, 0x0000 }, /* R1179 */
	{ 0x0000, 0x0000 }, /* R1180 */
	{ 0x0000, 0x0000 }, /* R1181 */
	{ 0x0000, 0x0000 }, /* R1182 */
	{ 0x0000, 0x0000 }, /* R1183 */
	{ 0xFFFF, 0xFFFF }, /* R1184  - AIF1 DAC2 EQ Gains (1) */
	{ 0xFFC0, 0xFFC0 }, /* R1185  - AIF1 DAC2 EQ Gains (2) */
	{ 0xFFFF, 0xFFFF }, /* R1186  - AIF1 DAC2 EQ Band 1 A */
	{ 0xFFFF, 0xFFFF }, /* R1187  - AIF1 DAC2 EQ Band 1 B */
	{ 0xFFFF, 0xFFFF }, /* R1188  - AIF1 DAC2 EQ Band 1 PG */
	{ 0xFFFF, 0xFFFF }, /* R1189  - AIF1 DAC2 EQ Band 2 A */
	{ 0xFFFF, 0xFFFF }, /* R1190  - AIF1 DAC2 EQ Band 2 B */
	{ 0xFFFF, 0xFFFF }, /* R1191  - AIF1 DAC2 EQ Band 2 C */
	{ 0xFFFF, 0xFFFF }, /* R1192  - AIF1 DAC2 EQ Band 2 PG */
	{ 0xFFFF, 0xFFFF }, /* R1193  - AIF1 DAC2 EQ Band 3 A */
	{ 0xFFFF, 0xFFFF }, /* R1194  - AIF1 DAC2 EQ Band 3 B */
	{ 0xFFFF, 0xFFFF }, /* R1195  - AIF1 DAC2 EQ Band 3 C */
	{ 0xFFFF, 0xFFFF }, /* R1196  - AIF1 DAC2 EQ Band 3 PG */
	{ 0xFFFF, 0xFFFF }, /* R1197  - AIF1 DAC2 EQ Band 4 A */
	{ 0xFFFF, 0xFFFF }, /* R1198  - AIF1 DAC2 EQ Band 4 B */
	{ 0xFFFF, 0xFFFF }, /* R1199  - AIF1 DAC2 EQ Band 4 C */
	{ 0xFFFF, 0xFFFF }, /* R1200  - AIF1 DAC2 EQ Band 4 PG */
	{ 0xFFFF, 0xFFFF }, /* R1201  - AIF1 DAC2 EQ Band 5 A */
	{ 0xFFFF, 0xFFFF }, /* R1202  - AIF1 DAC2 EQ Band 5 B */
	{ 0xFFFF, 0xFFFF }, /* R1203  - AIF1 DAC2 EQ Band 5 PG */
	{ 0x0000, 0x0000 }, /* R1204 */
	{ 0x0000, 0x0000 }, /* R1205 */
	{ 0x0000, 0x0000 }, /* R1206 */
	{ 0x0000, 0x0000 }, /* R1207 */
	{ 0x0000, 0x0000 }, /* R1208 */
	{ 0x0000, 0x0000 }, /* R1209 */
	{ 0x0000, 0x0000 }, /* R1210 */
	{ 0x0000, 0x0000 }, /* R1211 */
	{ 0x0000, 0x0000 }, /* R1212 */
	{ 0x0000, 0x0000 }, /* R1213 */
	{ 0x0000, 0x0000 }, /* R1214 */
	{ 0x0000, 0x0000 }, /* R1215 */
	{ 0x0000, 0x0000 }, /* R1216 */
	{ 0x0000, 0x0000 }, /* R1217 */
	{ 0x0000, 0x0000 }, /* R1218 */
	{ 0x0000, 0x0000 }, /* R1219 */
	{ 0x0000, 0x0000 }, /* R1220 */
	{ 0x0000, 0x0000 }, /* R1221 */
	{ 0x0000, 0x0000 }, /* R1222 */
	{ 0x0000, 0x0000 }, /* R1223 */
	{ 0x0000, 0x0000 }, /* R1224 */
	{ 0x0000, 0x0000 }, /* R1225 */
	{ 0x0000, 0x0000 }, /* R1226 */
	{ 0x0000, 0x0000 }, /* R1227 */
	{ 0x0000, 0x0000 }, /* R1228 */
	{ 0x0000, 0x0000 }, /* R1229 */
	{ 0x0000, 0x0000 }, /* R1230 */
	{ 0x0000, 0x0000 }, /* R1231 */
	{ 0x0000, 0x0000 }, /* R1232 */
	{ 0x0000, 0x0000 }, /* R1233 */
	{ 0x0000, 0x0000 }, /* R1234 */
	{ 0x0000, 0x0000 }, /* R1235 */
	{ 0x0000, 0x0000 }, /* R1236 */
	{ 0x0000, 0x0000 }, /* R1237 */
	{ 0x0000, 0x0000 }, /* R1238 */
	{ 0x0000, 0x0000 }, /* R1239 */
	{ 0x0000, 0x0000 }, /* R1240 */
	{ 0x0000, 0x0000 }, /* R1241 */
	{ 0x0000, 0x0000 }, /* R1242 */
	{ 0x0000, 0x0000 }, /* R1243 */
	{ 0x0000, 0x0000 }, /* R1244 */
	{ 0x0000, 0x0000 }, /* R1245 */
	{ 0x0000, 0x0000 }, /* R1246 */
	{ 0x0000, 0x0000 }, /* R1247 */
	{ 0x0000, 0x0000 }, /* R1248 */
	{ 0x0000, 0x0000 }, /* R1249 */
	{ 0x0000, 0x0000 }, /* R1250 */
	{ 0x0000, 0x0000 }, /* R1251 */
	{ 0x0000, 0x0000 }, /* R1252 */
	{ 0x0000, 0x0000 }, /* R1253 */
	{ 0x0000, 0x0000 }, /* R1254 */
	{ 0x0000, 0x0000 }, /* R1255 */
	{ 0x0000, 0x0000 }, /* R1256 */
	{ 0x0000, 0x0000 }, /* R1257 */
	{ 0x0000, 0x0000 }, /* R1258 */
	{ 0x0000, 0x0000 }, /* R1259 */
	{ 0x0000, 0x0000 }, /* R1260 */
	{ 0x0000, 0x0000 }, /* R1261 */
	{ 0x0000, 0x0000 }, /* R1262 */
	{ 0x0000, 0x0000 }, /* R1263 */
	{ 0x0000, 0x0000 }, /* R1264 */
	{ 0x0000, 0x0000 }, /* R1265 */
	{ 0x0000, 0x0000 }, /* R1266 */
	{ 0x0000, 0x0000 }, /* R1267 */
	{ 0x0000, 0x0000 }, /* R1268 */
	{ 0x0000, 0x0000 }, /* R1269 */
	{ 0x0000, 0x0000 }, /* R1270 */
	{ 0x0000, 0x0000 }, /* R1271 */
	{ 0x0000, 0x0000 }, /* R1272 */
	{ 0x0000, 0x0000 }, /* R1273 */
	{ 0x0000, 0x0000 }, /* R1274 */
	{ 0x0000, 0x0000 }, /* R1275 */
	{ 0x0000, 0x0000 }, /* R1276 */
	{ 0x0000, 0x0000 }, /* R1277 */
	{ 0x0000, 0x0000 }, /* R1278 */
	{ 0x0000, 0x0000 }, /* R1279 */
	{ 0x00FF, 0x01FF }, /* R1280  - AIF2 ADC Left Volume */
	{ 0x00FF, 0x01FF }, /* R1281  - AIF2 ADC Right Volume */
	{ 0x00FF, 0x01FF }, /* R1282  - AIF2 DAC Left Volume */
	{ 0x00FF, 0x01FF }, /* R1283  - AIF2 DAC Right Volume */
	{ 0x0000, 0x0000 }, /* R1284 */
	{ 0x0000, 0x0000 }, /* R1285 */
	{ 0x0000, 0x0000 }, /* R1286 */
	{ 0x0000, 0x0000 }, /* R1287 */
	{ 0x0000, 0x0000 }, /* R1288 */
	{ 0x0000, 0x0000 }, /* R1289 */
	{ 0x0000, 0x0000 }, /* R1290 */
	{ 0x0000, 0x0000 }, /* R1291 */
	{ 0x0000, 0x0000 }, /* R1292 */
	{ 0x0000, 0x0000 }, /* R1293 */
	{ 0x0000, 0x0000 }, /* R1294 */
	{ 0x0000, 0x0000 }, /* R1295 */
	{ 0xF800, 0xF800 }, /* R1296  - AIF2 ADC Filters */
	{ 0x0000, 0x0000 }, /* R1297 */
	{ 0x0000, 0x0000 }, /* R1298 */
	{ 0x0000, 0x0000 }, /* R1299 */
	{ 0x0000, 0x0000 }, /* R1300 */
	{ 0x0000, 0x0000 }, /* R1301 */
	{ 0x0000, 0x0000 }, /* R1302 */
	{ 0x0000, 0x0000 }, /* R1303 */
	{ 0x0000, 0x0000 }, /* R1304 */
	{ 0x0000, 0x0000 }, /* R1305 */
	{ 0x0000, 0x0000 }, /* R1306 */
	{ 0x0000, 0x0000 }, /* R1307 */
	{ 0x0000, 0x0000 }, /* R1308 */
	{ 0x0000, 0x0000 }, /* R1309 */
	{ 0x0000, 0x0000 }, /* R1310 */
	{ 0x0000, 0x0000 }, /* R1311 */
	{ 0x02B6, 0x02B6 }, /* R1312  - AIF2 DAC Filters (1) */
	{ 0x3F00, 0x3F00 }, /* R1313  - AIF2 DAC Filters (2) */
	{ 0x0000, 0x0000 }, /* R1314 */
	{ 0x0000, 0x0000 }, /* R1315 */
	{ 0x0000, 0x0000 }, /* R1316 */
	{ 0x0000, 0x0000 }, /* R1317 */
	{ 0x0000, 0x0000 }, /* R1318 */
	{ 0x0000, 0x0000 }, /* R1319 */
	{ 0x0000, 0x0000 }, /* R1320 */
	{ 0x0000, 0x0000 }, /* R1321 */
	{ 0x0000, 0x0000 }, /* R1322 */
	{ 0x0000, 0x0000 }, /* R1323 */
	{ 0x0000, 0x0000 }, /* R1324 */
	{ 0x0000, 0x0000 }, /* R1325 */
	{ 0x0000, 0x0000 }, /* R1326 */
	{ 0x0000, 0x0000 }, /* R1327 */
	{ 0x0000, 0x0000 }, /* R1328 */
	{ 0x0000, 0x0000 }, /* R1329 */
	{ 0x0000, 0x0000 }, /* R1330 */
	{ 0x0000, 0x0000 }, /* R1331 */
	{ 0x0000, 0x0000 }, /* R1332 */
	{ 0x0000, 0x0000 }, /* R1333 */
	{ 0x0000, 0x0000 }, /* R1334 */
	{ 0x0000, 0x0000 }, /* R1335 */
	{ 0x0000, 0x0000 }, /* R1336 */
	{ 0x0000, 0x0000 }, /* R1337 */
	{ 0x0000, 0x0000 }, /* R1338 */
	{ 0x0000, 0x0000 }, /* R1339 */
	{ 0x0000, 0x0000 }, /* R1340 */
	{ 0x0000, 0x0000 }, /* R1341 */
	{ 0x0000, 0x0000 }, /* R1342 */
	{ 0x0000, 0x0000 }, /* R1343 */
	{ 0xFFFF, 0xFFFF }, /* R1344  - AIF2 DRC (1) */
	{ 0x1FFF, 0x1FFF }, /* R1345  - AIF2 DRC (2) */
	{ 0xFFFF, 0xFFFF }, /* R1346  - AIF2 DRC (3) */
	{ 0x07FF, 0x07FF }, /* R1347  - AIF2 DRC (4) */
	{ 0x03FF, 0x03FF }, /* R1348  - AIF2 DRC (5) */
	{ 0x0000, 0x0000 }, /* R1349 */
	{ 0x0000, 0x0000 }, /* R1350 */
	{ 0x0000, 0x0000 }, /* R1351 */
	{ 0x0000, 0x0000 }, /* R1352 */
	{ 0x0000, 0x0000 }, /* R1353 */
	{ 0x0000, 0x0000 }, /* R1354 */
	{ 0x0000, 0x0000 }, /* R1355 */
	{ 0x0000, 0x0000 }, /* R1356 */
	{ 0x0000, 0x0000 }, /* R1357 */
	{ 0x0000, 0x0000 }, /* R1358 */
	{ 0x0000, 0x0000 }, /* R1359 */
	{ 0x0000, 0x0000 }, /* R1360 */
	{ 0x0000, 0x0000 }, /* R1361 */
	{ 0x0000, 0x0000 }, /* R1362 */
	{ 0x0000, 0x0000 }, /* R1363 */
	{ 0x0000, 0x0000 }, /* R1364 */
	{ 0x0000, 0x0000 }, /* R1365 */
	{ 0x0000, 0x0000 }, /* R1366 */
	{ 0x0000, 0x0000 }, /* R1367 */
	{ 0x0000, 0x0000 }, /* R1368 */
	{ 0x0000, 0x0000 }, /* R1369 */
	{ 0x0000, 0x0000 }, /* R1370 */
	{ 0x0000, 0x0000 }, /* R1371 */
	{ 0x0000, 0x0000 }, /* R1372 */
	{ 0x0000, 0x0000 }, /* R1373 */
	{ 0x0000, 0x0000 }, /* R1374 */
	{ 0x0000, 0x0000 }, /* R1375 */
	{ 0x0000, 0x0000 }, /* R1376 */
	{ 0x0000, 0x0000 }, /* R1377 */
	{ 0x0000, 0x0000 }, /* R1378 */
	{ 0x0000, 0x0000 }, /* R1379 */
	{ 0x0000, 0x0000 }, /* R1380 */
	{ 0x0000, 0x0000 }, /* R1381 */
	{ 0x0000, 0x0000 }, /* R1382 */
	{ 0x0000, 0x0000 }, /* R1383 */
	{ 0x0000, 0x0000 }, /* R1384 */
	{ 0x0000, 0x0000 }, /* R1385 */
	{ 0x0000, 0x0000 }, /* R1386 */
	{ 0x0000, 0x0000 }, /* R1387 */
	{ 0x0000, 0x0000 }, /* R1388 */
	{ 0x0000, 0x0000 }, /* R1389 */
	{ 0x0000, 0x0000 }, /* R1390 */
	{ 0x0000, 0x0000 }, /* R1391 */
	{ 0x0000, 0x0000 }, /* R1392 */
	{ 0x0000, 0x0000 }, /* R1393 */
	{ 0x0000, 0x0000 }, /* R1394 */
	{ 0x0000, 0x0000 }, /* R1395 */
	{ 0x0000, 0x0000 }, /* R1396 */
	{ 0x0000, 0x0000 }, /* R1397 */
	{ 0x0000, 0x0000 }, /* R1398 */
	{ 0x0000, 0x0000 }, /* R1399 */
	{ 0x0000, 0x0000 }, /* R1400 */
	{ 0x0000, 0x0000 }, /* R1401 */
	{ 0x0000, 0x0000 }, /* R1402 */
	{ 0x0000, 0x0000 }, /* R1403 */
	{ 0x0000, 0x0000 }, /* R1404 */
	{ 0x0000, 0x0000 }, /* R1405 */
	{ 0x0000, 0x0000 }, /* R1406 */
	{ 0x0000, 0x0000 }, /* R1407 */
	{ 0xFFFF, 0xFFFF }, /* R1408  - AIF2 EQ Gains (1) */
	{ 0xFFC0, 0xFFC0 }, /* R1409  - AIF2 EQ Gains (2) */
	{ 0xFFFF, 0xFFFF }, /* R1410  - AIF2 EQ Band 1 A */
	{ 0xFFFF, 0xFFFF }, /* R1411  - AIF2 EQ Band 1 B */
	{ 0xFFFF, 0xFFFF }, /* R1412  - AIF2 EQ Band 1 PG */
	{ 0xFFFF, 0xFFFF }, /* R1413  - AIF2 EQ Band 2 A */
	{ 0xFFFF, 0xFFFF }, /* R1414  - AIF2 EQ Band 2 B */
	{ 0xFFFF, 0xFFFF }, /* R1415  - AIF2 EQ Band 2 C */
	{ 0xFFFF, 0xFFFF }, /* R1416  - AIF2 EQ Band 2 PG */
	{ 0xFFFF, 0xFFFF }, /* R1417  - AIF2 EQ Band 3 A */
	{ 0xFFFF, 0xFFFF }, /* R1418  - AIF2 EQ Band 3 B */
	{ 0xFFFF, 0xFFFF }, /* R1419  - AIF2 EQ Band 3 C */
	{ 0xFFFF, 0xFFFF }, /* R1420  - AIF2 EQ Band 3 PG */
	{ 0xFFFF, 0xFFFF }, /* R1421  - AIF2 EQ Band 4 A */
	{ 0xFFFF, 0xFFFF }, /* R1422  - AIF2 EQ Band 4 B */
	{ 0xFFFF, 0xFFFF }, /* R1423  - AIF2 EQ Band 4 C */
	{ 0xFFFF, 0xFFFF }, /* R1424  - AIF2 EQ Band 4 PG */
	{ 0xFFFF, 0xFFFF }, /* R1425  - AIF2 EQ Band 5 A */
	{ 0xFFFF, 0xFFFF }, /* R1426  - AIF2 EQ Band 5 B */
	{ 0xFFFF, 0xFFFF }, /* R1427  - AIF2 EQ Band 5 PG */
	{ 0x0000, 0x0000 }, /* R1428 */
	{ 0x0000, 0x0000 }, /* R1429 */
	{ 0x0000, 0x0000 }, /* R1430 */
	{ 0x0000, 0x0000 }, /* R1431 */
	{ 0x0000, 0x0000 }, /* R1432 */
	{ 0x0000, 0x0000 }, /* R1433 */
	{ 0x0000, 0x0000 }, /* R1434 */
	{ 0x0000, 0x0000 }, /* R1435 */
	{ 0x0000, 0x0000 }, /* R1436 */
	{ 0x0000, 0x0000 }, /* R1437 */
	{ 0x0000, 0x0000 }, /* R1438 */
	{ 0x0000, 0x0000 }, /* R1439 */
	{ 0x0000, 0x0000 }, /* R1440 */
	{ 0x0000, 0x0000 }, /* R1441 */
	{ 0x0000, 0x0000 }, /* R1442 */
	{ 0x0000, 0x0000 }, /* R1443 */
	{ 0x0000, 0x0000 }, /* R1444 */
	{ 0x0000, 0x0000 }, /* R1445 */
	{ 0x0000, 0x0000 }, /* R1446 */
	{ 0x0000, 0x0000 }, /* R1447 */
	{ 0x0000, 0x0000 }, /* R1448 */
	{ 0x0000, 0x0000 }, /* R1449 */
	{ 0x0000, 0x0000 }, /* R1450 */
	{ 0x0000, 0x0000 }, /* R1451 */
	{ 0x0000, 0x0000 }, /* R1452 */
	{ 0x0000, 0x0000 }, /* R1453 */
	{ 0x0000, 0x0000 }, /* R1454 */
	{ 0x0000, 0x0000 }, /* R1455 */
	{ 0x0000, 0x0000 }, /* R1456 */
	{ 0x0000, 0x0000 }, /* R1457 */
	{ 0x0000, 0x0000 }, /* R1458 */
	{ 0x0000, 0x0000 }, /* R1459 */
	{ 0x0000, 0x0000 }, /* R1460 */
	{ 0x0000, 0x0000 }, /* R1461 */
	{ 0x0000, 0x0000 }, /* R1462 */
	{ 0x0000, 0x0000 }, /* R1463 */
	{ 0x0000, 0x0000 }, /* R1464 */
	{ 0x0000, 0x0000 }, /* R1465 */
	{ 0x0000, 0x0000 }, /* R1466 */
	{ 0x0000, 0x0000 }, /* R1467 */
	{ 0x0000, 0x0000 }, /* R1468 */
	{ 0x0000, 0x0000 }, /* R1469 */
	{ 0x0000, 0x0000 }, /* R1470 */
	{ 0x0000, 0x0000 }, /* R1471 */
	{ 0x0000, 0x0000 }, /* R1472 */
	{ 0x0000, 0x0000 }, /* R1473 */
	{ 0x0000, 0x0000 }, /* R1474 */
	{ 0x0000, 0x0000 }, /* R1475 */
	{ 0x0000, 0x0000 }, /* R1476 */
	{ 0x0000, 0x0000 }, /* R1477 */
	{ 0x0000, 0x0000 }, /* R1478 */
	{ 0x0000, 0x0000 }, /* R1479 */
	{ 0x0000, 0x0000 }, /* R1480 */
	{ 0x0000, 0x0000 }, /* R1481 */
	{ 0x0000, 0x0000 }, /* R1482 */
	{ 0x0000, 0x0000 }, /* R1483 */
	{ 0x0000, 0x0000 }, /* R1484 */
	{ 0x0000, 0x0000 }, /* R1485 */
	{ 0x0000, 0x0000 }, /* R1486 */
	{ 0x0000, 0x0000 }, /* R1487 */
	{ 0x0000, 0x0000 }, /* R1488 */
	{ 0x0000, 0x0000 }, /* R1489 */
	{ 0x0000, 0x0000 }, /* R1490 */
	{ 0x0000, 0x0000 }, /* R1491 */
	{ 0x0000, 0x0000 }, /* R1492 */
	{ 0x0000, 0x0000 }, /* R1493 */
	{ 0x0000, 0x0000 }, /* R1494 */
	{ 0x0000, 0x0000 }, /* R1495 */
	{ 0x0000, 0x0000 }, /* R1496 */
	{ 0x0000, 0x0000 }, /* R1497 */
	{ 0x0000, 0x0000 }, /* R1498 */
	{ 0x0000, 0x0000 }, /* R1499 */
	{ 0x0000, 0x0000 }, /* R1500 */
	{ 0x0000, 0x0000 }, /* R1501 */
	{ 0x0000, 0x0000 }, /* R1502 */
	{ 0x0000, 0x0000 }, /* R1503 */
	{ 0x0000, 0x0000 }, /* R1504 */
	{ 0x0000, 0x0000 }, /* R1505 */
	{ 0x0000, 0x0000 }, /* R1506 */
	{ 0x0000, 0x0000 }, /* R1507 */
	{ 0x0000, 0x0000 }, /* R1508 */
	{ 0x0000, 0x0000 }, /* R1509 */
	{ 0x0000, 0x0000 }, /* R1510 */
	{ 0x0000, 0x0000 }, /* R1511 */
	{ 0x0000, 0x0000 }, /* R1512 */
	{ 0x0000, 0x0000 }, /* R1513 */
	{ 0x0000, 0x0000 }, /* R1514 */
	{ 0x0000, 0x0000 }, /* R1515 */
	{ 0x0000, 0x0000 }, /* R1516 */
	{ 0x0000, 0x0000 }, /* R1517 */
	{ 0x0000, 0x0000 }, /* R1518 */
	{ 0x0000, 0x0000 }, /* R1519 */
	{ 0x0000, 0x0000 }, /* R1520 */
	{ 0x0000, 0x0000 }, /* R1521 */
	{ 0x0000, 0x0000 }, /* R1522 */
	{ 0x0000, 0x0000 }, /* R1523 */
	{ 0x0000, 0x0000 }, /* R1524 */
	{ 0x0000, 0x0000 }, /* R1525 */
	{ 0x0000, 0x0000 }, /* R1526 */
	{ 0x0000, 0x0000 }, /* R1527 */
	{ 0x0000, 0x0000 }, /* R1528 */
	{ 0x0000, 0x0000 }, /* R1529 */
	{ 0x0000, 0x0000 }, /* R1530 */
	{ 0x0000, 0x0000 }, /* R1531 */
	{ 0x0000, 0x0000 }, /* R1532 */
	{ 0x0000, 0x0000 }, /* R1533 */
	{ 0x0000, 0x0000 }, /* R1534 */
	{ 0x0000, 0x0000 }, /* R1535 */
	{ 0x01EF, 0x01EF }, /* R1536  - DAC1 Mixer Volumes */
	{ 0x0037, 0x0037 }, /* R1537  - DAC1 Left Mixer Routing */
	{ 0x0037, 0x0037 }, /* R1538  - DAC1 Right Mixer Routing */
	{ 0x01EF, 0x01EF }, /* R1539  - DAC2 Mixer Volumes */
	{ 0x0037, 0x0037 }, /* R1540  - DAC2 Left Mixer Routing */
	{ 0x0037, 0x0037 }, /* R1541  - DAC2 Right Mixer Routing */
	{ 0x0003, 0x0003 }, /* R1542  - AIF1 ADC1 Left Mixer Routing */
	{ 0x0003, 0x0003 }, /* R1543  - AIF1 ADC1 Right Mixer Routing */
	{ 0x0003, 0x0003 }, /* R1544  - AIF1 ADC2 Left Mixer Routing */
	{ 0x0003, 0x0003 }, /* R1545  - AIF1 ADC2 Right mixer Routing */
	{ 0x0000, 0x0000 }, /* R1546 */
	{ 0x0000, 0x0000 }, /* R1547 */
	{ 0x0000, 0x0000 }, /* R1548 */
	{ 0x0000, 0x0000 }, /* R1549 */
	{ 0x0000, 0x0000 }, /* R1550 */
	{ 0x0000, 0x0000 }, /* R1551 */
	{ 0x02FF, 0x03FF }, /* R1552  - DAC1 Left Volume */
	{ 0x02FF, 0x03FF }, /* R1553  - DAC1 Right Volume */
	{ 0x02FF, 0x03FF }, /* R1554  - DAC2 Left Volume */
	{ 0x02FF, 0x03FF }, /* R1555  - DAC2 Right Volume */
	{ 0x0003, 0x0003 }, /* R1556  - DAC Softmute */
	{ 0x0000, 0x0000 }, /* R1557 */
	{ 0x0000, 0x0000 }, /* R1558 */
	{ 0x0000, 0x0000 }, /* R1559 */
	{ 0x0000, 0x0000 }, /* R1560 */
	{ 0x0000, 0x0000 }, /* R1561 */
	{ 0x0000, 0x0000 }, /* R1562 */
	{ 0x0000, 0x0000 }, /* R1563 */
	{ 0x0000, 0x0000 }, /* R1564 */
	{ 0x0000, 0x0000 }, /* R1565 */
	{ 0x0000, 0x0000 }, /* R1566 */
	{ 0x0000, 0x0000 }, /* R1567 */
	{ 0x0003, 0x0003 }, /* R1568  - Oversampling */
	{ 0x03C3, 0x03C3 }, /* R1569  - Sidetone */
};

static int wm8994_readable(unsigned int reg)
{
	switch (reg) {
	case WM8994_GPIO_1:
	case WM8994_GPIO_2:
	case WM8994_GPIO_3:
	case WM8994_GPIO_4:
	case WM8994_GPIO_5:
	case WM8994_GPIO_6:
	case WM8994_GPIO_7:
	case WM8994_GPIO_8:
	case WM8994_GPIO_9:
	case WM8994_GPIO_10:
	case WM8994_GPIO_11:
	case WM8994_INTERRUPT_STATUS_1:
	case WM8994_INTERRUPT_STATUS_2:
	case WM8994_INTERRUPT_RAW_STATUS_2:
		return 1;
	default:
		break;
	}

	if (reg >= ARRAY_SIZE(access_masks))
		return 0;
	return access_masks[reg].readable != 0;
}

static int wm8994_volatile(unsigned int reg)
{
	if (reg >= WM8994_REG_CACHE_SIZE)
		return 1;

	switch (reg) {
	case WM8994_SOFTWARE_RESET:
	case WM8994_CHIP_REVISION:
	case WM8994_DC_SERVO_1:
	case WM8994_DC_SERVO_READBACK:
	case WM8994_RATE_STATUS:
	case WM8994_LDO_1:
	case WM8994_LDO_2:
		return 1;
	default:
		return 0;
	}
}

static int wm8994_write(struct snd_soc_codec *codec, unsigned int reg,
	unsigned int value)
{
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);

	BUG_ON(reg > WM8994_MAX_REGISTER);

	if (!wm8994_volatile(reg))
		wm8994->reg_cache[reg] = value;

	return wm8994_reg_write(codec->control_data, reg, value);
}

static unsigned int wm8994_read(struct snd_soc_codec *codec,
				unsigned int reg)
{
	u16 *reg_cache = codec->reg_cache;

	BUG_ON(reg > WM8994_MAX_REGISTER);

	if (wm8994_volatile(reg))
		return wm8994_reg_read(codec->control_data, reg);
	else
		return reg_cache[reg];
}

static int configure_aif_clock(struct snd_soc_codec *codec, int aif)
{
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	int rate;
	int reg1 = 0;
	int offset;

	if (aif)
		offset = 4;
	else
		offset = 0;

	switch (wm8994->sysclk[aif]) {
	case WM8994_SYSCLK_MCLK1:
		rate = wm8994->mclk[0];
		break;

	case WM8994_SYSCLK_MCLK2:
		reg1 |= 0x8;
		rate = wm8994->mclk[1];
		break;

	case WM8994_SYSCLK_FLL1:
		reg1 |= 0x10;
		rate = wm8994->fll[0].out;
		break;

	case WM8994_SYSCLK_FLL2:
		reg1 |= 0x18;
		rate = wm8994->fll[1].out;
		break;

	default:
		return -EINVAL;
	}

	if (rate >= 13500000) {
		rate /= 2;
		reg1 |= WM8994_AIF1CLK_DIV;

		dev_dbg(codec->dev, "Dividing AIF%d clock to %dHz\n",
			aif + 1, rate);
	}

	if (rate && rate < 3000000)
		dev_warn(codec->dev, "AIF%dCLK is %dHz, should be >=3MHz for optimal performance\n",
			 aif + 1, rate);

	wm8994->aifclk[aif] = rate;

	snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1 + offset,
			    WM8994_AIF1CLK_SRC_MASK | WM8994_AIF1CLK_DIV,
			    reg1);

	return 0;
}

static int configure_clock(struct snd_soc_codec *codec)
{
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	int old, new;

	/* Bring up the AIF clocks first */
	configure_aif_clock(codec, 0);
	configure_aif_clock(codec, 1);

	/* Then switch CLK_SYS over to the higher of them; a change
	 * can only happen as a result of a clocking change which can
	 * only be made outside of DAPM so we can safely redo the
	 * clocking.
	 */

	/* If they're equal it doesn't matter which is used */
	if (wm8994->aifclk[0] == wm8994->aifclk[1])
		return 0;

	if (wm8994->aifclk[0] < wm8994->aifclk[1])
		new = WM8994_SYSCLK_SRC;
	else
		new = 0;

	old = snd_soc_read(codec, WM8994_CLOCKING_1) & WM8994_SYSCLK_SRC;

	/* If there's no change then we're done. */
	if (old == new)
		return 0;

	snd_soc_update_bits(codec, WM8994_CLOCKING_1, WM8994_SYSCLK_SRC, new);

	snd_soc_dapm_sync(codec);

	return 0;
}

static int check_clk_sys(struct snd_soc_dapm_widget *source,
			 struct snd_soc_dapm_widget *sink)
{
	int reg = snd_soc_read(source->codec, WM8994_CLOCKING_1);
	const char *clk;

	/* Check what we're currently using for CLK_SYS */
	if (reg & WM8994_SYSCLK_SRC)
		clk = "AIF2CLK";
	else
		clk = "AIF1CLK";

	return strcmp(source->name, clk) == 0;
}

static const char *sidetone_hpf_text[] = {
	"2.7kHz", "1.35kHz", "675Hz", "370Hz", "180Hz", "90Hz", "45Hz"
};

static const struct soc_enum sidetone_hpf =
	SOC_ENUM_SINGLE(WM8994_SIDETONE, 7, 7, sidetone_hpf_text);

static const DECLARE_TLV_DB_SCALE(aif_tlv, 0, 600, 0);
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(wm8994_3d_tlv, -1600, 183, 0);
static const DECLARE_TLV_DB_SCALE(eq_tlv, -1200, 100, 0);

#define WM8994_DRC_SWITCH(xname, reg, shift) \
{	.iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
	.info = snd_soc_info_volsw, .get = snd_soc_get_volsw,\
	.put = wm8994_put_drc_sw, \
	.private_value =  SOC_SINGLE_VALUE(reg, shift, 1, 0) }

static int wm8994_put_drc_sw(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);
	int mask, ret;

	/* Can't enable both ADC and DAC paths simultaneously */
	if (mc->shift == WM8994_AIF1DAC1_DRC_ENA_SHIFT)
		mask = WM8994_AIF1ADC1L_DRC_ENA_MASK |
			WM8994_AIF1ADC1R_DRC_ENA_MASK;
	else
		mask = WM8994_AIF1DAC1_DRC_ENA_MASK;

	ret = snd_soc_read(codec, mc->reg);
	if (ret < 0)
		return ret;
	if (ret & mask)
		return -EINVAL;

	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);
	struct wm8994_pdata *pdata = wm8994->pdata;
	int base = wm8994_drc_base[drc];
	int cfg = wm8994->drc_cfg[drc];
	int save, i;

	/* Save any enables; the configuration should clear them. */
	save = snd_soc_read(codec, base);
	save &= WM8994_AIF1DAC1_DRC_ENA | WM8994_AIF1ADC1L_DRC_ENA |
		WM8994_AIF1ADC1R_DRC_ENA;

	for (i = 0; i < WM8994_DRC_REGS; i++)
		snd_soc_update_bits(codec, base + i, 0xffff,
				    pdata->drc_cfgs[cfg].regs[i]);

	snd_soc_update_bits(codec, base, WM8994_AIF1DAC1_DRC_ENA |
			     WM8994_AIF1ADC1L_DRC_ENA |
			     WM8994_AIF1ADC1R_DRC_ENA, save);
}

/* Icky as hell but saves code duplication */
static int wm8994_get_drc(const char *name)
{
	if (strcmp(name, "AIF1DRC1 Mode") == 0)
		return 0;
	if (strcmp(name, "AIF1DRC2 Mode") == 0)
		return 1;
	if (strcmp(name, "AIF2DRC Mode") == 0)
		return 2;
	return -EINVAL;
}

static int wm8994_put_drc_enum(struct snd_kcontrol *kcontrol,
			       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_pdata *pdata = wm8994->pdata;
	int drc = wm8994_get_drc(kcontrol->id.name);
	int value = ucontrol->value.integer.value[0];

	if (drc < 0)
		return drc;

	if (value >= pdata->num_drc_cfgs)
		return -EINVAL;

	wm8994->drc_cfg[drc] = value;

	wm8994_set_drc(codec, drc);

	return 0;
}

static int wm8994_get_drc_enum(struct snd_kcontrol *kcontrol,
			       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);
	int drc = wm8994_get_drc(kcontrol->id.name);

	ucontrol->value.enumerated.item[0] = wm8994->drc_cfg[drc];

	return 0;
}

static void wm8994_set_retune_mobile(struct snd_soc_codec *codec, int block)
{
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	struct wm8994_pdata *pdata = wm8994->pdata;
	int base = wm8994_retune_mobile_base[block];
	int iface, best, best_val, save, i, cfg;

	if (!pdata || !wm8994->num_retune_mobile_texts)
		return;

	switch (block) {
	case 0:
	case 1:
		iface = 0;
		break;
	case 2:
		iface = 1;
		break;
	default:
		return;
	}

	/* Find the version of the currently selected configuration
	 * with the nearest sample rate. */
	cfg = wm8994->retune_mobile_cfg[block];
	best = 0;
	best_val = INT_MAX;
	for (i = 0; i < pdata->num_retune_mobile_cfgs; i++) {
		if (strcmp(pdata->retune_mobile_cfgs[i].name,
			   wm8994->retune_mobile_texts[cfg]) == 0 &&
		    abs(pdata->retune_mobile_cfgs[i].rate
			- wm8994->dac_rates[iface]) < best_val) {
			best = i;
			best_val = abs(pdata->retune_mobile_cfgs[i].rate
				       - wm8994->dac_rates[iface]);
		}
	}

	dev_dbg(codec->dev, "ReTune Mobile %d %s/%dHz for %dHz sample rate\n",
		block,
		pdata->retune_mobile_cfgs[best].name,
		pdata->retune_mobile_cfgs[best].rate,
		wm8994->dac_rates[iface]);

	/* The EQ will be disabled while reconfiguring it, remember the
	 * current configuration. 
	 */
	save = snd_soc_read(codec, base);
	save &= WM8994_AIF1DAC1_EQ_ENA;

	for (i = 0; i < WM8994_EQ_REGS; i++)
		snd_soc_update_bits(codec, base + i, 0xffff,
				pdata->retune_mobile_cfgs[best].regs[i]);

	snd_soc_update_bits(codec, base, WM8994_AIF1DAC1_EQ_ENA, save);
}

/* Icky as hell but saves code duplication */
static int wm8994_get_retune_mobile_block(const char *name)
{
	if (strcmp(name, "AIF1.1 EQ Mode") == 0)
		return 0;
	if (strcmp(name, "AIF1.2 EQ Mode") == 0)
		return 1;
	if (strcmp(name, "AIF2 EQ Mode") == 0)
		return 2;
	return -EINVAL;
}

static int wm8994_put_retune_mobile_enum(struct snd_kcontrol *kcontrol,
					 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_pdata *pdata = wm8994->pdata;
	int block = wm8994_get_retune_mobile_block(kcontrol->id.name);
	int value = ucontrol->value.integer.value[0];

	if (block < 0)
		return block;

	if (value >= pdata->num_retune_mobile_cfgs)
		return -EINVAL;

	wm8994->retune_mobile_cfg[block] = value;

	wm8994_set_retune_mobile(codec, block);

	return 0;
}

static int wm8994_get_retune_mobile_enum(struct snd_kcontrol *kcontrol,
					 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);
	int block = wm8994_get_retune_mobile_block(kcontrol->id.name);

	ucontrol->value.enumerated.item[0] = wm8994->retune_mobile_cfg[block];

	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,
		 1, 119, 0, digital_tlv),
SOC_DOUBLE_R_TLV("AIF1ADC2 Volume", WM8994_AIF1_ADC2_LEFT_VOLUME,
		 WM8994_AIF1_ADC2_RIGHT_VOLUME,
		 1, 119, 0, digital_tlv),
SOC_DOUBLE_R_TLV("AIF2ADC Volume", WM8994_AIF2_ADC_LEFT_VOLUME,
		 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,
		 WM8994_AIF1_DAC2_RIGHT_VOLUME, 1, 96, 0, digital_tlv),
SOC_DOUBLE_R_TLV("AIF2DAC Volume", WM8994_AIF2_DAC_LEFT_VOLUME,
		 WM8994_AIF2_DAC_RIGHT_VOLUME, 1, 96, 0, digital_tlv),

SOC_SINGLE_TLV("AIF1 Boost Volume", WM8994_AIF1_CONTROL_2, 10, 3, 0, aif_tlv),
SOC_SINGLE_TLV("AIF2 Boost Volume", WM8994_AIF2_CONTROL_2, 10, 3, 0, aif_tlv),

SOC_SINGLE("AIF1DAC1 EQ Switch", WM8994_AIF1_DAC1_EQ_GAINS_1, 0, 1, 0),
SOC_SINGLE("AIF1DAC2 EQ Switch", WM8994_AIF1_DAC2_EQ_GAINS_1, 0, 1, 0),
SOC_SINGLE("AIF2 EQ Switch", WM8994_AIF2_EQ_GAINS_1, 0, 1, 0),

WM8994_DRC_SWITCH("AIF1DAC1 DRC Switch", WM8994_AIF1_DRC1_1, 2),
WM8994_DRC_SWITCH("AIF1ADC1L DRC Switch", WM8994_AIF1_DRC1_1, 1),
WM8994_DRC_SWITCH("AIF1ADC1R DRC Switch", WM8994_AIF1_DRC1_1, 0),

WM8994_DRC_SWITCH("AIF1DAC2 DRC Switch", WM8994_AIF1_DRC2_1, 2),
WM8994_DRC_SWITCH("AIF1ADC2L DRC Switch", WM8994_AIF1_DRC2_1, 1),
WM8994_DRC_SWITCH("AIF1ADC2R DRC Switch", WM8994_AIF1_DRC2_1, 0),

WM8994_DRC_SWITCH("AIF2DAC DRC Switch", WM8994_AIF2_DRC_1, 2),
WM8994_DRC_SWITCH("AIF2ADCL DRC Switch", WM8994_AIF2_DRC_1, 1),
WM8994_DRC_SWITCH("AIF2ADCR DRC Switch", WM8994_AIF2_DRC_1, 0),

SOC_SINGLE_TLV("DAC1 Right Sidetone Volume", WM8994_DAC1_MIXER_VOLUMES,
	       5, 12, 0, st_tlv),
SOC_SINGLE_TLV("DAC1 Left Sidetone Volume", WM8994_DAC1_MIXER_VOLUMES,
	       0, 12, 0, st_tlv),
SOC_SINGLE_TLV("DAC2 Right Sidetone Volume", WM8994_DAC2_MIXER_VOLUMES,
	       5, 12, 0, st_tlv),
SOC_SINGLE_TLV("DAC2 Left Sidetone Volume", WM8994_DAC2_MIXER_VOLUMES,
	       0, 12, 0, st_tlv),
SOC_ENUM("Sidetone HPF Mux", sidetone_hpf),
SOC_SINGLE("Sidetone HPF Switch", WM8994_SIDETONE, 6, 1, 0),

SOC_DOUBLE_R_TLV("DAC1 Volume", WM8994_DAC1_LEFT_VOLUME,
		 WM8994_DAC1_RIGHT_VOLUME, 1, 96, 0, digital_tlv),
SOC_DOUBLE_R("DAC1 Switch", WM8994_DAC1_LEFT_VOLUME,
	     WM8994_DAC1_RIGHT_VOLUME, 9, 1, 1),

SOC_DOUBLE_R_TLV("DAC2 Volume", WM8994_DAC2_LEFT_VOLUME,
		 WM8994_DAC2_RIGHT_VOLUME, 1, 96, 0, digital_tlv),
SOC_DOUBLE_R("DAC2 Switch", WM8994_DAC2_LEFT_VOLUME,
	     WM8994_DAC2_RIGHT_VOLUME, 9, 1, 1),

SOC_SINGLE_TLV("SPKL DAC2 Volume", WM8994_SPKMIXL_ATTENUATION,
	       6, 1, 1, wm_hubs_spkmix_tlv),
SOC_SINGLE_TLV("SPKL DAC1 Volume", WM8994_SPKMIXL_ATTENUATION,
	       2, 1, 1, wm_hubs_spkmix_tlv),

SOC_SINGLE_TLV("SPKR DAC2 Volume", WM8994_SPKMIXR_ATTENUATION,
	       6, 1, 1, wm_hubs_spkmix_tlv),
SOC_SINGLE_TLV("SPKR DAC1 Volume", WM8994_SPKMIXR_ATTENUATION,
	       2, 1, 1, wm_hubs_spkmix_tlv),

SOC_SINGLE_TLV("AIF1DAC1 3D Stereo Volume", WM8994_AIF1_DAC1_FILTERS_2,
	       10, 15, 0, wm8994_3d_tlv),
SOC_SINGLE("AIF1DAC1 3D Stereo Switch", WM8994_AIF1_DAC2_FILTERS_2,
	   8, 1, 0),
SOC_SINGLE_TLV("AIF1DAC2 3D Stereo Volume", WM8994_AIF1_DAC2_FILTERS_2,
	       10, 15, 0, wm8994_3d_tlv),
SOC_SINGLE("AIF1DAC2 3D Stereo Switch", WM8994_AIF1_DAC2_FILTERS_2,
	   8, 1, 0),
SOC_SINGLE_TLV("AIF2DAC 3D Stereo Volume", WM8994_AIF1_DAC1_FILTERS_2,
	       10, 15, 0, wm8994_3d_tlv),
SOC_SINGLE("AIF2DAC 3D Stereo Switch", WM8994_AIF1_DAC2_FILTERS_2,
	   8, 1, 0),
};

static const struct snd_kcontrol_new wm8994_eq_controls[] = {
SOC_SINGLE_TLV("AIF1DAC1 EQ1 Volume", WM8994_AIF1_DAC1_EQ_GAINS_1, 11, 31, 0,
	       eq_tlv),
SOC_SINGLE_TLV("AIF1DAC1 EQ2 Volume", WM8994_AIF1_DAC1_EQ_GAINS_1, 6, 31, 0,
	       eq_tlv),
SOC_SINGLE_TLV("AIF1DAC1 EQ3 Volume", WM8994_AIF1_DAC1_EQ_GAINS_1, 1, 31, 0,
	       eq_tlv),
SOC_SINGLE_TLV("AIF1DAC1 EQ4 Volume", WM8994_AIF1_DAC1_EQ_GAINS_2, 11, 31, 0,
	       eq_tlv),
SOC_SINGLE_TLV("AIF1DAC1 EQ5 Volume", WM8994_AIF1_DAC1_EQ_GAINS_2, 6, 31, 0,
	       eq_tlv),

SOC_SINGLE_TLV("AIF1DAC2 EQ1 Volume", WM8994_AIF1_DAC2_EQ_GAINS_1, 11, 31, 0,
	       eq_tlv),
SOC_SINGLE_TLV("AIF1DAC2 EQ2 Volume", WM8994_AIF1_DAC2_EQ_GAINS_1, 6, 31, 0,
	       eq_tlv),
SOC_SINGLE_TLV("AIF1DAC2 EQ3 Volume", WM8994_AIF1_DAC2_EQ_GAINS_1, 1, 31, 0,
	       eq_tlv),
SOC_SINGLE_TLV("AIF1DAC2 EQ4 Volume", WM8994_AIF1_DAC2_EQ_GAINS_2, 11, 31, 0,
	       eq_tlv),
SOC_SINGLE_TLV("AIF1DAC2 EQ5 Volume", WM8994_AIF1_DAC2_EQ_GAINS_2, 6, 31, 0,
	       eq_tlv),

SOC_SINGLE_TLV("AIF2 EQ1 Volume", WM8994_AIF2_EQ_GAINS_1, 11, 31, 0,
	       eq_tlv),
SOC_SINGLE_TLV("AIF2 EQ2 Volume", WM8994_AIF2_EQ_GAINS_1, 6, 31, 0,
	       eq_tlv),
SOC_SINGLE_TLV("AIF2 EQ3 Volume", WM8994_AIF2_EQ_GAINS_1, 1, 31, 0,
	       eq_tlv),
SOC_SINGLE_TLV("AIF2 EQ4 Volume", WM8994_AIF2_EQ_GAINS_2, 11, 31, 0,
	       eq_tlv),
SOC_SINGLE_TLV("AIF2 EQ5 Volume", WM8994_AIF2_EQ_GAINS_2, 6, 31, 0,
	       eq_tlv),
};

static int clk_sys_event(struct snd_soc_dapm_widget *w,
			 struct snd_kcontrol *kcontrol, int event)
{
	struct snd_soc_codec *codec = w->codec;

	switch (event) {
	case SND_SOC_DAPM_PRE_PMU:
		return configure_clock(codec);

	case SND_SOC_DAPM_POST_PMD:
		configure_clock(codec);
		break;
	}

	return 0;
}

static void wm8994_update_class_w(struct snd_soc_codec *codec)
{
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	int enable = 1;
	int source = 0;  /* GCC flow analysis can't track enable */
	int reg, reg_r;

	/* Only support direct DAC->headphone paths */
	reg = snd_soc_read(codec, WM8994_OUTPUT_MIXER_1);
	if (!(reg & WM8994_DAC1L_TO_HPOUT1L)) {
		dev_vdbg(codec->dev, "HPL connected to output mixer\n");
		enable = 0;
	}

	reg = snd_soc_read(codec, WM8994_OUTPUT_MIXER_2);
	if (!(reg & WM8994_DAC1R_TO_HPOUT1R)) {
		dev_vdbg(codec->dev, "HPR connected to output mixer\n");
		enable = 0;
	}

	/* We also need the same setting for L/R and only one path */
	reg = snd_soc_read(codec, WM8994_DAC1_LEFT_MIXER_ROUTING);
	switch (reg) {
	case WM8994_AIF2DACL_TO_DAC1L:
		dev_vdbg(codec->dev, "Class W source AIF2DAC\n");
		source = 2 << WM8994_CP_DYN_SRC_SEL_SHIFT;
		break;
	case WM8994_AIF1DAC2L_TO_DAC1L:
		dev_vdbg(codec->dev, "Class W source AIF1DAC2\n");
		source = 1 << WM8994_CP_DYN_SRC_SEL_SHIFT;
		break;
	case WM8994_AIF1DAC1L_TO_DAC1L:
		dev_vdbg(codec->dev, "Class W source AIF1DAC1\n");
		source = 0 << WM8994_CP_DYN_SRC_SEL_SHIFT;
		break;
	default:
		dev_vdbg(codec->dev, "DAC mixer setting: %x\n", reg);
		enable = 0;
		break;
	}

	reg_r = snd_soc_read(codec, WM8994_DAC1_RIGHT_MIXER_ROUTING);
	if (reg_r != reg) {
		dev_vdbg(codec->dev, "Left and right DAC mixers different\n");
		enable = 0;
	}

	if (enable) {
		dev_dbg(codec->dev, "Class W enabled\n");
		snd_soc_update_bits(codec, WM8994_CLASS_W_1,
				    WM8994_CP_DYN_PWR |
				    WM8994_CP_DYN_SRC_SEL_MASK,
				    source | WM8994_CP_DYN_PWR);
		wm8994->hubs.class_w = true;
		
	} else {
		dev_dbg(codec->dev, "Class W disabled\n");
		snd_soc_update_bits(codec, WM8994_CLASS_W_1,
				    WM8994_CP_DYN_PWR, 0);
		wm8994->hubs.class_w = false;
	}
}

static const char *hp_mux_text[] = {
	"Mixer",
	"DAC",
};

#define WM8994_HP_ENUM(xname, xenum) \
{	.iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
	.info = snd_soc_info_enum_double, \
 	.get = snd_soc_dapm_get_enum_double, \
 	.put = wm8994_put_hp_enum, \
  	.private_value = (unsigned long)&xenum }

static int wm8994_put_hp_enum(struct snd_kcontrol *kcontrol,
			      struct snd_ctl_elem_value *ucontrol)
{
	struct snd_soc_dapm_widget *w = snd_kcontrol_chip(kcontrol);
	struct snd_soc_codec *codec = w->codec;
	int ret;

	ret = snd_soc_dapm_put_enum_double(kcontrol, ucontrol);

	wm8994_update_class_w(codec);

	return ret;
}

static const struct soc_enum hpl_enum =
	SOC_ENUM_SINGLE(WM8994_OUTPUT_MIXER_1, 8, 2, hp_mux_text);

static const struct snd_kcontrol_new hpl_mux =
	WM8994_HP_ENUM("Left Headphone Mux", hpl_enum);

static const struct soc_enum hpr_enum =
	SOC_ENUM_SINGLE(WM8994_OUTPUT_MIXER_2, 8, 2, hp_mux_text);

static const struct snd_kcontrol_new hpr_mux =
	WM8994_HP_ENUM("Right Headphone Mux", hpr_enum);

static const char *adc_mux_text[] = {
	"ADC",
	"DMIC",
};

static const struct soc_enum adc_enum =
	SOC_ENUM_SINGLE(0, 0, 2, adc_mux_text);

static const struct snd_kcontrol_new adcl_mux =
	SOC_DAPM_ENUM_VIRT("ADCL Mux", adc_enum);

static const struct snd_kcontrol_new adcr_mux =
	SOC_DAPM_ENUM_VIRT("ADCR Mux", adc_enum);

static const struct snd_kcontrol_new left_speaker_mixer[] = {
SOC_DAPM_SINGLE("DAC2 Switch", WM8994_SPEAKER_MIXER, 9, 1, 0),
SOC_DAPM_SINGLE("Input Switch", WM8994_SPEAKER_MIXER, 7, 1, 0),
SOC_DAPM_SINGLE("IN1LP Switch", WM8994_SPEAKER_MIXER, 5, 1, 0),
SOC_DAPM_SINGLE("Output Switch", WM8994_SPEAKER_MIXER, 3, 1, 0),
SOC_DAPM_SINGLE("DAC1 Switch", WM8994_SPEAKER_MIXER, 1, 1, 0),
};

static const struct snd_kcontrol_new right_speaker_mixer[] = {
SOC_DAPM_SINGLE("DAC2 Switch", WM8994_SPEAKER_MIXER, 8, 1, 0),
SOC_DAPM_SINGLE("Input Switch", WM8994_SPEAKER_MIXER, 6, 1, 0),
SOC_DAPM_SINGLE("IN1RP Switch", WM8994_SPEAKER_MIXER, 4, 1, 0),
SOC_DAPM_SINGLE("Output Switch", WM8994_SPEAKER_MIXER, 2, 1, 0),
SOC_DAPM_SINGLE("DAC1 Switch", WM8994_SPEAKER_MIXER, 0, 1, 0),
};

/* Debugging; dump chip status after DAPM transitions */
static int post_ev(struct snd_soc_dapm_widget *w,
	    struct snd_kcontrol *kcontrol, int event)
{
	struct snd_soc_codec *codec = w->codec;
	dev_dbg(codec->dev, "SRC status: %x\n",
		snd_soc_read(codec,
			     WM8994_RATE_STATUS));
	return 0;
}

static const struct snd_kcontrol_new aif1adc1l_mix[] = {
SOC_DAPM_SINGLE("ADC/DMIC Switch", WM8994_AIF1_ADC1_LEFT_MIXER_ROUTING,
		1, 1, 0),
SOC_DAPM_SINGLE("AIF2 Switch", WM8994_AIF1_ADC1_LEFT_MIXER_ROUTING,
		0, 1, 0),
};

static const struct snd_kcontrol_new aif1adc1r_mix[] = {
SOC_DAPM_SINGLE("ADC/DMIC Switch", WM8994_AIF1_ADC1_RIGHT_MIXER_ROUTING,
		1, 1, 0),
SOC_DAPM_SINGLE("AIF2 Switch", WM8994_AIF1_ADC1_RIGHT_MIXER_ROUTING,
		0, 1, 0),
};

static const struct snd_kcontrol_new aif1adc2l_mix[] = {
SOC_DAPM_SINGLE("DMIC Switch", WM8994_AIF1_ADC2_LEFT_MIXER_ROUTING,
		1, 1, 0),
SOC_DAPM_SINGLE("AIF2 Switch", WM8994_AIF1_ADC2_LEFT_MIXER_ROUTING,
		0, 1, 0),
};

static const struct snd_kcontrol_new aif1adc2r_mix[] = {
SOC_DAPM_SINGLE("DMIC Switch", WM8994_AIF1_ADC2_RIGHT_MIXER_ROUTING,
		1, 1, 0),
SOC_DAPM_SINGLE("AIF2 Switch", WM8994_AIF1_ADC2_RIGHT_MIXER_ROUTING,
		0, 1, 0),
};

static const struct snd_kcontrol_new aif2dac2l_mix[] = {
SOC_DAPM_SINGLE("Right Sidetone Switch", WM8994_DAC2_LEFT_MIXER_ROUTING,
		5, 1, 0),
SOC_DAPM_SINGLE("Left Sidetone Switch", WM8994_DAC2_LEFT_MIXER_ROUTING,
		4, 1, 0),
SOC_DAPM_SINGLE("AIF2 Switch", WM8994_DAC2_LEFT_MIXER_ROUTING,
		2, 1, 0),
SOC_DAPM_SINGLE("AIF1.2 Switch", WM8994_DAC2_LEFT_MIXER_ROUTING,
		1, 1, 0),
SOC_DAPM_SINGLE("AIF1.1 Switch", WM8994_DAC2_LEFT_MIXER_ROUTING,
		0, 1, 0),
};

static const struct snd_kcontrol_new aif2dac2r_mix[] = {
SOC_DAPM_SINGLE("Right Sidetone Switch", WM8994_DAC2_RIGHT_MIXER_ROUTING,
		5, 1, 0),
SOC_DAPM_SINGLE("Left Sidetone Switch", WM8994_DAC2_RIGHT_MIXER_ROUTING,
		4, 1, 0),
SOC_DAPM_SINGLE("AIF2 Switch", WM8994_DAC2_RIGHT_MIXER_ROUTING,
		2, 1, 0),
SOC_DAPM_SINGLE("AIF1.2 Switch", WM8994_DAC2_RIGHT_MIXER_ROUTING,
		1, 1, 0),
SOC_DAPM_SINGLE("AIF1.1 Switch", WM8994_DAC2_RIGHT_MIXER_ROUTING,
		0, 1, 0),
};

#define WM8994_CLASS_W_SWITCH(xname, reg, shift, max, invert) \
{	.iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
	.info = snd_soc_info_volsw, \
	.get = snd_soc_dapm_get_volsw, .put = wm8994_put_class_w, \
	.private_value =  SOC_SINGLE_VALUE(reg, shift, max, invert) }

static int wm8994_put_class_w(struct snd_kcontrol *kcontrol,
			      struct snd_ctl_elem_value *ucontrol)
{
	struct snd_soc_dapm_widget *w = snd_kcontrol_chip(kcontrol);
	struct snd_soc_codec *codec = w->codec;
	int ret;

	ret = snd_soc_dapm_put_volsw(kcontrol, ucontrol);

	wm8994_update_class_w(codec);

	return ret;
}

static const struct snd_kcontrol_new dac1l_mix[] = {
WM8994_CLASS_W_SWITCH("Right Sidetone Switch", WM8994_DAC1_LEFT_MIXER_ROUTING,
		      5, 1, 0),
WM8994_CLASS_W_SWITCH("Left Sidetone Switch", WM8994_DAC1_LEFT_MIXER_ROUTING,
		      4, 1, 0),
WM8994_CLASS_W_SWITCH("AIF2 Switch", WM8994_DAC1_LEFT_MIXER_ROUTING,
		      2, 1, 0),
WM8994_CLASS_W_SWITCH("AIF1.2 Switch", WM8994_DAC1_LEFT_MIXER_ROUTING,
		      1, 1, 0),
WM8994_CLASS_W_SWITCH("AIF1.1 Switch", WM8994_DAC1_LEFT_MIXER_ROUTING,
		      0, 1, 0),
};

static const struct snd_kcontrol_new dac1r_mix[] = {
WM8994_CLASS_W_SWITCH("Right Sidetone Switch", WM8994_DAC1_RIGHT_MIXER_ROUTING,
		      5, 1, 0),
WM8994_CLASS_W_SWITCH("Left Sidetone Switch", WM8994_DAC1_RIGHT_MIXER_ROUTING,
		      4, 1, 0),
WM8994_CLASS_W_SWITCH("AIF2 Switch", WM8994_DAC1_RIGHT_MIXER_ROUTING,
		      2, 1, 0),
WM8994_CLASS_W_SWITCH("AIF1.2 Switch", WM8994_DAC1_RIGHT_MIXER_ROUTING,
		      1, 1, 0),
WM8994_CLASS_W_SWITCH("AIF1.1 Switch", WM8994_DAC1_RIGHT_MIXER_ROUTING,
		      0, 1, 0),
};

static const char *sidetone_text[] = {
	"ADC/DMIC1", "DMIC2",
};

static const struct soc_enum sidetone1_enum =
	SOC_ENUM_SINGLE(WM8994_SIDETONE, 0, 2, sidetone_text);

static const struct snd_kcontrol_new sidetone1_mux =
	SOC_DAPM_ENUM("Left Sidetone Mux", sidetone1_enum);

static const struct soc_enum sidetone2_enum =
	SOC_ENUM_SINGLE(WM8994_SIDETONE, 1, 2, sidetone_text);

static const struct snd_kcontrol_new sidetone2_mux =
	SOC_DAPM_ENUM("Right Sidetone Mux", sidetone2_enum);

static const char *aif1dac_text[] = {
	"AIF1DACDAT", "AIF3DACDAT",
};

static const struct soc_enum aif1dac_enum =
	SOC_ENUM_SINGLE(WM8994_POWER_MANAGEMENT_6, 0, 2, aif1dac_text);

static const struct snd_kcontrol_new aif1dac_mux =
	SOC_DAPM_ENUM("AIF1DAC Mux", aif1dac_enum);

static const char *aif2dac_text[] = {
	"AIF2DACDAT", "AIF3DACDAT",
};

static const struct soc_enum aif2dac_enum =
	SOC_ENUM_SINGLE(WM8994_POWER_MANAGEMENT_6, 1, 2, aif2dac_text);

static const struct snd_kcontrol_new aif2dac_mux =
	SOC_DAPM_ENUM("AIF2DAC Mux", aif2dac_enum);

static const char *aif2adc_text[] = {
	"AIF2ADCDAT", "AIF3DACDAT",
};

static const struct soc_enum aif2adc_enum =
	SOC_ENUM_SINGLE(WM8994_POWER_MANAGEMENT_6, 2, 2, aif2adc_text);

static const struct snd_kcontrol_new aif2adc_mux =
	SOC_DAPM_ENUM("AIF2ADC Mux", aif2adc_enum);

static const char *aif3adc_text[] = {
	"AIF1ADCDAT", "AIF2ADCDAT", "AIF2DACDAT",
};

static const struct soc_enum aif3adc_enum =
	SOC_ENUM_SINGLE(WM8994_POWER_MANAGEMENT_6, 3, 3, aif3adc_text);

static const struct snd_kcontrol_new aif3adc_mux =
	SOC_DAPM_ENUM("AIF3ADC Mux", aif3adc_enum);

static const struct snd_soc_dapm_widget wm8994_dapm_widgets[] = {
SND_SOC_DAPM_INPUT("DMIC1DAT"),
SND_SOC_DAPM_INPUT("DMIC2DAT"),
SND_SOC_DAPM_INPUT("Clock"),

SND_SOC_DAPM_SUPPLY("CLK_SYS", SND_SOC_NOPM, 0, 0, clk_sys_event,
		    SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),

SND_SOC_DAPM_SUPPLY("DSP1CLK", WM8994_CLOCKING_1, 3, 0, NULL, 0),
SND_SOC_DAPM_SUPPLY("DSP2CLK", WM8994_CLOCKING_1, 2, 0, NULL, 0),
SND_SOC_DAPM_SUPPLY("DSPINTCLK", WM8994_CLOCKING_1, 1, 0, NULL, 0),

SND_SOC_DAPM_SUPPLY("AIF1CLK", WM8994_AIF1_CLOCKING_1, 0, 0, NULL, 0),
SND_SOC_DAPM_SUPPLY("AIF2CLK", WM8994_AIF2_CLOCKING_1, 0, 0, NULL, 0),

SND_SOC_DAPM_AIF_OUT("AIF1ADC1L", "AIF1 Capture",
		     0, WM8994_POWER_MANAGEMENT_4, 9, 0),
SND_SOC_DAPM_AIF_OUT("AIF1ADC1R", "AIF1 Capture",
		     0, WM8994_POWER_MANAGEMENT_4, 8, 0),
SND_SOC_DAPM_AIF_IN("AIF1DAC1L", NULL, 0,
		    WM8994_POWER_MANAGEMENT_5, 9, 0),
SND_SOC_DAPM_AIF_IN("AIF1DAC1R", NULL, 0,
		    WM8994_POWER_MANAGEMENT_5, 8, 0),

SND_SOC_DAPM_AIF_OUT("AIF1ADC2L", "AIF1 Capture",
		     0, WM8994_POWER_MANAGEMENT_4, 11, 0),
SND_SOC_DAPM_AIF_OUT("AIF1ADC2R", "AIF1 Capture",
		     0, WM8994_POWER_MANAGEMENT_4, 10, 0),
SND_SOC_DAPM_AIF_IN("AIF1DAC2L", NULL, 0,
		    WM8994_POWER_MANAGEMENT_5, 11, 0),
SND_SOC_DAPM_AIF_IN("AIF1DAC2R", NULL, 0,
		    WM8994_POWER_MANAGEMENT_5, 10, 0),

SND_SOC_DAPM_MIXER("AIF1ADC1L Mixer", SND_SOC_NOPM, 0, 0,
		   aif1adc1l_mix, ARRAY_SIZE(aif1adc1l_mix)),
SND_SOC_DAPM_MIXER("AIF1ADC1R Mixer", SND_SOC_NOPM, 0, 0,
		   aif1adc1r_mix, ARRAY_SIZE(aif1adc1r_mix)),

SND_SOC_DAPM_MIXER("AIF1ADC2L Mixer", SND_SOC_NOPM, 0, 0,
		   aif1adc2l_mix, ARRAY_SIZE(aif1adc2l_mix)),
SND_SOC_DAPM_MIXER("AIF1ADC2R Mixer", SND_SOC_NOPM, 0, 0,
		   aif1adc2r_mix, ARRAY_SIZE(aif1adc2r_mix)),

SND_SOC_DAPM_MIXER("AIF2DAC2L Mixer", SND_SOC_NOPM, 0, 0,
		   aif2dac2l_mix, ARRAY_SIZE(aif2dac2l_mix)),
SND_SOC_DAPM_MIXER("AIF2DAC2R Mixer", SND_SOC_NOPM, 0, 0,
		   aif2dac2r_mix, ARRAY_SIZE(aif2dac2r_mix)),

SND_SOC_DAPM_MUX("Left Sidetone", SND_SOC_NOPM, 0, 0, &sidetone1_mux),
SND_SOC_DAPM_MUX("Right Sidetone", SND_SOC_NOPM, 0, 0, &sidetone2_mux),

SND_SOC_DAPM_MIXER("DAC1L Mixer", SND_SOC_NOPM, 0, 0,
		   dac1l_mix, ARRAY_SIZE(dac1l_mix)),
SND_SOC_DAPM_MIXER("DAC1R Mixer", SND_SOC_NOPM, 0, 0,
		   dac1r_mix, ARRAY_SIZE(dac1r_mix)),

SND_SOC_DAPM_AIF_OUT("AIF2ADCL", NULL, 0,
		     WM8994_POWER_MANAGEMENT_4, 13, 0),
SND_SOC_DAPM_AIF_OUT("AIF2ADCR", NULL, 0,
		     WM8994_POWER_MANAGEMENT_4, 12, 0),
SND_SOC_DAPM_AIF_IN("AIF2DACL", NULL, 0,
		    WM8994_POWER_MANAGEMENT_5, 13, 0),
SND_SOC_DAPM_AIF_IN("AIF2DACR", NULL, 0,
		    WM8994_POWER_MANAGEMENT_5, 12, 0),

SND_SOC_DAPM_AIF_IN("AIF1DACDAT", "AIF1 Playback", 0, SND_SOC_NOPM, 0, 0),
SND_SOC_DAPM_AIF_IN("AIF2DACDAT", "AIF2 Playback", 0, SND_SOC_NOPM, 0, 0),
SND_SOC_DAPM_AIF_OUT("AIF2ADCDAT", "AIF2 Capture", 0, SND_SOC_NOPM, 0, 0),

SND_SOC_DAPM_MUX("AIF1DAC Mux", SND_SOC_NOPM, 0, 0, &aif1dac_mux),
SND_SOC_DAPM_MUX("AIF2DAC Mux", SND_SOC_NOPM, 0, 0, &aif2dac_mux),
SND_SOC_DAPM_MUX("AIF2ADC Mux", SND_SOC_NOPM, 0, 0, &aif2adc_mux),
SND_SOC_DAPM_MUX("AIF3ADC Mux", SND_SOC_NOPM, 0, 0, &aif3adc_mux),

SND_SOC_DAPM_AIF_IN("AIF3DACDAT", "AIF3 Playback", 0, SND_SOC_NOPM, 0, 0),
SND_SOC_DAPM_AIF_IN("AIF3ADCDAT", "AIF3 Capture", 0, SND_SOC_NOPM, 0, 0),

SND_SOC_DAPM_SUPPLY("TOCLK", WM8994_CLOCKING_1, 4, 0, NULL, 0),

SND_SOC_DAPM_ADC("DMIC2L", NULL, WM8994_POWER_MANAGEMENT_4, 5, 0),
SND_SOC_DAPM_ADC("DMIC2R", NULL, WM8994_POWER_MANAGEMENT_4, 4, 0),
SND_SOC_DAPM_ADC("DMIC1L", NULL, WM8994_POWER_MANAGEMENT_4, 3, 0),
SND_SOC_DAPM_ADC("DMIC1R", NULL, WM8994_POWER_MANAGEMENT_4, 2, 0),

/* Power is done with the muxes since the ADC power also controls the
 * downsampling chain, the chip will automatically manage the analogue
 * specific portions.
 */
SND_SOC_DAPM_ADC("ADCL", NULL, SND_SOC_NOPM, 1, 0),
SND_SOC_DAPM_ADC("ADCR", NULL, SND_SOC_NOPM, 0, 0),

SND_SOC_DAPM_MUX("ADCL Mux", WM8994_POWER_MANAGEMENT_4, 1, 0, &adcl_mux),
SND_SOC_DAPM_MUX("ADCR Mux", WM8994_POWER_MANAGEMENT_4, 0, 0, &adcr_mux),

SND_SOC_DAPM_DAC("DAC2L", NULL, WM8994_POWER_MANAGEMENT_5, 3, 0),
SND_SOC_DAPM_DAC("DAC2R", NULL, WM8994_POWER_MANAGEMENT_5, 2, 0),
SND_SOC_DAPM_DAC("DAC1L", NULL, WM8994_POWER_MANAGEMENT_5, 1, 0),
SND_SOC_DAPM_DAC("DAC1R", NULL, WM8994_POWER_MANAGEMENT_5, 0, 0),

SND_SOC_DAPM_MUX("Left Headphone Mux", SND_SOC_NOPM, 0, 0, &hpl_mux),
SND_SOC_DAPM_MUX("Right Headphone Mux", SND_SOC_NOPM, 0, 0, &hpr_mux),

SND_SOC_DAPM_MIXER("SPKL", WM8994_POWER_MANAGEMENT_3, 8, 0,
		   left_speaker_mixer, ARRAY_SIZE(left_speaker_mixer)),
SND_SOC_DAPM_MIXER("SPKR", WM8994_POWER_MANAGEMENT_3, 9, 0,
		   right_speaker_mixer, ARRAY_SIZE(right_speaker_mixer)),

SND_SOC_DAPM_POST("Debug log", post_ev),
};

static const struct snd_soc_dapm_route intercon[] = {

	{ "CLK_SYS", NULL, "AIF1CLK", check_clk_sys },
	{ "CLK_SYS", NULL, "AIF2CLK", check_clk_sys },

	{ "DSP1CLK", NULL, "CLK_SYS" },
	{ "DSP2CLK", NULL, "CLK_SYS" },
	{ "DSPINTCLK", NULL, "CLK_SYS" },

	{ "AIF1ADC1L", NULL, "AIF1CLK" },
	{ "AIF1ADC1L", NULL, "DSP1CLK" },
	{ "AIF1ADC1R", NULL, "AIF1CLK" },
	{ "AIF1ADC1R", NULL, "DSP1CLK" },
	{ "AIF1ADC1R", NULL, "DSPINTCLK" },

	{ "AIF1DAC1L", NULL, "AIF1CLK" },
	{ "AIF1DAC1L", NULL, "DSP1CLK" },
	{ "AIF1DAC1R", NULL, "AIF1CLK" },
	{ "AIF1DAC1R", NULL, "DSP1CLK" },
	{ "AIF1DAC1R", NULL, "DSPINTCLK" },

	{ "AIF1ADC2L", NULL, "AIF1CLK" },
	{ "AIF1ADC2L", NULL, "DSP1CLK" },
	{ "AIF1ADC2R", NULL, "AIF1CLK" },
	{ "AIF1ADC2R", NULL, "DSP1CLK" },
	{ "AIF1ADC2R", NULL, "DSPINTCLK" },

	{ "AIF1DAC2L", NULL, "AIF1CLK" },
	{ "AIF1DAC2L", NULL, "DSP1CLK" },
	{ "AIF1DAC2R", NULL, "AIF1CLK" },
	{ "AIF1DAC2R", NULL, "DSP1CLK" },
	{ "AIF1DAC2R", NULL, "DSPINTCLK" },

	{ "AIF2ADCL", NULL, "AIF2CLK" },
	{ "AIF2ADCL", NULL, "DSP2CLK" },
	{ "AIF2ADCR", NULL, "AIF2CLK" },
	{ "AIF2ADCR", NULL, "DSP2CLK" },
	{ "AIF2ADCR", NULL, "DSPINTCLK" },

	{ "AIF2DACL", NULL, "AIF2CLK" },
	{ "AIF2DACL", NULL, "DSP2CLK" },
	{ "AIF2DACR", NULL, "AIF2CLK" },
	{ "AIF2DACR", NULL, "DSP2CLK" },
	{ "AIF2DACR", NULL, "DSPINTCLK" },

	{ "DMIC1L", NULL, "DMIC1DAT" },
	{ "DMIC1L", NULL, "CLK_SYS" },
	{ "DMIC1R", NULL, "DMIC1DAT" },
	{ "DMIC1R", NULL, "CLK_SYS" },
	{ "DMIC2L", NULL, "DMIC2DAT" },
	{ "DMIC2L", NULL, "CLK_SYS" },
	{ "DMIC2R", NULL, "DMIC2DAT" },
	{ "DMIC2R", NULL, "CLK_SYS" },

	{ "ADCL", NULL, "AIF1CLK" },
	{ "ADCL", NULL, "DSP1CLK" },
	{ "ADCL", NULL, "DSPINTCLK" },

	{ "ADCR", NULL, "AIF1CLK" },
	{ "ADCR", NULL, "DSP1CLK" },
	{ "ADCR", NULL, "DSPINTCLK" },

	{ "ADCL Mux", "ADC", "ADCL" },
	{ "ADCL Mux", "DMIC", "DMIC1L" },
	{ "ADCR Mux", "ADC", "ADCR" },
	{ "ADCR Mux", "DMIC", "DMIC1R" },

	{ "DAC1L", NULL, "AIF1CLK" },
	{ "DAC1L", NULL, "DSP1CLK" },
	{ "DAC1L", NULL, "DSPINTCLK" },

	{ "DAC1R", NULL, "AIF1CLK" },
	{ "DAC1R", NULL, "DSP1CLK" },
	{ "DAC1R", NULL, "DSPINTCLK" },

	{ "DAC2L", NULL, "AIF2CLK" },
	{ "DAC2L", NULL, "DSP2CLK" },
	{ "DAC2L", NULL, "DSPINTCLK" },

	{ "DAC2R", NULL, "AIF2DACR" },
	{ "DAC2R", NULL, "AIF2CLK" },
	{ "DAC2R", NULL, "DSP2CLK" },
	{ "DAC2R", NULL, "DSPINTCLK" },

	{ "TOCLK", NULL, "CLK_SYS" },

	/* AIF1 outputs */
	{ "AIF1ADC1L", NULL, "AIF1ADC1L Mixer" },
	{ "AIF1ADC1L Mixer", "ADC/DMIC Switch", "ADCL Mux" },
	{ "AIF1ADC1L Mixer", "AIF2 Switch", "AIF2DACL" },

	{ "AIF1ADC1R", NULL, "AIF1ADC1R Mixer" },
	{ "AIF1ADC1R Mixer", "ADC/DMIC Switch", "ADCR Mux" },
	{ "AIF1ADC1R Mixer", "AIF2 Switch", "AIF2DACR" },

	{ "AIF1ADC2L", NULL, "AIF1ADC2L Mixer" },
	{ "AIF1ADC2L Mixer", "DMIC Switch", "DMIC2L" },
	{ "AIF1ADC2L Mixer", "AIF2 Switch", "AIF2DACL" },

	{ "AIF1ADC2R", NULL, "AIF1ADC2R Mixer" },
	{ "AIF1ADC2R Mixer", "DMIC Switch", "DMIC2R" },
	{ "AIF1ADC2R Mixer", "AIF2 Switch", "AIF2DACR" },

	/* Pin level routing for AIF3 */
	{ "AIF1DAC1L", NULL, "AIF1DAC Mux" },
	{ "AIF1DAC1R", NULL, "AIF1DAC Mux" },
	{ "AIF1DAC2L", NULL, "AIF1DAC Mux" },
	{ "AIF1DAC2R", NULL, "AIF1DAC Mux" },

	{ "AIF2DACL", NULL, "AIF2DAC Mux" },
	{ "AIF2DACR", NULL, "AIF2DAC Mux" },

	{ "AIF1DAC Mux", "AIF1DACDAT", "AIF1DACDAT" },
	{ "AIF1DAC Mux", "AIF3DACDAT", "AIF3DACDAT" },
	{ "AIF2DAC Mux", "AIF2DACDAT", "AIF2DACDAT" },
	{ "AIF2DAC Mux", "AIF3DACDAT", "AIF3DACDAT" },
	{ "AIF2ADC Mux", "AIF2ADCDAT", "AIF2ADCL" },
	{ "AIF2ADC Mux", "AIF2ADCDAT", "AIF2ADCR" },
	{ "AIF2ADC Mux", "AIF3DACDAT", "AIF3ADCDAT" },

	/* DAC1 inputs */
	{ "DAC1L", NULL, "DAC1L Mixer" },
	{ "DAC1L Mixer", "AIF2 Switch", "AIF2DACL" },
	{ "DAC1L Mixer", "AIF1.2 Switch", "AIF1DAC2L" },
	{ "DAC1L Mixer", "AIF1.1 Switch", "AIF1DAC1L" },
	{ "DAC1L Mixer", "Left Sidetone Switch", "Left Sidetone" },
	{ "DAC1L Mixer", "Right Sidetone Switch", "Right Sidetone" },

	{ "DAC1R", NULL, "DAC1R Mixer" },
	{ "DAC1R Mixer", "AIF2 Switch", "AIF2DACR" },
	{ "DAC1R Mixer", "AIF1.2 Switch", "AIF1DAC2R" },
	{ "DAC1R Mixer", "AIF1.1 Switch", "AIF1DAC1R" },
	{ "DAC1R Mixer", "Left Sidetone Switch", "Left Sidetone" },
	{ "DAC1R Mixer", "Right Sidetone Switch", "Right Sidetone" },

	/* DAC2/AIF2 outputs  */
	{ "AIF2ADCL", NULL, "AIF2DAC2L Mixer" },
	{ "DAC2L", NULL, "AIF2DAC2L Mixer" },
	{ "AIF2DAC2L Mixer", "AIF2 Switch", "AIF2DACL" },
	{ "AIF2DAC2L Mixer", "AIF1.2 Switch", "AIF1DAC2L" },
	{ "AIF2DAC2L Mixer", "AIF1.1 Switch", "AIF1DAC1L" },
	{ "AIF2DAC2L Mixer", "Left Sidetone Switch", "Left Sidetone" },
	{ "AIF2DAC2L Mixer", "Right Sidetone Switch", "Right Sidetone" },

	{ "AIF2ADCR", NULL, "AIF2DAC2R Mixer" },
	{ "DAC2R", NULL, "AIF2DAC2R Mixer" },
	{ "AIF2DAC2R Mixer", "AIF2 Switch", "AIF2DACR" },
	{ "AIF2DAC2R Mixer", "AIF1.2 Switch", "AIF1DAC2R" },
	{ "AIF2DAC2R Mixer", "AIF1.1 Switch", "AIF1DAC1R" },
	{ "AIF2DAC2R Mixer", "Left Sidetone Switch", "Left Sidetone" },
	{ "AIF2DAC2R Mixer", "Right Sidetone Switch", "Right Sidetone" },

	{ "AIF2ADCDAT", NULL, "AIF2ADC Mux" },

	/* AIF3 output */
	{ "AIF3ADCDAT", "AIF1ADCDAT", "AIF1ADC1L" },
	{ "AIF3ADCDAT", "AIF1ADCDAT", "AIF1ADC1R" },
	{ "AIF3ADCDAT", "AIF1ADCDAT", "AIF1ADC2L" },
	{ "AIF3ADCDAT", "AIF1ADCDAT", "AIF1ADC2R" },
	{ "AIF3ADCDAT", "AIF2ADCDAT", "AIF2ADCL" },
	{ "AIF3ADCDAT", "AIF2ADCDAT", "AIF2ADCR" },
	{ "AIF3ADCDAT", "AIF2DACDAT", "AIF2DACL" },
	{ "AIF3ADCDAT", "AIF2DACDAT", "AIF2DACR" },

	/* Sidetone */
	{ "Left Sidetone", "ADC/DMIC1", "ADCL Mux" },
	{ "Left Sidetone", "DMIC2", "DMIC2L" },
	{ "Right Sidetone", "ADC/DMIC1", "ADCR Mux" },
	{ "Right Sidetone", "DMIC2", "DMIC2R" },

	/* Output stages */
	{ "Left Output Mixer", "DAC Switch", "DAC1L" },
	{ "Right Output Mixer", "DAC Switch", "DAC1R" },

	{ "SPKL", "DAC1 Switch", "DAC1L" },
	{ "SPKL", "DAC2 Switch", "DAC2L" },

	{ "SPKR", "DAC1 Switch", "DAC1R" },
	{ "SPKR", "DAC2 Switch", "DAC2R" },

	{ "Left Headphone Mux", "DAC", "DAC1L" },
	{ "Right Headphone Mux", "DAC", "DAC1R" },
};

/* The size in bits of the FLL divide multiplied by 10
 * to allow rounding later */
#define FIXED_FLL_SIZE ((1 << 16) * 10)

struct fll_div {
	u16 outdiv;
	u16 n;
	u16 k;
	u16 clk_ref_div;
	u16 fll_fratio;
};

static int wm8994_get_fll_config(struct fll_div *fll,
				 int freq_in, int freq_out)
{
	u64 Kpart;
	unsigned int K, Ndiv, Nmod;

	pr_debug("FLL input=%dHz, output=%dHz\n", freq_in, freq_out);

	/* Scale the input frequency down to <= 13.5MHz */
	fll->clk_ref_div = 0;
	while (freq_in > 13500000) {
		fll->clk_ref_div++;
		freq_in /= 2;

		if (fll->clk_ref_div > 3)
			return -EINVAL;
	}
	pr_debug("CLK_REF_DIV=%d, Fref=%dHz\n", fll->clk_ref_div, freq_in);

	/* Scale the output to give 90MHz<=Fvco<=100MHz */
	fll->outdiv = 3;
	while (freq_out * (fll->outdiv + 1) < 90000000) {
		fll->outdiv++;
		if (fll->outdiv > 63)
			return -EINVAL;
	}
	freq_out *= fll->outdiv + 1;
	pr_debug("OUTDIV=%d, Fvco=%dHz\n", fll->outdiv, freq_out);

	if (freq_in > 1000000) {
		fll->fll_fratio = 0;
	} else if (freq_in > 256000) {
		fll->fll_fratio = 1;
		freq_in *= 2;
	} else if (freq_in > 128000) {
		fll->fll_fratio = 2;
		freq_in *= 4;
	} else if (freq_in > 64000) {
		fll->fll_fratio = 3;
		freq_in *= 8;
	} else {
		fll->fll_fratio = 4;
		freq_in *= 16;
	}
	pr_debug("FLL_FRATIO=%d, Fref=%dHz\n", fll->fll_fratio, freq_in);

	/* Now, calculate N.K */
	Ndiv = freq_out / freq_in;

	fll->n = Ndiv;
	Nmod = freq_out % freq_in;
	pr_debug("Nmod=%d\n", Nmod);

	/* Calculate fractional part - scale up so we can round. */
	Kpart = FIXED_FLL_SIZE * (long long)Nmod;

	do_div(Kpart, freq_in);

	K = Kpart & 0xFFFFFFFF;

	if ((K % 10) >= 5)
		K += 5;

	/* Move down to proper range now rounding is done */
	fll->k = K / 10;

	pr_debug("N=%x K=%x\n", fll->n, fll->k);

	return 0;
}

static int _wm8994_set_fll(struct snd_soc_codec *codec, int id, int src,
			  unsigned int freq_in, unsigned int freq_out)
{
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	int reg_offset, ret;
	struct fll_div fll;
	u16 reg, aif1, aif2;

	aif1 = snd_soc_read(codec, WM8994_AIF1_CLOCKING_1)
		& WM8994_AIF1CLK_ENA;

	aif2 = snd_soc_read(codec, WM8994_AIF2_CLOCKING_1)
		& WM8994_AIF2CLK_ENA;

	switch (id) {
	case WM8994_FLL1:
		reg_offset = 0;
		id = 0;
		break;
	case WM8994_FLL2:
		reg_offset = 0x20;
		id = 1;
		break;
	default:
		return -EINVAL;
	}

	switch (src) {
	case 0:
		/* Allow no source specification when stopping */
		if (freq_out)
			return -EINVAL;
		break;
	case WM8994_FLL_SRC_MCLK1:
	case WM8994_FLL_SRC_MCLK2:
	case WM8994_FLL_SRC_LRCLK:
	case WM8994_FLL_SRC_BCLK:
		break;
	default:
		return -EINVAL;
	}

	/* Are we changing anything? */
	if (wm8994->fll[id].src == src &&
	    wm8994->fll[id].in == freq_in && wm8994->fll[id].out == freq_out)
		return 0;

	/* If we're stopping the FLL redo the old config - no
	 * registers will actually be written but we avoid GCC flow
	 * analysis bugs spewing warnings.
	 */
	if (freq_out)
		ret = wm8994_get_fll_config(&fll, freq_in, freq_out);
	else
		ret = wm8994_get_fll_config(&fll, wm8994->fll[id].in,
					    wm8994->fll[id].out);
	if (ret < 0)
		return ret;

	/* Gate the AIF clocks while we reclock */
	snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1,
			    WM8994_AIF1CLK_ENA, 0);
	snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1,
			    WM8994_AIF2CLK_ENA, 0);

	/* We always need to disable the FLL while reconfiguring */
	snd_soc_update_bits(codec, WM8994_FLL1_CONTROL_1 + reg_offset,
			    WM8994_FLL1_ENA, 0);

	reg = (fll.outdiv << WM8994_FLL1_OUTDIV_SHIFT) |
		(fll.fll_fratio << WM8994_FLL1_FRATIO_SHIFT);
	snd_soc_update_bits(codec, WM8994_FLL1_CONTROL_2 + reg_offset,
			    WM8994_FLL1_OUTDIV_MASK |
			    WM8994_FLL1_FRATIO_MASK, reg);

	snd_soc_write(codec, WM8994_FLL1_CONTROL_3 + reg_offset, fll.k);

	snd_soc_update_bits(codec, WM8994_FLL1_CONTROL_4 + reg_offset,
			    WM8994_FLL1_N_MASK,
				    fll.n << WM8994_FLL1_N_SHIFT);

	snd_soc_update_bits(codec, WM8994_FLL1_CONTROL_5 + reg_offset,
			    WM8994_FLL1_REFCLK_DIV_MASK |
			    WM8994_FLL1_REFCLK_SRC_MASK,
			    (fll.clk_ref_div << WM8994_FLL1_REFCLK_DIV_SHIFT) |
			    (src - 1));

	/* Enable (with fractional mode if required) */
	if (freq_out) {
		if (fll.k)
			reg = WM8994_FLL1_ENA | WM8994_FLL1_FRAC;
		else
			reg = WM8994_FLL1_ENA;
		snd_soc_update_bits(codec, WM8994_FLL1_CONTROL_1 + reg_offset,
				    WM8994_FLL1_ENA | WM8994_FLL1_FRAC,
				    reg);
	}

	wm8994->fll[id].in = freq_in;
	wm8994->fll[id].out = freq_out;
	wm8994->fll[id].src = src;

	/* Enable any gated AIF clocks */
	snd_soc_update_bits(codec, WM8994_AIF1_CLOCKING_1,
			    WM8994_AIF1CLK_ENA, aif1);
	snd_soc_update_bits(codec, WM8994_AIF2_CLOCKING_1,
			    WM8994_AIF2CLK_ENA, aif2);

	configure_clock(codec);

	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)
{
	struct snd_soc_codec *codec = dai->codec;
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	int i;

	switch (dai->id) {
	case 1:
	case 2:
		break;

	default:
		/* AIF3 shares clocking with AIF1/2 */
		return -EINVAL;
	}

	switch (clk_id) {
	case WM8994_SYSCLK_MCLK1:
		wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_MCLK1;
		wm8994->mclk[0] = freq;
		dev_dbg(dai->dev, "AIF%d using MCLK1 at %uHz\n",
			dai->id, freq);
		break;

	case WM8994_SYSCLK_MCLK2:
		/* TODO: Set GPIO AF */
		wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_MCLK2;
		wm8994->mclk[1] = freq;
		dev_dbg(dai->dev, "AIF%d using MCLK2 at %uHz\n",
			dai->id, freq);
		break;

	case WM8994_SYSCLK_FLL1:
		wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_FLL1;
		dev_dbg(dai->dev, "AIF%d using FLL1\n", dai->id);
		break;

	case WM8994_SYSCLK_FLL2:
		wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_FLL2;
		dev_dbg(dai->dev, "AIF%d using FLL2\n", dai->id);
		break;

	case WM8994_SYSCLK_OPCLK:
		/* Special case - a division (times 10) is given and
		 * no effect on main clocking. 
		 */
		if (freq) {
			for (i = 0; i < ARRAY_SIZE(opclk_divs); i++)
				if (opclk_divs[i] == freq)
					break;
			if (i == ARRAY_SIZE(opclk_divs))
				return -EINVAL;
			snd_soc_update_bits(codec, WM8994_CLOCKING_2,
					    WM8994_OPCLK_DIV_MASK, i);
			snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_2,
					    WM8994_OPCLK_ENA, WM8994_OPCLK_ENA);
		} else {
			snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_2,
					    WM8994_OPCLK_ENA, 0);
		}

	default:
		return -EINVAL;
	}

	configure_clock(codec);

	return 0;
}

static int wm8994_set_bias_level(struct snd_soc_codec *codec,
				 enum snd_soc_bias_level level)
{
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);

	switch (level) {
	case SND_SOC_BIAS_ON:
		break;

	case SND_SOC_BIAS_PREPARE:
		/* VMID=2x40k */
		snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1,
				    WM8994_VMID_SEL_MASK, 0x2);
		break;

	case SND_SOC_BIAS_STANDBY:
		if (codec->bias_level == SND_SOC_BIAS_OFF) {
			/* Tweak DC servo and DSP configuration for
			 * improved performance. */
			if (wm8994->revision < 4) {
				/* Tweak DC servo and DSP configuration for
				 * improved performance. */
				snd_soc_write(codec, 0x102, 0x3);
				snd_soc_write(codec, 0x56, 0x3);
				snd_soc_write(codec, 0x817, 0);
				snd_soc_write(codec, 0x102, 0);
			}

			/* Discharge LINEOUT1 & 2 */
			snd_soc_update_bits(codec, WM8994_ANTIPOP_1,
					    WM8994_LINEOUT1_DISCH |
					    WM8994_LINEOUT2_DISCH,
					    WM8994_LINEOUT1_DISCH |
					    WM8994_LINEOUT2_DISCH);

			/* Startup bias, VMID ramp & buffer */
			snd_soc_update_bits(codec, WM8994_ANTIPOP_2,
					    WM8994_STARTUP_BIAS_ENA |
					    WM8994_VMID_BUF_ENA |
					    WM8994_VMID_RAMP_MASK,
					    WM8994_STARTUP_BIAS_ENA |
					    WM8994_VMID_BUF_ENA |
					    (0x11 << WM8994_VMID_RAMP_SHIFT));

			/* Main bias enable, VMID=2x40k */
			snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1,
					    WM8994_BIAS_ENA |
					    WM8994_VMID_SEL_MASK,
					    WM8994_BIAS_ENA | 0x2);

			msleep(20);
		}

		/* VMID=2x500k */
		snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1,
				    WM8994_VMID_SEL_MASK, 0x4);

		break;

	case SND_SOC_BIAS_OFF:
		if (codec->bias_level == SND_SOC_BIAS_STANDBY) {
			/* Switch over to startup biases */
			snd_soc_update_bits(codec, WM8994_ANTIPOP_2,
					    WM8994_BIAS_SRC |
					    WM8994_STARTUP_BIAS_ENA |
					    WM8994_VMID_BUF_ENA |
					    WM8994_VMID_RAMP_MASK,
					    WM8994_BIAS_SRC |
					    WM8994_STARTUP_BIAS_ENA |
					    WM8994_VMID_BUF_ENA |
					    (1 << WM8994_VMID_RAMP_SHIFT));

			/* Disable main biases */
			snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1,
					    WM8994_BIAS_ENA |
					    WM8994_VMID_SEL_MASK, 0);

			/* Discharge line */
			snd_soc_update_bits(codec, WM8994_ANTIPOP_1,
					    WM8994_LINEOUT1_DISCH |
					    WM8994_LINEOUT2_DISCH,
					    WM8994_LINEOUT1_DISCH |
					    WM8994_LINEOUT2_DISCH);

			msleep(5);

			/* Switch off startup biases */
			snd_soc_update_bits(codec, WM8994_ANTIPOP_2,
					    WM8994_BIAS_SRC |
					    WM8994_STARTUP_BIAS_ENA |
					    WM8994_VMID_BUF_ENA |
					    WM8994_VMID_RAMP_MASK, 0);
		}
		break;
	}
	codec->bias_level = level;
	return 0;
}

static int wm8994_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt)
{
	struct snd_soc_codec *codec = dai->codec;
	int ms_reg;
	int aif1_reg;
	int ms = 0;
	int aif1 = 0;

	switch (dai->id) {
	case 1:
		ms_reg = WM8994_AIF1_MASTER_SLAVE;
		aif1_reg = WM8994_AIF1_CONTROL_1;
		break;
	case 2:
		ms_reg = WM8994_AIF2_MASTER_SLAVE;
		aif1_reg = WM8994_AIF2_CONTROL_1;
		break;
	default:
		return -EINVAL;
	}

	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
	case SND_SOC_DAIFMT_CBS_CFS:
		break;
	case SND_SOC_DAIFMT_CBM_CFM:
		ms = WM8994_AIF1_MSTR;
		break;
	default:
		return -EINVAL;
	}

	switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
	case SND_SOC_DAIFMT_DSP_B:
		aif1 |= WM8994_AIF1_LRCLK_INV;
	case SND_SOC_DAIFMT_DSP_A:
		aif1 |= 0x18;
		break;
	case SND_SOC_DAIFMT_I2S:
		aif1 |= 0x10;
		break;
	case SND_SOC_DAIFMT_RIGHT_J:
		break;
	case SND_SOC_DAIFMT_LEFT_J:
		aif1 |= 0x8;
		break;
	default:
		return -EINVAL;
	}

	switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
	case SND_SOC_DAIFMT_DSP_A:
	case SND_SOC_DAIFMT_DSP_B:
		/* frame inversion not valid for DSP modes */
		switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
		case SND_SOC_DAIFMT_NB_NF:
			break;
		case SND_SOC_DAIFMT_IB_NF:
			aif1 |= WM8994_AIF1_BCLK_INV;
			break;
		default:
			return -EINVAL;
		}
		break;

	case SND_SOC_DAIFMT_I2S:
	case SND_SOC_DAIFMT_RIGHT_J:
	case SND_SOC_DAIFMT_LEFT_J:
		switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
		case SND_SOC_DAIFMT_NB_NF:
			break;
		case SND_SOC_DAIFMT_IB_IF:
			aif1 |= WM8994_AIF1_BCLK_INV | WM8994_AIF1_LRCLK_INV;
			break;
		case SND_SOC_DAIFMT_IB_NF:
			aif1 |= WM8994_AIF1_BCLK_INV;
			break;
		case SND_SOC_DAIFMT_NB_IF:
			aif1 |= WM8994_AIF1_LRCLK_INV;
			break;
		default:
			return -EINVAL;
		}
		break;
	default:
		return -EINVAL;
	}

	snd_soc_update_bits(codec, aif1_reg,
			    WM8994_AIF1_BCLK_INV | WM8994_AIF1_LRCLK_INV |
			    WM8994_AIF1_FMT_MASK,
			    aif1);
	snd_soc_update_bits(codec, ms_reg, WM8994_AIF1_MSTR,
			    ms);

	return 0;
}

static struct {
	int val, rate;
} srs[] = {
	{ 0,   8000 },
	{ 1,  11025 },
	{ 2,  12000 },
	{ 3,  16000 },
	{ 4,  22050 },
	{ 5,  24000 },
	{ 6,  32000 },
	{ 7,  44100 },
	{ 8,  48000 },
	{ 9,  88200 },
	{ 10, 96000 },
};

static int fs_ratios[] = {
	64, 128, 192, 256, 348, 512, 768, 1024, 1408, 1536
};

static int bclk_divs[] = {
	10, 15, 20, 30, 40, 50, 60, 80, 110, 120, 160, 220, 240, 320, 440, 480,
	640, 880, 960, 1280, 1760, 1920
};

static int wm8994_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;
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	int aif1_reg;
	int bclk_reg;
	int lrclk_reg;
	int rate_reg;
	int aif1 = 0;
	int bclk = 0;
	int lrclk = 0;
	int rate_val = 0;
	int id = dai->id - 1;

	int i, cur_val, best_val, bclk_rate, best;

	switch (dai->id) {
	case 1:
		aif1_reg = WM8994_AIF1_CONTROL_1;
		bclk_reg = WM8994_AIF1_BCLK;
		rate_reg = WM8994_AIF1_RATE;
		if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ||
		    wm8994->lrclk_shared[0]) {
			lrclk_reg = WM8994_AIF1DAC_LRCLK;
		} 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]) {
			lrclk_reg = WM8994_AIF2DAC_LRCLK;
		} else {
			lrclk_reg = WM8994_AIF2ADC_LRCLK;
			dev_dbg(codec->dev, "AIF2 using split LRCLK\n");
		}
		break;
	default:
		return -EINVAL;
	}

	bclk_rate = params_rate(params) * 2;
	switch (params_format(params)) {
	case SNDRV_PCM_FORMAT_S16_LE:
		bclk_rate *= 16;
		break;
	case SNDRV_PCM_FORMAT_S20_3LE:
		bclk_rate *= 20;
		aif1 |= 0x20;
		break;
	case SNDRV_PCM_FORMAT_S24_LE:
		bclk_rate *= 24;
		aif1 |= 0x40;
		break;
	case SNDRV_PCM_FORMAT_S32_LE:
		bclk_rate *= 32;
		aif1 |= 0x60;
		break;
	default:
		return -EINVAL;
	}

	/* Try to find an appropriate sample rate; look for an exact match. */
	for (i = 0; i < ARRAY_SIZE(srs); i++)
		if (srs[i].rate == params_rate(params))
			break;
	if (i == ARRAY_SIZE(srs))
		return -EINVAL;
	rate_val |= srs[i].val << WM8994_AIF1_SR_SHIFT;

	dev_dbg(dai->dev, "Sample rate is %dHz\n", srs[i].rate);
	dev_dbg(dai->dev, "AIF%dCLK is %dHz, target BCLK %dHz\n",
		dai->id, wm8994->aifclk[id], bclk_rate);

	if (wm8994->aifclk[id] == 0) {
		dev_err(dai->dev, "AIF%dCLK not configured\n", dai->id);
		return -EINVAL;
	}

	/* AIFCLK/fs ratio; look for a close match in either direction */
	best = 0;
	best_val = abs((fs_ratios[0] * params_rate(params))
		       - wm8994->aifclk[id]);
	for (i = 1; i < ARRAY_SIZE(fs_ratios); i++) {
		cur_val = abs((fs_ratios[i] * params_rate(params))
			      - wm8994->aifclk[id]);
		if (cur_val >= best_val)
			continue;
		best = i;
		best_val = cur_val;
	}
	dev_dbg(dai->dev, "Selected AIF%dCLK/fs = %d\n",
		dai->id, fs_ratios[best]);
	rate_val |= best;

	/* We may not get quite the right frequency if using
	 * approximate clocks so look for the closest match that is
	 * higher than the target (we need to ensure that there enough
	 * BCLKs to clock out the samples).
	 */
	best = 0;
	for (i = 0; i < ARRAY_SIZE(bclk_divs); i++) {
		cur_val = (wm8994->aifclk[id] * 10 / bclk_divs[i]) - bclk_rate;
		if (cur_val < 0) /* BCLK table is sorted */
			break;
		best = i;
	}
	bclk_rate = wm8994->aifclk[id] * 10 / bclk_divs[best];
	dev_dbg(dai->dev, "Using BCLK_DIV %d for actual BCLK %dHz\n",
		bclk_divs[best], bclk_rate);
	bclk |= best << WM8994_AIF1_BCLK_DIV_SHIFT;

	lrclk = bclk_rate / params_rate(params);
	dev_dbg(dai->dev, "Using LRCLK rate %d for actual LRCLK %dHz\n",
		lrclk, bclk_rate / lrclk);

	snd_soc_update_bits(codec, aif1_reg, WM8994_AIF1_WL_MASK, aif1);
	snd_soc_update_bits(codec, bclk_reg, WM8994_AIF1_BCLK_DIV_MASK, bclk);
	snd_soc_update_bits(codec, lrclk_reg, WM8994_AIF1DAC_RATE_MASK,
			    lrclk);
	snd_soc_update_bits(codec, rate_reg, WM8994_AIF1_SR_MASK |
			    WM8994_AIF1CLK_RATE_MASK, rate_val);

	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
		switch (dai->id) {
		case 1:
			wm8994->dac_rates[0] = params_rate(params);
			wm8994_set_retune_mobile(codec, 0);
			wm8994_set_retune_mobile(codec, 1);
			break;
		case 2:
			wm8994->dac_rates[1] = params_rate(params);
			wm8994_set_retune_mobile(codec, 2);
			break;
		}
	}

	return 0;
}

static int wm8994_aif_mute(struct snd_soc_dai *codec_dai, int mute)
{
	struct snd_soc_codec *codec = codec_dai->codec;
	int mute_reg;
	int reg;

	switch (codec_dai->id) {
	case 1:
		mute_reg = WM8994_AIF1_DAC1_FILTERS_1;
		break;
	case 2:
		mute_reg = WM8994_AIF2_DAC_FILTERS_1;
		break;
	default:
		return -EINVAL;
	}

	if (mute)
		reg = WM8994_AIF1DAC1_MUTE;
	else
		reg = 0;

	snd_soc_update_bits(codec, mute_reg, WM8994_AIF1DAC1_MUTE, reg);

	return 0;
}

static int wm8994_set_tristate(struct snd_soc_dai *codec_dai, int tristate)
{
	struct snd_soc_codec *codec = codec_dai->codec;
	int reg, val, mask;

	switch (codec_dai->id) {
	case 1:
		reg = WM8994_AIF1_MASTER_SLAVE;
		mask = WM8994_AIF1_TRI;
		break;
	case 2:
		reg = WM8994_AIF2_MASTER_SLAVE;
		mask = WM8994_AIF2_TRI;
		break;
	case 3:
		reg = WM8994_POWER_MANAGEMENT_6;
		mask = WM8994_AIF3_TRI;
		break;
	default:
		return -EINVAL;
	}

	if (tristate)
		val = mask;
	else
		val = 0;

	return snd_soc_update_bits(codec, reg, mask, reg);
}

#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_S32_LE)

static struct snd_soc_dai_ops wm8994_aif1_dai_ops = {
	.set_sysclk	= wm8994_set_dai_sysclk,
	.set_fmt	= wm8994_set_dai_fmt,
	.hw_params	= wm8994_hw_params,
	.digital_mute	= wm8994_aif_mute,
	.set_pll	= wm8994_set_fll,
	.set_tristate	= wm8994_set_tristate,
};

static struct snd_soc_dai_ops wm8994_aif2_dai_ops = {
	.set_sysclk	= wm8994_set_dai_sysclk,
	.set_fmt	= wm8994_set_dai_fmt,
	.hw_params	= wm8994_hw_params,
	.digital_mute   = wm8994_aif_mute,
	.set_pll	= wm8994_set_fll,
	.set_tristate	= wm8994_set_tristate,
};

static struct snd_soc_dai_ops wm8994_aif3_dai_ops = {
	.set_tristate	= wm8994_set_tristate,
};

static struct snd_soc_dai_driver wm8994_dai[] = {
	{
		.name = "wm8994-aif1",
		.id = 1,
		.playback = {
			.stream_name = "AIF1 Playback",
			.channels_min = 2,
			.channels_max = 2,
			.rates = WM8994_RATES,
			.formats = WM8994_FORMATS,
		},
		.capture = {
			.stream_name = "AIF1 Capture",
			.channels_min = 2,
			.channels_max = 2,
			.rates = WM8994_RATES,
			.formats = WM8994_FORMATS,
		 },
		.ops = &wm8994_aif1_dai_ops,
	},
	{
		.name = "wm8994-aif2",
		.id = 2,
		.playback = {
			.stream_name = "AIF2 Playback",
			.channels_min = 2,
			.channels_max = 2,
			.rates = WM8994_RATES,
			.formats = WM8994_FORMATS,
		},
		.capture = {
			.stream_name = "AIF2 Capture",
			.channels_min = 2,
			.channels_max = 2,
			.rates = WM8994_RATES,
			.formats = WM8994_FORMATS,
		},
		.ops = &wm8994_aif2_dai_ops,
	},
	{
		.name = "wm8994-aif3",
		.id = 3,
		.playback = {
			.stream_name = "AIF3 Playback",
			.channels_min = 2,
			.channels_max = 2,
			.rates = WM8994_RATES,
			.formats = WM8994_FORMATS,
		},
		.capture = {
			.stream_name = "AIF3 Capture",
			.channels_min = 2,
			.channels_max = 2,
			.rates = WM8994_RATES,
			.formats = WM8994_FORMATS,
		},
		.ops = &wm8994_aif3_dai_ops,
	}
};

#ifdef CONFIG_PM
static int wm8994_suspend(struct snd_soc_codec *codec, pm_message_t state)
{
	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, i + 1, 0, 0, 0);
		if (ret < 0)
			dev_warn(codec->dev, "Failed to stop FLL%d: %d\n",
				 i + 1, ret);
	}

	wm8994_set_bias_level(codec, SND_SOC_BIAS_OFF);

	return 0;
}

static int wm8994_resume(struct snd_soc_codec *codec)
{
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	u16 *reg_cache = codec->reg_cache;
	int i, ret;

	/* Restore the registers */
	for (i = 1; i < ARRAY_SIZE(wm8994->reg_cache); i++) {
		switch (i) {
		case WM8994_LDO_1:
		case WM8994_LDO_2:
		case WM8994_SOFTWARE_RESET:
			/* Handled by other MFD drivers */
			continue;
		default:
			break;
		}

		if (!access_masks[i].writable)
			continue;

		wm8994_reg_write(codec->control_data, i, reg_cache[i]);
	}

	wm8994_set_bias_level(codec, SND_SOC_BIAS_STANDBY);

	for (i = 0; i < ARRAY_SIZE(wm8994->fll); i++) {
		if (!wm8994->fll_suspend[i].out)
			continue;

		ret = _wm8994_set_fll(codec, i + 1,
				     wm8994->fll_suspend[i].src,
				     wm8994->fll_suspend[i].in,
				     wm8994->fll_suspend[i].out);
		if (ret < 0)
			dev_warn(codec->dev, "Failed to restore FLL%d: %d\n",
				 i + 1, ret);
	}

	return 0;
}
#else
#define wm8994_suspend NULL
#define wm8994_resume NULL
#endif

static void wm8994_handle_retune_mobile_pdata(struct wm8994_priv *wm8994)
{
	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",
			     wm8994->retune_mobile_enum,
			     wm8994_get_retune_mobile_enum,
			     wm8994_put_retune_mobile_enum),
		SOC_ENUM_EXT("AIF1.2 EQ Mode",
			     wm8994->retune_mobile_enum,
			     wm8994_get_retune_mobile_enum,
			     wm8994_put_retune_mobile_enum),
		SOC_ENUM_EXT("AIF2 EQ Mode",
			     wm8994->retune_mobile_enum,
			     wm8994_get_retune_mobile_enum,
			     wm8994_put_retune_mobile_enum),
	};
	int ret, i, j;
	const char **t;

	/* We need an array of texts for the enum API but the number
	 * of texts is likely to be less than the number of
	 * configurations due to the sample rate dependency of the
	 * configurations. */
	wm8994->num_retune_mobile_texts = 0;
	wm8994->retune_mobile_texts = NULL;
	for (i = 0; i < pdata->num_retune_mobile_cfgs; i++) {
		for (j = 0; j < wm8994->num_retune_mobile_texts; j++) {
			if (strcmp(pdata->retune_mobile_cfgs[i].name,
				   wm8994->retune_mobile_texts[j]) == 0)
				break;
		}

		if (j != wm8994->num_retune_mobile_texts)
			continue;

		/* Expand the array... */
		t = krealloc(wm8994->retune_mobile_texts,
			     sizeof(char *) * 
			     (wm8994->num_retune_mobile_texts + 1),
			     GFP_KERNEL);
		if (t == NULL)
			continue;

		/* ...store the new entry... */
		t[wm8994->num_retune_mobile_texts] = 
			pdata->retune_mobile_cfgs[i].name;

		/* ...and remember the new version. */
		wm8994->num_retune_mobile_texts++;
		wm8994->retune_mobile_texts = t;
	}

	dev_dbg(codec->dev, "Allocated %d unique ReTune Mobile names\n",
		wm8994->num_retune_mobile_texts);

	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,
				   ARRAY_SIZE(controls));
	if (ret != 0)
		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 wm8994_pdata *pdata = wm8994->pdata;
	int ret, i;

	if (!pdata)
		return;

	wm_hubs_handle_analogue_pdata(codec, pdata->lineout1_diff,
				      pdata->lineout2_diff,
				      pdata->lineout1fb,
				      pdata->lineout2fb,
				      pdata->jd_scthr,
				      pdata->jd_thr,
				      pdata->micbias1_lvl,
				      pdata->micbias2_lvl);

	dev_dbg(codec->dev, "%d DRC configurations\n", pdata->num_drc_cfgs);

	if (pdata->num_drc_cfgs) {
		struct snd_kcontrol_new controls[] = {
			SOC_ENUM_EXT("AIF1DRC1 Mode", wm8994->drc_enum,
				     wm8994_get_drc_enum, wm8994_put_drc_enum),
			SOC_ENUM_EXT("AIF1DRC2 Mode", wm8994->drc_enum,
				     wm8994_get_drc_enum, wm8994_put_drc_enum),
			SOC_ENUM_EXT("AIF2DRC Mode", wm8994->drc_enum,
				     wm8994_get_drc_enum, wm8994_put_drc_enum),
		};

		/* We need an array of texts for the enum API */
		wm8994->drc_texts = kmalloc(sizeof(char *)
					    * pdata->num_drc_cfgs, GFP_KERNEL);
		if (!wm8994->drc_texts) {
			dev_err(wm8994->codec->dev,
				"Failed to allocate %d DRC config texts\n",
				pdata->num_drc_cfgs);
			return;
		}

		for (i = 0; i < pdata->num_drc_cfgs; i++)
			wm8994->drc_texts[i] = pdata->drc_cfgs[i].name;

		wm8994->drc_enum.max = pdata->num_drc_cfgs;
		wm8994->drc_enum.texts = wm8994->drc_texts;

		ret = snd_soc_add_controls(wm8994->codec, controls,
					   ARRAY_SIZE(controls));
		if (ret != 0)
			dev_err(wm8994->codec->dev,
				"Failed to add DRC mode controls: %d\n", ret);

		for (i = 0; i < WM8994_NUM_DRC; i++)
			wm8994_set_drc(codec, i);
	}

	dev_dbg(codec->dev, "%d ReTune Mobile configurations\n",
		pdata->num_retune_mobile_cfgs);

	if (pdata->num_retune_mobile_cfgs)
		wm8994_handle_retune_mobile_pdata(wm8994);
	else
		snd_soc_add_controls(wm8994->codec, wm8994_eq_controls,
				     ARRAY_SIZE(wm8994_eq_controls));
}

/**
 * wm8994_mic_detect - Enable microphone detection via the WM8994 IRQ
 *
 * @codec:   WM8994 codec
 * @jack:    jack to report detection events on
 * @micbias: microphone bias to detect on
 * @det:     value to report for presence detection
 * @shrt:    value to report for short detection
 *
 * 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 WM8994 and processor GPIOs should
 * be configured using snd_soc_jack_add_gpios() instead.
 *
 * Configuration of detection levels is available via the micbias1_lvl
 * and micbias2_lvl platform data members.
 */
int wm8994_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack,
		      int micbias, int det, int shrt)
{
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
	struct wm8994_micdet *micdet;
	int reg;

	switch (micbias) {
	case 1:
		micdet = &wm8994->micdet[0];
		break;
	case 2:
		micdet = &wm8994->micdet[1];
		break;
	default:
		return -EINVAL;
	}	

	dev_dbg(codec->dev, "Configuring microphone detection on %d: %x %x\n",
		micbias, det, shrt);

	/* Store the configuration */
	micdet->jack = jack;
	micdet->det = det;
	micdet->shrt = shrt;

	/* If either of the jacks is set up then enable detection */
	if (wm8994->micdet[0].jack || wm8994->micdet[1].jack)
		reg = WM8994_MICD_ENA;
	else 
		reg = 0;

	snd_soc_update_bits(codec, WM8994_MICBIAS, WM8994_MICD_ENA, reg);

	return 0;
}
EXPORT_SYMBOL_GPL(wm8994_mic_detect);

static irqreturn_t wm8994_mic_irq(int irq, void *data)
{
	struct wm8994_priv *priv = data;
	struct snd_soc_codec *codec = priv->codec;
	int reg;
	int report;

	reg = snd_soc_read(codec, WM8994_INTERRUPT_RAW_STATUS_2);
	if (reg < 0) {
		dev_err(codec->dev, "Failed to read microphone status: %d\n",
			reg);
		return IRQ_HANDLED;
	}

	dev_dbg(codec->dev, "Microphone status: %x\n", reg);

	report = 0;
	if (reg & WM8994_MIC1_DET_STS)
		report |= priv->micdet[0].det;
	if (reg & WM8994_MIC1_SHRT_STS)
		report |= priv->micdet[0].shrt;
	snd_soc_jack_report(priv->micdet[0].jack, report,
			    priv->micdet[0].det | priv->micdet[0].shrt);

	report = 0;
	if (reg & WM8994_MIC2_DET_STS)
		report |= priv->micdet[1].det;
	if (reg & WM8994_MIC2_SHRT_STS)
		report |= priv->micdet[1].shrt;
	snd_soc_jack_report(priv->micdet[1].jack, report,
			    priv->micdet[1].det | priv->micdet[1].shrt);

	return IRQ_HANDLED;
}

static int wm8994_codec_probe(struct snd_soc_codec *codec)
{
	struct wm8994_priv *wm8994;
	int ret, i;

	codec->control_data = dev_get_drvdata(codec->dev->parent);

	wm8994 = kzalloc(sizeof(struct wm8994_priv), GFP_KERNEL);
	if (wm8994 == NULL)
		return -ENOMEM;
	snd_soc_codec_set_drvdata(codec, wm8994);

	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,
			       ARRAY_SIZE(wm8994->reg_cache) - 1,
			       codec->reg_cache);
	if (ret < 0) {
		dev_err(codec->dev, "Failed to fill register cache: %d\n",
			ret);
		goto err;
	}

	/* Clear the cached values for unreadable/volatile registers to
	 * avoid potential confusion.
	 */
	for (i = 0; i < ARRAY_SIZE(wm8994->reg_cache); i++)
		if (wm8994_volatile(i) || !wm8994_readable(i))
			wm8994->reg_cache[i] = 0;

	/* Set revision-specific configuration */
	wm8994->revision = snd_soc_read(codec, WM8994_CHIP_REVISION);
	switch (wm8994->revision) {
	case 2:
	case 3:
		wm8994->hubs.dcs_codes = -5;
		wm8994->hubs.hp_startup_mode = 1;
		wm8994->hubs.dcs_readback_mode = 1;
		break;
	default:
		wm8994->hubs.dcs_readback_mode = 1;
		break;
	}

	ret = wm8994_request_irq(codec->control_data, WM8994_IRQ_MIC1_DET,
				 wm8994_mic_irq, "Mic 1 detect", wm8994);
	if (ret != 0)
		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(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(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(codec->dev,
			 "Failed to request Mic2 short IRQ: %d\n", ret);

	/* Remember if AIFnLRCLK is configured as a GPIO.  This should be
	 * configured on init - if a system wants to do this dynamically
	 * at runtime we can deal with that then.
	 */
	ret = wm8994_reg_read(codec->control_data, WM8994_GPIO_1);
	if (ret < 0) {
		dev_err(codec->dev, "Failed to read GPIO1 state: %d\n", ret);
		goto err_irq;
	}
	if ((ret & WM8994_GPN_FN_MASK) != WM8994_GP_FN_PIN_SPECIFIC) {
		wm8994->lrclk_shared[0] = 1;
		wm8994_dai[0].symmetric_rates = 1;
	} else {
		wm8994->lrclk_shared[0] = 0;
	}

	ret = wm8994_reg_read(codec->control_data, WM8994_GPIO_6);
	if (ret < 0) {
		dev_err(codec->dev, "Failed to read GPIO6 state: %d\n", ret);
		goto err_irq;
	}
	if ((ret & WM8994_GPN_FN_MASK) != WM8994_GP_FN_PIN_SPECIFIC) {
		wm8994->lrclk_shared[1] = 1;
		wm8994_dai[1].symmetric_rates = 1;
	} else {
		wm8994->lrclk_shared[1] = 0;
	}

	wm8994_set_bias_level(codec, SND_SOC_BIAS_STANDBY);

	/* 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);
	snd_soc_update_bits(codec, WM8994_AIF1_DAC2_RIGHT_VOLUME,
			    WM8994_AIF1DAC2_VU, WM8994_AIF1DAC2_VU);
	snd_soc_update_bits(codec, WM8994_AIF2_DAC_RIGHT_VOLUME,
			    WM8994_AIF2DAC_VU, WM8994_AIF2DAC_VU);
	snd_soc_update_bits(codec, WM8994_AIF1_ADC1_RIGHT_VOLUME,
			    WM8994_AIF1ADC1_VU, WM8994_AIF1ADC1_VU);
	snd_soc_update_bits(codec, WM8994_AIF1_ADC2_RIGHT_VOLUME,
			    WM8994_AIF1ADC2_VU, WM8994_AIF1ADC2_VU);
	snd_soc_update_bits(codec, WM8994_AIF2_ADC_RIGHT_VOLUME,
			    WM8994_AIF2ADC_VU, WM8994_AIF1ADC2_VU);
	snd_soc_update_bits(codec, WM8994_DAC1_RIGHT_VOLUME,
			    WM8994_DAC1_VU, WM8994_DAC1_VU);
	snd_soc_update_bits(codec, WM8994_DAC2_RIGHT_VOLUME,
			    WM8994_DAC2_VU, WM8994_DAC2_VU);

	/* Set the low bit of the 3D stereo depth so TLV matches */
	snd_soc_update_bits(codec, WM8994_AIF1_DAC1_FILTERS_2,
			    1 << WM8994_AIF1DAC1_3D_GAIN_SHIFT,
			    1 << WM8994_AIF1DAC1_3D_GAIN_SHIFT);
	snd_soc_update_bits(codec, WM8994_AIF1_DAC2_FILTERS_2,
			    1 << WM8994_AIF1DAC2_3D_GAIN_SHIFT,
			    1 << WM8994_AIF1DAC2_3D_GAIN_SHIFT);
	snd_soc_update_bits(codec, WM8994_AIF2_DAC_FILTERS_2,
			    1 << WM8994_AIF2DAC_3D_GAIN_SHIFT,
			    1 << WM8994_AIF2DAC_3D_GAIN_SHIFT);

	/* Unconditionally enable AIF1 ADC TDM mode; it only affects
	 * behaviour on idle TDM clock cycles. */
	snd_soc_update_bits(codec, WM8994_AIF1_CONTROL_1,
			    WM8994_AIF1ADC_TDM, WM8994_AIF1ADC_TDM);

	wm8994_update_class_w(codec);

	wm8994_handle_pdata(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_irq:
	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);
err:
	kfree(wm8994);
	return ret;
}

static int  wm8994_codec_remove(struct snd_soc_codec *codec)
{
	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);

	wm8994_set_bias_level(codec, SND_SOC_BIAS_OFF);

	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);

	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_probe,
	.remove = __devexit_p(wm8994_remove),
};

static __init int wm8994_init(void)
{
	return platform_driver_register(&wm8994_codec_driver);
}
module_init(wm8994_init);

static __exit void wm8994_exit(void)
{
	platform_driver_unregister(&wm8994_codec_driver);
}
module_exit(wm8994_exit);


MODULE_DESCRIPTION("ASoC WM8994 driver");
MODULE_AUTHOR("Mark Brown <broonie@opensource.wolfsonmicro.com>");
MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:wm8994-codec");
