diff --git a/drivers/power/battery_charger.c b/drivers/power/battery_charger.c index 1cd4565e890..f72b79513b5 100644 --- a/drivers/power/battery_charger.c +++ b/drivers/power/battery_charger.c @@ -171,6 +171,7 @@ static int bat_charger_open(FAR struct file *filep) nxsem_init(&priv->lock, 0, 1); nxsem_init(&priv->wait, 0, 0); nxsem_set_protocol(&priv->wait, SEM_PRIO_NONE); + priv->mask = dev->mask; list_add_tail(&dev->flist, &priv->node); nxsem_post(&dev->batsem); filep->f_priv = priv; @@ -472,6 +473,7 @@ int battery_charger_changed(FAR struct battery_charger_dev_s *dev, return ret; } + dev->mask |= mask; list_for_every_entry(&dev->flist, priv, struct battery_charger_priv_s, node) { diff --git a/drivers/power/battery_gauge.c b/drivers/power/battery_gauge.c index 149df01de57..2a8c38955ab 100644 --- a/drivers/power/battery_gauge.c +++ b/drivers/power/battery_gauge.c @@ -173,6 +173,7 @@ static int bat_gauge_open(FAR struct file *filep) nxsem_init(&priv->lock, 0, 1); nxsem_init(&priv->wait, 0, 0); nxsem_set_protocol(&priv->wait, SEM_PRIO_NONE); + priv->mask = dev->mask; list_add_tail(&dev->flist, &priv->node); nxsem_post(&dev->batsem); filep->f_priv = priv; @@ -440,6 +441,7 @@ int battery_gauge_changed(FAR struct battery_gauge_dev_s *dev, return ret; } + dev->mask |= mask; list_for_every_entry(&dev->flist, priv, struct battery_gauge_priv_s, node) { diff --git a/drivers/power/battery_monitor.c b/drivers/power/battery_monitor.c index d03dd41ffe2..49ea4a34a25 100644 --- a/drivers/power/battery_monitor.c +++ b/drivers/power/battery_monitor.c @@ -172,6 +172,7 @@ static int bat_monitor_open(FAR struct file *filep) nxsem_init(&priv->lock, 0, 1); nxsem_init(&priv->wait, 0, 0); nxsem_set_protocol(&priv->wait, SEM_PRIO_NONE); + priv->mask = dev->mask; list_add_tail(&dev->flist, &priv->node); nxsem_post(&dev->batsem); filep->f_priv = priv; @@ -515,6 +516,7 @@ int battery_monitor_changed(FAR struct battery_monitor_dev_s *dev, return ret; } + dev->mask |= mask; list_for_every_entry(&dev->flist, priv, struct battery_monitor_priv_s, node) { diff --git a/include/nuttx/power/battery_charger.h b/include/nuttx/power/battery_charger.h index ba948a8616e..90edad2d4df 100644 --- a/include/nuttx/power/battery_charger.h +++ b/include/nuttx/power/battery_charger.h @@ -144,6 +144,8 @@ struct battery_charger_dev_s struct list_node flist; + uint32_t mask; /* record drive support features */ + /* Data fields specific to the lower-half driver may follow */ }; diff --git a/include/nuttx/power/battery_gauge.h b/include/nuttx/power/battery_gauge.h index 29fea0ff94a..d5a093d8001 100644 --- a/include/nuttx/power/battery_gauge.h +++ b/include/nuttx/power/battery_gauge.h @@ -131,6 +131,8 @@ struct battery_gauge_dev_s struct list_node flist; + uint32_t mask; /* record drive support features */ + /* Data fields specific to the lower-half driver may follow */ }; diff --git a/include/nuttx/power/battery_monitor.h b/include/nuttx/power/battery_monitor.h index 0c1e2605d29..cc92e9b641c 100644 --- a/include/nuttx/power/battery_monitor.h +++ b/include/nuttx/power/battery_monitor.h @@ -305,6 +305,8 @@ struct battery_monitor_dev_s struct list_node flist; + uint32_t mask; /* record drive support features */ + /* Data fields specific to the lower-half driver may follow */ };