微信扫一扫 分享朋友圈

已有 7183 人浏览分享

开启左侧

触摸版只能强制轮询模式?怎么办

[复制链接]
7183 26
机型是 联想 Flex5-15
触摸板的硬件名称是 MSFT0001
自己学着 YOGA-C940 的机型打了补丁。在中断模式下,那个触摸板非常卡顿。移动指针,一卡一卡的

这个机子和 C940 几乎一样的配置,只是这个是 15.6 寸,当然了,BIOS 有很大区别,因为 C940 是 YOGA 系列的

目前的情况是
中断模式下触摸板很卡顿,触摸屏没有反应

加入启动参数 -vi2c-force-polling 强制使用轮询模式,那么触摸屏与触控板都能正常工作

但是轮询模式吗,貌似比较消耗 CPU 资源。有没有大佬探讨下呢

我贴一下 dsl 代码

XPD0 触摸板
  1. DefinitionBlock ("", "SSDT", 2, "Tasc11", "XPD0", 0x00000000){    External (_SB_.GNUM, MethodObj)    // 1 Arguments    External (_SB_.GPDI, FieldUnitObj)    External (_SB_.INUM, MethodObj)    // 1 Arguments    External (_SB_.PCI0.HIDD, MethodObj)    // 5 Arguments    External (_SB_.PCI0.HIDG, IntObj)    External (_SB_.PCI0.I2C0, DeviceObj)    External (_SB_.PCI0.I2C0.I2CX, IntObj)    External (_SB_.PCI0.I2CM, MethodObj)    // 3 Arguments    External (_SB_.PCI0.TP7D, MethodObj)    // 6 Arguments    External (_SB_.PCI0.TP7G, IntObj)    External (_SB_.SHPO, MethodObj)    // 2 Arguments    External (_SB_.TPDB, FieldUnitObj)    External (_SB_.TPDH, FieldUnitObj)    External (_SB_.TPDS, FieldUnitObj)    External (_SB_.TPDT, FieldUnitObj)    External (TPDB, FieldUnitObj)    External (TPDH, FieldUnitObj)    External (TPDM, FieldUnitObj)    Scope (_SB.PCI0.I2C0)    {        Device (XPD0)        {            Name (HID2, Zero)            Name (SBFB, ResourceTemplate ()            {                I2cSerialBusV2 (0x0000, ControllerInitiated, 0x00061A80,                    AddressingMode7Bit, "NULL",                    0x00, ResourceConsumer, _Y00, Exclusive,                    )            })            Name (SBFG, ResourceTemplate ()            {                GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,                    "\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,                    )                    {   // Pin list                        0x0000                    }            })            Name (SBFX, ResourceTemplate ()            {                GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,                    "\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,                    )                    {   // Pin list                        0x001B                    }            })            Name (SBFI, ResourceTemplate ()            {                Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake, ,, _Y01)                {                    0x00000000,                }            })            CreateWordField (SBFB, \_SB.PCI0.I2C0.XPD0._Y00._ADR, BADR)  // _ADR: Address            CreateDWordField (SBFB, \_SB.PCI0.I2C0.XPD0._Y00._SPE, SPED)  // _SPE: Speed            CreateWordField (SBFG, 0x17, INT1)            CreateDWordField (SBFI, \_SB.PCI0.I2C0.XPD0._Y01._INT, INT2)  // _INT: Interrupts            Method (_INI, 0, NotSerialized)  // _INI: Initialize            {                INT1 = GNUM (GPDI)                INT2 = INUM (GPDI)                SHPO (GPDI, One)                _HID = "MSFT0001"                HID2 = TPDH /* External reference */                BADR = TPDB /* External reference */                If ((TPDS == Zero))                {                    SPED = 0x000186A0                }                If ((TPDS == One))                {                    SPED = 0x00061A80                }                If ((TPDS == 0x02))                {                    SPED = 0x000F4240                }                Return (Zero)            }            Name (_HID, "XXXX0000")  // _HID: Hardware ID            Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */)  // _CID: Compatible ID            Name (_S0W, 0x03)  // _S0W: S0 Device Wake State            Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method            {                If ((Arg0 == HIDG))                {                    Return (HIDD (Arg0, Arg1, Arg2, Arg3, HID2))                }                If ((Arg0 == TP7G))                {                    Return (TP7D (Arg0, Arg1, Arg2, Arg3, SBFB, SBFG))                }                Return (Buffer (One)                {                     0x00                                             // .                })            }            Method (_STA, 0, NotSerialized)  // _STA: Status            {                If (_OSI ("Darwin"))                {                    Return (0x0F)                }                Else                {                    Return (Zero)                }            }            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings            {                If ((TPDM == Zero))                {                    Return (ConcatenateResTemplate (I2CM (I2CX, BADR, SPED), SBFG))                }                Return (ConcatenateResTemplate (I2CM (I2CX, BADR, SPED), SBFI))            }        }    }}
复制代码

TPLX 触摸屏
  1. DefinitionBlock ("", "SSDT", 2, "hack", "TPLX", 0x00000000){    External (_SB_.ADBG, MethodObj)    // 1 Arguments    External (_SB_.GNUM, MethodObj)    // 1 Arguments    External (_SB_.GPLI, IntObj)    External (_SB_.INUM, MethodObj)    // 1 Arguments    External (_SB_.PCI0.HIDD, MethodObj)    // 5 Arguments    External (_SB_.PCI0.HIDG, IntObj)    External (_SB_.PCI0.I2C1, DeviceObj)    External (_SB_.PCI0.I2C1.I2CX, IntObj)    External (_SB_.PCI0.I2CM, MethodObj)    // 3 Arguments    External (_SB_.PCI0.TP7D, MethodObj)    // 6 Arguments    External (_SB_.PCI0.TP7G, IntObj)    External (_SB_.SGOV, MethodObj)    // 2 Arguments    External (_SB_.SGRA, MethodObj)    // 2 Arguments    External (_SB_.SHPO, MethodObj)    // 2 Arguments    External (_SB_.TPDH, FieldUnitObj)    External (_SB_.TPDT, FieldUnitObj)    External (TPID, IntObj)    External (TPLB, IntObj)    External (TPLH, IntObj)    External (TPLM, IntObj)    External (TPLS, IntObj)        External (TPLT, FieldUnitObj)    Scope (\)    {        If (_OSI ("Darwin"))        {            TPLT = 0x07        }    }            Scope (_SB.PCI0.I2C1)    {        Device (TPLX)        {            Name (HID2, Zero)            Name (SBFB, ResourceTemplate ()            {                I2cSerialBusV2 (0x0000, ControllerInitiated, 0x00061A80,                    AddressingMode7Bit, "NULL",                    0x00, ResourceConsumer, _Y03, Exclusive,                    )            })            Name (SBFG, ResourceTemplate ()            {                GpioInt (Level, ActiveLow, Exclusive, PullDefault, 0x0000,                    "\\_SB.GPI0", 0x00, ResourceConsumer, ,                    )                    {   // Pin list                        0x0000                    }            })            Name (SBFI, ResourceTemplate ()            {                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, _Y01)                {                    0x00000000,                }            })            CreateWordField (SBFB, \_SB.PCI0.I2C1.TPLX._Y03._ADR, BADR)  // _ADR: Address            CreateDWordField (SBFB, \_SB.PCI0.I2C1.TPLX._Y03._SPE, SPED)  // _SPE: Speed            CreateWordField (SBFG, 0x17, INT1)            CreateDWordField (SBFI, \_SB.PCI0.I2C1.TPLX._Y01._INT, INT2)  // _INT: Interrupts                        Method (_INI, 0, NotSerialized)  // _INI: Initialize            {                /*                If ((OSYS < 0x07DC))                {                    SRXO (GPLI, One)                } */                INT1 = GNUM (GPLI)                INT2 = INUM (GPLI)                //If ((TPLM == Zero))               // {                    SHPO (GPLI, One)                // }                                TPLT = 0x07                If ((TPLT == One))                {                    _HID = "ATML3432"                    HID2 = Zero                    BADR = 0x4C                    SPED = 0x00061A80                    Return (Zero)                }                If ((TPLT == 0x02))                {                    _HID = "ATML2952"                    HID2 = Zero                    BADR = 0x4A                    SPED = 0x00061A80                    Return (Zero)                }                If ((TPLT == 0x03))                {                    _HID = "ELAN2097"                    HID2 = One                    BADR = 0x10                    SPED = 0x00061A80                    Return (Zero)                }                If ((TPLT == 0x04))                {                    _HID = "NTRG0001"                    HID2 = One                    BADR = 0x07                    SPED = 0x00061A80                    Return (Zero)                }                If ((TPLT == 0x05))                {                    _HID = "NTRG0002"                    HID2 = One                    BADR = 0x64                    SPED = 0x00061A80                    Return (Zero)                }                If ((TPLT == 0x06))                {                    _HID = "WCOM508E"                    HID2 = One                    BADR = 0x0A                    If ((TPLS == Zero))                    {                        SPED = 0x00061A80                    }                    If ((TPLS == One))                    {                        SPED = 0x00061A80                    }                    If ((TPLS == 0x02))                    {                        SPED = 0x000F4240                    }                    Return (Zero)                }                If ((TPLT == 0x07))                {                    _HID = "WACF2200"                    HID2 = TPLH /* \TPLH */                    BADR = TPLB /* \TPLB */                    If ((TPLS == Zero))                    {                        SPED = 0x000186A0                    }                    If ((TPLS == One))                    {                        SPED = 0x00061A80                    }                    If ((TPLS == 0x02))                    {                        SPED = 0x000F4240                    }                    Return (Zero)                }            }            Name (_HID, "XXXX0000")  // _HID: Hardware ID            Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */)  // _CID: Compatible ID            Name (_S0W, 0x04)  // _S0W: S0 Device Wake State            Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method            {                If ((Arg0 == HIDG))                {                    Return (HIDD (Arg0, Arg1, Arg2, Arg3, HID2))                }                If ((Arg0 == TP7G))                {                    Return (TP7D (Arg0, Arg1, Arg2, Arg3, SBFB, SBFG))                }                Return (Buffer (One)                {                     0x00                                             // .                })            }            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0            {                Sleep (0x64)                SGOV (0x0603000E, One)                Sleep (0x64)                SGRA (0x06010003, One)                ADBG ("touch panel ps0")            }            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3            {                Sleep (0x64)                SGRA (0x06010003, Zero)                Sleep (0x64)                SGOV (0x0603000E, Zero)                ADBG ("touch panel ps3")            }            Method (_STA, 0, NotSerialized)  // _STA: Status            {                If (_OSI ("Darwin"))                {                    Return (0x0F)                }                Return (Zero)            }            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings            {                If ((TPLM == Zero))                {                    Return (ConcatenateResTemplate (I2CM (I2CX, BADR, SPED), SBFG))                }                Return (ConcatenateResTemplate (I2CM (I2CX, BADR, SPED), SBFI))            }        }    }}
复制代码

* 其他信息:原设备名是 TPD0 TPL0
不打补丁的情况下。IORegistryExplorer 也看不到这两个原设备被注册到系统里

评论 26

ren1  高级会员  发表于 2023-6-1 17:55 | 显示全部楼层
我是来抢楼的

举报 使用道具

回复 支持 反对
xlhero  高级会员  发表于 2023-6-1 19:28 | 显示全部楼层
黑哥的论坛,要支持

举报 使用道具

回复 支持 反对
woelde  高级会员  发表于 2023-6-1 21:21 | 显示全部楼层
20年水粉

举报 使用道具

回复 支持 反对
liualing  高级会员  发表于 2023-6-1 22:38 | 显示全部楼层
我喜欢黑妹,可以约起来吗

举报 使用道具

回复 支持 反对
andyabc  高级会员  发表于 2023-6-1 23:57 | 显示全部楼层
水窝老用户,支持下

举报 使用道具

回复 支持 反对
联想IBM  高级会员  发表于 2023-6-2 06:50 | 显示全部楼层
我喜欢黑妹,可以约起来吗

举报 使用道具

回复 支持 反对
WWG1969  高级会员  发表于 2023-6-2 08:05 | 显示全部楼层
不错,支持下楼主

举报 使用道具

回复 支持 反对
bboo1218  高级会员  发表于 2023-6-2 09:06 | 显示全部楼层
23年水窝,感谢有你

举报 使用道具

回复 支持 反对
iamyuzheng  高级会员  发表于 2023-6-2 10:16 | 显示全部楼层
我是来抢楼的

举报 使用道具

回复 支持 反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

关注

23

粉丝

15

主题
精彩推荐
热门资讯
网友晒图
图文推荐
  • 微信公众平台

  • 扫描访问手机版

Archiver|手机版|小黑屋|水窝ibm

GMT+8, 2024-4-25 05:37 , Processed in 0.098574 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2022 Comsenz Inc.