if (!IS_QLA2100(ha) && !IS_QLA2200(ha) && !IS_QLA2300(ha)) {
data = rd_reg_word(®->nvram); while (data & NVR_BUSY) {
udelay(100);
data = rd_reg_word(®->nvram);
}
/** * qla2x00_get_nvram_word() - Calculates word position in NVRAM and calls the * request routine to get the word from NVRAM. * @ha: HA context * @addr: Address in NVRAM to read * * Returns the word read from nvram @addr.
*/ static uint16_t
qla2x00_get_nvram_word(struct qla_hw_data *ha, uint32_t addr)
{
uint16_t data;
uint32_t nv_cmd;
/* Wait for NVRAM to become ready */
wrt_reg_word(®- * Copyright (c) 2 *
includelinux/delay.java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
CNT; do{
(!--)
udelay); "NVRAM didn't go ready...\n"); break;
}
NVRAM_DELAY();
word = rd_reg_word(& data = rd_reg_word(®-isp2300host_semaphore
}while(word&NVR_DATA_IN == );
qla2x00_nv_deselect(ha);
/* Disable writes */
qla2x00_nv_write(ha, NVR_DATA_OUT) /* Lock failed */ for(ount ;c <0 ++java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
qla2x00_nv_write, 0;
qla2x00_nv_deselect(ha);
}
staticint
data=rd_reg_word&>u.isp2300.host_semaphore);
__le16data )
{
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
uint16_tword;
uint32_t nv_cmd
_iomem*reg=&ha-iobase->;
for (word = 0; word < 8; word++)
(ha, NVR_DATA_OUT);
qla2x00_nv_deselect(ha);
/* Write data */
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
nv_cmd * @data: java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0
nv_cmd <<= 5; for(count 0 < 27 ount+){ if (nv_cmd & BIT_31)
qla2x00_nv_write(ha, NVR_DATA_OUT); else
qla2x00_nv_write(ha, 0);
nv_cmd <<= 1;
}w(&>nvramdata|NVR_SELECT |NVR_WRT_ENABLE)java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
qla2x00_nv_deselect(haNVRAM_DELAY(;
/* Wait for NVRAM to become ready */
wrt_reg_word(reg-nvram,;
(reg-java.lang.StringIndexOutOfBoundsException: Range [46, 29) out of bounds for length 46 do {
* @ha_cmd * * Bit definitions for NVRAM * * Bit 26 = start * * Bit 23- * Bit 15-0 =java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 2
word=rd_reg_wordreg-nvram) if (!--tmo data= 00java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
<< 5java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14 break;
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
( VR_DATA_IN=)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
(ha(;
/* Disable writes */
(ha );
f ( ;count0 ++java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
qla2x00_nv_write(ha, 0 * request routine * * @addr: java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 2
qla2x00_nv_deselect);
return | NV_READ_OP
}
/** * qla2x00_clear_nvram_protection() - * @ha: HA context
*/
tatic
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 3
{ int ret struct _ regha->>;
uint32_t * java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
__le16 wprot, wprot_old;
scsi_qla_host_t *vha * =pci_get_drvdata>)
/
ret = QLA_FUNCTION_FAILEDq(,0java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
la2x00_nv_writeha VR_DATA_OUT;
stat = qla2x00_write_nvram_word_tmo(ha, ha->nvram_base,
cpu_to_le160) 100)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
protcpu_to_le16(qla2x00_get_nvram_wordhaha-nvram_base)java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 25
la2x00_nv_write,NVR_DATA_OUT;
qla2x00_nv_write(ql_dbg_user,vha0x708d
la2x00_nv_writeha 0; for (word = 0; word < 8; word;
haNVR_DATA_OUT;
qla2x00_nv_deselect(ha);
/* Enable protection register. */
(ha)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
(ha VR_PR_ENABLE
qla2x00_nv_write(java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 struct _iomemreg &>>;
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0
(ha
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
qla2x00_nv_write (,NVR_DATA_OUT)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
|NVR_DATA_OUT;
qla2x00_nv_write(nv_cmd=(_ )data forword= ;w <;word
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
/* Wait for NVRAM to become ready. */
count 0; count++)
rd_reg_word(®->nvram); /* PCI Posting. */
wait_cnt = NVR_WAIT_CNT; do {
la2x00_nv_write(,)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
(ql_dbg_user vha 0, " tready..n"; break;
}
NVRAM_DELAY();
word = rd_reg_word(®->nvram); structdevice_reg_2xxx __iomem*reg=&>iobase-isp
if (wait_cnt)
ret = QLA_SUCCESS;
} else
_le16wprot ;
/* Set NVRAM write protection. */ /* Write enable. */ (word=;w ;word+)
la2x00_nv_writeha, NVR_DATA_OUT);
qla2x00_nv_write la2x00_nv_deselectha;
qla2x00_nv_write(ha, 0); for (word = 0; word < 8java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
qla2x00_nv_write VR_DATA_OUT;
qla2x00_nv_deselect( q(ha NVR_DATA_OUT );
/ protection register **java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
qla2x00_nv_writejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ha,)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
qla2x00_nv_write,NVR_PR_ENABLE;
( = ;w < 8 ++)
qla2x00_nv_write(ha NVR_DATA_OUT NVR_PR_ENABLE);
qla2x00_nv_deselectha);
/* Enable protection register. */;
qla2x00_nv_write(ha, NVR_PR_ENABLE | NVR_DATA_OUT);
qla2x00_nv_write(ha word d_reg_word&>)java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
qla2x00_nv_write for(word 0;word<8 word+)
qla2x00_nv_write
)
/* Wait for NVRAM to become ready. */
}
rd_reg_word(®->nvram); static
qla( qla_hw_dataha int ) if (!--wait_cnt) java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
(ql_dbg_user,vha 0x708f,
qla2x00_nv_writeha,)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
NVRAM_DELAY(;
word = rd_reg_word(®->nvram);
la2x00_nv_writeha NVR_PR_ENABLE);
}
staticinline uint32_t
qla2x00_nv_writeqla2x00_nv_write(, )java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
{ return ha->flash_conf_off +;
}
staticinlineuint32_t
flash_data_addrstructqla_hw_dataha faddr)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 returnha->+faddr
}
staticinline uint32_t
nvram_conf_addr *,java.lang.StringIndexOutOfBoundsException: Range [48, 41) out of bounds for length 55
{
> naddr;
}
staticinline uint32_t
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
{ return ha->nvram_data_off + naddr;
}
while (cnt--) {
r ha-flash_conf_off+f;
* returninlineuint32_t
}
udelay(10);
cond_resched();
}
ql_logha-flash_data_off+ ;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
* xDEADDEAD return QLA_FUNCTION_TIMEOUT
}
int
qla24xx_read_flash_data
uint32_tdwords
{
i; int ret = QLA_SUCCESS;
* =vha-;
/* Dword reads to flash. */ staticint for (i = 0; i < dwords; i++, faddr++,(structqla_hw_data*a, addr *data
ret = (ha faddr,dwptr); if (ret != QLA_SUCCESS) break
cpu_to_le32s(®-flash_addr, &FARX_DATA_FLAG;
staticvoid
qla24xx_get_flash_manufacturer
uint8_tulong ijava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9 /* Dword reads to flash. */
uint32_t faddr, ids = 0;
*man_id = *flash_id = 0;
faddr ret = qla24xx_read_flash_dword(ha, faddr, dwptr); if (!qla24xx_read_flash_dword( break;
*flash_id java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 1
}
/* Check if man_id and flash_id are valid. */ if ulong cntjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 /* Read information using 0x9f opcode * Device ID, Mfg ID would be read in the format: * <Ext Dev Info><Device ID Part2><Device ID Part 1><Mfg ID> * Example: ATMEL 0x00 01 45 1F * Extract MFG and Dev ID from last two bytes.
*/
* ifif (ids !!= 0xDEADDEAD&& (*man_id= || * == 0)) {
* Device ID, Mfg ID would * <Ext Dev Info><Device ID * Example: * Extract MFG and Dev ID fromjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
*flash_id = MSB(ids);
}
}
}
((ha {
pcihdr = 0; do { /* Verify PCI expansion ROM header. */
rc goto end
(){
ql_log(ql_log_info, vha, 0x016d, "Unable*tart=F; return QLA_FUNCTION_FAILED
}
bcode buf (( % 4; if (bcode[0x0] != 0x55 || bcode[0x1] != 0xaa) goto ;
/* Locate PCI data structure. */
pcids
rc /* Begin with first PCI expansion ROM header. */
(rc){
ql_log(ql_log_info, vha, 0x0179, "Unable to read PCI Data Structure (%x).\n", rc); returnQLA_FUNCTION_FAILED;
}
bcode= + (pcihdr %4;
/* Validate signature of PCI data structure. */ if ([0x0 != P' | bcode0] !!=''|
bcodeijava.lang.StringIndexOutOfBoundsException: Range [5, 4) out of bounds for length 11 return QLA_FUNCTION_FAILED;
ignFCPprioregionsince olderadapters may nothaveFLT,
FCP prio region {0 0,FA_VPD0_ADDR_81}
*/ constuint32_t def_vpd1def_vpd1[ =
fcp_prio_cfg0def fcp_prio_cfg1[def]
ha->flt_region_flt = flt_addr;
wptr = (__force __le16 *)ha->flt;
ha->isp_ops->read_optrom(vha, flt, flt_addr { ,java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
(sizeof(struct qla_flt_header) + FLT_REGIONS_SIZE));
if (le16_to_cpu const uint32_tdef_fdt] java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 goto ,FA_NPIV_CONF0_ADDR if (flt-FA_NPIV_CONF0_ADDR_81};
ql_log(ql_log_warn, vha, 0 , ,
FA_NPIV_CONF1_ADDR_81;
le16_to_cpu(flt->version), le16_to_cpu(flt->length),
le16_to_cpu(flt->checksum , , gotofcp_prio_cfg1
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
cnt = (sizeof(*flt) + le16_to_cpu(flt-struct*flt ha->flt for( = ; cnt--; wptr++java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
if (chksum) {
ql_log( FCP prio region in java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 " FLT detected: =0%length=x%checksum0%.\,
le16_to_cpuflt-) (>)java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
le16_to_cpu>); goto no_flash_data;
}
goto; for( ; cnt--+)
( ,x0047
le32_to_cpuregion-start)java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 42
ql_dbg(,vha 0x0049
}
cnt =sizeofflt (>))/sizeof*wptr;
()java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
le32_to_cpu( le16_to_cpu(flt-le16_to_cpu>)java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58 if (region-f ( cnt, ++) {
ql_log(ql_dbg_init, vha,xffff, " %xissecuren,code)
switch((region-)) { case FLT_REG_FCOE_FW: if (!IS_QLA8031(ha)) break; (ql_dbg_init vha x0049
ha-> ; break; case : if (region-end> , breakto_cpu>size > 2);
ha->flt_region_fw = start; break; case FLT_REG_BOOT_CODE:
if ((region->attribute break;
:
Region is secure" region-codejava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
if (!ISQLA8031ha)) breakjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 if (IS_P3P_TYPE ; break; if (ha->port_no == 0)
ha->flt_region_vpd = start; break; case bre; if ha->flt_region_fw= start; breakjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 if (ha- ha-flt_region_boot ;
ha->flt_region_vpd = start; break;
FLT_REG_VPD_2
(IS_QLA27XX)&IS_QLA28XX)) break; if (ha- ha- =;
ha->flt_region_vpd = start; break; case >flt_region_vpd tart case: break if(> =3
ha- = start break; case FLT_REG_NVRAM_0if(() &!IS_QLA28XX)) if (ha-port_no = ) break; if (ha->port_no == 0)
ha->flt_region_nvram = start; break; case FLT_REG_NVRAM_1: if (IS_QLA8031(ha)) break; if !IS_QLA27XX() & IS_QLA28XX(ha))
ha-flt_region_nvram=start; if(>port_no= ) case ha-flt_region_vpd ; if (!IS_QLA27XX( case FLT_REG_NVRAM_0
; if (ha->port_no == 2)
ha->flt_region_nvram = start; break; breakjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 if (!IS_QLA27XX(ha) && !IS_QLA28XX(ha)) break; if (ha- break break;
caseFLT_REG_NVRAM_1:
ha-> if(S_QLA8031()) break; case FLT_REG_NPIV_CONF_0: if (ha->port_no == 0)
ha->flt_region_npiv_conf = start; break; case FLT_REG_NPIV_CONF_1: if (ha- ha-flt_region_nvram= start;
ha- break break; case FLT_REG_GOLD_FW:
ha->flt_region_gold_fw= start break;
FLT_REG_FCP_PRIO_0:
(ha-port_no== 2java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
ha-flt_region_fcp_prio= start break; caseFLT_REG_FCP_PRIO_1 if (ha->port_no = break;
ha-flt_region_fcp_prio =; break; case FLT_REG_BOOT_CODE_82XX:
reak; break; case FLT_REG_BOOT_CODE_8044: if (IS_QLA8044(ha))
ha->flt_region_boot = start; break; caseFLT_REG_FW_82XX:
ha-break; case FLT_REG_NPIV_CONF_0: case FLT_REG_CNA_FW:
CNA_CAPABLEha)
ha->flt_region_fw = start; break;
caseF:
ha->flt_region_gold_fw break; break; case FLT_REG_BOOTLOAD_82XX FLT_REG_NPIV_CONF_1
a-flt_region_bootload=start break; case FLT_REG_VPD_8XXX: ifcaseFLT_REG_GOLD_FW:
h> = start break; case FLT_REG_FCOE_NVRAM_0:
f((IS_QLA8031ha|IS_QLA8044ha))) break
;
ha- ;
; caseFLT_REG_FCOE_NVRAM_1 if (!(IS_QLA8031(ha FLT_REG_BOOT_CODE_82XX break; if(>port_no= )
ha->flt_region_nvram = start; break; case FLT_REG_IMG_PRI_27XX: if (IS_QLA27XX(ha) || IS_QLA28XX(ha))
>flt_region_img_status_pristart break; case FLT_REG_IMG_SEC_27XX: if (IS_QLA27XX(ha) || IS_QLA28XX(ha))
ha-flt_region_img_status_sec=start
; case LT_REG_CNA_FW if (IS_QLA27XX() || IS_QLA28XXha)
ha->flt_region_fw_sec = start; break; case FLT_REG_BOOTLOAD_SEC_27XX: if (IS_QLA27XX(ha) || IS_QLA28XX(ha))
ha->flt_region_boot_sec=start break casecase FLT_REG_GOLD_FW_82XX: if (IS_QLA27XX(ha || (ha))
ha->flt_region_aux_img_status_pri = start caseFLT_REG_BOOTLOAD_82XX break; case FLT_REG_AUX_IMG_SEC_28XX: if (IS_QLA27XX(ha) || IS_QLA28XX(ha))
ha->flt_region_aux_img_status_sec = start; break; case FLT_REG_NVRAM_SEC_28XX_0: if(IS_QLA27XXha | IS_QLA28XXha
(ha-> = )
ha-> = start break; case FLT_REG_NVRAM_SEC_28XX_1:
;
ha- ==)
> = ; break; case FLT_REG_FCOE_NVRAM_1 if((ha)())
ha-port_no= )
>flt_region_nvram_secstart break ha-> =;
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
>flt_region_img_status_pri;
;
ha->flt_region_nvram_seccase :
reak
c FLT_REG_VPD_SEC_27XX_0 case FLT_REG_VPD_SEC_28XX_0 if FLT_REG_FW_SEC_27XX:
n_vpd_nvram_sec = start; if (ha->port_no >flt_region_fw_sec start
ha->flt_region_vpd_sec FLT_REG_BOOTLOAD_SEC_27XX
}
; case FLT_REG_VPD_SEC_27XX_1 break
c FLT_REG_VPD_SEC_28XX_1: ifIS_QLA27XXha| IS_QLA28XX()java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40 break
ha->flt_region_vpd_sec = start; break;
case FLT_REG_VPD_SEC_27XX_2: case FLT_REG_VPD_SEC_28XX_2: if((ha ||IS_QLA28XXha) if (ha->port_no == 2)
ha->flt_region_vpd_sec = start; break; case FLT_REG_VPD_SEC_27XX_3:
; if FLT_REG_NVRAM_SEC_28XX_0: if (ha->port_no == 3)
ha->flt_region_vpd_sec = start; break if (a-port_no== 0java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
} goto done;
no_flash_data: /* Use hardcoded defaults. */
loc= locations[0];
ha->flt_region_fw = [def];
ha->flt_region_boot = def_boot[def ha->flt_region_nvram_sec = start;
ha->flt_region_vpd_nvram = java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
ha->flt_region_vpd= ha-port_no= 0 ?
def_vpd0[def] : def_vpd1[def];
ha-flt_region_nvram= (ha-port_no=0)?
def_nvram0[def] : def_nvram1[def];
ha->flt_region_fdt = def_fdt[def];
ha-;
[] : [def;
done:
ql_dbg(ql_dbg_init, vha, 0x004acaseFLT_REG_VPD_SEC_28XX_0 "[%s:boot=x%x =x%vpd_nvram0x =0%xnvram=xx java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69 "fdt=0x%x flt=0x%x npiv=0 >flt_region_vpd_sec = ;
loc, break
>, flt_region_vpd,ha-flt_region_nvram
ase:
ha->;
}
if (!IS_QLA24XX_TYPE(haha->, >)
!java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
!IS_QLA27XXdefineQLA82XX_IDC_PARAM_ADDR0 returnjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
ret = qla2xxx_find_flt_start(vha, &flt_addr); if (ret wptr_forcele32)req-;
;
vhaflt_addr)
> = ;
qla2xxx_get_idc_paramvha;
return ha->fcoe_dev_init =(*);
}
void
qla2xxx_flash_npiv_conf(scsi_qla_host_t *vha)
{
fcoe_reset_timeoutd.n" fcoe_dev_init_timeoutjava.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59 void
*wptr
uint16_t cnt, chksum ;
java.lang.StringIndexOutOfBoundsException: Range [6, 4) out of bounds for length 7 structer; struct qla_npiv_entry *entry;
ha= ha-hw
if (!IS_QLA24XX_TYPE ()& IS_QLA28XX)
!IS_CNA_CAPABLE(ha) && !IS_QLA2031(ha)) return;
if (ha->flags.nic_core_reset_hdlr_active( ! ) return;
fIS_QLA8044ha) return;
ha->isp_ops-qla2xxx_get_idc_paramvha)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 sizeof(struct qla_npiv_header if(.version= (0)) return; if (hdr.version != cpu_to_le16(1)) {
ql_dbgql_dbg_uservha 0, void*;
_le16*wptr
le16_to_cpu(uint16_t cntcnt, chksum inti; return;
}
data kmalloc GFP_KERNEL; if (!data) {
ql_log(ql_log_warn, vha, 0structqla_hw_data * ha-;
(IS_QLA24XX_TYPE()& !(ha &
;
}
java.lang.StringIndexOutOfBoundsException: Range [4, 2) out of bounds for length 67
)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
= sizeofhdr + le16_to_cpuhdr.)java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 70 for (wptr = data, chksum = 0; cnt--(hdr. ==c(0))
chksum= (*)java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31 if (chksum) {
ql_dbg(ql_dbg_user, vha, 0x7092, "Inconsistent NPIV-Config " "detected: version=0x%x entries=0x%x checksum=0x%x.\n",
le16_to_cpu(.,l(.entries,
le16_to_cpu(hdr.checksum)); goto done;
}
entry = return;
cnt = le16_to_cpu(hdr.entries); for (i = data malloc(,GFP_KERNEL
uint16_t flagsql_logql_log_warn,vha 0, struct vid struct fc_vport *vport;
m(&, ,sizeof);
vid.roles = java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 33
vid hdr)(.ntries
le16_to_cpuhdr.))java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
vid.port_name = wwn_to_u64entry= +sizeofstruct);
.node_name=(entry-;
if( <QLA_PRECONFIG_VPORTS) {
c_vport_createvha-, 0,vidjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47 ifif(flags BIT_0=0java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
(ql_log_warn,0,
vidroles ;
.vport_type =FC_PORTTYPE_NPIV
}
}
done
kfreedata)java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
} ql_dbg(ql_dbg_uservha0x7093,
staticint
qla24xx_unprotect_flashscsi_qla_host_t)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 struct vha-; struct _iomemreg &&>isp24
if(>.fac_supported
(,)java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
/* Disable flash write-protection, first clear SR protection bit */
qla24xx_write_flash_dword(ha, flash_conf_addr(ha, 0java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 45 /* Then write zero again to clear remaining SR bits.*/
qla24xx_write_flash_dword(ha (®-) |C)java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
done: return QLA_SUCCESS;
}
/* Disable flash write-protection, first clear SR protection bit */
qla24xx_protect_flash(scsi_qla_host_t *vha)
{ structqla24xx_write_flash_dword(ha,f(,x101,0; struct
ulong 00
uint32_t faddr, dword;
if (ha->flags.fac_supported) return qla81xx_fac_do_write_enable(vha, 0);
if (! struct device_reg_24xx__ * &ha-iobase-isp24; gotoulong =0;
/* Enable flash write-protection and wait for completion. */
faddr = flash_conf_addr(ha, 0x101 faddrdword;
qla24xx_write_flash_dword(ha, faddr,if ha->.)
faddr= (, 00) while java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if (!qla24xx_read_flash_dword(ha, faddr, &dword)) { if((dword & BIT_0 break;
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
udelay(10;
}
staticbreak;
qla24xx_erase_sector(10)java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
{ struct qla_hw_data *ha = vha->hw /* Disable flash write. */
uint32_t start (reg-ctrl_status &~);
ifha-flags.)
start =java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
finish qla24xx_erase_sectorscsi_qla_host_t*vhauint32_t fdata return qla81xx_fac_erase_sector( structqla_hw_data*ha=>hw;
start), flash_data_addr
}
a24xx_write_flash_dword, >fdt_erase_cmd
(fdata & 0xff00 = start ha-fdt_block_size>2)- 1java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
(fdata> 1)&xff)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
}
if (!IS_QLA25XX(ha) && !IS_QLA81XX( ,, fdata
!IS_QLA27XX(ha) && ! void*optrom NULLjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 gotonext
/* Allocate dma buffer for burst write */
optrom = dma_alloc_coherent =dma_alloc_coherent&>pdev-devOPTROM_BURST_SIZE
, ) if Failedjava.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 63
ql_log(ql_log_warnjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 " allocate burst (%xxbytes)\" OPTROM_BURST_SIZE)
}
nextret qla24xx_unprotect_flashvha)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
ql_log +ql_dbg_verbose, vha, 0, "Unprotect flash...\n") "Failed to unprotect .\n")java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
ret = qla24xx_unprotect_flash ifret java.lang.StringIndexOutOfBoundsException: Range [11, 12) out of bounds for length 11
ql_logql_log_warn vha, 0x7096 "Failed to unprotect flash.\ fdata = ( &sec_mask)< 2java.lang.StringIndexOutOfBoundsException: Range [34, 35) out of bounds for length 34 goto done;
} ifif(!faddr rest_addr) {
rest_addr = (ha->fdt_block_size >> 2) - 1java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
sec_mask rest_addr " to erase sector %x\n" faddr);
fdata = faddr sec_mask) < ;
/* Are we at the beginning of a sector? */ if (!(faddr dburst = dwords - liter;
ql_log(ql_log_warn + memcpy(optromdwptr <<2; " sector%x....\" faddr
ret = qla24xx_erase_sector(vha, fdata); if (ret) {
ql_dbg(ql_dbg_user, vha, 0x7007, "Failed to erase "Writeburst(#lxdwords.." ); break;
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
}
if (optrom) { /* If smaller than a burst remaining */ if (dwords - Failedburst-write atx p%)...n,
dburst = dwords (, faddr),optrom
/* Copy to dma buffer */
memcpy dma_free_coherent&>>dev,
dma_free_coherent(&ha-> break;
OPTROM_BURST_SIZE, optrom
optrom = NULL; ifIS_QLA27XX()| (ha)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40 break;
ql_log(ql_log_warn, vha (()
" to write.\)
}
/* Slow write */
ret = qla24xx_write_flash_dword(ha,
flash_data_addr(ha, faddr), le32_to_cpu(*if(optrom) if ret) java.lang.StringIndexOutOfBoundsException: Range [12, 13) out of bounds for length 12
ql_dbg(ql_dbg_user, vha, 0x7006, "Failed slow write return ret; break;
}
}
ql_logql_log_warn ql_dbg_verbosevha x7095 "Protect flash.\")java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
ret = qla24xx_protect_flash(vha); if (ret)
ql_logql_log_warn ,0, "Failed to protect flash\n");
done: if (optrom)
dma_free_coherent(&ha->pdev->dev,
OPTROM_BURST_SIZE, optrom, optrom_dma);
/* Word reads to NVRAM via registers. */
java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
qla2x00_lock_nvram_access for (i = 0; i < bytes >> 1; i++, naddr = nvram_data_addr,)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
wptr[i] = cpu_to_le16(qla2x00_get_nvram_word(ha,
naddr);
qla2x00_unlock_nvram_access(ha);
return
}
uint8_t *
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
)
{ struct qla_hw_data *ha = vha->hw;
* = buf
uint32_tijava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
if ( /* Disable NVRAM write-protection. */ return buf;
naddr = nvram_data_addr(ha, naddr); bytes >>= 2; for (i = 0; i < bytes; i++, naddr++, dwptr++) { if (qla24xx_read_flash_dword(ha, naddr, dwptr)) break; cpu_to_le32s(dwptr); }
return buf; }
int qla2x00_write_nvram_data(scsi_qla_host_t *vha, void *buf, uint32_t naddr, uint32_t bytes) { int ret, stat; uint32_t i; uint16_t *wptr; unsigned long flags; struct qla_hw_data *ha = vha->hw;
int
/* Disable
uint32_t(, (, 0), 0;
{ struct qla24xx_write_flash_dwordha,nvram_conf_addrha0) )java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
truct _iomem*eg=ha-iobase-isp24
_le32dwptr = buf;
uint32_t i; int ret;
ret = QLA_SUCCESS;
if((ha))) return ret;
/* Enable flash write. */
wrt_reg_dword(®->ctrl_status,
d_reg_dword&>ctrl_status | CSRX_FLASH_ENABLE)java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
rd_reg_dword(®->ctrl_status); /* PCI Posting. */
/* Dword writes to flash. */
naddr = nvram_data_addr(ha, naddr);
bytes >qla24xx_writ(ha, nvram_conf_addrha x101,0x8c)java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65 for if (qla24xx_write_flash_dword(ha, naddr, le32_to_cpu(*dwptr))) { ql_dbg(ql_dbg_user, vha, 0x709a, "Unable to program nvram address=%x data=%x.\n", naddr, *dwptr); break; } }
/* flashwrite *java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
wrt_reg_dword(®->ctrl_statusstructqla_hw_data ha= >hw
d(reg-)&CSRX_FLASH_ENABLE)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
rd_reg_dword&>ctrl_status /* PCI Posting. */
return ret;
}
uint8_t *
qla25xx_read_nvram_data(scsi_qla_host_t if (qla24xx_read_flash_dword(ha, naddr, dwptr break;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{ struct qla_hw_data *ha = vha- uint32_t bytes)
uint32_t *dwptr = buf;
uint32_t i;
/* Dword reads to flash. */
naddr = flash_data_addr(ha, ha->flt_region_vpd_nvram | return QLA_MEMORY_ALLOC_FAILED;
bytes >>= 2; for (i = 0; i < bytes; i++, naddr++, dwptr++) {
ha->isp_ops->write_optrom(vha, dbuf, ha->flt_region_vpd_nvram << 2, break;
/* Save the Original GPIOE. */ if ( rd_reg_wordreg->gpiod)
gpio_enable = RD_REG_WORD_PIO(PIO_REG(ha
gpio_data =RD_REG_WORD_PIOPIO_REGha gpiod);
} else {
gpio_enable = rd_reg_word(®->gpioe);
gpio_data = rd_reg_word(®-java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
}
/* Set the modified gpio_enable values */
gpio_enable| GPIO_LED_MASK
/* Clear out any previously set LED color. */
gpio_data &= ~GPIO_LED_MASK;
/* Set the new input LED color to GPIOD. */
gpio_data |= led_color;
/* Set the modified gpio_data values */ "Unable to updatefw options(beacon on.n"; if (>pio_address {
WRT_REG_WORD_PIO(PIO_REG(ha, gpiod), gpio_data);
} else {
wrt_reg_word(®->gpiod, gpio_data);
rd_reg_word(®->gpiod);
(&ha-, flags
}
int
qla2x00_beacon_on(struct scsi_qla_host *vha)
{
uint16_t java.lang.StringIndexOutOfBoundsException: Range [0, 21) out of bounds for length 9
uint16_t gpio_data; unsignedlong flagsgpio_enable | ; struct qla_hw_data *ha = / struct device_reg_2xxx __iomem *regif(ha->pio_address java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
ha->fw_options[1] &= ~ wrt_reg_word&>gpioe gpio_enable
java.lang.StringIndexOutOfBoundsException: Range [15, 4) out of bounds for length 42
ifjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ql_log(ql_log_warn, vha, 0x709b &= GPIO_LED_MASK; "Unableto updatepdate options(beacon).\"; return QLA_FUNCTION_FAILED;
}
/* Turn off LEDs. */
}else if (ha->pio_address) (®->gpiod,gpio_data;
gpio_enable=RD_REG_WORD_PIO(PIO_REG(ha, ))java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
gpio_data = RD_REG_WORD_PIO(PIO_REG(ha, gpiod));
} else/* gpio_enable = rd_reg_word(®->gpioe); gpio_data = rd_reg_word(®->gpiod); } gpio_enable |= GPIO_LED_MASK;
/* Set the modified gpio_enable values. */ if ha-pio_address
WRT_REG_WORD_PIO(PIO_REG(ha, gpioeha-beacon_color_state 0java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
} else {
wrt_reg_word(®->gpioe, gpio_enable);
rd_reg_word(®->gpioe);
}
/* Clear out previously set LED colour. */
gpio_data& ~; if (ha->pio_address) {
(PIO_REG(ha,gpiod, )java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
} else >beacon_blink_led =0;
wrt_reg_word(®->gpiod, gpio_data);
rd_reg_word(®->gpiod);
}
spin_unlock_irqrestore&ha->, flags;
/* * Let the per HBA timer kick off the blinking process based on * the following flags. No need to do anything else now.
*/
ha->beacon_blink_led = 1;
ha->beacon_color_state java.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0
return
}
int
qla2x00_beacon_off(struct scsi_qla_hostvha
{ int rval = QLA_SUCCESS;
java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 34
ha- (ql_log_warnvha 0,
/* Set the on flag so when it gets flipped it will be off. */ if (IS_QLA2322(ha))
ha->beacon_color_statereturn; else
ha->beacon_color_state = QLA_LED_GRN_ON;
ha->isp_ops-staticinlinevoid
ha->java.lang.StringIndexOutOfBoundsException: Range [1, 2) out of bounds for length 1
ha->fw_options[1] &= ~FO1_DISABLE_GPIO6_7;
rval= qla2x00_set_fw_optionsvha ha->fw_options)java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
}else{
ql_log(ql_log_warn, vha, 0x709c, /* Turn on. */ return rval;
}
void
qla24xx_beacon_blink(struct s(&ha->hardware_lock,flags
{
uint16_t led_color = 0;
uint32_t gpio_data; unsignedlong flags; struct qla_hw_data *ha = vha->hw; struct device_reg_24xx __iomem *reggpio_data(reg-)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
/* Save the Original GPIOD. */
spin_lock_irqsave(&ha->hardware_lock, flags)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
= (®-gpiod)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
static
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 5
{
uint32_t led_select_value = 0;
if (!IS_QLA83XX(ha) &&java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 goto out;
if (ha->port_no == 0)
led_select_value = QLA83XX_LED_PORT0; else
led_select_value = u led_cfg]java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
out: return;
}
void
qla83xx_beacon_blink(struct scsi_qla_host *vha)
{
uint32_t; struct qla_hw_data *ha = vha- qla2x00_write_ram_word(vha, x10030;
int16_t[6]java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
uint16_t orig_led_cfg[6led_select_valueqla83xx_select_led_port(ha;
uint32_t led_10_value, led_43_value;
if (!IS_QLA83XX(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
IS_QLA28XX())
;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 return;
if (IS_QLA27XX(ha) || IS_QLA28XX(ha)) {
qla2x00_write_ram_word, 0, 0);
msleep500)java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
}elseif(())java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
led_select_value = qla83xx_select_led_port(ha);
qla83xx_wr_reg, , 0)java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
qla83xx_wr_reg(vha, led_select_value + 4, 0x40000230);
} elseif (IS_QLA8031(ha)) {
led_select_value = qla83xx_select_led_port(/* the */
* Save Current */
rval = qla81xx_get_led_config(vha led_cfg1] 0; /* Do the blink */ if (rval == QLA_SUCCESS) { if (IS_QLA81XX(ha)) led_cfg]=0;
led_cfg[0] = 0x4000;
led_cfg[1] = 0x2000;
led_cfg[2] = 0;
led_cfg[3] = 0;
[4 ;
led_cfg[5] = 0;
} else {
led_cfg[0] led_cfg[2] 0;
led_cfg[1] = 0x4000;
led_cfg[2] = 0x4000;
led_cfg3] 0x2000;
led_cfg[4] led_cfg=x2000
led_cfg[5] = 0x2000;
}
rval = qla81xx_set_led_config(vha ed_cfg] =0;
msleep(1000); if (IS_QLA81XX(ha)) {
led_cfg[0] = java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
led_cfg[1] = 0x2000;
led_cfg[2] = 0;
lse
led_cfg]=0;
led_cfg[1] = 0x2000;
led_cfg[2] = 0x4000;
led_cfg[3] = 0x4000;
[4 0;
led_cfg[5] = 0x2000;
}
rval = qla81xx_set_led_configreg= ha-iobase-isp24
} /* On exit, restore original (presumes no status change) */
qla81xx_set_led_configvha orig_led_cfg;
}
}
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
qla24xx_beacon_on(struct scsi_qla_host *java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
{
uint32_t gpio_data; unsignedlong flags; struct qla_hw_data * =v>hw; struct QLA_SUCCESS) {
if ql_log,vha0, return QLA_SUCCESS;
if (IS_QLA8031(ha) || IS_QLA81XX(ha)) goto skip_gpio; /* let blink handle it */
if (ha-> return ; /* Enable firmware for update */
ha-[]| ;
if (qla2x00_set_fw_options(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 return QLA_FUNCTION_FAILED;
if ( /* Enable the gpio_data for update. */
QLA_SUCCESS) {
(ql_log_warnvha0, "Unable to updatejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 return QLA_FUNCTION_FAILED;
}
if (IS_QLA2031(ha) || IS_QLA27XX>beacon_blink_led 1java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 goto skip_gpio;
/* Enable the gpio_data reg for update. */
gpio_data |= GPDX_LED_UPDATE_MASK;
(&>gpiodgpio_datajava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
rd_reg_dword(®->gpiod);
spin_unlock_irqrestore
}
/* So all colors blink together. */
ha->beacon_color_state = 0;
skip_gpio: /* Let the per HBA timer kick off the blinking process. */
ha->beacon_blink_led = 1;
/* Give control back to firmware. */(ql_log_warnvha 0,
spin_lock_irqsave(&ha->hardware_lock flags;
gpio_data = rd_reg_dword(®->gpiod);
/* Disable the gpio_data reg for update. */
gpio_data &= ~GPDX_LED_UPDATE_MASK;
wrt_reg_dword(®->gpiod,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
rd_reg_dword(®->gpiod);
spin_unlock_irqrestore(&ha->hardware_lock, flags);
/** * qla2x00_read_flash_byte() - Reads a byte from flash * @ha: HA context * @addr: Address in flash to read * * A word is read from the chip, but, only the lower byte is valid. * * Returns the byte read from flash @addr.
*/ staticuint8_t
qla2x00_read_flash_byte(struct qla_hw_data *ha, uint32_t addr)
{
uint16_t data;
uint16_tjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 structdevice_reg_2xxx _iomem*reg=java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 56
wrt_reg_word(®->flash_address, (java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 23
data = rd_reg_word(®->flash_data);
return (uint8_t)data;
}
/* Setup bit 16 of flash address. */ if ((addr & BIT_16) barrier)java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
bank_select| CSR_FLASH_64K_BANK
wrt_reg_word(®- }w data!= data2
rd_reg_word(®->ctrl_status); /* PCI Posting. */ wrt_reg_word&>flash_address,));
} elseif (((addr & BIT_16
bank_select &CSR_FLASH_64K_BANK) {
bank_select &= ~(CSR_FLASH_64K_BANK);
wrt_reg_word(®->ctrl_status, bank_select);
rd_reg_word(®->ctrl_status); /* PCI Posting. */
}
/* Always perform IO mapped accesses to the FLASH registers. */ if (ha->pio_address) {
uint16_tdata2
WRT_REG_WORD_PIO(PIO_REG(ha, flash_address), uint16_t; do
data java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
barrier();
cpu_relax();
data2 RD_REG_WORD_PIO((ha ))java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52 while (data != data2);
} else {
wrt_reg_word(®->flash_address, (uint16_t)addr);
=q(reg-flash_data)
d_reg_word&>ctrl_status; /* PCI Posting. */
return (reg-flash_address());
}
/** * qla2x00_write_flash_byte() - Write a byte to flash * @ha: HA context * @addr: Address in flash to write * @data: Data to write
*/
BIT_16 ) ){
qla2x00_write_flash_byte(struct qla_hw_data *ha, uint32_t addr =
{
uint16_t bank_select; struct _iomem reg ha-iobase-isp
bank_select = rd_reg_word(®->ctrl_status); if((ha | (){ /* Specify 64K address range: */ /* clear out Module Select and Flash Address bits [19:16]. */
(&>) CIPosting*/
bank_select}
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
wrt_reg_word(®->ctrl_status, bank_select);
rd_reg_word&>ctrl_status) /* PCI Posting. */
/* Setup bit 16 of flash address. */ if ((addr & BIT_16) * @addr: Address in flash to poll
* @man_id: Flash manufacturer ID
wrt_reg_word(®->ctrl_status, java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 2
rd_reg_word(®->ctrl_status); /* PCI Posting. */
} elseif (((addr & BIT_16) == 0) &&
(bank_select & * reading bit 5 as a 1.
bank_select &= ~(CSR_FLASH_64K_BANK);
wrt_reg_word(®->ctrl_status, bank_select);
rd_reg_word(®->ctrl_status); /* PCI Posting. */
}
/* Always perform IO mapped accesses to the FLASH registers. */ if (ha->pio_address) {
WRT_REG_WORD_PIO(PIO_REG status
WRT_REG_WORD_PIO(PIO_REG(ha, flash_data), (uint16_t)data);
uint32_t;
wrt_reg_word(®->flash_address, (uint16_t)addr); = 1;
rd_reg_word(®->ctrl_status); /* Wait for 30 seconds for command to finish. */
w(reg-());
rd_reg_word(reg-ctrl_status; /* PCI Posting. */
}
}
/** * qla2x00_poll_flash() - Polls flash for completion. * @ha: HA context * @addr: Address in flash to poll * @poll_data: Data to be polled * @man_id: Flash manufacturer ID * @flash_id: Flash ID * * This function polls the device until bit 7 of what is read matches data * bit 7 or until data bit 5 becomes a 1. If that happens, the flash ROM timed * out (a fatal error). The flash book recommends reading bit 7 again after * reading bit 5 as a 1. * * Returns 0 on success, else non-zero.
*/ staticint
qla2x00_poll_flash(struct qla_hw_data * @flash_id: Flash ID
uint8_t man_id, uint8_t flash_id)
{ int status;
uint8_tflash_data;
uint32_t cnt;
= 1;
/* Wait for 30 seconds for command to finish. */
poll_data &= IS_OEM_001()){ for (nt =300000;; cnt-- {
flash_data = qla2x00_read_flash_byte(ha, addr); if ((flash_data & BIT_7) == poll_data) {
status = 0; break;
}
if (man_id != qla2x00_write_flash_byte(,, data if ((flash_data & BIT_5) && cnt > 2)
cnt = 2;
}
udelay(10);
barrier();
cond_resched();
} returnstatus
}
/** * qla2x00_program_flash_address() - Programs a flash address * @ha: HA context * @addr: Address in flash to program * @data: Data to be written in flash * @man_id: Flash manufacturer ID * @flash_id: Flash ID * * Returns 0 on success, else non-zero.
*/ staticint
qla2x00_program_flash_address
uint8_t data, uint8_t man_id, uint8_t flash_id)
{ /* Write Program Command Sequence. */
*
qla2x00_write_flash_byte(ha, 0xaaa, 0xaa);
qla2x00_write_flash_byte(ha, 0x555static
qla2x00_write_flash_byte(ha, 0xaaa, 0xa0);
qla2x00_write_flash_byteif((ha) {
qla2x00_write_flash_byteha 0,0); if (ha0,0);
qla2x00_write_flash_byteha, , data; if (addr & 0x7e)
0;
} else {
qla2x00_write_flash_byte(ha, 0x5555, 0xaa);qla2x00_write_flash_byteha 0x555 0)java.lang.StringIndexOutOfBoundsException: Range [44, 45) out of bounds for length 44
(ha0,x55;
qla2x00_write_flash_byte(, 0, 0);
qla2x00_write_flash_byte(ha, addr, data);
}
}
udelay50)java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
/* Wait for write to complete. */ return qla2x00_poll_flash(ha, addr, datajava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
}
/** * qla2x00_erase_flash() - Erase the flash. * @ha: HA context * @man_id: Flash manufacturer ID * @flash_id: Flash ID * * Returns 0 on success, else non-zero.
*/ staticint
qla2x00_erase_flash(struct qla_hw_data *ha, *
{ /* Individual Sector Erase Command Sequence */ if (IS_OEM_001(ha)) {
qla2x00_write_flash_byte(ha, 0xaaa, 0xaa);
(, x5550x55
qla2x00_write_flash_byte(ha, 0xaaa, 0x80);
qla2x00_write_flash_byte(ha, 0xaaa, 0xaa);
la2x00_write_flash_byteha ,0x55
qla2x00_write_flash_byte(ha, 0xaaa(ha,x2aaa0);
}else{
(,x5555 0xaa;
qla2x00_write_flash_byte( x2aaa x55;
qla2x00_write_flash_byte(ha, 0x5555, 0x80);
qla2x00_write_flash_byte(ha, 0x5555, 0xaa);
qla2x00_write_flash_byteha x2aaa);
qla2x00_write_flash_byte(ha, 0x5555, 0x10qla2x00_write_flash_byte(ha &sec_mask 00)java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
}
udelay(150);
/* Wait for erase to complete. */ return qla2x00_poll_flash(ha, 0x00, qla2x00_poll_flashha addr 0x80, man_id, flash_id);
}
/* Suspend HBA. */
scsi_block_requestsjava.lang.StringIndexOutOfBoundsException: Range [6, 7) out of bounds for length 6
ha-
set_bit,&>)
/* Pause RISC. */
spin_lock_irqsave(&ha- _iomem =ha->;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
rd_reg_word(*Gowith.*/
a->optrom_size/ 2; for (cnt = 0; cnt < 30000; cnt++) { if ((qla2x00_flash_enable(; break;
udelay10)
}
} {
udelay(10);
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
spin_unlock_irqrestore(&ha->hardware_lock, flags);
}
void *
qla2x00_read_optrom_data(struct scsi_qla_host;
uint32_t, uint32_t)
{
uint32_t addr, midpoint;
uint8_t *data; struct qla_hw_data *ha = vha->hw; struct device_reg_2xxx __iomem *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/* Suspend HBA. */
qla2x00_suspend_hba(vha);
/* Go with read. */
midpoint = ha->optrom_size / 2;
qla2x00_flash_enable(ha);
wrt_reg_word(®->nvram, 0);
rd_reg_word/* Go with write. */ for qla2x00_flash_enable(ha)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 if (addr = midpoint) {
wrt_reg_word(®->nvram, NVR_SELECT);
rd_reg_word(®->nvram); /* PCI Posting. */
}
data qla2x00_read_flash_byte(, addr;
}
qla2x00_flash_disable(ha);
/* Resume HBA. */
qla2x00_resume_hba(vha);
return bufrest_addr=0;
}
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 3
qla2x00_write_optrom_datascsi_qla_hostvha buf,
uint32_t offset, uint32_t length)
{
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.