From: Nitin Joshi <nitjoshi@gmail.com>
To: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
Cc: Hans de Goede <hdegoede@redhat.com>,
platform-driver-x86@vger.kernel.org,
ibm-acpi-devel@lists.sourceforge.net, njoshi1@lenovo.com,
Mark Pearson <mpearson-lenovo@squebb.ca>
Subject: Re: [PATCH v2] platform/x86: thinkpad-acpi: Add support for new hotkey for camera shutter switch
Date: Wed, 23 Apr 2025 21:29:11 +0900 [thread overview]
Message-ID: <f201d618-a770-4c3e-8ffa-5c8026c51628@gmail.com> (raw)
In-Reply-To: <669674a9-935b-78a7-0556-ec597ce2b1a5@linux.intel.com>
Hello Ilpo,
Thanks for review.
On 4/23/25 18:42, Ilpo Järvinen wrote:
> On Wed, 23 Apr 2025, 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.
>>
>> Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca>
>> Signed-off-by: Nitin Joshi <nitjoshi@gmail.com>
>> ---
>> Changes in v2:
>>
>> * Added ASL method to get camera shutter status and send it to userspace.
>> ---
>> drivers/platform/x86/thinkpad_acpi.c | 43 +++++++++++++++++++++++++++-
>> 1 file changed, 42 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
>> index 5790095c175e..80b02e8538e8 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 */
>> @@ -2250,6 +2251,25 @@ static void tpacpi_input_send_tabletsw(void)
>> }
>> }
>>
>> +static int get_camera_shutter(void)
>> +{
>> + acpi_handle gces_handle;
>> + int output;
>> +
>> + if (ACPI_FAILURE(acpi_get_handle(hkey_handle, "GCES", &gces_handle))) {
>> + /* Platform doesn't support GCES */
>
> Drop this as it's unnecessary/very obvious.
Ack , I will remove it.
>
>> + return -ENODEV;
>> + }
>> +
>> + if (!acpi_evalf(gces_handle, &output, NULL, "dd", 0))
>> + return -EIO;
>> +
>> + if (output & BIT(31))
>
> Please use a named define instead of using BIT(31) directly as it improves
> code readability a lot.
Ack, I will use named define GCES_METHOD_ERR instead of BIT(31).
>
>> + return -ENODEV;
>> +
>> + return output;
>> +}
>> +
>> static bool tpacpi_input_send_key(const u32 hkey, bool *send_acpi_ev)
>> {
>> bool known_ev;
>> @@ -3272,6 +3292,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 } },
>> @@ -3303,7 +3324,7 @@ static int __init hotkey_init(struct ibm_init_struct *iibm)
>> const struct key_entry *keymap;
>> bool radiosw_state = false;
>> bool tabletsw_state = false;
>> - int hkeyv, res, status;
>> + int hkeyv, res, status, camera_shutter_state;
>>
>> vdbg_printk(TPACPI_DBG_INIT | TPACPI_DBG_HKEY,
>> "initializing hotkey subdriver\n");
>> @@ -3467,6 +3488,13 @@ static int __init hotkey_init(struct ibm_init_struct *iibm)
>> if (res)
>> return res;
>>
>> + camera_shutter_state = get_camera_shutter();
>> + if (camera_shutter_state >= 0) {
>> + input_set_capability(tpacpi_inputdev, EV_SW, SW_CAMERA_LENS_COVER);
>> + input_report_switch(tpacpi_inputdev,
>> + SW_CAMERA_LENS_COVER, camera_shutter_state);
>
> The second parameter fits on the previous line.
Ack , I will modify it .
Thanks & Regards,
Nitin Joshi
>
>> + }
>> +
>> if (tp_features.hotkey_wlsw) {
>> input_set_capability(tpacpi_inputdev, EV_SW, SW_RFKILL_ALL);
>> input_report_switch(tpacpi_inputdev,
>> @@ -3633,6 +3661,8 @@ static void adaptive_keyboard_s_quickview_row(void)
>> /* 0x1000-0x1FFF: key presses */
>> static bool hotkey_notify_hotkey(const u32 hkey, bool *send_acpi_ev)
>> {
>> + int camera_shutter_state;
>> +
>> /* Never send ACPI netlink events for original hotkeys (hkey: 0x1001 - 0x1020) */
>> if (hkey >= TP_HKEY_EV_ORIG_KEY_START && hkey <= TP_HKEY_EV_ORIG_KEY_END) {
>> *send_acpi_ev = false;
>> @@ -3643,6 +3673,17 @@ static bool hotkey_notify_hotkey(const u32 hkey, bool *send_acpi_ev)
>> return true;
>> }
>>
>> + camera_shutter_state = get_camera_shutter();
>> + if (hkey == TP_HKEY_EV_CAMERASHUTTER_TOGGLE && (camera_shutter_state >= 0)) {
>> + mutex_lock(&tpacpi_inputdev_send_mutex);
>> +
>> + input_report_switch(tpacpi_inputdev,
>> + SW_CAMERA_LENS_COVER, camera_shutter_state);
>> + input_sync(tpacpi_inputdev);
>> +
>> + mutex_unlock(&tpacpi_inputdev_send_mutex);
>> + }
>> +
>> return tpacpi_input_send_key(hkey, send_acpi_ev);
>> }
>>
>>
>
next prev parent reply other threads:[~2025-04-23 12:31 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-23 5:51 [PATCH v2] platform/x86: thinkpad-acpi: Add support for new hotkey for camera shutter switch Nitin Joshi
2025-04-23 9:42 ` Ilpo Järvinen
2025-04-23 12:29 ` Nitin Joshi [this message]
2025-04-23 12:57 ` Hans de Goede
2025-04-23 13:19 ` Nitin Joshi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f201d618-a770-4c3e-8ffa-5c8026c51628@gmail.com \
--to=nitjoshi@gmail.com \
--cc=hdegoede@redhat.com \
--cc=ibm-acpi-devel@lists.sourceforge.net \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=mpearson-lenovo@squebb.ca \
--cc=njoshi1@lenovo.com \
--cc=platform-driver-x86@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.