2020-07-21 12:02:25

by Qiwu Huang

[permalink] [raw]
Subject: [PATCH v7 0/4] add some power supply properties about wireless/wired charging

From: Qiwu Huang <[email protected]>

This patchset aims to provide power supply properties about wireless/wired charging.
"quick_charge_type" reports different types of quick charge based on the charging power;
"tx_adapter" shows" the type of wireless charging adapter;
"signal_strength" shows the coupling level between TX and RX;
"reverse_chg_mode" provides the interface of enabling/disabling wireless reverse charging.

Changes in v7
- Fix PATCH version error in 0/X email

Changes in v6
- Replace "phones" with "devices" suggested by GregKH
- Add permission statement for "reverse_chg_mode"
- Update description for "reverse_chg_mode" in ABI suggested by GregKH
- Update description for "PING phase" in ABI suggested by GregKH

Changes in v5
- Add details in 0/X email

Changes in v4
- Exclude the patch of "power: supply: supply battery soc with decimal form"
- Fix some typo

Changes in v3
- Add enumederated for quick charge type
- Add enumederated for tx adapter type
- Update the return type and description in ABI

Changes in v2
- modify to capital letters for "power_supply_attrs"
- Update the return type and description in ABI

Qiwu Huang (4):
power: supply: core: add quick charge type property
power: supply: core: add wireless charger adapter type property
power: supply: core: add wireless signal strength property
power: supply: core: property to control reverse charge

Documentation/ABI/testing/sysfs-class-power | 85 +++++++++++++++++++++
drivers/power/supply/power_supply_sysfs.c | 4 +
include/linux/power_supply.h | 31 ++++++++
3 files changed, 120 insertions(+)

--
2.27.0


2020-07-21 12:02:35

by Qiwu Huang

[permalink] [raw]
Subject: [PATCH v7 3/4] power: supply: core: add wireless signal strength property

From: Qiwu Huang <[email protected]>

reports wireless signal strength.
The value show degree of coupling between tx and rx.

Signed-off-by: Qiwu Huang <[email protected]>
---
Documentation/ABI/testing/sysfs-class-power | 22 +++++++++++++++++++++
drivers/power/supply/power_supply_sysfs.c | 1 +
include/linux/power_supply.h | 1 +
3 files changed, 24 insertions(+)

diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power
index 03ab449fae8a..4459b720feb2 100644
--- a/Documentation/ABI/testing/sysfs-class-power
+++ b/Documentation/ABI/testing/sysfs-class-power
@@ -757,3 +757,25 @@ Description:
13: ADAPTER_VOICE_BOX,
14: ADAPTER_PRIVATE_PD_50W.

+What: /sys/class/power_supply/<supply_name>/signal_strength
+Date: Jul 2020
+Contact: Fei Jiang <[email protected]>
+Description:
+ In PING phase, RX transmits a signal strength packet as the
+ first communication packet to instruct the base to keep power
+ signal on.The value reports wireless signal strength and show
+ degree of coupling.
+
+ The Qi Wireless Power Transfer System is published by the
+ Wireless Power Consortium.The ping phase is the necessary stage
+ for matching transmitter and receiver. In this phase,the Power
+ Transmitter executes a Digital Ping, and listens for a response.
+ If the Power Transmitter discovers a Power Receiver, the Power
+ Transmitter may extend the Digital Ping,i.e. maintain the Power
+ Signal at the level of the Digital Ping. This causes the system
+ to proceed to the identification & configuration phase. If the
+ Power Transmitter does not extend the Digital Ping, the system
+ shall revert to the selection phase.
+
+ Access: Read-Only
+ Valid values: 0 - 100
diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
index f2458e21d02b..e420a453095e 100644
--- a/drivers/power/supply/power_supply_sysfs.c
+++ b/drivers/power/supply/power_supply_sysfs.c
@@ -208,6 +208,7 @@ static struct power_supply_attr power_supply_attrs[] = {
POWER_SUPPLY_ATTR(SERIAL_NUMBER),
POWER_SUPPLY_ATTR(QUICK_CHARGE_TYPE),
POWER_SUPPLY_ATTR(TX_ADAPTER),
+ POWER_SUPPLY_ATTR(SIGNAL_STRENGTH),
};

static struct attribute *
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
index 0bbdec1630a4..346c6c9c0737 100644
--- a/include/linux/power_supply.h
+++ b/include/linux/power_supply.h
@@ -169,6 +169,7 @@ enum power_supply_property {
POWER_SUPPLY_PROP_SERIAL_NUMBER,
POWER_SUPPLY_PROP_QUICK_CHARGE_TYPE,
POWER_SUPPLY_PROP_TX_ADAPTER,
+ POWER_SUPPLY_PROP_SIGNAL_STRENGTH,
};

enum power_supply_type {
--
2.27.0

2020-07-21 12:02:39

by Qiwu Huang

[permalink] [raw]
Subject: [PATCH v7 4/4] power: supply: core: property to control reverse charge

From: Qiwu Huang <[email protected]>

Interface to control wireless reverse charge.

Signed-off-by: Qiwu Huang <[email protected]>
---
Documentation/ABI/testing/sysfs-class-power | 14 ++++++++++++++
drivers/power/supply/power_supply_sysfs.c | 1 +
include/linux/power_supply.h | 1 +
3 files changed, 16 insertions(+)

diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power
index 4459b720feb2..8840fdf483a7 100644
--- a/Documentation/ABI/testing/sysfs-class-power
+++ b/Documentation/ABI/testing/sysfs-class-power
@@ -779,3 +779,17 @@ Description:

Access: Read-Only
Valid values: 0 - 100
+
+What: /sys/class/power_supply/<supply_name>/reverse_chg_mode
+Date: Jul 2020
+Contact: Fei Jiang <[email protected]>
+Description:
+ Some devices support wireless reverse charge function which
+ charge other devices.The property provider interface to
+ enable/disable wireless reverse charge.If enabled, start TX
+ mode and detect RX. Disabled when timeout or manual setting.
+
+ Access: Read, Write
+ Valid values:
+ - 1: enabled
+ - 0: disabled
diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
index e420a453095e..81916b6b6ccf 100644
--- a/drivers/power/supply/power_supply_sysfs.c
+++ b/drivers/power/supply/power_supply_sysfs.c
@@ -209,6 +209,7 @@ static struct power_supply_attr power_supply_attrs[] = {
POWER_SUPPLY_ATTR(QUICK_CHARGE_TYPE),
POWER_SUPPLY_ATTR(TX_ADAPTER),
POWER_SUPPLY_ATTR(SIGNAL_STRENGTH),
+ POWER_SUPPLY_ATTR(REVERSE_CHG_MODE),
};

static struct attribute *
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
index 346c6c9c0737..a87ae1fff8d1 100644
--- a/include/linux/power_supply.h
+++ b/include/linux/power_supply.h
@@ -170,6 +170,7 @@ enum power_supply_property {
POWER_SUPPLY_PROP_QUICK_CHARGE_TYPE,
POWER_SUPPLY_PROP_TX_ADAPTER,
POWER_SUPPLY_PROP_SIGNAL_STRENGTH,
+ POWER_SUPPLY_PROP_REVERSE_CHG_MODE,
};

enum power_supply_type {
--
2.27.0

2020-07-21 12:02:47

by Qiwu Huang

[permalink] [raw]
Subject: [PATCH v7 2/4] power: supply: core: add wireless charger adapter type property

From: Qiwu Huang <[email protected]>

Reports what type of wireless adapter connection is
currently active for the supply.
for example it can show if ADAPTER_PD capable source is attached.

Signed-off-by: Qiwu Huang <[email protected]>
---
Documentation/ABI/testing/sysfs-class-power | 28 +++++++++++++++++++++
drivers/power/supply/power_supply_sysfs.c | 1 +
include/linux/power_supply.h | 19 ++++++++++++++
3 files changed, 48 insertions(+)

diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power
index dd3773dcf16a..03ab449fae8a 100644
--- a/Documentation/ABI/testing/sysfs-class-power
+++ b/Documentation/ABI/testing/sysfs-class-power
@@ -729,3 +729,31 @@ Contact: Fei Jiang <[email protected]>
3: QUICK_CHARGE_TURBE,
4: QUICK_CHARGE_SUPER.

+===== Wireless Charger Properties =====
+What: /sys/class/power_supply/<supply_name>/tx_adapter
+Date: Jul 2020
+Contact: Fei Jiang <[email protected]>
+Description:
+ Reports the type of wireless adapter connection is currently active for
+ the supply, for example it can show if ADAPTER_PD capable source
+ is attached. Expect common wireless adapter type, also increase by
+ some vendor private adapter type(ex. ADAPTER_PD_40W).
+
+ Access: Read-Only
+ Valid values:
+ 0: ADAPTER_NONE,
+ 1: ADAPTER_SDP,
+ 2: ADAPTER_DCP,
+ 3: ADAPTER_CDP,
+ 4: ADAPTER_OCP,
+ 5: ADAPTER_QC2,
+ 6: ADAPTER_QC3,
+ 7: ADAPTER_PD,
+ 8: ADAPTER_AUTH_FAILED,
+ 9: ADAPTER_PRIVATE_QC3,
+ 10: ADAPTER_PRIVATE_PD,
+ 11: ADAPTER_CAR_POWER,
+ 12: ADAPTER_PRIVATE_PD_40W,
+ 13: ADAPTER_VOICE_BOX,
+ 14: ADAPTER_PRIVATE_PD_50W.
+
diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
index 9554d7907373..f2458e21d02b 100644
--- a/drivers/power/supply/power_supply_sysfs.c
+++ b/drivers/power/supply/power_supply_sysfs.c
@@ -207,6 +207,7 @@ static struct power_supply_attr power_supply_attrs[] = {
POWER_SUPPLY_ATTR(MANUFACTURER),
POWER_SUPPLY_ATTR(SERIAL_NUMBER),
POWER_SUPPLY_ATTR(QUICK_CHARGE_TYPE),
+ POWER_SUPPLY_ATTR(TX_ADAPTER),
};

static struct attribute *
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
index f35c661a2544..0bbdec1630a4 100644
--- a/include/linux/power_supply.h
+++ b/include/linux/power_supply.h
@@ -168,6 +168,7 @@ enum power_supply_property {
POWER_SUPPLY_PROP_MANUFACTURER,
POWER_SUPPLY_PROP_SERIAL_NUMBER,
POWER_SUPPLY_PROP_QUICK_CHARGE_TYPE,
+ POWER_SUPPLY_PROP_TX_ADAPTER,
};

enum power_supply_type {
@@ -207,6 +208,24 @@ enum power_supply_quick_charge_type {
QUICK_CHARGE_MAX,
};

+enum power_supply_tx_adapter_type {
+ ADAPTER_NONE = 0, /* Nothing Attached */
+ ADAPTER_SDP, /* Standard Downstream Port */
+ ADAPTER_CDP, /* Charging Downstream Port */
+ ADAPTER_DCP, /* Dedicated Charging Port */
+ ADAPTER_OCP, /* Other Charging Port */
+ ADAPTER_QC2, /* Qualcomm Charge 2.0 */
+ ADAPTER_QC3, /* Qualcomm Charge 3.0 */
+ ADAPTER_PD, /* Power Delivery Port */
+ ADAPTER_AUTH_FAILED, /* Authenticated Failed Adapter */
+ ADAPTER_PRIVATE_QC3, /* Qualcomm Charge 3.0 with Private Protocol */
+ ADAPTER_PRIVATE_PD, /* PD Adapter with Private Protocol */
+ ADAPTER_CAR_POWER, /* Wireless Car Charger */
+ ADAPTER_PRIVATE_PD_40W, /* 40W PD Adapter with Private Protocol */
+ ADAPTER_VOICE_BOX, /* Voice Box which Support Wireless Charger */
+ ADAPTER_PRIVATE_PD_50W, /* 50W PD Adapter with Private Protocol */
+};
+
enum power_supply_notifier_events {
PSY_EVENT_PROP_CHANGED,
};
--
2.27.0

2020-07-21 12:03:15

by Qiwu Huang

[permalink] [raw]
Subject: [PATCH v7 1/4] power: supply: core: add quick charge type property

From: Qiwu Huang <[email protected]>

Reports the kind of quick charge type based on
different adapter power.

Signed-off-by: Qiwu Huang <[email protected]>
---
Documentation/ABI/testing/sysfs-class-power | 21 +++++++++++++++++++++
drivers/power/supply/power_supply_sysfs.c | 1 +
include/linux/power_supply.h | 10 ++++++++++
3 files changed, 32 insertions(+)

diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power
index 216d61a22f1e..dd3773dcf16a 100644
--- a/Documentation/ABI/testing/sysfs-class-power
+++ b/Documentation/ABI/testing/sysfs-class-power
@@ -708,3 +708,24 @@ Description:

Access: Read
Valid values: 1-31
+
+What: /sys/class/power_supply/<supply_name>/quick_charge_type
+Date: Jul 2020
+Contact: Fei Jiang <[email protected]>
+ Description:
+ Reports the kind of quick charge type based on different adapter power.
+ Different quick charge type represent different charging power.
+ QUICK_CHARGE_NORMAL : Charging Power <= 10W
+ QUICK_CHARGE_FAST : 10W < Charging Power <= 20W
+ QUICK_CHARGE_FLASH : 20W < Charging Power <= 30W
+ QUICK_CHARGE_TURBE : 30W < Charging Power <= 50W
+ QUICK_CHARGE_SUPER : Charging Power > 50W
+
+ Access: Read-Only
+ Valid values:
+ 0: QUICK_CHARGE_NORMAL,
+ 1: QUICK_CHARGE_FAST,
+ 2: QUICK_CHARGE_FLASH,
+ 3: QUICK_CHARGE_TURBE,
+ 4: QUICK_CHARGE_SUPER.
+
diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
index bc79560229b5..9554d7907373 100644
--- a/drivers/power/supply/power_supply_sysfs.c
+++ b/drivers/power/supply/power_supply_sysfs.c
@@ -206,6 +206,7 @@ static struct power_supply_attr power_supply_attrs[] = {
POWER_SUPPLY_ATTR(MODEL_NAME),
POWER_SUPPLY_ATTR(MANUFACTURER),
POWER_SUPPLY_ATTR(SERIAL_NUMBER),
+ POWER_SUPPLY_ATTR(QUICK_CHARGE_TYPE),
};

static struct attribute *
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
index ac1345a48ad0..f35c661a2544 100644
--- a/include/linux/power_supply.h
+++ b/include/linux/power_supply.h
@@ -167,6 +167,7 @@ enum power_supply_property {
POWER_SUPPLY_PROP_MODEL_NAME,
POWER_SUPPLY_PROP_MANUFACTURER,
POWER_SUPPLY_PROP_SERIAL_NUMBER,
+ POWER_SUPPLY_PROP_QUICK_CHARGE_TYPE,
};

enum power_supply_type {
@@ -197,6 +198,15 @@ enum power_supply_usb_type {
POWER_SUPPLY_USB_TYPE_APPLE_BRICK_ID, /* Apple Charging Method */
};

+enum power_supply_quick_charge_type {
+ QUICK_CHARGE_NORMAL = 0, /* Charging Power <= 10W */
+ QUICK_CHARGE_FAST, /* 10W < Charging Power <= 20W */
+ QUICK_CHARGE_FLASH, /* 20W < Charging Power <= 30W */
+ QUICK_CHARGE_TURBE, /* 30W < Charging Power <= 50W */
+ QUICK_CHARGE_SUPER, /* Charging Power > 50W */
+ QUICK_CHARGE_MAX,
+};
+
enum power_supply_notifier_events {
PSY_EVENT_PROP_CHANGED,
};
--
2.27.0