aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorKrishna Gudipati <kgudipat@brocade.com>2010-03-05 22:37:18 -0500
committerJames Bottomley <James.Bottomley@suse.de>2010-03-07 02:32:45 -0500
commit78f915f7b095dda76970c8c9568489fa779ef73f (patch)
tree5b455c396851323fa3c723c4d7b9befcb53fcccc /drivers/scsi
parentf5713c5dfb4d61cd77debf61d3873eb36877ff1f (diff)
[SCSI] bfa: In MSIX mode, ignore spurious RME interrupts when FCoE ports are in FW mismatch state.
Use dummy interrupt handlers till chip initialization is complete. Install real interrupt handlers after chip initialization. Also removed msix installation code in bfa_iocfc_init(). Signed-off-by: Krishna Gudipati <kgudipat@brocade.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/bfa/bfa_ioc_ct.c43
-rw-r--r--drivers/scsi/bfa/bfa_iocfc.c1
2 files changed, 17 insertions, 27 deletions
diff --git a/drivers/scsi/bfa/bfa_ioc_ct.c b/drivers/scsi/bfa/bfa_ioc_ct.c
index 469da95aedf3..2431922c34a4 100644
--- a/drivers/scsi/bfa/bfa_ioc_ct.c
+++ b/drivers/scsi/bfa/bfa_ioc_ct.c
@@ -331,12 +331,12 @@ bfa_ioc_ct_pll_init(struct bfa_ioc_s *ioc)
331 */ 331 */
332 bfa_ioc_sem_get(ioc->ioc_regs.ioc_init_sem_reg); 332 bfa_ioc_sem_get(ioc->ioc_regs.ioc_init_sem_reg);
333 333
334 pll_sclk = __APP_PLL_312_ENABLE | __APP_PLL_312_LRESETN | 334 pll_sclk = __APP_PLL_312_LRESETN | __APP_PLL_312_ENARST |
335 __APP_PLL_312_RSEL200500 | __APP_PLL_312_P0_1(0U) | 335 __APP_PLL_312_RSEL200500 | __APP_PLL_312_P0_1(3U) |
336 __APP_PLL_312_JITLMT0_1(3U) | 336 __APP_PLL_312_JITLMT0_1(3U) |
337 __APP_PLL_312_CNTLMT0_1(1U); 337 __APP_PLL_312_CNTLMT0_1(1U);
338 pll_fclk = __APP_PLL_425_ENABLE | __APP_PLL_425_LRESETN | 338 pll_fclk = __APP_PLL_425_LRESETN | __APP_PLL_425_ENARST |
339 __APP_PLL_425_RSEL200500 | __APP_PLL_425_P0_1(0U) | 339 __APP_PLL_425_RSEL200500 | __APP_PLL_425_P0_1(3U) |
340 __APP_PLL_425_JITLMT0_1(3U) | 340 __APP_PLL_425_JITLMT0_1(3U) |
341 __APP_PLL_425_CNTLMT0_1(1U); 341 __APP_PLL_425_CNTLMT0_1(1U);
342 342
@@ -366,36 +366,27 @@ bfa_ioc_ct_pll_init(struct bfa_ioc_s *ioc)
366 bfa_reg_write((rb + HOSTFN0_INT_MSK), 0xffffffffU); 366 bfa_reg_write((rb + HOSTFN0_INT_MSK), 0xffffffffU);
367 bfa_reg_write((rb + HOSTFN1_INT_MSK), 0xffffffffU); 367 bfa_reg_write((rb + HOSTFN1_INT_MSK), 0xffffffffU);
368 368
369 bfa_reg_write(ioc->ioc_regs.app_pll_slow_ctl_reg, 369 bfa_reg_write(ioc->ioc_regs.app_pll_slow_ctl_reg, pll_sclk |
370 __APP_PLL_312_LOGIC_SOFT_RESET); 370 __APP_PLL_312_LOGIC_SOFT_RESET);
371 bfa_reg_write(ioc->ioc_regs.app_pll_slow_ctl_reg, 371 bfa_reg_write(ioc->ioc_regs.app_pll_fast_ctl_reg, pll_fclk |
372 __APP_PLL_312_BYPASS | 372 __APP_PLL_425_LOGIC_SOFT_RESET);
373 __APP_PLL_312_LOGIC_SOFT_RESET); 373 bfa_reg_write(ioc->ioc_regs.app_pll_slow_ctl_reg, pll_sclk |
374 bfa_reg_write(ioc->ioc_regs.app_pll_fast_ctl_reg, 374 __APP_PLL_312_LOGIC_SOFT_RESET | __APP_PLL_312_ENABLE);
375 __APP_PLL_425_LOGIC_SOFT_RESET); 375 bfa_reg_write(ioc->ioc_regs.app_pll_fast_ctl_reg, pll_fclk |
376 bfa_reg_write(ioc->ioc_regs.app_pll_fast_ctl_reg, 376 __APP_PLL_425_LOGIC_SOFT_RESET | __APP_PLL_425_ENABLE);
377 __APP_PLL_425_BYPASS |
378 __APP_PLL_425_LOGIC_SOFT_RESET);
379 bfa_os_udelay(2);
380 bfa_reg_write(ioc->ioc_regs.app_pll_slow_ctl_reg,
381 __APP_PLL_312_LOGIC_SOFT_RESET);
382 bfa_reg_write(ioc->ioc_regs.app_pll_fast_ctl_reg,
383 __APP_PLL_425_LOGIC_SOFT_RESET);
384
385 bfa_reg_write(ioc->ioc_regs.app_pll_slow_ctl_reg,
386 pll_sclk | __APP_PLL_312_LOGIC_SOFT_RESET);
387 bfa_reg_write(ioc->ioc_regs.app_pll_fast_ctl_reg,
388 pll_fclk | __APP_PLL_425_LOGIC_SOFT_RESET);
389 377
390 /** 378 /**
391 * Wait for PLLs to lock. 379 * Wait for PLLs to lock.
392 */ 380 */
381 bfa_reg_read(rb + HOSTFN0_INT_MSK);
393 bfa_os_udelay(2000); 382 bfa_os_udelay(2000);
394 bfa_reg_write((rb + HOSTFN0_INT_STATUS), 0xffffffffU); 383 bfa_reg_write((rb + HOSTFN0_INT_STATUS), 0xffffffffU);
395 bfa_reg_write((rb + HOSTFN1_INT_STATUS), 0xffffffffU); 384 bfa_reg_write((rb + HOSTFN1_INT_STATUS), 0xffffffffU);
396 385
397 bfa_reg_write(ioc->ioc_regs.app_pll_slow_ctl_reg, pll_sclk); 386 bfa_reg_write(ioc->ioc_regs.app_pll_slow_ctl_reg, pll_sclk |
398 bfa_reg_write(ioc->ioc_regs.app_pll_fast_ctl_reg, pll_fclk); 387 __APP_PLL_312_ENABLE);
388 bfa_reg_write(ioc->ioc_regs.app_pll_fast_ctl_reg, pll_fclk |
389 __APP_PLL_425_ENABLE);
399 390
400 bfa_reg_write((rb + MBIST_CTL_REG), __EDRAM_BISTR_START); 391 bfa_reg_write((rb + MBIST_CTL_REG), __EDRAM_BISTR_START);
401 bfa_os_udelay(1000); 392 bfa_os_udelay(1000);
diff --git a/drivers/scsi/bfa/bfa_iocfc.c b/drivers/scsi/bfa/bfa_iocfc.c
index a5551db6dba6..6677f83f2c99 100644
--- a/drivers/scsi/bfa/bfa_iocfc.c
+++ b/drivers/scsi/bfa/bfa_iocfc.c
@@ -659,7 +659,6 @@ bfa_iocfc_init(struct bfa_s *bfa)
659{ 659{
660 bfa->iocfc.action = BFA_IOCFC_ACT_INIT; 660 bfa->iocfc.action = BFA_IOCFC_ACT_INIT;
661 bfa_ioc_enable(&bfa->ioc); 661 bfa_ioc_enable(&bfa->ioc);
662 bfa_msix_install(bfa);
663} 662}
664 663
665/** 664/**