/* * Copyright (c) 2014 The DragonFly Project. All rights reserved. * * This code is derived from software contributed to The DragonFly Project * by Matthew Dillon * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3. Neither the name of The DragonFly Project nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific, prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT HOLDERS OR CONTRIBUTORS 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. * *------------------------------------------------------------------------------ * Copyright 2011 Atmel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY ATMEL ''AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL ATMEL OR CONTRIBUTORS 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. *----------------------------------------------------------------------------- */ /* * This file contains a mix of code taken from the atmel-maxtouch/obp-utils * github codebase and my own for testing the atmel touchscreen chipset in * the Acer C720P chromebook. * * I have rewritten the linux mess for the most part. */ #ifndef _OBP_UTILS_H_ #define _OBP_UTILS_H_ /* * CRC structure hangs off the end of the object configuration array and * is calculated against { mxt_id_info, mxt_object[num_objects] }. * * { mxt_id_info, mxt_object[num_objects], mxt_raw_crc } */ struct mxt_raw_crc { uint16_t CRC; /* low 16 bits */ uint8_t CRC_hi; /* high 8 bits */ } __packed; /* * register 0 - Base information structure */ struct mxt_id_info { uint8_t family; /*!< Device family */ uint8_t variant; /*!< Device variant */ uint8_t version; /*!< Firmware version (Major/minor nibbles) */ uint8_t build; /*!< Firmware build number */ uint8_t matrix_x_size; /*!< Matrix X Size */ uint8_t matrix_y_size; /*!< Matrix Y Size */ /*! Number of elements in the object table. The actual number of * objects can be different if any object has more than one * instance. */ uint8_t num_objects; } __packed; /* * register 0 - Object configuration element(s) (occurs after mxt_id_info) */ struct mxt_object { uint8_t type; /* object type */ uint8_t start_pos_lsb; /* start address of config structure */ uint8_t start_pos_msb; /* start address of config structure */ uint8_t size_minus_one; /* size of config - 1 */ uint8_t instances_minus_one; /* #of instances of object - 1 */ uint8_t num_report_ids; /* max# of touches, sliders, buts, etc*/ } __packed; /* * message structures (MXT_GEN_MESSAGEPROCESSOR) */ struct mxt_message_any { uint8_t reportid; uint8_t data[7]; } __packed; struct mxt_message_touch { uint8_t reportid; uint8_t flags; /* msg[0] */ uint8_t pos[3]; /* xxxxxxxx(hi) yyyyyyyy(hi) xxxxyyyy(lo) */ uint8_t area; uint8_t amplitude; } __packed; #define MXT_MSGF_DETECT 0x80 #define MXT_MSGF_PRESS 0x40 #define MXT_MSGF_RELEASE 0x20 #define MXT_MSGF_MOVE 0x10 #define MXT_MSGF_VECTOR 0x08 #define MXT_MSGF_AMP 0x04 #define MXT_MSGF_SUPPRESS 0x02 #define MXT_MSGF_UNGRIP 0x01 union mxt_message { struct mxt_message_touch any; struct mxt_message_touch touch; } __packed; typedef union mxt_message mxt_message_t; /* * Object types */ #define MXT_RESERVED_T0 0 #define MXT_RESERVED_T1 1 #define MXT_DEBUG_DELTAS 2 #define MXT_DEBUG_REFERENCES 3 #define MXT_SIGNALS 4 #define MXT_GEN_MESSAGEPROCESSOR 5 #define MXT_GEN_COMMANDPROCESSOR 6 #define MXT_GEN_POWERCONFIG 7 #define MXT_ACQUISITIONCONFIG 8 #define MXT_TOUCH_MULTITOUCHSCREEN9 9 #define MXT_TOUCH_SINGLETOUCHSCREEN 10 #define MXT_TOUCH_XSLIDER 11 #define MXT_TOUCH_YSLIDER 12 #define MXT_TOUCH_XWHEEL 13 #define MXT_TOUCH_YWHEEL 14 #define MXT_TOUCH_KEYARRAY 15 #define MXT_PROCG_SIGNALFILTER 16 #define MXT_PROCI_LINEARIZATIONTABLE 17 #define MXT_SPT_COMMSCONFIG 18 #define MXT_SPT_GPIOPWM 19 #define MXT_PROCI_GRIPFACESUPPRESSION 20 #define MXT_RESERVED21 21 #define MXT_PROCG_NOISESUPPRESSION22 22 #define MXT_TOUCH_PROXIMITY 23 #define MXT_PROCI_ONETOUCHGESTUREPROCESSOR 24 #define MXT_SPT_SELFTEST 25 #define MXT_DEBUG_CTERANGE 26 #define MXT_PROCI_TWOTOUCHGESTUREPROCESSOR 27 #define MXT_SPT_CTECONFIG28 28 #define MXT_SPT_GPI 29 #define MXT_SPT_GATE 30 #define MXT_TOUCH_KEYSET 31 #define MXT_TOUCH_XSLIDERSET 32 #define MXT_RESERVED33 33 #define MXT_GEN_MESSAGEBLOCK 34 #define MXT_SPT_PROTOTYPE 35 #define MXT_RESERVED36 36 #define MXT_DEBUG_DIAGNOSTIC 37 #define MXT_SPT_USERDATA 38 #define MXT_SPARE39 39 #define MXT_PROCI_GRIPSUPPRESSION 40 #define MXT_PROCI_PALMSUPPRESSION 41 #define MXT_PROCI_TOUCHSUPPRESSION 42 #define MXT_SPT_DIGITIZER 43 #define MXT_SPT_MESSAGECOUNT 44 #define MXT_PROCI_VIRTUALKEY 45 #define MXT_SPT_CTECONFIG46 46 #define MXT_PROCI_STYLUS 47 #define MXT_PROCG_NOISESUPPRESSION48 48 #define MXT_GEN_DUALPULSE 49 #define MXT_SPARE50 50 #define MXT_SPT_SONY_CUSTOM 51 #define MXT_TOUCH_PROXKEY 52 #define MXT_GEN_DATASOURCE 53 #define MXT_PROCG_NOISESUPPRESSION54 54 #define MXT_PROCI_ADAPTIVETHRESHOLD 55 #define MXT_PROCI_SHIELDLESS 56 #define MXT_PROCI_EXTRATOUCHSCREENDATA 57 #define MXT_SPT_EXTRANOISESUPCTRLS 58 #define MXT_SPT_FASTDRIFT 59 #define MXT_SPT_TIMER 61 #define MXT_PROCG_NOISESUPPRESSION62 62 #define MXT_PROCI_ACTIVESTYLUS63 63 #define MXT_SPT_REFERENCERELOAD 64 #define MXT_PROCI_LENSBENDING 65 #define MXT_SPT_GOLDENREFERENCES 66 #define MXT_PROCI_CUSTOMGESTUREPROCESSOR 67 #define MXT_SERIAL_DATA_COMMAND 68 #define MXT_PROCI_PALMGESTUREPROCESSOR 69 #define MXT_SPT_DYNAMICCONFIGURATIONCONTROLLER 70 #define MXT_SPT_DYNAMICCONFIGURATIONCONTAINER 71 #define MXT_PROCG_NOISESUPPRESSION72 72 #define MXT_PROCI_ZONEINDICATION 73 #define MXT_PROCG_SIMPLEGESTUREPROCESSOR 74 #define MXT_MOTION_SENSING_OBJECT 75 #define MXT_PROCI_MOTION_GESTURES 76 #define MXT_SPT_CTESCANCONFIG 77 #define MXT_PROCI_GLOVEDETECTION 78 #define MXT_SPT_TOUCHEVENTTRIGGER 79 #define MXT_PROCI_RETRANSMISSIONCOMPENSATION 80 #define MXT_PROCI_UNLOCKGESTURE 81 #define MXT_SPT_NOISESUPEXTENSION 82 #define MXT_ENVIRO_LIGHTSENSING 83 #define MXT_PROCI_GESTUREPROCESSOR 84 #define MXT_PEN_ACTIVESTYLUSPOWER 85 #define MXT_PROCG_NOISESUPACTIVESTYLUS 86 #define MXT_PEN_ACTIVESTYLUSDATA 87 #define MXT_PEN_ACTIVESTYLUSRECEIVE 88 #define MXT_PEN_ACTIVESTYLUSTRANSMIT 89 #define MXT_PEN_ACTIVESTYLUSWINDOW 90 #define MXT_DEBUG_CUSTOMDATACONFIG 91 #define MXT_PROCI_SYMBOLGESTUREPROCESSOR 92 #define MXT_PROCI_TOUCHSEQUENCELOGGER 93 #define MXT_TOUCH_MULTITOUCHSCREEN 100 #define MXT_SPT_TOUCHSCREENHOVER 101 #define MXT_SPT_SELFCAPHOVERCTECONFIG 102 #define MXT_PROCI_SCHNOISESUPPRESSION 103 #define MXT_SPT_AUXTOUCHCONFIG 104 #define MXT_SPT_DRIVENPLATEHOVERCONFIG 105 #define MXT_SPT_ACTIVESTYLUSMMBCONFIG 106 #define MXT_PROCI_ACTIVESTYLUS107 107 #define MXT_PROCG_NOISESUPSELFCAP 108 #define MXT_SPT_SELFCAPGLOBALCONFIG 109 #define MXT_SPT_SELFCAPTUNINGPARAMS 110 #define MXT_SPT_SELFCAPCONFIG 111 #define MXT_SPT_PROXMEASURECONFIG 113 #define MXT_GEN_INFOBLOCK16BIT 254 #define MXT_RESERVED255 255 #define MXTSTR(label) #label #define MXT_INIT_STRINGS \ { MXTSTR(MXT_RESERVED_T0), \ MXT_RESERVED_T0 }, \ { MXTSTR(MXT_RESERVED_T1), \ MXT_RESERVED_T1 }, \ { MXTSTR(MXT_DEBUG_DELTAS), \ MXT_DEBUG_DELTAS }, \ { MXTSTR(MXT_DEBUG_REFERENCES), \ MXT_DEBUG_REFERENCES }, \ { MXTSTR(MXT_SIGNALS), \ MXT_SIGNALS }, \ { MXTSTR(MXT_GEN_MESSAGEPROCESSOR), \ MXT_GEN_MESSAGEPROCESSOR }, \ { MXTSTR(MXT_GEN_COMMANDPROCESSOR), \ MXT_GEN_COMMANDPROCESSOR }, \ { MXTSTR(MXT_GEN_POWERCONFIG), \ MXT_GEN_POWERCONFIG }, \ { MXTSTR(MXT_ACQUISITIONCONFIG), \ MXT_ACQUISITIONCONFIG }, \ { MXTSTR(MXT_TOUCH_MULTITOUCHSCREEN), \ MXT_TOUCH_MULTITOUCHSCREEN }, \ { MXTSTR(MXT_TOUCH_SINGLETOUCHSCREEN), \ MXT_TOUCH_SINGLETOUCHSCREEN }, \ { MXTSTR(MXT_TOUCH_XSLIDER), \ MXT_TOUCH_XSLIDER }, \ { MXTSTR(MXT_TOUCH_YSLIDER), \ MXT_TOUCH_YSLIDER }, \ { MXTSTR(MXT_TOUCH_XWHEEL), \ MXT_TOUCH_XWHEEL }, \ { MXTSTR(MXT_TOUCH_YWHEEL), \ MXT_TOUCH_YWHEEL }, \ { MXTSTR(MXT_TOUCH_KEYARRAY), \ MXT_TOUCH_KEYARRAY }, \ { MXTSTR(MXT_PROCG_SIGNALFILTER), \ MXT_PROCG_SIGNALFILTER }, \ { MXTSTR(MXT_PROCI_LINEARIZATIONTABLE), \ MXT_PROCI_LINEARIZATIONTABLE }, \ { MXTSTR(MXT_SPT_COMMSCONFIG), \ MXT_SPT_COMMSCONFIG }, \ { MXTSTR(MXT_SPT_GPIOPWM), \ MXT_SPT_GPIOPWM }, \ { MXTSTR(MXT_PROCI_GRIPFACESUPPRESSION), \ MXT_PROCI_GRIPFACESUPPRESSION }, \ { MXTSTR(MXT_RESERVED21), \ MXT_RESERVED21 }, \ { MXTSTR(MXT_PROCG_NOISESUPPRESSION22), \ MXT_PROCG_NOISESUPPRESSION22 }, \ { MXTSTR(MXT_PROCG_NOISESUPPRESSION48), \ MXT_PROCG_NOISESUPPRESSION48 }, \ { MXTSTR(MXT_PROCG_NOISESUPPRESSION54), \ MXT_PROCG_NOISESUPPRESSION54 }, \ { MXTSTR(MXT_PROCG_NOISESUPPRESSION62), \ MXT_PROCG_NOISESUPPRESSION62 }, \ { MXTSTR(MXT_PROCG_NOISESUPPRESSION72), \ MXT_PROCG_NOISESUPPRESSION72 }, \ { MXTSTR(MXT_TOUCH_PROXIMITY), \ MXT_TOUCH_PROXIMITY }, \ { MXTSTR(MXT_PROCI_ONETOUCHGESTUREPROCESSOR), \ MXT_PROCI_ONETOUCHGESTUREPROCESSOR }, \ { MXTSTR(MXT_SPT_SELFTEST), \ MXT_SPT_SELFTEST }, \ { MXTSTR(MXT_DEBUG_CTERANGE), \ MXT_DEBUG_CTERANGE }, \ { MXTSTR(MXT_PROCI_TWOTOUCHGESTUREPROCESSOR), \ MXT_PROCI_TWOTOUCHGESTUREPROCESSOR }, \ { MXTSTR(MXT_SPT_CTECONFIG28), \ MXT_SPT_CTECONFIG28 }, \ { MXTSTR(MXT_SPT_CTECONFIG46), \ MXT_SPT_CTECONFIG46 }, \ { MXTSTR(MXT_SPT_GPI), \ MXT_SPT_GPI }, \ { MXTSTR(MXT_SPT_GATE), \ MXT_SPT_GATE }, \ { MXTSTR(MXT_TOUCH_KEYSET), \ MXT_TOUCH_KEYSET }, \ { MXTSTR(MXT_TOUCH_XSLIDERSET), \ MXT_TOUCH_XSLIDERSET }, \ { MXTSTR(MXT_RESERVED33), \ MXT_RESERVED33 }, \ { MXTSTR(MXT_GEN_MESSAGEBLOCK), \ MXT_GEN_MESSAGEBLOCK }, \ { MXTSTR(MXT_SPT_PROTOTYPE), \ MXT_SPT_PROTOTYPE }, \ { MXTSTR(MXT_RESERVED36), \ MXT_RESERVED36 }, \ { MXTSTR(MXT_DEBUG_DIAGNOSTIC), \ MXT_DEBUG_DIAGNOSTIC }, \ { MXTSTR(MXT_SPT_USERDATA), \ MXT_SPT_USERDATA }, \ { MXTSTR(MXT_SPARE39), \ MXT_SPARE39 }, \ { MXTSTR(MXT_PROCI_GRIPSUPPRESSION), \ MXT_PROCI_GRIPSUPPRESSION }, \ { MXTSTR(MXT_PROCI_PALMSUPPRESSION), \ MXT_PROCI_PALMSUPPRESSION }, \ { MXTSTR(MXT_PROCI_TOUCHSUPPRESSION), \ MXT_PROCI_TOUCHSUPPRESSION }, \ { MXTSTR(MXT_SPT_DIGITIZER), \ MXT_SPT_DIGITIZER }, \ { MXTSTR(MXT_SPT_MESSAGECOUNT), \ MXT_SPT_MESSAGECOUNT }, \ { MXTSTR(MXT_PROCI_VIRTUALKEY), \ MXT_PROCI_VIRTUALKEY }, \ { MXTSTR(MXT_PROCI_STYLUS), \ MXT_PROCI_STYLUS }, \ { MXTSTR(MXT_GEN_DUALPULSE), \ MXT_GEN_DUALPULSE }, \ { MXTSTR(MXT_SPARE50), \ MXT_SPARE50 }, \ { MXTSTR(MXT_SPT_SONY_CUSTOM), \ MXT_SPT_SONY_CUSTOM }, \ { MXTSTR(MXT_TOUCH_PROXKEY), \ MXT_TOUCH_PROXKEY }, \ { MXTSTR(MXT_GEN_DATASOURCE), \ MXT_GEN_DATASOURCE }, \ { MXTSTR(MXT_PROCI_ADAPTIVETHRESHOLD), \ MXT_PROCI_ADAPTIVETHRESHOLD }, \ { MXTSTR(MXT_PROCI_SHIELDLESS), \ MXT_PROCI_SHIELDLESS }, \ { MXTSTR(MXT_PROCI_EXTRATOUCHSCREENDATA), \ MXT_PROCI_EXTRATOUCHSCREENDATA }, \ { MXTSTR(MXT_SPT_EXTRANOISESUPCTRLS), \ MXT_SPT_EXTRANOISESUPCTRLS }, \ { MXTSTR(MXT_SPT_FASTDRIFT), \ MXT_SPT_FASTDRIFT }, \ { MXTSTR(MXT_SPT_TIMER), \ MXT_SPT_TIMER }, \ { MXTSTR(MXT_PROCI_ACTIVESTYLUS63), \ MXT_PROCI_ACTIVESTYLUS63 }, \ { MXTSTR(MXT_PROCI_ACTIVESTYLUS107), \ MXT_PROCI_ACTIVESTYLUS107 }, \ { MXTSTR(MXT_SPT_REFERENCERELOAD), \ MXT_SPT_REFERENCERELOAD }, \ { MXTSTR(MXT_PROCI_LENSBENDING), \ MXT_PROCI_LENSBENDING }, \ { MXTSTR(MXT_SPT_GOLDENREFERENCES), \ MXT_SPT_GOLDENREFERENCES }, \ { MXTSTR(MXT_PROCI_CUSTOMGESTUREPROCESSOR), \ MXT_PROCI_CUSTOMGESTUREPROCESSOR }, \ { MXTSTR(MXT_SERIAL_DATA_COMMAND), \ MXT_SERIAL_DATA_COMMAND }, \ { MXTSTR(MXT_PROCI_PALMGESTUREPROCESSOR), \ MXT_PROCI_PALMGESTUREPROCESSOR }, \ { MXTSTR(MXT_SPT_DYNAMICCONFIGURATIONCONTROLLER), \ MXT_SPT_DYNAMICCONFIGURATIONCONTROLLER }, \ { MXTSTR(MXT_SPT_DYNAMICCONFIGURATIONCONTAINER), \ MXT_SPT_DYNAMICCONFIGURATIONCONTAINER }, \ { MXTSTR(MXT_PROCI_ZONEINDICATION), \ MXT_PROCI_ZONEINDICATION }, \ { MXTSTR(MXT_PROCG_SIMPLEGESTUREPROCESSOR), \ MXT_PROCG_SIMPLEGESTUREPROCESSOR }, \ { MXTSTR(MXT_MOTION_SENSING_OBJECT), \ MXT_MOTION_SENSING_OBJECT }, \ { MXTSTR(MXT_PROCI_MOTION_GESTURES), \ MXT_PROCI_MOTION_GESTURES }, \ { MXTSTR(MXT_SPT_CTESCANCONFIG), \ MXT_SPT_CTESCANCONFIG }, \ { MXTSTR(MXT_PROCI_GLOVEDETECTION), \ MXT_PROCI_GLOVEDETECTION }, \ { MXTSTR(MXT_SPT_TOUCHEVENTTRIGGER), \ MXT_SPT_TOUCHEVENTTRIGGER }, \ { MXTSTR(MXT_PROCI_RETRANSMISSIONCOMPENSATION), \ MXT_PROCI_RETRANSMISSIONCOMPENSATION }, \ { MXTSTR(MXT_PROCI_UNLOCKGESTURE), \ MXT_PROCI_UNLOCKGESTURE }, \ { MXTSTR(MXT_SPT_NOISESUPEXTENSION), \ MXT_SPT_NOISESUPEXTENSION }, \ { MXTSTR(MXT_ENVIRO_LIGHTSENSING), \ MXT_ENVIRO_LIGHTSENSING }, \ { MXTSTR(MXT_PROCI_GESTUREPROCESSOR), \ MXT_PROCI_GESTUREPROCESSOR }, \ { MXTSTR(MXT_PEN_ACTIVESTYLUSPOWER), \ MXT_PEN_ACTIVESTYLUSPOWER }, \ { MXTSTR(MXT_PROCG_NOISESUPACTIVESTYLUS), \ MXT_PROCG_NOISESUPACTIVESTYLUS }, \ { MXTSTR(MXT_PEN_ACTIVESTYLUSDATA), \ MXT_PEN_ACTIVESTYLUSDATA }, \ { MXTSTR(MXT_PEN_ACTIVESTYLUSRECEIVE), \ MXT_PEN_ACTIVESTYLUSRECEIVE }, \ { MXTSTR(MXT_PEN_ACTIVESTYLUSTRANSMIT), \ MXT_PEN_ACTIVESTYLUSTRANSMIT }, \ { MXTSTR(MXT_PEN_ACTIVESTYLUSWINDOW), \ MXT_PEN_ACTIVESTYLUSWINDOW }, \ { MXTSTR(MXT_DEBUG_CUSTOMDATACONFIG), \ MXT_DEBUG_CUSTOMDATACONFIG }, \ { MXTSTR(MXT_PROCI_SYMBOLGESTUREPROCESSOR), \ MXT_PROCI_SYMBOLGESTUREPROCESSOR }, \ { MXTSTR(MXT_PROCI_TOUCHSEQUENCELOGGER), \ MXT_PROCI_TOUCHSEQUENCELOGGER }, \ { MXTSTR(MXT_TOUCH_MULTITOUCHSCREEN), \ MXT_TOUCH_MULTITOUCHSCREEN }, \ { MXTSTR(MXT_SPT_TOUCHSCREENHOVER), \ MXT_SPT_TOUCHSCREENHOVER }, \ { MXTSTR(MXT_SPT_SELFCAPHOVERCTECONFIG), \ MXT_SPT_SELFCAPHOVERCTECONFIG }, \ { MXTSTR(MXT_PROCI_SCHNOISESUPPRESSION), \ MXT_PROCI_SCHNOISESUPPRESSION }, \ { MXTSTR(MXT_SPT_AUXTOUCHCONFIG), \ MXT_SPT_AUXTOUCHCONFIG }, \ { MXTSTR(MXT_SPT_DRIVENPLATEHOVERCONFIG), \ MXT_SPT_DRIVENPLATEHOVERCONFIG }, \ { MXTSTR(MXT_SPT_ACTIVESTYLUSMMBCONFIG), \ MXT_SPT_ACTIVESTYLUSMMBCONFIG }, \ { MXTSTR(MXT_PROCG_NOISESUPSELFCAP), \ MXT_PROCG_NOISESUPSELFCAP }, \ { MXTSTR(MXT_SPT_SELFCAPGLOBALCONFIG), \ MXT_SPT_SELFCAPGLOBALCONFIG }, \ { MXTSTR(MXT_SPT_SELFCAPTUNINGPARAMS), \ MXT_SPT_SELFCAPTUNINGPARAMS }, \ { MXTSTR(MXT_SPT_SELFCAPCONFIG), \ MXT_SPT_SELFCAPCONFIG }, \ { MXTSTR(MXT_SPT_PROXMEASURECONFIG), \ MXT_SPT_PROXMEASURECONFIG }, \ { MXTSTR(MXT_GEN_INFOBLOCK16BIT), \ MXT_GEN_INFOBLOCK16BIT }, \ { MXTSTR(MXT_RESERVED255), \ MXT_RESERVED255 } /* * MXT_GEN_COMMANDPROCESSOR object offsets. */ #define MXT_CMDPROC_RESET_OFF 0x00 #define MXT_CMDPROC_BACKUPNV_OFF 0x01 #define MXT_CMDPROC_CALIBRATE_OFF 0x02 #define MXT_CMDPROC_REPORTALL_OFF 0x03 #define MXT_CMDPROC_RESERVED04_OFF 0x04 #define MXT_CMDPROC_DIAGNOSTIC_OFF 0x05 /* * device driver helper structures */ struct mxt_strinfo { const char *id; int type; }; struct mxt_rollup { struct mxt_id_info info; struct mxt_object *objs; int nobjs; uint8_t *buf; }; /* * Kernel AND user mode support */ uint32_t obp_convert_crc(struct mxt_raw_crc *crc); uint32_t obp_crc24(uint8_t *buf, size_t bytes); #endif