summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Tso <kyletso@google.com>2023-03-10 18:33:47 +0800
committerKyle Tso <kyletso@google.com>2023-05-23 20:29:54 +0800
commita07eaf94726894b38872b36d04e3a8ce12c1f96c (patch)
tree65d8d52898a8fd9635bd5b6a29ef6441b5bc396c
parentc5875adff2ec7f6bb42f3202dbcc9e95008baec0 (diff)
downloadtangorpro-a07eaf94726894b38872b36d04e3a8ce12c1f96c.tar.gz
pogo_transport: Add state ACC_HUB_HOST_OFFLINE
Bug: 272500774 Change-Id: I585fc0fbd9972dc6a3d0c7b032c1a597a215f082 Signed-off-by: Kyle Tso <kyletso@google.com> (cherry picked from commit 5b2cfba50b449e02b1a5cb90e9340174e89b84b8)
-rw-r--r--pogo/pogo_transport.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/pogo/pogo_transport.c b/pogo/pogo_transport.c
index 01c4a43..5a13cba 100644
--- a/pogo/pogo_transport.c
+++ b/pogo/pogo_transport.c
@@ -75,6 +75,7 @@
* (M) ACC_DIRECT, // Acc online, hub disabled
* (N) ACC_DEVICE_HUB, // Acc online, usb device online, hub enabled
* (O) ACC_HUB, // Acc online, hub enabled
+ * (T) ACC_HUB_HOST_OFFLINE, // Acc online, hub enabled, usb host offline
* (P) ACC_AUDIO_HUB, // Acc online, usb audio online, hub enabled
* (Q) LID_CLOSE,
* (R) HOST_DIRECT_ACC_OFFLINE, // Usb host online, acc offline, hub disabled
@@ -110,6 +111,7 @@
S(ACC_DIRECT), \
S(ACC_DEVICE_HUB), \
S(ACC_HUB), \
+ S(ACC_HUB_HOST_OFFLINE), \
S(ACC_AUDIO_HUB), \
S(LID_CLOSE), \
S(HOST_DIRECT_ACC_OFFLINE), \
@@ -1379,13 +1381,12 @@ static void pogo_transport_usbc_device_on(struct pogo_transport *pogo_transport)
pogo_transport_set_state(pogo_transport, ACC_DIRECT_HOST_OFFLINE, 0);
break;
case ACC_HUB:
- switch_to_pogo_locked(pogo_transport);
/*
* Set data_active so that once USB-C cable is detached later, Type-C stack is able
* to call back for the data changed event
*/
chip->data_active = true;
- pogo_transport_set_state(pogo_transport, ACC_DIRECT_HOST_OFFLINE, 0);
+ pogo_transport_set_state(pogo_transport, ACC_HUB_HOST_OFFLINE, 0);
break;
default:
break;
@@ -1430,6 +1431,14 @@ static void pogo_transport_usbc_device_off(struct pogo_transport *pogo_transport
chip->data_active = false;
pogo_transport_set_state(pogo_transport, ACC_DIRECT, 0);
break;
+ case ACC_HUB_HOST_OFFLINE:
+ /*
+ * Clear data_active so that Type-C stack is able to call back for the data changed
+ * event
+ */
+ chip->data_active = false;
+ pogo_transport_set_state(pogo_transport, ACC_HUB, 0);
+ break;
default:
break;
}
@@ -1456,6 +1465,7 @@ static void pogo_transport_enable_usb_data(struct pogo_transport *pogo_transport
pogo_transport_set_state(pogo_transport, HOST_DIRECT_DOCK_OFFLINE, 0);
break;
case ACC_DIRECT_HOST_OFFLINE:
+ case ACC_HUB_HOST_OFFLINE:
/*
* Clear data_active so that Type-C stack is able to call back for the data changed
* event later
@@ -1628,6 +1638,7 @@ static void pogo_transport_hes_acc_detached(struct pogo_transport *pogo_transpor
pogo_transport_set_state(pogo_transport, HOST_DIRECT, 0);
break;
case ACC_DIRECT_HOST_OFFLINE:
+ case ACC_HUB_HOST_OFFLINE:
pogo_transport_reset_acc_detection(pogo_transport);
/* Clear data_active so that Type-C stack is able to enable the USB data later */
chip->data_active = false;