| #ifndef RT5501_H |
| #define RT5501_H |
| |
| #include <linux/ioctl.h> |
| #include <linux/wakelock.h> |
| |
| #define RT5501_I2C_NAME "rt5501" |
| #define SPKR_OUTPUT 0 |
| #define HEADSET_OUTPUT 1 |
| #define DUAL_OUTPUT 2 |
| #define HANDSET_OUTPUT 3 |
| #define LINEOUT_OUTPUT 4 |
| #define NO_OUTPUT 5 |
| #define MODE_CMD_LEM 9 |
| #define MAX_REG_DATA 15 |
| |
| struct rt5501_platform_data { |
| uint32_t gpio_rt5501_spk_en; |
| unsigned char spkr_cmd[7]; |
| unsigned char hsed_cmd[7]; |
| unsigned char rece_cmd[7]; |
| |
| uint32_t gpio_rt5501_spk_en_cpu; |
| }; |
| |
| struct rt5501_reg_data { |
| unsigned char addr; |
| unsigned char val; |
| }; |
| |
| struct rt5501_config { |
| unsigned int reg_len; |
| struct rt5501_reg_data reg[MAX_REG_DATA]; |
| }; |
| |
| struct rt5501_comm_data { |
| unsigned int out_mode; |
| struct rt5501_config config; |
| }; |
| |
| struct rt5501_config_data { |
| unsigned int mode_num; |
| struct rt5501_comm_data *cmd_data; |
| }; |
| |
| enum { |
| RT5501_INIT = 0, |
| RT5501_MUTE, |
| RT5501_MAX_FUNC |
| }; |
| |
| enum RT5501_Mode { |
| RT5501_MODE_OFF = RT5501_MAX_FUNC, |
| RT5501_MODE_PLAYBACK, |
| RT5501_MODE_PLAYBACK8OH, |
| RT5501_MODE_PLAYBACK16OH, |
| RT5501_MODE_PLAYBACK32OH, |
| RT5501_MODE_PLAYBACK64OH, |
| RT5501_MODE_PLAYBACK128OH, |
| RT5501_MODE_PLAYBACK256OH, |
| RT5501_MODE_PLAYBACK500OH, |
| RT5501_MODE_PLAYBACK1KOH, |
| RT5501_MODE_VOICE, |
| RT5501_MODE_TTY, |
| RT5501_MODE_FM, |
| RT5501_MODE_RING, |
| RT5501_MODE_MFG, |
| RT5501_MODE_BEATS_8_64, |
| RT5501_MODE_BEATS_128_500, |
| RT5501_MODE_MONO, |
| RT5501_MODE_MONO_BEATS, |
| RT5501_MAX_MODE |
| }; |
| |
| enum HEADSET_QUERY_STATUS{ |
| RT5501_QUERY_OFF = 0, |
| RT5501_QUERY_HEADSET, |
| RT5501_QUERY_FINISH, |
| }; |
| |
| |
| enum RT5501_STATUS{ |
| RT5501_OFF = 0, |
| RT5501_PLAYBACK, |
| RT5501_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, |
| }; |
| |
| #define QUERY_IMMED msecs_to_jiffies(0) |
| #define QUERY_LATTER msecs_to_jiffies(200) |
| #define RT5501_SENSE_READY 0x80 |
| |
| #define RT5501_IOCTL_MAGIC 'g' |
| #define RT5501_SET_CONFIG _IOW(RT5501_IOCTL_MAGIC, 0x01, unsigned) |
| #define RT5501_READ_CONFIG _IOW(RT5501_IOCTL_MAGIC, 0x02, unsigned) |
| #define RT5501_SET_MODE _IOW(RT5501_IOCTL_MAGIC, 0x03, unsigned) |
| #define RT5501_SET_PARAM _IOW(RT5501_IOCTL_MAGIC, 0x04, unsigned) |
| #define RT5501_WRITE_REG _IOW(RT5501_IOCTL_MAGIC, 0x07, unsigned) |
| #define RT5501_QUERY_OM _IOW(RT5501_IOCTL_MAGIC, 0x08, unsigned) |
| |
| int query_rt5501(void); |
| void set_rt5501_amp(int on); |
| #endif |
| |