diff mbox series

platform/x86: thinkpad-acpi: Add support for new hotkey for camera shutter switch

Message ID 20250403053127.4777-1-nitjoshi@gmail.com (mailing list archive)
State New
Headers show
Series platform/x86: thinkpad-acpi: Add support for new hotkey for camera shutter switch | expand

Commit Message

Nitin Joshi April 3, 2025, 5:31 a.m. UTC
New Lenovo Thinkpad models, e.g. the 'X9-14 Gen 1' and 'X9-15 Gen 1'
has new shortcut on F9 key i.e to switch camera shutter and it
send a new 0x131b hkey event when F9 key is pressed.

This commit adds support for new hkey 0x131b.
Signed-off-by: Nitin Joshi <nitjoshi@gmail.com>
---
 drivers/platform/x86/thinkpad_acpi.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Hans de Goede April 3, 2025, 10:34 a.m. UTC | #1
Hi Nitin,

On 3-Apr-25 7:31 AM, Nitin Joshi wrote:
> New Lenovo Thinkpad models, e.g. the 'X9-14 Gen 1' and 'X9-15 Gen 1'
> has new shortcut on F9 key i.e to switch camera shutter and it
> send a new 0x131b hkey event when F9 key is pressed.
> 
> This commit adds support for new hkey 0x131b.
> Signed-off-by: Nitin Joshi <nitjoshi@gmail.com>

Does the EC also actually enable/disable the camera in response to
this new hotkey, or is this purely a request to userspace / the OS
to enable/disable the camera?

And if this is purely a request is there some other thinkpad ACPI
calls we can make to actually disable the camera or should this
be fully handled in software in the OS / desktop-environment /
camera stack ?

Regards,

Hans



> ---
>  drivers/platform/x86/thinkpad_acpi.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
> index 0384cf311878..80f77f9c7a58 100644
> --- a/drivers/platform/x86/thinkpad_acpi.c
> +++ b/drivers/platform/x86/thinkpad_acpi.c
> @@ -182,6 +182,7 @@ enum tpacpi_hkey_event_t {
>  						   * directly in the sparse-keymap.
>  						   */
>  	TP_HKEY_EV_AMT_TOGGLE		= 0x131a, /* Toggle AMT on/off */
> +	TP_HKEY_EV_CAMERASHUTTER_TOGGLE = 0x131b, /* Toggle Camera Shutter */
>  	TP_HKEY_EV_DOUBLETAP_TOGGLE	= 0x131c, /* Toggle trackpoint doubletap on/off */
>  	TP_HKEY_EV_PROFILE_TOGGLE	= 0x131f, /* Toggle platform profile in 2024 systems */
>  	TP_HKEY_EV_PROFILE_TOGGLE2	= 0x1401, /* Toggle platform profile in 2025 + systems */
> @@ -3271,6 +3272,7 @@ static const struct key_entry keymap_lenovo[] __initconst = {
>  	 * after switching to sparse keymap support. The mappings above use translated
>  	 * scancodes to preserve uAPI compatibility, see tpacpi_input_send_key().
>  	 */
> +	{ KE_KEY, TP_HKEY_EV_CAMERASHUTTER_TOGGLE, { KEY_CAMERA_ACCESS_TOGGLE } },
>  	{ KE_KEY, 0x131d, { KEY_VENDOR } }, /* System debug info, similar to old ThinkPad key */
>  	{ KE_KEY, 0x1320, { KEY_LINK_PHONE } },
>  	{ KE_KEY, TP_HKEY_EV_TRACK_DOUBLETAP /* 0x8036 */, { KEY_PROG4 } },
Nitin Joshi April 4, 2025, 6:44 a.m. UTC | #2
Hello Hans,

Thank you for reviewing patch.

On 4/3/25 19:34, Hans de Goede wrote:
> Hi Nitin,
> 
> On 3-Apr-25 7:31 AM, Nitin Joshi wrote:
>> New Lenovo Thinkpad models, e.g. the 'X9-14 Gen 1' and 'X9-15 Gen 1'
>> has new shortcut on F9 key i.e to switch camera shutter and it
>> send a new 0x131b hkey event when F9 key is pressed.
>>
>> This commit adds support for new hkey 0x131b.
>> Signed-off-by: Nitin Joshi <nitjoshi@gmail.com>
> 
> Does the EC also actually enable/disable the camera in response to
> this new hotkey, or is this purely a request to userspace / the OS
> to enable/disable the camera
Enable/disable is actually being done by EC. Camera enablement for these 
products are still in testing phase.
?
> 
> And if this is purely a request is there some other thinkpad ACPI
> calls we can make to actually disable the camera or should this
> be fully handled in software in the OS / desktop-environment /
> camera stack ?
> 
> Regards,
> 
> Hans

Thanks & Regards,
Nitin Joshi

> 
> 
> 
>> ---
>>   drivers/platform/x86/thinkpad_acpi.c | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
>> index 0384cf311878..80f77f9c7a58 100644
>> --- a/drivers/platform/x86/thinkpad_acpi.c
>> +++ b/drivers/platform/x86/thinkpad_acpi.c
>> @@ -182,6 +182,7 @@ enum tpacpi_hkey_event_t {
>>   						   * directly in the sparse-keymap.
>>   						   */
>>   	TP_HKEY_EV_AMT_TOGGLE		= 0x131a, /* Toggle AMT on/off */
>> +	TP_HKEY_EV_CAMERASHUTTER_TOGGLE = 0x131b, /* Toggle Camera Shutter */
>>   	TP_HKEY_EV_DOUBLETAP_TOGGLE	= 0x131c, /* Toggle trackpoint doubletap on/off */
>>   	TP_HKEY_EV_PROFILE_TOGGLE	= 0x131f, /* Toggle platform profile in 2024 systems */
>>   	TP_HKEY_EV_PROFILE_TOGGLE2	= 0x1401, /* Toggle platform profile in 2025 + systems */
>> @@ -3271,6 +3272,7 @@ static const struct key_entry keymap_lenovo[] __initconst = {
>>   	 * after switching to sparse keymap support. The mappings above use translated
>>   	 * scancodes to preserve uAPI compatibility, see tpacpi_input_send_key().
>>   	 */
>> +	{ KE_KEY, TP_HKEY_EV_CAMERASHUTTER_TOGGLE, { KEY_CAMERA_ACCESS_TOGGLE } },
>>   	{ KE_KEY, 0x131d, { KEY_VENDOR } }, /* System debug info, similar to old ThinkPad key */
>>   	{ KE_KEY, 0x1320, { KEY_LINK_PHONE } },
>>   	{ KE_KEY, TP_HKEY_EV_TRACK_DOUBLETAP /* 0x8036 */, { KEY_PROG4 } },
>
Hans de Goede April 4, 2025, 7:25 a.m. UTC | #3
Hi Nitin,

On 4-Apr-25 8:44 AM, Nitin Joshi wrote:
> Hello Hans,
> 
> Thank you for reviewing patch.
> 
> On 4/3/25 19:34, Hans de Goede wrote:
>> Hi Nitin,
>>
>> On 3-Apr-25 7:31 AM, Nitin Joshi wrote:
>>> New Lenovo Thinkpad models, e.g. the 'X9-14 Gen 1' and 'X9-15 Gen 1'
>>> has new shortcut on F9 key i.e to switch camera shutter and it
>>> send a new 0x131b hkey event when F9 key is pressed.
>>>
>>> This commit adds support for new hkey 0x131b.
>>> Signed-off-by: Nitin Joshi <nitjoshi@gmail.com>
>>
>> Does the EC also actually enable/disable the camera in response to
>> this new hotkey, or is this purely a request to userspace / the OS
>> to enable/disable the camera
> Enable/disable is actually being done by EC. Camera enablement for these products are still in testing phase.
> ?

Ok, I assume we can also get the state (enabled vs disabled)
e.g. from the event? In that case the events should be reported using
EV_SW, SW_CAMERA_LENS_COVER and we should also get the initial
state and set the switch to the initial state before registering
the input device.

Regards,

Hans




>>> ---
>>>   drivers/platform/x86/thinkpad_acpi.c | 2 ++
>>>   1 file changed, 2 insertions(+)
>>>
>>> diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
>>> index 0384cf311878..80f77f9c7a58 100644
>>> --- a/drivers/platform/x86/thinkpad_acpi.c
>>> +++ b/drivers/platform/x86/thinkpad_acpi.c
>>> @@ -182,6 +182,7 @@ enum tpacpi_hkey_event_t {
>>>                              * directly in the sparse-keymap.
>>>                              */
>>>       TP_HKEY_EV_AMT_TOGGLE        = 0x131a, /* Toggle AMT on/off */
>>> +    TP_HKEY_EV_CAMERASHUTTER_TOGGLE = 0x131b, /* Toggle Camera Shutter */
>>>       TP_HKEY_EV_DOUBLETAP_TOGGLE    = 0x131c, /* Toggle trackpoint doubletap on/off */
>>>       TP_HKEY_EV_PROFILE_TOGGLE    = 0x131f, /* Toggle platform profile in 2024 systems */
>>>       TP_HKEY_EV_PROFILE_TOGGLE2    = 0x1401, /* Toggle platform profile in 2025 + systems */
>>> @@ -3271,6 +3272,7 @@ static const struct key_entry keymap_lenovo[] __initconst = {
>>>        * after switching to sparse keymap support. The mappings above use translated
>>>        * scancodes to preserve uAPI compatibility, see tpacpi_input_send_key().
>>>        */
>>> +    { KE_KEY, TP_HKEY_EV_CAMERASHUTTER_TOGGLE, { KEY_CAMERA_ACCESS_TOGGLE } },
>>>       { KE_KEY, 0x131d, { KEY_VENDOR } }, /* System debug info, similar to old ThinkPad key */
>>>       { KE_KEY, 0x1320, { KEY_LINK_PHONE } },
>>>       { KE_KEY, TP_HKEY_EV_TRACK_DOUBLETAP /* 0x8036 */, { KEY_PROG4 } },
>>
>
Nitin Joshi April 4, 2025, 9:02 a.m. UTC | #4
Hello Hans,

On 4/4/25 16:25, Hans de Goede wrote:
> Hi Nitin,
> 
> On 4-Apr-25 8:44 AM, Nitin Joshi wrote:
>> Hello Hans,
>>
>> Thank you for reviewing patch.
>>
>> On 4/3/25 19:34, Hans de Goede wrote:
>>> Hi Nitin,
>>>
>>> On 3-Apr-25 7:31 AM, Nitin Joshi wrote:
>>>> New Lenovo Thinkpad models, e.g. the 'X9-14 Gen 1' and 'X9-15 Gen 1'
>>>> has new shortcut on F9 key i.e to switch camera shutter and it
>>>> send a new 0x131b hkey event when F9 key is pressed.
>>>>
>>>> This commit adds support for new hkey 0x131b.
>>>> Signed-off-by: Nitin Joshi <nitjoshi@gmail.com>
>>>
>>> Does the EC also actually enable/disable the camera in response to
>>> this new hotkey, or is this purely a request to userspace / the OS
>>> to enable/disable the camera
>> Enable/disable is actually being done by EC. Camera enablement for these products are still in testing phase.
>> ?
> 
> Ok, I assume we can also get the state (enabled vs disabled)
> e.g. from the event? In that case the events should be reported using
> EV_SW, SW_CAMERA_LENS_COVER and we should also get the initial
> state and set the switch to the initial state before registering
> the input device.
Enable/Disable status will be determine in IPU side which receives 
notification from EC. So, the only way to determine the status would be 
to determine the status in IPU side.
So, purpose of this patch will only to avoid "unhandled hkey event" 
error from thinkpad_acpi driver.
Please let me know, if i am missing something.

> 
> Regards,
> 
> Hans
> 
Thanks & Regards,
Nitin Joshi
> 
> 
> 
>>>> ---
>>>>    drivers/platform/x86/thinkpad_acpi.c | 2 ++
>>>>    1 file changed, 2 insertions(+)
>>>>
>>>> diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
>>>> index 0384cf311878..80f77f9c7a58 100644
>>>> --- a/drivers/platform/x86/thinkpad_acpi.c
>>>> +++ b/drivers/platform/x86/thinkpad_acpi.c
>>>> @@ -182,6 +182,7 @@ enum tpacpi_hkey_event_t {
>>>>                               * directly in the sparse-keymap.
>>>>                               */
>>>>        TP_HKEY_EV_AMT_TOGGLE        = 0x131a, /* Toggle AMT on/off */
>>>> +    TP_HKEY_EV_CAMERASHUTTER_TOGGLE = 0x131b, /* Toggle Camera Shutter */
>>>>        TP_HKEY_EV_DOUBLETAP_TOGGLE    = 0x131c, /* Toggle trackpoint doubletap on/off */
>>>>        TP_HKEY_EV_PROFILE_TOGGLE    = 0x131f, /* Toggle platform profile in 2024 systems */
>>>>        TP_HKEY_EV_PROFILE_TOGGLE2    = 0x1401, /* Toggle platform profile in 2025 + systems */
>>>> @@ -3271,6 +3272,7 @@ static const struct key_entry keymap_lenovo[] __initconst = {
>>>>         * after switching to sparse keymap support. The mappings above use translated
>>>>         * scancodes to preserve uAPI compatibility, see tpacpi_input_send_key().
>>>>         */
>>>> +    { KE_KEY, TP_HKEY_EV_CAMERASHUTTER_TOGGLE, { KEY_CAMERA_ACCESS_TOGGLE } },
>>>>        { KE_KEY, 0x131d, { KEY_VENDOR } }, /* System debug info, similar to old ThinkPad key */
>>>>        { KE_KEY, 0x1320, { KEY_LINK_PHONE } },
>>>>        { KE_KEY, TP_HKEY_EV_TRACK_DOUBLETAP /* 0x8036 */, { KEY_PROG4 } },
>>>
>>
>
Mark Pearson April 4, 2025, 7:23 p.m. UTC | #5
Hi Nitin,

On Fri, Apr 4, 2025, at 5:02 AM, Nitin Joshi wrote:
> Hello Hans,
>
> On 4/4/25 16:25, Hans de Goede wrote:
>> Hi Nitin,
>> 
>> On 4-Apr-25 8:44 AM, Nitin Joshi wrote:
>>> Hello Hans,
>>>
>>> Thank you for reviewing patch.
>>>
>>> On 4/3/25 19:34, Hans de Goede wrote:
>>>> Hi Nitin,
>>>>
>>>> On 3-Apr-25 7:31 AM, Nitin Joshi wrote:
>>>>> New Lenovo Thinkpad models, e.g. the 'X9-14 Gen 1' and 'X9-15 Gen 1'
>>>>> has new shortcut on F9 key i.e to switch camera shutter and it
>>>>> send a new 0x131b hkey event when F9 key is pressed.
>>>>>
>>>>> This commit adds support for new hkey 0x131b.
>>>>> Signed-off-by: Nitin Joshi <nitjoshi@gmail.com>
>>>>
>>>> Does the EC also actually enable/disable the camera in response to
>>>> this new hotkey, or is this purely a request to userspace / the OS
>>>> to enable/disable the camera
>>> Enable/disable is actually being done by EC. Camera enablement for these products are still in testing phase.
>>> ?
>> 
>> Ok, I assume we can also get the state (enabled vs disabled)
>> e.g. from the event? In that case the events should be reported using
>> EV_SW, SW_CAMERA_LENS_COVER and we should also get the initial
>> state and set the switch to the initial state before registering
>> the input device.
> Enable/Disable status will be determine in IPU side which receives 
> notification from EC. So, the only way to determine the status would be 
> to determine the status in IPU side.
> So, purpose of this patch will only to avoid "unhandled hkey event" 
> error from thinkpad_acpi driver.
> Please let me know, if i am missing something.
>

I hadn't thought about this - but we need to be able to track the status to make sure (eventually) that the right status gets displayed in userspace. It would be bad if it was out of sync with the IPU.

Is the initial status always going to be disabled, or do we need a mechanism from Intel to probe the current status?

Mark

>> 
>> Regards,
>> 
>> Hans
>> 
> Thanks & Regards,
> Nitin Joshi
>> 
>> 
>> 
>>>>> ---
>>>>>    drivers/platform/x86/thinkpad_acpi.c | 2 ++
>>>>>    1 file changed, 2 insertions(+)
>>>>>
>>>>> diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
>>>>> index 0384cf311878..80f77f9c7a58 100644
>>>>> --- a/drivers/platform/x86/thinkpad_acpi.c
>>>>> +++ b/drivers/platform/x86/thinkpad_acpi.c
>>>>> @@ -182,6 +182,7 @@ enum tpacpi_hkey_event_t {
>>>>>                               * directly in the sparse-keymap.
>>>>>                               */
>>>>>        TP_HKEY_EV_AMT_TOGGLE        = 0x131a, /* Toggle AMT on/off */
>>>>> +    TP_HKEY_EV_CAMERASHUTTER_TOGGLE = 0x131b, /* Toggle Camera Shutter */
>>>>>        TP_HKEY_EV_DOUBLETAP_TOGGLE    = 0x131c, /* Toggle trackpoint doubletap on/off */
>>>>>        TP_HKEY_EV_PROFILE_TOGGLE    = 0x131f, /* Toggle platform profile in 2024 systems */
>>>>>        TP_HKEY_EV_PROFILE_TOGGLE2    = 0x1401, /* Toggle platform profile in 2025 + systems */
>>>>> @@ -3271,6 +3272,7 @@ static const struct key_entry keymap_lenovo[] __initconst = {
>>>>>         * after switching to sparse keymap support. The mappings above use translated
>>>>>         * scancodes to preserve uAPI compatibility, see tpacpi_input_send_key().
>>>>>         */
>>>>> +    { KE_KEY, TP_HKEY_EV_CAMERASHUTTER_TOGGLE, { KEY_CAMERA_ACCESS_TOGGLE } },
>>>>>        { KE_KEY, 0x131d, { KEY_VENDOR } }, /* System debug info, similar to old ThinkPad key */
>>>>>        { KE_KEY, 0x1320, { KEY_LINK_PHONE } },
>>>>>        { KE_KEY, TP_HKEY_EV_TRACK_DOUBLETAP /* 0x8036 */, { KEY_PROG4 } },
>>>>
>>>
>>
Nitin Joshi April 7, 2025, 3:27 a.m. UTC | #6
Hello Mark,

On 4/5/25 04:23, Mark Pearson wrote:
> Hi Nitin,
> 
> On Fri, Apr 4, 2025, at 5:02 AM, Nitin Joshi wrote:
>> Hello Hans,
>>
>> On 4/4/25 16:25, Hans de Goede wrote:
>>> Hi Nitin,
>>>
>>> On 4-Apr-25 8:44 AM, Nitin Joshi wrote:
>>>> Hello Hans,
>>>>
>>>> Thank you for reviewing patch.
>>>>
>>>> On 4/3/25 19:34, Hans de Goede wrote:
>>>>> Hi Nitin,
>>>>>
>>>>> On 3-Apr-25 7:31 AM, Nitin Joshi wrote:
>>>>>> New Lenovo Thinkpad models, e.g. the 'X9-14 Gen 1' and 'X9-15 Gen 1'
>>>>>> has new shortcut on F9 key i.e to switch camera shutter and it
>>>>>> send a new 0x131b hkey event when F9 key is pressed.
>>>>>>
>>>>>> This commit adds support for new hkey 0x131b.
>>>>>> Signed-off-by: Nitin Joshi <nitjoshi@gmail.com>
>>>>>
>>>>> Does the EC also actually enable/disable the camera in response to
>>>>> this new hotkey, or is this purely a request to userspace / the OS
>>>>> to enable/disable the camera
>>>> Enable/disable is actually being done by EC. Camera enablement for these products are still in testing phase.
>>>> ?
>>>
>>> Ok, I assume we can also get the state (enabled vs disabled)
>>> e.g. from the event? In that case the events should be reported using
>>> EV_SW, SW_CAMERA_LENS_COVER and we should also get the initial
>>> state and set the switch to the initial state before registering
>>> the input device.
>> Enable/Disable status will be determine in IPU side which receives
>> notification from EC. So, the only way to determine the status would be
>> to determine the status in IPU side.
>> So, purpose of this patch will only to avoid "unhandled hkey event"
>> error from thinkpad_acpi driver.
>> Please let me know, if i am missing something.
>>
> 
> I hadn't thought about this - but we need to be able to track the status to make sure (eventually) that the right status gets displayed in userspace. It would be bad if it was out of sync with the IPU.
> 
> Is the initial status always going to be disabled, or do we need a mechanism from Intel to probe the current status?

I need to check regarding this but AFAIK, we don't have any other 
mechanism to probe current status. Also , there was some security 
concern involved in this which i need to clarify.
> 
> Mark
Thanks & Regards,
Nitin Joshi

> 
>>>
>>> Regards,
>>>
>>> Hans
>>>
>> Thanks & Regards,
>> Nitin Joshi
>>>
>>>
>>>
>>>>>> ---
>>>>>>     drivers/platform/x86/thinkpad_acpi.c | 2 ++
>>>>>>     1 file changed, 2 insertions(+)
>>>>>>
>>>>>> diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
>>>>>> index 0384cf311878..80f77f9c7a58 100644
>>>>>> --- a/drivers/platform/x86/thinkpad_acpi.c
>>>>>> +++ b/drivers/platform/x86/thinkpad_acpi.c
>>>>>> @@ -182,6 +182,7 @@ enum tpacpi_hkey_event_t {
>>>>>>                                * directly in the sparse-keymap.
>>>>>>                                */
>>>>>>         TP_HKEY_EV_AMT_TOGGLE        = 0x131a, /* Toggle AMT on/off */
>>>>>> +    TP_HKEY_EV_CAMERASHUTTER_TOGGLE = 0x131b, /* Toggle Camera Shutter */
>>>>>>         TP_HKEY_EV_DOUBLETAP_TOGGLE    = 0x131c, /* Toggle trackpoint doubletap on/off */
>>>>>>         TP_HKEY_EV_PROFILE_TOGGLE    = 0x131f, /* Toggle platform profile in 2024 systems */
>>>>>>         TP_HKEY_EV_PROFILE_TOGGLE2    = 0x1401, /* Toggle platform profile in 2025 + systems */
>>>>>> @@ -3271,6 +3272,7 @@ static const struct key_entry keymap_lenovo[] __initconst = {
>>>>>>          * after switching to sparse keymap support. The mappings above use translated
>>>>>>          * scancodes to preserve uAPI compatibility, see tpacpi_input_send_key().
>>>>>>          */
>>>>>> +    { KE_KEY, TP_HKEY_EV_CAMERASHUTTER_TOGGLE, { KEY_CAMERA_ACCESS_TOGGLE } },
>>>>>>         { KE_KEY, 0x131d, { KEY_VENDOR } }, /* System debug info, similar to old ThinkPad key */
>>>>>>         { KE_KEY, 0x1320, { KEY_LINK_PHONE } },
>>>>>>         { KE_KEY, TP_HKEY_EV_TRACK_DOUBLETAP /* 0x8036 */, { KEY_PROG4 } },
>>>>>
>>>>
>>>
Hans de Goede April 7, 2025, 1:24 p.m. UTC | #7
Hi Nitin,

On 7-Apr-25 05:27, Nitin Joshi wrote:
> Hello Mark,
> 
> On 4/5/25 04:23, Mark Pearson wrote:
>> Hi Nitin,
>>
>> On Fri, Apr 4, 2025, at 5:02 AM, Nitin Joshi wrote:
>>> Hello Hans,
>>>
>>> On 4/4/25 16:25, Hans de Goede wrote:
>>>> Hi Nitin,
>>>>
>>>> On 4-Apr-25 8:44 AM, Nitin Joshi wrote:
>>>>> Hello Hans,
>>>>>
>>>>> Thank you for reviewing patch.
>>>>>
>>>>> On 4/3/25 19:34, Hans de Goede wrote:
>>>>>> Hi Nitin,
>>>>>>
>>>>>> On 3-Apr-25 7:31 AM, Nitin Joshi wrote:
>>>>>>> New Lenovo Thinkpad models, e.g. the 'X9-14 Gen 1' and 'X9-15 Gen 1'
>>>>>>> has new shortcut on F9 key i.e to switch camera shutter and it
>>>>>>> send a new 0x131b hkey event when F9 key is pressed.
>>>>>>>
>>>>>>> This commit adds support for new hkey 0x131b.
>>>>>>> Signed-off-by: Nitin Joshi <nitjoshi@gmail.com>
>>>>>>
>>>>>> Does the EC also actually enable/disable the camera in response to
>>>>>> this new hotkey, or is this purely a request to userspace / the OS
>>>>>> to enable/disable the camera
>>>>> Enable/disable is actually being done by EC. Camera enablement for these products are still in testing phase.
>>>>> ?
>>>>
>>>> Ok, I assume we can also get the state (enabled vs disabled)
>>>> e.g. from the event? In that case the events should be reported using
>>>> EV_SW, SW_CAMERA_LENS_COVER and we should also get the initial
>>>> state and set the switch to the initial state before registering
>>>> the input device.
>>> Enable/Disable status will be determine in IPU side which receives
>>> notification from EC. So, the only way to determine the status would be
>>> to determine the status in IPU side.
>>> So, purpose of this patch will only to avoid "unhandled hkey event"
>>> error from thinkpad_acpi driver.
>>> Please let me know, if i am missing something.

We don't want to just avoid the "unhandled hkey event" message,
we also want to send an event to userspace that the camera has
been enabled or disabled, including information if it is
being enabled or being disabled. This way userspace can show an OSD
indicating that the camera has been enabled/disabled similar to how
we do this when e.g. the mic is muted.

This must be reported to userspace using SW_CAMERA_LENS_COVER, which is
what all kernel code which reports camera shutter state
(be it a true shutter or hw blacking out of the image) is using now.

Or maybe the IPU6 driver itself can report SW_CAMERA_LENS_COVER,
assuming the IPU6 driver also receives an event when the camera
shutter status changes ?

>> I hadn't thought about this - but we need to be able to track the status to make sure (eventually) that the right status gets displayed in userspace. It would be bad if it was out of sync with the IPU.
>>
>> Is the initial status always going to be disabled, or do we need a mechanism from Intel to probe the current status?
> 
> I need to check regarding this but AFAIK, we don't have any other mechanism to probe current status. Also , there was some security concern involved in this which i need to clarify.

I don't see how userspace knowing if the shutter is in open/closed
state impacts security. Userspace still cannot control the shutter.

Regards,

Hans




>>>>>>> ---
>>>>>>>     drivers/platform/x86/thinkpad_acpi.c | 2 ++
>>>>>>>     1 file changed, 2 insertions(+)
>>>>>>>
>>>>>>> diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
>>>>>>> index 0384cf311878..80f77f9c7a58 100644
>>>>>>> --- a/drivers/platform/x86/thinkpad_acpi.c
>>>>>>> +++ b/drivers/platform/x86/thinkpad_acpi.c
>>>>>>> @@ -182,6 +182,7 @@ enum tpacpi_hkey_event_t {
>>>>>>>                                * directly in the sparse-keymap.
>>>>>>>                                */
>>>>>>>         TP_HKEY_EV_AMT_TOGGLE        = 0x131a, /* Toggle AMT on/off */
>>>>>>> +    TP_HKEY_EV_CAMERASHUTTER_TOGGLE = 0x131b, /* Toggle Camera Shutter */
>>>>>>>         TP_HKEY_EV_DOUBLETAP_TOGGLE    = 0x131c, /* Toggle trackpoint doubletap on/off */
>>>>>>>         TP_HKEY_EV_PROFILE_TOGGLE    = 0x131f, /* Toggle platform profile in 2024 systems */
>>>>>>>         TP_HKEY_EV_PROFILE_TOGGLE2    = 0x1401, /* Toggle platform profile in 2025 + systems */
>>>>>>> @@ -3271,6 +3272,7 @@ static const struct key_entry keymap_lenovo[] __initconst = {
>>>>>>>          * after switching to sparse keymap support. The mappings above use translated
>>>>>>>          * scancodes to preserve uAPI compatibility, see tpacpi_input_send_key().
>>>>>>>          */
>>>>>>> +    { KE_KEY, TP_HKEY_EV_CAMERASHUTTER_TOGGLE, { KEY_CAMERA_ACCESS_TOGGLE } },
>>>>>>>         { KE_KEY, 0x131d, { KEY_VENDOR } }, /* System debug info, similar to old ThinkPad key */
>>>>>>>         { KE_KEY, 0x1320, { KEY_LINK_PHONE } },
>>>>>>>         { KE_KEY, TP_HKEY_EV_TRACK_DOUBLETAP /* 0x8036 */, { KEY_PROG4 } },
>>>>>>
>>>>>
>>>>
>
Nitin Joshi April 11, 2025, 9:02 a.m. UTC | #8
Hello Hans,

Thank you for your comments.
I am still confirming details and Sorry, its taking some time .
I will reply below message after confirming.

Thanks & Regards,
Nitin Joshi

On 4/7/25 22:24, Hans de Goede wrote:
> Hi Nitin,
> 
> On 7-Apr-25 05:27, Nitin Joshi wrote:
>> Hello Mark,
>>
>> On 4/5/25 04:23, Mark Pearson wrote:
>>> Hi Nitin,
>>>
>>> On Fri, Apr 4, 2025, at 5:02 AM, Nitin Joshi wrote:
>>>> Hello Hans,
>>>>
>>>> On 4/4/25 16:25, Hans de Goede wrote:
>>>>> Hi Nitin,
>>>>>
>>>>> On 4-Apr-25 8:44 AM, Nitin Joshi wrote:
>>>>>> Hello Hans,
>>>>>>
>>>>>> Thank you for reviewing patch.
>>>>>>
>>>>>> On 4/3/25 19:34, Hans de Goede wrote:
>>>>>>> Hi Nitin,
>>>>>>>
>>>>>>> On 3-Apr-25 7:31 AM, Nitin Joshi wrote:
>>>>>>>> New Lenovo Thinkpad models, e.g. the 'X9-14 Gen 1' and 'X9-15 Gen 1'
>>>>>>>> has new shortcut on F9 key i.e to switch camera shutter and it
>>>>>>>> send a new 0x131b hkey event when F9 key is pressed.
>>>>>>>>
>>>>>>>> This commit adds support for new hkey 0x131b.
>>>>>>>> Signed-off-by: Nitin Joshi <nitjoshi@gmail.com>
>>>>>>>
>>>>>>> Does the EC also actually enable/disable the camera in response to
>>>>>>> this new hotkey, or is this purely a request to userspace / the OS
>>>>>>> to enable/disable the camera
>>>>>> Enable/disable is actually being done by EC. Camera enablement for these products are still in testing phase.
>>>>>> ?
>>>>>
>>>>> Ok, I assume we can also get the state (enabled vs disabled)
>>>>> e.g. from the event? In that case the events should be reported using
>>>>> EV_SW, SW_CAMERA_LENS_COVER and we should also get the initial
>>>>> state and set the switch to the initial state before registering
>>>>> the input device.
>>>> Enable/Disable status will be determine in IPU side which receives
>>>> notification from EC. So, the only way to determine the status would be
>>>> to determine the status in IPU side.
>>>> So, purpose of this patch will only to avoid "unhandled hkey event"
>>>> error from thinkpad_acpi driver.
>>>> Please let me know, if i am missing something.
> 
> We don't want to just avoid the "unhandled hkey event" message,
> we also want to send an event to userspace that the camera has
> been enabled or disabled, including information if it is
> being enabled or being disabled. This way userspace can show an OSD
> indicating that the camera has been enabled/disabled similar to how
> we do this when e.g. the mic is muted.
> 
> This must be reported to userspace using SW_CAMERA_LENS_COVER, which is
> what all kernel code which reports camera shutter state
> (be it a true shutter or hw blacking out of the image) is using now.
> 
> Or maybe the IPU6 driver itself can report SW_CAMERA_LENS_COVER,
> assuming the IPU6 driver also receives an event when the camera
> shutter status changes ?
> 
>>> I hadn't thought about this - but we need to be able to track the status to make sure (eventually) that the right status gets displayed in userspace. It would be bad if it was out of sync with the IPU.
>>>
>>> Is the initial status always going to be disabled, or do we need a mechanism from Intel to probe the current status?
>>
>> I need to check regarding this but AFAIK, we don't have any other mechanism to probe current status. Also , there was some security concern involved in this which i need to clarify.
> 
> I don't see how userspace knowing if the shutter is in open/closed
> state impacts security. Userspace still cannot control the shutter.
> 
> Regards,
> 
> Hans
> 
> 
> 
> 
>>>>>>>> ---
>>>>>>>>      drivers/platform/x86/thinkpad_acpi.c | 2 ++
>>>>>>>>      1 file changed, 2 insertions(+)
>>>>>>>>
>>>>>>>> diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
>>>>>>>> index 0384cf311878..80f77f9c7a58 100644
>>>>>>>> --- a/drivers/platform/x86/thinkpad_acpi.c
>>>>>>>> +++ b/drivers/platform/x86/thinkpad_acpi.c
>>>>>>>> @@ -182,6 +182,7 @@ enum tpacpi_hkey_event_t {
>>>>>>>>                                 * directly in the sparse-keymap.
>>>>>>>>                                 */
>>>>>>>>          TP_HKEY_EV_AMT_TOGGLE        = 0x131a, /* Toggle AMT on/off */
>>>>>>>> +    TP_HKEY_EV_CAMERASHUTTER_TOGGLE = 0x131b, /* Toggle Camera Shutter */
>>>>>>>>          TP_HKEY_EV_DOUBLETAP_TOGGLE    = 0x131c, /* Toggle trackpoint doubletap on/off */
>>>>>>>>          TP_HKEY_EV_PROFILE_TOGGLE    = 0x131f, /* Toggle platform profile in 2024 systems */
>>>>>>>>          TP_HKEY_EV_PROFILE_TOGGLE2    = 0x1401, /* Toggle platform profile in 2025 + systems */
>>>>>>>> @@ -3271,6 +3272,7 @@ static const struct key_entry keymap_lenovo[] __initconst = {
>>>>>>>>           * after switching to sparse keymap support. The mappings above use translated
>>>>>>>>           * scancodes to preserve uAPI compatibility, see tpacpi_input_send_key().
>>>>>>>>           */
>>>>>>>> +    { KE_KEY, TP_HKEY_EV_CAMERASHUTTER_TOGGLE, { KEY_CAMERA_ACCESS_TOGGLE } },
>>>>>>>>          { KE_KEY, 0x131d, { KEY_VENDOR } }, /* System debug info, similar to old ThinkPad key */
>>>>>>>>          { KE_KEY, 0x1320, { KEY_LINK_PHONE } },
>>>>>>>>          { KE_KEY, TP_HKEY_EV_TRACK_DOUBLETAP /* 0x8036 */, { KEY_PROG4 } },
>>>>>>>
>>>>>>
>>>>>
>>
>
diff mbox series

Patch

diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
index 0384cf311878..80f77f9c7a58 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -182,6 +182,7 @@  enum tpacpi_hkey_event_t {
 						   * directly in the sparse-keymap.
 						   */
 	TP_HKEY_EV_AMT_TOGGLE		= 0x131a, /* Toggle AMT on/off */
+	TP_HKEY_EV_CAMERASHUTTER_TOGGLE = 0x131b, /* Toggle Camera Shutter */
 	TP_HKEY_EV_DOUBLETAP_TOGGLE	= 0x131c, /* Toggle trackpoint doubletap on/off */
 	TP_HKEY_EV_PROFILE_TOGGLE	= 0x131f, /* Toggle platform profile in 2024 systems */
 	TP_HKEY_EV_PROFILE_TOGGLE2	= 0x1401, /* Toggle platform profile in 2025 + systems */
@@ -3271,6 +3272,7 @@  static const struct key_entry keymap_lenovo[] __initconst = {
 	 * after switching to sparse keymap support. The mappings above use translated
 	 * scancodes to preserve uAPI compatibility, see tpacpi_input_send_key().
 	 */
+	{ KE_KEY, TP_HKEY_EV_CAMERASHUTTER_TOGGLE, { KEY_CAMERA_ACCESS_TOGGLE } },
 	{ KE_KEY, 0x131d, { KEY_VENDOR } }, /* System debug info, similar to old ThinkPad key */
 	{ KE_KEY, 0x1320, { KEY_LINK_PHONE } },
 	{ KE_KEY, TP_HKEY_EV_TRACK_DOUBLETAP /* 0x8036 */, { KEY_PROG4 } },