Skip to content

Commit 249c576

Browse files
kuu-rtij-intel
authored andcommitted
ACPI: platform_profile: Let drivers set drvdata to the class device
Add *drvdata to platform_profile_register() signature and assign it to the class device. While at it, pass specific driver state as drvdata to replace uses of container_of() with dev_get_drvdata(). Reviewed-by: Mario Limonciello <[email protected]> Signed-off-by: Kurt Borja <[email protected]> Reviewed-by: Mark Pearson <[email protected]> Tested-by: Mark Pearson <[email protected]> Link: https://lore.kernel.org/r/[email protected] Reviewed-by: Ilpo Järvinen <[email protected]> Signed-off-by: Ilpo Järvinen <[email protected]>
1 parent d960f14 commit 249c576

File tree

12 files changed

+26
-27
lines changed

12 files changed

+26
-27
lines changed

drivers/acpi/platform_profile.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ int platform_profile_cycle(void)
460460
}
461461
EXPORT_SYMBOL_GPL(platform_profile_cycle);
462462

463-
int platform_profile_register(struct platform_profile_handler *pprof)
463+
int platform_profile_register(struct platform_profile_handler *pprof, void *drvdata)
464464
{
465465
int err;
466466

@@ -480,6 +480,7 @@ int platform_profile_register(struct platform_profile_handler *pprof)
480480

481481
pprof->class_dev.class = &platform_profile_class;
482482
pprof->class_dev.parent = pprof->dev;
483+
dev_set_drvdata(&pprof->class_dev, drvdata);
483484
dev_set_name(&pprof->class_dev, "platform-profile-%d", pprof->minor);
484485
err = device_register(&pprof->class_dev);
485486
if (err) {
@@ -529,7 +530,7 @@ static void devm_platform_profile_release(struct device *dev, void *res)
529530
platform_profile_remove(*pprof);
530531
}
531532

532-
int devm_platform_profile_register(struct platform_profile_handler *pprof)
533+
int devm_platform_profile_register(struct platform_profile_handler *pprof, void *drvdata)
533534
{
534535
struct platform_profile_handler **dr;
535536
int ret;
@@ -538,7 +539,7 @@ int devm_platform_profile_register(struct platform_profile_handler *pprof)
538539
if (!dr)
539540
return -ENOMEM;
540541

541-
ret = platform_profile_register(pprof);
542+
ret = platform_profile_register(pprof, drvdata);
542543
if (ret) {
543544
devres_free(dr);
544545
return ret;

drivers/platform/surface/surface_platform_profile.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ static int ssam_platform_profile_get(struct platform_profile_handler *pprof,
161161
enum ssam_tmp_profile tp;
162162
int status;
163163

164-
tpd = container_of(pprof, struct ssam_platform_profile_device, handler);
164+
tpd = dev_get_drvdata(&pprof->class_dev);
165165

166166
status = ssam_tmp_profile_get(tpd->sdev, &tp);
167167
if (status)
@@ -181,7 +181,7 @@ static int ssam_platform_profile_set(struct platform_profile_handler *pprof,
181181
struct ssam_platform_profile_device *tpd;
182182
int tp;
183183

184-
tpd = container_of(pprof, struct ssam_platform_profile_device, handler);
184+
tpd = dev_get_drvdata(&pprof->class_dev);
185185

186186
tp = convert_profile_to_ssam_tmp(tpd->sdev, profile);
187187
if (tp < 0)
@@ -224,7 +224,7 @@ static int surface_platform_profile_probe(struct ssam_device *sdev)
224224
set_bit(PLATFORM_PROFILE_BALANCED_PERFORMANCE, tpd->handler.choices);
225225
set_bit(PLATFORM_PROFILE_PERFORMANCE, tpd->handler.choices);
226226

227-
return platform_profile_register(&tpd->handler);
227+
return platform_profile_register(&tpd->handler, tpd);
228228
}
229229

230230
static void surface_platform_profile_remove(struct ssam_device *sdev)

drivers/platform/x86/acer-wmi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2073,7 +2073,7 @@ static int acer_platform_profile_setup(struct platform_device *device)
20732073
ACER_PREDATOR_V4_THERMAL_PROFILE_TURBO;
20742074
}
20752075

2076-
err = platform_profile_register(&platform_profile_handler);
2076+
err = platform_profile_register(&platform_profile_handler, NULL);
20772077
if (err)
20782078
return err;
20792079

drivers/platform/x86/amd/pmf/sps.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ bool is_pprof_balanced(struct amd_pmf_dev *pmf)
285285
static int amd_pmf_profile_get(struct platform_profile_handler *pprof,
286286
enum platform_profile_option *profile)
287287
{
288-
struct amd_pmf_dev *pmf = container_of(pprof, struct amd_pmf_dev, pprof);
288+
struct amd_pmf_dev *pmf = dev_get_drvdata(&pprof->class_dev);
289289

290290
*profile = pmf->current_profile;
291291
return 0;
@@ -366,7 +366,7 @@ int amd_pmf_power_slider_update_event(struct amd_pmf_dev *dev)
366366
static int amd_pmf_profile_set(struct platform_profile_handler *pprof,
367367
enum platform_profile_option profile)
368368
{
369-
struct amd_pmf_dev *pmf = container_of(pprof, struct amd_pmf_dev, pprof);
369+
struct amd_pmf_dev *pmf = dev_get_drvdata(&pprof->class_dev);
370370
int ret = 0;
371371

372372
pmf->current_profile = profile;
@@ -416,7 +416,7 @@ int amd_pmf_init_sps(struct amd_pmf_dev *dev)
416416
set_bit(PLATFORM_PROFILE_PERFORMANCE, dev->pprof.choices);
417417

418418
/* Create platform_profile structure and register */
419-
err = platform_profile_register(&dev->pprof);
419+
err = platform_profile_register(&dev->pprof, dev);
420420
if (err)
421421
dev_err(dev->dev, "Failed to register SPS support, this is most likely an SBIOS bug: %d\n",
422422
err);

drivers/platform/x86/asus-wmi.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3806,7 +3806,7 @@ static int asus_wmi_platform_profile_get(struct platform_profile_handler *pprof,
38063806
struct asus_wmi *asus;
38073807
int tp;
38083808

3809-
asus = container_of(pprof, struct asus_wmi, platform_profile_handler);
3809+
asus = dev_get_drvdata(&pprof->class_dev);
38103810
tp = asus->throttle_thermal_policy_mode;
38113811

38123812
switch (tp) {
@@ -3832,7 +3832,7 @@ static int asus_wmi_platform_profile_set(struct platform_profile_handler *pprof,
38323832
struct asus_wmi *asus;
38333833
int tp;
38343834

3835-
asus = container_of(pprof, struct asus_wmi, platform_profile_handler);
3835+
asus = dev_get_drvdata(&pprof->class_dev);
38363836

38373837
switch (profile) {
38383838
case PLATFORM_PROFILE_PERFORMANCE:
@@ -3887,7 +3887,7 @@ static int platform_profile_setup(struct asus_wmi *asus)
38873887
set_bit(PLATFORM_PROFILE_PERFORMANCE,
38883888
asus->platform_profile_handler.choices);
38893889

3890-
err = platform_profile_register(&asus->platform_profile_handler);
3890+
err = platform_profile_register(&asus->platform_profile_handler, asus);
38913891
if (err == -EEXIST) {
38923892
pr_warn("%s, a platform_profile handler is already registered\n", __func__);
38933893
return 0;

drivers/platform/x86/dell/alienware-wmi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1129,7 +1129,7 @@ static int create_thermal_profile(struct platform_device *platform_device)
11291129
pp_handler.name = "alienware-wmi";
11301130
pp_handler.dev = &platform_device->dev;
11311131

1132-
return devm_platform_profile_register(&pp_handler);
1132+
return devm_platform_profile_register(&pp_handler, NULL);
11331133
}
11341134

11351135
/*

drivers/platform/x86/dell/dell-pc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ static int thermal_init(void)
271271
set_bit(PLATFORM_PROFILE_PERFORMANCE, thermal_handler->choices);
272272

273273
/* Clean up if failed */
274-
ret = platform_profile_register(thermal_handler);
274+
ret = platform_profile_register(thermal_handler, NULL);
275275
if (ret)
276276
goto cleanup_thermal_handler;
277277

drivers/platform/x86/hp/hp-wmi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1629,7 +1629,7 @@ static int thermal_profile_setup(struct platform_device *device)
16291629
set_bit(PLATFORM_PROFILE_BALANCED, platform_profile_handler.choices);
16301630
set_bit(PLATFORM_PROFILE_PERFORMANCE, platform_profile_handler.choices);
16311631

1632-
err = platform_profile_register(&platform_profile_handler);
1632+
err = platform_profile_register(&platform_profile_handler, NULL);
16331633
if (err)
16341634
return err;
16351635

drivers/platform/x86/ideapad-laptop.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -936,7 +936,7 @@ static int convert_profile_to_dytc(enum platform_profile_option profile, int *pe
936936
static int dytc_profile_get(struct platform_profile_handler *pprof,
937937
enum platform_profile_option *profile)
938938
{
939-
struct ideapad_dytc_priv *dytc = container_of(pprof, struct ideapad_dytc_priv, pprof);
939+
struct ideapad_dytc_priv *dytc = dev_get_drvdata(&pprof->class_dev);
940940

941941
*profile = dytc->current_profile;
942942
return 0;
@@ -989,7 +989,7 @@ static int dytc_cql_command(struct ideapad_private *priv, unsigned long cmd,
989989
static int dytc_profile_set(struct platform_profile_handler *pprof,
990990
enum platform_profile_option profile)
991991
{
992-
struct ideapad_dytc_priv *dytc = container_of(pprof, struct ideapad_dytc_priv, pprof);
992+
struct ideapad_dytc_priv *dytc = dev_get_drvdata(&pprof->class_dev);
993993
struct ideapad_private *priv = dytc->priv;
994994
unsigned long output;
995995
int err;
@@ -1114,7 +1114,7 @@ static int ideapad_dytc_profile_init(struct ideapad_private *priv)
11141114
set_bit(PLATFORM_PROFILE_PERFORMANCE, priv->dytc->pprof.choices);
11151115

11161116
/* Create platform_profile structure and register */
1117-
err = platform_profile_register(&priv->dytc->pprof);
1117+
err = platform_profile_register(&priv->dytc->pprof, &priv->dytc);
11181118
if (err)
11191119
goto pp_reg_failed;
11201120

drivers/platform/x86/inspur_platform_profile.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ static int inspur_wmi_perform_query(struct wmi_device *wdev,
8787
static int inspur_platform_profile_set(struct platform_profile_handler *pprof,
8888
enum platform_profile_option profile)
8989
{
90-
struct inspur_wmi_priv *priv = container_of(pprof, struct inspur_wmi_priv,
91-
handler);
90+
struct inspur_wmi_priv *priv = dev_get_drvdata(&pprof->class_dev);
9291
u8 ret_code[4] = {0, 0, 0, 0};
9392
int ret;
9493

@@ -135,8 +134,7 @@ static int inspur_platform_profile_set(struct platform_profile_handler *pprof,
135134
static int inspur_platform_profile_get(struct platform_profile_handler *pprof,
136135
enum platform_profile_option *profile)
137136
{
138-
struct inspur_wmi_priv *priv = container_of(pprof, struct inspur_wmi_priv,
139-
handler);
137+
struct inspur_wmi_priv *priv = dev_get_drvdata(&pprof->class_dev);
140138
u8 ret_code[4] = {0, 0, 0, 0};
141139
int ret;
142140

@@ -186,7 +184,7 @@ static int inspur_wmi_probe(struct wmi_device *wdev, const void *context)
186184
set_bit(PLATFORM_PROFILE_BALANCED, priv->handler.choices);
187185
set_bit(PLATFORM_PROFILE_PERFORMANCE, priv->handler.choices);
188186

189-
return platform_profile_register(&priv->handler);
187+
return platform_profile_register(&priv->handler, priv);
190188
}
191189

192190
static void inspur_wmi_remove(struct wmi_device *wdev)

drivers/platform/x86/thinkpad_acpi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10641,7 +10641,7 @@ static int tpacpi_dytc_profile_init(struct ibm_init_struct *iibm)
1064110641

1064210642
dytc_profile.dev = &tpacpi_pdev->dev;
1064310643
/* Create platform_profile structure and register */
10644-
err = platform_profile_register(&dytc_profile);
10644+
err = platform_profile_register(&dytc_profile, NULL);
1064510645
/*
1064610646
* If for some reason platform_profiles aren't enabled
1064710647
* don't quit terminally.

include/linux/platform_profile.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ struct platform_profile_handler {
4040
enum platform_profile_option profile);
4141
};
4242

43-
int platform_profile_register(struct platform_profile_handler *pprof);
43+
int platform_profile_register(struct platform_profile_handler *pprof, void *drvdata);
4444
int platform_profile_remove(struct platform_profile_handler *pprof);
45-
int devm_platform_profile_register(struct platform_profile_handler *pprof);
45+
int devm_platform_profile_register(struct platform_profile_handler *pprof, void *drvdata);
4646
int platform_profile_cycle(void);
4747
void platform_profile_notify(struct platform_profile_handler *pprof);
4848

0 commit comments

Comments
 (0)