Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7d029005 authored by Nikith Ganigarakoppal's avatar Nikith Ganigarakoppal Committed by James Bottomley
Browse files

[SCSI] pm80xx: Resetting the phy state.



Setting the phy state for hard reset response.
After sending hard reset for a device ,phy down event sets
the phy state to zero but for phy up event it will not set
the phy state again.This will cause problem to successive
hard resets.

Signed-off-by: default avatar <Nikith.Ganigarakoppal@pmcs.com>
Signed-off-by: default avatar <Anandkumar.Santhanam@pmcs.com>
Reviewed-by: default avatarJack Wang <jinpu.wang@profitbricks.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 34a9b81b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -3403,6 +3403,7 @@ hw_event_sas_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb)
	unsigned long flags;
	u8 deviceType = pPayload->sas_identify.dev_type;
	port->port_state =  portstate;
	phy->phy_state = PHY_STATE_LINK_UP_SPC;
	PM8001_MSG_DBG(pm8001_ha,
		pm8001_printk("HW_EVENT_SAS_PHY_UP port id = %d, phy id = %d\n",
		port_id, phy_id));
@@ -3483,6 +3484,7 @@ hw_event_sata_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb)
		pm8001_printk("HW_EVENT_SATA_PHY_UP port id = %d,"
		" phy id = %d\n", port_id, phy_id));
	port->port_state =  portstate;
	phy->phy_state = PHY_STATE_LINK_UP_SPC;
	port->port_attached = 1;
	pm8001_get_lrate_mode(phy, link_rate);
	phy->phy_type |= PORT_TYPE_SATA;
+4 −0
Original line number Diff line number Diff line
@@ -131,6 +131,10 @@
#define LINKRATE_30			(0x02 << 8)
#define LINKRATE_60			(0x04 << 8)

/* for phy state */

#define PHY_STATE_LINK_UP_SPC		0x1

/* for new SPC controllers MEMBASE III is shared between BIOS and DATA */
#define GSM_SM_BASE			0x4F0000
struct mpi_msg_hdr{
+2 −0
Original line number Diff line number Diff line
@@ -2894,6 +2894,7 @@ hw_event_sas_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb)
	unsigned long flags;
	u8 deviceType = pPayload->sas_identify.dev_type;
	port->port_state = portstate;
	phy->phy_state = PHY_STATE_LINK_UP_SPCV;
	PM8001_MSG_DBG(pm8001_ha, pm8001_printk(
		"portid:%d; phyid:%d; linkrate:%d; "
		"portstate:%x; devicetype:%x\n",
@@ -2978,6 +2979,7 @@ hw_event_sata_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb)
				port_id, phy_id, link_rate, portstate));

	port->port_state = portstate;
	phy->phy_state = PHY_STATE_LINK_UP_SPCV;
	port->port_attached = 1;
	pm8001_get_lrate_mode(phy, link_rate);
	phy->phy_type |= PORT_TYPE_SATA;
+2 −0
Original line number Diff line number Diff line
@@ -215,6 +215,8 @@
#define SAS_DOPNRJT_RTRY_TMO            128
#define SAS_COPNRJT_RTRY_TMO            128

/* for phy state */
#define PHY_STATE_LINK_UP_SPCV		0x2
/*
  Making ORR bigger than IT NEXUS LOSS which is 2000000us = 2 second.
  Assuming a bigger value 3 second, 3000000/128 = 23437.5 where 128