rt-thread/bsp/allwinner/libraries/sunxi-hal/hal/source/tpadc/common_tpadc.h

154 lines
4.5 KiB
C
Raw Normal View History

/*
* 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 PARTYS TECHNOLOGY (SONY, DTS, DOLBY, AVS OR MPEGLA, ETC.)
* IN ALLWINNERSSDK 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 PARTYS 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__ */