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 v6] platform/x86: thinkpad-acpi: Add support for new hotkey for camera shutter switch
Date: Wed, 7 May 2025 13:22:29 +0300 (EEST) [thread overview]
Message-ID: <b2c85fc4-e288-c875-68a0-74b287609dd6@linux.intel.com> (raw)
In-Reply-To: <20250505150152.27968-1-nitjoshi@gmail.com>
On Tue, 6 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>
Hi,
I've now applied this into the review-ilpo-next branch. You forgot to
include Hans' reviewed-by tag which he gave for v5. I've added that there
for you while applying but please try to remember to include given tags
yourself when submitting a new version (as long as there are no major
changes that would warrant dropping reviewed-bys). My memory is finite
and I'll not always remember those myself after looking a large number of
patches and comments on every week :-).
--
i.
> ---
> Changes in v6:
> * Fix sparse error.
> 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.
> ---
> 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..080063395082 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,
> @@ -11161,6 +11187,8 @@ static struct platform_driver tpacpi_hwmon_pdriver = {
> */
> static bool tpacpi_driver_event(const unsigned int hkey_event)
> {
> + int camera_shutter_state;
> +
> switch (hkey_event) {
> case TP_HKEY_EV_BRGHT_UP:
> case TP_HKEY_EV_BRGHT_DOWN:
> @@ -11236,6 +11264,19 @@ 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:
> + 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;
>
next prev parent reply other threads:[~2025-05-07 10:22 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-05 15:01 [PATCH v6] platform/x86: thinkpad-acpi: Add support for new hotkey for camera shutter switch Nitin Joshi
2025-05-07 10:22 ` Ilpo Järvinen [this message]
2025-05-07 12:27 ` 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=b2c85fc4-e288-c875-68a0-74b287609dd6@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.