Commit c349775e authored by Scott Teel's avatar Scott Teel Committed by James Bottomley

[SCSI] hpsa: get ioaccel mode 2 i/o working

Signed-off-by: default avatarScott Teel <scott.teel@hp.com>
Signed-off-by: default avatarJoe Handzik <Joseph.T.Handzik@hp.com>
Signed-off-by: default avatarMike Miller <michael.miller@canonical.com>
Signed-off-by: default avatarStephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent b9af4937
This diff is collapsed.
...@@ -282,6 +282,18 @@ static void SA5_submit_command(struct ctlr_info *h, ...@@ -282,6 +282,18 @@ static void SA5_submit_command(struct ctlr_info *h,
(void) readl(h->vaddr + SA5_SCRATCHPAD_OFFSET); (void) readl(h->vaddr + SA5_SCRATCHPAD_OFFSET);
} }
static void SA5_submit_command_ioaccel2(struct ctlr_info *h,
struct CommandList *c)
{
dev_dbg(&h->pdev->dev, "Sending %x, tag = %x\n", c->busaddr,
c->Header.Tag.lower);
if (c->cmd_type == CMD_IOACCEL2)
writel(c->busaddr, h->vaddr + IOACCEL2_INBOUND_POSTQ_32);
else
writel(c->busaddr, h->vaddr + SA5_REQUEST_PORT_OFFSET);
(void) readl(h->vaddr + SA5_SCRATCHPAD_OFFSET);
}
/* /*
* This card is the opposite of the other cards. * This card is the opposite of the other cards.
* 0 turns interrupts on... * 0 turns interrupts on...
...@@ -475,6 +487,14 @@ static struct access_method SA5_ioaccel_mode1_access = { ...@@ -475,6 +487,14 @@ static struct access_method SA5_ioaccel_mode1_access = {
SA5_ioaccel_mode1_completed, SA5_ioaccel_mode1_completed,
}; };
static struct access_method SA5_ioaccel_mode2_access = {
SA5_submit_command_ioaccel2,
SA5_performant_intr_mask,
SA5_fifo_full,
SA5_performant_intr_pending,
SA5_performant_completed,
};
static struct access_method SA5_performant_access = { static struct access_method SA5_performant_access = {
SA5_submit_command, SA5_submit_command,
SA5_performant_intr_mask, SA5_performant_intr_mask,
......
...@@ -478,6 +478,7 @@ struct io_accel2_scsi_response { ...@@ -478,6 +478,7 @@ struct io_accel2_scsi_response {
#define IOACCEL2_STATUS_SR_TASK_COMP_RES_CON 0x18 #define IOACCEL2_STATUS_SR_TASK_COMP_RES_CON 0x18
#define IOACCEL2_STATUS_SR_TASK_COMP_SET_FULL 0x28 #define IOACCEL2_STATUS_SR_TASK_COMP_SET_FULL 0x28
#define IOACCEL2_STATUS_SR_TASK_COMP_ABORTED 0x40 #define IOACCEL2_STATUS_SR_TASK_COMP_ABORTED 0x40
#define IOACCEL2_STATUS_SR_IOACCEL_DISABLED 0x0E
u8 data_present; /* low 2 bits */ u8 data_present; /* low 2 bits */
#define IOACCEL2_NO_DATAPRESENT 0x000 #define IOACCEL2_NO_DATAPRESENT 0x000
#define IOACCEL2_RESPONSE_DATAPRESENT 0x001 #define IOACCEL2_RESPONSE_DATAPRESENT 0x001
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment