usb/isp1760: Move isp1760_run within file (prepare for next patch)
authorArvid Brodin <arvid.brodin@enea.com>
Sun, 21 Aug 2011 06:29:25 +0000 (08:29 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 22 Aug 2011 22:32:12 +0000 (15:32 -0700)
Like the previous patch, this patch has been split from the next one
for clarity.

Signed-off-by: Arvid Brodin <arvid.brodin@enea.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/isp1760-hcd.c

index a46ccf97a5c9cf876277a60d0f57d3a913c64d09..e399e235f65627747407e22c283d4b610ffc055c 100644 (file)
@@ -514,74 +514,6 @@ static int isp1760_hc_setup(struct usb_hcd *hcd)
        return priv_init(hcd);
 }
 
-static int isp1760_run(struct usb_hcd *hcd)
-{
-       int retval;
-       u32 temp;
-       u32 command;
-       u32 chipid;
-
-       hcd->uses_new_polling = 1;
-
-       hcd->state = HC_STATE_RUNNING;
-
-       /* Set PTD interrupt AND & OR maps */
-       reg_write32(hcd->regs, HC_ATL_IRQ_MASK_AND_REG, 0);
-       reg_write32(hcd->regs, HC_ATL_IRQ_MASK_OR_REG, 0xffffffff);
-       reg_write32(hcd->regs, HC_INT_IRQ_MASK_AND_REG, 0);
-       reg_write32(hcd->regs, HC_INT_IRQ_MASK_OR_REG, 0xffffffff);
-       reg_write32(hcd->regs, HC_ISO_IRQ_MASK_AND_REG, 0);
-       reg_write32(hcd->regs, HC_ISO_IRQ_MASK_OR_REG, 0xffffffff);
-       /* step 23 passed */
-
-       temp = reg_read32(hcd->regs, HC_HW_MODE_CTRL);
-       reg_write32(hcd->regs, HC_HW_MODE_CTRL, temp | HW_GLOBAL_INTR_EN);
-
-       command = reg_read32(hcd->regs, HC_USBCMD);
-       command &= ~(CMD_LRESET|CMD_RESET);
-       command |= CMD_RUN;
-       reg_write32(hcd->regs, HC_USBCMD, command);
-
-       retval = handshake(hcd, HC_USBCMD, CMD_RUN, CMD_RUN, 250 * 1000);
-       if (retval)
-               return retval;
-
-       /*
-        * XXX
-        * Spec says to write FLAG_CF as last config action, priv code grabs
-        * the semaphore while doing so.
-        */
-       down_write(&ehci_cf_port_reset_rwsem);
-       reg_write32(hcd->regs, HC_CONFIGFLAG, FLAG_CF);
-
-       retval = handshake(hcd, HC_CONFIGFLAG, FLAG_CF, FLAG_CF, 250 * 1000);
-       up_write(&ehci_cf_port_reset_rwsem);
-       if (retval)
-               return retval;
-
-       chipid = reg_read32(hcd->regs, HC_CHIP_ID_REG);
-       dev_info(hcd->self.controller, "USB ISP %04x HW rev. %d started\n",
-                                       chipid & 0xffff, chipid >> 16);
-
-       /* PTD Register Init Part 2, Step 28 */
-
-       /* Setup registers controlling PTD checking */
-       reg_write32(hcd->regs, HC_ATL_PTD_LASTPTD_REG, 0x80000000);
-       reg_write32(hcd->regs, HC_INT_PTD_LASTPTD_REG, 0x80000000);
-       reg_write32(hcd->regs, HC_ISO_PTD_LASTPTD_REG, 0x00000001);
-       reg_write32(hcd->regs, HC_ATL_PTD_SKIPMAP_REG, 0xffffffff);
-       reg_write32(hcd->regs, HC_INT_PTD_SKIPMAP_REG, 0xffffffff);
-       reg_write32(hcd->regs, HC_ISO_PTD_SKIPMAP_REG, 0xffffffff);
-       reg_write32(hcd->regs, HC_BUFFER_STATUS_REG,
-                                               ATL_BUF_FILL | INT_BUF_FILL);
-
-       /* GRR this is run-once init(), being done every time the HC starts.
-        * So long as they're part of class devices, we can't do it init()
-        * since the class device isn't created that early.
-        */
-       return 0;
-}
-
 static u32 base_to_chip(u32 base)
 {
        return ((base - 0x400) >> 3);
@@ -1326,6 +1258,74 @@ leave:
        return irqret;
 }
 
+static int isp1760_run(struct usb_hcd *hcd)
+{
+       int retval;
+       u32 temp;
+       u32 command;
+       u32 chipid;
+
+       hcd->uses_new_polling = 1;
+
+       hcd->state = HC_STATE_RUNNING;
+
+       /* Set PTD interrupt AND & OR maps */
+       reg_write32(hcd->regs, HC_ATL_IRQ_MASK_AND_REG, 0);
+       reg_write32(hcd->regs, HC_ATL_IRQ_MASK_OR_REG, 0xffffffff);
+       reg_write32(hcd->regs, HC_INT_IRQ_MASK_AND_REG, 0);
+       reg_write32(hcd->regs, HC_INT_IRQ_MASK_OR_REG, 0xffffffff);
+       reg_write32(hcd->regs, HC_ISO_IRQ_MASK_AND_REG, 0);
+       reg_write32(hcd->regs, HC_ISO_IRQ_MASK_OR_REG, 0xffffffff);
+       /* step 23 passed */
+
+       temp = reg_read32(hcd->regs, HC_HW_MODE_CTRL);
+       reg_write32(hcd->regs, HC_HW_MODE_CTRL, temp | HW_GLOBAL_INTR_EN);
+
+       command = reg_read32(hcd->regs, HC_USBCMD);
+       command &= ~(CMD_LRESET|CMD_RESET);
+       command |= CMD_RUN;
+       reg_write32(hcd->regs, HC_USBCMD, command);
+
+       retval = handshake(hcd, HC_USBCMD, CMD_RUN, CMD_RUN, 250 * 1000);
+       if (retval)
+               return retval;
+
+       /*
+        * XXX
+        * Spec says to write FLAG_CF as last config action, priv code grabs
+        * the semaphore while doing so.
+        */
+       down_write(&ehci_cf_port_reset_rwsem);
+       reg_write32(hcd->regs, HC_CONFIGFLAG, FLAG_CF);
+
+       retval = handshake(hcd, HC_CONFIGFLAG, FLAG_CF, FLAG_CF, 250 * 1000);
+       up_write(&ehci_cf_port_reset_rwsem);
+       if (retval)
+               return retval;
+
+       chipid = reg_read32(hcd->regs, HC_CHIP_ID_REG);
+       dev_info(hcd->self.controller, "USB ISP %04x HW rev. %d started\n",
+                                       chipid & 0xffff, chipid >> 16);
+
+       /* PTD Register Init Part 2, Step 28 */
+
+       /* Setup registers controlling PTD checking */
+       reg_write32(hcd->regs, HC_ATL_PTD_LASTPTD_REG, 0x80000000);
+       reg_write32(hcd->regs, HC_INT_PTD_LASTPTD_REG, 0x80000000);
+       reg_write32(hcd->regs, HC_ISO_PTD_LASTPTD_REG, 0x00000001);
+       reg_write32(hcd->regs, HC_ATL_PTD_SKIPMAP_REG, 0xffffffff);
+       reg_write32(hcd->regs, HC_INT_PTD_SKIPMAP_REG, 0xffffffff);
+       reg_write32(hcd->regs, HC_ISO_PTD_SKIPMAP_REG, 0xffffffff);
+       reg_write32(hcd->regs, HC_BUFFER_STATUS_REG,
+                                               ATL_BUF_FILL | INT_BUF_FILL);
+
+       /* GRR this is run-once init(), being done every time the HC starts.
+        * So long as they're part of class devices, we can't do it init()
+        * since the class device isn't created that early.
+        */
+       return 0;
+}
+
 static int qtd_fill(struct isp1760_qtd *qtd, void *databuffer, size_t len)
 {
        qtd->data_buffer = databuffer;