diff options
author | Kyle Tso <kyletso@google.com> | 2023-03-10 18:33:47 +0800 |
---|---|---|
committer | Kyle Tso <kyletso@google.com> | 2023-05-23 20:29:54 +0800 |
commit | a07eaf94726894b38872b36d04e3a8ce12c1f96c (patch) | |
tree | 65d8d52898a8fd9635bd5b6a29ef6441b5bc396c | |
parent | c5875adff2ec7f6bb42f3202dbcc9e95008baec0 (diff) | |
download | tangorpro-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.c | 15 |
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; |