usb/isp1760: Move isp1760_run within file (prepare for next patch)
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>
This commit is contained in:
parent
e25e0eb209
commit
0ba7905e03
|
@ -514,74 +514,6 @@ static int isp1760_hc_setup(struct usb_hcd *hcd)
|
||||||
return priv_init(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)
|
static u32 base_to_chip(u32 base)
|
||||||
{
|
{
|
||||||
return ((base - 0x400) >> 3);
|
return ((base - 0x400) >> 3);
|
||||||
|
@ -1326,6 +1258,74 @@ leave:
|
||||||
return irqret;
|
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)
|
static int qtd_fill(struct isp1760_qtd *qtd, void *databuffer, size_t len)
|
||||||
{
|
{
|
||||||
qtd->data_buffer = databuffer;
|
qtd->data_buffer = databuffer;
|
||||||
|
|
Loading…
Reference in New Issue