diff --git a/drivers/usb/pd/policy_engine.c b/drivers/usb/pd/policy_engine.c index 055c6203577a..842556f33a85 100644 --- a/drivers/usb/pd/policy_engine.c +++ b/drivers/usb/pd/policy_engine.c @@ -2519,6 +2519,11 @@ static int usbpd_dr_set_property(struct dual_role_phy_instance *dual_role, case DUAL_ROLE_PROP_MODE: usbpd_dbg(&pd->dev, "Setting mode to %d\n", *val); + if (pd->current_state == PE_UNKNOWN) { + usbpd_warn(&pd->dev, "No active connection. Don't allow MODE change\n"); + return -EAGAIN; + } + /* * Forces disconnect on CC and re-establishes connection. * This does not use PD-based PR/DR swap