summaryrefslogtreecommitdiff
path: root/arch/arm/plat-mxs/include/mach/ddi_bc.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/plat-mxs/include/mach/ddi_bc.h')
-rw-r--r--arch/arm/plat-mxs/include/mach/ddi_bc.h715
1 files changed, 715 insertions, 0 deletions
diff --git a/arch/arm/plat-mxs/include/mach/ddi_bc.h b/arch/arm/plat-mxs/include/mach/ddi_bc.h
new file mode 100644
index 000000000000..21ca9217cdaa
--- /dev/null
+++ b/arch/arm/plat-mxs/include/mach/ddi_bc.h
@@ -0,0 +1,715 @@
+/*
+ * Copyright (C) 2010 Freescale Semiconductor, Inc. All Rights Reserved.
+ */
+
+/*
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+#ifndef _DDI_BC_H
+#define _DDI_BC_H
+
+#include <linux/types.h>
+
+#define DDI_BC_MAX_RESTART_CYCLES 100
+
+#define DDI_BC_LIION_CHARGING_VOLTAGE 4200
+#define DDI_BC_ALKALINE_NIMH_CHARGING_VOLTAGE 1750
+
+/* brief Defines battery charger states. */
+typedef enum _ddi_bc_State {
+ /* brief TBD */
+ DDI_BC_STATE_UNINITIALIZED = 0,
+ /* brief TBD */
+ DDI_BC_STATE_BROKEN = 1,
+ /* brief TBD */
+ DDI_BC_STATE_DISABLED = 2,
+ /* brief TBD */
+ DDI_BC_STATE_WAITING_TO_CHARGE = 3,
+ /* brief TBD */
+ DDI_BC_STATE_CONDITIONING = 4,
+ /* brief TBD */
+ DDI_BC_STATE_CHARGING = 5,
+ /* brief TBD */
+ DDI_BC_STATE_TOPPING_OFF = 6,
+ /* brief TBD */
+ DDI_BC_STATE_DCDC_MODE_WAITING_TO_CHARGE = 7,
+
+} ddi_bc_State_t;
+
+typedef enum _ddi_bc_BrokenReason {
+ /* brief TBD */
+ DDI_BC_BROKEN_UNINITIALIZED = 0,
+ /* brief TBD */
+ DDI_BC_BROKEN_CHARGING_TIMEOUT = 1,
+ /* brief TBD */
+ DDI_BC_BROKEN_FORCED_BY_APPLICATION = 2,
+ /* brief TBD */
+ DDI_BC_BROKEN_EXTERNAL_BATTERY_VOLTAGE_DETECTED = 3,
+ /* brief TBD */
+ DDI_BC_BROKEN_NO_BATTERY_DETECTED = 4,
+
+} ddi_bc_BrokenReason_t;
+
+/* brief Defines the battery charger configuration. */
+typedef struct _ddi_bc_Cfg {
+ /* brief Units in milliseconds. */
+ /* */
+ /* This field configures the expected period between calls to */
+ /* ddi_bc_StateMachine. If die temperature monitoring is */
+ /* enabled, then the data sheet recommends the period be around */
+ /* 100ms or less. */
+ /* */
+ /* Note that this period defines the minimum time resolution of */
+ /* the battery charger. */
+
+ uint32_t u32StateMachinePeriod;
+
+ /* brief Units in mA/s. */
+ /* */
+ /* This field configures the slope of the current ramp. Any */
+ /* time the battery charger increases its current draw, it will */
+ /* ramp up the current no faster than this rate. */
+ /* */
+ /* Note that the minimum time resolution of the battery charger */
+ /* is the configured period between calls to advance the state */
+ /* machine. Also, the hardware has a minimum current resolution */
+ /* of 10mA. If the given ramp slope cannot be expressed */
+ /* exactly, then the largest expressible smaller slope will be */
+ /* the result. If the actual period between calls to */
+ /* ddi_bc_StateMachine is irregular, the current may ramp faster */
+ /* than indicated. */
+
+ uint16_t u16CurrentRampSlope;
+
+ /* brief Units in millivolts. */
+ /* */
+ /* This field configures the threshold conditioning voltage. If */
+ /* the battery's voltage is below this value, it will be */
+ /* conditioned until its voltage rises above the maximum */
+ /* conditioning voltage. After that, the battery will be */
+ /* charged normally. */
+ /* */
+ /* Note that the hardware has a minimum resolution of 8mV. If */
+ /* the given voltage cannot be expressed exactly, then the */
+ /* smallest expressible larger value will be used. */
+
+ uint16_t u16ConditioningThresholdVoltage;
+
+ /* brief Units in millivolts. */
+ /* */
+ /* This field configures the maximum conditioning voltage. If */
+ /* the battery charger is conditioning a battery, normal */
+ /* charging begins when the voltage rises above this value. */
+ /* */
+ /* This value should be slightly higher than the threshold */
+ /* conditioning voltage because it is measured while a */
+ /* conditioning current is actually flowing to the battery. */
+ /* With a conditioning current of 0.1C, reasonable values for */
+ /* the threshold and maximum conditioning voltages are 2.9V */
+ /* and 3.0V respectively. */
+ /* */
+ /* Note that the hardware has a minimum resolution of 8mV. If */
+ /* the given voltage cannot be expressed exactly, then the */
+ /* smallest expressible larger value will be used. */
+
+ uint16_t u16ConditioningMaxVoltage;
+
+ /* brief Units in milliamps. */
+ /* */
+ /* This field configures the maximum conditioning current. */
+ /* This is the maximum current that will be offered to a */
+ /* battery while it is being conditioned. A typical value is */
+ /* 0.1C. */
+ /* */
+ /* Note that the hardware has a minimum resolution of 10mA */
+ /* (see the data sheet for details). If the given current */
+ /* cannot be expressed exactly, then the largest expressible */
+ /* smaller value will be used. */
+
+ uint16_t u16ConditioningCurrent;
+
+ /* brief Units in milliseconds. */
+ /* */
+ /* This field configures the conditioning time-out. This is */
+ /* the maximum amount of time that a battery will be */
+ /* conditioned before the battery charger declares it to be */
+ /* broken. */
+ /* */
+ /* Note that the minimum time resolution of the battery */
+ /* charger is the configured period between calls to advance */
+ /* the state machine. If the given time-out cannot be */
+ /* expressed exactly, then the shortest expressible longer */
+ /* value will be used. */
+
+ uint32_t u32ConditioningTimeout;
+
+ /* brief Units in millivolts. */
+ /* */
+ /* This field configures the final charging voltage. At this */
+ /* writing, only two values are permitted: 4100 or 4200. */
+
+ uint16_t u16ChargingVoltage;
+
+ /* brief Units in milliamps. */
+ /* */
+ /* This field configures the maximum current offered to a */
+ /* charging battery. */
+ /* */
+ /* Note that the hardware has a minimum resolution of 10mA */
+ /* (see the data sheet for details). If the given current */
+ /* cannot be expressed exactly, then the largest expressible */
+ /* smaller value will be used. */
+
+ uint16_t u16ChargingCurrent;
+
+ /* brief Units in milliamps. */
+ /* */
+ /* This field configures the current flow below which a */
+ /* charging battery is regarded as fully charged (typical */
+ /* 0.1C). At this point, the battery will be topped off. */
+ /* */
+ /* Note that the hardware has a minimum resolution of 10mA */
+ /* (see the data sheet for details). If the given current */
+ /* cannot be expressed exactly, then the largest expressible */
+ /* smaller value will be used. */
+
+ uint16_t u16ChargingThresholdCurrent;
+
+ /* brief Units in milliamps. */
+ /* */
+ /* When charging while the DCDC converter's are enabled, the charger */
+ /* is suppling current to both the battery and the Vbat input of the */
+ /* DCDC converter. Once the total battery charger current falls */
+ /* below this level, the charger will then stop charging until the */
+ /* the battery voltage reaches the BC_LOW_DCDCMODE_BATTERY_VOLTAGE */
+ /* threshold or until the DCDCs are no longer enabled. */
+ /* */
+ /* Typically, this value should be left at 180 to avoid the risk */
+ /* of topping off the battery too long in DCDC mode and avoid */
+ /* exceeding the BC_CHARGING_TIMEOUT time which would put the charger */
+ /* driver in the broken state and completely disable charging. */
+ /* */
+ /* Note that the hardware has a minimum resolution of 10mA */
+ /* (see the data sheet for details). If the given current */
+ /* cannot be expressed exactly, then the largest expressible */
+ /* smaller value will be used. */
+ uint16_t u16DdcdModeChargingThresholdCurrent;
+
+ /* brief Units in milliseconds. */
+ /* */
+ /* This field configures the charging time-out. This is the */
+ /* maximum amount of time that a battery will be charged */
+ /* before the battery charger declares it to be broken. */
+ /* */
+ /* Note that the minimum time resolution of the battery */
+ /* charger is the configured period between calls to advance */
+ /* the state machine. If the given time-out cannot be */
+ /* expressed exactly, then the shortest expressible longer */
+ /* value will be used. */
+
+ uint32_t u32ChargingTimeout;
+
+ /* brief Units in milliseconds. */
+ /* */
+ /* This field configures the top-off period. This is the */
+ /* amount of time a battery will be held in the Topping Off */
+ /* state before it is declared fully charged. */
+ /* */
+ /* Note that the minimum time resolution of the battery */
+ /* charger is the configured period between calls to advance */
+ /* the state machine. If the given time-out cannot be */
+ /* expressed exactly, then the shortest expressible longer */
+ /* value will be used. */
+
+ uint32_t u32TopOffPeriod;
+
+ /* brief Units in milliseconds. */
+ /* */
+ /* This field configures the top-off period when the DCDC */
+ /* converters are enabled. To avoid topping off the LiIon */
+ /* battery too long and reducing it's long term capacity, */
+ /* This time should be kept failry short. */
+ /* */
+ /* Note that the minimum time resolution of the battery */
+ /* charger is the configured period between calls to advance */
+ /* the state machine. If the given time-out cannot be */
+ /* expressed exactly, then the shortest expressible longer */
+ /* value will be used. */
+ uint32_t u32DcdcModeTopOffPeriod;
+
+ /* brief Causes the battery charger to use an externally generated bias current */
+ /* */
+ /* If cleared, this causes the battery charger to use an */
+ /* externally generated bias current, which is expected to be */
+ /* quite precise. Otherwise, the battery charger will */
+ /* generate a lesser-quality bias current internally. */
+
+ uint8_t useInternalBias:1;
+
+ /* brief Indicates that the battery charger is to monitor the die temperature. */
+ /* */
+ /* If set, this field indicates that the battery charger is to */
+ /* monitor the die temperature. See below for fields that */
+ /* configure the details. */
+
+ uint8_t monitorDieTemp:1;
+
+ /* brief Indicates that the battery charger is to monitor the battery temperature. */
+ /* */
+ /* If set, this field indicates that the battery charger is to */
+ /* monitor the battery temperature. See below for fields that */
+ /* configure the details. */
+
+ uint8_t monitorBatteryTemp:1;
+
+ /* brief Units in degrees centigrade. */
+ /* */
+ /* Note that the hardware reports die temperature in ranges of */
+ /* 10 degree resolution minimum (see the data sheet for */
+ /* details). If the battery charger is monitoring the die */
+ /* temperature, and it rises to a range that includes a */
+ /* temperature greater than or equal to this value, the */
+ /* charging current will be clamped to the safe current. */
+
+ int8_t u8DieTempHigh;
+
+ /* brief Units in degrees centigrade. */
+ /* */
+ /* Note that the hardware reports die temperature in ranges of */
+ /* 10 degrees minimum (see the data sheet for details). If the */
+ /* charging current is being clamped because of a high die */
+ /* temperature, and it falls to a range that doesn't include a */
+ /* temperatures greater than or equal to this value, the */
+ /* charging current clamp will be released. */
+
+ int8_t u8DieTempLow;
+
+ /* brief Units in milliamps. */
+ /* */
+ /* If the battery charger detects a high die temperature, it */
+ /* will clamp the charging current at or below this value. */
+
+ uint16_t u16DieTempSafeCurrent;
+
+ /* brief If the battery charger is monitoring the battery */
+ /* temperature, this field indicates the LRADC channel to */
+ /* read. */
+
+ uint8_t u8BatteryTempChannel;
+
+ /* brief If the battery charger is monitoring the battery */
+ /* temperature, and it rises to a measurement greater than or */
+ /* equal to this value, the charging current will be clamped */
+ /* to the corresponding safe current. */
+
+ uint16_t u16BatteryTempHigh;
+
+ /* brief If the charging current is being clamped because of a high */
+ /* battery temperature, and it falls below this value, the */
+ /* charging current clamp will be released. */
+
+ uint16_t u16BatteryTempLow;
+
+ /* brief Units in milliamps. */
+ /* */
+ /* If the battery charger detects a high battery temperature, */
+ /* it will clamp the charging current at or below this value. */
+
+ uint16_t u16BatteryTempSafeCurrent;
+
+ /* brief Units in millivolts. */
+ /* */
+ /* In the WaitingToCharge state, if we are in DCDC */
+ /* operating modes, if the battery voltage measurement */
+ /* is below this value, we immediately proceed with charging. */
+ /* the low criteria for this value is that it must be high */
+ /* to not risk the battery voltage getting too low. The */
+ /* upper criteria is that you do not want the IR voltage */
+ /* drop under heavy loads to make you start charging too soon */
+ /* because the goal in DCDC operating mode is to not be constantly */
+ /* topping off the battery which can shorten its life */
+
+ uint16_t u16LowDcdcBatteryVoltage_mv;
+
+ uint32_t u32StateMachineNonChargingPeriod;
+} ddi_bc_Cfg_t;
+
+/* Status returned by Battery Charger functions. */
+
+typedef enum _ddi_bc_Status {
+ /* brief TBD */
+ DDI_BC_STATUS_SUCCESS = 0,
+ /* brief TBD */
+ DDI_BC_STATUS_HARDWARE_DISABLED,
+ /* brief TBD */
+ DDI_BC_STATUS_BAD_BATTERY_MODE,
+ /* brief TBD */
+ DDI_BC_STATUS_CLOCK_GATE_CLOSED,
+ /* brief TBD */
+ DDI_BC_STATUS_NOT_INITIALIZED,
+ /* brief TBD */
+ DDI_BC_STATUS_ALREADY_INITIALIZED,
+ /* brief TBD */
+ DDI_BC_STATUS_BROKEN,
+ /* brief TBD */
+ DDI_BC_STATUS_NOT_BROKEN,
+ /* brief TBD */
+ DDI_BC_STATUS_NOT_DISABLED,
+ /* brief TBD */
+ DDI_BC_STATUS_BAD_ARGUMENT,
+ /* brief TBD */
+ DDI_BC_STATUS_CFG_BAD_BATTERY_TEMP_CHANNEL,
+ /* brief TBD */
+ DDI_BC_STATUS_CFG_BAD_CHARGING_VOLTAGE,
+} ddi_bc_Status_t;
+
+
+/* BCM Event Codes */
+
+/* These are the codes that might be published to PMI Subscribers. */
+
+
+#define DDI_BC_EVENT_GROUP (11<<10)
+
+/* brief TBD */
+/* todo [PUBS] Add definition(s)... */
+typedef enum {
+ /* Use the error code group value to make events unique for the EOI */
+ /* brief TBD */
+ ddi_bc_MinEventCode = DDI_BC_EVENT_GROUP,
+ /* brief TBD */
+ ddi_bc_WaitingToChargeCode,
+ /* brief TBD */
+ ddi_bc_State_ConditioningCode,
+ /* brief TBD */
+ ddi_bc_State_Topping_OffCode,
+ /* brief TBD */
+ ddi_bc_State_BrokenCode,
+ /* brief TBD */
+ ddi_bc_SettingChargeCode,
+ /* brief TBD */
+ ddi_bc_RaisingDieTempAlarmCode,
+ /* brief TBD */
+ ddi_bc_DroppingDieTempAlarmCode,
+
+ /* brief TBD */
+ ddi_bc_MaxEventCode,
+ /* brief TBD */
+ ddi_bc_DcdcModeWaitingToChargeCode
+} ddi_bc_Event_t;
+
+
+/* Prototypes */
+
+
+
+/* brief Initialize the Battery Charger. */
+/* */
+/* fntype Function */
+/* */
+/* This function initializes the Battery Charger. */
+/* */
+/* param[in] pCfg A pointer to the new configuration. */
+/* */
+/* retval DDI_BC_STATUS_SUCCESS */
+/* If the operation succeeded. */
+/* retval DDI_BC_STATUS_ALREADY_INITIALIZED */
+/* If the Battery Charger is already initialized. */
+/* retval DDI_BC_STATUS_HARDWARE_DISABLED */
+/* If the Battery Charger hardware is disabled by a laser fuse. */
+/* retval DDI_BC_STATUS_BAD_BATTERY_MODE */
+/* If the power supply is set up for a non-rechargeable battery. */
+/* retval DDI_BC_STATUS_CLOCK_GATE_CLOSED */
+/* If the clock gate for the power supply registers is closed. */
+/* retval DDI_BC_STATUS_CFG_BAD_CHARGING_VOLTAGE */
+/* If the charging voltage is not either 4100 or 4200. */
+/* retval DDI_BC_STATUS_CFG_BAD_BATTERY_TEMP_CHANNEL */
+/* If the LRADC channel number for monitoring battery temperature */
+/* is bad. */
+/* */
+/* internal */
+/* see To view the function definition, see ddi_bc_init.c. */
+
+extern ddi_bc_Status_t ddi_bc_Init(ddi_bc_Cfg_t *pCfg);
+
+/* */
+/* brief Report the Battery Charger configuration. */
+/* */
+/* fntype Function */
+/* */
+/* This function reports the Battery Charger configuration. */
+/* */
+/* Note that, if the Battery Charger has not yet been initialized, the data */
+/* returned by this function is unknown. */
+/* */
+/* param[in,out] pCfg A pointer to a structure that will receive the data. */
+/* */
+/* internal */
+/* see To view the function definition, see ddi_bc_api.c. */
+
+extern void ddi_bc_QueryCfg(ddi_bc_Cfg_t *pCfg);
+
+/* */
+/* brief Shut down the Battery Charger. */
+/* */
+/* fntype Function */
+/* */
+/* This function immediately shuts down the Battery Charger hardware and */
+/* returns the state machine to the Uninitialized state. Use this function to */
+/* safely mummify the battery charger before retiring it from memory. */
+/* */
+/* internal */
+/* see To view the function definition, see ddi_bc_api.c. */
+
+extern void ddi_bc_ShutDown(void);
+
+/* */
+/* brief Advances the state machine. */
+/* */
+/* fntype Function */
+/* */
+/* This function advances the state machine. */
+/* */
+/* retval DDI_BC_STATUS_SUCCESS If all goes well */
+/* retval DDI_BC_STATUS_NOT_INITIALIZED If the Battery Charger is not yet */
+/* initialized. */
+/* retval DDI_BC_STATUS_BROKEN If the battery violated a time-out */
+/* and has been declared broken. */
+/* */
+/* internal */
+/* see To view the function definition, see ddi_bc_api.c. */
+
+extern ddi_bc_Status_t ddi_bc_StateMachine(void);
+
+/* */
+/* brief Get the Battery Charger's current state. */
+/* */
+/* fntype Function */
+/* */
+/* This function returns the current state. */
+/* */
+/* retval The current state. */
+/* */
+/* internal */
+/* see To view the function definition, see ddi_bc_api.c. */
+
+extern ddi_bc_State_t ddi_bc_GetState(void);
+
+/* */
+/* brief Disable the Battery Charger. */
+/* */
+/* fntype Function */
+/* */
+/* This function forces the Battery Charger into the Disabled state. */
+/* */
+/* retval DDI_BC_STATUS_SUCCESS If all goes well */
+/* retval DDI_BC_STATUS_NOT_INITIALIZED If the Battery Charger is not yet */
+/* initialized. */
+/* */
+/* internal */
+/* see To view the function definition, see ddi_bc_api.c. */
+
+extern ddi_bc_Status_t ddi_bc_SetDisable(void);
+
+/* */
+/* brief Enable the Battery Charger. */
+/* */
+/* fntype Function */
+/* */
+/* If the Battery Charger is in the Disabled state, this function moves it to */
+/* the Waiting to Charge state. */
+/* */
+/* retval DDI_BC_STATUS_SUCCESS If all goes well */
+/* retval DDI_BC_STATUS_NOT_INITIALIZED If the Battery Charger is not yet */
+/* initialized. */
+/* retval DDI_BC_STATUS_NOT_DISABLED If the Battery Charger is not */
+/* disabled. */
+/* */
+/* internal */
+/* see To view the function definition, see ddi_bc_api.c. */
+
+extern ddi_bc_Status_t ddi_bc_SetEnable(void);
+
+/* */
+/* brief Declare the battery to be broken. */
+/* */
+/* fntype Function */
+/* */
+/* This function forces the Battery Charger into the Broken state. */
+/* */
+/* retval DDI_BC_STATUS_SUCCESS If all goes well */
+/* retval DDI_BC_STATUS_NOT_INITIALIZED If the Battery Charger is not yet */
+/* initialized. */
+/* */
+/* internal */
+/* see To view the function definition, see ddi_bc_api.c. */
+
+extern ddi_bc_Status_t ddi_bc_SetBroken(void);
+
+/* */
+/* brief Declare the battery to be fixed. */
+/* */
+/* fntype Function */
+/* */
+/* If the Battery Charger is in the Broken state, this function moves it to */
+/* the Disabled state. */
+/* */
+/* retval DDI_BC_STATUS_SUCCESS If all goes well */
+/* retval DDI_BC_STATUS_NOT_INITIALIZED If the Battery Charger is not yet */
+/* initialized. */
+/* retval DDI_BC_STATUS_NOT_BROKEN If the Battery Charger is not broken. */
+/* */
+/* internal */
+/* see To view the function definition, see ddi_bc_api.c. */
+
+extern ddi_bc_Status_t ddi_bc_SetFixed(void);
+
+/* */
+/* brief Set the current limit. */
+/* */
+/* fntype Function */
+/* */
+/* This function applies a limit to the current that the Battery Charger can */
+/* draw. */
+/* */
+/* param[in] u16Limit The maximum current the Battery Charger can draw */
+/* (in mA). */
+/* */
+/* retval The expressible version of the limit. */
+/* */
+/* internal */
+/* see To view the function definition, see ddi_bc_api.c. */
+
+extern uint16_t ddi_bc_SetCurrentLimit(uint16_t u16Limit);
+
+
+/* */
+/* brief Report the current limit. */
+/* */
+/* fntype Function */
+/* */
+/* This function reports the limit to the current that the Battery Charger can */
+/* draw. */
+/* */
+/* retval The current limit. */
+/* */
+/* internal */
+/* see To view the function definition, see ddi_bc_api.c. */
+
+extern uint16_t ddi_bc_GetCurrentLimit(void);
+
+
+/* */
+/* brief Set the current threshold. */
+/* */
+/* fntype Function */
+/* */
+/* */
+/* param[in] u16Current Current threshold where charger deactivates (in mA). */
+/* */
+/* */
+
+extern uint16_t ddi_bc_SetCurrentThreshold(uint16_t u16Current);
+
+
+/* */
+/* brief Set the battery charger state machine period. */
+/* */
+/* fntype Function */
+/* */
+/* This function sets a new state machine period. The Period and Slope should */
+/* be coordinated to achieve the minimal ramp step current which will minimize */
+/* transients on the system. */
+/* */
+/* param[in] u32StateMachinePeriod (in milliseconds) */
+/* param[in] u16CurrentRampSlope (in mA/s) */
+/* */
+/* retval SUCCESS If all goes well */
+/* retval ERROR_DDI_BCM_NOT_INITIALIZED If the Battery Charger is not yet */
+/* initialized. */
+/* */
+
+extern ddi_bc_Status_t ddi_bc_SetNewPeriodAndSlope(uint32_t
+ u32StateMachinePeriod,
+ uint16_t
+ u16CurrentRampSlope);
+
+
+/* */
+/* brief Report the state machine period. */
+/* */
+/* fntype Function */
+/* */
+/* This function reports the battery charger period. */
+/* */
+/* retval The battery charger period (in milliseconds). */
+/* */
+
+extern uint32_t ddi_bc_GetStateMachinePeriod(void);
+
+
+/* */
+/* brief Report the current ramp slope. */
+/* */
+/* fntype Function */
+/* */
+/* This function reports the current ramp slope. */
+/* */
+/* retval The current ramp slope (in mA/s). */
+/* */
+
+extern uint32_t ddi_bc_GetCurrentRampSlope(void);
+
+
+/* */
+/* brief Report the time spent in the present state (milliseconds) */
+/* */
+/* fntype Function */
+/* */
+/* This function reports the time spent in the present charging state. Note that */
+/* for the states that actually charge the battery, this time does not include the */
+/* time spent under alarm conditions such as die termperature alarm or battery */
+/* temperature alarm. */
+/* */
+/* retval The time spent in the current state in milliseconds. */
+/* */
+
+uint32_t ddi_bc_GetStateTime(void);
+
+
+/* */
+/* brief Report the reason for being in the broken state */
+/* */
+/* fntype Function */
+/* */
+/* */
+/* retval ddi_bc_BrokenReason_t enumeration */
+/* */
+
+ddi_bc_BrokenReason_t ddi_bc_GetBrokenReason(void);
+
+
+/* */
+/* brief Restart the charge cycle */
+/* */
+/* fntype Function */
+/* */
+/* retval SUCCESS */
+/* */
+
+ddi_bc_Status_t ddi_bc_ForceChargingToStart(void);
+
+void fsl_enable_usb_plugindetect(void);
+
+int fsl_is_usb_plugged(void);
+
+/* End of file */
+
+#endif /* _DDI_BC_H */
+/* @} */