diff options
author | Tony Zou <zoutao@huaqin.corp-partner.google.com> | 2018-12-27 16:31:22 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-04-22 12:28:15 -0700 |
commit | 673665032d4f7d0809367edf0d8deddbee24b726 (patch) | |
tree | 3dcb44a8df195b8b2673a8a433710dd8ab20f3fe /common | |
parent | caf50b250ef7cc08def300aaa6034af9de182139 (diff) | |
download | chrome-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.c | 23 | ||||
-rw-r--r-- | common/usb_charger.c | 9 |
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) |