Patchwork [U-Boot,v7,20/26] arm:trats:pmic: Support for charging battery at Samsung's TRATS board

login
register
mail settings
Submitter Łukasz Majewski
Date Nov. 13, 2012, 1:22 p.m.
Message ID <1352812937-15998-21-git-send-email-l.majewski@samsung.com>
Download mbox | patch
Permalink /patch/198663/
State Accepted
Delegated to: Anatolij Gustschin
Headers show

Comments

Łukasz Majewski - Nov. 13, 2012, 1:22 p.m.
The battery connected to Samsung's Trats development board is now
charged when voltage drops below threshold.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
---
Changes for v2:
- Define separate *p_{} pointer instances for each power device available
  at Trats
- Only basic checks performed
- Core responsible for battery charging moved to separate file -
  ./drivers/power/bat_trats.c
Changes for v3:
- change code according to struct pmic redesign
Changes for v4:
- None
Changes for v5:
- None
Changes for v6:
- Code indentation improvement
Changes for v7:
- Check return value from pmic_get()
---
 board/samsung/trats/trats.c |   49 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 48 insertions(+), 1 deletions(-)

Patch

diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c
index 226b529..e540190 100644
--- a/board/samsung/trats/trats.c
+++ b/board/samsung/trats/trats.c
@@ -298,7 +298,9 @@  static int pmic_init_max8997(void)
 
 int power_init_board(void)
 {
-	int ret;
+	int chrg, ret;
+	struct power_battery *pb;
+	struct pmic *p_fg, *p_chrg, *p_muic, *p_bat;
 
 	ret = pmic_init(I2C_5);
 	ret |= pmic_init_max8997();
@@ -308,6 +310,51 @@  int power_init_board(void)
 	if (ret)
 		return ret;
 
+	p_fg = pmic_get("MAX17042_FG");
+	if (!p_fg) {
+		puts("MAX17042_FG: Not found\n");
+		return -ENODEV;
+	}
+
+	p_chrg = pmic_get("MAX8997_PMIC");
+	if (!p_chrg) {
+		puts("MAX8997_PMIC: Not found\n");
+		return -ENODEV;
+	}
+
+	p_muic = pmic_get("MAX8997_MUIC");
+	if (!p_muic) {
+		puts("MAX8997_MUIC: Not found\n");
+		return -ENODEV;
+	}
+
+	p_bat = pmic_get("BAT_TRATS");
+	if (!p_bat) {
+		puts("BAT_TRATS: Not found\n");
+		return -ENODEV;
+	}
+
+	p_fg->parent =  p_bat;
+	p_chrg->parent = p_bat;
+	p_muic->parent = p_bat;
+
+	p_bat->low_power_mode = trats_low_power_mode;
+	p_bat->pbat->battery_init(p_bat, p_fg, p_chrg, p_muic);
+
+	pb = p_bat->pbat;
+	chrg = p_muic->chrg->chrg_type(p_muic);
+	debug("CHARGER TYPE: %d\n", chrg);
+
+	if (!p_chrg->chrg->chrg_bat_present(p_chrg)) {
+		puts("No battery detected\n");
+		return -1;
+	}
+
+	p_fg->fg->fg_battery_check(p_fg, p_bat);
+
+	if (pb->bat->state == CHARGE && chrg == CHARGER_USB)
+		puts("CHARGE Battery !\n");
+
 	return 0;
 }