diff --git a/drivers/power/battery_charger.c b/drivers/power/battery_charger.c index 173176ae42..35e883a4f0 100644 --- a/drivers/power/battery_charger.c +++ b/drivers/power/battery_charger.c @@ -360,6 +360,16 @@ static int bat_charger_ioctl(FAR struct file *filep, int cmd, } break; + case BATIOC_CHIPID: + { + FAR unsigned int *ptr = (FAR unsigned int *)((uintptr_t)arg); + if (ptr) + { + ret = dev->ops->chipid(dev, ptr); + } + } + break; + default: _err("ERROR: Unrecognized cmd: %d\n", cmd); ret = -ENOTTY; diff --git a/drivers/power/battery_gauge.c b/drivers/power/battery_gauge.c index 2f6ea839b4..69377ae1b3 100644 --- a/drivers/power/battery_gauge.c +++ b/drivers/power/battery_gauge.c @@ -348,6 +348,16 @@ static int bat_gauge_ioctl(FAR struct file *filep, } break; + case BATIOC_CHIPID: + { + FAR unsigned int *ptr = (FAR unsigned int *)((uintptr_t)arg); + if (ptr) + { + ret = dev->ops->chipid(dev, ptr); + } + } + break; + default: _err("ERROR: Unrecognized cmd: %d\n", cmd); ret = -ENOTTY; diff --git a/drivers/power/battery_monitor.c b/drivers/power/battery_monitor.c index a4cacad70a..31eec41ac6 100644 --- a/drivers/power/battery_monitor.c +++ b/drivers/power/battery_monitor.c @@ -427,6 +427,16 @@ static int bat_monitor_ioctl(FAR struct file *filep, int cmd, } break; + case BATIOC_CHIPID: + { + FAR unsigned int *ptr = (FAR unsigned int *)((uintptr_t)arg); + if (ptr) + { + ret = dev->ops->chipid(dev, ptr); + } + } + break; + default: _err("ERROR: Unrecognized cmd: %d\n", cmd); ret = -ENOTTY; diff --git a/include/nuttx/power/battery_charger.h b/include/nuttx/power/battery_charger.h index 5ad01c1253..6829925d47 100644 --- a/include/nuttx/power/battery_charger.h +++ b/include/nuttx/power/battery_charger.h @@ -78,6 +78,8 @@ * BATIOC_OPERATE - Perform miscellaneous, device-specific charger operation. * Input value: An uintptr_t that can hold a pointer to struct * batio_operate_msg_s. + * BATIOC_CHIPID -Get the charger chip id. + * Input value: A pointer to type unsigned int. */ /**************************************************************************** @@ -116,6 +118,10 @@ struct battery_charger_operations_s /* Do device specific operation */ int (*operate)(struct battery_charger_dev_s *dev, uintptr_t param); + + /* Get chip id */ + + int (*chipid)(struct battery_charger_dev_s *dev, unsigned int *value); }; /* This structure defines the battery driver state structure */ diff --git a/include/nuttx/power/battery_gauge.h b/include/nuttx/power/battery_gauge.h index 5fa2fd489e..29fea0ff94 100644 --- a/include/nuttx/power/battery_gauge.h +++ b/include/nuttx/power/battery_gauge.h @@ -73,6 +73,13 @@ * (SoC). The returned value is a fixed precision percentage of the * batteries full capacity. * Input value: A pointer to type b16_t. + * BATIOC_CURRENT - Return the current of the battery . The returned value + * is a fixed precision number in units of ma. + * Input value: A pointer to type b16_t. + * BATIOC_TEMPERATURE- Return the current temperature of the battery. + * Input value: A pointer to type b8_t. + * BATIOC_CHIPID- Return the chip id of the gauge. + * Input value: A pointer to type unsigned int. */ /**************************************************************************** @@ -107,6 +114,10 @@ struct battery_gauge_operations_s /* Battery temp */ int (*temp)(struct battery_gauge_dev_s *dev, b8_t *value); + + /* Battery chipid */ + + int (*chipid)(struct battery_gauge_dev_s *dev, unsigned int *value); }; /* This structure defines the battery driver state structure */ diff --git a/include/nuttx/power/battery_ioctl.h b/include/nuttx/power/battery_ioctl.h index df08456e59..6aa9b7d9ae 100644 --- a/include/nuttx/power/battery_ioctl.h +++ b/include/nuttx/power/battery_ioctl.h @@ -54,6 +54,7 @@ #define BATIOC_CHGDSG _BATIOC(0x000E) #define BATIOC_CLEARFAULTS _BATIOC(0x000F) #define BATIOC_COULOMBS _BATIOC(0x0010) +#define BATIOC_CHIPID _BATIOC(0x0011) /* Special input values for BATIOC_INPUT_CURRENT that may optionally * be supported by lower-half driver: diff --git a/include/nuttx/power/battery_monitor.h b/include/nuttx/power/battery_monitor.h index 6f14740399..0c1e2605d2 100644 --- a/include/nuttx/power/battery_monitor.h +++ b/include/nuttx/power/battery_monitor.h @@ -100,6 +100,8 @@ * BATIOC_OPERATE - Perform miscellaneous, device-specific charger operation. * Input value: An uintptr_t that can hold a pointer to struct * batio_operate_msg_s. + * BATIOC_CHIPID -Get the chip id. + * Input value: A pointer to type unsigned int. */ /**************************************************************************** @@ -286,6 +288,10 @@ struct battery_monitor_operations_s /* Do device specific operation */ int (*operate)(struct battery_monitor_dev_s *dev, uintptr_t param); + + /* Get chip id */ + + int (*chipid)(struct battery_charger_dev_s *dev, unsigned int *value); }; /* This structure defines the battery driver state structure */