blob: 2b97b9f3d62b18f91e9f58a6cc82ec67da0b76ed [file] [log] [blame]
#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