/* * * Copyright 2000-2009 * * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * * */ #ifndef _SUNXI_KEY_H #define _SUNXI_KEY_H #include "arch/cpu.h" struct sunxi_lradc { volatile u32 ctrl; /* lradc control */ volatile u32 intc; /* interrupt control */ volatile u32 ints; /* interrupt status */ volatile u32 data0; /* lradc 0 data */ volatile u32 data1; /* lradc 1 data */ }; #define SUNXI_KEY_ADC_CRTL (SUNXI_KEYADC_BASE + 0x00) #define SUNXI_KEY_ADC_INTC (SUNXI_KEYADC_BASE + 0x04) #define SUNXI_KEY_ADC_INTS (SUNXI_KEYADC_BASE + 0x08) #define SUNXI_KEY_ADC_DATA0 (SUNXI_KEYADC_BASE + 0x0C) #define LRADC_EN (0x1) /* LRADC enable */ #define LRADC_SAMPLE_RATE 0x2 /* 32.25 Hz */ #define LEVELB_VOL 0x2 /* 0x33(~1.6v) */ #define LRADC_HOLD_EN (0x1 << 6) /* sample hold enable */ #define KEY_MODE_SELECT 0x0 /* normal mode */ #define ADC0_DATA_PENDING (1 << 0) /* adc0 has data */ #define ADC0_KEYDOWN_PENDING (1 << 1) /* key down */ #define ADC0_HOLDKEY_PENDING (1 << 2) /* key hold */ #define ADC0_ALRDY_HOLD_PENDING (1 << 3) /* key already hold */ #define ADC0_KEYUP_PENDING (1 << 4) /* key up */ #define GP_SR_CON (SUNXI_GPADC_BASE + 0x0) #define GP_CTRL (SUNXI_GPADC_BASE+0x04) #define GP_CS_EN (SUNXI_GPADC_BASE+0x08) #define GP_DATA_INTC (SUNXI_GPADC_BASE+0x28) #define GP_DATA_INTS (SUNXI_GPADC_BASE+0x38) #define GP_CH0_DATA (SUNXI_GPADC_BASE+0x80) #define GPADC0_DATA_PENDING (1 << 0) /* gpadc0 has data */ int sunxi_key_init(void); int sunxi_key_exit(void); int sunxi_key_read(void); int sunxi_key_probe(void); int sunxi_key_clock_open(void); int sunxi_key_clock_close(void); #endif