| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- /*
- * Copyright (c) 2019-2025 Allwinner Technology Co., Ltd. ALL rights reserved.
- *
- * Allwinner is a trademark of Allwinner Technology Co.,Ltd., registered in
- * the the People's Republic of China and other countries.
- * All Allwinner Technology Co.,Ltd. trademarks are used with permission.
- *
- * DISCLAIMER
- * THIRD PARTY LICENCES MAY BE REQUIRED TO IMPLEMENT THE SOLUTION/PRODUCT.
- * IF YOU NEED TO INTEGRATE THIRD PARTY’S TECHNOLOGY (SONY, DTS, DOLBY, AVS OR MPEGLA, ETC.)
- * IN ALLWINNERS’SDK OR PRODUCTS, YOU SHALL BE SOLELY RESPONSIBLE TO OBTAIN
- * ALL APPROPRIATELY REQUIRED THIRD PARTY LICENCES.
- * ALLWINNER SHALL HAVE NO WARRANTY, INDEMNITY OR OTHER OBLIGATIONS WITH RESPECT TO MATTERS
- * COVERED UNDER ANY REQUIRED THIRD PARTY LICENSE.
- * YOU ARE SOLELY RESPONSIBLE FOR YOUR USAGE OF THIRD PARTY’S TECHNOLOGY.
- *
- *
- * THIS SOFTWARE IS PROVIDED BY ALLWINNER"AS IS" AND TO THE MAXIMUM EXTENT
- * PERMITTED BY LAW, ALLWINNER EXPRESSLY DISCLAIMS ALL WARRANTIES OF ANY KIND,
- * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING WITHOUT LIMITATION REGARDING
- * THE TITLE, NON-INFRINGEMENT, ACCURACY, CONDITION, COMPLETENESS, PERFORMANCE
- * OR MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- * IN NO EVENT SHALL ALLWINNER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS, OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- #ifndef __COMMON_TPADC_H__
- #define __COMMON_TPADC_H__
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* SET_BITS */
- #define SETMASK(width, shift) ((width?((-1U) >> (32-width)):0) << (shift))
- #define CLRMASK(width, shift) (~(SETMASK(width, shift)))
- #define GET_BITS(shift, width, reg) \
- (((reg) & SETMASK(width, shift)) >> (shift))
- #define SET_BITS(shift, width, reg, val) \
- (((reg) & CLRMASK(width, shift)) | (val << (shift)))
- #define TPADC_WIDTH 4095 /*12bit 0XFFF*/
- #define TPADC_CLK_IN (12000000)
- #define DCXO24M (24000000)
- /* TPADC register offset */
- #define TP_CTRL0 0x00
- #define TP_CTRL1 0x04
- #define TP_CTRL2 0x08
- #define TP_CTRL3 0x0c
- #define TP_INT_FIFOC 0x10
- #define TP_INT_FIFOS 0x14
- #define TP_TPR 0x18
- #define TP_CDAT 0x1c
- #define TP_DATA 0x24
- /* tpadc regsiter offset and width */
- #define FIFO_OVERRUN_PENDING 17
- #define FIFO_OVERRUN_PENDIN_WIDTH 1
- #define FIFO_DATA_PENDING 16
- #define FIFO_DATA_PENDING_WIDTH 1
- #define TP_FIFO_FLUSH 4
- #define TP_FIFO_FLUSH_WIDTH 1
- #define TACQ 0
- #define TACQ_WIDTH 16
- #define FS_DIV 16
- #define FS_DIV_WIDTH 4
- #define ADC_CLK_DIVIDER 20
- #define ADC_CLK_DIVIDER_WIDTH 2
- #define ADC_FIRST_DLY_MODE 23
- #define ADC_FIRST_DLY_MODE_WIDTH 1
- #define ADC_FIRST_DLY 24
- #define ADC_FIRST_DLY_WIDTH 8
- #define TP_MODE_SELECT 4
- #define TP_MODE_SELECT_WIDTH 1
- #define TP_EN 5
- #define TP_EN_WIDTH 1
- #define TP_DEBOUNCE 12
- #define TP_DEBOUNCE_WIDTH 8
- #define PRE_MEA 0
- #define PRE_MEA_WIDTH 24
- #define PRE_MEA_EN 24
- #define PRE_MEA_EN_WIDTH 1
- #define TP_FIFO_MODE 26
- #define TP_FIFO_MODE_WIDTH 2
- #define TP_SENSITIVE 28
- #define TP_SENSITIVE_WIDTH 4
- #define FILTER_TYPE 0
- #define FILTER_TYPE_WIDTH 2
- #define FILTER_EN 2
- #define FILTER_EN_WIDTH 1
- #define TP_DOWN_IRQ_EN 0
- #define TP_DOWN_IRQ_ENWIDTH 1
- #define TP_UP_IRQ_EN 1
- #define TP_UP_IRQ_EN_WIDTH 1
- #define TP_DATA_DRQ_EN 7
- #define TP_DATA_DRQ_EN_WIDTH 1
- #define TP_FIFO_TRIG 8
- #define TP_FIFO_TRIG_WIDTH 5
- #define TP_DATA_XY_CHANGE 13
- #define TP_DATA_XY_CHANGE_WIDTH 1
- #define TP_DATA_IRQ_EN 16
- #define TP_DATA_IRQ_EN_WIDTH 1
- #define TP_FIFO_OVERRUN_IRQ 17
- #define TP_FIFO_OVERRUN_IRQ_WIDTH 1
- #define TP_DATAPEND (1<<16)
- #define TP_UPPEND (1<<1)
- #define TP_DOWNPEND (1<<0)
- #define OSC_FREQUENCY 24000000
- #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 */
- #ifdef __cplusplus
- }
- #endif
- #endif /* __COMMON_TPADC_I_H__ */
|