📄 wmtouchdefs.h
字号:
/*-----------------------------------------------------------------------------
* Copyright (c) Wolfson Microelectronics plc. All rights reserved.
*
* This software as well as any related documentation is furnished under
* license and may only be used or copied in accordance with the terms of the
* license. The information in this file is furnished for informational use
* only, is subject to change without notice, and should not be construed as
* a commitment by Wolfson Microelectronics plc. Wolfson Microelectronics plc
* assumes no responsibility or liability for any errors or inaccuracies that
* may appear in this document or any software that may be provided in
* association with this document.
*
* Except as permitted by such license, no part of this document may be
* reproduced, stored in a retrieval system, or transmitted in any form or by
* any means without the express written consent of Wolfson Microelectronics plc.
*
* $Id: WMTouchDefs.h 1509 2005-04-01 13:07:24Z ib $
*
* Common Wolfson touch register defines.
*
* Warning:
* This driver is specifically written for Wolfson Codecs. It is not a
* general CODEC device driver.
*
*---------------------------------------------------------------------------*/
#ifndef __WMTOUCHDEFS_H__
#define __WMTOUCHDEFS_H__
/*
* Include files
*/
/*-----------------------------------------------------------------------------
* Mask definitions for WM97_DIGITISER_CONTROL1 (76h).
*/
/*
* Starts a single polled conversion (reset itself at completion)
* WM_TOUCHCTRL_POLL is for pre-ADCSEL devices (WM9705 and WM9712).
* WM_ADCSEL_POLL is for ADCSEL devices.
*/
#define WM_TOUCHCTRL_POLL ((WM_REGVAL) (1U << 15))
#define WM_ADCSEL_POLL ((WM_REGVAL) (1U << 9))
/*
* Selects the ADC of the single conversion in polled mode, or extra
* conversion in coordinate or continous mode.
*
* Also indicates the ADC corresponding to a given reading.
*
* Note: for selection, these apply to the WM9705 and WM9712 only.
* All readings use these definitions (even if configured using the ADCSEL bits).
*/
#define WM_AUXADC_MASK 0x7000
/* Flag definitions */
#define WM_AUXADC_X_COORD 0x1000
#define WM_AUXADC_Y_COORD 0x2000
#define WM_AUXADC_PRESSURE 0x3000
/* WM9705 AUXADCs */
#define WM9705_AUXADC_BMON 0x4000
#define WM_AUXADC_AUXADC 0x5000
#define WM_AUXADC_PHONE 0x6000
#define WM_AUXADC_PCBEEP 0x7000
/* WM9712 AUXADCs */
#define WM_AUXADC_COMP1 0x4000
#define WM_AUXADC_AUX1 0x4000
#define WM_AUXADC_COMP2 0x5000
#define WM_AUXADC_AUX2 0x5000
#define WM_AUXADC_BMON 0x6000
#define WM_AUXADC_AUX3 0x6000
#define WM_AUXADC_WIPER 0x7000
#define WM_AUXADC_AUX4 0x7000
/* WM9713 AUXADCs */
#define WM_AUXADC_SPKMON 0x6000
/*
* Selects the ADC of the single conversion in polled mode, or the
* conversions in continous mode.
*
* Note: these apply to devices which have a separate ADCSEL register.
*/
#define WM_ADCSEL_MASK 0x00FE
/* Flag definitions */
#define WM_ADCSEL_X_COORD (1U << 1)
#define WM_ADCSEL_Y_COORD (1U << 2)
#define WM_ADCSEL_PRESSURE (1U << 3)
#define WM_ADCSEL_AUX1 (1U << 4)
#define WM_ADCSEL_AUX2 (1U << 5)
#define WM_ADCSEL_SPKMON (1U << 6)
#define WM_ADCSEL_AUX3 (1U << 6)
#define WM_ADCSEL_AUX4 (1U << 7)
/*
* Selects a co-ordinate set of conversion
*
* WM_TOUCHCTRL_COO is for pre-ADCSEL devices (WM9705 and WM9712).
* WM_ADCSEL_COO is for ADCSEL devices.
*/
#define WM_TOUCHCTRL_COO ((WM_REGVAL) (1 << 11))
#define WM_ADCSEL_COO ((WM_REGVAL) (1U << 0))
/*
* Starts continuous conversion operation
*
* WM_TOUCHCTRL_CTC is for pre-ADCSEL devices (WM9705 and WM9712).
* WM_ADCSEL_CTC is for ADCSEL devices.
*/
#define WM_TOUCHCTRL_CTC ((WM_REGVAL) (1 << 10))
#define WM_ADCSEL_CTC ((WM_REGVAL) (1U << 8))
/*
* rate of continuous conversion
*/
#define WM97_TOUCHCTRL_CR_MASK 0x0300
#define WM97_TOUCHCTRL_CR_512 0x0000 /* 93.75Hz or 512 AC link frames */
#define WM97_TOUCHCTRL_CR_256 0x0100 /* 187.5Hz or 256 AC link frames */
#define WM97_TOUCHCTRL_CR_128 0x0200 /* 375Hz or 128 AC link frames */
#define WM97_TOUCHCTRL_CR_64 0x0300 /* 750Hz or 64 AC link frames */
#define WM97_TOUCHCTRL_CR_94Hz WM97_TOUCHCTRL_CR_512
#define WM97_TOUCHCTRL_CR_187Hz WM97_TOUCHCTRL_CR_256
#define WM97_TOUCHCTRL_CR_375Hz WM97_TOUCHCTRL_CR_128
#define WM97_TOUCHCTRL_CR_750Hz WM97_TOUCHCTRL_CR_64
/*
* And on the ADCSEL chips.
*/
#define WM9713_TOUCHCTRL_CR_512 0x0000 /* 93.75Hz or 512 AC link frames */
#define WM9713_TOUCHCTRL_CR_400 0x0100 /* 120Hz or 400 AC link frames */
#define WM9713_TOUCHCTRL_CR_312 0x0200 /* ~153.85Hz or 312 AC link frames */
#define WM9713_TOUCHCTRL_CR_256 0x0300 /* 187.5Hz or 256 AC link frames */
#define WM9713_TOUCHCTRL_CR_94Hz WM9713_TOUCHCTRL_CR_512
#define WM9713_TOUCHCTRL_CR_120Hz WM9713_TOUCHCTRL_CR_400
#define WM9713_TOUCHCTRL_CR_154Hz WM9713_TOUCHCTRL_CR_312
#define WM9713_TOUCHCTRL_CR_187Hz WM9713_TOUCHCTRL_CR_256
/* set the delay between screen being driven and X or Y sample being taken */
#define WM_TOUCHCTRL_DEL_MASK 0x00F0
#define WM_TOUCHCTRL_DEL_1 0x0000 /* delay one frame */
#define WM_TOUCHCTRL_DEL_2 0x0010 /* delay 2 frames */
#define WM_TOUCHCTRL_DEL_4 0x0020 /* delay 4 frames */
#define WM_TOUCHCTRL_DEL_8 0x0030 /* delay 8 frames */
#define WM_TOUCHCTRL_DEL_16 0x0040 /* delay 16 frames */
#define WM_TOUCHCTRL_DEL_32 0x0050 /* delay 32 frames */
#define WM_TOUCHCTRL_DEL_48 0x0060 /* delay 48 frames */
#define WM_TOUCHCTRL_DEL_64 0x0070 /* delay 64 frames */
#define WM_TOUCHCTRL_DEL_96 0x0080 /* delay 96 frames */
#define WM_TOUCHCTRL_DEL_128 0x0090 /* delay 128 frames */
#define WM_TOUCHCTRL_DEL_160 0x00A0 /* delay 160 frames */
#define WM_TOUCHCTRL_DEL_192 0x00B0 /* delay 192 frames */
#define WM_TOUCHCTRL_DEL_224 0x00C0 /* delay 224 frames */
#define WM_TOUCHCTRL_DEL_256 0x00D0 /* delay 256 frames */
#define WM_TOUCHCTRL_DEL_288 0x00E0 /* delay 288 frames */
#define WM_TOUCHCTRL_DEL_0 0x00F0 /* no delay - switch matrix always on */
/* slot enable bit; allows conversion results to be output onto chosen slot */
#define WM97_TOUCHCTRL_SLEN ((WM_REGVAL) (1 << 3))
/*
* slot select bits, choose which slot to output data result in
*/
#define WM97_TOUCHCTRL_SLT_MASK 0x0007 /* Field mask */
#define WM97_TOUCHCTRL_SLT_5 0x0000 /* Slot 5 */
#define WM97_TOUCHCTRL_SLT_6 0x0001 /* Slot 6 */
#define WM97_TOUCHCTRL_SLT_7 0x0002 /* Slot 7 */
#define WM97_TOUCHCTRL_SLT_8 0x0003 /* Slot 8 */
#define WM97_TOUCHCTRL_SLT_9 0x0004 /* Slot 9 */
#define WM97_TOUCHCTRL_SLT_10 0x0005 /* Slot 10 */
#define WM97_TOUCHCTRL_SLT_11 0x0006 /* Slot 11 */
/*-----------------------------------------------------------------------------
* Mask definitions for WM97_DIGITISER_CONTROL_STD (78h).
*/
/*
* Pen detect and powerdown control.
*/
#define WM97_TOUCHSETUP_PRP_PDW_MASK 0xC000 /* Mask for PDW field */
#define WM97_TOUCHSETUP_PRP_PDW_3 0xC000 /* pen digitiser powered up */
#define WM97_TOUCHSETUP_PRP_PDW_2 0x8000 /* pen digitiser powered off, pen detect enabled, no wakeup on pen down */
#define WM97_TOUCHSETUP_PRP_PDW_1 0x4000 /* powered off, pen detect enabled, wakeup on pendown */
#define WM97_TOUCHSETUP_PRP_PDW_0 0x0000 /* powered down, pen detect disabled, no wakeup on pendown */
/*
* For WM9705 Rev B and earlier these were just two separate bits
*/
/* Pen digitiser power down bit; 0: power on ; 1: power off */
#define WM97_TOUCHSETUP_PRP ((WM_REGVAL) (1 << 15))
/* enables pr4 reset on pen down wake up */
#define WM97_TOUCHSETUP_PDW ((WM_REGVAL) (1 << 14))
/*
* Pen-Down Wake-up disable; setting this bit prevents PRP from being reset if
* pen down is detected, so stopping powering up of the digitiser
*/
#define WM97_TOUCHSETUP_RPR ((WM_REGVAL) (1 << 13))
/* causes conversions and screen drivers to stop when pen is not down */
#define WM9705_TOUCHSETUP_PDEN ((WM_REGVAL) (1 << 12))
#define WM9712_13_TOUCHSETUP_PDEN ((WM_REGVAL) (1 << 11))
/* inverts sense of pendet outputl default 0 causes pen=down to give a 1 output */
#define WM9705_TOUCHSETUP_PINV ((WM_REGVAL) (1 << 11) )
/*
* busy flag enable, outputs converter busy signal on pin 47
* goes low at end of conversion to indicate result available
*/
#define WM9705_TOUCHSETUP_BSEN ((WM_REGVAL) (1 << 10))
/* invert sense of busy flag output */
#define WM9705_TOUCHSETUP_BINV ((WM_REGVAL) (1 << 9))
/*
* wait bitl: setting this bit causes conversion operations to halt when a result
* is to be written to the dat aregister 7Ah, if the last stored result has not
* been read. conversions commence again once the result has been read
*/
#define WM9705_TOUCHSETUP_WAIT ((WM_REGVAL) (1 << 8))
#define WM9712_13_TOUCHSETUP_WAIT ((WM_REGVAL) (1 << 7))
/* pressure current reduce bit (0: 200uA; 1: 50 uA) */
#define WM9705_TOUCHSETUP_PIL ((WM_REGVAL) (1 << 7))
#define WM9712_13_TOUCHSETUP_PIL ((WM_REGVAL) (1 << 6))
/* sets phone and pcbeep inputs to be high impedance (disconnects from mixer) */
#define WM9705_TOUCHSETUP_PHIZ ((WM_REGVAL) (1 << 6))
/*
* select what effect mask input:
* 00: masks pin ignored;
* 01: mask pin is static; hi halts conversion
* 10: mask pin is edge sensitive; rising or falling delays convrsions by del[0-3]
* 11: mask pin becomes a synchronise input; conversion happen after edge
*/
#define WM9705_TOUCHSETUP_MASK 0x0030
#define WM9705_TOUCHSETUP_MSK_0 0x0000
#define WM9705_TOUCHSETUP_MSK_1 0x0010
#define WM9705_TOUCHSETUP_MSK_2 0x0020
#define WM9705_TOUCHSETUP_MSK_3 0x0030
#define WM9712_13_TOUCHSETUP_MASK 0x00C0
#define WM9712_13_TOUCHSETUP_MSK_0 0x0000
#define WM9712_13_TOUCHSETUP_MSK_1 0x0040
#define WM9712_13_TOUCHSETUP_MSK_2 0x0080
#define WM9712_13_TOUCHSETUP_MSK_3 0x00C0
/*
* pen detect comparator threshold; 16 steps between 0 and Vmid
*/
#define WM97_TOUCHSETUP_PDD_0 0x0000
#define WM97_TOUCHSETUP_PDD_1 0x0001
#define WM97_TOUCHSETUP_PDD_2 0x0002
#define WM97_TOUCHSETUP_PDD_3 0x0003
#define WM97_TOUCHSETUP_PDD_4 0x0004
#define WM97_TOUCHSETUP_PDD_5 0x0005
#define WM97_TOUCHSETUP_PDD_6 0x0006
#define WM97_TOUCHSETUP_PDD_7 0x0007
#define WM97_TOUCHSETUP_PDD_8 0x0008
#define WM97_TOUCHSETUP_PDD_9 0x0009
#define WM97_TOUCHSETUP_PDD_10 0x000A
#define WM97_TOUCHSETUP_PDD_11 0x000B
#define WM97_TOUCHSETUP_PDD_12 0x000C
#define WM97_TOUCHSETUP_PDD_13 0x000D
#define WM97_TOUCHSETUP_PDD_14 0x000E
#define WM97_TOUCHSETUP_PDD_15 0x000F
/* Internal Pull-up Resistor for Pen Detection bits 0:5 (WM9712 and WM9713 only) */
#define WM9712_13_TOUCHSETUP_RPU_1 0x0001
#define WM9712_13_TOUCHSETUP_RPU_MASK 0x003F
/* Touch Panel type selection bit 12 (WM9712 and WM9713 only) */
#define WM9712_13_TOUCHSETUP_5WIRE ((WM_REGVAL) (1 << 12))/* 4 wire is 0 */
/* Touch pannel Pen Doen Invert bit 10 (WM9713 only) */
#define WM97_TOUCHSETUP_PDPOL (1U<<10)
#define WM9713_PENDOWN_INVERT WM97_TOUCHSETUP_PDPOL
/*-----------------------------------------------------------------------------
* Mask definitions for WM_DIGITISER_DATA (7Ah) and data received through the
* designated slot in streaming mode.
*/
/* Whether the pen is down */
#define WM_DATA_PENDOWN ((WM_REGVAL) (1 << 15))
/*
* ADC control definitions - e.g. touchscreen and battery-monitor.
* Note the WM_ADC_XXX constants from register 76h also apply to
* this register for bits 14:12.
*/
/* Mask for the value */
#define WM_DATA_VAL 0x0FFF
#endif /* __WMTOUCHDEFS_H__ */
/*------------------------------ END OF FILE ---------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -