1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
/*
* Definitions for rt5506 Headphone amp chip.
*/
#ifndef RT5506_H
#define RT5506_H
#include <linux/ioctl.h>
#ifdef __KERNEL__
#include <linux/wakelock.h>
#include <linux/regulator/rpm-smd-regulator.h>
#include <linux/regulator/consumer.h>
#endif
#define MSM8994_LDO_WR (0) /* Workaround for 8994 AKM current leakage issue, defined same as in msm8994.c */
#define RT5506_I2C_NAME "rt5506"
#define MAX_REG_DATA 15
#define QUERY_IMMED msecs_to_jiffies(0)
#define QUERY_LATTER msecs_to_jiffies(200)
#define AMP_SENSE_READY 0x80
enum {
RT55XX_INIT = 0,
RT55XX_MUTE,
RT55XX_MAX_FUNC
};
enum RT55XX_Mode {
RT55XX_MODE_OFF = RT55XX_MAX_FUNC,
RT55XX_MODE_PLAYBACK,
RT55XX_MODE_PLAYBACK8OH,
RT55XX_MODE_PLAYBACK16OH,
RT55XX_MODE_PLAYBACK32OH,
RT55XX_MODE_PLAYBACK64OH,
RT55XX_MODE_PLAYBACK128OH,
RT55XX_MODE_PLAYBACK256OH,
RT55XX_MODE_PLAYBACK500OH,
RT55XX_MODE_PLAYBACK1KOH,
RT55XX_MODE_VOICE,
RT55XX_MODE_TTY,
RT55XX_MODE_FM,
RT55XX_MODE_RING,
RT55XX_MODE_MFG,
RT55XX_MODE_BEATS_8_64,
RT55XX_MODE_BEATS_128_500,
RT55XX_MODE_MONO,
RT55XX_MODE_MONO_BEATS,
RT55XX_MAX_MODE
};
enum HEADSET_QUERY_STATUS{
RT55XX_QUERY_OFF = 0,
RT55XX_QUERY_HEADSET,
RT55XX_QUERY_FINISH,
};
enum RT55XX_STATUS{
RT55XX_OFF = 0,
RT55XX_PLAYBACK,
RT55XX_SUSPEND,
};
enum HEADSET_OM {
HEADSET_8OM = 0,
HEADSET_16OM,
HEADSET_32OM,
HEADSET_64OM,
HEADSET_128OM,
HEADSET_256OM,
HEADSET_500OM,
HEADSET_1KOM,
HEADSET_MONO,
HEADSET_OM_UNDER_DETECT,
};
enum AMP_GPIO_STATUS {
AMP_GPIO_OFF = 0,
AMP_GPIO_ON,
AMP_GPIO_QUERRTY_ON,
};
enum AMP_S4_STATUS {
AMP_S4_AUTO = 0,
AMP_S4_PWM,
};
#ifdef __KERNEL__
struct rt55xx_platform_data {
uint32_t gpio_rt55xx_enable;
uint32_t gpio_rt55xx_power;
const char *power_supply;
struct rpm_regulator *power_reg;
};
#endif
struct rt55xx_reg_data {
unsigned char addr;
unsigned char val;
};
struct rt55xx_config {
unsigned int reg_len;
struct rt55xx_reg_data reg[MAX_REG_DATA];
};
struct rt55xx_comm_data {
unsigned int out_mode;
struct rt55xx_config config;
};
struct rt55xx_config_data {
unsigned int mode_num;
struct rt55xx_comm_data cmd_data[RT55XX_MAX_MODE]; /* [mode][mode_kind][reserve][cmds..] */
};
#define RT55XX_IOCTL_MAGIC 'g'
//#define RT55XX_SET_CONFIG _IOW(RT55XX_IOCTL_MAGIC, 0x01, unsigned)
//#define RT55XX_READ_CONFIG _IOR(RT55XX_IOCTL_MAGIC, 0x02, unsigned)
#define RT55XX_SET_MODE _IOW(RT55XX_IOCTL_MAGIC, 0x03, int)
#define RT55XX_SET_PARAM _IOW(RT55XX_IOCTL_MAGIC, 0x04, struct rt55xx_config_data)
//#define RT55XX_WRITE_REG _IOW(RT55XX_IOCTL_MAGIC, 0x07, unsigned)
#define RT55XX_QUERY_OM _IOR(RT55XX_IOCTL_MAGIC, 0x08, int)
#if MSM8994_LDO_WR
extern int msm8994_hph_en_ready(void);
#endif
#endif
|