/* * max97236.h -- MAX97236 Jack Detection Driver * * Copyright 2012-2013 Maxim Integrated Products * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef _MAX97236_H #define _MAX97236_H /* Controls detection mode, either DETECT0 or DETECT1 */ #undef MAX97236_AUTOMODE1_JACK_DETECTION /* Define depending on the type of switch in the jack receptacle */ #define M97236_JACK_SWITCH_NORMALLY_CLOSED /* * Driver major.minor.build number */ #define MAX97236_REVISION "0.00.0581" /* EXTCLK frequency default value */ #define EXTCLK_FREQUENCY 19200000 #define EXTCLK_FREQUENCY_SUSPEND 19200000 /* * MAX97236 Register Definitions */ #define M97236_REG_00_STATUS1 0x00 #define M97236_REG_01_STATUS2 0x01 #define M97236_REG_02_STATUS3 0x02 #define M97236_REG_04_IRQ_MASK1 0x04 #define M97236_REG_05_IRQ_MASK2 0x05 #define M97236_REG_07_LEFT_VOLUME 0x07 #define M97236_REG_08_RIGHT_VOLUME 0x08 #define M97236_REG_09_MICROPHONE 0x09 #define M97236_REG_0B_REV_ID 0x0B #define M97236_REG_12_KEYSCAN_CLK_DIV_HI 0x12 #define M97236_REG_13_KEYSCAN_CLK_DIV_LO 0x13 #define M97236_REG_14_KEYSCAN_CLK_DIV_ADC 0x14 #define M97236_REG_15_KEYSCAN_DEBOUNCE 0x15 #define M97236_REG_16_KEYSCAN_DELAY 0x16 #define M97236_REG_17_PASSIVE_MBH_KEYSCAN_DATA 0x17 #define M97236_REG_18_DC_TEST_SLEW_CONTROL 0x18 #define M97236_REG_19_STATE_FORCING 0x19 #define M97236_REG_1A_AC_TEST_CONTROL 0x1A #define M97236_REG_1D_ENABLE_1 0x1D #define M97236_REG_1E_ENABLE_2 0x1E #define M97236_REG_1F_TEST_ENABLE_1 0x1F #define M97236_REG_20_TEST_ENABLE_2 0x20 #define M97236_REG_21_TEST_DATA_1 0x21 #define M97236_REG_23_TEST_DATA_3 0x23 #define MAX97236_MAX_REGISTER 0x23 /* MAX97236 Register Bit Fields */ /* * M97236_REG_00_STATUS1 */ #define M97236_JKIN_MASK (1<<7) #define M97236_JKIN_SHIFT 7 #define M97236_JKIN_WIDTH 1 #define M97236_JKIN_NUM (1<> 8) & 0xff) #define M97236_BYTE0(w) (w & 0xff) /* Silicon revision number */ #define M97236_REVA 0x09 enum max97236_type { MAX97036, MAX97236, }; struct max97236_cdata { }; struct max97236_priv { struct regmap *regmap; struct snd_soc_codec *codec; enum max97236_type devtype; void *control_data; struct max97236_pdata *pdata; struct max97236_cdata dai[1]; int irq; int ignore_int; int jack_state; struct delayed_work jack_work; struct snd_soc_jack *jack; unsigned int dai_fmt; unsigned int status0; }; int max97236_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack); #endif