Re: [PATCH v2 2/3] HID: i2c-hid: Move common ACPI _DSM helper into core
From: 谢致邦 (XIE Zhibang)
Date: Thu Jun 04 2026 - 00:24:46 EST
Hi Hans and Benjamin,
Thank you for the constructive discussion.
A correction on the origin of this firmware quirk:
This is not a Loongson platform issue. Loongson 3A5000 and
3A6000 laptops using the EA Excelsior ODM design do not have
this problem. The affected machines — Lenovo KaiTian N60d and
Inspur CP300L3 — use a different ODM.
The ODM is likely Baolongda (Bitland), based on CQC certification
records and a design patent filing. Firmware analysis shows the
N60d is codenamed NL296A and the CP300L3 is NL296B, and there
may be NL296C as well. The ODM's NL296 project team likely
lacked ACPI experience, resulting in the broken PRP0001 +
"hid-over-i2c" + no "hid-descr-addr" but has _DSM combination.
I will use the name i2c-hid-acpi-prp0001, without DMI matching.
The new driver will first check whether "hid-descr-addr" is
present and silently return -ENODEV if so, falling back to _DSM
only when the property is missing.
I am testing the new driver and will send it out once verified.
The TPD0 node is identical on the N60d and CP300L3:
Device (TPD0)
{
Name (_HID, "PRP0001")
Name (_DSD, Package (0x02)
{
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package (0x01)
{
Package (0x02)
{
"compatible",
"hid-over-i2c"
}
}
})
Name (_CRS, ResourceTemplate ()
{
I2cSerialBusV2 (0x002C, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.I2C1",
0x00, ResourceConsumer, , Exclusive,
)
Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
{
0x0000007F,
}
})
Method (_DSM, 4, Serialized)
{
Switch (Arg0)
{
Case (ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de"))
{
Switch (Arg1)
{
Case (One)
{
Switch (Arg2)
{
Case (One)
{
Return (0x20)
}
}
}
}
}
}
}
}
Regards,
Zhibang