diff --git a/drivers/usb/pd/policy_engine.c b/drivers/usb/pd/policy_engine.c index 4190417b073c..b354b651398c 100644 --- a/drivers/usb/pd/policy_engine.c +++ b/drivers/usb/pd/policy_engine.c @@ -2522,6 +2522,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