123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 |
- /****************************************************************************
- * drivers/input/mxt.h
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership. The
- * ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- ****************************************************************************/
- #ifndef __DRIVERS_INPUT_MXT_H
- #define __DRIVERS_INPUT_MXT_H
- /****************************************************************************
- * Included Files
- ****************************************************************************/
- #include <nuttx/config.h>
- /****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
- /* Configuration ************************************************************/
- /* Support T6 only if debug is enabled */
- #undef MXT_SUPPORT_T6
- #if !defined(CONFIG_DEBUG_FEATURES)
- # undef CONFIG_DEBUG_INFO
- # undef CONFIG_DEBUG_INPUT
- #endif
- #if defined(CONFIG_DEBUG_INFO) && defined(CONFIG_DEBUG_INPUT)
- # define MXT_SUPPORT_T6 1
- #endif
- /* MXT Register Definitions *************************************************/
- #define MXT_INFO 0x00 /* 7-bit info block */
- # define MXT_FAMILY_ID 0x00 /* MXT family ID */
- # define MXT_VARIANT_ID 0x01 /* MXT variant ID */
- # define MXT_VERSION 0x02 /* MXT version number */
- # define MXT_BUILD 0x03 /* MXT build number */
- # define MXT_MATRIX_X_SIZE 0x04 /* Matrix X size */
- # define MXT_MATRIX_Y_SIZE 0x05 /* Matrix Y size */
- # define MXT_OBJECT_NUM 0x06 /* Number of objects */
- #define MXT_OBJECT_START 0x07
- /* Object types */
- #define MXT_GEN_MESSAGE_T5 5
- #define MXT_GEN_COMMAND_T6 6
- #define MXT_GEN_POWER_T7 7
- #define MXT_GEN_ACQUIRE_T8 8
- #define MXT_TOUCH_MULTI_T9 9
- #define MXT_TOUCH_KEYARRAY_T15 15
- #define MXT_SPT_COMMSCONFIG_T18 18
- #define MXT_SPT_GPIOPWM_T19 19
- #define MXT_PROCI_GRIPFACE_T20 20
- #define MXT_PROCG_NOISE_T22 22
- #define MXT_TOUCH_PROXIMITY_T23 23
- #define MXT_PROCI_ONETOUCH_T24 24
- #define MXT_SPT_SELFTEST_T25 25
- #define MXT_PROCI_TWOTOUCH_T27 27
- #define MXT_SPT_CTECONFIG_T28 28
- #define MXT_DEBUG_DIAGNOSTIC_T37 37
- #define MXT_SPT_USERDATA_T38 38
- #define MXT_PROCI_GRIP_T40 40
- #define MXT_PROCI_PALM_T41 41
- #define MXT_PROCI_TOUCHSUPPRESSION_T42 42
- #define MXT_SPT_DIGITIZER_T43 43
- #define MXT_SPT_MESSAGECOUNT_T44 44
- #define MXT_SPT_CTECONFIG_T46 46
- #define MXT_PROCI_STYLUS_T47 47
- #define MXT_PROCG_NOISESUPPRESSION_T48 48
- #define MXT_TOUCH_PROXKEY_T52 52
- #define MXT_GEN_DATASOURCE_T53 53
- /* MXT_GEN_COMMAND_T6 field */
- #define MXT_COMMAND_RESET 0
- #define MXT_COMMAND_BACKUPNV 1
- #define MXT_COMMAND_CALIBRATE 2
- #define MXT_COMMAND_REPORTALL 3
- #define MXT_COMMAND_DIAGNOSTIC 5
- /* MXT_GEN_POWER_T7 field */
- #define MXT_POWER_IDLEACQINT 0
- #define MXT_POWER_ACTVACQINT 1
- #define MXT_POWER_ACTV2IDLETO 2
- /* MXT_GEN_ACQUIRE_T8 field */
- #define MXT_ACQUIRE_CHRGTIME 0
- #define MXT_ACQUIRE_TCHDRIFT 2
- #define MXT_ACQUIRE_DRIFTST 3
- #define MXT_ACQUIRE_TCHAUTOCAL 4
- #define MXT_ACQUIRE_SYNC 5
- #define MXT_ACQUIRE_ATCHCALST 6
- #define MXT_ACQUIRE_ATCHCALSTHR 7
- /* MXT_TOUCH_MULTI_T9 field */
- #define MXT_TOUCH_CTRL 0
- #define MXT_TOUCH_XORIGIN 1
- #define MXT_TOUCH_YORIGIN 2
- #define MXT_TOUCH_XSIZE 3
- #define MXT_TOUCH_YSIZE 4
- #define MXT_TOUCH_BLEN 6
- #define MXT_TOUCH_TCHTHR 7
- #define MXT_TOUCH_TCHDI 8
- #define MXT_TOUCH_ORIENT 9
- #define MXT_TOUCH_MOVHYSTI 11
- #define MXT_TOUCH_MOVHYSTN 12
- #define MXT_TOUCH_NUMTOUCH 14
- #define MXT_TOUCH_MRGHYST 15
- #define MXT_TOUCH_MRGTHR 16
- #define MXT_TOUCH_AMPHYST 17
- #define MXT_TOUCH_XRANGE_LSB 18
- #define MXT_TOUCH_XRANGE_MSB 19
- #define MXT_TOUCH_YRANGE_LSB 20
- #define MXT_TOUCH_YRANGE_MSB 21
- #define MXT_TOUCH_XLOCLIP 22
- #define MXT_TOUCH_XHICLIP 23
- #define MXT_TOUCH_YLOCLIP 24
- #define MXT_TOUCH_YHICLIP 25
- #define MXT_TOUCH_XEDGECTRL 26
- #define MXT_TOUCH_XEDGEDIST 27
- #define MXT_TOUCH_YEDGECTRL 28
- #define MXT_TOUCH_YEDGEDIST 29
- #define MXT_TOUCH_JUMPLIMIT 30
- /* MXT_PROCI_GRIPFACE_T20 field */
- #define MXT_GRIPFACE_CTRL 0
- #define MXT_GRIPFACE_XLOGRIP 1
- #define MXT_GRIPFACE_XHIGRIP 2
- #define MXT_GRIPFACE_YLOGRIP 3
- #define MXT_GRIPFACE_YHIGRIP 4
- #define MXT_GRIPFACE_MAXTCHS 5
- #define MXT_GRIPFACE_SZTHR1 7
- #define MXT_GRIPFACE_SZTHR2 8
- #define MXT_GRIPFACE_SHPTHR1 9
- #define MXT_GRIPFACE_SHPTHR2 10
- #define MXT_GRIPFACE_SUPEXTTO 11
- /* MXT_PROCI_NOISE field */
- #define MXT_NOISE_CTRL 0
- #define MXT_NOISE_OUTFLEN 1
- #define MXT_NOISE_GCAFUL_LSB 3
- #define MXT_NOISE_GCAFUL_MSB 4
- #define MXT_NOISE_GCAFLL_LSB 5
- #define MXT_NOISE_GCAFLL_MSB 6
- #define MXT_NOISE_ACTVGCAFVALID 7
- #define MXT_NOISE_NOISETHR 8
- #define MXT_NOISE_FREQHOPSCALE 10
- #define MXT_NOISE_FREQ0 11
- #define MXT_NOISE_FREQ1 12
- #define MXT_NOISE_FREQ2 13
- #define MXT_NOISE_FREQ3 14
- #define MXT_NOISE_FREQ4 15
- #define MXT_NOISE_IDLEGCAFVALID 16
- /* MXT_SPT_COMMSCONFIG_T18 */
- #define MXT_COMMS_CTRL 0
- #define MXT_COMMS_CMD 1
- /* MXT_SPT_CTECONFIG_T28 field */
- #define MXT_CTE_CTRL 0
- #define MXT_CTE_CMD 1
- #define MXT_CTE_MODE 2
- #define MXT_CTE_IDLEGCAFDEPTH 3
- #define MXT_CTE_ACTVGCAFDEPTH 4
- #define MXT_CTE_VOLTAGE 5
- #define MXT_VOLTAGE_DEFAULT 2700000
- #define MXT_VOLTAGE_STEP 10000
- /* Definitions for MXT_GEN_COMMAND_T6 */
- #define MXT_BOOT_VALUE 0xa5
- #define MXT_BACKUP_VALUE 0x55
- #define MXT_BACKUP_TIME 50000 /* microseconds */
- #define MXT_RESET_TIME 500000 /* microseconds */
- /* MXT_SPT_GPIOPWM_T19 field */
- #define MXT_MAX_BUTTONS 4 /* Up to four buttons */
- #define MXT_GPIO0_MASK 0x04
- #define MXT_GPIO1_MASK 0x08
- #define MXT_GPIO2_MASK 0x10
- #define MXT_GPIO3_MASK 0x20
- /* Command to unlock bootloader */
- #define MXT_UNLOCK_CMD_MSB 0xaa
- #define MXT_UNLOCK_CMD_LSB 0xdc
- /* Bootloader mode status */
- #define MXT_WAITING_BOOTLOAD_CMD 0xc0 /* Valid 7 6 bit only */
- #define MXT_WAITING_FRAME_DATA 0x80 /* Valid 7 6 bit only */
- #define MXT_FRAME_CRC_CHECK 0x02
- #define MXT_FRAME_CRC_FAIL 0x03
- #define MXT_FRAME_CRC_PASS 0x04
- #define MXT_APP_CRC_FAIL 0x40 /* Valid 7 8 bit only */
- #define MXT_BOOT_STATUS_MASK 0x3f
- /* Touch status */
- #define MXT_UNGRIP (1 << 0)
- #define MXT_SUPPRESS (1 << 1)
- #define MXT_AMP (1 << 2)
- #define MXT_VECTOR (1 << 3)
- #define MXT_MOVE (1 << 4)
- #define MXT_RELEASE (1 << 5)
- #define MXT_PRESS (1 << 6)
- #define MXT_DETECT (1 << 7)
- /* Touchscreen absolute values */
- #define MXT_MAX_AREA 0xff
- #define MXT_PIXELS_PER_MM 20
- /****************************************************************************
- * Public Types
- ****************************************************************************/
- /* This structure describes one maXTouch object */
- struct mxt_object_s
- {
- uint8_t type; /* Object type */
- uint8_t addr[2]; /* Start address */
- uint8_t size; /* Size of each instance - 1 */
- uint8_t ninstances; /* Number of instances - 1 */
- uint8_t nids; /* Number of report IDs */
- };
- #define MXT_OBJECT_SIZE 6
- /* This structure describes one maXTouch message */
- struct mxt_msg_s
- {
- uint8_t id; /* Report ID */
- uint8_t body[7]; /* Message body */
- };
- /****************************************************************************
- * Public Data
- ****************************************************************************/
- #ifdef __cplusplus
- #define EXTERN extern "C"
- extern "C"
- {
- #else
- #define EXTERN extern
- #endif
- /****************************************************************************
- * Public Function Prototypes
- ****************************************************************************/
- #undef EXTERN
- #ifdef __cplusplus
- }
- #endif
- #endif /* __DRIVERS_INPUT_MXT_H */
|