/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (c) 2020 MediaTek Inc. */ #ifndef _CHARGER_COOLING_H #define _CHARGER_COOLING_H #include /*=========================================================== * Macro Definitions *=========================================================== */ #define CHARGER_COOLING_UNLIMITED_STATE (0) #define CHARGER_STATE_NUM 9 #define MAX_CHARGER_COOLER_NAME_LEN (20) /*================================================== * Type Definitions *================================================== */ enum charger_type { SINGLE_CHARGER, DUAL_CHARGER, NUM_CHARGER_TYPE }; /** * struct charger_cooling_device - data for charger cooling device * @name: naming string for this cooling device * @target_state: target cooling state which is set in set_cur_state() * callback. * @max_state: maximum state supported for this cooling device * @cdev: thermal_cooling_device pointer to keep track of the * registered cooling device. * @throttle: callback function to handle throttle request * @dev: device node pointer * @chg_psy: master charger power supply handle * @s_chg_psy: slave charger power supply handle */ struct charger_cooling_device { char name[MAX_CHARGER_COOLER_NAME_LEN]; unsigned long target_state; unsigned long max_state; struct thermal_cooling_device *cdev; int (*throttle)(struct charger_cooling_device *charger_cdev, unsigned long state); struct device *dev; enum charger_type type; struct power_supply *chg_psy; struct power_supply *s_chg_psy; const struct charger_cooling_platform_data *pdata; }; /** * struct charger_cooling_platform_data - charger cooler platform dependent data * @state_to_charger_lv: callback function to transfer cooling state * to chargering current LV * @max_lv: max cooler LV supported by charger */ struct charger_cooling_platform_data { int (*state_to_charger_limit)(struct charger_cooling_device *chg); }; #endif