64 lines
1.9 KiB
C
64 lines
1.9 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (c) 2020 MediaTek Inc.
|
|
*/
|
|
|
|
#ifndef _CHARGER_COOLING_H
|
|
#define _CHARGER_COOLING_H
|
|
|
|
#include <linux/thermal.h>
|
|
|
|
/*===========================================================
|
|
* 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
|