1 /* 2 * Copyright (c) 2014 The DragonFly Project. All rights reserved. 3 * 4 * This code is derived from software contributed to The DragonFly Project 5 * by Matthew Dillon <dillon@backplane.com> 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in 15 * the documentation and/or other materials provided with the 16 * distribution. 17 * 3. Neither the name of The DragonFly Project nor the names of its 18 * contributors may be used to endorse or promote products derived 19 * from this software without specific, prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 29 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 31 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 * SUCH DAMAGE. 33 * 34 *------------------------------------------------------------------------------ 35 * Copyright 2011 Atmel Corporation. All rights reserved. 36 * 37 * Redistribution and use in source and binary forms, with or without 38 * modification, are permitted provided that the following conditions are met: 39 * 40 * 1. Redistributions of source code must retain the above copyright notice, 41 * this list of conditions and the following disclaimer. 42 * 43 * 2. Redistributions in binary form must reproduce the above copyright 44 * notice, this list of conditions and the following disclaimer in the 45 * documentation and/or other materials provided with the distribution. 46 * 47 * THIS SOFTWARE IS PROVIDED BY ATMEL ''AS IS'' AND ANY EXPRESS OR IMPLIED 48 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 49 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 50 * EVENT SHALL ATMEL OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 51 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 52 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 53 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 54 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 55 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 56 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 57 *----------------------------------------------------------------------------- 58 */ 59 /* 60 * This file contains a mix of code taken from the atmel-maxtouch/obp-utils 61 * github codebase and my own for testing the atmel touchscreen chipset in 62 * the Acer C720P chromebook. 63 * 64 * I have rewritten the linux mess for the most part. 65 */ 66 67 #ifndef _OBP_UTILS_H_ 68 #define _OBP_UTILS_H_ 69 70 /* 71 * CRC structure hangs off the end of the object configuration array and 72 * is calculated against { mxt_id_info, mxt_object[num_objects] }. 73 * 74 * { mxt_id_info, mxt_object[num_objects], mxt_raw_crc } 75 */ 76 struct mxt_raw_crc { 77 uint16_t CRC; /* low 16 bits */ 78 uint8_t CRC_hi; /* high 8 bits */ 79 } __packed; 80 81 /* 82 * register 0 - Base information structure 83 */ 84 struct mxt_id_info { 85 uint8_t family; /*!< Device family */ 86 uint8_t variant; /*!< Device variant */ 87 88 uint8_t version; /*!< Firmware version (Major/minor nibbles) */ 89 uint8_t build; /*!< Firmware build number */ 90 91 uint8_t matrix_x_size; /*!< Matrix X Size */ 92 uint8_t matrix_y_size; /*!< Matrix Y Size */ 93 94 /*! Number of elements in the object table. The actual number of 95 * objects can be different if any object has more than one 96 * instance. 97 */ 98 uint8_t num_objects; 99 } __packed; 100 101 /* 102 * register 0 - Object configuration element(s) (occurs after mxt_id_info) 103 */ 104 struct mxt_object { 105 uint8_t type; /* object type */ 106 uint8_t start_pos_lsb; /* start address of config structure */ 107 uint8_t start_pos_msb; /* start address of config structure */ 108 uint8_t size_minus_one; /* size of config - 1 */ 109 uint8_t instances_minus_one; /* #of instances of object - 1 */ 110 uint8_t num_report_ids; /* max# of touches, sliders, buts, etc*/ 111 } __packed; 112 113 /* 114 * message structures (MXT_GEN_MESSAGEPROCESSOR) 115 */ 116 struct mxt_message_any { 117 uint8_t reportid; 118 uint8_t data[7]; 119 } __packed; 120 121 struct mxt_message_touch { 122 uint8_t reportid; 123 uint8_t flags; /* msg[0] */ 124 uint8_t pos[3]; /* xxxxxxxx(hi) yyyyyyyy(hi) xxxxyyyy(lo) */ 125 uint8_t area; 126 uint8_t amplitude; 127 } __packed; 128 129 #define MXT_MSGF_DETECT 0x80 130 #define MXT_MSGF_PRESS 0x40 131 #define MXT_MSGF_RELEASE 0x20 132 #define MXT_MSGF_MOVE 0x10 133 #define MXT_MSGF_VECTOR 0x08 134 #define MXT_MSGF_AMP 0x04 135 #define MXT_MSGF_SUPPRESS 0x02 136 #define MXT_MSGF_UNGRIP 0x01 137 138 union mxt_message { 139 struct mxt_message_touch any; 140 struct mxt_message_touch touch; 141 } __packed; 142 143 typedef union mxt_message mxt_message_t; 144 145 /* 146 * Object types 147 */ 148 #define MXT_RESERVED_T0 0 149 #define MXT_RESERVED_T1 1 150 #define MXT_DEBUG_DELTAS 2 151 #define MXT_DEBUG_REFERENCES 3 152 #define MXT_SIGNALS 4 153 #define MXT_GEN_MESSAGEPROCESSOR 5 154 #define MXT_GEN_COMMANDPROCESSOR 6 155 #define MXT_GEN_POWERCONFIG 7 156 #define MXT_ACQUISITIONCONFIG 8 157 #define MXT_TOUCH_MULTITOUCHSCREEN9 9 158 #define MXT_TOUCH_SINGLETOUCHSCREEN 10 159 #define MXT_TOUCH_XSLIDER 11 160 #define MXT_TOUCH_YSLIDER 12 161 #define MXT_TOUCH_XWHEEL 13 162 #define MXT_TOUCH_YWHEEL 14 163 #define MXT_TOUCH_KEYARRAY 15 164 #define MXT_PROCG_SIGNALFILTER 16 165 #define MXT_PROCI_LINEARIZATIONTABLE 17 166 #define MXT_SPT_COMMSCONFIG 18 167 #define MXT_SPT_GPIOPWM 19 168 #define MXT_PROCI_GRIPFACESUPPRESSION 20 169 #define MXT_RESERVED21 21 170 #define MXT_PROCG_NOISESUPPRESSION22 22 171 #define MXT_TOUCH_PROXIMITY 23 172 #define MXT_PROCI_ONETOUCHGESTUREPROCESSOR 24 173 #define MXT_SPT_SELFTEST 25 174 #define MXT_DEBUG_CTERANGE 26 175 #define MXT_PROCI_TWOTOUCHGESTUREPROCESSOR 27 176 #define MXT_SPT_CTECONFIG28 28 177 #define MXT_SPT_GPI 29 178 #define MXT_SPT_GATE 30 179 #define MXT_TOUCH_KEYSET 31 180 #define MXT_TOUCH_XSLIDERSET 32 181 #define MXT_RESERVED33 33 182 #define MXT_GEN_MESSAGEBLOCK 34 183 #define MXT_SPT_PROTOTYPE 35 184 #define MXT_RESERVED36 36 185 #define MXT_DEBUG_DIAGNOSTIC 37 186 #define MXT_SPT_USERDATA 38 187 #define MXT_SPARE39 39 188 #define MXT_PROCI_GRIPSUPPRESSION 40 189 #define MXT_PROCI_PALMSUPPRESSION 41 190 #define MXT_PROCI_TOUCHSUPPRESSION 42 191 #define MXT_SPT_DIGITIZER 43 192 #define MXT_SPT_MESSAGECOUNT 44 193 #define MXT_PROCI_VIRTUALKEY 45 194 #define MXT_SPT_CTECONFIG46 46 195 #define MXT_PROCI_STYLUS 47 196 #define MXT_PROCG_NOISESUPPRESSION48 48 197 #define MXT_GEN_DUALPULSE 49 198 #define MXT_SPARE50 50 199 #define MXT_SPT_SONY_CUSTOM 51 200 #define MXT_TOUCH_PROXKEY 52 201 #define MXT_GEN_DATASOURCE 53 202 #define MXT_PROCG_NOISESUPPRESSION54 54 203 #define MXT_PROCI_ADAPTIVETHRESHOLD 55 204 #define MXT_PROCI_SHIELDLESS 56 205 #define MXT_PROCI_EXTRATOUCHSCREENDATA 57 206 #define MXT_SPT_EXTRANOISESUPCTRLS 58 207 #define MXT_SPT_FASTDRIFT 59 208 #define MXT_SPT_TIMER 61 209 #define MXT_PROCG_NOISESUPPRESSION62 62 210 #define MXT_PROCI_ACTIVESTYLUS63 63 211 #define MXT_SPT_REFERENCERELOAD 64 212 #define MXT_PROCI_LENSBENDING 65 213 #define MXT_SPT_GOLDENREFERENCES 66 214 #define MXT_PROCI_CUSTOMGESTUREPROCESSOR 67 215 #define MXT_SERIAL_DATA_COMMAND 68 216 #define MXT_PROCI_PALMGESTUREPROCESSOR 69 217 #define MXT_SPT_DYNAMICCONFIGURATIONCONTROLLER 70 218 #define MXT_SPT_DYNAMICCONFIGURATIONCONTAINER 71 219 #define MXT_PROCG_NOISESUPPRESSION72 72 220 #define MXT_PROCI_ZONEINDICATION 73 221 #define MXT_PROCG_SIMPLEGESTUREPROCESSOR 74 222 #define MXT_MOTION_SENSING_OBJECT 75 223 #define MXT_PROCI_MOTION_GESTURES 76 224 #define MXT_SPT_CTESCANCONFIG 77 225 #define MXT_PROCI_GLOVEDETECTION 78 226 #define MXT_SPT_TOUCHEVENTTRIGGER 79 227 #define MXT_PROCI_RETRANSMISSIONCOMPENSATION 80 228 #define MXT_PROCI_UNLOCKGESTURE 81 229 #define MXT_SPT_NOISESUPEXTENSION 82 230 #define MXT_ENVIRO_LIGHTSENSING 83 231 #define MXT_PROCI_GESTUREPROCESSOR 84 232 #define MXT_PEN_ACTIVESTYLUSPOWER 85 233 #define MXT_PROCG_NOISESUPACTIVESTYLUS 86 234 #define MXT_PEN_ACTIVESTYLUSDATA 87 235 #define MXT_PEN_ACTIVESTYLUSRECEIVE 88 236 #define MXT_PEN_ACTIVESTYLUSTRANSMIT 89 237 #define MXT_PEN_ACTIVESTYLUSWINDOW 90 238 #define MXT_DEBUG_CUSTOMDATACONFIG 91 239 #define MXT_PROCI_SYMBOLGESTUREPROCESSOR 92 240 #define MXT_PROCI_TOUCHSEQUENCELOGGER 93 241 #define MXT_TOUCH_MULTITOUCHSCREEN 100 242 #define MXT_SPT_TOUCHSCREENHOVER 101 243 #define MXT_SPT_SELFCAPHOVERCTECONFIG 102 244 #define MXT_PROCI_SCHNOISESUPPRESSION 103 245 #define MXT_SPT_AUXTOUCHCONFIG 104 246 #define MXT_SPT_DRIVENPLATEHOVERCONFIG 105 247 #define MXT_SPT_ACTIVESTYLUSMMBCONFIG 106 248 #define MXT_PROCI_ACTIVESTYLUS107 107 249 #define MXT_PROCG_NOISESUPSELFCAP 108 250 #define MXT_SPT_SELFCAPGLOBALCONFIG 109 251 #define MXT_SPT_SELFCAPTUNINGPARAMS 110 252 #define MXT_SPT_SELFCAPCONFIG 111 253 #define MXT_SPT_PROXMEASURECONFIG 113 254 #define MXT_GEN_INFOBLOCK16BIT 254 255 #define MXT_RESERVED255 255 256 257 #define MXTSTR(label) #label 258 259 #define MXT_INIT_STRINGS \ 260 { MXTSTR(MXT_RESERVED_T0), \ 261 MXT_RESERVED_T0 }, \ 262 { MXTSTR(MXT_RESERVED_T1), \ 263 MXT_RESERVED_T1 }, \ 264 { MXTSTR(MXT_DEBUG_DELTAS), \ 265 MXT_DEBUG_DELTAS }, \ 266 { MXTSTR(MXT_DEBUG_REFERENCES), \ 267 MXT_DEBUG_REFERENCES }, \ 268 { MXTSTR(MXT_SIGNALS), \ 269 MXT_SIGNALS }, \ 270 { MXTSTR(MXT_GEN_MESSAGEPROCESSOR), \ 271 MXT_GEN_MESSAGEPROCESSOR }, \ 272 { MXTSTR(MXT_GEN_COMMANDPROCESSOR), \ 273 MXT_GEN_COMMANDPROCESSOR }, \ 274 { MXTSTR(MXT_GEN_POWERCONFIG), \ 275 MXT_GEN_POWERCONFIG }, \ 276 { MXTSTR(MXT_ACQUISITIONCONFIG), \ 277 MXT_ACQUISITIONCONFIG }, \ 278 { MXTSTR(MXT_TOUCH_MULTITOUCHSCREEN), \ 279 MXT_TOUCH_MULTITOUCHSCREEN }, \ 280 { MXTSTR(MXT_TOUCH_SINGLETOUCHSCREEN), \ 281 MXT_TOUCH_SINGLETOUCHSCREEN }, \ 282 { MXTSTR(MXT_TOUCH_XSLIDER), \ 283 MXT_TOUCH_XSLIDER }, \ 284 { MXTSTR(MXT_TOUCH_YSLIDER), \ 285 MXT_TOUCH_YSLIDER }, \ 286 { MXTSTR(MXT_TOUCH_XWHEEL), \ 287 MXT_TOUCH_XWHEEL }, \ 288 { MXTSTR(MXT_TOUCH_YWHEEL), \ 289 MXT_TOUCH_YWHEEL }, \ 290 { MXTSTR(MXT_TOUCH_KEYARRAY), \ 291 MXT_TOUCH_KEYARRAY }, \ 292 { MXTSTR(MXT_PROCG_SIGNALFILTER), \ 293 MXT_PROCG_SIGNALFILTER }, \ 294 { MXTSTR(MXT_PROCI_LINEARIZATIONTABLE), \ 295 MXT_PROCI_LINEARIZATIONTABLE }, \ 296 { MXTSTR(MXT_SPT_COMMSCONFIG), \ 297 MXT_SPT_COMMSCONFIG }, \ 298 { MXTSTR(MXT_SPT_GPIOPWM), \ 299 MXT_SPT_GPIOPWM }, \ 300 { MXTSTR(MXT_PROCI_GRIPFACESUPPRESSION), \ 301 MXT_PROCI_GRIPFACESUPPRESSION }, \ 302 { MXTSTR(MXT_RESERVED21), \ 303 MXT_RESERVED21 }, \ 304 { MXTSTR(MXT_PROCG_NOISESUPPRESSION22), \ 305 MXT_PROCG_NOISESUPPRESSION22 }, \ 306 { MXTSTR(MXT_PROCG_NOISESUPPRESSION48), \ 307 MXT_PROCG_NOISESUPPRESSION48 }, \ 308 { MXTSTR(MXT_PROCG_NOISESUPPRESSION54), \ 309 MXT_PROCG_NOISESUPPRESSION54 }, \ 310 { MXTSTR(MXT_PROCG_NOISESUPPRESSION62), \ 311 MXT_PROCG_NOISESUPPRESSION62 }, \ 312 { MXTSTR(MXT_PROCG_NOISESUPPRESSION72), \ 313 MXT_PROCG_NOISESUPPRESSION72 }, \ 314 { MXTSTR(MXT_TOUCH_PROXIMITY), \ 315 MXT_TOUCH_PROXIMITY }, \ 316 { MXTSTR(MXT_PROCI_ONETOUCHGESTUREPROCESSOR), \ 317 MXT_PROCI_ONETOUCHGESTUREPROCESSOR }, \ 318 { MXTSTR(MXT_SPT_SELFTEST), \ 319 MXT_SPT_SELFTEST }, \ 320 { MXTSTR(MXT_DEBUG_CTERANGE), \ 321 MXT_DEBUG_CTERANGE }, \ 322 { MXTSTR(MXT_PROCI_TWOTOUCHGESTUREPROCESSOR), \ 323 MXT_PROCI_TWOTOUCHGESTUREPROCESSOR }, \ 324 { MXTSTR(MXT_SPT_CTECONFIG28), \ 325 MXT_SPT_CTECONFIG28 }, \ 326 { MXTSTR(MXT_SPT_CTECONFIG46), \ 327 MXT_SPT_CTECONFIG46 }, \ 328 { MXTSTR(MXT_SPT_GPI), \ 329 MXT_SPT_GPI }, \ 330 { MXTSTR(MXT_SPT_GATE), \ 331 MXT_SPT_GATE }, \ 332 { MXTSTR(MXT_TOUCH_KEYSET), \ 333 MXT_TOUCH_KEYSET }, \ 334 { MXTSTR(MXT_TOUCH_XSLIDERSET), \ 335 MXT_TOUCH_XSLIDERSET }, \ 336 { MXTSTR(MXT_RESERVED33), \ 337 MXT_RESERVED33 }, \ 338 { MXTSTR(MXT_GEN_MESSAGEBLOCK), \ 339 MXT_GEN_MESSAGEBLOCK }, \ 340 { MXTSTR(MXT_SPT_PROTOTYPE), \ 341 MXT_SPT_PROTOTYPE }, \ 342 { MXTSTR(MXT_RESERVED36), \ 343 MXT_RESERVED36 }, \ 344 { MXTSTR(MXT_DEBUG_DIAGNOSTIC), \ 345 MXT_DEBUG_DIAGNOSTIC }, \ 346 { MXTSTR(MXT_SPT_USERDATA), \ 347 MXT_SPT_USERDATA }, \ 348 { MXTSTR(MXT_SPARE39), \ 349 MXT_SPARE39 }, \ 350 { MXTSTR(MXT_PROCI_GRIPSUPPRESSION), \ 351 MXT_PROCI_GRIPSUPPRESSION }, \ 352 { MXTSTR(MXT_PROCI_PALMSUPPRESSION), \ 353 MXT_PROCI_PALMSUPPRESSION }, \ 354 { MXTSTR(MXT_PROCI_TOUCHSUPPRESSION), \ 355 MXT_PROCI_TOUCHSUPPRESSION }, \ 356 { MXTSTR(MXT_SPT_DIGITIZER), \ 357 MXT_SPT_DIGITIZER }, \ 358 { MXTSTR(MXT_SPT_MESSAGECOUNT), \ 359 MXT_SPT_MESSAGECOUNT }, \ 360 { MXTSTR(MXT_PROCI_VIRTUALKEY), \ 361 MXT_PROCI_VIRTUALKEY }, \ 362 { MXTSTR(MXT_PROCI_STYLUS), \ 363 MXT_PROCI_STYLUS }, \ 364 { MXTSTR(MXT_GEN_DUALPULSE), \ 365 MXT_GEN_DUALPULSE }, \ 366 { MXTSTR(MXT_SPARE50), \ 367 MXT_SPARE50 }, \ 368 { MXTSTR(MXT_SPT_SONY_CUSTOM), \ 369 MXT_SPT_SONY_CUSTOM }, \ 370 { MXTSTR(MXT_TOUCH_PROXKEY), \ 371 MXT_TOUCH_PROXKEY }, \ 372 { MXTSTR(MXT_GEN_DATASOURCE), \ 373 MXT_GEN_DATASOURCE }, \ 374 { MXTSTR(MXT_PROCI_ADAPTIVETHRESHOLD), \ 375 MXT_PROCI_ADAPTIVETHRESHOLD }, \ 376 { MXTSTR(MXT_PROCI_SHIELDLESS), \ 377 MXT_PROCI_SHIELDLESS }, \ 378 { MXTSTR(MXT_PROCI_EXTRATOUCHSCREENDATA), \ 379 MXT_PROCI_EXTRATOUCHSCREENDATA }, \ 380 { MXTSTR(MXT_SPT_EXTRANOISESUPCTRLS), \ 381 MXT_SPT_EXTRANOISESUPCTRLS }, \ 382 { MXTSTR(MXT_SPT_FASTDRIFT), \ 383 MXT_SPT_FASTDRIFT }, \ 384 { MXTSTR(MXT_SPT_TIMER), \ 385 MXT_SPT_TIMER }, \ 386 { MXTSTR(MXT_PROCI_ACTIVESTYLUS63), \ 387 MXT_PROCI_ACTIVESTYLUS63 }, \ 388 { MXTSTR(MXT_PROCI_ACTIVESTYLUS107), \ 389 MXT_PROCI_ACTIVESTYLUS107 }, \ 390 { MXTSTR(MXT_SPT_REFERENCERELOAD), \ 391 MXT_SPT_REFERENCERELOAD }, \ 392 { MXTSTR(MXT_PROCI_LENSBENDING), \ 393 MXT_PROCI_LENSBENDING }, \ 394 { MXTSTR(MXT_SPT_GOLDENREFERENCES), \ 395 MXT_SPT_GOLDENREFERENCES }, \ 396 { MXTSTR(MXT_PROCI_CUSTOMGESTUREPROCESSOR), \ 397 MXT_PROCI_CUSTOMGESTUREPROCESSOR }, \ 398 { MXTSTR(MXT_SERIAL_DATA_COMMAND), \ 399 MXT_SERIAL_DATA_COMMAND }, \ 400 { MXTSTR(MXT_PROCI_PALMGESTUREPROCESSOR), \ 401 MXT_PROCI_PALMGESTUREPROCESSOR }, \ 402 { MXTSTR(MXT_SPT_DYNAMICCONFIGURATIONCONTROLLER), \ 403 MXT_SPT_DYNAMICCONFIGURATIONCONTROLLER }, \ 404 { MXTSTR(MXT_SPT_DYNAMICCONFIGURATIONCONTAINER), \ 405 MXT_SPT_DYNAMICCONFIGURATIONCONTAINER }, \ 406 { MXTSTR(MXT_PROCI_ZONEINDICATION), \ 407 MXT_PROCI_ZONEINDICATION }, \ 408 { MXTSTR(MXT_PROCG_SIMPLEGESTUREPROCESSOR), \ 409 MXT_PROCG_SIMPLEGESTUREPROCESSOR }, \ 410 { MXTSTR(MXT_MOTION_SENSING_OBJECT), \ 411 MXT_MOTION_SENSING_OBJECT }, \ 412 { MXTSTR(MXT_PROCI_MOTION_GESTURES), \ 413 MXT_PROCI_MOTION_GESTURES }, \ 414 { MXTSTR(MXT_SPT_CTESCANCONFIG), \ 415 MXT_SPT_CTESCANCONFIG }, \ 416 { MXTSTR(MXT_PROCI_GLOVEDETECTION), \ 417 MXT_PROCI_GLOVEDETECTION }, \ 418 { MXTSTR(MXT_SPT_TOUCHEVENTTRIGGER), \ 419 MXT_SPT_TOUCHEVENTTRIGGER }, \ 420 { MXTSTR(MXT_PROCI_RETRANSMISSIONCOMPENSATION), \ 421 MXT_PROCI_RETRANSMISSIONCOMPENSATION }, \ 422 { MXTSTR(MXT_PROCI_UNLOCKGESTURE), \ 423 MXT_PROCI_UNLOCKGESTURE }, \ 424 { MXTSTR(MXT_SPT_NOISESUPEXTENSION), \ 425 MXT_SPT_NOISESUPEXTENSION }, \ 426 { MXTSTR(MXT_ENVIRO_LIGHTSENSING), \ 427 MXT_ENVIRO_LIGHTSENSING }, \ 428 { MXTSTR(MXT_PROCI_GESTUREPROCESSOR), \ 429 MXT_PROCI_GESTUREPROCESSOR }, \ 430 { MXTSTR(MXT_PEN_ACTIVESTYLUSPOWER), \ 431 MXT_PEN_ACTIVESTYLUSPOWER }, \ 432 { MXTSTR(MXT_PROCG_NOISESUPACTIVESTYLUS), \ 433 MXT_PROCG_NOISESUPACTIVESTYLUS }, \ 434 { MXTSTR(MXT_PEN_ACTIVESTYLUSDATA), \ 435 MXT_PEN_ACTIVESTYLUSDATA }, \ 436 { MXTSTR(MXT_PEN_ACTIVESTYLUSRECEIVE), \ 437 MXT_PEN_ACTIVESTYLUSRECEIVE }, \ 438 { MXTSTR(MXT_PEN_ACTIVESTYLUSTRANSMIT), \ 439 MXT_PEN_ACTIVESTYLUSTRANSMIT }, \ 440 { MXTSTR(MXT_PEN_ACTIVESTYLUSWINDOW), \ 441 MXT_PEN_ACTIVESTYLUSWINDOW }, \ 442 { MXTSTR(MXT_DEBUG_CUSTOMDATACONFIG), \ 443 MXT_DEBUG_CUSTOMDATACONFIG }, \ 444 { MXTSTR(MXT_PROCI_SYMBOLGESTUREPROCESSOR), \ 445 MXT_PROCI_SYMBOLGESTUREPROCESSOR }, \ 446 { MXTSTR(MXT_PROCI_TOUCHSEQUENCELOGGER), \ 447 MXT_PROCI_TOUCHSEQUENCELOGGER }, \ 448 { MXTSTR(MXT_TOUCH_MULTITOUCHSCREEN), \ 449 MXT_TOUCH_MULTITOUCHSCREEN }, \ 450 { MXTSTR(MXT_SPT_TOUCHSCREENHOVER), \ 451 MXT_SPT_TOUCHSCREENHOVER }, \ 452 { MXTSTR(MXT_SPT_SELFCAPHOVERCTECONFIG), \ 453 MXT_SPT_SELFCAPHOVERCTECONFIG }, \ 454 { MXTSTR(MXT_PROCI_SCHNOISESUPPRESSION), \ 455 MXT_PROCI_SCHNOISESUPPRESSION }, \ 456 { MXTSTR(MXT_SPT_AUXTOUCHCONFIG), \ 457 MXT_SPT_AUXTOUCHCONFIG }, \ 458 { MXTSTR(MXT_SPT_DRIVENPLATEHOVERCONFIG), \ 459 MXT_SPT_DRIVENPLATEHOVERCONFIG }, \ 460 { MXTSTR(MXT_SPT_ACTIVESTYLUSMMBCONFIG), \ 461 MXT_SPT_ACTIVESTYLUSMMBCONFIG }, \ 462 { MXTSTR(MXT_PROCG_NOISESUPSELFCAP), \ 463 MXT_PROCG_NOISESUPSELFCAP }, \ 464 { MXTSTR(MXT_SPT_SELFCAPGLOBALCONFIG), \ 465 MXT_SPT_SELFCAPGLOBALCONFIG }, \ 466 { MXTSTR(MXT_SPT_SELFCAPTUNINGPARAMS), \ 467 MXT_SPT_SELFCAPTUNINGPARAMS }, \ 468 { MXTSTR(MXT_SPT_SELFCAPCONFIG), \ 469 MXT_SPT_SELFCAPCONFIG }, \ 470 { MXTSTR(MXT_SPT_PROXMEASURECONFIG), \ 471 MXT_SPT_PROXMEASURECONFIG }, \ 472 { MXTSTR(MXT_GEN_INFOBLOCK16BIT), \ 473 MXT_GEN_INFOBLOCK16BIT }, \ 474 { MXTSTR(MXT_RESERVED255), \ 475 MXT_RESERVED255 } 476 477 /* 478 * MXT_GEN_COMMANDPROCESSOR object offsets. 479 */ 480 #define MXT_CMDPROC_RESET_OFF 0x00 481 #define MXT_CMDPROC_BACKUPNV_OFF 0x01 482 #define MXT_CMDPROC_CALIBRATE_OFF 0x02 483 #define MXT_CMDPROC_REPORTALL_OFF 0x03 484 #define MXT_CMDPROC_RESERVED04_OFF 0x04 485 #define MXT_CMDPROC_DIAGNOSTIC_OFF 0x05 486 487 /* 488 * device driver helper structures 489 */ 490 struct mxt_strinfo { 491 const char *id; 492 int type; 493 }; 494 495 struct mxt_rollup { 496 struct mxt_id_info info; 497 struct mxt_object *objs; 498 int nobjs; 499 uint8_t *buf; 500 }; 501 502 /* 503 * Kernel AND user mode support 504 */ 505 uint32_t obp_convert_crc(struct mxt_raw_crc *crc); 506 uint32_t obp_crc24(uint8_t *buf, size_t bytes); 507 508 #endif 509