/** * qla2x00_mbx_completion() - Process mailbox command completions. * @ha: SCSI driver HA context * @mb0: Mailbox0 register */ static void qla2x00_mbx_completion(scsi_qla_host_t *ha, uint16_t mb0) { uint16_t cnt; uint16_t *wptr; device_reg_t *reg = ha->iobase; /* Load return mailbox registers. */ ha->flags.mbox_int = TRUE; ha->mailbox_out[0] = mb0; wptr = (uint16_t *)MAILBOX_REG(ha, reg, 1); for (cnt = 1; cnt < ha->mbx_count; cnt++) { if (IS_QLA2200(ha) && cnt == 8) wptr = (uint16_t *)MAILBOX_REG(ha, reg, 8); if (cnt == 4 || cnt == 5) ha->mailbox_out[cnt] = qla2x00_debounce_register(wptr); else ha->mailbox_out[cnt] = RD_REG_WORD(wptr); wptr++; } if (ha->mcp) { DEBUG3(printk("%s(%ld): Got mailbox completion. cmd=%x.\n", __func__, ha->host_no, ha->mcp->mb[0])); } else { DEBUG2_3(printk("%s(%ld): MBX pointer ERROR!\n", __func__, ha->host_no)); } }
void qla2x00_dump_regs(scsi_qla_host_t *ha) { int i; struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; struct device_reg_24xx __iomem *reg24 = &ha->iobase->isp24; uint16_t __iomem *mbx_reg; mbx_reg = IS_FWI2_CAPABLE(ha) ? ®24->mailbox0: MAILBOX_REG(ha, reg, 0); printk("Mailbox registers:\n"); for (i = 0; i < 6; i++) printk("scsi(%ld): mbox %d 0x%04x \n", ha->host_no, i, RD_REG_WORD(mbx_reg++)); }