| /**************************************************************************** |
| * 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 */ |