Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions
88pm860x-codec.c File Reference
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/platform_device.h>
#include <linux/mfd/88pm860x.h>
#include <linux/slab.h>
#include <linux/delay.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#include <sound/tlv.h>
#include <sound/initval.h>
#include <sound/jack.h>
#include <trace/events/asoc.h>
#include "88pm860x-codec.h"

Go to the source code of this file.

Data Structures

struct  pm860x_det
 
struct  pm860x_priv
 
struct  st_gain
 

Macros

#define MAX_NAME_LEN   20
 
#define REG_CACHE_SIZE   0x40
 
#define REG_CACHE_BASE   0xb0
 
#define REG_STATUS_1   0x01
 
#define MIC_STATUS   (1 << 7)
 
#define HOOK_STATUS   (1 << 6)
 
#define HEADSET_STATUS   (1 << 5)
 
#define REG_MIC_DET   0x37
 
#define CONTINUOUS_POLLING   (3 << 1)
 
#define EN_MIC_DET   (1 << 0)
 
#define MICDET_MASK   0x07
 
#define REG_HS_DET   0x38
 
#define EN_HS_DET   (1 << 0)
 
#define REG_MISC2   0x42
 
#define AUDIO_PLL   (1 << 5)
 
#define AUDIO_SECTION_RESET   (1 << 4)
 
#define AUDIO_SECTION_ON   (1 << 3)
 
#define PCM_INF2_BCLK   (1 << 6) /* Bit clock polarity */
 
#define PCM_INF2_FS   (1 << 5) /* Frame Sync polarity */
 
#define PCM_INF2_MASTER   (1 << 4) /* Master / Slave */
 
#define PCM_INF2_18WL   (1 << 3) /* 18 / 16 bits */
 
#define PCM_GENERAL_I2S   0
 
#define PCM_EXACT_I2S   1
 
#define PCM_LEFT_I2S   2
 
#define PCM_RIGHT_I2S   3
 
#define PCM_SHORT_FS   4
 
#define PCM_LONG_FS   5
 
#define PCM_MODE_MASK   7
 
#define I2S_EQU_BYP   (1 << 6)
 
#define DAC_MUTE   (1 << 7)
 
#define MUTE_LEFT   (1 << 6)
 
#define MUTE_RIGHT   (1 << 2)
 
#define REG_ADC_ANA_1   0xd0
 
#define MIC1BIAS_MASK   0x60
 
#define REG_EAR2   0xda
 
#define RSYNC_CHANGE   (1 << 2)
 
#define REG_SUPPLIES2   0xdc
 
#define LDO15_READY   (1 << 4)
 
#define LDO15_EN   (1 << 3)
 
#define CPUMP_READY   (1 << 2)
 
#define CPUMP_EN   (1 << 1)
 
#define AUDIO_EN   (1 << 0)
 
#define SUPPLY_MASK   (LDO15_EN | CPUMP_EN | AUDIO_EN)
 
#define ADC_MOD_RIGHT   (1 << 1)
 
#define ADC_MOD_LEFT   (1 << 0)
 
#define ADC_LEFT   (1 << 5)
 
#define ADC_RIGHT   (1 << 4)
 
#define DAC_LEFT   (1 << 5)
 
#define DAC_RIGHT   (1 << 4)
 
#define MODULATOR   (1 << 3)
 
#define REG_SHORTS   0xeb
 
#define CLR_SHORT_LO2   (1 << 7)
 
#define SHORT_LO2   (1 << 6)
 
#define CLR_SHORT_LO1   (1 << 5)
 
#define SHORT_LO1   (1 << 4)
 
#define CLR_SHORT_HS2   (1 << 3)
 
#define SHORT_HS2   (1 << 2)
 
#define CLR_SHORT_HS1   (1 << 1)
 
#define SHORT_HS1   (1 << 0)
 
#define PM860X_DAPM_OUTPUT(wname, wevent)
 
#define PM860X_RATES
 

Functions

int pm860x_hs_jack_detect (struct snd_soc_codec *codec, struct snd_soc_jack *jack, int det, int hook, int hs_shrt, int lo_shrt)
 
 EXPORT_SYMBOL_GPL (pm860x_hs_jack_detect)
 
int pm860x_mic_jack_detect (struct snd_soc_codec *codec, struct snd_soc_jack *jack, int det)
 
 EXPORT_SYMBOL_GPL (pm860x_mic_jack_detect)
 
 module_platform_driver (pm860x_codec_driver)
 
 MODULE_DESCRIPTION ("ASoC 88PM860x driver")
 
 MODULE_AUTHOR ("Haojian Zhuang <[email protected]>")
 
 MODULE_LICENSE ("GPL")
 
 MODULE_ALIAS ("platform:88pm860x-codec")
 

Macro Definition Documentation

#define ADC_LEFT   (1 << 5)

Definition at line 99 of file 88pm860x-codec.c.

#define ADC_MOD_LEFT   (1 << 0)

Definition at line 96 of file 88pm860x-codec.c.

#define ADC_MOD_RIGHT   (1 << 1)

Definition at line 95 of file 88pm860x-codec.c.

#define ADC_RIGHT   (1 << 4)

Definition at line 100 of file 88pm860x-codec.c.

#define AUDIO_EN   (1 << 0)

Definition at line 91 of file 88pm860x-codec.c.

#define AUDIO_PLL   (1 << 5)

Definition at line 52 of file 88pm860x-codec.c.

#define AUDIO_SECTION_ON   (1 << 3)

Definition at line 54 of file 88pm860x-codec.c.

#define AUDIO_SECTION_RESET   (1 << 4)

Definition at line 53 of file 88pm860x-codec.c.

#define CLR_SHORT_HS1   (1 << 1)

Definition at line 115 of file 88pm860x-codec.c.

#define CLR_SHORT_HS2   (1 << 3)

Definition at line 113 of file 88pm860x-codec.c.

#define CLR_SHORT_LO1   (1 << 5)

Definition at line 111 of file 88pm860x-codec.c.

#define CLR_SHORT_LO2   (1 << 7)

Definition at line 109 of file 88pm860x-codec.c.

#define CONTINUOUS_POLLING   (3 << 1)

Definition at line 42 of file 88pm860x-codec.c.

#define CPUMP_EN   (1 << 1)

Definition at line 90 of file 88pm860x-codec.c.

#define CPUMP_READY   (1 << 2)

Definition at line 89 of file 88pm860x-codec.c.

#define DAC_LEFT   (1 << 5)

Definition at line 103 of file 88pm860x-codec.c.

#define DAC_MUTE   (1 << 7)

Definition at line 73 of file 88pm860x-codec.c.

#define DAC_RIGHT   (1 << 4)

Definition at line 104 of file 88pm860x-codec.c.

#define EN_HS_DET   (1 << 0)

Definition at line 48 of file 88pm860x-codec.c.

#define EN_MIC_DET   (1 << 0)

Definition at line 43 of file 88pm860x-codec.c.

#define HEADSET_STATUS   (1 << 5)

Definition at line 38 of file 88pm860x-codec.c.

#define HOOK_STATUS   (1 << 6)

Definition at line 37 of file 88pm860x-codec.c.

#define I2S_EQU_BYP   (1 << 6)

Definition at line 70 of file 88pm860x-codec.c.

#define LDO15_EN   (1 << 3)

Definition at line 88 of file 88pm860x-codec.c.

#define LDO15_READY   (1 << 4)

Definition at line 87 of file 88pm860x-codec.c.

#define MAX_NAME_LEN   20

Definition at line 30 of file 88pm860x-codec.c.

#define MIC1BIAS_MASK   0x60

Definition at line 79 of file 88pm860x-codec.c.

#define MIC_STATUS   (1 << 7)

Definition at line 36 of file 88pm860x-codec.c.

#define MICDET_MASK   0x07

Definition at line 44 of file 88pm860x-codec.c.

#define MODULATOR   (1 << 3)

Definition at line 105 of file 88pm860x-codec.c.

#define MUTE_LEFT   (1 << 6)

Definition at line 74 of file 88pm860x-codec.c.

#define MUTE_RIGHT   (1 << 2)

Definition at line 75 of file 88pm860x-codec.c.

#define PCM_EXACT_I2S   1

Definition at line 62 of file 88pm860x-codec.c.

#define PCM_GENERAL_I2S   0

Definition at line 61 of file 88pm860x-codec.c.

#define PCM_INF2_18WL   (1 << 3) /* 18 / 16 bits */

Definition at line 60 of file 88pm860x-codec.c.

#define PCM_INF2_BCLK   (1 << 6) /* Bit clock polarity */

Definition at line 57 of file 88pm860x-codec.c.

#define PCM_INF2_FS   (1 << 5) /* Frame Sync polarity */

Definition at line 58 of file 88pm860x-codec.c.

#define PCM_INF2_MASTER   (1 << 4) /* Master / Slave */

Definition at line 59 of file 88pm860x-codec.c.

#define PCM_LEFT_I2S   2

Definition at line 63 of file 88pm860x-codec.c.

#define PCM_LONG_FS   5

Definition at line 66 of file 88pm860x-codec.c.

#define PCM_MODE_MASK   7

Definition at line 67 of file 88pm860x-codec.c.

#define PCM_RIGHT_I2S   3

Definition at line 64 of file 88pm860x-codec.c.

#define PCM_SHORT_FS   4

Definition at line 65 of file 88pm860x-codec.c.

#define PM860X_DAPM_OUTPUT (   wname,
  wevent 
)
Value:
{ .id = snd_soc_dapm_pga, .name = wname, .reg = SND_SOC_NOPM, \
.shift = 0, .invert = 0, .kcontrol_news = NULL, \
.num_kcontrols = 0, .event = wevent, \

Definition at line 122 of file 88pm860x-codec.c.

#define PM860X_RATES
Value:

Definition at line 1215 of file 88pm860x-codec.c.

#define REG_ADC_ANA_1   0xd0

Definition at line 78 of file 88pm860x-codec.c.

#define REG_CACHE_BASE   0xb0

Definition at line 32 of file 88pm860x-codec.c.

#define REG_CACHE_SIZE   0x40

Definition at line 31 of file 88pm860x-codec.c.

#define REG_EAR2   0xda

Definition at line 82 of file 88pm860x-codec.c.

#define REG_HS_DET   0x38

Definition at line 47 of file 88pm860x-codec.c.

#define REG_MIC_DET   0x37

Definition at line 41 of file 88pm860x-codec.c.

#define REG_MISC2   0x42

Definition at line 51 of file 88pm860x-codec.c.

#define REG_SHORTS   0xeb

Definition at line 108 of file 88pm860x-codec.c.

#define REG_STATUS_1   0x01

Definition at line 35 of file 88pm860x-codec.c.

#define REG_SUPPLIES2   0xdc

Definition at line 86 of file 88pm860x-codec.c.

#define RSYNC_CHANGE   (1 << 2)

Definition at line 83 of file 88pm860x-codec.c.

#define SHORT_HS1   (1 << 0)

Definition at line 116 of file 88pm860x-codec.c.

#define SHORT_HS2   (1 << 2)

Definition at line 114 of file 88pm860x-codec.c.

#define SHORT_LO1   (1 << 4)

Definition at line 112 of file 88pm860x-codec.c.

#define SHORT_LO2   (1 << 6)

Definition at line 110 of file 88pm860x-codec.c.

#define SUPPLY_MASK   (LDO15_EN | CPUMP_EN | AUDIO_EN)

Definition at line 92 of file 88pm860x-codec.c.

Function Documentation

EXPORT_SYMBOL_GPL ( pm860x_hs_jack_detect  )
EXPORT_SYMBOL_GPL ( pm860x_mic_jack_detect  )
MODULE_ALIAS ( "platform:88pm860x-codec )
MODULE_AUTHOR ( "Haojian Zhuang <[email protected]>"  )
MODULE_DESCRIPTION ( "ASoC 88PM860x driver"  )
MODULE_LICENSE ( "GPL"  )
module_platform_driver ( pm860x_codec_driver  )
int pm860x_hs_jack_detect ( struct snd_soc_codec codec,
struct snd_soc_jack jack,
int  det,
int  hook,
int  hs_shrt,
int  lo_shrt 
)

Definition at line 1310 of file 88pm860x-codec.c.

int pm860x_mic_jack_detect ( struct snd_soc_codec codec,
struct snd_soc_jack jack,
int  det 
)

Definition at line 1343 of file 88pm860x-codec.c.