Thanks for replies.
I tried to change “misc” to “power” and move driver to /boot/home/config/non-packaged/add-ons/kernel/power
and still no effect in syslog. ls /dev/power
don’t list acpi_test
device. Old API is working, but I don’t know is it possible to use ACPI module with old API. USB module provide register_driver
function, but there are no similar function in ACPI module.
Target device is enumerated only in ACPI tree, it is not enumerated in PCI bus.
Relevant part of dump of ACPI table:
Device (I2C6)
{
Name (_HID, "808622C1") // _HID: Hardware ID
Name (_CID, "808622C1") // _CID: Compatible ID
Name (_DDN, "Intel(R) I2C Controller #6 - 808622C6") // _DDN: DOS Device Name
Name (_UID, 0x06) // _UID: Unique ID
Name (_DEP, Package (0x01) // _DEP: Dependencies
{
PEPD
})
Name (RBUF, ResourceTemplate ()
{
Memory32Fixed (ReadWrite,
0x00000000, // Address Base
0x00001000, // Address Length
_Y1A)
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
{
0x00000025,
}
FixedDMA (0x001A, 0x0002, Width32bit, )
FixedDMA (0x001B, 0x0003, Width32bit, )
})
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
CreateDWordField (RBUF, \_SB.PCI0.I2C6._Y1A._BAS, B0BA) // _BAS: Base Address
CreateDWordField (RBUF, \_SB.PCI0.I2C6._Y1A._LEN, B0LN) // _LEN: Length
B0BA = I60A /* \I60A */
B0LN = I60L /* \I60L */
Return (RBUF) /* \_SB_.PCI0.I2C6.RBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (((I60A == Zero) || (L26D == One)))
{
Return (Zero)
}
Return (0x0F)
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
PSAT |= 0x03
PSAT |= Zero
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
PSAT &= 0xFFFFFFFC
PSAT |= Zero
}
OperationRegion (KEYS, SystemMemory, I61A, 0x0100)
Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
{
Offset (0x84),
PSAT, 32
}
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
If ((IC6P == Zero))
{
Return (Zero)
}
Else
{
Return (0x03)
}
}
Device (TCS0)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "ELAN9010") // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_S0W, Zero) // _S0W: S0 Device Wake State
Name (AHRV, One)
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (WBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0010, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C6",
0x00, ResourceConsumer, , Exclusive,
)
GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPO1", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0014
}
GpioInt (Level, ActiveLow, Shared, PullDefault, 0x0000,
"\\_SB.GPO3", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x004D
}
})
Return (WBUF) /* \_SB_.PCI0.I2C6.TCS0._CRS.WBUF */
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
Debug = "Method _DSM begin"
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Switch (ToInteger (Arg1))
{
Case (One)
{
Debug = "Method _DSM Function Query"
Return (Buffer (One)
{
0x03 // .
})
}
Default
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Case (One)
{
Debug = "Method _DSM Function HID"
Return (One)
}
Default
{
Return (Zero)
}
}
}
Else
{
Return (Buffer (One)
{
0x00 // .
})
}
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((BDID == One))
{
Return (Zero)
}
If ((ITSA == 0x10))
{
Return (0x0F)
}
Return (Zero)
}
}
Device (TCS1)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "NTRG0001") // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_S0W, Zero) // _S0W: S0 Device Wake State
Method (_PS3, 0, Serialized) // _PS3: Power State 3
{
If ((^^^^GPO1.AVBL == One))
{
^^^^GPO1.TCD3 = Zero
}
Sleep (0x78)
}
Method (_PS0, 0, Serialized) // _PS0: Power State 0
{
If ((^^^^GPO1.AVBL == One))
{
^^^^GPO1.TCD3 = One
}
Sleep (0x78)
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (BBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0060, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C6",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, Shared, PullDefault, 0x0000,
"\\_SB.GPO3", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x004D
}
})
Return (BBUF) /* \_SB_.PCI0.I2C6.TCS1._CRS.BBUF */
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
Debug = "Method _DSM begin"
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Switch (ToInteger (Arg1))
{
Case (One)
{
Debug = "Method _DSM Function Query"
Return (Buffer (One)
{
0x03 // .
})
}
Default
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Case (One)
{
Debug = "Method _DSM Function HID"
Return (One)
}
Default
{
Return (One)
}
}
}
Else
{
Return (Buffer (One)
{
0x00 // .
})
}
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((BDID == One))
{
Return (Zero)
}
Return (Zero)
}
}
Device (TCS2)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "WCOM0016") // _HID: Hardware ID
Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID
Name (_S0W, Zero) // _S0W: S0 Device Wake State
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0009, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C6",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Level, ActiveLow, Shared, PullDefault, 0x0000,
"\\_SB.GPO2", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0013
}
GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPO1", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0014
}
})
Return (RBUF) /* \_SB_.PCI0.I2C6.TCS2._CRS.RBUF */
}
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
Debug = "Method _DSM begin"
If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Switch (ToInteger (Arg1))
{
Case (One)
{
Debug = "Method _DSM Function Query"
Return (Buffer (One)
{
0x03 // .
})
}
Default
{
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Case (One)
{
Debug = "Method _DSM Function HID"
Return (One)
}
Default
{
Return (Zero)
}
}
}
Else
{
Return (Buffer (One)
{
0x00 // .
})
}
Return (Zero)
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((DGEF == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
}
TCS0
is touchscreen, TCS2
is pen sensor.