[SCSI] qla1280: interupt posting for irq disabling/enabling
Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Thiemo Seufer <ths@linux-mips.org> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
a6c42741ac
commit
8af50dcd22
|
@ -1265,6 +1265,22 @@ qla1280_biosparam_old(Disk * disk, kdev_t dev, int geom[])
|
||||||
return qla1280_biosparam(disk->device, NULL, disk->capacity, geom);
|
return qla1280_biosparam(disk->device, NULL, disk->capacity, geom);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* disable risc and host interrupts */
|
||||||
|
static inline void
|
||||||
|
qla1280_disable_intrs(struct scsi_qla_host *ha)
|
||||||
|
{
|
||||||
|
WRT_REG_WORD(&ha->iobase->ictrl, 0);
|
||||||
|
RD_REG_WORD(&ha->iobase->ictrl); /* PCI Posted Write flush */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* enable risc and host interrupts */
|
||||||
|
static inline void
|
||||||
|
qla1280_enable_intrs(struct scsi_qla_host *ha)
|
||||||
|
{
|
||||||
|
WRT_REG_WORD(&ha->iobase->ictrl, (ISP_EN_INT | ISP_EN_RISC));
|
||||||
|
RD_REG_WORD(&ha->iobase->ictrl); /* PCI Posted Write flush */
|
||||||
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* qla1280_intr_handler
|
* qla1280_intr_handler
|
||||||
|
@ -1286,7 +1302,7 @@ qla1280_intr_handler(int irq, void *dev_id, struct pt_regs *regs)
|
||||||
ha->isr_count++;
|
ha->isr_count++;
|
||||||
reg = ha->iobase;
|
reg = ha->iobase;
|
||||||
|
|
||||||
WRT_REG_WORD(®->ictrl, 0); /* disable our interrupt. */
|
qla1280_disable_intrs(ha);
|
||||||
|
|
||||||
data = qla1280_debounce_register(®->istatus);
|
data = qla1280_debounce_register(®->istatus);
|
||||||
/* Check for pending interrupts. */
|
/* Check for pending interrupts. */
|
||||||
|
@ -1299,8 +1315,7 @@ qla1280_intr_handler(int irq, void *dev_id, struct pt_regs *regs)
|
||||||
|
|
||||||
spin_unlock(HOST_LOCK);
|
spin_unlock(HOST_LOCK);
|
||||||
|
|
||||||
/* enable our interrupt. */
|
qla1280_enable_intrs(ha);
|
||||||
WRT_REG_WORD(®->ictrl, (ISP_EN_INT | ISP_EN_RISC));
|
|
||||||
|
|
||||||
LEAVE_INTR("qla1280_intr_handler");
|
LEAVE_INTR("qla1280_intr_handler");
|
||||||
return IRQ_RETVAL(handled);
|
return IRQ_RETVAL(handled);
|
||||||
|
@ -1613,38 +1628,6 @@ qla1280_return_status(struct response * sts, struct scsi_cmnd *cp)
|
||||||
/* QLogic ISP1280 Hardware Support Functions. */
|
/* QLogic ISP1280 Hardware Support Functions. */
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/*
|
|
||||||
* qla2100_enable_intrs
|
|
||||||
* qla2100_disable_intrs
|
|
||||||
*
|
|
||||||
* Input:
|
|
||||||
* ha = adapter block pointer.
|
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
* None
|
|
||||||
*/
|
|
||||||
static inline void
|
|
||||||
qla1280_enable_intrs(struct scsi_qla_host *ha)
|
|
||||||
{
|
|
||||||
struct device_reg __iomem *reg;
|
|
||||||
|
|
||||||
reg = ha->iobase;
|
|
||||||
/* enable risc and host interrupts */
|
|
||||||
WRT_REG_WORD(®->ictrl, (ISP_EN_INT | ISP_EN_RISC));
|
|
||||||
RD_REG_WORD(®->ictrl); /* PCI Posted Write flush */
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void
|
|
||||||
qla1280_disable_intrs(struct scsi_qla_host *ha)
|
|
||||||
{
|
|
||||||
struct device_reg __iomem *reg;
|
|
||||||
|
|
||||||
reg = ha->iobase;
|
|
||||||
/* disable risc and host interrupts */
|
|
||||||
WRT_REG_WORD(®->ictrl, 0);
|
|
||||||
RD_REG_WORD(®->ictrl); /* PCI Posted Write flush */
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* qla1280_initialize_adapter
|
* qla1280_initialize_adapter
|
||||||
* Initialize board.
|
* Initialize board.
|
||||||
|
@ -4751,7 +4734,7 @@ qla1280_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||||
|
|
||||||
#if LINUX_VERSION_CODE >= 0x020600
|
#if LINUX_VERSION_CODE >= 0x020600
|
||||||
error_disable_adapter:
|
error_disable_adapter:
|
||||||
WRT_REG_WORD(&ha->iobase->ictrl, 0);
|
qla1280_disable_intrs(ha);
|
||||||
#endif
|
#endif
|
||||||
error_free_irq:
|
error_free_irq:
|
||||||
free_irq(pdev->irq, ha);
|
free_irq(pdev->irq, ha);
|
||||||
|
@ -4788,7 +4771,7 @@ qla1280_remove_one(struct pci_dev *pdev)
|
||||||
scsi_remove_host(host);
|
scsi_remove_host(host);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
WRT_REG_WORD(&ha->iobase->ictrl, 0);
|
qla1280_disable_intrs(ha);
|
||||||
|
|
||||||
free_irq(pdev->irq, ha);
|
free_irq(pdev->irq, ha);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue