diff options
-rw-r--r-- | drivers/usb/musb/musb_dsps.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c index b18f8d5e4f98..48bc09e7b83b 100644 --- a/drivers/usb/musb/musb_dsps.c +++ b/drivers/usb/musb/musb_dsps.c | |||
@@ -868,9 +868,15 @@ static int dsps_suspend(struct device *dev) | |||
868 | struct dsps_glue *glue = dev_get_drvdata(dev); | 868 | struct dsps_glue *glue = dev_get_drvdata(dev); |
869 | const struct dsps_musb_wrapper *wrp = glue->wrp; | 869 | const struct dsps_musb_wrapper *wrp = glue->wrp; |
870 | struct musb *musb = platform_get_drvdata(glue->musb); | 870 | struct musb *musb = platform_get_drvdata(glue->musb); |
871 | void __iomem *mbase = musb->ctrl_base; | 871 | void __iomem *mbase; |
872 | 872 | ||
873 | del_timer_sync(&glue->timer); | 873 | del_timer_sync(&glue->timer); |
874 | |||
875 | if (!musb) | ||
876 | /* This can happen if the musb device is in -EPROBE_DEFER */ | ||
877 | return 0; | ||
878 | |||
879 | mbase = musb->ctrl_base; | ||
874 | glue->context.control = dsps_readl(mbase, wrp->control); | 880 | glue->context.control = dsps_readl(mbase, wrp->control); |
875 | glue->context.epintr = dsps_readl(mbase, wrp->epintr_set); | 881 | glue->context.epintr = dsps_readl(mbase, wrp->epintr_set); |
876 | glue->context.coreintr = dsps_readl(mbase, wrp->coreintr_set); | 882 | glue->context.coreintr = dsps_readl(mbase, wrp->coreintr_set); |
@@ -887,8 +893,12 @@ static int dsps_resume(struct device *dev) | |||
887 | struct dsps_glue *glue = dev_get_drvdata(dev); | 893 | struct dsps_glue *glue = dev_get_drvdata(dev); |
888 | const struct dsps_musb_wrapper *wrp = glue->wrp; | 894 | const struct dsps_musb_wrapper *wrp = glue->wrp; |
889 | struct musb *musb = platform_get_drvdata(glue->musb); | 895 | struct musb *musb = platform_get_drvdata(glue->musb); |
890 | void __iomem *mbase = musb->ctrl_base; | 896 | void __iomem *mbase; |
897 | |||
898 | if (!musb) | ||
899 | return 0; | ||
891 | 900 | ||
901 | mbase = musb->ctrl_base; | ||
892 | dsps_writel(mbase, wrp->control, glue->context.control); | 902 | dsps_writel(mbase, wrp->control, glue->context.control); |
893 | dsps_writel(mbase, wrp->epintr_set, glue->context.epintr); | 903 | dsps_writel(mbase, wrp->epintr_set, glue->context.epintr); |
894 | dsps_writel(mbase, wrp->coreintr_set, glue->context.coreintr); | 904 | dsps_writel(mbase, wrp->coreintr_set, glue->context.coreintr); |