162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) ST-Ericsson SA 2012
462306a36Sopenharmony_ci * Author: Johan Gardsmark <johan.gardsmark@stericsson.com> for ST-Ericsson.
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#ifndef _AB8500_CHARGALG_H_
862306a36Sopenharmony_ci#define _AB8500_CHARGALG_H_
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#include <linux/power_supply.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci/*
1362306a36Sopenharmony_ci * Valid only for supplies of type:
1462306a36Sopenharmony_ci * - POWER_SUPPLY_TYPE_MAINS,
1562306a36Sopenharmony_ci * - POWER_SUPPLY_TYPE_USB,
1662306a36Sopenharmony_ci * because only them store as drv_data pointer to struct ux500_charger.
1762306a36Sopenharmony_ci */
1862306a36Sopenharmony_ci#define psy_to_ux500_charger(x) power_supply_get_drvdata(x)
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci/* Forward declaration */
2162306a36Sopenharmony_cistruct ux500_charger;
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_cistruct ux500_charger_ops {
2462306a36Sopenharmony_ci	int (*enable) (struct ux500_charger *, int, int, int);
2562306a36Sopenharmony_ci	int (*check_enable) (struct ux500_charger *, int, int);
2662306a36Sopenharmony_ci	int (*kick_wd) (struct ux500_charger *);
2762306a36Sopenharmony_ci	int (*update_curr) (struct ux500_charger *, int);
2862306a36Sopenharmony_ci};
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci/**
3162306a36Sopenharmony_ci * struct ux500_charger - power supply ux500 charger sub class
3262306a36Sopenharmony_ci * @psy			power supply base class
3362306a36Sopenharmony_ci * @ops			ux500 charger operations
3462306a36Sopenharmony_ci * @max_out_volt_uv	maximum output charger voltage in uV
3562306a36Sopenharmony_ci * @max_out_curr_ua	maximum output charger current in uA
3662306a36Sopenharmony_ci * @enabled		indicates if this charger is used or not
3762306a36Sopenharmony_ci */
3862306a36Sopenharmony_cistruct ux500_charger {
3962306a36Sopenharmony_ci	struct power_supply *psy;
4062306a36Sopenharmony_ci	struct ux500_charger_ops ops;
4162306a36Sopenharmony_ci	int max_out_volt_uv;
4262306a36Sopenharmony_ci	int max_out_curr_ua;
4362306a36Sopenharmony_ci	int wdt_refresh;
4462306a36Sopenharmony_ci	bool enabled;
4562306a36Sopenharmony_ci};
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci#endif /* _AB8500_CHARGALG_H_ */
48