1*d4108b10Smlelstv /* $NetBSD: synapticsreg.h,v 1.14 2024/11/10 11:49:19 mlelstv Exp $ */ 281e1a623Schristos 381e1a623Schristos /* 471d14cdeSscw * Copyright (c) 2005, Steve C. Woodford 581e1a623Schristos * Copyright (c) 2004, Ales Krenek 681e1a623Schristos * Copyright (c) 2004, Kentaro A. Kurahone 781e1a623Schristos * All rights reserved. 881e1a623Schristos * 981e1a623Schristos * Redistribution and use in source and binary forms, with or without 1081e1a623Schristos * modification, are permitted provided that the following conditions 1181e1a623Schristos * are met: 1281e1a623Schristos * 1381e1a623Schristos * * Redistributions of source code must retain the above copyright 1481e1a623Schristos * notice, this list of conditions and the following disclaimer. 1581e1a623Schristos * * Redistributions in binary form must reproduce the above 1681e1a623Schristos * copyright notice, this list of conditions and the following 1781e1a623Schristos * disclaimer in the documentation and/or other materials provided 1881e1a623Schristos * with the distribution. 1981e1a623Schristos * * Neither the name of the Kentaro A. Kurahone nor the names of its 2081e1a623Schristos * contributors may be used to endorse or promote products derived 2181e1a623Schristos * from this software without specific prior written permission. 2281e1a623Schristos * 2381e1a623Schristos * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2481e1a623Schristos * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2581e1a623Schristos * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 2681e1a623Schristos * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 2781e1a623Schristos * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 2881e1a623Schristos * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 2981e1a623Schristos * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 3081e1a623Schristos * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 3181e1a623Schristos * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3281e1a623Schristos * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 3381e1a623Schristos * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 3481e1a623Schristos * POSSIBILITY OF SUCH DAMAGE. 3581e1a623Schristos * 3681e1a623Schristos */ 3781e1a623Schristos 3881e1a623Schristos #ifndef _DEV_PCKBCPORT_SYNAPTICSREG_H_ 3981e1a623Schristos #define _DEV_PCKBCPORT_SYNAPTICSREG_H_ 4081e1a623Schristos 41b2962c40Suwe /* Synaptics information queries. */ 4281e1a623Schristos #define SYNAPTICS_IDENTIFY_TOUCHPAD 0x0 43b2962c40Suwe #define SYNAPTICS_READ_MODE 0x1 4481e1a623Schristos #define SYNAPTICS_READ_CAPABILITIES 0x2 45b2962c40Suwe #define SYNAPTICS_READ_MODEL_ID 0x3 46*d4108b10Smlelstv #define SYNAPTICS_QUERY_RESOLUTION 0x8 4781e1a623Schristos #define SYNAPTICS_EXTENDED_QUERY 0x9 48ef2e77d3Schristos #define SYNAPTICS_CONTINUED_CAPABILITIES 0x0c 49de9a2f9cSblymn #define SYNAPTICS_READ_MAX_COORDS 0x0d 50de9a2f9cSblymn #define SYNAPTICS_READ_MIN_COORDS 0x0f 51b7f7faa3Smaya #define SYNAPTICS_WRITE_DELUXE_3 0xc8 /* 6.2.3. Deluxe mode setting sequence */ 5281e1a623Schristos 5388c4db2eSplunky /* Synaptics special commands */ 5488c4db2eSplunky #define SYNAPTICS_CMD_SET_MODE2 0x14 5588c4db2eSplunky #define SYNAPTICS_CMD_CLIENT_CMD 0x28 5688c4db2eSplunky 5781e1a623Schristos /* Magic numbers. */ 5881e1a623Schristos #define SYNAPTICS_MIN_VERSION 45 /* 4.5 */ 5981e1a623Schristos #define SYNAPTICS_MAGIC_BYTE 0x47 6081e1a623Schristos 6181e1a623Schristos /* Capability bits. */ 62538588e8Sblymn /* (byte[0] << 8) | byte[2] */ 63*d4108b10Smlelstv /* Submodel ID: byte[1] */ 64538588e8Sblymn #define SYNAPTICS_CAP_VALUE(b) (((b)[0] << 8) | (b)[2]) 65*d4108b10Smlelstv #define SYNAPTICS_CAP_SUBMODEL(b) ((b)[1]) 6681e1a623Schristos #define SYNAPTICS_CAP_EXTENDED (1 << 15) 67b2962c40Suwe #define SYNAPTICS_CAP_EXTNUM (1 << 14 | 1 << 13 | 1 << 12) 6881e1a623Schristos #define SYNAPTICS_CAP_MBUTTON (1 << 10) 6981e1a623Schristos #define SYNAPTICS_CAP_PASSTHROUGH (1 << 7) 70538588e8Sblymn #define SYNAPTICS_CAP_LOWPOWER (1 << 6) 71ef2e77d3Schristos #define SYNAPTICS_CAP_MULTIFINGERREPORT (1 << 5) 7281e1a623Schristos #define SYNAPTICS_CAP_SLEEP (1 << 4) 7381e1a623Schristos #define SYNAPTICS_CAP_4BUTTON (1 << 3) 7481e1a623Schristos #define SYNAPTICS_CAP_MULTIDETECT (1 << 1) 7571d14cdeSscw #define SYNAPTICS_CAP_PALMDETECT (1 << 0) 7681e1a623Schristos 77538588e8Sblymn /* Continued Capability bits */ 78538588e8Sblymn /* (byte[0] << 8) | byte[1] */ 79538588e8Sblymn #define SYN_CCAP_VALUE(b) (((b)[0] << 8) | (b)[1]) 80538588e8Sblymn #define SYN_CCAP_COVERED_PAD __BIT(15) 81538588e8Sblymn #define SYN_CCAP_MULTIFINGER_MODE __BITS(13,14) 82538588e8Sblymn #define SYN_CCAP_CLICKPAD_BIT_0 __BIT(12) /* one-button clickpad */ 83538588e8Sblymn #define SYN_CCAP_HAS_ADV_GESTURE_MODE __BIT(11) 84538588e8Sblymn #define SYN_CCAP_CLEARPAD __BIT(10) 85538588e8Sblymn #define SYN_CCAP_REPORT_MAX __BIT(9) 86538588e8Sblymn #define SYN_CCAP_ADJ_THRESHOLD __BIT(8) 87538588e8Sblymn #define SYN_CCAP_REPORT_MIN __BIT(5) 88538588e8Sblymn #define SYN_CCAP_UNIFORM_CLICKPAD __BIT(4) 89538588e8Sblymn #define SYN_CCAP_IMAGE_SENSOR __BIT(3) /* reports V */ 90538588e8Sblymn #define SYN_CCAP_REDUCED_FILTERING __BIT(2) 91538588e8Sblymn #define SYN_CCAP_DELUX_LED_CONTROLS __BIT(1) 92538588e8Sblymn #define SYN_CCAP_CLICKPAD_BIT_1 __BIT(0) /* two-button clickpad */ 93538588e8Sblymn #define SYN_CCAP_CLICKPAD_TYPE(v) \ 94538588e8Sblymn ((__SHIFTOUT((v), SYN_CCAP_CLICKPAD_BIT_1) << 1) | \ 95538588e8Sblymn __SHIFTOUT((v), SYN_CCAP_CLICKPAD_BIT_0)) 96538588e8Sblymn 9781e1a623Schristos /* Mode bits. */ 9881e1a623Schristos #define SYNAPTICS_MODE_ABSOLUTE (1 << 7) 9981e1a623Schristos #define SYNAPTICS_MODE_RATE (1 << 6) 10081e1a623Schristos #define SYNAPTICS_MODE_SLEEP (1 << 3) 101fe90bab4Sblymn #define SYNAPTICS_MODE_EXTENDED_W (1 << 2) /* double meaning */ 10281e1a623Schristos #define SYNAPTICS_MODE_GEST (1 << 2) 10388c4db2eSplunky #define SYNAPTICS_MODE_4BYTE_CLIENT (1 << 1) 104538588e8Sblymn #define SYNAPTICS_MODE_W (1 << 0) 10581e1a623Schristos 10681e1a623Schristos /* Extended mode button masks. */ 10781e1a623Schristos #define SYN_1BUTMASK 0x1 10881e1a623Schristos #define SYN_2BUTMASK 0x1 109881d45ecSblymn #define SYN_3BUTMASK 0x2 110881d45ecSblymn #define SYN_4BUTMASK 0x2 111881d45ecSblymn #define SYN_5BUTMASK 0x4 112881d45ecSblymn #define SYN_6BUTMASK 0x4 113881d45ecSblymn #define SYN_7BUTMASK 0x8 114881d45ecSblymn #define SYN_8BUTMASK 0x8 11581e1a623Schristos 11671d14cdeSscw /* Touchpad edge boundaries (Recommended values from Synaptics documentation) */ 11771d14cdeSscw #define SYNAPTICS_EDGE_LEFT 1632 11871d14cdeSscw #define SYNAPTICS_EDGE_RIGHT 5312 11971d14cdeSscw #define SYNAPTICS_EDGE_TOP 4288 12071d14cdeSscw #define SYNAPTICS_EDGE_BOTTOM 1568 12171d14cdeSscw #define SYNAPTICS_EDGE_MAX 6143 12281e1a623Schristos 12371d14cdeSscw /* Finger pressures */ 12471d14cdeSscw #define SYNAPTICS_FINGER_NONE 0 12571d14cdeSscw #define SYNAPTICS_FINGER_HOVER 10 12671d14cdeSscw #define SYNAPTICS_FINGER_LIGHT 30 12771d14cdeSscw #define SYNAPTICS_FINGER_NORMAL 80 12871d14cdeSscw #define SYNAPTICS_FINGER_HEAVY 110 12971d14cdeSscw #define SYNAPTICS_FINGER_FLAT 200 13071d14cdeSscw #define SYNAPTICS_FINGER_PALM 255 13171d14cdeSscw 13271d14cdeSscw /* Width values */ 13371d14cdeSscw #define SYNAPTICS_WIDTH_TWO_FINGERS 0 13471d14cdeSscw #define SYNAPTICS_WIDTH_THREE_OR_MORE 1 13571d14cdeSscw #define SYNAPTICS_WIDTH_PEN 2 136fe90bab4Sblymn #define SYNAPTICS_WIDTH_EXTENDED_W 2 137eefea853Sjakllsch #define SYNAPTICS_WIDTH_ADVANCEDGESTURE 2 138eefea853Sjakllsch #define SYNAPTICS_WIDTH_PASSTHROUGH 3 13971d14cdeSscw #define SYNAPTICS_WIDTH_FINGER_MIN 4 14071d14cdeSscw #define SYNAPTICS_WIDTH_FINGER_NORMAL 5 14171d14cdeSscw #define SYNAPTICS_WIDTH_FINGER_MAX 7 14271d14cdeSscw #define SYNAPTICS_WIDTH_PALM_MIN 8 14371d14cdeSscw #define SYNAPTICS_WIDTH_PALM_MAX 14 14471d14cdeSscw #define SYNAPTICS_WIDTH_MAX 15 14571d14cdeSscw 146fe90bab4Sblymn /* Extended W types */ 147fe90bab4Sblymn #define SYNAPTICS_EW_WHEEL 0 148fe90bab4Sblymn #define SYNAPTICS_EW_SECONDARY_FINGER 1 149fe90bab4Sblymn #define SYNAPTICS_EW_FINGER_STATUS 2 150fe90bab4Sblymn 15171d14cdeSscw #endif /* _DEV_PCKBCPORT_SYNAPTICSREG_H_ */ 152