mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-08 16:41:55 +00:00
pd: Cleanup usb_pd low power idle sleep mask
Add a new define CONFIG_USB_PD_LOW_POWER_IDLE_WHEN_CONNECTED that indicates the chip should try to go to low power idle even when a PD connection is established -- this is the current behavior only for Zinger. Also, enable and disable the sleep mask bit from tcpc on rx enable / disable. BUG=chrome-os-partner:45010 TEST=Manual on glados / glados_pd. Insert Zinger, verify that glados_pd stays out of low power idle. Remove Zinger, verify that glados_pd resumes going into low power idle. BRANCH=None Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Change-Id: Ie763ae75f4459f56cad47d77d9c25d76358aa484 Reviewed-on: https://chromium-review.googlesource.com/303490 Commit-Ready: Shawn N <shawnn@chromium.org> Tested-by: Shawn N <shawnn@chromium.org> Reviewed-by: Alec Berg <alecaberg@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
4253105dbf
commit
61361bec9f
@@ -57,6 +57,7 @@
|
||||
#undef CONFIG_USB_PD_INTERNAL_COMP
|
||||
#define CONFIG_USB_PD_LOGGING
|
||||
#define CONFIG_USB_PD_LOG_SIZE 256
|
||||
#define CONFIG_USB_PD_LOW_POWER_IDLE_WHEN_CONNECTED
|
||||
#define CONFIG_USB_PD_PORT_COUNT 1
|
||||
#define CONFIG_USB_PD_TCPC
|
||||
#define CONFIG_USB_PD_TCPM_STUB
|
||||
|
||||
@@ -459,13 +459,17 @@ void pd_rx_handler(void)
|
||||
PD_RX_TRANSITION_COUNT - 1) ?
|
||||
0 : rx_edge_ts_idx[i] + 1;
|
||||
|
||||
#if defined(CONFIG_LOW_POWER_IDLE) && \
|
||||
defined(CONFIG_USB_PD_LOW_POWER_IDLE_WHEN_CONNECTED)
|
||||
/*
|
||||
* Do not deep sleep while waiting for more edges. For
|
||||
* most boards, sleep is already disabled due to being
|
||||
* in PD connected state, but other boards can sleep
|
||||
* while connected.
|
||||
* in PD connected state, but boards which define
|
||||
* CONFIG_USB_PD_LOW_POWER_IDLE_WHEN_CONNECTED can
|
||||
* sleep while connected.
|
||||
*/
|
||||
disable_sleep(SLEEP_MASK_USB_PD);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If we have seen enough edges in a certain amount of
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "hooks.h"
|
||||
#include "host_command.h"
|
||||
#include "registers.h"
|
||||
#include "system.h"
|
||||
#include "task.h"
|
||||
#include "tcpci.h"
|
||||
#include "timer.h"
|
||||
@@ -972,11 +973,25 @@ int tcpc_set_vconn(int port, int enable)
|
||||
|
||||
int tcpc_set_rx_enable(int port, int enable)
|
||||
{
|
||||
#if defined(CONFIG_LOW_POWER_IDLE) && !defined(CONFIG_USB_POWER_DELIVERY)
|
||||
int i;
|
||||
#endif
|
||||
pd[port].rx_enabled = enable;
|
||||
|
||||
if (!enable)
|
||||
pd_rx_disable_monitoring(port);
|
||||
|
||||
#if defined(CONFIG_LOW_POWER_IDLE) && !defined(CONFIG_USB_POWER_DELIVERY)
|
||||
/* If any PD port is connected, then disable deep sleep */
|
||||
for (i = 0; i < CONFIG_USB_PD_PORT_COUNT; ++i)
|
||||
if (pd[port].rx_enabled)
|
||||
break;
|
||||
|
||||
if (i == CONFIG_USB_PD_PORT_COUNT)
|
||||
enable_sleep(SLEEP_MASK_USB_PD);
|
||||
else
|
||||
disable_sleep(SLEEP_MASK_USB_PD);
|
||||
#endif
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -1718,6 +1718,9 @@
|
||||
/* Save power by waking up on VBUS rather than polling CC */
|
||||
#undef CONFIG_USB_PD_LOW_POWER
|
||||
|
||||
/* Allow chip to go into low power idle even when a PD device is attached */
|
||||
#undef CONFIG_USB_PD_LOW_POWER_IDLE_WHEN_CONNECTED
|
||||
|
||||
/* Define if USB-PD device has no way of detecting USB VBUS */
|
||||
#undef CONFIG_USB_PD_NO_VBUS_DETECT
|
||||
|
||||
|
||||
Reference in New Issue
Block a user