60 lines
1.8 KiB
C
60 lines
1.8 KiB
C
/*
|
|
* * 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
|