From 4ef7cf068bb7a75d5d93e4d1acf4917a284c3d4f Mon Sep 17 00:00:00 2001 From: Jiuzhu Dong Date: Thu, 21 Jul 2022 14:48:29 +0000 Subject: [PATCH] driver/power: add charge protocol get Signed-off-by: Jiuzhu Dong --- drivers/power/battery_charger.c | 10 ++++++++++ include/nuttx/power/battery_charger.h | 6 +++++- include/nuttx/power/battery_ioctl.h | 9 +++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/drivers/power/battery_charger.c b/drivers/power/battery_charger.c index a4965a5527..1cd4565e89 100644 --- a/drivers/power/battery_charger.c +++ b/drivers/power/battery_charger.c @@ -388,6 +388,16 @@ static int bat_charger_ioctl(FAR struct file *filep, int cmd, } break; + case BATIOC_GET_PROTOCOL: + { + FAR int *ptr = (FAR int *)(uintptr_t)arg; + if (ptr) + { + ret = dev->ops->get_protocol(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 eee63486ca..ba948a8616 100644 --- a/include/nuttx/power/battery_charger.h +++ b/include/nuttx/power/battery_charger.h @@ -125,7 +125,11 @@ struct battery_charger_operations_s /* Get the actual output voltage for charging */ - int (*get_voltage)(struct battery_charger_dev_s *dev, int *value); + int (*get_voltage)(struct battery_charger_dev_s *dev, FAR int *value); + + /* Get charge protocol */ + + int (*get_protocol)(struct battery_charger_dev_s *dev, FAR 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 90be4614e6..d7f8abddad 100644 --- a/include/nuttx/power/battery_ioctl.h +++ b/include/nuttx/power/battery_ioctl.h @@ -56,6 +56,7 @@ #define BATIOC_COULOMBS _BATIOC(0x0010) #define BATIOC_CHIPID _BATIOC(0x0011) #define BATIOC_GET_VOLTAGE _BATIOC(0x0012) +#define BATIOC_GET_PROTOCOL _BATIOC(0x0013) /* Special input values for BATIOC_INPUT_CURRENT that may optionally * be supported by lower-half driver: @@ -110,6 +111,14 @@ enum battery_health_e BATTERY_HEALTH_DISCONNECTED /* Battery is not connected */ }; +/* battery charge protocol type */ + +enum battery_protocol_e +{ + BATTERY_PROTOCOL_QC3P0 = 1 << 0, /* Battery charge protocol of adapter is QC 3.0 */ + BATTERY_PROTOCOL_TX_XIAOMI = 1 << 1, /* Battery charge protocol of TX is xiaomi standard */ +}; + /* Battery operation message */ struct batio_operate_msg_s