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");
-       printk("scsi(%ld): mbox 0 0x%04x \n",
-           ha->host_no, RD_MAILBOX_REG(ha, reg, 0));
-       printk("scsi(%ld): mbox 1 0x%04x \n",
-           ha->host_no, RD_MAILBOX_REG(ha, reg, 1));
-       printk("scsi(%ld): mbox 2 0x%04x \n",
-           ha->host_no, RD_MAILBOX_REG(ha, reg, 2));
-       printk("scsi(%ld): mbox 3 0x%04x \n",
-           ha->host_no, RD_MAILBOX_REG(ha, reg, 3));
-       printk("scsi(%ld): mbox 4 0x%04x \n",
-           ha->host_no, RD_MAILBOX_REG(ha, reg, 4));
-       printk("scsi(%ld): mbox 5 0x%04x \n",
-           ha->host_no, RD_MAILBOX_REG(ha, reg, 5));
+       for (i = 0; i < 6; i++)
+               printk("scsi(%ld): mbox %d 0x%04x \n", ha->host_no, i,
+                   RD_REG_WORD(mbx_reg++));
 }