Skip to content

Commit

Permalink
[SCSI] isci: fix start OOB
Browse files Browse the repository at this point in the history
Split scu_link_layer_start_oob function to reset and enable and
add flush after all steps.

Signed-off-by: Marcin Tomczak <marcin.tomczak@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
  • Loading branch information
Marcin Tomczak authored and James Bottomley committed Jan 16, 2012
1 parent be77834 commit 0953dbe
Showing 1 changed file with 18 additions and 17 deletions.
35 changes: 18 additions & 17 deletions drivers/scsi/isci/phy.c
Original file line number Diff line number Diff line change
Expand Up @@ -1098,24 +1098,25 @@ static void scu_link_layer_stop_protocol_engine(
writel(enable_spinup_value, &iphy->link_layer_registers->notify_enable_spinup_control);
}

/**
*
*
* This method will start the OOB/SN state machine for this struct isci_phy object.
*/
static void scu_link_layer_start_oob(
struct isci_phy *iphy)
static void scu_link_layer_start_oob(struct isci_phy *iphy)
{
u32 scu_sas_pcfg_value;

scu_sas_pcfg_value =
readl(&iphy->link_layer_registers->phy_configuration);
scu_sas_pcfg_value |= SCU_SAS_PCFG_GEN_BIT(OOB_ENABLE);
scu_sas_pcfg_value &=
~(SCU_SAS_PCFG_GEN_BIT(OOB_RESET) |
SCU_SAS_PCFG_GEN_BIT(HARD_RESET));
writel(scu_sas_pcfg_value,
&iphy->link_layer_registers->phy_configuration);
struct scu_link_layer_registers __iomem *ll = iphy->link_layer_registers;
u32 val;

/** Reset OOB sequence - start */
val = readl(&ll->phy_configuration);
val &= ~(SCU_SAS_PCFG_GEN_BIT(OOB_RESET) |
SCU_SAS_PCFG_GEN_BIT(HARD_RESET));
writel(val, &ll->phy_configuration);
readl(&ll->phy_configuration); /* flush */
/** Reset OOB sequence - end */

/** Start OOB sequence - start */
val = readl(&ll->phy_configuration);
val |= SCU_SAS_PCFG_GEN_BIT(OOB_ENABLE);
writel(val, &ll->phy_configuration);
readl(&ll->phy_configuration); /* flush */
/** Start OOB sequence - end */
}

/**
Expand Down

0 comments on commit 0953dbe

Please sign in to comment.