1 From 1d4129991375b6866ecb37a4d3ba3bff603ca5c3 Mon Sep 17 00:00:00 2001
2 From: Hans de Goede <hdegoede@redhat.com>
3 Date: Mon, 11 Mar 2019 11:48:14 +0100
4 Subject: usb: typec: fusb302: Check vconn is off when we start toggling
6 [ Upstream commit 32a155b1a83d6659e2272e8e1eec199667b1897e ]
8 The datasheet says the vconn MUST be off when we start toggling. The
9 tcpm.c state-machine is responsible to make sure vconn is off, but lets
10 add a WARN to catch any cases where vconn is not off for some reason.
12 Signed-off-by: Hans de Goede <hdegoede@redhat.com>
13 Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
14 Reviewed-by: Guenter Roeck <linux@roeck-us.net>
15 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16 Signed-off-by: Sasha Levin <sashal@kernel.org>
18 drivers/usb/typec/fusb302/fusb302.c | 2 ++
19 1 file changed, 2 insertions(+)
21 diff --git a/drivers/usb/typec/fusb302/fusb302.c b/drivers/usb/typec/fusb302/fusb302.c
22 index 82bed9810be6..62a0060d39d8 100644
23 --- a/drivers/usb/typec/fusb302/fusb302.c
24 +++ b/drivers/usb/typec/fusb302/fusb302.c
25 @@ -641,6 +641,8 @@ static int fusb302_set_toggling(struct fusb302_chip *chip,
27 chip->intr_togdone = false;
29 + /* Datasheet says vconn MUST be off when toggling */
30 + WARN(chip->vconn_on, "Vconn is on during toggle start");
31 /* unmask TOGDONE interrupt */
32 ret = fusb302_i2c_clear_bits(chip, FUSB_REG_MASKA,
33 FUSB_REG_MASKA_TOGDONE);