#endif
 
                hw_ep->regs = musb->io.ep_offset(i, 0) + mbase;
-               hw_ep->target_regs = musb_read_target_reg_base(i, mbase);
                hw_ep->rx_reinit = 1;
                hw_ep->tx_reinit = 1;
 
 {
        int i;
        void __iomem *musb_base = musb->mregs;
-       void __iomem *ep_target_regs;
        void __iomem *epio;
        u8 power;
 
                musb_write_txhubport(musb_base, i,
                                musb->context.index_regs[i].txhubport);
 
-               ep_target_regs =
-                       musb_read_target_reg_base(i, musb_base);
-
-               musb_write_rxfunaddr(ep_target_regs,
+               musb_write_rxfunaddr(musb_base, i,
                                musb->context.index_regs[i].rxfunaddr);
-               musb_write_rxhubaddr(ep_target_regs,
+               musb_write_rxhubaddr(musb_base, i,
                                musb->context.index_regs[i].rxhubaddr);
-               musb_write_rxhubport(ep_target_regs,
+               musb_write_rxhubport(musb_base, i,
                                musb->context.index_regs[i].rxhubport);
        }
        musb_writeb(musb_base, MUSB_INDEX, musb->context.index);
 
        void __iomem            *fifo_sync_va;
 #endif
 
-       void __iomem            *target_regs;
-
        /* currently scheduled peripheral endpoint */
        struct musb_qh          *in_qh;
        struct musb_qh          *out_qh;
 
  * the busy/not-empty tests are basically paranoia.
  */
 static void
-musb_rx_reinit(struct musb *musb, struct musb_qh *qh, struct musb_hw_ep *ep)
+musb_rx_reinit(struct musb *musb, struct musb_qh *qh, u8 epnum)
 {
+       struct musb_hw_ep *ep = musb->endpoints + epnum;
        u16     csr;
 
        /* NOTE:  we know the "rx" fifo reinit never triggers for ep0.
 
        /* target addr and (for multipoint) hub addr/port */
        if (musb->is_multipoint) {
-               musb_write_rxfunaddr(ep->target_regs, qh->addr_reg);
-               musb_write_rxhubaddr(ep->target_regs, qh->h_addr_reg);
-               musb_write_rxhubport(ep->target_regs, qh->h_port_reg);
-
+               musb_write_rxfunaddr(musb->mregs, epnum, qh->addr_reg);
+               musb_write_rxhubaddr(musb->mregs, epnum, qh->h_addr_reg);
+               musb_write_rxhubport(musb->mregs, epnum, qh->h_port_reg);
        } else
                musb_writeb(musb->mregs, MUSB_FADDR, qh->addr_reg);
 
                u16     csr;
 
                if (hw_ep->rx_reinit) {
-                       musb_rx_reinit(musb, qh, hw_ep);
+                       musb_rx_reinit(musb, qh, epnum);
 
                        /* init new state: toggle and NYET, maybe DMA later */
                        if (usb_gettoggle(urb->dev, qh->epnum, 0))
 
        return musb_readw(mbase, MUSB_HWVERS);
 }
 
-static inline void __iomem *musb_read_target_reg_base(u8 i, void __iomem *mbase)
-{
-       return (MUSB_BUSCTL_OFFSET(i, 0) + mbase);
-}
-
-static inline void musb_write_rxfunaddr(void __iomem *ep_target_regs,
+static inline void musb_write_rxfunaddr(void __iomem *mbase, u8 epnum,
                u8 qh_addr_reg)
 {
-       musb_writeb(ep_target_regs, MUSB_RXFUNCADDR, qh_addr_reg);
+       musb_writeb(mbase, MUSB_BUSCTL_OFFSET(epnum, MUSB_RXFUNCADDR),
+                       qh_addr_reg);
 }
 
-static inline void musb_write_rxhubaddr(void __iomem *ep_target_regs,
+static inline void musb_write_rxhubaddr(void __iomem *mbase, u8 epnum,
                u8 qh_h_addr_reg)
 {
-       musb_writeb(ep_target_regs, MUSB_RXHUBADDR, qh_h_addr_reg);
+       musb_writeb(mbase, MUSB_BUSCTL_OFFSET(epnum, MUSB_RXHUBADDR),
+                       qh_h_addr_reg);
 }
 
-static inline void musb_write_rxhubport(void __iomem *ep_target_regs,
+static inline void musb_write_rxhubport(void __iomem *mbase, u8 epnum,
                u8 qh_h_port_reg)
 {
-       musb_writeb(ep_target_regs, MUSB_RXHUBPORT, qh_h_port_reg);
+       musb_writeb(mbase, MUSB_BUSCTL_OFFSET(epnum, MUSB_RXHUBPORT),
+                       qh_h_port_reg);
 }
 
 static inline void  musb_write_txfunaddr(void __iomem *mbase, u8 epnum,
        return MUSB_HWVERS_1900;
 }
 
-static inline void __iomem *musb_read_target_reg_base(u8 i, void __iomem *mbase)
-{
-       return NULL;
-}
-
-static inline void musb_write_rxfunaddr(void __iomem *ep_target_regs,
+static inline void musb_write_rxfunaddr(void __iomem *mbase, u8 epnum,
                u8 qh_addr_req)
 {
 }
 
-static inline void musb_write_rxhubaddr(void __iomem *ep_target_regs,
+static inline void musb_write_rxhubaddr(void __iomem *mbase, u8 epnum,
                u8 qh_h_addr_reg)
 {
 }
 
-static inline void musb_write_rxhubport(void __iomem *ep_target_regs,
+static inline void musb_write_rxhubport(void __iomem *mbase, u8 epnum,
                u8 qh_h_port_reg)
 {
 }