Re: [PATCH 1/1] x86/platform: classmate-laptop: Add cmpc_keys supportfor new classmate laptops

From: Carlos Alberto Lopez Perez
Date: Tue Jun 21 2011 - 16:24:45 EST


On 06/21/2011 09:50 PM, Thadeu Lima de Souza Cascardo wrote:
> On Tue, Jun 21, 2011 at 09:40:01PM +0200, Carlos Alberto Lopez Perez wrote:
>> The cmpc_keys ACPI driver from the classmate-laptop module fails to
>> recognize the device on the 4th generation of classmate laptops (Atom N450)
>> because the device ID is named "FNBT0000" (uppercase N) on this laptops.
>>
>> MODALIAS=acpi:FNBT0000:
>>
>> This patch makes the driver cmpc_keys recognize it:
>>
>> input: cmpc_keys as /devices/LNXSYSTM:00/device:00/FNBT0000:00/input/input18
>>
>> Signed-off-by: Carlos Alberto Lopez Perez <clopez@xxxxxxxxxx>
>> ---
>> drivers/platform/x86/classmate-laptop.c | 3 +++
>> 1 files changed, 3 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/platform/x86/classmate-laptop.c b/drivers/platform/x86/classmate-laptop.c
>> index 94f93b6..03896cd 100644
>> --- a/drivers/platform/x86/classmate-laptop.c
>> +++ b/drivers/platform/x86/classmate-laptop.c
>> @@ -40,6 +40,7 @@ struct cmpc_accel {
>> #define CMPC_TABLET_HID "TBLT0000"
>> #define CMPC_IPML_HID "IPML200"
>> #define CMPC_KEYS_HID "FnBT0000"
>> +#define CMPC_KEYS_4GEN_HID "FNBT0000"
>>
>> /*
>> * Generic input device code.
>> @@ -683,6 +684,7 @@ static int cmpc_keys_remove(struct acpi_device *acpi, int type)
>>
>> static const struct acpi_device_id cmpc_keys_device_ids[] = {
>> {CMPC_KEYS_HID, 0},
>> + {CMPC_KEYS_4GEN_HID, 0},
>> {"", 0}
>> };
>>
>> @@ -754,6 +756,7 @@ static const struct acpi_device_id cmpc_device_ids[] = {
>> {CMPC_TABLET_HID, 0},
>> {CMPC_IPML_HID, 0},
>> {CMPC_KEYS_HID, 0},
>> + {CMPC_KEYS_4GEN_HID, 0},
>> {"", 0}
>> };
>>
>> --
>> 1.7.5.3
>>
>
> Not-Acked-By: Thadeu Lima de Souza Cascardo <cascardo@xxxxxxxxxxxxxx>
>
> Recent Linux versions have "upper-cased" the device names, because ACPI
> spec says devices must have upper-case letters. This is probably related
> to this change, not because the device name has changed in recent
> versions of the device. So the correct fix would be to either revert
> this change in Linux or use only a single uppercase name for the device.
>
> Thanks anyway for this report. I have received one report in private a
> while back, but was too lazy to discuss this on the list. Any pointers
> on that? Easist way to go is to simply replace FnBT for FNBT.
>
> Regards,
> Cascardo.

The ACPI specification [1] says the following:

"""
A valid PNP ID must be of the form “AAA####” where A is an uppercase letter
and # is a hex digit.
A valid ACPI ID must be of the form “ACPI####” where # is a hex digit.
"""

It don't says that the ACPI ID must be uppercase.

I don't have an older generation of the classmate laptop to test if the
ACPI ID is FnBT or FNBT, but I guess that if it was working until now, is
because the older generations have FnBT instead of FNBT.

However I just found a previous discussion about this issue on LKML [2] and
seems that the patch is included (commit: 72638f5).

So... this means that the cmpc_keys module was not working for any
classmate laptop since ~2.6.29 ?

If that is the case then replacing FnBT with FNBT will be fine.

Thanks!

Best regards!

-------
[1] http://www.acpi.info/DOWNLOADS/ACPIspec40a.pdf
[2] https://lkml.org/lkml/2009/1/21/238

Attachment: signature.asc
Description: OpenPGP digital signature