blob: 2b97b9f3d62b18f91e9f58a6cc82ec67da0b76ed [file] [log] [blame]
Flemmard9dc34f32014-01-05 00:13:45 -08001#ifndef RT5501_H
2#define RT5501_H
3
4#include <linux/ioctl.h>
5#include <linux/wakelock.h>
6
7#define RT5501_I2C_NAME "rt5501"
8#define SPKR_OUTPUT 0
9#define HEADSET_OUTPUT 1
10#define DUAL_OUTPUT 2
11#define HANDSET_OUTPUT 3
12#define LINEOUT_OUTPUT 4
13#define NO_OUTPUT 5
14#define MODE_CMD_LEM 9
15#define MAX_REG_DATA 15
16
17struct rt5501_platform_data {
18 uint32_t gpio_rt5501_spk_en;
19 unsigned char spkr_cmd[7];
20 unsigned char hsed_cmd[7];
21 unsigned char rece_cmd[7];
22
23 uint32_t gpio_rt5501_spk_en_cpu;
24};
25
26struct rt5501_reg_data {
27 unsigned char addr;
28 unsigned char val;
29};
30
31struct rt5501_config {
32 unsigned int reg_len;
33 struct rt5501_reg_data reg[MAX_REG_DATA];
34};
35
36struct rt5501_comm_data {
37 unsigned int out_mode;
38 struct rt5501_config config;
39};
40
41struct rt5501_config_data {
42 unsigned int mode_num;
43 struct rt5501_comm_data *cmd_data;
44};
45
46enum {
47 RT5501_INIT = 0,
48 RT5501_MUTE,
49 RT5501_MAX_FUNC
50};
51
52enum RT5501_Mode {
53 RT5501_MODE_OFF = RT5501_MAX_FUNC,
54 RT5501_MODE_PLAYBACK,
55 RT5501_MODE_PLAYBACK8OH,
56 RT5501_MODE_PLAYBACK16OH,
57 RT5501_MODE_PLAYBACK32OH,
58 RT5501_MODE_PLAYBACK64OH,
59 RT5501_MODE_PLAYBACK128OH,
60 RT5501_MODE_PLAYBACK256OH,
61 RT5501_MODE_PLAYBACK500OH,
62 RT5501_MODE_PLAYBACK1KOH,
63 RT5501_MODE_VOICE,
64 RT5501_MODE_TTY,
65 RT5501_MODE_FM,
66 RT5501_MODE_RING,
67 RT5501_MODE_MFG,
68 RT5501_MODE_BEATS_8_64,
69 RT5501_MODE_BEATS_128_500,
70 RT5501_MODE_MONO,
71 RT5501_MODE_MONO_BEATS,
72 RT5501_MAX_MODE
73};
74
75enum HEADSET_QUERY_STATUS{
76 RT5501_QUERY_OFF = 0,
77 RT5501_QUERY_HEADSET,
78 RT5501_QUERY_FINISH,
79};
80
81
82enum RT5501_STATUS{
83 RT5501_OFF = 0,
84 RT5501_PLAYBACK,
85 RT5501_SUSPEND,
86
87};
88
89enum HEADSET_OM {
90 HEADSET_8OM = 0,
91 HEADSET_16OM,
92 HEADSET_32OM,
93 HEADSET_64OM,
94 HEADSET_128OM,
95 HEADSET_256OM,
96 HEADSET_500OM,
97 HEADSET_1KOM,
98 HEADSET_MONO,
99 HEADSET_OM_UNDER_DETECT,
100};
101
102enum AMP_GPIO_STATUS {
103 AMP_GPIO_OFF = 0,
104 AMP_GPIO_ON,
105 AMP_GPIO_QUERRTY_ON,
106};
107
108enum AMP_S4_STATUS {
109 AMP_S4_AUTO = 0,
110 AMP_S4_PWM,
111};
112
113#define QUERY_IMMED msecs_to_jiffies(0)
114#define QUERY_LATTER msecs_to_jiffies(200)
115#define RT5501_SENSE_READY 0x80
116
117#define RT5501_IOCTL_MAGIC 'g'
118#define RT5501_SET_CONFIG _IOW(RT5501_IOCTL_MAGIC, 0x01, unsigned)
119#define RT5501_READ_CONFIG _IOW(RT5501_IOCTL_MAGIC, 0x02, unsigned)
120#define RT5501_SET_MODE _IOW(RT5501_IOCTL_MAGIC, 0x03, unsigned)
121#define RT5501_SET_PARAM _IOW(RT5501_IOCTL_MAGIC, 0x04, unsigned)
122#define RT5501_WRITE_REG _IOW(RT5501_IOCTL_MAGIC, 0x07, unsigned)
123#define RT5501_QUERY_OM _IOW(RT5501_IOCTL_MAGIC, 0x08, unsigned)
124
125int query_rt5501(void);
126void set_rt5501_amp(int on);
127#endif
128