diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c index c1d98af3f91b..1ce8ff952a0f 100644 --- a/drivers/usb/chipidea/ci_hdrc_imx.c +++ b/drivers/usb/chipidea/ci_hdrc_imx.c @@ -470,13 +470,15 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev) goto err_clk; } - if (!IS_ERR(pdata.id_extcon.edev) || - of_property_read_bool(np, "usb-role-switch")) - data->usbmisc_data->ext_id = 1; + if ((!IS_ERR(pdata.id_extcon.edev) || + of_property_read_bool(np, "usb-role-switch")) && + !IS_ERR_OR_NULL(data->usbmisc_data)) + data->usbmisc_data->ext_id = 1; - if (!IS_ERR(pdata.vbus_extcon.edev) || - of_property_read_bool(np, "usb-role-switch")) - data->usbmisc_data->ext_vbus = 1; + if ((!IS_ERR(pdata.vbus_extcon.edev) || + of_property_read_bool(np, "usb-role-switch")) && + !IS_ERR_OR_NULL(data->usbmisc_data)) + data->usbmisc_data->ext_vbus = 1; ret = imx_usbmisc_init_post(data->usbmisc_data); if (ret) { @@ -485,7 +487,8 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev) } /* usbmisc needs to know dr mode to choose wakeup setting */ - data->usbmisc_data->available_role = + if (!IS_ERR_OR_NULL(data->usbmisc_data)) + data->usbmisc_data->available_role = ci_hdrc_query_available_role(data->ci_pdev); if (data->supports_runtime_pm) {