diff options
Diffstat (limited to 'drivers/scsi/mvsas/mv_chips.h')
| -rw-r--r-- | drivers/scsi/mvsas/mv_chips.h | 20 | 
1 files changed, 5 insertions, 15 deletions
diff --git a/drivers/scsi/mvsas/mv_chips.h b/drivers/scsi/mvsas/mv_chips.h index a67e1c4172f..8c4479ab49e 100644 --- a/drivers/scsi/mvsas/mv_chips.h +++ b/drivers/scsi/mvsas/mv_chips.h @@ -3,6 +3,7 @@   *   * Copyright 2007 Red Hat, Inc.   * Copyright 2008 Marvell. <kewei@marvell.com> + * Copyright 2009-2011 Marvell. <yuxiangl@marvell.com>   *   * This file is licensed under GPLv2.   * @@ -159,11 +160,10 @@ static inline void mvs_write_port_irq_mask(struct mvs_info *mvi,  			MVS_P4_INT_MASK, port, val);  } -static inline void __devinit mvs_phy_hacks(struct mvs_info *mvi) +static inline void mvs_phy_hacks(struct mvs_info *mvi)  {  	u32 tmp; -	/* workaround for SATA R-ERR, to ignore phy glitch */  	tmp = mvs_cr32(mvi, CMD_PHY_TIMER);  	tmp &= ~(1 << 9);  	tmp |= (1 << 10); @@ -178,23 +178,10 @@ static inline void __devinit mvs_phy_hacks(struct mvs_info *mvi)  	tmp |= 0x3fff;  	mvs_cw32(mvi, CMD_SAS_CTL0, tmp); -	/* workaround for WDTIMEOUT , set to 550 ms */  	mvs_cw32(mvi, CMD_WD_TIMER, 0x7a0000);  	/* not to halt for different port op during wideport link change */  	mvs_cw32(mvi, CMD_APP_ERR_CONFIG, 0xffefbf7d); - -	/* workaround for Seagate disk not-found OOB sequence, recv -	 * COMINIT before sending out COMWAKE */ -	tmp = mvs_cr32(mvi, CMD_PHY_MODE_21); -	tmp &= 0x0000ffff; -	tmp |= 0x00fa0000; -	mvs_cw32(mvi, CMD_PHY_MODE_21, tmp); - -	tmp = mvs_cr32(mvi, CMD_PHY_TIMER); -	tmp &= 0x1fffffff; -	tmp |= (2U << 29);	/* 8 ms retry */ -	mvs_cw32(mvi, CMD_PHY_TIMER, tmp);  }  static inline void mvs_int_sata(struct mvs_info *mvi) @@ -222,6 +209,9 @@ static inline void mvs_int_full(struct mvs_info *mvi)  			mvs_int_port(mvi, i, tmp);  	} +	if (stat & CINT_NON_SPEC_NCQ_ERROR) +		MVS_CHIP_DISP->non_spec_ncq_error(mvi); +  	if (stat & CINT_SRS)  		mvs_int_sata(mvi);  | 
