summaryrefslogtreecommitdiff
path: root/board/flapjack/board.c
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 /board/flapjack/board.c
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 'board/flapjack/board.c')
-rw-r--r--board/flapjack/board.c35
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;
+}
+