/* * drivers/input/sensor/sunxi_tpadc.h * * Copyright (C) 2017 Allwinner. * fuzhaoke * * 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