Skip to content

Commit e541a9c

Browse files
committed
[FROM-ML] platform/x86: lenovo-wmi-other: Add LWMI_ATTR_ID Macro
Adds LWMI_ATTR_ID macro. In the same vein as LWMI_ATTR_ID_FAN_RPM, but as a generic, to de-duplicate attribute_id assignment biolerplate. Signed-off-by: Derek J. Clark <derekjohn.clark@gmail.com>
1 parent 8940560 commit e541a9c

File tree

3 files changed

+16
-23
lines changed

3 files changed

+16
-23
lines changed

drivers/platform/x86/lenovo/wmi-capdata.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
#define LWMI_ATTR_MODE_ID_MASK GENMASK(15, 8)
1818
#define LWMI_ATTR_TYPE_ID_MASK GENMASK(7, 0)
1919

20+
#define LWMI_ATTR_ID(dev, feat, mode, type) \
21+
(FIELD_PREP(LWMI_ATTR_DEV_ID_MASK, dev) | \
22+
FIELD_PREP(LWMI_ATTR_FEAT_ID_MASK, feat) | \
23+
FIELD_PREP(LWMI_ATTR_MODE_ID_MASK, mode) | \
24+
FIELD_PREP(LWMI_ATTR_TYPE_ID_MASK, type))
25+
2026
#define LWMI_DEVICE_ID_FAN 0x04
2127

2228
struct component_match;

drivers/platform/x86/lenovo/wmi-gamezone.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ enum gamezone_events_type {
1010
};
1111

1212
enum thermal_mode {
13+
LWMI_GZ_THERMAL_MODE_NONE = 0x00,
1314
LWMI_GZ_THERMAL_MODE_QUIET = 0x01,
1415
LWMI_GZ_THERMAL_MODE_BALANCED = 0x02,
1516
LWMI_GZ_THERMAL_MODE_PERFORMANCE = 0x03,

drivers/platform/x86/lenovo/wmi-other.c

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,9 @@
7171
#define LWMI_FAN_NR 4
7272
#define LWMI_FAN_ID(x) ((x) + LWMI_FAN_ID_BASE)
7373

74-
#define LWMI_ATTR_ID_FAN_RPM(x) \
75-
(FIELD_PREP(LWMI_ATTR_DEV_ID_MASK, LWMI_DEVICE_ID_FAN) | \
76-
FIELD_PREP(LWMI_ATTR_FEAT_ID_MASK, LWMI_FEATURE_ID_FAN_RPM) | \
77-
FIELD_PREP(LWMI_ATTR_TYPE_ID_MASK, LWMI_FAN_ID(x)))
74+
#define LWMI_ATTR_ID_FAN_RPM(x) \
75+
LWMI_ATTR_ID(LWMI_DEVICE_ID_FAN, LWMI_FEATURE_ID_FAN_RPM, \
76+
LWMI_GZ_THERMAL_MODE_NONE, LWMI_FAN_ID(x))
7877

7978
#define LWMI_FAN_DIV 100
8079

@@ -716,12 +715,8 @@ static ssize_t attr_capdata01_show(struct kobject *kobj,
716715
u32 attribute_id;
717716
int value, ret;
718717

719-
attribute_id =
720-
FIELD_PREP(LWMI_ATTR_DEV_ID_MASK, tunable_attr->device_id) |
721-
FIELD_PREP(LWMI_ATTR_FEAT_ID_MASK, tunable_attr->feature_id) |
722-
FIELD_PREP(LWMI_ATTR_MODE_ID_MASK,
723-
LWMI_GZ_THERMAL_MODE_CUSTOM) |
724-
FIELD_PREP(LWMI_ATTR_TYPE_ID_MASK, tunable_attr->type_id);
718+
attribute_id = LWMI_ATTR_ID(tunable_attr->device_id, tunable_attr->feature_id,
719+
LWMI_GZ_THERMAL_MODE_CUSTOM, tunable_attr->type_id);
725720

726721
ret = lwmi_cd01_get_data(priv->cd01_list, attribute_id, &capdata);
727722
if (ret)
@@ -787,11 +782,8 @@ static ssize_t attr_current_value_store(struct kobject *kobj,
787782
if (mode != LWMI_GZ_THERMAL_MODE_CUSTOM)
788783
return -EBUSY;
789784

790-
attribute_id =
791-
FIELD_PREP(LWMI_ATTR_DEV_ID_MASK, tunable_attr->device_id) |
792-
FIELD_PREP(LWMI_ATTR_FEAT_ID_MASK, tunable_attr->feature_id) |
793-
FIELD_PREP(LWMI_ATTR_MODE_ID_MASK, mode) |
794-
FIELD_PREP(LWMI_ATTR_TYPE_ID_MASK, tunable_attr->type_id);
785+
attribute_id = LWMI_ATTR_ID(tunable_attr->device_id, tunable_attr->feature_id,
786+
mode, tunable_attr->type_id);
795787

796788
ret = lwmi_cd01_get_data(priv->cd01_list, attribute_id, &capdata);
797789
if (ret)
@@ -838,21 +830,15 @@ static ssize_t attr_current_value_show(struct kobject *kobj,
838830
struct lwmi_om_priv *priv = dev_get_drvdata(tunable_attr->dev);
839831
struct wmi_method_args_32 args;
840832
enum thermal_mode mode;
841-
u32 attribute_id;
842833
int retval;
843834
int ret;
844835

845836
ret = lwmi_om_notifier_call(&mode);
846837
if (ret)
847838
return ret;
848839

849-
attribute_id =
850-
FIELD_PREP(LWMI_ATTR_DEV_ID_MASK, tunable_attr->device_id) |
851-
FIELD_PREP(LWMI_ATTR_FEAT_ID_MASK, tunable_attr->feature_id) |
852-
FIELD_PREP(LWMI_ATTR_MODE_ID_MASK, mode) |
853-
FIELD_PREP(LWMI_ATTR_TYPE_ID_MASK, tunable_attr->type_id);
854-
855-
args.arg0 = attribute_id;
840+
args.arg0 = LWMI_ATTR_ID(tunable_attr->device_id, tunable_attr->feature_id,
841+
mode, tunable_attr->type_id);
856842

857843
ret = lwmi_dev_evaluate_int(priv->wdev, 0x0, LWMI_FEATURE_VALUE_GET,
858844
(unsigned char *)&args, sizeof(args),

0 commit comments

Comments
 (0)