/*************************************************************************** * __________ __ ___. * Open \______ \ ____ ____ | | _\_ |__ _______ ___ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ * \/ \/ \/ \/ \/ * $Id$ * * Copyright (C) 2008 by Michael Sevakis * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************/ #ifndef POWERMGMT_TARGET_H #define POWERMGMT_TARGET_H /* Can't just run this code willy-nilly. Do not allow charger engagement * without carefully verifying compatibility. * * Things to check: * 1) Charge path configuration for the PMIC. * 2) Correct thermistor reading * 3) Accurate voltage readings * 4) Accurate current sense for the charge path as the sense resistor may * deviate from the 0.1 ohms assumed by the charge path regulator. */ #ifdef TOSHIBA_GIGABEAT_S /* * Gigabeat S qualifications: * 1) Setup for dual-supply mode with separate inputs and providing USB * charging capability through external components. * 2) Curve obtained experimentally - extreme deviation from "optimized" * characteristics. * 3) Verified at battery terminals - no deviation from datasheet formula. * 4) 0.316 ohms <=?? - verified by comparitive current readings on device * with ammeter readings and measurement of on-board components. */ #ifndef BOOTLOADER #define IMX31_ALLOW_CHARGING #endif #else #warning This iMX31 target requires validation of charging algorithm - charging disabled #endif #define BATT_VTRICKLE_CHARGE 2900 /* Must charge slowly */ #define BATT_VSLOW_CHARGE 3500 /* Lower-current charge mode below * this level */ #define BATT_FULL_VOLTAGE 4161 /* Battery already topped */ #define BATT_VAUTO_RECHARGE 4100 /* When to begin another cycle */ #define BATT_USB_VAUTO_RECHARGE 4000 /* When to cycle with USB only */ #define BATT_USB_VSTOP 4140 /* When to "stop" when USB only */ #define BATT_TOO_LOW 2400 /* No battery? Short? Can't read below 2400mV. */ #define BATT_TOO_HIGH 4220 /* Extra care. Don't totally rely upon battery protection circutry. Stop it early if too high. */ #define CHARGER_TOTAL_TIMER 300 /* minutes */ /* Temperature readings - w/hysteresis */ /* Temperature range before beginning charging */ #define BATTERY_CHARGE_MIN 0 #define BATTERY_CHARGE_MAX 50 /* Temperature range after out-of-range detected - charging will * self-resume */ #define BATTERY_CHARGE_RESTART_MIN 5 #define BATTERY_CHARGE_RESTART_MAX 45 /* .316 ohms is closest standard value as measured in 1% tolerance - adjust * relative to .100 ohm which is what the PMIC is "tuned" for. */ #define ILEVEL_ADJUST_IN(I) (100*(I) / 316) #define ILEVEL_ADJUST_OUT(I) (316*(I) / 100) /* Relative draw to battery capacity - adjusted for sense resistor */ #define BATTERY_ICHARGE_COMPLETE (505*9/100) /* 9% of nominal max output */ /* All charging modes use 4.200V for regulator */ #define BATTERY_VCHARGING MC13783_VCHRG_4_200V /* Slow charging - MAIN - Still below 3.5V (avoid excessive reg. dissipation) */ /* #define BATTERY_ISLOW */ /* Fast charging - MAIN */ #define BATTERY_IFAST MC13783_ICHRG_1596MA /* 505mA */ /* Trickle charging low battery - MAIN (~10% Imax) */ #define BATTERY_ITRICKLE MC13783_ICHRG_177MA /* 56mA */ /* Slow charging - USB - Still below 3.5V (avoid excessive reg. dissipation) */ /* #define BATTERY_ISLOW_USB */ /* Fast charging - USB */ #define BATTERY_IFAST_USB MC13783_ICHRG_1152MA /* 365mA */ /* Trickle charging low battery - USB (Ibat = Icccv - Idevice) */ #define BATTERY_ITRICKLE_USB MC13783_ICHRG_532MA /* 168mA */ /* Maintain charge - USB 500mA */ #define BATTERY_IFLOAT_USB MC13783_ICHRG_1152MA /* 365mA */ #define BATTERY_VFLOAT_USB MC13783_VCHRG_4_150V /* Maintain charge - USB 100mA */ #define BATTERY_IMAINTAIN_USB MC13783_ICHRG_266MA /* 84mA */ #define BATTERY_VMAINTAIN_USB MC13783_VCHRG_4_150V /* Battery filter lengths in samples */ #define BATT_AVE_SAMPLES 32 #define ICHARGER_AVE_SAMPLES 32 void powermgmt_init_target(void); void charging_algorithm_step(void); void charging_algorithm_close(void); /* Provide filtered charge current */ int battery_charge_current(void); #if 0 #define CURRENT_MAX_CHG battery_charge_current() #endif #endif /* POWERMGMT_TARGET_H */