power: add driver for TI bq2429x battery charger. TODO: Untested. Does not have poll() support.
This commit is contained in:
parent
1be5f0a3fc
commit
cc1f7a63fa
@ -292,6 +292,25 @@ config BQ2425X
|
||||
---help---
|
||||
The BQ24250/BQ24251 are battery charger for lithium-ion batteries.
|
||||
|
||||
config BQ2429X
|
||||
bool "BQ2429X Battery charger support"
|
||||
default n
|
||||
select I2C
|
||||
select I2C_BQ2429X
|
||||
depends on BATTERY_CHARGER
|
||||
---help---
|
||||
The BQ24296/BQ24297/BQ24296M are battery charger for lithium-ion batteries.
|
||||
|
||||
if BQ2429X
|
||||
|
||||
config DEBUG_BQ2429X
|
||||
bool "BQ2429X Debug Features"
|
||||
default n
|
||||
---help---
|
||||
Enable BQ2429X battery management debug features.
|
||||
|
||||
endif # BQ2429X
|
||||
|
||||
config BATTERY_GAUGE
|
||||
bool "Battery Fuel Gauge support"
|
||||
default n
|
||||
@ -312,6 +331,10 @@ config I2C_BQ2425X
|
||||
bool
|
||||
default y if BQ2425X
|
||||
|
||||
config I2C_BQ2429X
|
||||
bool
|
||||
default y if BQ2429X
|
||||
|
||||
config I2C_MAX1704X
|
||||
bool
|
||||
default y if MAX1704X
|
||||
|
@ -80,6 +80,12 @@ ifeq ($(CONFIG_I2C_BQ2425X),y)
|
||||
CSRCS += bq2425x.c
|
||||
endif
|
||||
|
||||
# Add the BQ2429x I2C-based battery charger driver
|
||||
|
||||
ifeq ($(CONFIG_I2C_BQ2429X),y)
|
||||
CSRCS += bq2429x.c
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
# Include power support in the build
|
||||
|
@ -160,7 +160,7 @@ static int bat_charger_ioctl(FAR struct file *filep, int cmd,
|
||||
FAR struct battery_charger_dev_s *dev = inode->i_private;
|
||||
int ret;
|
||||
|
||||
/* Inforce mutually exclusive access to the battery driver */
|
||||
/* Enforce mutually exclusive access to the battery driver */
|
||||
|
||||
ret = sem_wait(&dev->batsem);
|
||||
if (ret < 0)
|
||||
@ -168,7 +168,7 @@ static int bat_charger_ioctl(FAR struct file *filep, int cmd,
|
||||
return -errno; /* Probably EINTR */
|
||||
}
|
||||
|
||||
/* Procss the IOCTL command */
|
||||
/* Process the IOCTL command */
|
||||
|
||||
ret = -EINVAL; /* Assume a bad argument */
|
||||
switch (cmd)
|
||||
@ -239,6 +239,16 @@ static int bat_charger_ioctl(FAR struct file *filep, int cmd,
|
||||
}
|
||||
break;
|
||||
|
||||
case BATIOC_OPERATE:
|
||||
{
|
||||
FAR int *ptr = (FAR int *)((uintptr_t)arg);
|
||||
if (ptr)
|
||||
{
|
||||
ret = dev->ops->operate(dev, (uintptr_t)arg);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
_err("ERROR: Unrecognized cmd: %d\n", cmd);
|
||||
ret = -ENOTTY;
|
||||
|
@ -134,6 +134,7 @@ static int bq2425x_online(struct battery_charger_dev_s *dev, bool *status);
|
||||
static int bq2425x_voltage(struct battery_charger_dev_s *dev, int value);
|
||||
static int bq2425x_current(struct battery_charger_dev_s *dev, int value);
|
||||
static int bq2425x_input_current(struct battery_charger_dev_s *dev, int value);
|
||||
static int bq2425x_operate(struct battery_charger_dev_s *dev, uintptr_t param);
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
@ -146,7 +147,8 @@ static const struct battery_charger_operations_s g_bq2425xops =
|
||||
bq2425x_online,
|
||||
bq2425x_voltage,
|
||||
bq2425x_current,
|
||||
bq2425x_input_current
|
||||
bq2425x_input_current,
|
||||
bq2425x_operate
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
@ -728,6 +730,19 @@ static int bq2425x_input_current(struct battery_charger_dev_s *dev, int value)
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: bq2425x_operate
|
||||
*
|
||||
* Description:
|
||||
* Do miscellaneous battery ioctl()
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int bq2425x_operate(struct battery_charger_dev_s *dev, uintptr_t param)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
1262
drivers/power/bq2429x.c
Normal file
1262
drivers/power/bq2429x.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -60,6 +60,7 @@
|
||||
*
|
||||
* CONFIG_I2C - I2C support *may* be needed
|
||||
* CONFIG_I2C_BQ2425X - The BQ2425x driver must be explicitly selected.
|
||||
* CONFIG_I2C_BQ2429X - The BQ2429x driver must be explicitly selected.
|
||||
*/
|
||||
|
||||
/* IOCTL Commands ***********************************************************/
|
||||
@ -84,6 +85,8 @@
|
||||
* Input value: An int defining the current value.
|
||||
* BATIOC_INPUT_CURRENT - Define the input current limit of power supply.
|
||||
* Input value: An int defining the input current limit value.
|
||||
* BATIOC_OPERATE - Perform miscellaneous, device-specific charger operation.
|
||||
* Input value: An uintptr_t that can hold a pointer to struct batio_operate_msg_s.
|
||||
*/
|
||||
|
||||
/* Special input values for BATIOC_INPUT_CURRENT that may optionally
|
||||
@ -151,6 +154,10 @@ struct battery_charger_operations_s
|
||||
/* Set the input current limit of power supply */
|
||||
|
||||
int (*input_current)(struct battery_charger_dev_s *dev, int value);
|
||||
|
||||
/* Do device specific operation */
|
||||
|
||||
int (*operate)(struct battery_charger_dev_s *dev, uintptr_t param);
|
||||
};
|
||||
|
||||
/* This structure defines the battery driver state structure */
|
||||
@ -207,11 +214,11 @@ int battery_charger_register(FAR const char *devpath,
|
||||
*
|
||||
* Description:
|
||||
* Initialize the BQ2425X battery driver and return an instance of the
|
||||
* lower_half interface that may be used with battery_charger_register();
|
||||
* lower-half interface that may be used with battery_charger_register().
|
||||
*
|
||||
* This driver requires:
|
||||
*
|
||||
* CONFIG_BATTERY_CHARGER - Upper half battery fuel gauge driver support
|
||||
* CONFIG_BATTERY_CHARGER - Upper half battery charger driver support
|
||||
* CONFIG_I2C - I2C support
|
||||
* CONFIG_I2C_BQ2425X - And the driver must be explictly selected.
|
||||
*
|
||||
@ -237,6 +244,55 @@ FAR struct battery_charger_dev_s *bq2425x_initialize(FAR struct i2c_master_s *i2
|
||||
int current);
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: bq2429x_initialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize the BQ2429X (BQ24series LiIon Charger with USB OTG boost 5V)
|
||||
* battery driver and return an instance of the lower-half interface that
|
||||
* may be used with battery_charger_register().
|
||||
*
|
||||
* This is for:
|
||||
* BQ24296M VQFN24
|
||||
* BQ24296 VQFN24
|
||||
* BQ24297
|
||||
* BQ24298
|
||||
* Possibly similar:
|
||||
* BQ24262
|
||||
* BQ24259
|
||||
* BQ24292I BQ24295 B
|
||||
* Possibly the following:
|
||||
* BQ24260/1/2 Vin-14V
|
||||
* BQ24190 Vin=17V
|
||||
*
|
||||
* This driver requires:
|
||||
*
|
||||
* CONFIG_BATTERY_CHARGER - Upper half battery charger driver support
|
||||
* CONFIG_I2C - I2C support
|
||||
* CONFIG_I2C_BQ2429X - And the driver must be explictly selected.
|
||||
*
|
||||
* Input Parameters:
|
||||
* i2c - An instance of the I2C interface to use to communicate with
|
||||
* the BQ2429X
|
||||
* addr - The I2C address of the BQ2429X (Better be 0x6B).
|
||||
* frequency - The I2C frequency
|
||||
* current - The input current our power-supply can offer to charger
|
||||
*
|
||||
* Returned Value:
|
||||
* A pointer to the initialized battery driver instance. A NULL pointer
|
||||
* is returned on a failure to initialize the BQ2429X lower half.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_I2C) && defined(CONFIG_I2C_BQ2429X)
|
||||
|
||||
struct i2c_master_s;
|
||||
FAR struct battery_charger_dev_s *bq2429x_initialize(FAR struct i2c_master_s *i2c,
|
||||
uint8_t addr,
|
||||
uint32_t frequency,
|
||||
int current);
|
||||
#endif
|
||||
|
||||
#undef EXTERN
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
* include/nuttx/power/battery_ioctl.h
|
||||
* NuttX Battery IOCTLs definition
|
||||
*
|
||||
* Copyright (C) 2015 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2015, 2017 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -60,5 +60,35 @@
|
||||
#define BATIOC_CURRENT _BATIOC(0x0005)
|
||||
#define BATIOC_INPUT_CURRENT _BATIOC(0x0006)
|
||||
#define BATIOC_CAPACITY _BATIOC(0x0007)
|
||||
#define BATIOC_OPERATE _BATIOC(0x0008)
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
struct batio_operate_msg_s
|
||||
{
|
||||
uint8_t operate_type; /* Really enum batio_operate_e */
|
||||
union
|
||||
{
|
||||
uint32_t u32;
|
||||
uint8_t u8[8];
|
||||
};
|
||||
};
|
||||
|
||||
#if defined(CONFIG_I2C_BQ2429X)
|
||||
enum batio_operate_e
|
||||
{
|
||||
BATIO_OPRTN_NOP = 0,
|
||||
BATIO_OPRTN_BOOST,
|
||||
BATIO_OPRTN_CHARGE,
|
||||
BATIO_OPRTN_EN_TERM,
|
||||
BATIO_OPRTN_HIZ,
|
||||
BATIO_OPRTN_SYSOFF,
|
||||
BATIO_OPRTN_RESET,
|
||||
BATIO_OPRTN_WDOG,
|
||||
BATIO_OPRTN_END
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* __INCLUDE_NUTTX_POWER_BATTERY_IOCTL_H */
|
||||
|
244
include/nuttx/power/bq2429x.h
Normal file
244
include/nuttx/power/bq2429x.h
Normal file
@ -0,0 +1,244 @@
|
||||
/****************************************************************************
|
||||
* drivers/power/bq2429x.h
|
||||
* Lower half driver for BQ2429X battery charger
|
||||
*
|
||||
* Copyright (C) 2017 Neil Hancock. All rights reserved.
|
||||
*
|
||||
* Copyright (C) 2017 Haltian Ltd. All rights reserved.
|
||||
* Author: Juha Niskanen <juha.niskanen@haltian.com>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __DRIVERS_POWER_BQ2429X_H
|
||||
#define __DRIVERS_POWER_BQ2429X_H
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Auxiliary Definitions */
|
||||
|
||||
#define BQ2429X_VOLTCHG_MIN 3504
|
||||
#define BQ2429X_VOLTCHG_MAX 4400
|
||||
|
||||
#define BQ2429X_CURRCHG_MIN 512
|
||||
#define BQ2429X_CURRCHG_MAX 3008
|
||||
|
||||
/* BQ2429X Register Definitions ********************************************/
|
||||
#define BQ2429X_REG00 0x00
|
||||
#define BQ2429X_REG01 0x01
|
||||
#define BQ2429X_REG02 0x02
|
||||
#define BQ2429X_REG03 0x03
|
||||
#define BQ2429X_REG04 0x04
|
||||
#define BQ2429X_REG05 0x05
|
||||
#define BQ2429X_REG06 0x06
|
||||
#define BQ2429X_REG07 0x07
|
||||
#define BQ2429X_REG08 0x08
|
||||
#define BQ2429X_REG09 0x09
|
||||
#define BQ2429X_REG0A 0x0a
|
||||
|
||||
/* REG00 Input Source Control Register */
|
||||
|
||||
/* For enabling Device Shutdown for shipping - EN_HIZ=1 until QON pressed*/
|
||||
#define BQ2429XR1_EN_HIZ (1 << 7) /* 0 Disable (default) 1 Enable HighZ on battery, powerdown */
|
||||
|
||||
/* Dynamic Power Management - Indicated in StatusReg DPM_STAT REG08[3]
|
||||
VINDPM - Input Voltage threshold (a drop below 5V) that triggers DPM
|
||||
INLIM - Input current threshold that tiggers DPM */
|
||||
|
||||
#define BQ2429XR0_VINDPM_SHIFT 3 /* VIN DPM Offset 5V? Range*/
|
||||
#define BQ2429XR0_VINDPM_MASK (0xf << BQ2429XR0_VINDPM_SHIFT)
|
||||
# define BQ2429XR0_VINDPM3_080mV (1 << BQ2429XR0_VINDPM_SHIFT)
|
||||
# define BQ2429XR0_VINDPM2_160mV (2 << BQ2429XR0_VINDPM_SHIFT)
|
||||
# define BQ2429XR0_VINDPM1_320mV (4 << BQ2429XR0_VINDPM_SHIFT)
|
||||
# define BQ2429XR0_VINDPM0_640mV (8 << BQ2429XR0_VINDPM_SHIFT)
|
||||
#define BQ2429XR0_INLIM_SHIFT 0 /* Input Current Limit - lower of I2C & ILIM */
|
||||
#define BQ2429XR0_INLIM_MASK (0x7 << BQ2429XR0_INLIM_SHIFT)
|
||||
# define BQ2429XR0_INLIM_0100mA (0x0 << BQ2429XR0_INLIM_SHIFT)
|
||||
# define BQ2429XR0_INLIM_0150mA (0x1 << BQ2429XR0_INLIM_SHIFT)
|
||||
# define BQ2429XR0_INLIM_0500mA (0x2 << BQ2429XR0_INLIM_SHIFT)
|
||||
# define BQ2429XR0_INLIM_0900mA (0x3 << BQ2429XR0_INLIM_SHIFT)
|
||||
# define BQ2429XR0_INLIM_1000mA (0x4 << BQ2429XR0_INLIM_SHIFT)
|
||||
# define BQ2429XR0_INLIM_1500mA (0x5 << BQ2429XR0_INLIM_SHIFT)
|
||||
# define BQ2429XR0_INLIM_2000mA (0x6 << BQ2429XR0_INLIM_SHIFT)
|
||||
# define BQ2429XR0_INLIM_3000mA (0x7 << BQ2429XR0_INLIM_SHIFT)
|
||||
|
||||
/* REG01 Power-On Configuration Register */
|
||||
|
||||
#define BQ2429XR1_REG_RESET (1 << 7) /* Write 1 to Reset all registers to default values */
|
||||
#define BQ2429XR1_DOG_RESET (1 << 6) /* Write 1 for watchdog timer reset */
|
||||
#define BQ2429XR1_OTG_CONFIG (1 << 5) /* =0 Disable (default) =1 Enable See description */
|
||||
#define BQ2429XR1_CHG_CONFIG (1 << 4) /* =0 Disable =1 Enable (default) See description */
|
||||
#define BQ2429XR1_SYS_MINV_SHIFT 1 /* Min Sys Voltage Limit. Offset 3.0V Range 3-3.7V */
|
||||
#define BQ2429XR1_SYS_MINV_MASK (7 << BQ2429XR1_SYS_MINV_SHIFT)
|
||||
#define BQ2429XR1_SYS_MINV0_0_1V (1 << BQ2429XR1_SYS_MINV_SHIFT)
|
||||
#define BQ2429XR1_SYS_MINV0_0_2V (2 << BQ2429XR1_SYS_MINV_SHIFT)
|
||||
#define BQ2429XR1_SYS_MINV0_0_4V (4 << BQ2429XR1_SYS_MINV_SHIFT)
|
||||
|
||||
#define BQ2429XR2_BOOST_LIM (1 << 0) /* 0=1A, 1=1.5A (default) Vout Boost Current Limit */
|
||||
|
||||
/* REG02 Charge Current Control */
|
||||
|
||||
#define BQ2429XR2_ICHG_SHIFT 2
|
||||
#define BQ2429XR2_ICHG_MASK (0x3f << BQ2429XR2_ICHG_SHIFT)
|
||||
|
||||
#define BQ2429XR2_BCOLD (1 << 1) /* Boost Mode temperature threshold config for boost disable 0=76% 1=79% */
|
||||
#define BQ2429XR2_FORCE_20PCT (1 << 0) /* Charge Configuration Threshold 0=Fast 1=less */
|
||||
|
||||
/* REG03 Pre-charge Termination Control Register */
|
||||
|
||||
#define BQ2429XR3_IPRECHG_SHIFT 4 /* Precharge I Limit. Offset 128mA Range 128-2048 mA */
|
||||
#define BQ2429XR3_IPRECHG_MASK (0xf << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_0128mA (0x00 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_0128mA (0x01 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_0256mA (0x02 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_0384mA (0x03 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_0512mA (0x04 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_0768mA (0x05 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_0896mA (0x06 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_1024mA (0x07 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_1152mA (0x10 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_1280mA (0x11 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_1408mA (0x12 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_1536mA (0x13 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_1664mA (0x14 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_1792mA (0x15 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_1920mA (0x16 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
#define BQ2429XR3_IPRECHG_2048mA (0x17 << BQ2429XR3_IPRECHG_SHIFT)
|
||||
|
||||
#define BQ2429XR3_ITERM_SHIFT 0 /* Offset 128mA Range 128-2048 mA (128-1024 mA in BQ24296M )*/
|
||||
#define BQ2429XR3_ITERM_MASK (0xf << BQ2429XR3_ITERM_SHIFT)
|
||||
#define BQ2429XR3_ITERM0_128mA (1 << BQ2429XR3_ITERM_SHIFT)
|
||||
#define BQ2429XR3_ITERM0_256mA (2 << BQ2429XR3_ITERM_SHIFT)
|
||||
#define BQ2429XR3_ITERM0_512mA (4 << BQ2429XR3_ITERM_SHIFT)
|
||||
#define BQ2429XR3_ITERM0_1024mA (8 << BQ2429XR3_ITERM_SHIFT) /* Reserved in BQ24296M */
|
||||
|
||||
/* REG04 Charge Voltage Control Register */
|
||||
#define BQ2429XR4_VREG_SHIFT 2 /* Offset 3.504V Range 3.504-4.400V Default 4.208V */
|
||||
#define BQ2429XR4_VREG_MASK (0x3f<< BQ2429XR4_VREG_SHIFT)
|
||||
|
||||
#define BQ2429XR4_BATLOWV (1 << 1) /* 0=2.8V 1=3.0V Pre-charge to fast Charge */
|
||||
#define BQ2429XR4_VRECHG (1 << 0) /* 0=100mV 1=300mV */
|
||||
|
||||
/* REG05 Charge Termination Timer Control Register */
|
||||
|
||||
#define BQ2429XR5_EN_TERM (1 << 7) /* 0=Disable 1=Enable(default) terminate of charge */
|
||||
#define BQ2429XR5_RESERVED6 (1 << 6)
|
||||
#define BQ2429XR5_WATCHDOG_SHIFT 4 /* Watchdog Timer Settings */
|
||||
#define BQ2429XR5_WATCHDOG_MASK (3 << BQ2429XR5_WATCHDOG_SHIFT)
|
||||
# define BQ2429XR5_WATCHDOG_DIS (0 << BQ2429XR5_WATCHDOG_SHIFT)
|
||||
# define BQ2429XR5_WATCHDOG_040Sec (1 << BQ2429XR5_WATCHDOG_SHIFT)
|
||||
# define BQ2429XR5_WATCHDOG_080Sec (2 << BQ2429XR5_WATCHDOG_SHIFT)
|
||||
# define BQ2429XR5_WATCHDOG_160Sec (3 << BQ2429XR5_WATCHDOG_SHIFT)
|
||||
|
||||
#define BQ2429XR5_EN_TIMER (1 << 3) /* 0=Disable 1=Enable(default) */
|
||||
/* Fast Charge Timer Settings */
|
||||
#define BQ2429XR5_CHG_TIMER_SHIFT 1
|
||||
#define BQ2429XR5_CHG_TIMER_MASK (3 << BQ2429XR5_CHG_TIMER_SHIFT)
|
||||
# define BQ2429XR5_CHG_TIMER_05hrs (0 << BQ2429XR5_CHG_TIMER_SHIFT)
|
||||
# define BQ2429XR5_CHG_TIMER_08hrs (1 << BQ2429XR5_CHG_TIMER_SHIFT)
|
||||
# define BQ2429XR5_CHG_TIMER_12hrs (2 << BQ2429XR5_CHG_TIMER_SHIFT)
|
||||
# define BQ2429XR5_CHG_TIMER_20hrs (3 << BQ2429XR5_CHG_TIMER_SHIFT)
|
||||
#define BQ2429XR5_RESERVED0 (1 << 0)
|
||||
|
||||
/* REG06 Boost Voltage/Thermal Regulation Control register */
|
||||
|
||||
#define BQ2429XR6_BOOSTV_SHIFT 4 /* Offset 4.55V Range 4.55-5.51A Dev 4.998V(0111) */
|
||||
#define BQ2429XR6_BOOSTV_MASK (0xf << BQ2429XR6_BOOSTV_SHIFT)
|
||||
# define BQ2429XR6_BOOSTV_064mV (1 << BQ2429XR6_BOOSTV_SHIFT)
|
||||
# define BQ2429XR6_BOOSTV_128mV (2 << BQ2429XR6_BOOSTV_SHIFT)
|
||||
# define BQ2429XR6_BOOSTV_256mV (4 << BQ2429XR6_BOOSTV_SHIFT)
|
||||
# define BQ2429XR6_BOOSTV_512mV (8 << BQ2429XR6_BOOSTV_SHIFT)
|
||||
#define BQ2429XR6_BHOT_SHIFT 2 /* Boost Mode temp threshold */
|
||||
#define BQ2429XR6_BHOT_MASK (3 << BQ2429XR6_BHOT_SHIFT)
|
||||
# define BQ2429XR6_BHOT_55C (0 << BQ2429XR6_BHOT_SHIFT)
|
||||
# define BQ2429XR6_BHOT_60C (1 << BQ2429XR6_BHOT_SHIFT)
|
||||
# define BQ2429XR6_BHOT_65C (2 << BQ2429XR6_BHOT_SHIFT)
|
||||
# define BQ2429XR6_BHOT_DISABLE (3 << BQ2429XR6_BHOT_SHIFT)
|
||||
#define BQ2429XR6_TREG_SHIFT 0 /* Thermal Regulation */
|
||||
#define BQ2429XR6_TREG_MASK (3 << BQ2429XR6_TREG_SHIFT)
|
||||
# define BQ2429XR6_TREG_060C (0 << BQ2429XR6_TREG_SHIFT)
|
||||
# define BQ2429XR6_TREG_080C (1 << BQ2429XR6_TREG_SHIFT)
|
||||
# define BQ2429XR6_TREG_100C (2 << BQ2429XR6_TREG_SHIFT)
|
||||
# define BQ2429XR6_TREG_110C (3 << BQ2429XR6_TREG_SHIFT)
|
||||
|
||||
/* REG07 Misc Operation Control Register */
|
||||
|
||||
#define BQ2429XR7_DPDM_EN (1 << 7) /* 1=Force Detection when VBUS power is present */
|
||||
#define BQ2429XR7_TMR2X_EN (1 << 6) /* 1=Safety Timer slowed by 2X during DPM/Thermal regulation */
|
||||
#define BQ2429XR7_BATFET_DISABLE (1 << 5) /* 1=BATFET (Q4) turn off */
|
||||
#define BQ2429XR7_RESERVED4 (1 << 4)
|
||||
#define BQ2429XR7_RESERVED3 (1 << 3)
|
||||
#define BQ2429XR7_RESERVED2 (1 << 2)
|
||||
#define BQ2429XR7_INT_MASK1 (1 << 1) /* =1 (default) INT on CHRG_FAULT */
|
||||
#define BQ2429XR7_INT_MASK0 (1 << 0) /* =1 (default) INT on BAT_FAULT */
|
||||
|
||||
/* REG08 Systems Status Register */
|
||||
|
||||
#define BQ2429XR8_VBUS_STAT_SHIFT 6 /* VBUS Connection Type */
|
||||
#define BQ2429XR8_VBUS_STAT_MASK (3 << BQ2429XR8_VBUS_STAT_SHIFT)
|
||||
# define BQ2429XR8_VBUS_STAT_UNKNOWN (0 << BQ2429XR8_VBUS_STAT_SHIFT)
|
||||
# define BQ2429XR8_VBUS_STAT_USBH (1 << BQ2429XR8_VBUS_STAT_SHIFT)
|
||||
# define BQ2429XR8_VBUS_STAT_ADAPTER (2 << BQ2429XR8_VBUS_STAT_SHIFT)
|
||||
# define BQ2429XR8_VBUS_STAT_OTG (3 << BQ2429XR8_VBUS_STAT_SHIFT)
|
||||
#define BQ2429XR8_CHRG_STAT_SHIFT 4 /* Charging Status */
|
||||
#define BQ2429XR8_CHRG_STAT_MASK (3 << BQ2429XR8_CHRG_STAT_SHIFT)
|
||||
# define BQ2429XR8_CHRG_STAT_NONE (0 << BQ2429XR8_CHRG_STAT_SHIFT)
|
||||
# define BQ2429XR8_CHRG_STAT_PRECHG (1 << BQ2429XR8_CHRG_STAT_SHIFT)
|
||||
# define BQ2429XR8_CHRG_STAT_FASTCHG (2 << BQ2429XR8_CHRG_STAT_SHIFT)
|
||||
# define BQ2429XR8_CHRG_STAT_DONE (3 << BQ2429XR8_CHRG_STAT_SHIFT)
|
||||
#define BQ2429XR8_DPM_STAT (1 << 3) /* 0= NotDPM 1=VINDPM or INDPM */
|
||||
#define BQ2429XR8_PG_STAT (1 << 2) /* 0= Not 1=Power Good */
|
||||
#define BQ2429XR8_THERM_STAT (1 << 1) /* 0= Normal 1=In Thermal Regulation */
|
||||
#define BQ2429XR8_VSYS_STAT (1 << 0) /* 0= Not 1=In VSYSMIN regulation BAT < VSYSMIN */
|
||||
|
||||
/* REG09 New Fault Register */
|
||||
|
||||
#define BQ2429XR9_WATCHDOG_FAULT (1 << 7) /* 1=Watchdog Timer expired */
|
||||
#define BQ2429XR9_OTG_FAULT (1 << 6) /* 1=Bus overloaded in OTG, or VBUS OVP or battery low */
|
||||
#define BQ2429XR9_CHRG_FAULT_SHIFT 4 /* Charging Status */
|
||||
#define BQ2429XR9_CHRG_FAULT_MASK (3 << BQ2429XR9_CHRG_FAULT_SHIFT)
|
||||
# define BQ2429XR9_CHRG_FAULT_NORMAL (0 << BQ2429XR9_CHRG_FAULT_SHIFT)
|
||||
# define BQ2429XR9_CHRG_FAULT_INPUT (1 << BQ2429XR9_CHRG_FAULT_SHIFT)
|
||||
# define BQ2429XR9_CHRG_FAULT_THERMAL (2 << BQ2429XR9_CHRG_FAULT_SHIFT)
|
||||
# define BQ2429XR9_CHRG_FAULT_TIMER (3 << BQ2429XR9_CHRG_FAULT_SHIFT)
|
||||
#define BQ2429XR9_BAT_FAULT (1 << 3) /* 1=Battery OVP */
|
||||
#define BQ2429XR9_RESERVED2 (1 << 2)
|
||||
|
||||
#define BQ2429XR9_NTC_FAULT1_COLD (1 << 1) /* Cold temperature */
|
||||
#define BQ2429XR9_NTC_FAULT2_HOT (1 << 0) /* Hot temperature */
|
||||
|
||||
/* REG0A Vendor Part Revision Info */
|
||||
|
||||
#define BQ24296_VENDOR_ID 0x20 /* BQ24296 */
|
||||
#define BQ24296M_VENDOR_ID 0x20 /* BQ24296M */
|
||||
#define BQ24297_VENDOR_ID 0x60 /* BQ24297 */
|
||||
|
||||
#endif /* __DRIVERS_POWER_BQ2429X_H */
|
Loading…
Reference in New Issue
Block a user