#ifndef SUNXI_KEYBOARD_H
#define SUNXI_KEYBOARD_H

#define INPUT_DEV_NAME          ("sunxi-keyboard")

#define KEY_MAX_CNT             (13)

#define LRADC_CTRL              (0x00)
#define LRADC_INTC              (0x04)
#define LRADC_INT_STA           (0x08)
#define LRADC_DATA0             (0x0c)
#define LRADC_DATA1             (0x10)

#define FIRST_CONCERT_DLY       (0<<24)
#define CHAN                    (0x0)
#define ADC_CHAN_SELECT         (CHAN<<22)
#define LRADC_KEY_MODE          (0)
#define KEY_MODE_SELECT         (LRADC_KEY_MODE<<12)
#define LEVELB_VOL              (0<<4)
#define LRADC_HOLD_EN           (1<<6)
#define LRADC_SAMPLE_32HZ       (3<<2)
#define LRADC_SAMPLE_62HZ       (2<<2)
#define LRADC_SAMPLE_125HZ      (1<<2)
#define LRADC_SAMPLE_250HZ      (0<<2)
#define LRADC_EN                (1<<0)

#define LRADC_ADC1_UP_EN        (1<<12)
#define LRADC_ADC1_DOWN_EN      (1<<9)
#define LRADC_ADC1_DATA_EN      (1<<8)

#define LRADC_ADC0_UP_EN        (1<<4)
#define LRADC_ADC0_DOWN_EN      (1<<1)
#define LRADC_ADC0_DATA_EN      (1<<0)

#define LRADC_ADC1_UPPEND       (1<<12)
#define LRADC_ADC1_DOWNPEND     (1<<9)
#define LRADC_ADC1_DATAPEND     (1<<8)


#define LRADC_ADC0_UPPEND       (1<<4)
#define LRADC_ADC0_DOWNPEND     (1<<1)
#define LRADC_ADC0_DATAPEND     (1<<0)

#define ONE_CHANNEL
#define MODE_0V2

#ifdef MODE_0V2
/* standard of key maping
 * 0.2V mode
 */
#define REPORT_KEY_LOW_LIMIT_COUNT  (1)

#endif

struct sunxi_adc_disc {
	u32 measure;
	u32 resol;
};

enum key_mode {
	CONCERT_DLY_SET = (1<<0),
	ADC_CHAN_SET = (1<<1),
	KEY_MODE_SET = (1<<2),
	LRADC_HOLD_SET = (1<<3),
	LEVELB_VOL_SET = (1<<4),
	LRADC_SAMPLE_SET = (1<<5),
	LRADC_EN_SET = (1<<6),
};

enum int_mode {
	ADC0_DOWN_INT_SET = (1<<0),
	ADC0_UP_INT_SET = (1<<1),
	ADC0_DATA_INT_SET = (1<<2),
};

#endif