From a60742a7a902c51ed09bb3a5580753bc68a2f4dc Mon Sep 17 00:00:00 2001 From: Xiangliang Yu Date: Thu, 29 Sep 2011 00:33:49 -0700 Subject: [PATCH] --- yaml --- r: 271083 b: refs/heads/master c: 477f6d190bdebc9a3ec99e4bb396b981f747bf19 h: refs/heads/master i: 271081: 51a187b8e332aeb81c464c36abd7dc79487c5d46 271079: a3aabbd479108b0c02d403b3ba6b0136ea1b9bf3 v: v3 --- [refs] | 2 +- trunk/drivers/scsi/mvsas/mv_94xx.c | 4 ++++ trunk/drivers/scsi/mvsas/mv_sas.c | 12 ++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index d76e45abba95..9d599f706c63 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f7e45b6a09fad88b4d1e87d55c26e79578c5fa18 +refs/heads/master: 477f6d190bdebc9a3ec99e4bb396b981f747bf19 diff --git a/trunk/drivers/scsi/mvsas/mv_94xx.c b/trunk/drivers/scsi/mvsas/mv_94xx.c index 3501291618fd..8f32c7c567cf 100644 --- a/trunk/drivers/scsi/mvsas/mv_94xx.c +++ b/trunk/drivers/scsi/mvsas/mv_94xx.c @@ -823,6 +823,10 @@ static void mvs_94xx_fix_phy_info(struct mvs_info *mvi, int i, phy->att_dev_info = PORT_DEV_STP_TRGT | 1; } + /* enable spin up bit */ + mvs_write_port_cfg_addr(mvi, i, PHYR_PHY_STAT); + mvs_write_port_cfg_data(mvi, i, 0x04); + } void mvs_94xx_phy_set_link_rate(struct mvs_info *mvi, u32 phy_id, diff --git a/trunk/drivers/scsi/mvsas/mv_sas.c b/trunk/drivers/scsi/mvsas/mv_sas.c index ab2a71fd0fde..d4475d350847 100644 --- a/trunk/drivers/scsi/mvsas/mv_sas.c +++ b/trunk/drivers/scsi/mvsas/mv_sas.c @@ -265,6 +265,12 @@ static void mvs_bytes_dmaed(struct mvs_info *mvi, int i) id->dev_type = phy->identify.device_type; id->initiator_bits = SAS_PROTOCOL_ALL; id->target_bits = phy->identify.target_port_protocols; + + /* direct attached SAS device */ + if (phy->att_dev_info & PORT_SSP_TRGT_MASK) { + MVS_CHIP_DISP->write_port_cfg_addr(mvi, i, PHYR_PHY_STAT); + MVS_CHIP_DISP->write_port_cfg_data(mvi, i, 0x00); + } } else if (phy->phy_type & PORT_TYPE_SATA) { /*Nothing*/ } @@ -1211,6 +1217,12 @@ static void mvs_port_notify_formed(struct asd_sas_phy *sas_phy, int lock) port->wide_port_phymap = sas_port->phy_mask; mv_printk("set wide port phy map %x\n", sas_port->phy_mask); mvs_update_wideport(mvi, sas_phy->id); + + /* direct attached SAS device */ + if (phy->att_dev_info & PORT_SSP_TRGT_MASK) { + MVS_CHIP_DISP->write_port_cfg_addr(mvi, i, PHYR_PHY_STAT); + MVS_CHIP_DISP->write_port_cfg_data(mvi, i, 0x04); + } } if (lock) spin_unlock_irqrestore(&mvi->lock, flags);