1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (C) ST-Ericsson SA 2012 4*4882a593Smuzhiyun * Author: Johan Gardsmark <johan.gardsmark@stericsson.com> for ST-Ericsson. 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #ifndef _UX500_CHARGALG_H 8*4882a593Smuzhiyun #define _UX500_CHARGALG_H 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #include <linux/power_supply.h> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun /* 13*4882a593Smuzhiyun * Valid only for supplies of type: 14*4882a593Smuzhiyun * - POWER_SUPPLY_TYPE_MAINS, 15*4882a593Smuzhiyun * - POWER_SUPPLY_TYPE_USB, 16*4882a593Smuzhiyun * because only them store as drv_data pointer to struct ux500_charger. 17*4882a593Smuzhiyun */ 18*4882a593Smuzhiyun #define psy_to_ux500_charger(x) power_supply_get_drvdata(x) 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun /* Forward declaration */ 21*4882a593Smuzhiyun struct ux500_charger; 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun struct ux500_charger_ops { 24*4882a593Smuzhiyun int (*enable) (struct ux500_charger *, int, int, int); 25*4882a593Smuzhiyun int (*check_enable) (struct ux500_charger *, int, int); 26*4882a593Smuzhiyun int (*kick_wd) (struct ux500_charger *); 27*4882a593Smuzhiyun int (*update_curr) (struct ux500_charger *, int); 28*4882a593Smuzhiyun }; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun /** 31*4882a593Smuzhiyun * struct ux500_charger - power supply ux500 charger sub class 32*4882a593Smuzhiyun * @psy power supply base class 33*4882a593Smuzhiyun * @ops ux500 charger operations 34*4882a593Smuzhiyun * @max_out_volt maximum output charger voltage in mV 35*4882a593Smuzhiyun * @max_out_curr maximum output charger current in mA 36*4882a593Smuzhiyun * @enabled indicates if this charger is used or not 37*4882a593Smuzhiyun * @external external charger unit (pm2xxx) 38*4882a593Smuzhiyun */ 39*4882a593Smuzhiyun struct ux500_charger { 40*4882a593Smuzhiyun struct power_supply *psy; 41*4882a593Smuzhiyun struct ux500_charger_ops ops; 42*4882a593Smuzhiyun int max_out_volt; 43*4882a593Smuzhiyun int max_out_curr; 44*4882a593Smuzhiyun int wdt_refresh; 45*4882a593Smuzhiyun bool enabled; 46*4882a593Smuzhiyun bool external; 47*4882a593Smuzhiyun }; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun extern struct blocking_notifier_head charger_notifier_list; 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun #endif 52