pm80xx: WWN Modification for PM8081/88/89 controllers
Subsystems (2)
PATCH RESEND 11/13 pm80xx: WWN Modification for PM8081/88/89 controllers
Quoted 1 line
From
ce9a8bdcd9bf1ab662683c6de1f460c807d8f120Mon Sep 17 00:00:00 2001
From: Sakthivel K <[email protected]>
Date: Tue, 5 Feb 2013 12:07:19 +0530
Subject: [PATCH 11/13] pm80xx: WWN Modification for PM8081/88/89 controllers
Individual WWN read operations based on controller. PM8081 - Read WWN from Flash VPD.
PM8088/89 - Read WWN from EEPROM.
PM8001 - Read WWN from NVM.
--- drivers/scsi/pm8001/pm8001_init.c | 43 +++++++++++++++++++++++++++++++------ 1 files changed, 36 insertions(+), 7 deletions(-)
drivers/scsi/pm8001/pm8001_init.c +36 -7
@@ -1566,21 +1566,50 @@ static void pm8001_post_sas_ha_init(struct Scsi_Host *shost,*/ static void pm8001_init_sas_add (struct pm8001_hba_info *pm8001_ha) { -u8 i; +u8 i, j;#ifdef PM8001_READ_VPD +/* For new SPC controllers WWN is stored in flash vpd +* For SPC/SPCve controllers WWN is stored in EEPROM +* For Older SPC WWN is stored in NVMD +*/ DECLARE_COMPLETION_ONSTACK (completion);struct pm8001_ioctl_payload payload; +u16 deviceid; +pci_read_config_word (pm8001_ha->pdev,PCI_DEVICE_ID , &deviceid); pm8001_ha->nvmd_completion = &completion; - payload.minor_function =0 ; - payload.length =128 ; - payload.func_specific =kzalloc (128 ,GFP_KERNEL ); + +if (pm8001_ha->chip_id == chip_8001) { +if (deviceid ==0x8081 ) { + payload.minor_function =4 ; + payload.length =4096 ; + }else { + payload.minor_function =0 ; + payload.length =128 ; + } + }else { + payload.minor_function =1 ; + payload.length =4096 ; + } + payload.offset =0 ; + payload.func_specific =kzalloc (payload.length,GFP_KERNEL );PM8001_CHIP_DISP ->get_nvmd_req (pm8001_ha, &payload);wait_for_completion (&completion); + +for (i =0 , j =0 ; i <=7 ; i++, j++) { +if (pm8001_ha->chip_id == chip_8001) { +if (deviceid ==0x8081 ) + pm8001_ha->sas_addr[j] = + payload.func_specific[0x704 + i]; + }else + pm8001_ha->sas_addr[j] = + payload.func_specific[0x804 + i]; + } +for (i =0 ; i < pm8001_ha->chip->n_phy; i++) { -memcpy (&pm8001_ha->phy[i].dev_sas_addr, pm8001_ha->sas_addr, -SAS_ADDR_SIZE ); +memcpy (&pm8001_ha->phy[i].dev_sas_addr, + pm8001_ha->sas_addr,SAS_ADDR_SIZE );PM8001_INIT_DBG (pm8001_ha, -pm8001_printk ("phy %d sas_addr = %016llx \n" , i, +pm8001_printk ("phy %d sas_addr = %016llx\n" , i, pm8001_ha->phy[i].dev_sas_addr)); }#else
Signature · 1 line
1.7.1
Quoted 1 line
From
ce9a8bdcd9bf1ab662683c6de1f460c807d8f120Mon Sep 17 00:00:00 2001
From: Sakthivel K <[email protected]>
Date: Tue, 5 Feb 2013 12:07:19 +0530
Subject: [PATCH 11/13] pm80xx: WWN Modification for PM8081/88/89 controllers
Individual WWN read operations based on controller. PM8081 - Read WWN from Flash VPD.
PM8088/89 - Read WWN from EEPROM.
PM8001 - Read WWN from NVM.
--- drivers/scsi/pm8001/pm8001_init.c | 43 +++++++++++++++++++++++++++++++------ 1 files changed, 36 insertions(+), 7 deletions(-)
drivers/scsi/pm8001/pm8001_init.c +36 -7
57 lines not on this page · raw message
Signature · 1 line
1.7.1