^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef __INTEL_PMIC_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define __INTEL_PMIC_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) struct pmic_table {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) int address; /* operation region address */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) int reg; /* corresponding thermal register */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) int bit; /* control bit for power */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) struct intel_pmic_opregion_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) int (*get_power)(struct regmap *r, int reg, int bit, u64 *value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) int (*update_power)(struct regmap *r, int reg, int bit, bool on);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) int (*get_raw_temp)(struct regmap *r, int reg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) int (*update_aux)(struct regmap *r, int reg, int raw_temp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) int (*get_policy)(struct regmap *r, int reg, int bit, u64 *value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) int (*update_policy)(struct regmap *r, int reg, int bit, int enable);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) int (*exec_mipi_pmic_seq_element)(struct regmap *r, u16 i2c_address,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) u32 reg_address, u32 value, u32 mask);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) struct pmic_table *power_table;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) int power_table_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) struct pmic_table *thermal_table;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) int thermal_table_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) /* For generic exec_mipi_pmic_seq_element handling */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) int pmic_i2c_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) int intel_pmic_install_opregion_handler(struct device *dev, acpi_handle handle, struct regmap *regmap, struct intel_pmic_opregion_data *d);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #endif