pm80xx: Added SPCv/ve specific hardware functionalities and, relavent changes in common files
Subsystems (2)
PATCH v3 6/12 pm80xx: Added SPCv/ve specific hardware functionalities and, relavent changes in common files
Quoted 1 line
From
8f9688c990a882c2cfa5a9b08b5bb37f0946b500Mon Sep 17 00:00:00 2001
From: Sakthivel K <[email protected]>
Date: Tue, 19 Mar 2013 18:02:31 +0530
Subject: [PATCH V3 06/12] pm80xx: Added SPCv/ve specific hardware functionalities and
relavent changes in common files
Implementation of SPCv/ve specific hardware functionality and macros. Changing common functionalities wrt SPCv/ve operations. Conditional checks for SPC specific operations.
--- drivers/scsi/pm8001/Makefile | 7 +- drivers/scsi/pm8001/pm8001_hwi.c | 4 +- drivers/scsi/pm8001/pm8001_hwi.h | 2 +- drivers/scsi/pm8001/pm8001_init.c | 13 +- drivers/scsi/pm8001/pm8001_sas.c | 17 +- drivers/scsi/pm8001/pm8001_sas.h | 5 +- drivers/scsi/pm8001/pm80xx_hwi.c | 3773 +++++++++++++++++++++++++++++++++++++ drivers/scsi/pm8001/pm80xx_hwi.h | 1481 +++++++++++++++ 8 files changed, 5284 insertions(+), 18 deletions(-) create mode 100644 drivers/scsi/pm8001/pm80xx_hwi.c create mode 100644 drivers/scsi/pm8001/pm80xx_hwi.h
drivers/scsi/pm8001/Makefile +4 -3
@@ -4,9 +4,10 @@ # Copyright (C) 2008-2009 USI Co., Ltd. -obj-$(CONFIG_SCSI_PM8001) += pm8001.o -pm8001-y += pm8001_init.o \ +obj-$(CONFIG_SCSI_PM8001) += pm80xx.o +pm80xx-y += pm8001_init.o \ pm8001_sas.o \ pm8001_ctl.o \ - pm8001_hwi.o + pm8001_hwi.o \ + pm80xx_hwi.o
drivers/scsi/pm8001/pm8001_hwi.c +2 -2
@@ -785,14 +785,14 @@ static u32 soft_reset_ready_check(struct pm8001_hba_info *pm8001_ha)* pm8001_chip_soft_rst - soft reset the PM8001 chip, so that the clear all * the FW register status to the originated status. * @pm8001_ha: our hba card information -* @signature: signature in host scratch pad0 register. */ static int -pm8001_chip_soft_rst (struct pm8001_hba_info *pm8001_ha,u32 signature) +pm8001_chip_soft_rst (struct pm8001_hba_info *pm8001_ha) {u32 regVal, toggleVal;u32 max_wait_count;u32 regVal1, regVal2, regVal3; +u32 signature =0x252acbcd ;/* for host scratch pad0 */ unsigned long flags;/* step1: Check FW is ready for soft reset */
drivers/scsi/pm8001/pm8001_hwi.h +1 -1
@@ -298,7 +298,7 @@ struct local_phy_ctl_resp {#define OP_BITS 0x0000FF00 -#define ID_BITS 0x0000000F +#define ID_BITS 0x000000FF/* * brief the data structure of PORT Control Command
drivers/scsi/pm8001/pm8001_init.c +9 -4
@@ -784,7 +784,7 @@ static int pm8001_pci_probe(struct pci_dev *pdev, goto err_out_free; }list_add_tail (&pm8001_ha->list, &hba_list); -PM8001_CHIP_DISP ->chip_soft_rst (pm8001_ha,0x252acbcd ); +PM8001_CHIP_DISP ->chip_soft_rst (pm8001_ha); rc =PM8001_CHIP_DISP ->chip_init (pm8001_ha);if (rc) goto err_out_ha_free;
@@ -838,7 +838,7 @@ static void pm8001_pci_remove(struct pci_dev *pdev)list_del (&pm8001_ha->list);scsi_remove_host (pm8001_ha->shost);PM8001_CHIP_DISP ->interrupt_disable (pm8001_ha,0xFF ); -PM8001_CHIP_DISP ->chip_soft_rst (pm8001_ha,0x252acbcd ); +PM8001_CHIP_DISP ->chip_soft_rst (pm8001_ha);#ifdef PM8001_USE_MSIX for (i =0 ; i < pm8001_ha->number_of_intr; i++)
@@ -883,7 +883,7 @@ static int pm8001_pci_suspend(struct pci_dev *pdev, pm_message_t state)return -ENODEV ; }PM8001_CHIP_DISP ->interrupt_disable (pm8001_ha,0xFF ); -PM8001_CHIP_DISP ->chip_soft_rst (pm8001_ha,0x252acbcd ); +PM8001_CHIP_DISP ->chip_soft_rst (pm8001_ha);#ifdef PM8001_USE_MSIX for (i =0 ; i < pm8001_ha->number_of_intr; i++)synchronize_irq (pm8001_ha->msix_entries[i].vector);
@@ -941,7 +941,12 @@ static int pm8001_pci_resume(struct pci_dev *pdev)if (rc) goto err_out_disable; -PM8001_CHIP_DISP ->chip_soft_rst (pm8001_ha,0x252acbcd ); +/* chip soft rst only for spc */ +if (pm8001_ha->chip_id == chip_8001) { +PM8001_CHIP_DISP ->chip_soft_rst (pm8001_ha); +PM8001_INIT_DBG (pm8001_ha, +pm8001_printk ("chip soft reset successful\n" )); + } rc =PM8001_CHIP_DISP ->chip_init (pm8001_ha);if (rc) goto err_out_disable;
drivers/scsi/pm8001/pm8001_sas.c +11 -6
@@ -1,5 +1,5 @@/* -* PMC-Sierra SPC 8001 SAS/SATA based host adapters driver +* PMC-Sierra PM8001/8081/8088/8089 SAS/SATA based host adapters driver * * Copyright (c) 2008-2009 USI Co., Ltd. * All rights reserved.
@@ -212,10 +212,12 @@ int pm8001_phy_control(struct asd_sas_phy *sas_phy, enum phy_func func,break ;case PHY_FUNC_GET_EVENTS :spin_lock_irqsave (&pm8001_ha->lock, flags); -if (-1 ==pm8001_bar4_shift (pm8001_ha, +if (pm8001_ha->chip_id == chip_8001) { +if (-1 ==pm8001_bar4_shift (pm8001_ha, (phy_id <4 ) ?0x30000 :0x40000 )) { -spin_unlock_irqrestore (&pm8001_ha->lock, flags); -return -EINVAL ; +spin_unlock_irqrestore (&pm8001_ha->lock, flags); +return -EINVAL ; + } } {struct sas_phy *phy = sas_phy->phy;
@@ -228,7 +230,8 @@ int pm8001_phy_control(struct asd_sas_phy *sas_phy, enum phy_func func, phy->loss_of_dword_sync_count = qp[3 ]; phy->phy_reset_problem_count = qp[4 ]; } -pm8001_bar4_shift (pm8001_ha,0 ); +if (pm8001_ha->chip_id == chip_8001) +pm8001_bar4_shift (pm8001_ha,0 );spin_unlock_irqrestore (&pm8001_ha->lock, flags);return 0 ;default :
@@ -249,7 +252,9 @@ void pm8001_scan_start(struct Scsi_Host *shost)struct pm8001_hba_info *pm8001_ha;struct sas_ha_struct *sha =SHOST_TO_SAS_HA (shost); pm8001_ha = sha->lldd_ha; -PM8001_CHIP_DISP ->sas_re_init_req (pm8001_ha); +/* SAS_RE_INITIALIZATION not available in SPCv/ve */ +if (pm8001_ha->chip_id == chip_8001) +PM8001_CHIP_DISP ->sas_re_init_req (pm8001_ha);for (i =0 ; i < pm8001_ha->chip->n_phy; ++i)PM8001_CHIP_DISP ->phy_start_req (pm8001_ha, i); }
drivers/scsi/pm8001/pm8001_sas.h +3 -2
@@ -1,5 +1,5 @@/* -* PMC-Sierra 8001/8081/8088/8089 SAS/SATA based host adapters driver +* PMC-Sierra PM8001/8081/8088/8089 SAS/SATA based host adapters driver * * Copyright (c) 2008-2009 USI Co., Ltd. * All rights reserved.
@@ -132,7 +132,7 @@ struct pm8001_ioctl_payload {struct pm8001_dispatch {char *name;int (*chip_init)(struct pm8001_hba_info *pm8001_ha); -int (*chip_soft_rst)(struct pm8001_hba_info *pm8001_ha,u32 signature); +int (*chip_soft_rst)(struct pm8001_hba_info *pm8001_ha);void (*chip_rst)(struct pm8001_hba_info *pm8001_ha);int (*chip_ioremap)(struct pm8001_hba_info *pm8001_ha);void (*chip_iounmap)(struct pm8001_hba_info *pm8001_ha);
@@ -454,6 +454,7 @@ struct pm8001_hba_info {#endif u32 logging_level;u32 fw_status; +u32 smp_exp_mode;u32 int_vector;const struct firmware *fw_image;u8 outq[PM8001_MAX_MSIX_VEC ];
drivers/scsi/pm8001/pm80xx_hwi.c new file +3773 -0
2,865 lines not on this page · raw message
drivers/scsi/pm8001/pm80xx_hwi.h new file +1481 -0
1,481 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
1.7.1
Quoted 1 line
From
8f9688c990a882c2cfa5a9b08b5bb37f0946b500Mon Sep 17 00:00:00 2001
From: Sakthivel K <[email protected]>
Date: Tue, 19 Mar 2013 18:02:31 +0530
Subject: [PATCH V3 06/12] pm80xx: Added SPCv/ve specific hardware functionalities and
relavent changes in common files
Implementation of SPCv/ve specific hardware functionality and macros. Changing common functionalities wrt SPCv/ve operations. Conditional checks for SPC specific operations.
--- drivers/scsi/pm8001/Makefile | 7 +- drivers/scsi/pm8001/pm8001_hwi.c | 4 +- drivers/scsi/pm8001/pm8001_hwi.h | 2 +- drivers/scsi/pm8001/pm8001_init.c | 13 +- drivers/scsi/pm8001/pm8001_sas.c | 17 +- drivers/scsi/pm8001/pm8001_sas.h | 5 +- drivers/scsi/pm8001/pm80xx_hwi.c | 3773 +++++++++++++++++++++++++++++++++++++ drivers/scsi/pm8001/pm80xx_hwi.h | 1481 +++++++++++++++ 8 files changed, 5284 insertions(+), 18 deletions(-) create mode 100644 drivers/scsi/pm8001/pm80xx_hwi.c create mode 100644 drivers/scsi/pm8001/pm80xx_hwi.h
drivers/scsi/pm8001/pm80xx_hwi.c new file +3773 -0
3,773 lines not on this page · raw message
drivers/scsi/pm8001/pm80xx_hwi.h new file +1481 -0
1,481 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
1.7.1
Part of the diff is not shown here. View the raw message.