From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Nitin Joshi <nitjoshi@gmail.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 v5] platform/x86: thinkpad-acpi: Add support for new hotkey for camera shutter switch
Date: Mon, 5 May 2025 16:56:29 +0300 (EEST) [thread overview]
Message-ID: <b9b2edc1-f830-2811-b0f5-8bd0667e9175@linux.intel.com> (raw)
In-Reply-To: <20250501123607.14171-1-nitjoshi@gmail.com>
On Thu, 1 May 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 v5:
> * Incorporated review comments for consistency.
> Changes in v4:
> * Renamed macro from METHOD_ERR to GCES_NO_SHUTTER_DEVICE.
> Changes in v3:
> * Avoid wasteful get_camera_shutter() calls and Minor changes based on review comments to make
> code more readable.
> Changes in v2:
> * Added ASL method to get camera shutter status and send it to userspace.
Hi,
Sparse is not happy with this change:
$ make C=2 drivers/platform/x86/thinkpad_acpi.o
...
CC drivers/platform/x86/thinkpad_acpi.o
CHECK drivers/platform/x86/thinkpad_acpi.c
drivers/platform/x86/thinkpad_acpi.c:11267:17: error: typename in expression
drivers/platform/x86/thinkpad_acpi.c:11267:21: error: Expected ; at end of statement
drivers/platform/x86/thinkpad_acpi.c:11267:21: error: got camera_shutter_state
drivers/platform/x86/thinkpad_acpi.c:11267:17: error: undefined identifier 'int'
drivers/platform/x86/thinkpad_acpi.c:11269:17: error: undefined identifier 'camera_shutter_state'
drivers/platform/x86/thinkpad_acpi.c:11270:21: error: undefined identifier 'camera_shutter_state'
drivers/platform/x86/thinkpad_acpi.c:11276:76: error: undefined identifier 'camera_shutter_state'
Please fix and send v6.
> ---
> 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..3c75161667cf 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)
> }
> }
>
> +#define GCES_NO_SHUTTER_DEVICE BIT(31)
> +
> +static int get_camera_shutter(void)
> +{
> + acpi_handle gces_handle;
> + int output;
> +
> + if (ACPI_FAILURE(acpi_get_handle(hkey_handle, "GCES", &gces_handle)))
> + return -ENODEV;
> +
> + if (!acpi_evalf(gces_handle, &output, NULL, "dd", 0))
> + return -EIO;
> +
> + if (output & GCES_NO_SHUTTER_DEVICE)
> + return -ENODEV;
> +
> + return output;
> +}
> +
> static bool tpacpi_input_send_key(const u32 hkey, bool *send_acpi_ev)
> {
> bool known_ev;
> @@ -3303,7 +3323,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 +3487,12 @@ 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);
> + }
> +
> if (tp_features.hotkey_wlsw) {
> input_set_capability(tpacpi_inputdev, EV_SW, SW_RFKILL_ALL);
> input_report_switch(tpacpi_inputdev,
> @@ -11236,6 +11262,21 @@ static bool tpacpi_driver_event(const unsigned int hkey_event)
> else
> dytc_control_amt(!dytc_amt_active);
>
> + return true;
> + case TP_HKEY_EV_CAMERASHUTTER_TOGGLE:
> + int camera_shutter_state;
> +
> + camera_shutter_state = get_camera_shutter();
> + if (camera_shutter_state < 0) {
> + pr_err("Error retrieving camera shutter state after shutter event\n");
> + return true;
> + }
> + 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 true;
> case TP_HKEY_EV_DOUBLETAP_TOGGLE:
> tp_features.trackpoint_doubletap = !tp_features.trackpoint_doubletap;
>
--
i.
next prev parent reply other threads:[~2025-05-05 13:56 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-01 12:36 [PATCH v5] platform/x86: thinkpad-acpi: Add support for new hotkey for camera shutter switch Nitin Joshi
2025-05-01 12:37 ` Hans de Goede
2025-05-05 13:56 ` Ilpo Järvinen [this message]
2025-05-05 14:55 ` Nitin Joshi
2025-05-07 10:36 ` Ilpo Järvinen
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=b9b2edc1-f830-2811-b0f5-8bd0667e9175@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=hdegoede@redhat.com \
--cc=ibm-acpi-devel@lists.sourceforge.net \
--cc=mpearson-lenovo@squebb.ca \
--cc=nitjoshi@gmail.com \
--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.