[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
|
static int
|
||||||
megasas_clear_intr_ppc(struct megasas_register_set __iomem * regs)
|
megasas_clear_intr_ppc(struct megasas_register_set __iomem * regs)
|
||||||
{
|
{
|
||||||
u32 status;
|
u32 status, mfiStatus = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check if it is our interrupt
|
* Check if it is our interrupt
|
||||||
*/
|
*/
|
||||||
status = readl(®s->outbound_intr_status);
|
status = readl(®s->outbound_intr_status);
|
||||||
|
|
||||||
if (!(status & MFI_REPLY_1078_MESSAGE_INTERRUPT)) {
|
if (status & MFI_REPLY_1078_MESSAGE_INTERRUPT)
|
||||||
return 0;
|
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
|
* 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 */
|
/* Dummy readl to force pci flush */
|
||||||
readl(®s->outbound_doorbell_clear);
|
readl(®s->outbound_doorbell_clear);
|
||||||
|
|
||||||
return 1;
|
return mfiStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* megasas_fire_cmd_ppc - Sends command to the FW
|
* megasas_fire_cmd_ppc - Sends command to the FW
|
||||||
* @frame_phys_addr : Physical address of cmd
|
* @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);
|
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
|
* megasas_check_reset_ppc - For controller reset check
|
||||||
* @regs: MFI register set
|
* @regs: MFI register set
|
||||||
|
@ -495,8 +488,12 @@ static int
|
||||||
megasas_check_reset_ppc(struct megasas_instance *instance,
|
megasas_check_reset_ppc(struct megasas_instance *instance,
|
||||||
struct megasas_register_set __iomem *regs)
|
struct megasas_register_set __iomem *regs)
|
||||||
{
|
{
|
||||||
|
if (instance->adprecovery != MEGASAS_HBA_OPERATIONAL)
|
||||||
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct megasas_instance_template megasas_instance_template_ppc = {
|
static struct megasas_instance_template megasas_instance_template_ppc = {
|
||||||
|
|
||||||
.fire_cmd = megasas_fire_cmd_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,
|
.disable_intr = megasas_disable_intr_ppc,
|
||||||
.clear_intr = megasas_clear_intr_ppc,
|
.clear_intr = megasas_clear_intr_ppc,
|
||||||
.read_fw_status_reg = megasas_read_fw_status_reg_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,
|
.check_reset = megasas_check_reset_ppc,
|
||||||
.service_isr = megasas_isr,
|
.service_isr = megasas_isr,
|
||||||
.tasklet = megasas_complete_cmd_dpc,
|
.tasklet = megasas_complete_cmd_dpc,
|
||||||
|
@ -620,6 +617,9 @@ static int
|
||||||
megasas_check_reset_skinny(struct megasas_instance *instance,
|
megasas_check_reset_skinny(struct megasas_instance *instance,
|
||||||
struct megasas_register_set __iomem *regs)
|
struct megasas_register_set __iomem *regs)
|
||||||
{
|
{
|
||||||
|
if (instance->adprecovery != MEGASAS_HBA_OPERATIONAL)
|
||||||
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче