Commit 590f98e5e8d6502cc21fdcddc90a0cc09c1f770e
Committed by
James Bottomley
1 parent
f94097edf2
Exists in
master
and in
4 other branches
[SCSI] qla2xxx: Collapse load RISC RAM implementations.
Simplify essentially duplicate load RISC RAM implementation in qla2x00_load_ram_ext() and qla2x00_load_ram(). Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Showing 3 changed files with 15 additions and 101 deletions Side-by-side Diff
drivers/scsi/qla2xxx/qla_gbl.h
| ... | ... | @@ -96,10 +96,7 @@ |
| 96 | 96 | * Global Function Prototypes in qla_mbx.c source file. |
| 97 | 97 | */ |
| 98 | 98 | extern int |
| 99 | -qla2x00_load_ram(scsi_qla_host_t *, dma_addr_t, uint16_t, uint16_t); | |
| 100 | - | |
| 101 | -extern int | |
| 102 | -qla2x00_load_ram_ext(scsi_qla_host_t *, dma_addr_t, uint32_t, uint32_t); | |
| 99 | +qla2x00_load_ram(scsi_qla_host_t *, dma_addr_t, uint32_t, uint32_t); | |
| 103 | 100 | |
| 104 | 101 | extern int |
| 105 | 102 | qla2x00_execute_fw(scsi_qla_host_t *, uint32_t); |
drivers/scsi/qla2xxx/qla_init.c
| ... | ... | @@ -3672,8 +3672,8 @@ |
| 3672 | 3672 | for (i = 0; i < dlen; i++) |
| 3673 | 3673 | dcode[i] = swab32(dcode[i]); |
| 3674 | 3674 | |
| 3675 | - rval = qla2x00_load_ram_ext(ha, ha->request_dma, | |
| 3676 | - risc_addr, dlen); | |
| 3675 | + rval = qla2x00_load_ram(ha, ha->request_dma, risc_addr, | |
| 3676 | + dlen); | |
| 3677 | 3677 | if (rval) { |
| 3678 | 3678 | DEBUG(printk("scsi(%ld):[ERROR] Failed to load " |
| 3679 | 3679 | "segment %d of firmware\n", ha->host_no, |
| ... | ... | @@ -3873,8 +3873,8 @@ |
| 3873 | 3873 | for (i = 0; i < dlen; i++) |
| 3874 | 3874 | dcode[i] = swab32(fwcode[i]); |
| 3875 | 3875 | |
| 3876 | - rval = qla2x00_load_ram_ext(ha, ha->request_dma, | |
| 3877 | - risc_addr, dlen); | |
| 3876 | + rval = qla2x00_load_ram(ha, ha->request_dma, risc_addr, | |
| 3877 | + dlen); | |
| 3878 | 3878 | if (rval) { |
| 3879 | 3879 | DEBUG(printk("scsi(%ld):[ERROR] Failed to load " |
| 3880 | 3880 | "segment %d of firmware\n", ha->host_no, |
drivers/scsi/qla2xxx/qla_mbx.c
| ... | ... | @@ -327,113 +327,30 @@ |
| 327 | 327 | return rval; |
| 328 | 328 | } |
| 329 | 329 | |
| 330 | -/* | |
| 331 | - * qla2x00_load_ram | |
| 332 | - * Load adapter RAM using DMA. | |
| 333 | - * | |
| 334 | - * Input: | |
| 335 | - * ha = adapter block pointer. | |
| 336 | - * | |
| 337 | - * Returns: | |
| 338 | - * qla2x00 local function return status code. | |
| 339 | - * | |
| 340 | - * Context: | |
| 341 | - * Kernel context. | |
| 342 | - */ | |
| 343 | 330 | int |
| 344 | -qla2x00_load_ram(scsi_qla_host_t *ha, dma_addr_t req_dma, uint16_t risc_addr, | |
| 345 | - uint16_t risc_code_size) | |
| 331 | +qla2x00_load_ram(scsi_qla_host_t *ha, dma_addr_t req_dma, uint32_t risc_addr, | |
| 332 | + uint32_t risc_code_size) | |
| 346 | 333 | { |
| 347 | 334 | int rval; |
| 348 | 335 | mbx_cmd_t mc; |
| 349 | 336 | mbx_cmd_t *mcp = &mc; |
| 350 | - uint32_t req_len; | |
| 351 | - dma_addr_t nml_dma; | |
| 352 | - uint32_t nml_len; | |
| 353 | - uint32_t normalized; | |
| 354 | 337 | |
| 355 | - DEBUG11(printk("qla2x00_load_ram(%ld): entered.\n", | |
| 356 | - ha->host_no);) | |
| 338 | + DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); | |
| 357 | 339 | |
| 358 | - req_len = risc_code_size; | |
| 359 | - nml_dma = 0; | |
| 360 | - nml_len = 0; | |
| 361 | - | |
| 362 | - normalized = qla2x00_normalize_dma_addr(&req_dma, &req_len, &nml_dma, | |
| 363 | - &nml_len); | |
| 364 | - | |
| 365 | - /* Load first segment */ | |
| 366 | - mcp->mb[0] = MBC_LOAD_RISC_RAM; | |
| 367 | - mcp->mb[1] = risc_addr; | |
| 368 | - mcp->mb[2] = MSW(req_dma); | |
| 369 | - mcp->mb[3] = LSW(req_dma); | |
| 370 | - mcp->mb[4] = (uint16_t)req_len; | |
| 371 | - mcp->mb[6] = MSW(MSD(req_dma)); | |
| 372 | - mcp->mb[7] = LSW(MSD(req_dma)); | |
| 373 | - mcp->out_mb = MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; | |
| 374 | - mcp->in_mb = MBX_0; | |
| 375 | - mcp->tov = 30; | |
| 376 | - mcp->flags = 0; | |
| 377 | - rval = qla2x00_mailbox_command(ha, mcp); | |
| 378 | - | |
| 379 | - /* Load second segment - if necessary */ | |
| 380 | - if (normalized && (rval == QLA_SUCCESS)) { | |
| 340 | + if (MSW(risc_addr) || IS_QLA24XX(ha) || IS_QLA25XX(ha)) { | |
| 341 | + mcp->mb[0] = MBC_LOAD_RISC_RAM_EXTENDED; | |
| 342 | + mcp->mb[8] = MSW(risc_addr); | |
| 343 | + mcp->out_mb = MBX_8|MBX_0; | |
| 344 | + } else { | |
| 381 | 345 | mcp->mb[0] = MBC_LOAD_RISC_RAM; |
| 382 | - mcp->mb[1] = risc_addr + (uint16_t)req_len; | |
| 383 | - mcp->mb[2] = MSW(nml_dma); | |
| 384 | - mcp->mb[3] = LSW(nml_dma); | |
| 385 | - mcp->mb[4] = (uint16_t)nml_len; | |
| 386 | - mcp->mb[6] = MSW(MSD(nml_dma)); | |
| 387 | - mcp->mb[7] = LSW(MSD(nml_dma)); | |
| 388 | - mcp->out_mb = MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; | |
| 389 | - mcp->in_mb = MBX_0; | |
| 390 | - mcp->tov = 30; | |
| 391 | - mcp->flags = 0; | |
| 392 | - rval = qla2x00_mailbox_command(ha, mcp); | |
| 346 | + mcp->out_mb = MBX_0; | |
| 393 | 347 | } |
| 394 | - | |
| 395 | - if (rval == QLA_SUCCESS) { | |
| 396 | - /* Empty */ | |
| 397 | - DEBUG11(printk("qla2x00_load_ram(%ld): done.\n", ha->host_no);) | |
| 398 | - } else { | |
| 399 | - /* Empty */ | |
| 400 | - DEBUG2_3_11(printk("qla2x00_load_ram(%ld): failed. rval=%x " | |
| 401 | - "mb[0]=%x.\n", ha->host_no, rval, mcp->mb[0]);) | |
| 402 | - } | |
| 403 | - return rval; | |
| 404 | -} | |
| 405 | - | |
| 406 | -/* | |
| 407 | - * qla2x00_load_ram_ext | |
| 408 | - * Load adapter extended RAM using DMA. | |
| 409 | - * | |
| 410 | - * Input: | |
| 411 | - * ha = adapter block pointer. | |
| 412 | - * | |
| 413 | - * Returns: | |
| 414 | - * qla2x00 local function return status code. | |
| 415 | - * | |
| 416 | - * Context: | |
| 417 | - * Kernel context. | |
| 418 | - */ | |
| 419 | -int | |
| 420 | -qla2x00_load_ram_ext(scsi_qla_host_t *ha, dma_addr_t req_dma, | |
| 421 | - uint32_t risc_addr, uint32_t risc_code_size) | |
| 422 | -{ | |
| 423 | - int rval; | |
| 424 | - mbx_cmd_t mc; | |
| 425 | - mbx_cmd_t *mcp = &mc; | |
| 426 | - | |
| 427 | - DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); | |
| 428 | - | |
| 429 | - mcp->mb[0] = MBC_LOAD_RISC_RAM_EXTENDED; | |
| 430 | 348 | mcp->mb[1] = LSW(risc_addr); |
| 431 | 349 | mcp->mb[2] = MSW(req_dma); |
| 432 | 350 | mcp->mb[3] = LSW(req_dma); |
| 433 | 351 | mcp->mb[6] = MSW(MSD(req_dma)); |
| 434 | 352 | mcp->mb[7] = LSW(MSD(req_dma)); |
| 435 | - mcp->mb[8] = MSW(risc_addr); | |
| 436 | - mcp->out_mb = MBX_8|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; | |
| 353 | + mcp->out_mb |= MBX_7|MBX_6|MBX_3|MBX_2|MBX_1; | |
| 437 | 354 | if (IS_QLA24XX(ha) || IS_QLA25XX(ha)) { |
| 438 | 355 | mcp->mb[4] = MSW(risc_code_size); |
| 439 | 356 | mcp->mb[5] = LSW(risc_code_size); |