summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorTony Zou <zoutao@huaqin.corp-partner.google.com>2018-12-27 16:31:22 +0800
committerchrome-bot <chrome-bot@chromium.org>2019-04-22 12:28:15 -0700
commit673665032d4f7d0809367edf0d8deddbee24b726 (patch)
tree3dcb44a8df195b8b2673a8a433710dd8ab20f3fe /common
parentcaf50b250ef7cc08def300aaa6034af9de182139 (diff)
downloadchrome-ec-673665032d4f7d0809367edf0d8deddbee24b726.tar.gz
P9221: Add P9221 driver
This patch adds P9221 driver and enable it for Flapjack. The driver originates from https://android.googlesource.com/kernel /msm/+/android-msm-bluecross-4.9-pie-qpr1/drivers/power/supply/qcom /p9221_charger.c CQ-DEPEND=CL:1445133 CL:1551583 BRANCH=none BUG=b:126162615 TEST=Verify charging from PD and WPC as follows: 1. Charge with PD charger. Place DUT on WPC charger. -> PD charger continues to charge. 2. Unplug PD charger. -> WPC starts charging as GPP. 3. Plug PD charger. -> PD charger starts charging at 2A@9V TEST=Verify OTG and WPC functionality as follows: 1. Plug fan to USB port: -> Fan spins 2. Place DUT on WPC charger: -> WPC starts charging as GPP. Fan continues to spin. 3. Remove DUT from WPC charger: -> Fan continues to spin. 4. Do 1 and 2 then unplug USB fan: -> WPC starts charging. TEST=/sys/class/power_supply/CROS_USBPD_CHARGER0/usb_type is BrickID /sys/class/power_supply/sbs-12-000b/status is ok Change-Id: I5fbd0237cedd8095f98582c39973d432e733f2cd Signed-off-by: Tony Zou <zoutao@huaqin.corp-partner.google.com> Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1448193 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Diffstat (limited to 'common')
-rw-r--r--common/charge_manager.c23
-rw-r--r--common/usb_charger.c9
2 files changed, 31 insertions, 1 deletions
diff --git a/common/charge_manager.c b/common/charge_manager.c
index 804376f528..cdc3bc228b 100644
--- a/common/charge_manager.c
+++ b/common/charge_manager.c
@@ -42,8 +42,14 @@ test_mockable const int supplier_priority[] = {
[CHARGE_SUPPLIER_BC12_CDP] = 4,
[CHARGE_SUPPLIER_BC12_SDP] = 5,
[CHARGE_SUPPLIER_OTHER] = 6,
- [CHARGE_SUPPLIER_VBUS] = 7
+ [CHARGE_SUPPLIER_VBUS] = 7,
#endif
+#ifdef CONFIG_WIRELESS_CHARGER_P9221_R7
+ [CHARGE_SUPPLIER_WPC_BPP] = 6,
+ [CHARGE_SUPPLIER_WPC_EPP] = 6,
+ [CHARGE_SUPPLIER_WPC_GPP] = 6,
+#endif
+
};
BUILD_ASSERT(ARRAY_SIZE(supplier_priority) == CHARGE_SUPPLIER_COUNT);
@@ -333,13 +339,28 @@ static void charge_manager_fill_power_info(int port,
r->type = USB_CHG_TYPE_VBUS;
break;
#endif
+#ifdef CONFIG_WIRELESS_CHARGER_P9221_R7
+ /*
+ * Todo:need kernel add wpc device node in power_supply
+ * before that use USB_CHG_TYPE_PROPRIETARY to present WPC.
+ */
+ case CHARGE_SUPPLIER_WPC_BPP:
+ case CHARGE_SUPPLIER_WPC_EPP:
+ case CHARGE_SUPPLIER_WPC_GPP:
+ r->type = USB_CHG_TYPE_PROPRIETARY;
+ break;
+#endif
#if CONFIG_DEDICATED_CHARGE_PORT_COUNT > 0
case CHARGE_SUPPLIER_DEDICATED:
r->type = USB_CHG_TYPE_DEDICATED;
break;
#endif
default:
+#ifdef CONFIG_WIRELESS_CHARGER_P9221_R7
+ r->type = USB_CHG_TYPE_VBUS;
+#else
r->type = USB_CHG_TYPE_OTHER;
+#endif
}
r->meas.voltage_max = available_charge[sup][port].voltage;
diff --git a/common/usb_charger.c b/common/usb_charger.c
index 8b1c39647f..4d0d615a9b 100644
--- a/common/usb_charger.c
+++ b/common/usb_charger.c
@@ -97,6 +97,15 @@ void usb_charger_reset_charge(int port)
charge_manager_update_charge(CHARGE_SUPPLIER_DEDICATED,
port, NULL);
#endif
+#ifdef CONFIG_WIRELESS_CHARGER_P9221_R7
+ charge_manager_update_charge(CHARGE_SUPPLIER_WPC_BPP,
+ port, NULL);
+ charge_manager_update_charge(CHARGE_SUPPLIER_WPC_EPP,
+ port, NULL);
+ charge_manager_update_charge(CHARGE_SUPPLIER_WPC_GPP,
+ port, NULL);
+#endif
+
}
static void usb_charger_init(void)