Re: [PATCH 1/5] pm80xx: Device id changes to support series 8 controllers.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09/16/2013 05:52 PM, Anand wrote:
> From 97828e9274b0bd1a26c3161a3297ad4c7d9512be Mon Sep 17 00:00:00 2001
> From: Anand Kumar Santhanam <AnandKumar.Santhanam@xxxxxxxx>
> Date: Tue, 3 Sep 2013 15:09:42 +0530
> Subject: [PATCH 1/5] pm80xx: Device id changes to support series 8 controllers.
> 
> Updated pci id table with device, vendor, subdevice and subvendor ids
> for 8074, 8076, 8077 SAS/SATA 12G controllers. Added 12G related macros.
> 
> Signed-off-by: Anandkumar.Santhanam@xxxxxxxx
> 
> ---
>  drivers/scsi/pm8001/pm8001_defs.h |    5 ++++-
>  drivers/scsi/pm8001/pm8001_init.c |   32 +++++++++++++++++++++++++++++++-
>  drivers/scsi/pm8001/pm8001_sas.h  |    4 ++++
>  drivers/scsi/pm8001/pm80xx_hwi.c  |   14 +++++++++++---
>  drivers/scsi/pm8001/pm80xx_hwi.h  |    9 +++++----
>  5 files changed, 55 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/scsi/pm8001/pm8001_defs.h b/drivers/scsi/pm8001/pm8001_defs.h
> index 479c5a7..4bb304d 100644
> --- a/drivers/scsi/pm8001/pm8001_defs.h
> +++ b/drivers/scsi/pm8001/pm8001_defs.h
> @@ -46,7 +46,10 @@ enum chip_flavors {
>  	chip_8008,
>  	chip_8009,
>  	chip_8018,
> -	chip_8019
> +	chip_8019,
> +	chip_8074,
> +	chip_8076,
> +	chip_8077
>  };
>  
>  enum phy_speed {
> diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
> index 61f5405..09e557b 100644
> --- a/drivers/scsi/pm8001/pm8001_init.c
> +++ b/drivers/scsi/pm8001/pm8001_init.c
> @@ -54,6 +54,9 @@ static const struct pm8001_chip_info pm8001_chips[] = {
>  	[chip_8009] = {1,  8, &pm8001_80xx_dispatch,},
>  	[chip_8018] = {0,  16, &pm8001_80xx_dispatch,},
>  	[chip_8019] = {1,  16, &pm8001_80xx_dispatch,},
> +	[chip_8074] = {0,  8, &pm8001_80xx_dispatch,},
> +	[chip_8076] = {0,  16, &pm8001_80xx_dispatch,},
> +	[chip_8077] = {0,  16, &pm8001_80xx_dispatch,},
>  };
>  static int pm8001_id;
>  
> @@ -1037,6 +1040,12 @@ static struct pci_device_id pm8001_pci_table[] = {
>  	{ PCI_VDEVICE(ADAPTEC2, 0x8009), chip_8009 },
>  	{ PCI_VDEVICE(PMC_Sierra, 0x8019), chip_8019 },
>  	{ PCI_VDEVICE(ADAPTEC2, 0x8019), chip_8019 },
> +	{ PCI_VDEVICE(PMC_Sierra, 0x8074), chip_8074 },
> +	{ PCI_VDEVICE(ADAPTEC2, 0x8074), chip_8074 },
> +	{ PCI_VDEVICE(PMC_Sierra, 0x8076), chip_8076 },
> +	{ PCI_VDEVICE(ADAPTEC2, 0x8076), chip_8076 },
> +	{ PCI_VDEVICE(PMC_Sierra, 0x8077), chip_8077 },
> +	{ PCI_VDEVICE(ADAPTEC2, 0x8077), chip_8077 },
>  	{ PCI_VENDOR_ID_ADAPTEC2, 0x8081,
>  		PCI_VENDOR_ID_ADAPTEC2, 0x0400, 0, 0, chip_8001 },
>  	{ PCI_VENDOR_ID_ADAPTEC2, 0x8081,
> @@ -1057,6 +1066,24 @@ static struct pci_device_id pm8001_pci_table[] = {
>  		PCI_VENDOR_ID_ADAPTEC2, 0x0016, 0, 0, chip_8019 },
>  	{ PCI_VENDOR_ID_ADAPTEC2, 0x8089,
>  		PCI_VENDOR_ID_ADAPTEC2, 0x1600, 0, 0, chip_8019 },
> +	{ PCI_VENDOR_ID_ADAPTEC2, 0x8074,
> +		PCI_VENDOR_ID_ADAPTEC2, 0x0800, 0, 0, chip_8074 },
> +	{ PCI_VENDOR_ID_ADAPTEC2, 0x8076,
> +		PCI_VENDOR_ID_ADAPTEC2, 0x1600, 0, 0, chip_8076 },
> +	{ PCI_VENDOR_ID_ADAPTEC2, 0x8077,
> +		PCI_VENDOR_ID_ADAPTEC2, 0x1600, 0, 0, chip_8077 },
> +	{ PCI_VENDOR_ID_ADAPTEC2, 0x8074,
> +		PCI_VENDOR_ID_ADAPTEC2, 0x0008, 0, 0, chip_8074 },
> +	{ PCI_VENDOR_ID_ADAPTEC2, 0x8076,
> +		PCI_VENDOR_ID_ADAPTEC2, 0x0016, 0, 0, chip_8076 },
> +	{ PCI_VENDOR_ID_ADAPTEC2, 0x8077,
> +		PCI_VENDOR_ID_ADAPTEC2, 0x0016, 0, 0, chip_8077 },
> +	{ PCI_VENDOR_ID_ADAPTEC2, 0x8076,
> +		PCI_VENDOR_ID_ADAPTEC2, 0x0808, 0, 0, chip_8076 },
> +	{ PCI_VENDOR_ID_ADAPTEC2, 0x8077,
> +		PCI_VENDOR_ID_ADAPTEC2, 0x0808, 0, 0, chip_8077 },
> +	{ PCI_VENDOR_ID_ADAPTEC2, 0x8074,
> +		PCI_VENDOR_ID_ADAPTEC2, 0x0404, 0, 0, chip_8074 },
>  	{} /* terminate list */
>  };
>  
> @@ -1108,8 +1135,11 @@ module_init(pm8001_init);
>  module_exit(pm8001_exit);
>  
>  MODULE_AUTHOR("Jack Wang <jack_wang@xxxxxxxxx>");
> +MODULE_AUTHOR("Anand Kumar Santhanam <AnandKumar.Santhanam@xxxxxxxx>");
> +MODULE_AUTHOR("Sangeetha Gnanasekaran <Sangeetha.Gnanasekaran@xxxxxxxx>");
>  MODULE_DESCRIPTION(
> -		"PMC-Sierra PM8001/8081/8088/8089 SAS/SATA controller driver");
> +		"PMC-Sierra PM8001/8081/8088/8089/8074/8076/8077"
> +		"SAS/SATA controller driver");
>  MODULE_VERSION(DRV_VERSION);
>  MODULE_LICENSE("GPL");
>  MODULE_DEVICE_TABLE(pci, pm8001_pci_table);
> diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h
> index 5708194..a4fe235 100644
> --- a/drivers/scsi/pm8001/pm8001_sas.h
> +++ b/drivers/scsi/pm8001/pm8001_sas.h
> @@ -104,6 +104,10 @@ do {						\
>  
>  
>  #define DEV_IS_EXPANDER(type)	((type == SAS_EDGE_EXPANDER_DEVICE) || (type == SAS_FANOUT_EXPANDER_DEVICE))
> +#define ISSPCV_12G(dev)		\
> +	((dev->device == 0X8074) ? 1 :		\
> +		((dev->device == 0X8076) ? 1 :		\
> +			((dev->device == 0X8077) ? 1 : 0)))
>  
Hi Anand,

how about just
#define IS_SPCV_12G(dev) ((dev->device == 0x8074) \
			||(dev->device == 0x8076) \
			|| (dev->device == 0x8077))

>  #define PM8001_NAME_LENGTH		32/* generic length of strings */
>  extern struct list_head hba_list;
> diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
> index 9f91030..be0b394 100644
> --- a/drivers/scsi/pm8001/pm80xx_hwi.c
> +++ b/drivers/scsi/pm8001/pm80xx_hwi.c
> @@ -430,7 +430,11 @@ static int mpi_init_check(struct pm8001_hba_info *pm8001_ha)
>  	table is updated */
>  	pm8001_cw32(pm8001_ha, 0, MSGU_IBDB_SET, SPCv_MSGU_CFG_TABLE_UPDATE);
>  	/* wait until Inbound DoorBell Clear Register toggled */
> -	max_wait_count = 2 * 1000 * 1000;/* 2 sec for spcv/ve */
> +	if (ISSPCV_12G(pm8001_ha->pdev)) {
> +		max_wait_count = 4 * 1000 * 1000;/* 4 sec */
> +	} else {
> +		max_wait_count = 2 * 1000 * 1000;/* 2 sec */
> +	}
>  	do {
>  		udelay(1);
>  		value = pm8001_cr32(pm8001_ha, 0, MSGU_IBDB_SET);
> @@ -913,7 +917,11 @@ static int mpi_uninit_check(struct pm8001_hba_info *pm8001_ha)
>  	pm8001_cw32(pm8001_ha, 0, MSGU_IBDB_SET, SPCv_MSGU_CFG_TABLE_RESET);
>  
>  	/* wait until Inbound DoorBell Clear Register toggled */
> -	max_wait_count = 2 * 1000 * 1000;	/* 2 sec for spcv/ve */
> +	if (ISSPCV_12G(pm8001_ha->pdev)) {
> +		max_wait_count = 4 * 1000 * 1000;/* 4 sec */
> +	} else {
> +		max_wait_count = 2 * 1000 * 1000;/* 2 sec */
> +	}
>  	do {
>  		udelay(1);
>  		value = pm8001_cr32(pm8001_ha, 0, MSGU_IBDB_SET);
> @@ -3943,7 +3951,7 @@ pm80xx_chip_phy_start_req(struct pm8001_hba_info *pm8001_ha, u8 phy_id)
>  	 */
>  	payload.ase_sh_lm_slr_phyid = cpu_to_le32(SPINHOLD_DISABLE |
>  			LINKMODE_AUTO | LINKRATE_15 |
> -			LINKRATE_30 | LINKRATE_60 | phy_id);
> +			LINKRATE_30 | LINKRATE_60 | LINKRATE_120 | phy_id);
>  	/* SSC Disable and SAS Analog ST configuration */
>  	/**
>  	payload.ase_sh_lm_slr_phyid =
> diff --git a/drivers/scsi/pm8001/pm80xx_hwi.h b/drivers/scsi/pm8001/pm80xx_hwi.h
> index 2b760ba..9a9116d 100644
> --- a/drivers/scsi/pm8001/pm80xx_hwi.h
> +++ b/drivers/scsi/pm8001/pm80xx_hwi.h
> @@ -168,6 +168,7 @@
>  #define LINKRATE_15			(0x01 << 8)
>  #define LINKRATE_30			(0x02 << 8)
>  #define LINKRATE_60			(0x06 << 8)
> +#define LINKRATE_120			(0x08 << 8)
>  
>  /* Thermal related */
>  #define	THERMAL_ENABLE			0x1
> @@ -1223,10 +1224,10 @@ typedef struct SASProtocolTimerConfig SASProtocolTimerConfig_t;
>  
>  /* MSGU CONFIGURATION TABLE*/
>  
> -#define SPCv_MSGU_CFG_TABLE_UPDATE		0x01
> -#define SPCv_MSGU_CFG_TABLE_RESET		0x02
> -#define SPCv_MSGU_CFG_TABLE_FREEZE		0x04
> -#define SPCv_MSGU_CFG_TABLE_UNFREEZE		0x08
> +#define SPCv_MSGU_CFG_TABLE_UPDATE		0x001
> +#define SPCv_MSGU_CFG_TABLE_RESET		0x002
> +#define SPCv_MSGU_CFG_TABLE_FREEZE		0x004
> +#define SPCv_MSGU_CFG_TABLE_UNFREEZE		0x008
>  #define MSGU_IBDB_SET				0x00
>  #define MSGU_HOST_INT_STATUS			0x08
>  #define MSGU_HOST_INT_MASK			0x0C
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux