/*
* wm8985.c -- WM8985 ALSA SoC Audio driver
*
* Copyright 2010 Wolfson Microelectronics plc
*
* Author: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* TODO:
* o Add OUT3/OUT4 mixer controls.
*/
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/pm.h>
#include <linux/i2c.h>
#include <linux/regmap.h>
#include <linux/regulator/consumer.h>
#include <linux/spi/spi.h>
#include <linux/slab.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#include <sound/initval.h>
#include <sound/tlv.h>
#include "wm8985.h"
#define WM8985_NUM_SUPPLIES 4
static const char *wm8985_supply_names[WM8985_NUM_SUPPLIES] = {
"DCVDD",
"DBVDD",
"AVDD1",
"AVDD2"
};
static const struct reg_default wm8985_reg_defaults[] = {
{ 1, 0x0000 }, /* R1 - Power management 1 */
{ 2, 0x0000 }, /* R2 - Power management 2 */
{ 3, 0x0000 }, /* R3 - Power management 3 */
{ 4, 0x0050 }, /* R4 - Audio Interface */
{ 5, 0x0000 }, /* R5 - Companding control */
{ 6, 0x0140 }, /* R6 - Clock Gen control */
{ 7, 0x0000 }, /* R7 - Additional control */
{ 8, 0x0000 }, /* R8 - GPIO Control */
{ 9, 0x0000 }, /* R9 - Jack Detect Control 1 */
{ 10, 0x0000 }, /* R10 - DAC Control */
{ 11, 0x00FF }, /* R11 - Left DAC digital Vol */
{ 12, 0x00FF }, /* R12 - Right DAC digital vol */
{ 13, 0x0000 }, /* R13 - Jack Detect Control 2 */
{ 14, 0x0100 }, /* R14 - ADC Control */
{ 15, 0x00FF }, /* R15 - Left ADC Digital Vol */
{ 16, 0x00FF }, /* R16 - Right ADC Digital Vol */
{ 18, 0x012C }, /* R18 - EQ1 - low shelf */
{ 19, 0x002C }, /* R19 - EQ2 - peak 1 */
{ 20, 0x002C }, /* R20 - EQ3 - peak 2 */
{ 21, 0x002C }, /* R21 - EQ4 - peak 3 */
{ 22, 0x002C }, /* R22 - EQ5 - high shelf */
{ 24, 0x0032 }, /* R24 - DAC Limiter 1 */
{ 25, 0x0000 }, /* R25 - DAC Limiter 2 */
{ 27, 0x0000 }, /* R27 - Notch Filter 1 */
{ 28, 0x0000 }, /* R28 - Notch Filter 2 */
{ 29, 0x0000 }, /* R29 - Notch Filter 3 */
{ 30, 0x0000 }, /* R30 - Notch Filter 4 */
{ 32, 0x0038 }, /* R32 - ALC control 1 */
{ 33, 0x000B }, /* R33 - ALC control 2 */
{ 34, 0x0032 }, /* R34 - ALC control 3 */
{ 35, 0x0000 }, /* R35 - Noise Gate */
{ 36, 0x0008 }, /* R36 - PLL N */
{ 37, 0x000C }, /* R37 - PLL K 1 */
{ 38, 0x0093 }, /* R38 - PLL K 2 */
{ 39, 0x00E9 }, /* R39 - PLL K 3 */
{