summaryrefslogtreecommitdiff
path: root/board/malefor
diff options
context:
space:
mode:
authorxiong.huang <xiong.huang@bitland.corp-partner.google.com>2020-07-16 16:16:40 +0800
committerCommit Bot <commit-bot@chromium.org>2020-07-21 04:55:58 +0000
commitc0b9f2e780f45f2d18a1b9acfd00095dbc0693fa (patch)
treed3f8a0849f7a797035ae9e0a4c9343d0b735e2b4 /board/malefor
parent60e32f992378026af9586492ab6d53d727d47aa3 (diff)
downloadchrome-ec-c0b9f2e780f45f2d18a1b9acfd00095dbc0693fa.tar.gz
malefor: reset PD chip
Fill API board_reset_pd_mcu() for resetting DB PD chip. BUG=b:159024035 BRANCH=none TEST=make buildall -j Signed-off-by: xiong.huang <xiong.huang@bitland.corp-partner.google.com> Change-Id: Id93777bbbcb5d2ced19e3444d5c32fc3c18b21bb Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2301558 Reviewed-by: Keith Short <keithshort@chromium.org>
Diffstat (limited to 'board/malefor')
-rw-r--r--board/malefor/board.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/board/malefor/board.c b/board/malefor/board.c
index 778f22260c..ecac587c49 100644
--- a/board/malefor/board.c
+++ b/board/malefor/board.c
@@ -339,7 +339,32 @@ static const struct usb_mux mux_config_p1_usb3 = {
void board_reset_pd_mcu(void)
{
- /* TODO(b/159024035): Malefor: check USB PD reset operation */
+ int val;
+
+ gpio_set_level(GPIO_USB_C1_RT_RST_ODL, 0);
+ msleep(GENERIC_MAX(PS8XXX_RESET_DELAY_MS,
+ PS8815_PWR_H_RST_H_DELAY_MS));
+ gpio_set_level(GPIO_USB_C1_RT_RST_ODL, 1);
+ msleep(PS8815_FW_INIT_DELAY_MS);
+
+ /*
+ * b/144397088
+ * ps8815 firmware 0x01 needs special configuration
+ */
+
+ CPRINTS("%s: patching ps8815 registers", __func__);
+
+ if (i2c_read8(I2C_PORT_USB_C1,
+ PS8751_I2C_ADDR1_P2_FLAGS, 0x0f, &val) == EC_SUCCESS)
+ CPRINTS("ps8815: reg 0x0f was %02x", val);
+
+ if (i2c_write8(I2C_PORT_USB_C1,
+ PS8751_I2C_ADDR1_P2_FLAGS, 0x0f, 0x31) == EC_SUCCESS)
+ CPRINTS("ps8815: reg 0x0f set to 0x31");
+
+ if (i2c_read8(I2C_PORT_USB_C1,
+ PS8751_I2C_ADDR1_P2_FLAGS, 0x0f, &val) == EC_SUCCESS)
+ CPRINTS("ps8815: reg 0x0f now %02x", val);
}
__override void board_cbi_init(void)