musb->context.devctl = musb_readb(musb_base, MUSB_DEVCTL);
 
        for (i = 0; i < musb->config->num_eps; ++i) {
-               epio = musb->endpoints[i].regs;
+               struct musb_hw_ep       *hw_ep;
+
+               hw_ep = &musb->endpoints[i];
+               if (!hw_ep)
+                       continue;
+
+               epio = hw_ep->regs;
+               if (!epio)
+                       continue;
+
                musb->context.index_regs[i].txmaxp =
                        musb_readw(epio, MUSB_TXMAXP);
                musb->context.index_regs[i].txcsr =
        musb_writeb(musb_base, MUSB_DEVCTL, musb->context.devctl);
 
        for (i = 0; i < musb->config->num_eps; ++i) {
-               epio = musb->endpoints[i].regs;
+               struct musb_hw_ep       *hw_ep;
+
+               hw_ep = &musb->endpoints[i];
+               if (!hw_ep)
+                       continue;
+
+               epio = hw_ep->regs;
+               if (!epio)
+                       continue;
+
                musb_writew(epio, MUSB_TXMAXP,
                        musb->context.index_regs[i].txmaxp);
                musb_writew(epio, MUSB_TXCSR,