565 lines
20 KiB
Plaintext
565 lines
20 KiB
Plaintext
/**@file
|
|
Touch Panel Device of ACPI
|
|
|
|
@copyright
|
|
INTEL CONFIDENTIAL
|
|
Copyright 2021 Intel Corporation.
|
|
|
|
The source code contained or described herein and all documents related to the
|
|
source code ("Material") are owned by Intel Corporation or its suppliers or
|
|
licensors. Title to the Material remains with Intel Corporation or its suppliers
|
|
and licensors. The Material may contain trade secrets and proprietary and
|
|
confidential information of Intel Corporation and its suppliers and licensors,
|
|
and is protected by worldwide copyright and trade secret laws and treaty
|
|
provisions. No part of the Material may be used, copied, reproduced, modified,
|
|
published, uploaded, posted, transmitted, distributed, or disclosed in any way
|
|
without Intel's prior express written permission.
|
|
|
|
No license under any patent, copyright, trade secret or other intellectual
|
|
property right is granted to or conferred upon you by disclosure or delivery
|
|
of the Materials, either expressly, by implication, inducement, estoppel or
|
|
otherwise. Any license under such intellectual property rights must be
|
|
express and approved by Intel in writing.
|
|
|
|
Unless otherwise agreed by Intel in writing, you may not remove or alter
|
|
this notice or any other notice embedded in Materials by Intel or
|
|
Intel's suppliers or licensors in any way.
|
|
|
|
This file contains a 'Sample Driver' and is licensed as such under the terms
|
|
of your license agreement with Intel or your vendor. This file may be modified
|
|
by the user, subject to the additional terms of the license agreement.
|
|
|
|
@par Specification Reference:
|
|
**/
|
|
|
|
//
|
|
// TPL Connected Device
|
|
//
|
|
#define ATMEL3432_PANEL 1
|
|
#define ATMEL2952_PANEL 2
|
|
#define ELAN9048_PANEL 3
|
|
#define NTRIG_SAMSUNG_PANEL 4
|
|
#define NTRIG_SHARP_PANEL 5
|
|
#define WACOM_PANEL 6
|
|
#define SERIAL_IO_TPL_CUSTOM_DEVICE 7 // Custom TouchPanel device
|
|
|
|
//------------------------
|
|
// Touch Panels on I2C for common use
|
|
// Note: instead of adding more touch panels, parametrize this one with appropriate _HID value and GPIO numbers
|
|
//------------------------
|
|
//[-start-210729-Kebin00040-modify]//
|
|
#ifdef LCFC_SUPPORT
|
|
#ifdef C970_SUPPORT
|
|
Device (TPL1) {
|
|
Name (HID2,0)
|
|
//[-start-210902-YUNLEI0128-modify]//
|
|
Name (SBFB, ResourceTemplate () { I2cSerialBus (0,ControllerInitiated,1000000,AddressingMode7Bit,"\\_SB.PC00.I2C0",,,I2CA) })
|
|
//[-end-210902-YUNLEI0128-modify]//
|
|
Name (SBFG, ResourceTemplate () {
|
|
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000, "\\_SB.GPI0", 0x00, ResourceConsumer, INTG) {0}
|
|
})
|
|
Name (SBFI, ResourceTemplate () {
|
|
Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake,,,INTI) {0}
|
|
})
|
|
CreateWordField(SBFB,I2CA._ADR,BADR)
|
|
CreateDWordField(SBFB,I2CA._SPE,SPED)
|
|
CreateWordField (SBFG,INTG._PIN,INT1)
|
|
CreateDWordField(SBFI,INTI._INT,INT2)
|
|
|
|
Method(_INI) {
|
|
If (LLess(OSYS,2012)) { SRXO(GPIO_VER2_LP_GPP_D16,1) }
|
|
Store(GNUM(GPIO_VER2_LP_GPP_D16),INT1)
|
|
Store(INUM(GPIO_VER2_LP_GPP_D16),INT2)
|
|
if(LEqual(TPNP,0x52B6)||(LEqual(TPNP,0x52B9))||(LEqual(TPNP,0x52BD))||(LEqual(TPNP,0x52BE))||(LEqual(TPNP,0x52C2))||(LEqual(TPNP,0x52C3))) { // WCOM touch chip
|
|
store("WACF2200",_HID)
|
|
store(0x01,HID2)
|
|
store(0x0A,BADR)
|
|
//[-start-210902-YUNLEI0128-modify]//
|
|
store(1000000,SPED)
|
|
//[-end-210902-YUNLEI0128-modify]//
|
|
Return
|
|
}
|
|
}
|
|
Name (_HID, "XXXX0000")
|
|
Name (_CID, "PNP0C50")
|
|
Name (_S0W, 3)
|
|
Method(_DSM, 0x4, Serialized) {
|
|
If (LEqual(Arg0,HIDG)) { Return(HIDD(Arg0,Arg1,Arg2,Arg3,HID2)) }
|
|
If (LEqual(Arg0,TP7G)) { Return(TP7D(Arg0,Arg1,Arg2,Arg3,SBFB,SBFG)) }
|
|
Return (Buffer(1){0})
|
|
}
|
|
|
|
Method (_STA, 0, NotSerialized) {
|
|
If (LEqual(TPNY,0x00)) {
|
|
Return (0x00)
|
|
}Else {
|
|
Return (0x0F)
|
|
}
|
|
}
|
|
|
|
Method (_CRS, 0, NotSerialized) {
|
|
If (LLess(OSYS, 2012)) { Return (SBFI) } // For Windows 7 only report Interrupt; it doesn't support ACPI5.0 and wouldn't understand GpioInt nor I2cBus
|
|
If (LEqual(TPLM,0)) { Return (ConcatenateResTemplate(I2CM(I2CX,BADR,SPED), SBFG)) }
|
|
Return (ConcatenateResTemplate(I2CM(I2CX,BADR,SPED), SBFI))
|
|
}
|
|
|
|
} // Device (TPL1)
|
|
#endif
|
|
#ifdef C770_SUPPORT
|
|
Device (TPL1) {
|
|
Name (HID2,0)
|
|
//[-start-210902-YUNLEI0128-modify]//
|
|
Name (SBFB, ResourceTemplate () { I2cSerialBus (0,ControllerInitiated,1000000,AddressingMode7Bit,"\\_SB.PC00.I2C0",,,I2CA) })
|
|
//[-end-210902-YUNLEI0128-modify]//
|
|
Name (SBFG, ResourceTemplate () {
|
|
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000, "\\_SB.GPI0", 0x00, ResourceConsumer, INTG) {0}
|
|
})
|
|
Name (SBFI, ResourceTemplate () {
|
|
Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake,,,INTI) {0}
|
|
})
|
|
CreateWordField(SBFB,I2CA._ADR,BADR)
|
|
CreateDWordField(SBFB,I2CA._SPE,SPED)
|
|
CreateWordField (SBFG,INTG._PIN,INT1)
|
|
CreateDWordField(SBFI,INTI._INT,INT2)
|
|
|
|
Method(_INI) {
|
|
If (LLess(OSYS,2012)) { SRXO(GPIO_VER2_LP_GPP_D16,1) }
|
|
Store(GNUM(GPIO_VER2_LP_GPP_D16),INT1)
|
|
Store(INUM(GPIO_VER2_LP_GPP_D16),INT2)
|
|
//[-start-210922-YUNLEI0137-modify]//
|
|
if(LEqual(TPNP,0x52D1) || (LEqual(TPNP,0x52D2)) || (LEqual(TPNP,0x52D3)) || (LEqual(TPNP,0x52D4)) || (LEqual(TPNP,0x52D5))) { // WCOM touch chip
|
|
store("WACF2200",_HID)
|
|
//[-end-210922-YUNLEI0137-modify]//
|
|
store(0x01,HID2)
|
|
store(0x0A,BADR)
|
|
//[-start-210902-YUNLEI0128-modify]//
|
|
store(1000000,SPED)
|
|
//[-end-210902-YUNLEI0128-modify]//
|
|
Return
|
|
}
|
|
}
|
|
Name (_HID, "XXXX0000")
|
|
Name (_CID, "PNP0C50")
|
|
Name (_S0W, 3)
|
|
Method(_DSM, 0x4, Serialized) {
|
|
If (LEqual(Arg0,HIDG)) { Return(HIDD(Arg0,Arg1,Arg2,Arg3,HID2)) }
|
|
If (LEqual(Arg0,TP7G)) { Return(TP7D(Arg0,Arg1,Arg2,Arg3,SBFB,SBFG)) }
|
|
Return (Buffer(1){0})
|
|
}
|
|
|
|
Method (_STA, 0, NotSerialized) {
|
|
If (LEqual(TPNY,0x00)) {
|
|
Return (0x00)
|
|
}Else {
|
|
Return (0x0F)
|
|
}
|
|
}
|
|
|
|
Method (_CRS, 0, NotSerialized) {
|
|
If (LLess(OSYS, 2012)) { Return (SBFI) } // For Windows 7 only report Interrupt; it doesn't support ACPI5.0 and wouldn't understand GpioInt nor I2cBus
|
|
If (LEqual(TPLM,0)) { Return (ConcatenateResTemplate(I2CM(I2CX,BADR,SPED), SBFG)) }
|
|
Return (ConcatenateResTemplate(I2CM(I2CX,BADR,SPED), SBFI))
|
|
}
|
|
|
|
} // Device (TPL1)
|
|
#endif
|
|
|
|
//[-start-210916-xinwei0002-add]//
|
|
#ifdef S370_SUPPORT
|
|
Device (TPL1) {
|
|
External(\_SB.PC00.I2C0, DeviceObj) //I2C0 Controller
|
|
Name (HID2,0)
|
|
//[-start-210902-YUNLEI0128-modify]//
|
|
Name (SBFB, ResourceTemplate () { I2cSerialBus (0,ControllerInitiated,1000000,AddressingMode7Bit,"\\_SB.PC00.I2C0",,,I2CA) })
|
|
//[-end-210902-YUNLEI0128-modify]//
|
|
Name (SBFG, ResourceTemplate () {
|
|
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000, "\\_SB.GPI0", 0x00, ResourceConsumer, INTG) {0}
|
|
})
|
|
Name (SBFI, ResourceTemplate () {
|
|
Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake,,,INTI) {0}
|
|
})
|
|
CreateWordField(SBFB,I2CA._ADR,BADR)
|
|
CreateDWordField(SBFB,I2CA._SPE,SPED)
|
|
CreateWordField (SBFG,INTG._PIN,INT1)
|
|
CreateDWordField(SBFI,INTI._INT,INT2)
|
|
|
|
Method(_INI) {
|
|
If (LLess(OSYS,2012)) { SRXO(GPIO_VER2_LP_GPP_D16,1) }
|
|
Store(GNUM(GPIO_VER2_LP_GPP_D16),INT1)
|
|
Store(INUM(GPIO_VER2_LP_GPP_D16),INT2)
|
|
//[-start-220106-QINGLIN0142-modify]//
|
|
if(LEqual(TPNP,0xD64D)) { // BOE touchpanel AC600013N30/SD10W73240 AC60001HR00/SD11C74689
|
|
store("GTCH7503",_HID)
|
|
store(0x01,HID2)
|
|
store(0x10,BADR)
|
|
store(1000000,SPED)
|
|
Return
|
|
}
|
|
if(LEqual(TPNP,0x2D72)) { // IVO touchpanel AC60001AJ70/SD11F99464
|
|
store("ELAN901C",_HID)
|
|
store(0x01,HID2)
|
|
store(0x10,BADR)
|
|
store(1000000,SPED)
|
|
Return
|
|
}
|
|
if(LEqual(TPNP,0x2EE3)) { // IVO touchpanel AC60001Q000/SD11D69016
|
|
store("ELAN901C",_HID)
|
|
store(0x01,HID2)
|
|
store(0x10,BADR)
|
|
store(1000000,SPED)
|
|
Return
|
|
}
|
|
if(LEqual(TPNP,0x2EFD)) { // AUO touchpanel AC600017E20/SD11D69013
|
|
store("GTCH7503",_HID)
|
|
store(0x01,HID2)
|
|
store(0x10,BADR)
|
|
store(1000000,SPED)
|
|
Return
|
|
}
|
|
if(LEqual(TPNP,0xA815)) { // BOE touchpanel AC600012UP0/SD11D69015
|
|
store("GTCH7503",_HID)
|
|
store(0x01,HID2)
|
|
store(0x10,BADR)
|
|
store(1000000,SPED)
|
|
Return
|
|
}
|
|
//[-end-220106-QINGLIN0142-modify]//
|
|
}
|
|
Name (_HID, "XXXX0000")
|
|
Name (_CID, "PNP0C50")
|
|
Name (_S0W, 3)
|
|
Method(_DSM, 0x4, Serialized) {
|
|
If (LEqual(Arg0,HIDG)) { Return(HIDD(Arg0,Arg1,Arg2,Arg3,HID2)) }
|
|
If (LEqual(Arg0,TP7G)) { Return(TP7D(Arg0,Arg1,Arg2,Arg3,SBFB,SBFG)) }
|
|
Return (Buffer(1){0})
|
|
}
|
|
|
|
Method (_STA, 0, NotSerialized) {
|
|
If (LEqual(TPNY,0x00)) {
|
|
Return (0x00)
|
|
}Else {
|
|
Return (0x0F)
|
|
}
|
|
}
|
|
|
|
Method (_CRS, 0, NotSerialized) {
|
|
If (LLess(OSYS, 2012)) { Return (SBFI) } // For Windows 7 only report Interrupt; it doesn't support ACPI5.0 and wouldn't understand GpioInt nor I2cBus
|
|
If (LEqual(TPLM,0)) { Return (ConcatenateResTemplate(I2CM(I2CX,BADR,SPED), SBFG)) }
|
|
Return (ConcatenateResTemplate(I2CM(I2CX,BADR,SPED), SBFI))
|
|
}
|
|
|
|
} // Device (TPL1)
|
|
#endif
|
|
//[-end-210916-xinwei0002-add]//
|
|
//[-start-211213-GEORGE0031-modify]//
|
|
//[-start-210918-GEORGE0005-add]//
|
|
#if defined(S77014_SUPPORT) || defined(S77014IAH_SUPPORT)
|
|
Device (TPL1) {
|
|
Name (HID2,0)
|
|
//[-start-210902-YUNLEI0128-modify]//
|
|
Name (SBFB, ResourceTemplate () { I2cSerialBus (0,ControllerInitiated,400000,AddressingMode7Bit,"\\_SB.PC00.I2C0",,,I2CA) })
|
|
//[-end-210902-YUNLEI0128-modify]//
|
|
Name (SBFG, ResourceTemplate () {
|
|
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000, "\\_SB.GPI0", 0x00, ResourceConsumer, INTG) {0}
|
|
})
|
|
Name (SBFI, ResourceTemplate () {
|
|
Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake,,,INTI) {0}
|
|
})
|
|
CreateWordField(SBFB,I2CA._ADR,BADR)
|
|
CreateDWordField(SBFB,I2CA._SPE,SPED)
|
|
CreateWordField (SBFG,INTG._PIN,INT1)
|
|
CreateDWordField(SBFI,INTI._INT,INT2)
|
|
|
|
Method(_INI) {
|
|
If (LLess(OSYS,2012)) { SRXO(GPIO_VER2_LP_GPP_D16,1) }
|
|
Store(GNUM(GPIO_VER2_LP_GPP_D16),INT1)
|
|
Store(INUM(GPIO_VER2_LP_GPP_D16),INT2)
|
|
//[-start-220216-GEORGE0051-add]//
|
|
if(LEqual(TPNP,0x4008)) { // IVO touchpanel
|
|
store("ELAN901C",_HID)
|
|
store(0x01,HID2)
|
|
store(0x10,BADR)
|
|
store(400000,SPED)
|
|
Return
|
|
}
|
|
//[-end-220216-GEORGE0051-add]//
|
|
//[-start-211105-GEORGE0019-add]//
|
|
if(LEqual(TPNP,0x4009)) { // IVO touchpanel
|
|
store("ELAN901C",_HID)
|
|
store(0x01,HID2)
|
|
store(0x10,BADR)
|
|
store(400000,SPED)
|
|
Return
|
|
}
|
|
//[-end-211105-GEORGE0019-add]//
|
|
if(LEqual(TPNP,0x2E8A)) { // IVO touchpanel
|
|
// if(LEqual(TPNY,0xA3)) { // IVO touchpanel
|
|
store("ELANXXXX",_HID)
|
|
store(0x01,HID2)
|
|
store(0x10,BADR)
|
|
store(400000,SPED)
|
|
Return
|
|
}
|
|
}
|
|
Name (_HID, "XXXX0000")
|
|
Name (_CID, "PNP0C50")
|
|
Name (_S0W, 3)
|
|
Method(_DSM, 0x4, Serialized) {
|
|
If (LEqual(Arg0,HIDG)) { Return(HIDD(Arg0,Arg1,Arg2,Arg3,HID2)) }
|
|
If (LEqual(Arg0,TP7G)) { Return(TP7D(Arg0,Arg1,Arg2,Arg3,SBFB,SBFG)) }
|
|
Return (Buffer(1){0})
|
|
}
|
|
|
|
Method (_STA, 0, NotSerialized) {
|
|
If (LEqual(TPNY,0x00)) {
|
|
Return (0x00)
|
|
}Else {
|
|
Return (0x0F)
|
|
}
|
|
}
|
|
|
|
Method (_CRS, 0, NotSerialized) {
|
|
If (LLess(OSYS, 2012)) { Return (SBFI) } // For Windows 7 only report Interrupt; it doesn't support ACPI5.0 and wouldn't understand GpioInt nor I2cBus
|
|
If (LEqual(TPLM,0)) { Return (ConcatenateResTemplate(I2CM(I2CX,BADR,SPED), SBFG)) }
|
|
Return (ConcatenateResTemplate(I2CM(I2CX,BADR,SPED), SBFI))
|
|
}
|
|
} // Device (TPL1)
|
|
#endif
|
|
//[-end-210918-GEORGE0005-add]//
|
|
//[-end-211213-GEORGE0031-modify]//
|
|
//[-start-210919-QINGLIN0076-add]//
|
|
#ifdef S570_SUPPORT
|
|
Device (TPL1) {
|
|
External(\_SB.PC00.I2C0, DeviceObj) //I2C0 Controller
|
|
Name (HID2,0)
|
|
//[-start-210902-YUNLEI0128-modify]//
|
|
Name (SBFB, ResourceTemplate () { I2cSerialBus (0,ControllerInitiated,1000000,AddressingMode7Bit,"\\_SB.PC00.I2C0",,,I2CA) })
|
|
//[-end-210902-YUNLEI0128-modify]//
|
|
Name (SBFG, ResourceTemplate () {
|
|
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000, "\\_SB.GPI0", 0x00, ResourceConsumer, INTG) {0}
|
|
})
|
|
Name (SBFI, ResourceTemplate () {
|
|
Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake,,,INTI) {0}
|
|
})
|
|
CreateWordField(SBFB,I2CA._ADR,BADR)
|
|
CreateDWordField(SBFB,I2CA._SPE,SPED)
|
|
CreateWordField (SBFG,INTG._PIN,INT1)
|
|
CreateDWordField(SBFI,INTI._INT,INT2)
|
|
|
|
Method(_INI) {
|
|
If (LLess(OSYS,2012)) { SRXO(GPIO_VER2_LP_GPP_D16,1) }
|
|
Store(GNUM(GPIO_VER2_LP_GPP_D16),INT1)
|
|
Store(INUM(GPIO_VER2_LP_GPP_D16),INT2)
|
|
if(LEqual(TPNP,0xD64D)) { // BOE touchpanel
|
|
store("GTCH7503",_HID)
|
|
store(0x01,HID2)
|
|
store(0x10,BADR)
|
|
store(1000000,SPED)
|
|
Return
|
|
}
|
|
//[-start-210922-QINGLIN0078-add]//
|
|
if(LEqual(TPNP,0x2D72)) { // IVO touchpanel
|
|
store("ELAN901C",_HID)
|
|
store(0x01,HID2)
|
|
store(0x10,BADR)
|
|
store(1000000,SPED)
|
|
Return
|
|
}
|
|
//[-end-210922-QINGLIN0078-add]//
|
|
//[-start-220802-OWENWU0044-add]//
|
|
if(LEqual(TPNP,0x40D2)) { // INX touchpanel
|
|
store("ELAN901C",_HID)
|
|
store(0x01,HID2)
|
|
store(0x10,BADR)
|
|
store(400000,SPED)
|
|
Return
|
|
}
|
|
//[-end-220802-OWENWU0044-add]//
|
|
}
|
|
Name (_HID, "XXXX0000")
|
|
Name (_CID, "PNP0C50")
|
|
Name (_S0W, 3)
|
|
Method(_DSM, 0x4, Serialized) {
|
|
If (LEqual(Arg0,HIDG)) { Return(HIDD(Arg0,Arg1,Arg2,Arg3,HID2)) }
|
|
If (LEqual(Arg0,TP7G)) { Return(TP7D(Arg0,Arg1,Arg2,Arg3,SBFB,SBFG)) }
|
|
Return (Buffer(1){0})
|
|
}
|
|
|
|
Method (_STA, 0, NotSerialized) {
|
|
If (LEqual(TPNY,0x00)) {
|
|
Return (0x00)
|
|
} Else {
|
|
Return (0x0F)
|
|
}
|
|
}
|
|
|
|
Method (_CRS, 0, NotSerialized) {
|
|
If (LLess(OSYS, 2012)) { Return (SBFI) } // For Windows 7 only report Interrupt; it doesn't support ACPI5.0 and wouldn't understand GpioInt nor I2cBus
|
|
If (LEqual(TPLM,0)) { Return (ConcatenateResTemplate(I2CM(I2CX,BADR,SPED), SBFG)) }
|
|
Return (ConcatenateResTemplate(I2CM(I2CX,BADR,SPED), SBFI))
|
|
}
|
|
|
|
} // Device (TPL1)
|
|
#endif
|
|
//[-end-210919-QINGLIN0076-add]//
|
|
//[-start-211213-GEORGE0031-modify]//
|
|
//[-start-211110-GEORGE0020-add]//
|
|
#ifdef S77013_SUPPORT
|
|
Device (TPL1) {
|
|
Name (HID2,0)
|
|
//[-start-210902-YUNLEI0128-modify]//
|
|
Name (SBFB, ResourceTemplate () { I2cSerialBus (0,ControllerInitiated,400000,AddressingMode7Bit,"\\_SB.PC00.I2C0",,,I2CA) })
|
|
//[-end-210902-YUNLEI0128-modify]//
|
|
Name (SBFG, ResourceTemplate () {
|
|
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000, "\\_SB.GPI0", 0x00, ResourceConsumer, INTG) {0}
|
|
})
|
|
Name (SBFI, ResourceTemplate () {
|
|
Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake,,,INTI) {0}
|
|
})
|
|
CreateWordField(SBFB,I2CA._ADR,BADR)
|
|
CreateDWordField(SBFB,I2CA._SPE,SPED)
|
|
CreateWordField (SBFG,INTG._PIN,INT1)
|
|
CreateDWordField(SBFI,INTI._INT,INT2)
|
|
|
|
Method(_INI) {
|
|
If (LLess(OSYS,2012)) { SRXO(GPIO_VER2_LP_GPP_D16,1) }
|
|
Store(GNUM(GPIO_VER2_LP_GPP_D16),INT1)
|
|
Store(INUM(GPIO_VER2_LP_GPP_D16),INT2)
|
|
// if(LEqual(TPNP,0x4009)) { // IVO touchpanel
|
|
if(LEqual(TPNY,0xA3)) { // three ELAN touch IC use the same HID
|
|
store("ELAN901C",_HID)
|
|
store(0x01,HID2)
|
|
store(0x10,BADR)
|
|
store(400000,SPED)
|
|
Return
|
|
}
|
|
}
|
|
Name (_HID, "XXXX0000")
|
|
Name (_CID, "PNP0C50")
|
|
Name (_S0W, 3)
|
|
Method(_DSM, 0x4, Serialized) {
|
|
If (LEqual(Arg0,HIDG)) { Return(HIDD(Arg0,Arg1,Arg2,Arg3,HID2)) }
|
|
If (LEqual(Arg0,TP7G)) { Return(TP7D(Arg0,Arg1,Arg2,Arg3,SBFB,SBFG)) }
|
|
Return (Buffer(1){0})
|
|
}
|
|
|
|
Method (_STA, 0, NotSerialized) {
|
|
If (LEqual(TPNY,0x00)) {
|
|
Return (0x00)
|
|
}Else {
|
|
Return (0x0F)
|
|
}
|
|
}
|
|
|
|
Method (_CRS, 0, NotSerialized) {
|
|
If (LLess(OSYS, 2012)) { Return (SBFI) } // For Windows 7 only report Interrupt; it doesn't support ACPI5.0 and wouldn't understand GpioInt nor I2cBus
|
|
If (LEqual(TPLM,0)) { Return (ConcatenateResTemplate(I2CM(I2CX,BADR,SPED), SBFG)) }
|
|
Return (ConcatenateResTemplate(I2CM(I2CX,BADR,SPED), SBFI))
|
|
}
|
|
} // Device (TPL1)
|
|
#endif
|
|
//[-end-211110-GEORGE0020-add]//
|
|
//[-end-211213-GEORGE0031-modify]//
|
|
#else
|
|
Device (TPL1) {
|
|
Name (HID2,0)
|
|
Name (SBFB, ResourceTemplate () { I2cSerialBus (0,ControllerInitiated,400000,AddressingMode7Bit,"NULL",,,I2CB) })
|
|
Name (SBFG, ResourceTemplate () {
|
|
GpioInt (Level, ActiveLow, Exclusive, PullUp, 0x0000, "\\_SB.GPI0", 0x00, ResourceConsumer,INTG ) { 0 }
|
|
})
|
|
Name (SBFI, ResourceTemplate () {
|
|
Interrupt(ResourceConsumer, Level, ActiveLow, Exclusive,,,INTI) {0}
|
|
})
|
|
CreateWordField(SBFB,I2CB._ADR,BADR)
|
|
CreateDWordField(SBFB,I2CB._SPE,SPED)
|
|
CreateWordField (SBFG,INTG._PIN,INT1)
|
|
CreateDWordField(SBFI,INTI._INT,INT2)
|
|
Method(_INI) {
|
|
If (LLess(OSYS,2012)) { SRXO(GPLI,1) }
|
|
Store (GNUM(GPLI),INT1)
|
|
Store (INUM(GPLI),INT2)
|
|
If (LEqual(TPLM,0)) {
|
|
SHPO(GPLI,1) // configure gpio pad in gpio driver mode
|
|
}
|
|
If (LEqual(TPLT, ATMEL3432_PANEL)) {
|
|
Store ("ATML3432",_HID)
|
|
Store (0,HID2)
|
|
Store (0x4C,BADR)
|
|
Store (400000,SPED)
|
|
Return
|
|
}
|
|
If (LEqual(TPLT, ATMEL2952_PANEL)) {
|
|
Store ("ATML2952",_HID)
|
|
Store (0,HID2)
|
|
Store (0x4A,BADR)
|
|
Store (400000,SPED)
|
|
Return
|
|
}
|
|
If (LEqual(TPLT, ELAN9048_PANEL)) {
|
|
Store ("ELAN9048",_HID)
|
|
Store (1,HID2)
|
|
Store (0x10,BADR)
|
|
Store (400000,SPED)
|
|
Return
|
|
}
|
|
If (LEqual(TPLT, NTRIG_SAMSUNG_PANEL)) {
|
|
Store ("NTRG0001",_HID)
|
|
Store (1,HID2)
|
|
Store (0x07,BADR)
|
|
Store (400000,SPED)
|
|
Return
|
|
}
|
|
If (LEqual(TPLT, NTRIG_SHARP_PANEL)) {
|
|
Store ("NTRG0002",_HID)
|
|
Store (1,HID2)
|
|
Store (0x64,BADR)
|
|
Store (400000,SPED)
|
|
Return
|
|
}
|
|
If(LEqual(TPLT, WACOM_PANEL)) {
|
|
Store("WCOM508E",_HID)
|
|
Store(1,HID2)
|
|
Store(0x0A,BADR)
|
|
If (LEqual(TPLS,0)) { Store( 400000,SPED) } // Fast mode
|
|
If (LEqual(TPLS,1)) { Store( 400000,SPED) } // Fast mode
|
|
If (LEqual(TPLS,2)) { Store(1000000,SPED) } // Fast mode
|
|
Return
|
|
}
|
|
If(LEqual(TPLT, SERIAL_IO_TPL_CUSTOM_DEVICE)) { // Custom TouchPanel
|
|
Store("CUST0000",_HID)
|
|
Store(TPLH,HID2)
|
|
Store(TPLB,BADR)
|
|
If (LEqual(TPLS,0)) { Store( 100000,SPED) }
|
|
If (LEqual(TPLS,1)) { Store( 400000,SPED) }
|
|
If (LEqual(TPLS,2)) { Store(1000000,SPED) }
|
|
Return
|
|
}
|
|
}
|
|
|
|
Name (_HID, "XXXX0000")
|
|
Name (_CID, "PNP0C50")
|
|
Method (_UID, 0) {
|
|
Return (I2CI)
|
|
}
|
|
|
|
Name (_S0W, 4)
|
|
Method(_DSM, 0x4, Serialized) {
|
|
If (LEqual(Arg0,HIDG)) { Return(HIDD(Arg0,Arg1,Arg2,Arg3,HID2)) }
|
|
If (LEqual(Arg0,TP7G)) { Return(TP7D(Arg0,Arg1,Arg2,Arg3,SBFB,SBFG)) }
|
|
Return (Buffer(1){0})
|
|
}
|
|
|
|
Method (_STA, 0, NotSerialized) {
|
|
If (LAnd(LNotEqual(TPLT,0),And( I2CN, SERIAL_IO_I2C_TOUCHPANEL))) { Return (0x0F) }
|
|
Return (0x00)
|
|
}
|
|
|
|
Method (_CRS, 0, NotSerialized) {
|
|
If (LLess(OSYS, 2012)) { Return (SBFI) } // For Windows 7 only report Interrupt; it doesn't support ACPI5.0 and wouldn't understand GpioInt nor I2cBus
|
|
If (LEqual(TPLM,0)) { Return (ConcatenateResTemplate(I2CM(I2CX,BADR,SPED), SBFG)) }
|
|
Return (ConcatenateResTemplate(I2CM(I2CX,BADR,SPED), SBFI))
|
|
}
|
|
} // Device (TPL1)
|
|
#endif
|
|
//[-end-210729-Kebin00040-modify]//
|