Since moving ymc_trigger_ec from lenovo-ymc to ideapad-laptop, only the
latter uses these definitions and functions.
Move them back to source file.
Signed-off-by: Gergo Koteles <soyer@irl.hu>
---
drivers/platform/x86/ideapad-laptop.c | 136 +++++++++++++++++++++++++
drivers/platform/x86/ideapad-laptop.h | 139 --------------------------
2 files changed, 136 insertions(+), 139 deletions(-)
diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c
index 1d61bd921528..66b34e99147e 100644
--- a/drivers/platform/x86/ideapad-laptop.c
+++ b/drivers/platform/x86/ideapad-laptop.c
@@ -21,6 +21,7 @@
#include <linux/init.h>
#include <linux/input.h>
#include <linux/input/sparse-keymap.h>
+#include <linux/jiffies.h>
#include <linux/kernel.h>
#include <linux/leds.h>
#include <linux/module.h>
@@ -86,6 +87,34 @@ enum {
SALS_FNLOCK_OFF = 0xf,
};
+enum {
+ VPCCMD_R_VPC1 = 0x10,
+ VPCCMD_R_BL_MAX,
+ VPCCMD_R_BL,
+ VPCCMD_W_BL,
+ VPCCMD_R_WIFI,
+ VPCCMD_W_WIFI,
+ VPCCMD_R_BT,
+ VPCCMD_W_BT,
+ VPCCMD_R_BL_POWER,
+ VPCCMD_R_NOVO,
+ VPCCMD_R_VPC2,
+ VPCCMD_R_TOUCHPAD,
+ VPCCMD_W_TOUCHPAD,
+ VPCCMD_R_CAMERA,
+ VPCCMD_W_CAMERA,
+ VPCCMD_R_3G,
+ VPCCMD_W_3G,
+ VPCCMD_R_ODD, /* 0x21 */
+ VPCCMD_W_FAN,
+ VPCCMD_R_RF,
+ VPCCMD_W_RF,
+ VPCCMD_W_YMC = 0x2A,
+ VPCCMD_R_FAN = 0x2B,
+ VPCCMD_R_SPECIAL_BUTTONS = 0x31,
+ VPCCMD_W_BL_POWER = 0x33,
+};
+
/*
* These correspond to the number of supported states - 1
* Future keyboard types may need a new system, if there's a collision
@@ -234,6 +263,7 @@ static void ideapad_shared_exit(struct ideapad_private *priv)
/*
* ACPI Helpers
*/
+#define IDEAPAD_EC_TIMEOUT 200 /* in ms */
static int eval_int(acpi_handle handle, const char *name, unsigned long *res)
{
@@ -249,6 +279,29 @@ static int eval_int(acpi_handle handle, const char *name, unsigned long *res)
return 0;
}
+static int eval_int_with_arg(acpi_handle handle, const char *name, unsigned long arg,
+ unsigned long *res)
+{
+ struct acpi_object_list params;
+ unsigned long long result;
+ union acpi_object in_obj;
+ acpi_status status;
+
+ params.count = 1;
+ params.pointer = &in_obj;
+ in_obj.type = ACPI_TYPE_INTEGER;
+ in_obj.integer.value = arg;
+
+ status = acpi_evaluate_integer(handle, (char *)name, ¶ms, &result);
+ if (ACPI_FAILURE(status))
+ return -EIO;
+
+ if (res)
+ *res = result;
+
+ return 0;
+}
+
static int exec_simple_method(acpi_handle handle, const char *name, unsigned long arg)
{
acpi_status status = acpi_execute_simple_method(handle, (char *)name, arg);
@@ -291,6 +344,89 @@ static int eval_dytc(acpi_handle handle, unsigned long cmd, unsigned long *res)
return eval_int_with_arg(handle, "DYTC", cmd, res);
}
+static int eval_vpcr(acpi_handle handle, unsigned long cmd, unsigned long *res)
+{
+ return eval_int_with_arg(handle, "VPCR", cmd, res);
+}
+
+static int eval_vpcw(acpi_handle handle, unsigned long cmd, unsigned long data)
+{
+ struct acpi_object_list params;
+ union acpi_object in_obj[2];
+ acpi_status status;
+
+ params.count = 2;
+ params.pointer = in_obj;
+ in_obj[0].type = ACPI_TYPE_INTEGER;
+ in_obj[0].integer.value = cmd;
+ in_obj[1].type = ACPI_TYPE_INTEGER;
+ in_obj[1].integer.value = data;
+
+ status = acpi_evaluate_object(handle, "VPCW", ¶ms, NULL);
+ if (ACPI_FAILURE(status))
+ return -EIO;
+
+ return 0;
+}
+
+static int read_ec_data(acpi_handle handle, unsigned long cmd, unsigned long *data)
+{
+ unsigned long end_jiffies, val;
+ int err;
+
+ err = eval_vpcw(handle, 1, cmd);
+ if (err)
+ return err;
+
+ end_jiffies = jiffies + msecs_to_jiffies(IDEAPAD_EC_TIMEOUT) + 1;
+
+ while (time_before(jiffies, end_jiffies)) {
+ schedule();
+
+ err = eval_vpcr(handle, 1, &val);
+ if (err)
+ return err;
+
+ if (val == 0)
+ return eval_vpcr(handle, 0, data);
+ }
+
+ acpi_handle_err(handle, "timeout in %s\n", __func__);
+
+ return -ETIMEDOUT;
+}
+
+static int write_ec_cmd(acpi_handle handle, unsigned long cmd, unsigned long data)
+{
+ unsigned long end_jiffies, val;
+ int err;
+
+ err = eval_vpcw(handle, 0, data);
+ if (err)
+ return err;
+
+ err = eval_vpcw(handle, 1, cmd);
+ if (err)
+ return err;
+
+ end_jiffies = jiffies + msecs_to_jiffies(IDEAPAD_EC_TIMEOUT) + 1;
+
+ while (time_before(jiffies, end_jiffies)) {
+ schedule();
+
+ err = eval_vpcr(handle, 1, &val);
+ if (err)
+ return err;
+
+ if (val == 0)
+ return 0;
+ }
+
+ acpi_handle_err(handle, "timeout in %s\n", __func__);
+
+ return -ETIMEDOUT;
+}
+
/*
* debugfs
*/
diff --git a/drivers/platform/x86/ideapad-laptop.h b/drivers/platform/x86/ideapad-laptop.h
index 948cc61800a9..1e52f2aa0aac 100644
--- a/drivers/platform/x86/ideapad-laptop.h
+++ b/drivers/platform/x86/ideapad-laptop.h
@@ -9,9 +9,6 @@
#ifndef _IDEAPAD_LAPTOP_H_
#define _IDEAPAD_LAPTOP_H_
-#include <linux/acpi.h>
-#include <linux/jiffies.h>
-#include <linux/errno.h>
#include <linux/notifier.h>
enum ideapad_laptop_notifier_actions {
@@ -22,140 +19,4 @@ int ideapad_laptop_register_notifier(struct notifier_block *nb);
int ideapad_laptop_unregister_notifier(struct notifier_block *nb);
void ideapad_laptop_call_notifier(unsigned long action, void *data);
-enum {
- VPCCMD_R_VPC1 = 0x10,
- VPCCMD_R_BL_MAX,
- VPCCMD_R_BL,
- VPCCMD_W_BL,
- VPCCMD_R_WIFI,
- VPCCMD_W_WIFI,
- VPCCMD_R_BT,
- VPCCMD_W_BT,
- VPCCMD_R_BL_POWER,
- VPCCMD_R_NOVO,
- VPCCMD_R_VPC2,
- VPCCMD_R_TOUCHPAD,
- VPCCMD_W_TOUCHPAD,
- VPCCMD_R_CAMERA,
- VPCCMD_W_CAMERA,
- VPCCMD_R_3G,
- VPCCMD_W_3G,
- VPCCMD_R_ODD, /* 0x21 */
- VPCCMD_W_FAN,
- VPCCMD_R_RF,
- VPCCMD_W_RF,
- VPCCMD_W_YMC = 0x2A,
- VPCCMD_R_FAN = 0x2B,
- VPCCMD_R_SPECIAL_BUTTONS = 0x31,
- VPCCMD_W_BL_POWER = 0x33,
-};
-
-static inline int eval_int_with_arg(acpi_handle handle, const char *name, unsigned long arg, unsigned long *res)
-{
- struct acpi_object_list params;
- unsigned long long result;
- union acpi_object in_obj;
- acpi_status status;
-
- params.count = 1;
- params.pointer = &in_obj;
- in_obj.type = ACPI_TYPE_INTEGER;
- in_obj.integer.value = arg;
-
- status = acpi_evaluate_integer(handle, (char *)name, ¶ms, &result);
- if (ACPI_FAILURE(status))
- return -EIO;
-
- if (res)
- *res = result;
-
- return 0;
-}
-
-static inline int eval_vpcr(acpi_handle handle, unsigned long cmd, unsigned long *res)
-{
- return eval_int_with_arg(handle, "VPCR", cmd, res);
-}
-
-static inline int eval_vpcw(acpi_handle handle, unsigned long cmd, unsigned long data)
-{
- struct acpi_object_list params;
- union acpi_object in_obj[2];
- acpi_status status;
-
- params.count = 2;
- params.pointer = in_obj;
- in_obj[0].type = ACPI_TYPE_INTEGER;
- in_obj[0].integer.value = cmd;
- in_obj[1].type = ACPI_TYPE_INTEGER;
- in_obj[1].integer.value = data;
-
- status = acpi_evaluate_object(handle, "VPCW", ¶ms, NULL);
- if (ACPI_FAILURE(status))
- return -EIO;
-
- return 0;
-}
-
-#define IDEAPAD_EC_TIMEOUT 200 /* in ms */
-
-static inline int read_ec_data(acpi_handle handle, unsigned long cmd, unsigned long *data)
-{
- unsigned long end_jiffies, val;
- int err;
-
- err = eval_vpcw(handle, 1, cmd);
- if (err)
- return err;
-
- end_jiffies = jiffies + msecs_to_jiffies(IDEAPAD_EC_TIMEOUT) + 1;
-
- while (time_before(jiffies, end_jiffies)) {
- schedule();
-
- err = eval_vpcr(handle, 1, &val);
- if (err)
- return err;
-
- if (val == 0)
- return eval_vpcr(handle, 0, data);
- }
-
- acpi_handle_err(handle, "timeout in %s\n", __func__);
-
- return -ETIMEDOUT;
-}
-
-static inline int write_ec_cmd(acpi_handle handle, unsigned long cmd, unsigned long data)
-{
- unsigned long end_jiffies, val;
- int err;
-
- err = eval_vpcw(handle, 0, data);
- if (err)
- return err;
-
- err = eval_vpcw(handle, 1, cmd);
- if (err)
- return err;
-
- end_jiffies = jiffies + msecs_to_jiffies(IDEAPAD_EC_TIMEOUT) + 1;
-
- while (time_before(jiffies, end_jiffies)) {
- schedule();
-
- err = eval_vpcr(handle, 1, &val);
- if (err)
- return err;
-
- if (val == 0)
- return 0;
- }
-
- acpi_handle_err(handle, "timeout in %s\n", __func__);
-
- return -ETIMEDOUT;
-}
-
-#undef IDEAPAD_EC_TIMEOUT
#endif /* !_IDEAPAD_LAPTOP_H_ */
--
2.45.2
On Thu, 18 Jul 2024, Gergo Koteles wrote:
> Since moving ymc_trigger_ec from lenovo-ymc to ideapad-laptop, only the
> latter uses these definitions and functions.
>
> Move them back to source file.
>
> Signed-off-by: Gergo Koteles <soyer@irl.hu>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
--
i.
> ---
> drivers/platform/x86/ideapad-laptop.c | 136 +++++++++++++++++++++++++
> drivers/platform/x86/ideapad-laptop.h | 139 --------------------------
> 2 files changed, 136 insertions(+), 139 deletions(-)
>
> diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c
> index 1d61bd921528..66b34e99147e 100644
> --- a/drivers/platform/x86/ideapad-laptop.c
> +++ b/drivers/platform/x86/ideapad-laptop.c
> @@ -21,6 +21,7 @@
> #include <linux/init.h>
> #include <linux/input.h>
> #include <linux/input/sparse-keymap.h>
> +#include <linux/jiffies.h>
> #include <linux/kernel.h>
> #include <linux/leds.h>
> #include <linux/module.h>
> @@ -86,6 +87,34 @@ enum {
> SALS_FNLOCK_OFF = 0xf,
> };
>
> +enum {
> + VPCCMD_R_VPC1 = 0x10,
> + VPCCMD_R_BL_MAX,
> + VPCCMD_R_BL,
> + VPCCMD_W_BL,
> + VPCCMD_R_WIFI,
> + VPCCMD_W_WIFI,
> + VPCCMD_R_BT,
> + VPCCMD_W_BT,
> + VPCCMD_R_BL_POWER,
> + VPCCMD_R_NOVO,
> + VPCCMD_R_VPC2,
> + VPCCMD_R_TOUCHPAD,
> + VPCCMD_W_TOUCHPAD,
> + VPCCMD_R_CAMERA,
> + VPCCMD_W_CAMERA,
> + VPCCMD_R_3G,
> + VPCCMD_W_3G,
> + VPCCMD_R_ODD, /* 0x21 */
> + VPCCMD_W_FAN,
> + VPCCMD_R_RF,
> + VPCCMD_W_RF,
> + VPCCMD_W_YMC = 0x2A,
> + VPCCMD_R_FAN = 0x2B,
> + VPCCMD_R_SPECIAL_BUTTONS = 0x31,
> + VPCCMD_W_BL_POWER = 0x33,
> +};
> +
> /*
> * These correspond to the number of supported states - 1
> * Future keyboard types may need a new system, if there's a collision
> @@ -234,6 +263,7 @@ static void ideapad_shared_exit(struct ideapad_private *priv)
> /*
> * ACPI Helpers
> */
> +#define IDEAPAD_EC_TIMEOUT 200 /* in ms */
>
> static int eval_int(acpi_handle handle, const char *name, unsigned long *res)
> {
> @@ -249,6 +279,29 @@ static int eval_int(acpi_handle handle, const char *name, unsigned long *res)
> return 0;
> }
>
> +static int eval_int_with_arg(acpi_handle handle, const char *name, unsigned long arg,
> + unsigned long *res)
> +{
> + struct acpi_object_list params;
> + unsigned long long result;
> + union acpi_object in_obj;
> + acpi_status status;
> +
> + params.count = 1;
> + params.pointer = &in_obj;
> + in_obj.type = ACPI_TYPE_INTEGER;
> + in_obj.integer.value = arg;
> +
> + status = acpi_evaluate_integer(handle, (char *)name, ¶ms, &result);
> + if (ACPI_FAILURE(status))
> + return -EIO;
> +
> + if (res)
> + *res = result;
> +
> + return 0;
> +}
> +
> static int exec_simple_method(acpi_handle handle, const char *name, unsigned long arg)
> {
> acpi_status status = acpi_execute_simple_method(handle, (char *)name, arg);
> @@ -291,6 +344,89 @@ static int eval_dytc(acpi_handle handle, unsigned long cmd, unsigned long *res)
> return eval_int_with_arg(handle, "DYTC", cmd, res);
> }
>
> +static int eval_vpcr(acpi_handle handle, unsigned long cmd, unsigned long *res)
> +{
> + return eval_int_with_arg(handle, "VPCR", cmd, res);
> +}
> +
> +static int eval_vpcw(acpi_handle handle, unsigned long cmd, unsigned long data)
> +{
> + struct acpi_object_list params;
> + union acpi_object in_obj[2];
> + acpi_status status;
> +
> + params.count = 2;
> + params.pointer = in_obj;
> + in_obj[0].type = ACPI_TYPE_INTEGER;
> + in_obj[0].integer.value = cmd;
> + in_obj[1].type = ACPI_TYPE_INTEGER;
> + in_obj[1].integer.value = data;
> +
> + status = acpi_evaluate_object(handle, "VPCW", ¶ms, NULL);
> + if (ACPI_FAILURE(status))
> + return -EIO;
> +
> + return 0;
> +}
> +
> +static int read_ec_data(acpi_handle handle, unsigned long cmd, unsigned long *data)
> +{
> + unsigned long end_jiffies, val;
> + int err;
> +
> + err = eval_vpcw(handle, 1, cmd);
> + if (err)
> + return err;
> +
> + end_jiffies = jiffies + msecs_to_jiffies(IDEAPAD_EC_TIMEOUT) + 1;
> +
> + while (time_before(jiffies, end_jiffies)) {
> + schedule();
> +
> + err = eval_vpcr(handle, 1, &val);
> + if (err)
> + return err;
> +
> + if (val == 0)
> + return eval_vpcr(handle, 0, data);
> + }
> +
> + acpi_handle_err(handle, "timeout in %s\n", __func__);
> +
> + return -ETIMEDOUT;
> +}
> +
> +static int write_ec_cmd(acpi_handle handle, unsigned long cmd, unsigned long data)
> +{
> + unsigned long end_jiffies, val;
> + int err;
> +
> + err = eval_vpcw(handle, 0, data);
> + if (err)
> + return err;
> +
> + err = eval_vpcw(handle, 1, cmd);
> + if (err)
> + return err;
> +
> + end_jiffies = jiffies + msecs_to_jiffies(IDEAPAD_EC_TIMEOUT) + 1;
> +
> + while (time_before(jiffies, end_jiffies)) {
> + schedule();
> +
> + err = eval_vpcr(handle, 1, &val);
> + if (err)
> + return err;
> +
> + if (val == 0)
> + return 0;
> + }
> +
> + acpi_handle_err(handle, "timeout in %s\n", __func__);
> +
> + return -ETIMEDOUT;
> +}
> +
> /*
> * debugfs
> */
> diff --git a/drivers/platform/x86/ideapad-laptop.h b/drivers/platform/x86/ideapad-laptop.h
> index 948cc61800a9..1e52f2aa0aac 100644
> --- a/drivers/platform/x86/ideapad-laptop.h
> +++ b/drivers/platform/x86/ideapad-laptop.h
> @@ -9,9 +9,6 @@
> #ifndef _IDEAPAD_LAPTOP_H_
> #define _IDEAPAD_LAPTOP_H_
>
> -#include <linux/acpi.h>
> -#include <linux/jiffies.h>
> -#include <linux/errno.h>
> #include <linux/notifier.h>
>
> enum ideapad_laptop_notifier_actions {
> @@ -22,140 +19,4 @@ int ideapad_laptop_register_notifier(struct notifier_block *nb);
> int ideapad_laptop_unregister_notifier(struct notifier_block *nb);
> void ideapad_laptop_call_notifier(unsigned long action, void *data);
>
> -enum {
> - VPCCMD_R_VPC1 = 0x10,
> - VPCCMD_R_BL_MAX,
> - VPCCMD_R_BL,
> - VPCCMD_W_BL,
> - VPCCMD_R_WIFI,
> - VPCCMD_W_WIFI,
> - VPCCMD_R_BT,
> - VPCCMD_W_BT,
> - VPCCMD_R_BL_POWER,
> - VPCCMD_R_NOVO,
> - VPCCMD_R_VPC2,
> - VPCCMD_R_TOUCHPAD,
> - VPCCMD_W_TOUCHPAD,
> - VPCCMD_R_CAMERA,
> - VPCCMD_W_CAMERA,
> - VPCCMD_R_3G,
> - VPCCMD_W_3G,
> - VPCCMD_R_ODD, /* 0x21 */
> - VPCCMD_W_FAN,
> - VPCCMD_R_RF,
> - VPCCMD_W_RF,
> - VPCCMD_W_YMC = 0x2A,
> - VPCCMD_R_FAN = 0x2B,
> - VPCCMD_R_SPECIAL_BUTTONS = 0x31,
> - VPCCMD_W_BL_POWER = 0x33,
> -};
> -
> -static inline int eval_int_with_arg(acpi_handle handle, const char *name, unsigned long arg, unsigned long *res)
> -{
> - struct acpi_object_list params;
> - unsigned long long result;
> - union acpi_object in_obj;
> - acpi_status status;
> -
> - params.count = 1;
> - params.pointer = &in_obj;
> - in_obj.type = ACPI_TYPE_INTEGER;
> - in_obj.integer.value = arg;
> -
> - status = acpi_evaluate_integer(handle, (char *)name, ¶ms, &result);
> - if (ACPI_FAILURE(status))
> - return -EIO;
> -
> - if (res)
> - *res = result;
> -
> - return 0;
> -}
> -
> -static inline int eval_vpcr(acpi_handle handle, unsigned long cmd, unsigned long *res)
> -{
> - return eval_int_with_arg(handle, "VPCR", cmd, res);
> -}
> -
> -static inline int eval_vpcw(acpi_handle handle, unsigned long cmd, unsigned long data)
> -{
> - struct acpi_object_list params;
> - union acpi_object in_obj[2];
> - acpi_status status;
> -
> - params.count = 2;
> - params.pointer = in_obj;
> - in_obj[0].type = ACPI_TYPE_INTEGER;
> - in_obj[0].integer.value = cmd;
> - in_obj[1].type = ACPI_TYPE_INTEGER;
> - in_obj[1].integer.value = data;
> -
> - status = acpi_evaluate_object(handle, "VPCW", ¶ms, NULL);
> - if (ACPI_FAILURE(status))
> - return -EIO;
> -
> - return 0;
> -}
> -
> -#define IDEAPAD_EC_TIMEOUT 200 /* in ms */
> -
> -static inline int read_ec_data(acpi_handle handle, unsigned long cmd, unsigned long *data)
> -{
> - unsigned long end_jiffies, val;
> - int err;
> -
> - err = eval_vpcw(handle, 1, cmd);
> - if (err)
> - return err;
> -
> - end_jiffies = jiffies + msecs_to_jiffies(IDEAPAD_EC_TIMEOUT) + 1;
> -
> - while (time_before(jiffies, end_jiffies)) {
> - schedule();
> -
> - err = eval_vpcr(handle, 1, &val);
> - if (err)
> - return err;
> -
> - if (val == 0)
> - return eval_vpcr(handle, 0, data);
> - }
> -
> - acpi_handle_err(handle, "timeout in %s\n", __func__);
> -
> - return -ETIMEDOUT;
> -}
> -
> -static inline int write_ec_cmd(acpi_handle handle, unsigned long cmd, unsigned long data)
> -{
> - unsigned long end_jiffies, val;
> - int err;
> -
> - err = eval_vpcw(handle, 0, data);
> - if (err)
> - return err;
> -
> - err = eval_vpcw(handle, 1, cmd);
> - if (err)
> - return err;
> -
> - end_jiffies = jiffies + msecs_to_jiffies(IDEAPAD_EC_TIMEOUT) + 1;
> -
> - while (time_before(jiffies, end_jiffies)) {
> - schedule();
> -
> - err = eval_vpcr(handle, 1, &val);
> - if (err)
> - return err;
> -
> - if (val == 0)
> - return 0;
> - }
> -
> - acpi_handle_err(handle, "timeout in %s\n", __func__);
> -
> - return -ETIMEDOUT;
> -}
> -
> -#undef IDEAPAD_EC_TIMEOUT
> #endif /* !_IDEAPAD_LAPTOP_H_ */
>
© 2016 - 2025 Red Hat, Inc.