Skip to content

Commit c520060

Browse files
jwrdegoederafaeljw
authored andcommitted
ACPI: PMIC: allow drivers to provide a custom lpat_raw_to_temp() function
The LPAT tables used in the DSDT for some PMICs require special handling, allow the PMIC OpRegion drivers to provide an alternative implementation by adding a lpat_raw_to_temp function pointer to struct pmic_table; and initialize this to the default acpi_lpat_raw_to_temp function for all PMICs. Signed-off-by: Hans de Goede <[email protected]> Reviewed-by: Andy Shevchenko <[email protected]> Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent e172e65 commit c520060

File tree

8 files changed

+11
-1
lines changed

8 files changed

+11
-1
lines changed

drivers/acpi/pmic/intel_pmic.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ static int pmic_read_temp(struct intel_pmic_opregion *opregion,
9595
return 0;
9696
}
9797

98-
temp = acpi_lpat_raw_to_temp(opregion->lpat_table, raw_temp);
98+
temp = opregion->data->lpat_raw_to_temp(opregion->lpat_table, raw_temp);
9999
if (temp < 0)
100100
return temp;
101101

drivers/acpi/pmic/intel_pmic.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
#ifndef __INTEL_PMIC_H
33
#define __INTEL_PMIC_H
44

5+
#include <acpi/acpi_lpat.h>
6+
57
struct pmic_table {
68
int address; /* operation region address */
79
int reg; /* corresponding thermal register */
@@ -17,6 +19,8 @@ struct intel_pmic_opregion_data {
1719
int (*update_policy)(struct regmap *r, int reg, int bit, int enable);
1820
int (*exec_mipi_pmic_seq_element)(struct regmap *r, u16 i2c_address,
1921
u32 reg_address, u32 value, u32 mask);
22+
int (*lpat_raw_to_temp)(struct acpi_lpat_conversion_table *lpat_table,
23+
int raw);
2024
struct pmic_table *power_table;
2125
int power_table_count;
2226
struct pmic_table *thermal_table;

drivers/acpi/pmic/intel_pmic_bxtwc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ static const struct intel_pmic_opregion_data intel_bxtwc_pmic_opregion_data = {
376376
.update_aux = intel_bxtwc_pmic_update_aux,
377377
.get_policy = intel_bxtwc_pmic_get_policy,
378378
.update_policy = intel_bxtwc_pmic_update_policy,
379+
.lpat_raw_to_temp = acpi_lpat_raw_to_temp,
379380
.power_table = power_table,
380381
.power_table_count = ARRAY_SIZE(power_table),
381382
.thermal_table = thermal_table,

drivers/acpi/pmic/intel_pmic_bytcrc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,7 @@ static const struct intel_pmic_opregion_data intel_crc_pmic_opregion_data = {
278278
.update_aux = intel_crc_pmic_update_aux,
279279
.get_policy = intel_crc_pmic_get_policy,
280280
.update_policy = intel_crc_pmic_update_policy,
281+
.lpat_raw_to_temp = acpi_lpat_raw_to_temp,
281282
.power_table = power_table,
282283
.power_table_count= ARRAY_SIZE(power_table),
283284
.thermal_table = thermal_table,

drivers/acpi/pmic/intel_pmic_chtcrc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
* CHT Crystal Cove PMIC.
2525
*/
2626
static const struct intel_pmic_opregion_data intel_chtcrc_pmic_opregion_data = {
27+
.lpat_raw_to_temp = acpi_lpat_raw_to_temp,
2728
.pmic_i2c_address = 0x6e,
2829
};
2930

drivers/acpi/pmic/intel_pmic_chtdc_ti.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ static const struct intel_pmic_opregion_data chtdc_ti_pmic_opregion_data = {
9898
.get_power = chtdc_ti_pmic_get_power,
9999
.update_power = chtdc_ti_pmic_update_power,
100100
.get_raw_temp = chtdc_ti_pmic_get_raw_temp,
101+
.lpat_raw_to_temp = acpi_lpat_raw_to_temp,
101102
.power_table = chtdc_ti_power_table,
102103
.power_table_count = ARRAY_SIZE(chtdc_ti_power_table),
103104
.thermal_table = chtdc_ti_thermal_table,

drivers/acpi/pmic/intel_pmic_chtwc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ static const struct intel_pmic_opregion_data intel_cht_wc_pmic_opregion_data = {
257257
.get_power = intel_cht_wc_pmic_get_power,
258258
.update_power = intel_cht_wc_pmic_update_power,
259259
.exec_mipi_pmic_seq_element = intel_cht_wc_exec_mipi_pmic_seq_element,
260+
.lpat_raw_to_temp = acpi_lpat_raw_to_temp,
260261
.power_table = power_table,
261262
.power_table_count = ARRAY_SIZE(power_table),
262263
};

drivers/acpi/pmic/intel_pmic_xpower.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,7 @@ static const struct intel_pmic_opregion_data intel_xpower_pmic_opregion_data = {
298298
.update_power = intel_xpower_pmic_update_power,
299299
.get_raw_temp = intel_xpower_pmic_get_raw_temp,
300300
.exec_mipi_pmic_seq_element = intel_xpower_exec_mipi_pmic_seq_element,
301+
.lpat_raw_to_temp = acpi_lpat_raw_to_temp,
301302
.power_table = power_table,
302303
.power_table_count = ARRAY_SIZE(power_table),
303304
.thermal_table = thermal_table,

0 commit comments

Comments
 (0)