1a88aab6bSPiotr Wilczek /*
2a88aab6bSPiotr Wilczek * Copyright (C) 2013 Samsung Electronics
3a88aab6bSPiotr Wilczek * Piotr Wilczek <p.wilczek@samsung.com>
4a88aab6bSPiotr Wilczek *
5a88aab6bSPiotr Wilczek * SPDX-License-Identifier: GPL-2.0+
6a88aab6bSPiotr Wilczek */
7a88aab6bSPiotr Wilczek
8a88aab6bSPiotr Wilczek #include <common.h>
9a88aab6bSPiotr Wilczek #include <power/pmic.h>
10a88aab6bSPiotr Wilczek #include <power/battery.h>
117f39b067SPrzemyslaw Marczak #include <power/max77693_pmic.h>
12a88aab6bSPiotr Wilczek #include <errno.h>
13a88aab6bSPiotr Wilczek
14a88aab6bSPiotr Wilczek static struct battery battery_trats;
15a88aab6bSPiotr Wilczek
power_battery_charge(struct pmic * bat)16a88aab6bSPiotr Wilczek static int power_battery_charge(struct pmic *bat)
17a88aab6bSPiotr Wilczek {
18a88aab6bSPiotr Wilczek struct power_battery *p_bat = bat->pbat;
19a88aab6bSPiotr Wilczek
2078a36c3eSSimon Glass if (bat->chrg->chrg_state(p_bat->chrg, PMIC_CHARGER_ENABLE, 450))
21*505cf475SJaehoon Chung return -EINVAL;
22a88aab6bSPiotr Wilczek
23a88aab6bSPiotr Wilczek return 0;
24a88aab6bSPiotr Wilczek }
25a88aab6bSPiotr Wilczek
power_battery_init_trats2(struct pmic * bat_,struct pmic * fg_,struct pmic * chrg_,struct pmic * muic_)26a88aab6bSPiotr Wilczek static int power_battery_init_trats2(struct pmic *bat_,
27a88aab6bSPiotr Wilczek struct pmic *fg_,
28a88aab6bSPiotr Wilczek struct pmic *chrg_,
29a88aab6bSPiotr Wilczek struct pmic *muic_)
30a88aab6bSPiotr Wilczek {
31a88aab6bSPiotr Wilczek bat_->pbat->fg = fg_;
32a88aab6bSPiotr Wilczek bat_->pbat->chrg = chrg_;
33a88aab6bSPiotr Wilczek bat_->pbat->muic = muic_;
34a88aab6bSPiotr Wilczek
35a88aab6bSPiotr Wilczek bat_->fg = fg_->fg;
36a88aab6bSPiotr Wilczek bat_->chrg = chrg_->chrg;
37a88aab6bSPiotr Wilczek bat_->chrg->chrg_type = muic_->chrg->chrg_type;
38a88aab6bSPiotr Wilczek return 0;
39a88aab6bSPiotr Wilczek }
40a88aab6bSPiotr Wilczek
41a88aab6bSPiotr Wilczek static struct power_battery power_bat_trats2 = {
42a88aab6bSPiotr Wilczek .bat = &battery_trats,
43a88aab6bSPiotr Wilczek .battery_init = power_battery_init_trats2,
44a88aab6bSPiotr Wilczek .battery_charge = power_battery_charge,
45a88aab6bSPiotr Wilczek };
46a88aab6bSPiotr Wilczek
power_bat_init(unsigned char bus)47a88aab6bSPiotr Wilczek int power_bat_init(unsigned char bus)
48a88aab6bSPiotr Wilczek {
49a88aab6bSPiotr Wilczek static const char name[] = "BAT_TRATS2";
50a88aab6bSPiotr Wilczek struct pmic *p = pmic_alloc();
51a88aab6bSPiotr Wilczek
52a88aab6bSPiotr Wilczek if (!p) {
53a88aab6bSPiotr Wilczek printf("%s: POWER allocation error!\n", __func__);
54a88aab6bSPiotr Wilczek return -ENOMEM;
55a88aab6bSPiotr Wilczek }
56a88aab6bSPiotr Wilczek
57a88aab6bSPiotr Wilczek debug("Board BAT init\n");
58a88aab6bSPiotr Wilczek
59a88aab6bSPiotr Wilczek p->interface = PMIC_NONE;
60a88aab6bSPiotr Wilczek p->name = name;
61a88aab6bSPiotr Wilczek p->bus = bus;
62a88aab6bSPiotr Wilczek
63a88aab6bSPiotr Wilczek p->pbat = &power_bat_trats2;
64a88aab6bSPiotr Wilczek return 0;
65a88aab6bSPiotr Wilczek }
66