mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-29 18:11:05 +00:00
USB/PD: Request discover identity on boot
This patch makes the TCPM request discover identity on boot instead of resume. BUG=chromium:644663,b:70165261 BRANCH=none TEST=Verified display works in the following cases: 1. On Fizz, plug in Dell type-c HDMI adapter in S0, shutdown, boot. 2. On Fizz, plug in Dell type-c HDMI adapter in S5, boot. 3. On Fizz, plug in type-c monitor in S0, suspend, resume. 4. On Fizz, plug in type-c monitor in S5, boot. 5. On elm, S5. Plug adapter with power+HDMI, boot. Change-Id: Ib068c60bc51ebddc461378028a48c64662bc5b81 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/847970 Reviewed-by: Shawn N <shawnn@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
eb15d23f3e
commit
069182f5e4
@@ -3403,7 +3403,7 @@ void pd_task(void *u)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_USB_PD_DUAL_ROLE
|
||||
static void dual_role_on(void)
|
||||
static void pd_chipset_resume(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -3413,29 +3413,36 @@ static void dual_role_on(void)
|
||||
#endif
|
||||
pd[i].flags |= PD_FLAGS_CHECK_PR_ROLE |
|
||||
PD_FLAGS_CHECK_DR_ROLE;
|
||||
|
||||
pd[i].flags |= PD_FLAGS_CHECK_IDENTITY;
|
||||
}
|
||||
|
||||
pd_set_dual_role(PD_DRP_TOGGLE_ON);
|
||||
CPRINTS("chipset -> S0");
|
||||
CPRINTS("PD:S3->S0");
|
||||
}
|
||||
DECLARE_HOOK(HOOK_CHIPSET_RESUME, dual_role_on, HOOK_PRIO_DEFAULT);
|
||||
DECLARE_HOOK(HOOK_CHIPSET_RESUME, pd_chipset_resume, HOOK_PRIO_DEFAULT);
|
||||
|
||||
static void dual_role_off(void)
|
||||
static void pd_chipset_suspend(void)
|
||||
{
|
||||
pd_set_dual_role(PD_DRP_TOGGLE_OFF);
|
||||
CPRINTS("chipset -> S3");
|
||||
CPRINTS("PD:S0->S3");
|
||||
}
|
||||
DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, dual_role_off, HOOK_PRIO_DEFAULT);
|
||||
DECLARE_HOOK(HOOK_CHIPSET_STARTUP, dual_role_off, HOOK_PRIO_DEFAULT);
|
||||
DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, pd_chipset_suspend, HOOK_PRIO_DEFAULT);
|
||||
|
||||
static void dual_role_force_sink(void)
|
||||
static void pd_chipset_startup(void)
|
||||
{
|
||||
int i;
|
||||
pd_set_dual_role(PD_DRP_TOGGLE_OFF);
|
||||
for (i = 0; i < CONFIG_USB_PD_PORT_COUNT; i++)
|
||||
pd[i].flags |= PD_FLAGS_CHECK_IDENTITY;
|
||||
CPRINTS("PD:S5->S3");
|
||||
}
|
||||
DECLARE_HOOK(HOOK_CHIPSET_STARTUP, pd_chipset_startup, HOOK_PRIO_DEFAULT);
|
||||
|
||||
static void pd_chipset_shutdown(void)
|
||||
{
|
||||
pd_set_dual_role(PD_DRP_FORCE_SINK);
|
||||
CPRINTS("chipset -> S5");
|
||||
CPRINTS("PD:S3->S5");
|
||||
}
|
||||
DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, dual_role_force_sink, HOOK_PRIO_DEFAULT);
|
||||
DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, pd_chipset_shutdown, HOOK_PRIO_DEFAULT);
|
||||
|
||||
#endif /* CONFIG_USB_PD_DUAL_ROLE */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user