usb: chipidea: host: more enhancement when ci->hcd is NULL
Like http://marc.info/?l=linux-usb&m=138200449428874&w=2 said: two more things are needed to be done: - If host_start fails, the host_stop should not be called, so we add check that ci->hcd is not NULL. - if the host_start fails at the beginning, we need to consider regulator mismatch issue. Signed-off-by: Peter Chen <peter.chen@freescale.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e55f7cd246
commit
df101c531e
|
@ -103,15 +103,15 @@ static void host_stop(struct ci_hdrc *ci)
|
||||||
if (hcd) {
|
if (hcd) {
|
||||||
usb_remove_hcd(hcd);
|
usb_remove_hcd(hcd);
|
||||||
usb_put_hcd(hcd);
|
usb_put_hcd(hcd);
|
||||||
|
if (ci->platdata->reg_vbus)
|
||||||
|
regulator_disable(ci->platdata->reg_vbus);
|
||||||
}
|
}
|
||||||
if (ci->platdata->reg_vbus)
|
|
||||||
regulator_disable(ci->platdata->reg_vbus);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ci_hdrc_host_destroy(struct ci_hdrc *ci)
|
void ci_hdrc_host_destroy(struct ci_hdrc *ci)
|
||||||
{
|
{
|
||||||
if (ci->role == CI_ROLE_HOST)
|
if (ci->role == CI_ROLE_HOST && ci->hcd)
|
||||||
host_stop(ci);
|
host_stop(ci);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue