71 lines
1.8 KiB
C
71 lines
1.8 KiB
C
|
/*
|
||
|
* drivers/input/sensor/sunxi_tpadc.h
|
||
|
*
|
||
|
* Copyright (C) 2017 Allwinner.
|
||
|
* fuzhaoke <yangshounan@allwinnertech.com>
|
||
|
*
|
||
|
* SUNXI tPADC Controller Driver Header
|
||
|
*
|
||
|
* This program is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the GNU General Public License as
|
||
|
* published by the Free Software Foundation; either version 2 of
|
||
|
* the License, or (at your option) any later version.
|
||
|
*/
|
||
|
|
||
|
#ifndef SUNXI_GPADC_H
|
||
|
#define SUNXI_GPADC_H
|
||
|
|
||
|
#define TPADC_DEV_NAME ("sunxi-tpadc")
|
||
|
#define CLK_IN (12000000)
|
||
|
/* TPADC register offset */
|
||
|
#define TP_CTRL0_REG 0x00
|
||
|
#define TP_CTRL1_REG 0x04
|
||
|
#define TP_CTRL2_REG 0x08
|
||
|
#define TP_CTRL3_REG 0x0c
|
||
|
#define TP_INT_FIFOC_REG 0x10
|
||
|
#define TP_INT_FIFOS_REG 0x14
|
||
|
#define TP_TPR_REG 0x18
|
||
|
#define TP_CDAT_REG 0x1c
|
||
|
#define TP_TEMP_DATA_REG 0x20
|
||
|
#define TP_DATA_REG 0x24
|
||
|
#define TP_IO_CONFIG_REG 0x28
|
||
|
#define TP_PORT_DATA_REG 0x2c
|
||
|
|
||
|
#define ADC_CLK_DIVIDER 20
|
||
|
#define FS_DIVIDER 16
|
||
|
#define TP_CLOCK (1<<22)
|
||
|
#define ADC_ENABLE (1<<4)
|
||
|
#define TP_DATA_IRQ_EN (1<<16)
|
||
|
#define SUNXI_FIFO_DATA (1<<16)
|
||
|
#define RTP_MODE_ENABLE (1<<5)
|
||
|
#define RTP_FILTER_ENABLE (1<<2)
|
||
|
#define RTP_FILTER_TYPE (0x2<<0)
|
||
|
|
||
|
#define HOSC 1
|
||
|
#define TP_IO_INPUT_MODE 0xfffff
|
||
|
|
||
|
#define TP_CH3_SELECT (1 << 3) /* channale 3 select enable, 0:disable, 1:enable */
|
||
|
#define TP_CH2_SELECT (1 << 2) /* channale 2 select enable, 0:disable, 1:enable */
|
||
|
#define TP_CH1_SELECT (1 << 1) /* channale 1 select enable, 0:disable, 1:enable */
|
||
|
#define TP_CH0_SELECT (1 << 0) /* channale 0 select enable, 0:disable, 1:enable */
|
||
|
|
||
|
enum tp_channel_id {
|
||
|
TP_CH_0 = 0,
|
||
|
TP_CH_1,
|
||
|
TP_CH_2,
|
||
|
TP_CH_3,
|
||
|
};
|
||
|
|
||
|
struct sunxi_tpadc {
|
||
|
struct platform_device *pdev;
|
||
|
struct input_dev *input_channel0;
|
||
|
struct input_dev *input_channel2;
|
||
|
struct clk *mclk;
|
||
|
struct clk *pclk;
|
||
|
void __iomem *reg_base;
|
||
|
int irq_num;
|
||
|
struct timer_list timer;
|
||
|
};
|
||
|
|
||
|
#endif
|