[SCSI] megaraid_sas: Add 1078 OCR support
Signed-off-by: Adam Radford <aradford@gmail.com> Signed-off-by: James Bottomley <jbottomley@parallels.com>
This commit is contained in:
Родитель
495c560970
Коммит
3cc6851f9a
|
@ -437,15 +437,18 @@ megasas_read_fw_status_reg_ppc(struct megasas_register_set __iomem * regs)
|
|||
static int
|
||||
megasas_clear_intr_ppc(struct megasas_register_set __iomem * regs)
|
||||
{
|
||||
u32 status;
|
||||
u32 status, mfiStatus = 0;
|
||||
|
||||
/*
|
||||
* Check if it is our interrupt
|
||||
*/
|
||||
status = readl(®s->outbound_intr_status);
|
||||
|
||||
if (!(status & MFI_REPLY_1078_MESSAGE_INTERRUPT)) {
|
||||
return 0;
|
||||
}
|
||||
if (status & MFI_REPLY_1078_MESSAGE_INTERRUPT)
|
||||
mfiStatus = MFI_INTR_FLAG_REPLY_MESSAGE;
|
||||
|
||||
if (status & MFI_G2_OUTBOUND_DOORBELL_CHANGE_INTERRUPT)
|
||||
mfiStatus |= MFI_INTR_FLAG_FIRMWARE_STATE_CHANGE;
|
||||
|
||||
/*
|
||||
* Clear the interrupt by writing back the same value
|
||||
|
@ -455,8 +458,9 @@ megasas_clear_intr_ppc(struct megasas_register_set __iomem * regs)
|
|||
/* Dummy readl to force pci flush */
|
||||
readl(®s->outbound_doorbell_clear);
|
||||
|
||||
return 1;
|
||||
return mfiStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* megasas_fire_cmd_ppc - Sends command to the FW
|
||||
* @frame_phys_addr : Physical address of cmd
|
||||
|
@ -476,17 +480,6 @@ megasas_fire_cmd_ppc(struct megasas_instance *instance,
|
|||
spin_unlock_irqrestore(&instance->hba_lock, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
* megasas_adp_reset_ppc - For controller reset
|
||||
* @regs: MFI register set
|
||||
*/
|
||||
static int
|
||||
megasas_adp_reset_ppc(struct megasas_instance *instance,
|
||||
struct megasas_register_set __iomem *regs)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* megasas_check_reset_ppc - For controller reset check
|
||||
* @regs: MFI register set
|
||||
|
@ -495,8 +488,12 @@ static int
|
|||
megasas_check_reset_ppc(struct megasas_instance *instance,
|
||||
struct megasas_register_set __iomem *regs)
|
||||
{
|
||||
if (instance->adprecovery != MEGASAS_HBA_OPERATIONAL)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct megasas_instance_template megasas_instance_template_ppc = {
|
||||
|
||||
.fire_cmd = megasas_fire_cmd_ppc,
|
||||
|
@ -504,7 +501,7 @@ static struct megasas_instance_template megasas_instance_template_ppc = {
|
|||
.disable_intr = megasas_disable_intr_ppc,
|
||||
.clear_intr = megasas_clear_intr_ppc,
|
||||
.read_fw_status_reg = megasas_read_fw_status_reg_ppc,
|
||||
.adp_reset = megasas_adp_reset_ppc,
|
||||
.adp_reset = megasas_adp_reset_xscale,
|
||||
.check_reset = megasas_check_reset_ppc,
|
||||
.service_isr = megasas_isr,
|
||||
.tasklet = megasas_complete_cmd_dpc,
|
||||
|
@ -620,6 +617,9 @@ static int
|
|||
megasas_check_reset_skinny(struct megasas_instance *instance,
|
||||
struct megasas_register_set __iomem *regs)
|
||||
{
|
||||
if (instance->adprecovery != MEGASAS_HBA_OPERATIONAL)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче