Lines Matching refs:adapter

420 	adapter_t	*adapter;  in megaraid_probe_one()  local
443 adapter = kzalloc(sizeof(adapter_t), GFP_KERNEL); in megaraid_probe_one()
445 if (adapter == NULL) { in megaraid_probe_one()
454 adapter->unique_id = pdev->bus->number << 8 | pdev->devfn; in megaraid_probe_one()
455 adapter->irq = pdev->irq; in megaraid_probe_one()
456 adapter->pdev = pdev; in megaraid_probe_one()
458 atomic_set(&adapter->being_detached, 0); in megaraid_probe_one()
462 if (pci_set_dma_mask(adapter->pdev, DMA_BIT_MASK(32)) != 0) { in megaraid_probe_one()
472 spin_lock_init(&adapter->lock); in megaraid_probe_one()
476 INIT_LIST_HEAD(&adapter->kscb_pool); in megaraid_probe_one()
477 spin_lock_init(SCSI_FREE_LIST_LOCK(adapter)); in megaraid_probe_one()
479 INIT_LIST_HEAD(&adapter->pend_list); in megaraid_probe_one()
480 spin_lock_init(PENDING_LIST_LOCK(adapter)); in megaraid_probe_one()
482 INIT_LIST_HEAD(&adapter->completed_list); in megaraid_probe_one()
483 spin_lock_init(COMPLETED_LIST_LOCK(adapter)); in megaraid_probe_one()
487 if (megaraid_init_mbox(adapter) != 0) { in megaraid_probe_one()
495 if (megaraid_cmm_register(adapter) != 0) { in megaraid_probe_one()
504 pci_set_drvdata(pdev, adapter); in megaraid_probe_one()
507 if (megaraid_io_attach(adapter) != 0) { in megaraid_probe_one()
517 megaraid_cmm_unregister(adapter); in megaraid_probe_one()
519 megaraid_fini_mbox(adapter); in megaraid_probe_one()
521 kfree(adapter); in megaraid_probe_one()
542 adapter_t *adapter; in megaraid_detach_one() local
547 adapter = pci_get_drvdata(pdev); in megaraid_detach_one()
549 if (!adapter) { in megaraid_detach_one()
565 host = adapter->host; in megaraid_detach_one()
571 atomic_set(&adapter->being_detached, 1); in megaraid_detach_one()
574 megaraid_io_detach(adapter); in megaraid_detach_one()
580 megaraid_cmm_unregister(adapter); in megaraid_detach_one()
583 megaraid_fini_mbox(adapter); in megaraid_detach_one()
585 kfree(adapter); in megaraid_detach_one()
604 adapter_t *adapter = pci_get_drvdata(pdev); in megaraid_mbox_shutdown() local
607 if (!adapter) { in megaraid_mbox_shutdown()
617 megaraid_mbox_flush_cache(adapter); in megaraid_mbox_shutdown()
630 megaraid_io_attach(adapter_t *adapter) in megaraid_io_attach() argument
643 SCSIHOST2ADAP(host) = (caddr_t)adapter; in megaraid_io_attach()
644 adapter->host = host; in megaraid_io_attach()
646 host->irq = adapter->irq; in megaraid_io_attach()
647 host->unique_id = adapter->unique_id; in megaraid_io_attach()
648 host->can_queue = adapter->max_cmds; in megaraid_io_attach()
649 host->this_id = adapter->init_id; in megaraid_io_attach()
650 host->sg_tablesize = adapter->sglen; in megaraid_io_attach()
651 host->max_sectors = adapter->max_sectors; in megaraid_io_attach()
652 host->cmd_per_lun = adapter->cmd_per_lun; in megaraid_io_attach()
653 host->max_channel = adapter->max_channel; in megaraid_io_attach()
654 host->max_id = adapter->max_target; in megaraid_io_attach()
655 host->max_lun = adapter->max_lun; in megaraid_io_attach()
659 if (scsi_add_host(host, &adapter->pdev->dev)) { in megaraid_io_attach()
682 megaraid_io_detach(adapter_t *adapter) in megaraid_io_detach() argument
688 host = adapter->host; in megaraid_io_detach()
713 megaraid_init_mbox(adapter_t *adapter) in megaraid_init_mbox() argument
721 adapter->ito = MBOX_TIMEOUT; in megaraid_init_mbox()
722 pdev = adapter->pdev; in megaraid_init_mbox()
735 adapter->raid_device = (caddr_t)raid_dev; in megaraid_init_mbox()
764 if (megaraid_alloc_cmd_packets(adapter) != 0) in megaraid_init_mbox()
772 if (megaraid_mbox_fire_sync_cmd(adapter)) in megaraid_init_mbox()
781 if (request_irq(adapter->irq, megaraid_isr, IRQF_SHARED, "megaraid", in megaraid_init_mbox()
782 adapter)) { in megaraid_init_mbox()
785 "megaraid: Couldn't register IRQ %d!\n", adapter->irq)); in megaraid_init_mbox()
791 if (megaraid_mbox_product_info(adapter) != 0) in megaraid_init_mbox()
795 adapter->max_cdb_sz = 10; in megaraid_init_mbox()
796 if (megaraid_mbox_extended_cdb(adapter) == 0) { in megaraid_init_mbox()
797 adapter->max_cdb_sz = 16; in megaraid_init_mbox()
806 adapter->ha = 0; in megaraid_init_mbox()
807 adapter->init_id = -1; in megaraid_init_mbox()
808 if (megaraid_mbox_support_ha(adapter, &adapter->init_id) == 0) { in megaraid_init_mbox()
809 adapter->ha = 1; in megaraid_init_mbox()
818 megaraid_mbox_setup_device_map(adapter); in megaraid_init_mbox()
821 if (megaraid_mbox_support_random_del(adapter)) { in megaraid_init_mbox()
827 adapter->device_ids[adapter->max_channel][i] += 0x80; in megaraid_init_mbox()
829 adapter->device_ids[adapter->max_channel][adapter->init_id] = in megaraid_init_mbox()
839 adapter->sglen = megaraid_mbox_get_max_sg(adapter); in megaraid_init_mbox()
843 megaraid_mbox_enum_raid_scsi(adapter); in megaraid_init_mbox()
850 adapter->max_sectors = megaraid_max_sectors; in megaraid_init_mbox()
855 adapter->cmd_per_lun = megaraid_cmd_per_lun; in megaraid_init_mbox()
861 if (megaraid_sysfs_alloc_resources(adapter) != 0) in megaraid_init_mbox()
866 pci_read_config_dword(adapter->pdev, PCI_CONF_AMISIG64, &magic64); in megaraid_init_mbox()
869 ((adapter->pdev->subsystem_device != in megaraid_init_mbox()
871 (adapter->pdev->subsystem_device != in megaraid_init_mbox()
873 (adapter->pdev->vendor == PCI_VENDOR_ID_LSI_LOGIC && in megaraid_init_mbox()
874 adapter->pdev->device == PCI_DEVICE_ID_VERDE) || in megaraid_init_mbox()
875 (adapter->pdev->vendor == PCI_VENDOR_ID_LSI_LOGIC && in megaraid_init_mbox()
876 adapter->pdev->device == PCI_DEVICE_ID_DOBSON) || in megaraid_init_mbox()
877 (adapter->pdev->vendor == PCI_VENDOR_ID_LSI_LOGIC && in megaraid_init_mbox()
878 adapter->pdev->device == PCI_DEVICE_ID_LINDSAY) || in megaraid_init_mbox()
879 (adapter->pdev->vendor == PCI_VENDOR_ID_DELL && in megaraid_init_mbox()
880 adapter->pdev->device == PCI_DEVICE_ID_PERC4_DI_EVERGLADES) || in megaraid_init_mbox()
881 (adapter->pdev->vendor == PCI_VENDOR_ID_DELL && in megaraid_init_mbox()
882 adapter->pdev->device == PCI_DEVICE_ID_PERC4E_DI_KOBUK)) { in megaraid_init_mbox()
883 if (pci_set_dma_mask(adapter->pdev, DMA_BIT_MASK(64))) { in megaraid_init_mbox()
887 if (pci_set_dma_mask (adapter->pdev, DMA_BIT_MASK(32))) { in megaraid_init_mbox()
896 tasklet_init(&adapter->dpc_h, megaraid_mbox_dpc, in megaraid_init_mbox()
897 (unsigned long)adapter); in megaraid_init_mbox()
905 megaraid_sysfs_free_resources(adapter); in megaraid_init_mbox()
907 free_irq(adapter->irq, adapter); in megaraid_init_mbox()
909 megaraid_free_cmd_packets(adapter); in megaraid_init_mbox()
926 megaraid_fini_mbox(adapter_t *adapter) in megaraid_fini_mbox() argument
928 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_fini_mbox()
931 megaraid_mbox_flush_cache(adapter); in megaraid_fini_mbox()
933 tasklet_kill(&adapter->dpc_h); in megaraid_fini_mbox()
935 megaraid_sysfs_free_resources(adapter); in megaraid_fini_mbox()
937 megaraid_free_cmd_packets(adapter); in megaraid_fini_mbox()
939 free_irq(adapter->irq, adapter); in megaraid_fini_mbox()
943 pci_release_regions(adapter->pdev); in megaraid_fini_mbox()
961 megaraid_alloc_cmd_packets(adapter_t *adapter) in megaraid_alloc_cmd_packets() argument
963 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_alloc_cmd_packets()
973 pdev = adapter->pdev; in megaraid_alloc_cmd_packets()
980 raid_dev->una_mbox64 = pci_zalloc_consistent(adapter->pdev, in megaraid_alloc_cmd_packets()
1008 adapter->ibuf = pci_zalloc_consistent(pdev, MBOX_IBUF_SIZE, in megaraid_alloc_cmd_packets()
1009 &adapter->ibuf_dma_h); in megaraid_alloc_cmd_packets()
1010 if (!adapter->ibuf) { in megaraid_alloc_cmd_packets()
1030 adapter->kscb_list = kcalloc(MBOX_MAX_SCSI_CMDS, sizeof(scb_t), GFP_KERNEL); in megaraid_alloc_cmd_packets()
1032 if (adapter->kscb_list == NULL) { in megaraid_alloc_cmd_packets()
1040 if (megaraid_mbox_setup_dma_pools(adapter) != 0) { in megaraid_alloc_cmd_packets()
1053 scb = adapter->kscb_list + i; in megaraid_alloc_cmd_packets()
1093 list_add_tail(&scb->list, &adapter->kscb_pool); in megaraid_alloc_cmd_packets()
1099 megaraid_mbox_teardown_dma_pools(adapter); in megaraid_alloc_cmd_packets()
1101 kfree(adapter->kscb_list); in megaraid_alloc_cmd_packets()
1103 pci_free_consistent(pdev, MBOX_IBUF_SIZE, (void *)adapter->ibuf, in megaraid_alloc_cmd_packets()
1104 adapter->ibuf_dma_h); in megaraid_alloc_cmd_packets()
1106 pci_free_consistent(adapter->pdev, sizeof(mbox64_t), in megaraid_alloc_cmd_packets()
1120 megaraid_free_cmd_packets(adapter_t *adapter) in megaraid_free_cmd_packets() argument
1122 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_free_cmd_packets()
1124 megaraid_mbox_teardown_dma_pools(adapter); in megaraid_free_cmd_packets()
1126 kfree(adapter->kscb_list); in megaraid_free_cmd_packets()
1128 pci_free_consistent(adapter->pdev, MBOX_IBUF_SIZE, in megaraid_free_cmd_packets()
1129 (void *)adapter->ibuf, adapter->ibuf_dma_h); in megaraid_free_cmd_packets()
1131 pci_free_consistent(adapter->pdev, sizeof(mbox64_t), in megaraid_free_cmd_packets()
1145 megaraid_mbox_setup_dma_pools(adapter_t *adapter) in megaraid_mbox_setup_dma_pools() argument
1147 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_mbox_setup_dma_pools()
1157 adapter->pdev, in megaraid_mbox_setup_dma_pools()
1185 adapter->pdev, sizeof(mraid_epassthru_t), 128, 0); in megaraid_mbox_setup_dma_pools()
1206 adapter->pdev, in megaraid_mbox_setup_dma_pools()
1228 megaraid_mbox_teardown_dma_pools(adapter); in megaraid_mbox_setup_dma_pools()
1241 megaraid_mbox_teardown_dma_pools(adapter_t *adapter) in megaraid_mbox_teardown_dma_pools() argument
1243 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_mbox_teardown_dma_pools()
1289 megaraid_alloc_scb(adapter_t *adapter, struct scsi_cmnd *scp) in megaraid_alloc_scb() argument
1291 struct list_head *head = &adapter->kscb_pool; in megaraid_alloc_scb()
1296 spin_lock_irqsave(SCSI_FREE_LIST_LOCK(adapter), flags); in megaraid_alloc_scb()
1299 spin_unlock_irqrestore(SCSI_FREE_LIST_LOCK(adapter), flags); in megaraid_alloc_scb()
1306 spin_unlock_irqrestore(SCSI_FREE_LIST_LOCK(adapter), flags); in megaraid_alloc_scb()
1327 megaraid_dealloc_scb(adapter_t *adapter, scb_t *scb) in megaraid_dealloc_scb() argument
1334 spin_lock_irqsave(SCSI_FREE_LIST_LOCK(adapter), flags); in megaraid_dealloc_scb()
1336 list_add(&scb->list, &adapter->kscb_pool); in megaraid_dealloc_scb()
1338 spin_unlock_irqrestore(SCSI_FREE_LIST_LOCK(adapter), flags); in megaraid_dealloc_scb()
1352 megaraid_mbox_mksgl(adapter_t *adapter, scb_t *scb) in megaraid_mbox_mksgl() argument
1365 BUG_ON(sgcnt < 0 || sgcnt > adapter->sglen); in megaraid_mbox_mksgl()
1391 mbox_post_cmd(adapter_t *adapter, scb_t *scb) in mbox_post_cmd() argument
1393 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in mbox_post_cmd()
1431 adapter->outstanding_cmds++; in mbox_post_cmd()
1434 pci_dma_sync_sg_for_device(adapter->pdev, in mbox_post_cmd()
1462 adapter_t *adapter; in megaraid_queue_command_lck() local
1466 adapter = SCP2ADAPTER(scp); in megaraid_queue_command_lck()
1479 scb = megaraid_mbox_build_cmd(adapter, scp, &if_busy); in megaraid_queue_command_lck()
1485 megaraid_mbox_runpendq(adapter, scb); in megaraid_queue_command_lck()
1503 megaraid_mbox_build_cmd(adapter_t *adapter, struct scsi_cmnd *scp, int *busy) in DEF_SCSI_QCMD()
1505 mraid_device_t *rdev = ADAP2RAIDDEV(adapter); in DEF_SCSI_QCMD()
1523 MRAID_GET_DEVICE_MAP(adapter, scp, channel, target, islogical); in DEF_SCSI_QCMD()
1535 if (!adapter->ha) { in DEF_SCSI_QCMD()
1540 if (!(scb = megaraid_alloc_scb(adapter, scp))) { in DEF_SCSI_QCMD()
1590 adapter->host->host_no, in DEF_SCSI_QCMD()
1625 if (!(scb = megaraid_alloc_scb(adapter, scp))) { in DEF_SCSI_QCMD()
1651 pthru->numsge = megaraid_mbox_mksgl(adapter, in DEF_SCSI_QCMD()
1670 if (!(scb = megaraid_alloc_scb(adapter, scp))) { in DEF_SCSI_QCMD()
1736 megaraid_dealloc_scb(adapter, scb); in DEF_SCSI_QCMD()
1746 mbox->numsge = megaraid_mbox_mksgl(adapter, in DEF_SCSI_QCMD()
1758 if (!adapter->ha) { in DEF_SCSI_QCMD()
1766 if (!(scb = megaraid_alloc_scb(adapter, scp))) { in DEF_SCSI_QCMD()
1801 (SCP2CHANNEL(scp) == adapter->max_channel -1)) { in DEF_SCSI_QCMD()
1805 adapter->host->host_no)); in DEF_SCSI_QCMD()
1818 adapter->host->host_no, ss, SCP2CHANNEL(scp), in DEF_SCSI_QCMD()
1834 if (!(scb = megaraid_alloc_scb(adapter, scp))) { in DEF_SCSI_QCMD()
1848 if (adapter->max_cdb_sz == 16) { in DEF_SCSI_QCMD()
1851 megaraid_mbox_prepare_epthru(adapter, scb, scp); in DEF_SCSI_QCMD()
1860 megaraid_mbox_prepare_pthru(adapter, scb, scp); in DEF_SCSI_QCMD()
1887 megaraid_mbox_runpendq(adapter_t *adapter, scb_t *scb_q) in megaraid_mbox_runpendq() argument
1892 spin_lock_irqsave(PENDING_LIST_LOCK(adapter), flags); in megaraid_mbox_runpendq()
1896 list_add_tail(&scb_q->list, &adapter->pend_list); in megaraid_mbox_runpendq()
1900 if (adapter->quiescent) { in megaraid_mbox_runpendq()
1901 spin_unlock_irqrestore(PENDING_LIST_LOCK(adapter), flags); in megaraid_mbox_runpendq()
1905 while (!list_empty(&adapter->pend_list)) { in megaraid_mbox_runpendq()
1907 assert_spin_locked(PENDING_LIST_LOCK(adapter)); in megaraid_mbox_runpendq()
1909 scb = list_entry(adapter->pend_list.next, scb_t, list); in megaraid_mbox_runpendq()
1917 spin_unlock_irqrestore(PENDING_LIST_LOCK(adapter), flags); in megaraid_mbox_runpendq()
1925 if (mbox_post_cmd(adapter, scb) != 0) { in megaraid_mbox_runpendq()
1927 spin_lock_irqsave(PENDING_LIST_LOCK(adapter), flags); in megaraid_mbox_runpendq()
1931 list_add(&scb->list, &adapter->pend_list); in megaraid_mbox_runpendq()
1933 spin_unlock_irqrestore(PENDING_LIST_LOCK(adapter), in megaraid_mbox_runpendq()
1939 spin_lock_irqsave(PENDING_LIST_LOCK(adapter), flags); in megaraid_mbox_runpendq()
1942 spin_unlock_irqrestore(PENDING_LIST_LOCK(adapter), flags); in megaraid_mbox_runpendq()
1958 megaraid_mbox_prepare_pthru(adapter_t *adapter, scb_t *scb, in megaraid_mbox_prepare_pthru() argument
1986 pthru->numsge = megaraid_mbox_mksgl(adapter, scb); in megaraid_mbox_prepare_pthru()
2007 megaraid_mbox_prepare_epthru(adapter_t *adapter, scb_t *scb, in megaraid_mbox_prepare_epthru() argument
2035 epthru->numsge = megaraid_mbox_mksgl(adapter, scb); in megaraid_mbox_prepare_epthru()
2056 megaraid_ack_sequence(adapter_t *adapter) in megaraid_ack_sequence() argument
2058 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_ack_sequence()
2101 adapter->outstanding_cmds -= nstatus; in megaraid_ack_sequence()
2124 scb = adapter->uscb_list + (completed[i] - in megaraid_ack_sequence()
2129 scb = adapter->kscb_list + completed[i]; in megaraid_ack_sequence()
2146 spin_lock_irqsave(COMPLETED_LIST_LOCK(adapter), flags); in megaraid_ack_sequence()
2148 list_splice(&clist, &adapter->completed_list); in megaraid_ack_sequence()
2150 spin_unlock_irqrestore(COMPLETED_LIST_LOCK(adapter), flags); in megaraid_ack_sequence()
2155 tasklet_schedule(&adapter->dpc_h); in megaraid_ack_sequence()
2171 adapter_t *adapter = devp; in megaraid_isr() local
2174 handled = megaraid_ack_sequence(adapter); in megaraid_isr()
2177 if (!adapter->quiescent) { in megaraid_isr()
2178 megaraid_mbox_runpendq(adapter, NULL); in megaraid_isr()
2193 megaraid_mbox_sync_scb(adapter_t *adapter, scb_t *scb) in megaraid_mbox_sync_scb() argument
2200 pci_dma_sync_sg_for_cpu(adapter->pdev, in megaraid_mbox_sync_scb()
2221 adapter_t *adapter = (adapter_t *)devp; in megaraid_mbox_dpc() local
2241 if (!adapter) return; in megaraid_mbox_dpc()
2243 raid_dev = ADAP2RAIDDEV(adapter); in megaraid_mbox_dpc()
2248 spin_lock_irqsave(COMPLETED_LIST_LOCK(adapter), flags); in megaraid_mbox_dpc()
2250 list_splice_init(&adapter->completed_list, &clist); in megaraid_mbox_dpc()
2252 spin_unlock_irqrestore(COMPLETED_LIST_LOCK(adapter), flags); in megaraid_mbox_dpc()
2284 megaraid_mbox_mm_done(adapter, scb); in megaraid_mbox_dpc()
2304 islogical = MRAID_IS_LOGICAL(adapter, scp); in megaraid_mbox_dpc()
2405 megaraid_mbox_display_scb(adapter, scb); in megaraid_mbox_dpc()
2410 megaraid_mbox_sync_scb(adapter, scb); in megaraid_mbox_dpc()
2416 megaraid_dealloc_scb(adapter, scb); in megaraid_mbox_dpc()
2436 adapter_t *adapter; in megaraid_abort_handler() local
2445 adapter = SCP2ADAPTER(scp); in megaraid_abort_handler()
2446 raid_dev = ADAP2RAIDDEV(adapter); in megaraid_abort_handler()
2465 spin_lock_irqsave(COMPLETED_LIST_LOCK(adapter), flags); in megaraid_abort_handler()
2466 list_for_each_entry_safe(scb, tmp, &adapter->completed_list, list) { in megaraid_abort_handler()
2479 megaraid_dealloc_scb(adapter, scb); in megaraid_abort_handler()
2481 spin_unlock_irqrestore(COMPLETED_LIST_LOCK(adapter), in megaraid_abort_handler()
2487 spin_unlock_irqrestore(COMPLETED_LIST_LOCK(adapter), flags); in megaraid_abort_handler()
2493 spin_lock_irqsave(PENDING_LIST_LOCK(adapter), flags); in megaraid_abort_handler()
2494 list_for_each_entry_safe(scb, tmp, &adapter->pend_list, list) { in megaraid_abort_handler()
2509 megaraid_dealloc_scb(adapter, scb); in megaraid_abort_handler()
2511 spin_unlock_irqrestore(PENDING_LIST_LOCK(adapter), in megaraid_abort_handler()
2517 spin_unlock_irqrestore(PENDING_LIST_LOCK(adapter), flags); in megaraid_abort_handler()
2525 spin_lock_irq(&adapter->lock); in megaraid_abort_handler()
2527 scb = adapter->kscb_list + i; in megaraid_abort_handler()
2546 spin_unlock_irq(&adapter->lock); in megaraid_abort_handler()
2574 adapter_t *adapter; in megaraid_reset_handler() local
2586 adapter = SCP2ADAPTER(scp); in megaraid_reset_handler()
2587 raid_dev = ADAP2RAIDDEV(adapter); in megaraid_reset_handler()
2602 spin_lock_irqsave(PENDING_LIST_LOCK(adapter), flags); in megaraid_reset_handler()
2603 list_for_each_entry_safe(scb, tmp, &adapter->pend_list, list) { in megaraid_reset_handler()
2616 megaraid_mbox_mm_done(adapter, scb); in megaraid_reset_handler()
2631 megaraid_dealloc_scb(adapter, scb); in megaraid_reset_handler()
2634 spin_unlock_irqrestore(PENDING_LIST_LOCK(adapter), flags); in megaraid_reset_handler()
2636 if (adapter->outstanding_cmds) { in megaraid_reset_handler()
2639 adapter->outstanding_cmds, in megaraid_reset_handler()
2645 recovering = adapter->outstanding_cmds; in megaraid_reset_handler()
2649 megaraid_ack_sequence(adapter); in megaraid_reset_handler()
2655 adapter->outstanding_cmds, in megaraid_reset_handler()
2660 if (adapter->outstanding_cmds == 0) { in megaraid_reset_handler()
2667 spin_lock(&adapter->lock); in megaraid_reset_handler()
2670 if (adapter->outstanding_cmds) { in megaraid_reset_handler()
2686 if (!adapter->ha) { in megaraid_reset_handler()
2696 if (mbox_post_sync_cmd_fast(adapter, raw_mbox) == 0) { in megaraid_reset_handler()
2707 spin_unlock(&adapter->lock); in megaraid_reset_handler()
2727 mbox_post_sync_cmd(adapter_t *adapter, uint8_t raw_mbox[]) in mbox_post_sync_cmd() argument
2729 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in mbox_post_sync_cmd()
2860 mbox_post_sync_cmd_fast(adapter_t *adapter, uint8_t raw_mbox[]) in mbox_post_sync_cmd_fast() argument
2862 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in mbox_post_sync_cmd_fast()
2935 megaraid_mbox_product_info(adapter_t *adapter) in megaraid_mbox_product_info() argument
2937 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_mbox_product_info()
2953 pinfo = pci_zalloc_consistent(adapter->pdev, sizeof(mraid_pinfo_t), in megaraid_mbox_product_info()
2964 mbox->xferaddr = (uint32_t)adapter->ibuf_dma_h; in megaraid_mbox_product_info()
2965 memset((void *)adapter->ibuf, 0, MBOX_IBUF_SIZE); in megaraid_mbox_product_info()
2972 if (mbox_post_sync_cmd(adapter, raw_mbox) != 0) { in megaraid_mbox_product_info()
2976 pci_free_consistent(adapter->pdev, sizeof(mraid_pinfo_t), in megaraid_mbox_product_info()
2987 mraid_inq3 = (mraid_inquiry3_t *)adapter->ibuf; in megaraid_mbox_product_info()
3002 if (mbox_post_sync_cmd(adapter, raw_mbox) != 0) { in megaraid_mbox_product_info()
3007 pci_free_consistent(adapter->pdev, sizeof(mraid_pinfo_t), in megaraid_mbox_product_info()
3016 adapter->max_channel = pinfo->nchannels; in megaraid_mbox_product_info()
3022 adapter->max_target = MAX_LOGICAL_DRIVES_40LD + 1; in megaraid_mbox_product_info()
3023 adapter->max_lun = 8; // up to 8 LUNs for non-disk devices in megaraid_mbox_product_info()
3028 adapter->max_cmds = MBOX_MAX_SCSI_CMDS; in megaraid_mbox_product_info()
3030 memset(adapter->fw_version, 0, VERSION_SIZE); in megaraid_mbox_product_info()
3031 memset(adapter->bios_version, 0, VERSION_SIZE); in megaraid_mbox_product_info()
3033 memcpy(adapter->fw_version, pinfo->fw_version, 4); in megaraid_mbox_product_info()
3034 adapter->fw_version[4] = 0; in megaraid_mbox_product_info()
3036 memcpy(adapter->bios_version, pinfo->bios_version, 4); in megaraid_mbox_product_info()
3037 adapter->bios_version[4] = 0; in megaraid_mbox_product_info()
3041 adapter->fw_version, adapter->bios_version)); in megaraid_mbox_product_info()
3043 pci_free_consistent(adapter->pdev, sizeof(mraid_pinfo_t), pinfo, in megaraid_mbox_product_info()
3059 megaraid_mbox_extended_cdb(adapter_t *adapter) in megaraid_mbox_extended_cdb() argument
3068 mbox->xferaddr = (uint32_t)adapter->ibuf_dma_h; in megaraid_mbox_extended_cdb()
3070 memset((void *)adapter->ibuf, 0, MBOX_IBUF_SIZE); in megaraid_mbox_extended_cdb()
3079 if (mbox_post_sync_cmd(adapter, raw_mbox) != 0) { in megaraid_mbox_extended_cdb()
3095 megaraid_mbox_support_ha(adapter_t *adapter, uint16_t *init_id) in megaraid_mbox_support_ha() argument
3106 mbox->xferaddr = (uint32_t)adapter->ibuf_dma_h; in megaraid_mbox_support_ha()
3108 memset((void *)adapter->ibuf, 0, MBOX_IBUF_SIZE); in megaraid_mbox_support_ha()
3115 if (mbox_post_sync_cmd(adapter, raw_mbox) == 0) { in megaraid_mbox_support_ha()
3117 *init_id = *(uint8_t *)adapter->ibuf; in megaraid_mbox_support_ha()
3138 megaraid_mbox_support_random_del(adapter_t *adapter) in megaraid_mbox_support_random_del() argument
3148 if (adapter->pdev->vendor == PCI_VENDOR_ID_AMI && in megaraid_mbox_support_random_del()
3149 adapter->pdev->device == PCI_DEVICE_ID_AMI_MEGARAID3 && in megaraid_mbox_support_random_del()
3150 adapter->pdev->subsystem_vendor == PCI_VENDOR_ID_DELL && in megaraid_mbox_support_random_del()
3151 adapter->pdev->subsystem_device == PCI_SUBSYS_ID_CERC_ATA100_4CH && in megaraid_mbox_support_random_del()
3152 (adapter->fw_version[0] > '6' || in megaraid_mbox_support_random_del()
3153 (adapter->fw_version[0] == '6' && in megaraid_mbox_support_random_del()
3154 adapter->fw_version[2] > '6') || in megaraid_mbox_support_random_del()
3155 (adapter->fw_version[0] == '6' in megaraid_mbox_support_random_del()
3156 && adapter->fw_version[2] == '6' in megaraid_mbox_support_random_del()
3157 && adapter->fw_version[3] > '1'))) { in megaraid_mbox_support_random_del()
3171 if (mbox_post_sync_cmd(adapter, raw_mbox) == 0) { in megaraid_mbox_support_random_del()
3190 megaraid_mbox_get_max_sg(adapter_t *adapter) in megaraid_mbox_get_max_sg() argument
3201 mbox->xferaddr = (uint32_t)adapter->ibuf_dma_h; in megaraid_mbox_get_max_sg()
3203 memset((void *)adapter->ibuf, 0, MBOX_IBUF_SIZE); in megaraid_mbox_get_max_sg()
3209 if (mbox_post_sync_cmd(adapter, raw_mbox) == 0) { in megaraid_mbox_get_max_sg()
3210 nsg = *(uint8_t *)adapter->ibuf; in megaraid_mbox_get_max_sg()
3230 megaraid_mbox_enum_raid_scsi(adapter_t *adapter) in megaraid_mbox_enum_raid_scsi() argument
3232 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_mbox_enum_raid_scsi()
3241 mbox->xferaddr = (uint32_t)adapter->ibuf_dma_h; in megaraid_mbox_enum_raid_scsi()
3243 memset((void *)adapter->ibuf, 0, MBOX_IBUF_SIZE); in megaraid_mbox_enum_raid_scsi()
3251 if (mbox_post_sync_cmd(adapter, raw_mbox) == 0) { in megaraid_mbox_enum_raid_scsi()
3252 raid_dev->channel_class = *(uint8_t *)adapter->ibuf; in megaraid_mbox_enum_raid_scsi()
3266 megaraid_mbox_flush_cache(adapter_t *adapter) in megaraid_mbox_flush_cache() argument
3278 if (mbox_post_sync_cmd(adapter, raw_mbox) != 0) { in megaraid_mbox_flush_cache()
3284 if (mbox_post_sync_cmd(adapter, raw_mbox) != 0) { in megaraid_mbox_flush_cache()
3299 megaraid_mbox_fire_sync_cmd(adapter_t *adapter) in megaraid_mbox_fire_sync_cmd() argument
3303 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_mbox_fire_sync_cmd()
3380 megaraid_mbox_display_scb(adapter_t *adapter, scb_t *scb) in megaraid_mbox_display_scb() argument
3427 megaraid_mbox_setup_device_map(adapter_t *adapter) in megaraid_mbox_setup_device_map() argument
3436 adapter->device_ids[adapter->max_channel][t] = in megaraid_mbox_setup_device_map()
3437 (t < adapter->init_id) ? t : t - 1; in megaraid_mbox_setup_device_map()
3439 adapter->device_ids[adapter->max_channel][adapter->init_id] = 0xFF; in megaraid_mbox_setup_device_map()
3444 for (c = 0; c < adapter->max_channel; c++) in megaraid_mbox_setup_device_map()
3446 adapter->device_ids[c][t] = (c << 8) | t; in megaraid_mbox_setup_device_map()
3470 megaraid_cmm_register(adapter_t *adapter) in megaraid_cmm_register() argument
3472 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_cmm_register()
3480 adapter->uscb_list = kcalloc(MBOX_MAX_USER_CMDS, sizeof(scb_t), GFP_KERNEL); in megaraid_cmm_register()
3482 if (adapter->uscb_list == NULL) { in megaraid_cmm_register()
3492 INIT_LIST_HEAD(&adapter->uscb_pool); in megaraid_cmm_register()
3494 spin_lock_init(USER_FREE_LIST_LOCK(adapter)); in megaraid_cmm_register()
3504 scb = adapter->uscb_list + i; in megaraid_cmm_register()
3526 list_add_tail(&scb->list, &adapter->uscb_pool); in megaraid_cmm_register()
3529 adp.unique_id = adapter->unique_id; in megaraid_cmm_register()
3531 adp.drvr_data = (unsigned long)adapter; in megaraid_cmm_register()
3532 adp.pdev = adapter->pdev; in megaraid_cmm_register()
3542 kfree(adapter->uscb_list); in megaraid_cmm_register()
3558 megaraid_cmm_unregister(adapter_t *adapter) in megaraid_cmm_unregister() argument
3560 kfree(adapter->uscb_list); in megaraid_cmm_unregister()
3561 mraid_mm_unregister_adp(adapter->unique_id); in megaraid_cmm_unregister()
3579 adapter_t *adapter; in megaraid_mbox_mm_handler() local
3588 adapter = (adapter_t *)drvr_data; in megaraid_mbox_mm_handler()
3591 if (atomic_read(&adapter->being_detached)) { in megaraid_mbox_mm_handler()
3601 kioc->status = gather_hbainfo(adapter, (mraid_hba_info_t *) in megaraid_mbox_mm_handler()
3610 return megaraid_mbox_mm_command(adapter, kioc); in megaraid_mbox_mm_handler()
3629 megaraid_mbox_mm_command(adapter_t *adapter, uioc_t *kioc) in megaraid_mbox_mm_command() argument
3631 struct list_head *head = &adapter->uscb_pool; in megaraid_mbox_mm_command()
3639 spin_lock_irqsave(USER_FREE_LIST_LOCK(adapter), flags); in megaraid_mbox_mm_command()
3646 spin_unlock_irqrestore(USER_FREE_LIST_LOCK(adapter), flags); in megaraid_mbox_mm_command()
3654 spin_unlock_irqrestore(USER_FREE_LIST_LOCK(adapter), flags); in megaraid_mbox_mm_command()
3674 if (wait_till_fw_empty(adapter)) { in megaraid_mbox_mm_command()
3682 megaraid_mbox_mm_done(adapter, scb); in megaraid_mbox_mm_command()
3690 if (mbox_post_cmd(adapter, scb) != 0) { in megaraid_mbox_mm_command()
3699 megaraid_mbox_mm_done(adapter, scb); in megaraid_mbox_mm_command()
3708 megaraid_mbox_runpendq(adapter, scb); in megaraid_mbox_mm_command()
3715 wait_till_fw_empty(adapter_t *adapter) in wait_till_fw_empty() argument
3724 spin_lock_irqsave(&adapter->lock, flags); in wait_till_fw_empty()
3725 adapter->quiescent++; in wait_till_fw_empty()
3726 spin_unlock_irqrestore(&adapter->lock, flags); in wait_till_fw_empty()
3732 for (i = 0; i < 60 && adapter->outstanding_cmds; i++) { in wait_till_fw_empty()
3735 adapter->outstanding_cmds)); in wait_till_fw_empty()
3740 return adapter->outstanding_cmds; in wait_till_fw_empty()
3753 megaraid_mbox_mm_done(adapter_t *adapter, scb_t *scb) in megaraid_mbox_mm_done() argument
3770 spin_lock_irqsave(USER_FREE_LIST_LOCK(adapter), flags); in megaraid_mbox_mm_done()
3772 list_add(&scb->list, &adapter->uscb_pool); in megaraid_mbox_mm_done()
3774 spin_unlock_irqrestore(USER_FREE_LIST_LOCK(adapter), flags); in megaraid_mbox_mm_done()
3780 adapter->quiescent--; in megaraid_mbox_mm_done()
3782 megaraid_mbox_runpendq(adapter, NULL); in megaraid_mbox_mm_done()
3797 gather_hbainfo(adapter_t *adapter, mraid_hba_info_t *hinfo) in gather_hbainfo() argument
3803 hinfo->pci_vendor_id = adapter->pdev->vendor; in gather_hbainfo()
3804 hinfo->pci_device_id = adapter->pdev->device; in gather_hbainfo()
3805 hinfo->subsys_vendor_id = adapter->pdev->subsystem_vendor; in gather_hbainfo()
3806 hinfo->subsys_device_id = adapter->pdev->subsystem_device; in gather_hbainfo()
3808 hinfo->pci_bus = adapter->pdev->bus->number; in gather_hbainfo()
3809 hinfo->pci_dev_fn = adapter->pdev->devfn; in gather_hbainfo()
3810 hinfo->pci_slot = PCI_SLOT(adapter->pdev->devfn); in gather_hbainfo()
3811 hinfo->irq = adapter->host->irq; in gather_hbainfo()
3812 hinfo->baseport = ADAP2RAIDDEV(adapter)->baseport; in gather_hbainfo()
3814 hinfo->unique_id = (hinfo->pci_bus << 8) | adapter->pdev->devfn; in gather_hbainfo()
3815 hinfo->host_no = adapter->host->host_no; in gather_hbainfo()
3839 megaraid_sysfs_alloc_resources(adapter_t *adapter) in megaraid_sysfs_alloc_resources() argument
3841 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_sysfs_alloc_resources()
3848 raid_dev->sysfs_buffer = pci_alloc_consistent(adapter->pdev, in megaraid_sysfs_alloc_resources()
3860 megaraid_sysfs_free_resources(adapter); in megaraid_sysfs_alloc_resources()
3878 megaraid_sysfs_free_resources(adapter_t *adapter) in megaraid_sysfs_free_resources() argument
3880 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_sysfs_free_resources()
3886 pci_free_consistent(adapter->pdev, PAGE_SIZE, in megaraid_sysfs_free_resources()
3901 adapter_t *adapter = (adapter_t *)uioc->buf_vaddr; in megaraid_sysfs_get_ldmap_done() local
3902 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_sysfs_get_ldmap_done()
3922 adapter_t *adapter = (adapter_t *)uioc->buf_vaddr; in megaraid_sysfs_get_ldmap_timeout() local
3923 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_sysfs_get_ldmap_timeout()
3949 megaraid_sysfs_get_ldmap(adapter_t *adapter) in megaraid_sysfs_get_ldmap() argument
3951 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_sysfs_get_ldmap()
3977 uioc->buf_vaddr = (caddr_t)adapter; in megaraid_sysfs_get_ldmap()
4005 rval = megaraid_mbox_mm_command(adapter, uioc); in megaraid_sysfs_get_ldmap()
4060 adapter_t *adapter = (adapter_t *)SCSIHOST2ADAP(shost); in megaraid_sysfs_show_app_hndl() local
4063 app_hndl = mraid_mm_adapter_app_handle(adapter->unique_id); in megaraid_sysfs_show_app_hndl()
4088 adapter_t *adapter = (adapter_t *)SCSIHOST2ADAP(sdev->host); in megaraid_sysfs_show_ldnum() local
4089 mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); in megaraid_sysfs_show_ldnum()
4099 MRAID_IS_LOGICAL_SDEV(adapter, sdev)) { in megaraid_sysfs_show_ldnum()
4101 rval = megaraid_sysfs_get_ldmap(adapter); in megaraid_sysfs_show_ldnum()
4108 if (sdev->id > adapter->init_id) { in megaraid_sysfs_show_ldnum()
4121 adapter->unique_id); in megaraid_sysfs_show_ldnum()