You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.6 KiB
Diff
50 lines
1.6 KiB
Diff
From 8eaa50485af15a4e1cc0c7c04f5ce3916e712ae1 Mon Sep 17 00:00:00 2001
|
|
From: Peter Chen <peter.chen@nxp.com>
|
|
Date: Wed, 6 Nov 2019 17:24:29 +0800
|
|
Subject: [PATCH] usb: phy: show USB charger type for user
|
|
|
|
Current USB charger framework only shows charger state for user, but the
|
|
user may also need charger type for further use, add support for it.
|
|
|
|
Signed-off-by: Peter Chen <peter.chen@nxp.com>
|
|
---
|
|
drivers/usb/phy/phy.c | 13 ++++++++++++-
|
|
1 file changed, 12 insertions(+), 1 deletion(-)
|
|
|
|
--- a/drivers/usb/phy/phy.c
|
|
+++ b/drivers/usb/phy/phy.c
|
|
@@ -34,6 +34,14 @@ struct phy_devm {
|
|
struct notifier_block *nb;
|
|
};
|
|
|
|
+static const char *const usb_chger_type[] = {
|
|
+ [UNKNOWN_TYPE] = "USB_CHARGER_UNKNOWN_TYPE",
|
|
+ [SDP_TYPE] = "USB_CHARGER_SDP_TYPE",
|
|
+ [CDP_TYPE] = "USB_CHARGER_CDP_TYPE",
|
|
+ [DCP_TYPE] = "USB_CHARGER_DCP_TYPE",
|
|
+ [ACA_TYPE] = "USB_CHARGER_ACA_TYPE",
|
|
+};
|
|
+
|
|
static struct usb_phy *__usb_find_phy(struct list_head *list,
|
|
enum usb_phy_type type)
|
|
{
|
|
@@ -98,7 +106,8 @@ static void usb_phy_notify_charger_work(
|
|
{
|
|
struct usb_phy *usb_phy = container_of(work, struct usb_phy, chg_work);
|
|
char uchger_state[50] = { 0 };
|
|
- char *envp[] = { uchger_state, NULL };
|
|
+ char uchger_type[50] = { 0 };
|
|
+ char *envp[] = { uchger_state, uchger_type, NULL };
|
|
unsigned int min, max;
|
|
|
|
switch (usb_phy->chg_state) {
|
|
@@ -122,6 +131,8 @@ static void usb_phy_notify_charger_work(
|
|
return;
|
|
}
|
|
|
|
+ snprintf(uchger_type, ARRAY_SIZE(uchger_type),
|
|
+ "USB_CHARGER_TYPE=%s", usb_chger_type[usb_phy->chg_type]);
|
|
kobject_uevent_env(&usb_phy->dev->kobj, KOBJ_CHANGE, envp);
|
|
}
|
|
|