]>
Commit | Line | Data |
---|---|---|
eba42391 ŁM |
1 | /* |
2 | * Copyright (C) 2012 Samsung Electronics | |
3 | * Lukasz Majewski <l.majewski@samsung.com> | |
4 | * | |
1a459660 | 5 | * SPDX-License-Identifier: GPL-2.0+ |
eba42391 ŁM |
6 | */ |
7 | ||
8 | #include <common.h> | |
9 | #include <power/pmic.h> | |
10 | #include <power/battery.h> | |
11 | #include <power/max8997_pmic.h> | |
12 | #include <errno.h> | |
13 | ||
14 | static struct battery battery_trats; | |
15 | ||
16 | static int power_battery_charge(struct pmic *bat) | |
17 | { | |
18 | struct power_battery *p_bat = bat->pbat; | |
19 | struct battery *battery = p_bat->bat; | |
20 | int k; | |
21 | ||
22 | if (bat->chrg->chrg_state(p_bat->chrg, CHARGER_ENABLE, 450)) | |
23 | return -1; | |
24 | ||
25 | for (k = 0; bat->chrg->chrg_bat_present(p_bat->chrg) && | |
26 | bat->chrg->chrg_type(p_bat->muic) && | |
27 | battery->state_of_chrg < 100; k++) { | |
9dfa3d07 ŁM |
28 | udelay(2000000); |
29 | if (!(k % 5)) | |
30 | puts("."); | |
eba42391 ŁM |
31 | bat->fg->fg_battery_update(p_bat->fg, bat); |
32 | ||
9dfa3d07 | 33 | if (k == 200) { |
eba42391 ŁM |
34 | debug(" %d [V]", battery->voltage_uV); |
35 | puts("\n"); | |
36 | k = 0; | |
37 | } | |
38 | ||
9dfa3d07 ŁM |
39 | if (ctrlc()) { |
40 | printf("\nCharging disabled on request.\n"); | |
41 | goto exit; | |
42 | } | |
eba42391 | 43 | } |
9dfa3d07 | 44 | exit: |
eba42391 ŁM |
45 | bat->chrg->chrg_state(p_bat->chrg, CHARGER_DISABLE, 0); |
46 | ||
47 | return 0; | |
48 | } | |
49 | ||
50 | static int power_battery_init_trats(struct pmic *bat_, | |
51 | struct pmic *fg_, | |
52 | struct pmic *chrg_, | |
53 | struct pmic *muic_) | |
54 | { | |
55 | bat_->pbat->fg = fg_; | |
56 | bat_->pbat->chrg = chrg_; | |
57 | bat_->pbat->muic = muic_; | |
58 | ||
59 | bat_->fg = fg_->fg; | |
60 | bat_->chrg = chrg_->chrg; | |
61 | bat_->chrg->chrg_type = muic_->chrg->chrg_type; | |
62 | return 0; | |
63 | } | |
64 | ||
65 | static struct power_battery power_bat_trats = { | |
66 | .bat = &battery_trats, | |
67 | .battery_init = power_battery_init_trats, | |
68 | .battery_charge = power_battery_charge, | |
69 | }; | |
70 | ||
71 | int power_bat_init(unsigned char bus) | |
72 | { | |
73 | static const char name[] = "BAT_TRATS"; | |
74 | struct pmic *p = pmic_alloc(); | |
75 | ||
76 | if (!p) { | |
77 | printf("%s: POWER allocation error!\n", __func__); | |
78 | return -ENOMEM; | |
79 | } | |
80 | ||
81 | debug("Board BAT init\n"); | |
82 | ||
83 | p->interface = PMIC_NONE; | |
84 | p->name = name; | |
85 | p->bus = bus; | |
86 | ||
87 | p->pbat = &power_bat_trats; | |
88 | return 0; | |
89 | } |