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 /board/flapjack/board.c | |
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 'board/flapjack/board.c')
-rw-r--r-- | board/flapjack/board.c | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/board/flapjack/board.c b/board/flapjack/board.c index f05616f853..dd0f1bebe3 100644 --- a/board/flapjack/board.c +++ b/board/flapjack/board.c @@ -46,6 +46,8 @@ #include "usb_mux.h" #include "usb_pd_tcpm.h" #include "util.h" +#include "driver/wpc/p9221.h" + #define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args) #define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args) @@ -273,8 +275,13 @@ int board_set_active_charge_port(int charge_port) switch (charge_port) { case 0: - /* Don't charge from a source port */ + /* Don't charge from a source port except wireless charging*/ +#ifdef CONFIG_WIRELESS_CHARGER_P9221_R7 + if (board_vbus_source_enabled(charge_port) + && !wpc_chip_is_online()) +#else if (board_vbus_source_enabled(charge_port)) +#endif return -1; break; case CHARGE_PORT_NONE: @@ -302,14 +309,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, int extpower_is_present(void) { - /* - * The charger will indicate VBUS presence if we're sourcing 5V, - * so exclude such ports. - */ - if (board_vbus_source_enabled(0)) - return 0; - else - return tcpm_get_vbus_level(0); + return tcpm_get_vbus_level(0); } int pd_snk_is_vbus_provided(int port) @@ -355,6 +355,10 @@ static void board_init(void) gpio_enable_interrupt(GPIO_CHARGER_INT_ODL); #ifdef SECTION_IS_RW +#ifdef CONFIG_WIRELESS_CHARGER_P9221_R7 + /* Enable Wireless charger interrupts */ + gpio_enable_interrupt(GPIO_P9221_INT_ODL); +#endif /* Enable interrupts from BMI160 sensor. */ gpio_enable_interrupt(GPIO_ACCEL_INT_ODL); @@ -495,3 +499,16 @@ int board_allow_i2c_passthru(int port) void usb_charger_set_switches(int port, enum usb_switch setting) { } + +int board_get_fod(uint8_t **fod) +{ + *fod = NULL; + return 0; +} + +int board_get_epp_fod(uint8_t **fod) +{ + *fod = NULL; + return 0; +} + |