Lines Matching refs:adapter

80 #define RDINDOOR(adapter)	readl((adapter)->mmio_base + 0x20)  argument
81 #define RDOUTDOOR(adapter) readl((adapter)->mmio_base + 0x2C) argument
82 #define WRINDOOR(adapter,value) writel(value, (adapter)->mmio_base + 0x20) argument
83 #define WROUTDOOR(adapter,value) writel(value, (adapter)->mmio_base + 0x2C) argument
137 mega_setup_mailbox(adapter_t *adapter) in mega_setup_mailbox() argument
141 adapter->una_mbox64 = pci_alloc_consistent(adapter->dev, in mega_setup_mailbox()
142 sizeof(mbox64_t), &adapter->una_mbox64_dma); in mega_setup_mailbox()
144 if( !adapter->una_mbox64 ) return -1; in mega_setup_mailbox()
146 adapter->mbox = &adapter->una_mbox64->mbox; in mega_setup_mailbox()
148 adapter->mbox = (mbox_t *)((((unsigned long) adapter->mbox) + 15) & in mega_setup_mailbox()
151 adapter->mbox64 = (mbox64_t *)(((unsigned long)adapter->mbox) - 8); in mega_setup_mailbox()
153 align = ((void *)adapter->mbox) - ((void *)&adapter->una_mbox64->mbox); in mega_setup_mailbox()
155 adapter->mbox_dma = adapter->una_mbox64_dma + 8 + align; in mega_setup_mailbox()
160 if( adapter->flag & BOARD_IOMAP ) { in mega_setup_mailbox()
162 outb(adapter->mbox_dma & 0xFF, in mega_setup_mailbox()
163 adapter->host->io_port + MBOX_PORT0); in mega_setup_mailbox()
165 outb((adapter->mbox_dma >> 8) & 0xFF, in mega_setup_mailbox()
166 adapter->host->io_port + MBOX_PORT1); in mega_setup_mailbox()
168 outb((adapter->mbox_dma >> 16) & 0xFF, in mega_setup_mailbox()
169 adapter->host->io_port + MBOX_PORT2); in mega_setup_mailbox()
171 outb((adapter->mbox_dma >> 24) & 0xFF, in mega_setup_mailbox()
172 adapter->host->io_port + MBOX_PORT3); in mega_setup_mailbox()
175 adapter->host->io_port + ENABLE_MBOX_REGION); in mega_setup_mailbox()
177 irq_ack(adapter); in mega_setup_mailbox()
179 irq_enable(adapter); in mega_setup_mailbox()
194 mega_query_adapter(adapter_t *adapter) in mega_query_adapter() argument
206 memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE); in mega_query_adapter()
214 mbox->m_out.xferaddr = (u32)adapter->buf_dma_handle; in mega_query_adapter()
216 inquiry3 = (mega_inquiry3 *)adapter->mega_buffer; in mega_query_adapter()
223 if ((retval = issue_scb_block(adapter, raw_mbox))) { in mega_query_adapter()
230 ext_inq = pci_alloc_consistent(adapter->dev, in mega_query_adapter()
242 issue_scb_block(adapter, raw_mbox); in mega_query_adapter()
249 (mega_product_info *)&adapter->product_info); in mega_query_adapter()
251 pci_free_consistent(adapter->dev, sizeof(mraid_ext_inquiry), in mega_query_adapter()
255 adapter->flag |= BOARD_40LD; in mega_query_adapter()
261 prod_info_dma_handle = pci_map_single(adapter->dev, (void *) in mega_query_adapter()
262 &adapter->product_info, in mega_query_adapter()
270 if ((retval = issue_scb_block(adapter, raw_mbox))) in mega_query_adapter()
275 pci_unmap_single(adapter->dev, prod_info_dma_handle, in mega_query_adapter()
283 adapter->host->max_channel = in mega_query_adapter()
284 adapter->product_info.nchannels + NVIRT_CHAN -1; in mega_query_adapter()
286 adapter->host->max_id = 16; /* max targets per channel */ in mega_query_adapter()
288 adapter->host->max_lun = 7; /* Up to 7 luns for non disk devices */ in mega_query_adapter()
290 adapter->host->cmd_per_lun = max_cmd_per_lun; in mega_query_adapter()
292 adapter->numldrv = inquiry3->num_ldrv; in mega_query_adapter()
294 adapter->max_cmds = adapter->product_info.max_commands; in mega_query_adapter()
296 if(adapter->max_cmds > MAX_COMMANDS) in mega_query_adapter()
297 adapter->max_cmds = MAX_COMMANDS; in mega_query_adapter()
299 adapter->host->can_queue = adapter->max_cmds - 1; in mega_query_adapter()
305 mega_get_max_sgl(adapter); in mega_query_adapter()
307 adapter->host->sg_tablesize = adapter->sglen; in mega_query_adapter()
313 if (adapter->product_info.subsysvid == PCI_VENDOR_ID_HP) { in mega_query_adapter()
314 sprintf (adapter->fw_version, "%c%d%d.%d%d", in mega_query_adapter()
315 adapter->product_info.fw_version[2], in mega_query_adapter()
317 adapter->product_info.fw_version[1] & 0x0f, in mega_query_adapter()
319 adapter->product_info.fw_version[0] & 0x0f); in mega_query_adapter()
320 sprintf (adapter->bios_version, "%c%d%d.%d%d", in mega_query_adapter()
321 adapter->product_info.bios_version[2], in mega_query_adapter()
323 adapter->product_info.bios_version[1] & 0x0f, in mega_query_adapter()
325 adapter->product_info.bios_version[0] & 0x0f); in mega_query_adapter()
327 memcpy(adapter->fw_version, in mega_query_adapter()
328 (char *)adapter->product_info.fw_version, 4); in mega_query_adapter()
329 adapter->fw_version[4] = 0; in mega_query_adapter()
331 memcpy(adapter->bios_version, in mega_query_adapter()
332 (char *)adapter->product_info.bios_version, 4); in mega_query_adapter()
334 adapter->bios_version[4] = 0; in mega_query_adapter()
338 adapter->fw_version, adapter->bios_version, adapter->numldrv); in mega_query_adapter()
343 adapter->support_ext_cdb = mega_support_ext_cdb(adapter); in mega_query_adapter()
344 if (adapter->support_ext_cdb) in mega_query_adapter()
358 mega_runpendq(adapter_t *adapter) in mega_runpendq() argument
360 if(!list_empty(&adapter->pending_list)) in mega_runpendq()
361 __mega_runpendq(adapter); in mega_runpendq()
374 adapter_t *adapter; in megaraid_queue_lck() local
379 adapter = (adapter_t *)scmd->device->host->hostdata; in megaraid_queue_lck()
393 spin_lock_irqsave(&adapter->lock, flags); in megaraid_queue_lck()
394 scb = mega_build_cmd(adapter, scmd, &busy); in megaraid_queue_lck()
399 list_add_tail(&scb->list, &adapter->pending_list); in megaraid_queue_lck()
406 if (atomic_read(&adapter->quiescent) == 0) in megaraid_queue_lck()
407 mega_runpendq(adapter); in megaraid_queue_lck()
411 spin_unlock_irqrestore(&adapter->lock, flags); in megaraid_queue_lck()
426 mega_allocate_scb(adapter_t *adapter, Scsi_Cmnd *cmd) in DEF_SCSI_QCMD()
428 struct list_head *head = &adapter->free_list; in DEF_SCSI_QCMD()
458 mega_get_ldrv_num(adapter_t *adapter, Scsi_Cmnd *cmd, int channel) in mega_get_ldrv_num() argument
465 if ( tgt > adapter->this_id ) in mega_get_ldrv_num()
474 if( adapter->boot_ldrv_enabled ) { in mega_get_ldrv_num()
476 ldrv_num = adapter->boot_ldrv; in mega_get_ldrv_num()
479 if( ldrv_num <= adapter->boot_ldrv ) { in mega_get_ldrv_num()
495 if (adapter->support_random_del && adapter->read_ldidmap ) in mega_get_ldrv_num()
521 mega_build_cmd(adapter_t *adapter, Scsi_Cmnd *cmd, int *busy) in mega_build_cmd() argument
537 islogical = adapter->logdrv_chan[cmd->device->channel]; in mega_build_cmd()
546 if( adapter->boot_pdrv_enabled ) { in mega_build_cmd()
550 adapter->product_info.nchannels; in mega_build_cmd()
563 target = adapter->boot_pdrv_tgt; in mega_build_cmd()
565 else if( target == adapter->boot_pdrv_tgt ) { in mega_build_cmd()
592 ldrv_num = mega_get_ldrv_num(adapter, cmd, channel); in mega_build_cmd()
595 max_ldrv_num = (adapter->flag & BOARD_40LD) ? in mega_build_cmd()
602 if(adapter->read_ldidmap) in mega_build_cmd()
637 if( !adapter->has_cluster ) { in mega_build_cmd()
643 if(!(scb = mega_allocate_scb(adapter, cmd))) { in mega_build_cmd()
679 if(!(adapter->flag & (1L << cmd->device->channel))) { in mega_build_cmd()
683 adapter->host->host_no, in mega_build_cmd()
687 adapter->flag |= (1L << cmd->device->channel); in mega_build_cmd()
691 if(!(scb = mega_allocate_scb(adapter, cmd))) { in mega_build_cmd()
709 if( adapter->has_64bit_addr ) { in mega_build_cmd()
718 pthru->numsgelements = mega_build_sglist(adapter, scb, in mega_build_cmd()
733 if(!(scb = mega_allocate_scb(adapter, cmd))) { in mega_build_cmd()
746 if( adapter->has_64bit_addr ) { in mega_build_cmd()
776 adapter->nreads[ldrv_num%0x80]++; in mega_build_cmd()
777 adapter->nreadblocks[ldrv_num%0x80] += in mega_build_cmd()
780 adapter->nwrites[ldrv_num%0x80]++; in mega_build_cmd()
781 adapter->nwriteblocks[ldrv_num%0x80] += in mega_build_cmd()
802 adapter->nreads[ldrv_num%0x80]++; in mega_build_cmd()
803 adapter->nreadblocks[ldrv_num%0x80] += in mega_build_cmd()
806 adapter->nwrites[ldrv_num%0x80]++; in mega_build_cmd()
807 adapter->nwriteblocks[ldrv_num%0x80] += in mega_build_cmd()
831 adapter->nreads[ldrv_num%0x80]++; in mega_build_cmd()
832 adapter->nreadblocks[ldrv_num%0x80] += in mega_build_cmd()
835 adapter->nwrites[ldrv_num%0x80]++; in mega_build_cmd()
836 adapter->nwriteblocks[ldrv_num%0x80] += in mega_build_cmd()
853 mbox->m_out.numsgelements = mega_build_sglist(adapter, scb, in mega_build_cmd()
865 if( ! adapter->has_cluster ) { in mega_build_cmd()
873 if(!(scb = mega_allocate_scb(adapter, cmd))) { in mega_build_cmd()
901 if(!(scb = mega_allocate_scb(adapter, cmd))) { in mega_build_cmd()
909 if( adapter->support_ext_cdb ) { in mega_build_cmd()
911 epthru = mega_prepare_extpassthru(adapter, scb, cmd, in mega_build_cmd()
921 pthru = mega_prepare_passthru(adapter, scb, cmd, in mega_build_cmd()
925 if( adapter->has_64bit_addr ) { in mega_build_cmd()
952 mega_prepare_passthru(adapter_t *adapter, scb_t *scb, Scsi_Cmnd *cmd, in mega_prepare_passthru() argument
967 pthru->channel = (adapter->flag & BOARD_40LD) ? 0 : channel; in mega_prepare_passthru()
969 pthru->target = (adapter->flag & BOARD_40LD) ? in mega_prepare_passthru()
984 if(!(adapter->flag & (1L << cmd->device->channel))) { in mega_prepare_passthru()
988 adapter->host->host_no, in mega_prepare_passthru()
992 adapter->flag |= (1L << cmd->device->channel); in mega_prepare_passthru()
996 pthru->numsgelements = mega_build_sglist(adapter, scb, in mega_prepare_passthru()
1016 mega_prepare_extpassthru(adapter_t *adapter, scb_t *scb, Scsi_Cmnd *cmd, in mega_prepare_extpassthru() argument
1031 epthru->channel = (adapter->flag & BOARD_40LD) ? 0 : channel; in mega_prepare_extpassthru()
1032 epthru->target = (adapter->flag & BOARD_40LD) ? in mega_prepare_extpassthru()
1046 if(!(adapter->flag & (1L << cmd->device->channel))) { in mega_prepare_extpassthru()
1050 adapter->host->host_no, in mega_prepare_extpassthru()
1054 adapter->flag |= (1L << cmd->device->channel); in mega_prepare_extpassthru()
1058 epthru->numsgelements = mega_build_sglist(adapter, scb, in mega_prepare_extpassthru()
1067 __mega_runpendq(adapter_t *adapter) in __mega_runpendq() argument
1073 list_for_each_safe(pos, next, &adapter->pending_list) { in __mega_runpendq()
1079 if( issue_scb(adapter, scb) != 0 ) in __mega_runpendq()
1098 issue_scb(adapter_t *adapter, scb_t *scb) in issue_scb() argument
1100 volatile mbox64_t *mbox64 = adapter->mbox64; in issue_scb()
1101 volatile mbox_t *mbox = adapter->mbox; in issue_scb()
1124 atomic_inc(&adapter->pend_cmds); in issue_scb()
1145 if( likely(adapter->flag & BOARD_MEMMAP) ) { in issue_scb()
1148 WRINDOOR(adapter, adapter->mbox_dma | 0x1); in issue_scb()
1151 irq_enable(adapter); in issue_scb()
1152 issue_command(adapter); in issue_scb()
1162 mega_busywait_mbox (adapter_t *adapter) in mega_busywait_mbox() argument
1164 if (adapter->mbox->m_in.busy) in mega_busywait_mbox()
1165 return __mega_busywait_mbox(adapter); in mega_busywait_mbox()
1177 issue_scb_block(adapter_t *adapter, u_char *raw_mbox) in issue_scb_block() argument
1179 volatile mbox64_t *mbox64 = adapter->mbox64; in issue_scb_block()
1180 volatile mbox_t *mbox = adapter->mbox; in issue_scb_block()
1184 if(mega_busywait_mbox (adapter)) in issue_scb_block()
1206 if( likely(adapter->flag & BOARD_MEMMAP) ) { in issue_scb_block()
1211 WRINDOOR(adapter, adapter->mbox_dma | 0x1); in issue_scb_block()
1224 WRINDOOR(adapter, adapter->mbox_dma | 0x2); in issue_scb_block()
1226 while(RDINDOOR(adapter) & 0x2) in issue_scb_block()
1230 irq_disable(adapter); in issue_scb_block()
1231 issue_command(adapter); in issue_scb_block()
1233 while (!((byte = irq_state(adapter)) & INTR_VALID)) in issue_scb_block()
1236 set_irq_state(adapter, byte); in issue_scb_block()
1237 irq_enable(adapter); in issue_scb_block()
1238 irq_ack(adapter); in issue_scb_block()
1262 adapter_t *adapter = devp; in megaraid_isr_iomapped() local
1274 spin_lock_irqsave(&adapter->lock, flags); in megaraid_isr_iomapped()
1278 byte = irq_state(adapter); in megaraid_isr_iomapped()
1285 set_irq_state(adapter, byte); in megaraid_isr_iomapped()
1287 while((nstatus = (volatile u8)adapter->mbox->m_in.numstatus) in megaraid_isr_iomapped()
1290 adapter->mbox->m_in.numstatus = 0xFF; in megaraid_isr_iomapped()
1292 status = adapter->mbox->m_in.status; in megaraid_isr_iomapped()
1297 atomic_sub(nstatus, &adapter->pend_cmds); in megaraid_isr_iomapped()
1299 memcpy(completed, (void *)adapter->mbox->m_in.completed, in megaraid_isr_iomapped()
1303 irq_ack(adapter); in megaraid_isr_iomapped()
1305 mega_cmd_done(adapter, completed, nstatus, status); in megaraid_isr_iomapped()
1307 mega_rundoneq(adapter); in megaraid_isr_iomapped()
1312 if(atomic_read(&adapter->quiescent) == 0) { in megaraid_isr_iomapped()
1313 mega_runpendq(adapter); in megaraid_isr_iomapped()
1320 spin_unlock_irqrestore(&adapter->lock, flags); in megaraid_isr_iomapped()
1338 adapter_t *adapter = devp; in megaraid_isr_memmapped() local
1350 spin_lock_irqsave(&adapter->lock, flags); in megaraid_isr_memmapped()
1354 dword = RDOUTDOOR(adapter); in megaraid_isr_memmapped()
1361 WROUTDOOR(adapter, 0x10001234); in megaraid_isr_memmapped()
1363 while((nstatus = (volatile u8)adapter->mbox->m_in.numstatus) in megaraid_isr_memmapped()
1367 adapter->mbox->m_in.numstatus = 0xFF; in megaraid_isr_memmapped()
1369 status = adapter->mbox->m_in.status; in megaraid_isr_memmapped()
1374 atomic_sub(nstatus, &adapter->pend_cmds); in megaraid_isr_memmapped()
1376 memcpy(completed, (void *)adapter->mbox->m_in.completed, in megaraid_isr_memmapped()
1380 WRINDOOR(adapter, 0x2); in megaraid_isr_memmapped()
1384 while( RDINDOOR(adapter) & 0x02 ) in megaraid_isr_memmapped()
1387 mega_cmd_done(adapter, completed, nstatus, status); in megaraid_isr_memmapped()
1389 mega_rundoneq(adapter); in megaraid_isr_memmapped()
1392 if(atomic_read(&adapter->quiescent) == 0) { in megaraid_isr_memmapped()
1393 mega_runpendq(adapter); in megaraid_isr_memmapped()
1400 spin_unlock_irqrestore(&adapter->lock, flags); in megaraid_isr_memmapped()
1414 mega_cmd_done(adapter_t *adapter, u8 completed[], int nstatus, int status) in mega_cmd_done() argument
1443 scb = &adapter->int_scb; in mega_cmd_done()
1448 adapter->int_status = status; in mega_cmd_done()
1449 complete(&adapter->int_waitq); in mega_cmd_done()
1451 scb = &adapter->scb_list[cmdid]; in mega_cmd_done()
1477 &adapter->completed_list); in mega_cmd_done()
1479 mega_free_scb(adapter, scb); in mega_cmd_done()
1496 &adapter->completed_list); in mega_cmd_done()
1498 mega_free_scb (adapter, scb); in mega_cmd_done()
1513 islogical = adapter->logdrv_chan[cmd->channel]; in mega_cmd_done()
1526 adapter->rd_errors[logdrv%0x80]++; in mega_cmd_done()
1536 adapter->wr_errors[logdrv%0x80]++; in mega_cmd_done()
1549 islogical = adapter->logdrv_chan[cmd->device->channel]; in mega_cmd_done()
1561 if(IS_RAID_CH(adapter, cmd->device->channel) && in mega_cmd_done()
1639 mega_free_scb(adapter, scb); in mega_cmd_done()
1642 list_add_tail(SCSI_LIST(cmd), &adapter->completed_list); in mega_cmd_done()
1653 mega_rundoneq (adapter_t *adapter) in mega_rundoneq() argument
1658 list_for_each(pos, &adapter->completed_list) { in mega_rundoneq()
1666 INIT_LIST_HEAD(&adapter->completed_list); in mega_rundoneq()
1675 mega_free_scb(adapter_t *adapter, scb_t *scb) in mega_free_scb() argument
1698 list_add(&scb->list, &adapter->free_list); in mega_free_scb()
1703 __mega_busywait_mbox (adapter_t *adapter) in __mega_busywait_mbox() argument
1705 volatile mbox_t *mbox = adapter->mbox; in __mega_busywait_mbox()
1722 mega_build_sglist(adapter_t *adapter, scb_t *scb, u32 *buf, u32 *len) in mega_build_sglist() argument
1740 BUG_ON(sgcnt > adapter->sglen || sgcnt < 0); in mega_build_sglist()
1744 if (scsi_sg_count(cmd) == 1 && !adapter->has_64bit_addr) { in mega_build_sglist()
1753 if (adapter->has_64bit_addr) { in mega_build_sglist()
1811 mega_free_sgl(adapter_t *adapter) in mega_free_sgl() argument
1816 for(i = 0; i < adapter->max_cmds; i++) { in mega_free_sgl()
1818 scb = &adapter->scb_list[i]; in mega_free_sgl()
1821 pci_free_consistent(adapter->dev, in mega_free_sgl()
1822 sizeof(mega_sgl64) * adapter->sglen, in mega_free_sgl()
1830 pci_free_consistent(adapter->dev, sizeof(mega_passthru), in mega_free_sgl()
1837 pci_free_consistent(adapter->dev, in mega_free_sgl()
1855 adapter_t *adapter; in megaraid_info() local
1857 adapter = (adapter_t *)host->hostdata; in megaraid_info()
1861 adapter->fw_version, adapter->product_info.max_commands, in megaraid_info()
1862 adapter->host->max_id, adapter->host->max_channel, in megaraid_info()
1863 (u32)adapter->host->max_lun); in megaraid_info()
1874 adapter_t *adapter; in megaraid_abort() local
1877 adapter = (adapter_t *)cmd->device->host->hostdata; in megaraid_abort()
1879 rval = megaraid_abort_and_reset(adapter, cmd, SCB_ABORT); in megaraid_abort()
1885 mega_rundoneq(adapter); in megaraid_abort()
1894 adapter_t *adapter; in megaraid_reset() local
1898 adapter = (adapter_t *)cmd->device->host->hostdata; in megaraid_reset()
1904 if( mega_internal_command(adapter, &mc, NULL) != 0 ) { in megaraid_reset()
1913 spin_lock_irq(&adapter->lock); in megaraid_reset()
1915 rval = megaraid_abort_and_reset(adapter, cmd, SCB_RESET); in megaraid_reset()
1921 mega_rundoneq(adapter); in megaraid_reset()
1922 spin_unlock_irq(&adapter->lock); in megaraid_reset()
1937 megaraid_abort_and_reset(adapter_t *adapter, Scsi_Cmnd *cmd, int aor) in megaraid_abort_and_reset() argument
1947 if(list_empty(&adapter->pending_list)) in megaraid_abort_and_reset()
1950 list_for_each_safe(pos, next, &adapter->pending_list) { in megaraid_abort_and_reset()
1984 mega_free_scb(adapter, scb); in megaraid_abort_and_reset()
1994 &adapter->completed_list); in megaraid_abort_and_reset()
2005 make_local_pdev(adapter_t *adapter, struct pci_dev **pdev) in make_local_pdev() argument
2011 memcpy(*pdev, adapter->dev, sizeof(struct pci_dev)); in make_local_pdev()
2062 adapter_t *adapter = m->private; in proc_show_config() local
2065 if(adapter->product_info.product_name[0]) in proc_show_config()
2066 seq_printf(m, "%s\n", adapter->product_info.product_name); in proc_show_config()
2070 if( adapter->flag & BOARD_MEMMAP ) in proc_show_config()
2075 if(adapter->flag & BOARD_40LD) in proc_show_config()
2078 if(adapter->flag & BOARD_64BIT) in proc_show_config()
2080 if( adapter->has_64bit_addr ) in proc_show_config()
2086 adapter->base, adapter->host->irq); in proc_show_config()
2089 adapter->numldrv, adapter->product_info.nchannels); in proc_show_config()
2092 adapter->fw_version, adapter->bios_version, in proc_show_config()
2093 adapter->product_info.dram_size); in proc_show_config()
2096 adapter->product_info.max_commands, adapter->max_cmds); in proc_show_config()
2098 seq_printf(m, "support_ext_cdb = %d\n", adapter->support_ext_cdb); in proc_show_config()
2099 seq_printf(m, "support_random_del = %d\n", adapter->support_random_del); in proc_show_config()
2100 seq_printf(m, "boot_ldrv_enabled = %d\n", adapter->boot_ldrv_enabled); in proc_show_config()
2101 seq_printf(m, "boot_ldrv = %d\n", adapter->boot_ldrv); in proc_show_config()
2102 seq_printf(m, "boot_pdrv_enabled = %d\n", adapter->boot_pdrv_enabled); in proc_show_config()
2103 seq_printf(m, "boot_pdrv_ch = %d\n", adapter->boot_pdrv_ch); in proc_show_config()
2104 seq_printf(m, "boot_pdrv_tgt = %d\n", adapter->boot_pdrv_tgt); in proc_show_config()
2106 atomic_read(&adapter->quiescent)); in proc_show_config()
2107 seq_printf(m, "has_cluster = %d\n", adapter->has_cluster); in proc_show_config()
2125 adapter_t *adapter = m->private; in proc_show_stat() local
2131 seq_printf(m, "pend_cmds = %d\n", atomic_read(&adapter->pend_cmds)); in proc_show_stat()
2133 for(i = 0; i < adapter->numldrv; i++) { in proc_show_stat()
2136 adapter->nreads[i], adapter->nwrites[i]); in proc_show_stat()
2138 adapter->nreadblocks[i], adapter->nwriteblocks[i]); in proc_show_stat()
2140 adapter->rd_errors[i], adapter->wr_errors[i]); in proc_show_stat()
2160 adapter_t *adapter = m->private; in proc_show_mbox() local
2161 volatile mbox_t *mbox = adapter->mbox; in proc_show_mbox()
2187 adapter_t *adapter = m->private; in proc_show_rebuild_rate() local
2192 if( make_local_pdev(adapter, &pdev) != 0 ) in proc_show_rebuild_rate()
2198 if( mega_adapinq(adapter, dma_handle) != 0 ) { in proc_show_rebuild_rate()
2204 if( adapter->flag & BOARD_40LD ) in proc_show_rebuild_rate()
2230 adapter_t *adapter = m->private; in proc_show_battery() local
2236 if( make_local_pdev(adapter, &pdev) != 0 ) in proc_show_battery()
2242 if( mega_adapinq(adapter, dma_handle) != 0 ) { in proc_show_battery()
2248 if( adapter->flag & BOARD_40LD ) { in proc_show_battery()
2332 proc_show_pdrv(struct seq_file *m, adapter_t *adapter, int channel) in proc_show_pdrv() argument
2345 if( make_local_pdev(adapter, &pdev) != 0 ) in proc_show_pdrv()
2351 if( mega_adapinq(adapter, dma_handle) != 0 ) { in proc_show_pdrv()
2364 if( adapter->flag & BOARD_40LD ) { in proc_show_pdrv()
2372 max_channels = adapter->product_info.nchannels; in proc_show_pdrv()
2416 if( mega_internal_dev_inquiry(adapter, channel, tgt, in proc_show_pdrv()
2506 proc_show_rdrv(struct seq_file *m, adapter_t *adapter, int start, int end ) in proc_show_rdrv() argument
2520 if( make_local_pdev(adapter, &pdev) != 0 ) in proc_show_rdrv()
2526 if( mega_adapinq(adapter, dma_handle) != 0 ) { in proc_show_rdrv()
2534 if( adapter->flag & BOARD_40LD ) { in proc_show_rdrv()
2561 if( adapter->flag & BOARD_40LD ) { in proc_show_rdrv()
2565 if( mega_internal_command(adapter, &mc, NULL) ) { in proc_show_rdrv()
2574 if( mega_internal_command(adapter, &mc, NULL) ) { in proc_show_rdrv()
2576 if( mega_internal_command(adapter, &mc, NULL) ) { in proc_show_rdrv()
2585 if( adapter->flag & BOARD_40LD ) { in proc_show_rdrv()
2741 adapter_t *adapter = proc_get_parent_data(inode); in mega_proc_open() local
2744 return single_open(file, show, adapter); in mega_proc_open()
2793 adapter_t *adapter = hba_soft_state[index]; in mega_create_proc_entry() local
2797 sprintf(string, "hba%d", adapter->host->host_no); in mega_create_proc_entry()
2799 dir = adapter->controller_proc_dir_entry = in mega_create_proc_entry()
2800 proc_mkdir_data(string, 0, parent, adapter); in mega_create_proc_entry()
2814 ppde = (void *)adapter + f->ptr_offset; in mega_create_proc_entry()
2835 adapter_t *adapter; in megaraid_biosparam() local
2843 adapter = (adapter_t *)sdev->host->hostdata; in megaraid_biosparam()
2845 if (IS_RAID_CH(adapter, sdev->channel)) { in megaraid_biosparam()
2911 mega_init_scb(adapter_t *adapter) in mega_init_scb() argument
2916 for( i = 0; i < adapter->max_cmds; i++ ) { in mega_init_scb()
2918 scb = &adapter->scb_list[i]; in mega_init_scb()
2926 for( i = 0; i < adapter->max_cmds; i++ ) { in mega_init_scb()
2928 scb = &adapter->scb_list[i]; in mega_init_scb()
2932 scb->sgl64 = pci_alloc_consistent(adapter->dev, in mega_init_scb()
2933 sizeof(mega_sgl64) * adapter->sglen, in mega_init_scb()
2940 mega_free_sgl(adapter); in mega_init_scb()
2944 scb->pthru = pci_alloc_consistent(adapter->dev, in mega_init_scb()
2950 mega_free_sgl(adapter); in mega_init_scb()
2954 scb->epthru = pci_alloc_consistent(adapter->dev, in mega_init_scb()
2961 mega_free_sgl(adapter); in mega_init_scb()
2975 list_add(&scb->list, &adapter->free_list); in mega_init_scb()
3017 adapter_t *adapter; in megadev_ioctl() local
3097 adapter = hba_soft_state[adapno]; in megadev_ioctl()
3109 if( copy_to_user(ustats->nreads, adapter->nreads, in megadev_ioctl()
3113 if( copy_to_user(ustats->nreadblocks, adapter->nreadblocks, in megadev_ioctl()
3117 if( copy_to_user(ustats->nwrites, adapter->nwrites, in megadev_ioctl()
3121 if( copy_to_user(ustats->nwriteblocks, adapter->nwriteblocks, in megadev_ioctl()
3125 if( copy_to_user(ustats->rd_errors, adapter->rd_errors, in megadev_ioctl()
3129 if( copy_to_user(ustats->wr_errors, adapter->wr_errors, in megadev_ioctl()
3144 adapter = hba_soft_state[adapno]; in megadev_ioctl()
3156 if( !adapter->support_random_del ) { in megadev_ioctl()
3163 rval = mega_del_logdrv( adapter, uioc.uioc_rmbox[3] ); in megadev_ioctl()
3191 if( make_local_pdev(adapter, &pdev) != 0 ) in megadev_ioctl()
3277 mega_internal_command(adapter, &mc, pthru); in megadev_ioctl()
3361 mega_internal_command(adapter, &mc, NULL); in megadev_ioctl()
3620 mega_is_bios_enabled(adapter_t *adapter) in mega_is_bios_enabled() argument
3630 memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE); in mega_is_bios_enabled()
3632 mbox->m_out.xferaddr = (u32)adapter->buf_dma_handle; in mega_is_bios_enabled()
3638 ret = issue_scb_block(adapter, raw_mbox); in mega_is_bios_enabled()
3640 return *(char *)adapter->mega_buffer; in mega_is_bios_enabled()
3653 mega_enum_raid_scsi(adapter_t *adapter) in mega_enum_raid_scsi() argument
3669 memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE); in mega_enum_raid_scsi()
3671 mbox->m_out.xferaddr = (u32)adapter->buf_dma_handle; in mega_enum_raid_scsi()
3677 adapter->mega_ch_class = 0xFF; in mega_enum_raid_scsi()
3679 if(!issue_scb_block(adapter, raw_mbox)) { in mega_enum_raid_scsi()
3680 adapter->mega_ch_class = *((char *)adapter->mega_buffer); in mega_enum_raid_scsi()
3684 for( i = 0; i < adapter->product_info.nchannels; i++ ) { in mega_enum_raid_scsi()
3685 if( (adapter->mega_ch_class >> i) & 0x01 ) { in mega_enum_raid_scsi()
3707 mega_get_boot_drv(adapter_t *adapter) in mega_get_boot_drv() argument
3724 memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE); in mega_get_boot_drv()
3726 mbox->m_out.xferaddr = (u32)adapter->buf_dma_handle; in mega_get_boot_drv()
3728 adapter->boot_ldrv_enabled = 0; in mega_get_boot_drv()
3729 adapter->boot_ldrv = 0; in mega_get_boot_drv()
3731 adapter->boot_pdrv_enabled = 0; in mega_get_boot_drv()
3732 adapter->boot_pdrv_ch = 0; in mega_get_boot_drv()
3733 adapter->boot_pdrv_tgt = 0; in mega_get_boot_drv()
3735 if(issue_scb_block(adapter, raw_mbox) == 0) { in mega_get_boot_drv()
3737 (struct private_bios_data *)adapter->mega_buffer; in mega_get_boot_drv()
3752 adapter->boot_pdrv_enabled = 1; in mega_get_boot_drv()
3754 adapter->boot_pdrv_ch = boot_pdrv / 16; in mega_get_boot_drv()
3755 adapter->boot_pdrv_tgt = boot_pdrv % 16; in mega_get_boot_drv()
3758 adapter->boot_ldrv_enabled = 1; in mega_get_boot_drv()
3759 adapter->boot_ldrv = prv_bios_data->boot_drv; in mega_get_boot_drv()
3774 mega_support_random_del(adapter_t *adapter) in mega_support_random_del() argument
3790 rval = issue_scb_block(adapter, raw_mbox); in mega_support_random_del()
3803 mega_support_ext_cdb(adapter_t *adapter) in mega_support_ext_cdb() argument
3818 rval = issue_scb_block(adapter, raw_mbox); in mega_support_ext_cdb()
3833 mega_del_logdrv(adapter_t *adapter, int logdrv) in mega_del_logdrv() argument
3843 atomic_set(&adapter->quiescent, 1); in mega_del_logdrv()
3849 while (atomic_read(&adapter->pend_cmds) > 0 || in mega_del_logdrv()
3850 !list_empty(&adapter->pending_list)) in mega_del_logdrv()
3853 rval = mega_do_del_logdrv(adapter, logdrv); in mega_del_logdrv()
3855 spin_lock_irqsave(&adapter->lock, flags); in mega_del_logdrv()
3861 if (adapter->read_ldidmap) { in mega_del_logdrv()
3863 list_for_each(pos, &adapter->pending_list) { in mega_del_logdrv()
3870 atomic_set(&adapter->quiescent, 0); in mega_del_logdrv()
3872 mega_runpendq(adapter); in mega_del_logdrv()
3874 spin_unlock_irqrestore(&adapter->lock, flags); in mega_del_logdrv()
3881 mega_do_del_logdrv(adapter_t *adapter, int logdrv) in mega_do_del_logdrv() argument
3892 rval = mega_internal_command(adapter, &mc, NULL); in mega_do_del_logdrv()
3904 adapter->read_ldidmap = 1; in mega_do_del_logdrv()
3918 mega_get_max_sgl(adapter_t *adapter) in mega_get_max_sgl() argument
3927 memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE); in mega_get_max_sgl()
3929 mbox->m_out.xferaddr = (u32)adapter->buf_dma_handle; in mega_get_max_sgl()
3935 if( issue_scb_block(adapter, raw_mbox) ) { in mega_get_max_sgl()
3939 adapter->sglen = MIN_SGLIST; in mega_get_max_sgl()
3942 adapter->sglen = *((char *)adapter->mega_buffer); in mega_get_max_sgl()
3948 if ( adapter->sglen > MAX_SGLIST ) in mega_get_max_sgl()
3949 adapter->sglen = MAX_SGLIST; in mega_get_max_sgl()
3963 mega_support_cluster(adapter_t *adapter) in mega_support_cluster() argument
3972 memset((void *)adapter->mega_buffer, 0, MEGA_BUFFER_SIZE); in mega_support_cluster()
3974 mbox->m_out.xferaddr = (u32)adapter->buf_dma_handle; in mega_support_cluster()
3982 if( issue_scb_block(adapter, raw_mbox) == 0 ) { in mega_support_cluster()
3988 adapter->this_id = *(u32 *)adapter->mega_buffer; in mega_support_cluster()
3989 adapter->host->this_id = adapter->this_id; in mega_support_cluster()
4008 mega_adapinq(adapter_t *adapter, dma_addr_t dma_handle) in mega_adapinq() argument
4014 if( adapter->flag & BOARD_40LD ) { in mega_adapinq()
4025 if ( mega_internal_command(adapter, &mc, NULL) != 0 ) { in mega_adapinq()
4042 mega_internal_dev_inquiry(adapter_t *adapter, u8 ch, u8 tgt, in mega_internal_dev_inquiry() argument
4056 if( make_local_pdev(adapter, &pdev) != 0 ) return -1; in mega_internal_dev_inquiry()
4071 pthru->channel = (adapter->flag & BOARD_40LD) ? 0 : ch; in mega_internal_dev_inquiry()
4073 pthru->target = (adapter->flag & BOARD_40LD) ? (ch << 4)|tgt : tgt; in mega_internal_dev_inquiry()
4093 rval = mega_internal_command(adapter, &mc, pthru); in mega_internal_dev_inquiry()
4117 mega_internal_command(adapter_t *adapter, megacmd_t *mc, mega_passthru *pthru) in mega_internal_command() argument
4128 mutex_lock(&adapter->int_mtx); in mega_internal_command()
4130 scb = &adapter->int_scb; in mega_internal_command()
4144 spin_lock_irqsave(&adapter->lock, flags); in mega_internal_command()
4145 list_add_tail(&scb->list, &adapter->pending_list); in mega_internal_command()
4151 if (atomic_read(&adapter->quiescent) == 0) in mega_internal_command()
4152 mega_runpendq(adapter); in mega_internal_command()
4153 spin_unlock_irqrestore(&adapter->lock, flags); in mega_internal_command()
4155 wait_for_completion(&adapter->int_waitq); in mega_internal_command()
4157 mc->status = rval = adapter->int_status; in mega_internal_command()
4168 mutex_unlock(&adapter->int_mtx); in mega_internal_command()
4196 adapter_t *adapter; in megaraid_probe_one() local
4285 adapter = (adapter_t *)host->hostdata; in megaraid_probe_one()
4286 memset(adapter, 0, sizeof(adapter_t)); in megaraid_probe_one()
4292 adapter->base = mega_baseport; in megaraid_probe_one()
4294 adapter->mmio_base = (void __iomem *) mega_baseport; in megaraid_probe_one()
4296 INIT_LIST_HEAD(&adapter->free_list); in megaraid_probe_one()
4297 INIT_LIST_HEAD(&adapter->pending_list); in megaraid_probe_one()
4298 INIT_LIST_HEAD(&adapter->completed_list); in megaraid_probe_one()
4300 adapter->flag = flag; in megaraid_probe_one()
4301 spin_lock_init(&adapter->lock); in megaraid_probe_one()
4306 adapter->dev = pdev; in megaraid_probe_one()
4307 adapter->host = host; in megaraid_probe_one()
4309 adapter->host->irq = irq; in megaraid_probe_one()
4312 adapter->host->base = tbase; in megaraid_probe_one()
4314 adapter->host->io_port = tbase; in megaraid_probe_one()
4315 adapter->host->n_io_port = 16; in megaraid_probe_one()
4318 adapter->host->unique_id = (pci_bus << 8) | pci_dev_func; in megaraid_probe_one()
4323 adapter->mega_buffer = pci_alloc_consistent(adapter->dev, in megaraid_probe_one()
4324 MEGA_BUFFER_SIZE, &adapter->buf_dma_handle); in megaraid_probe_one()
4325 if (!adapter->mega_buffer) { in megaraid_probe_one()
4330 adapter->scb_list = kmalloc(sizeof(scb_t) * MAX_COMMANDS, GFP_KERNEL); in megaraid_probe_one()
4331 if (!adapter->scb_list) { in megaraid_probe_one()
4336 if (request_irq(irq, (adapter->flag & BOARD_MEMMAP) ? in megaraid_probe_one()
4338 IRQF_SHARED, "megaraid", adapter)) { in megaraid_probe_one()
4344 if (mega_setup_mailbox(adapter)) in megaraid_probe_one()
4347 if (mega_query_adapter(adapter)) in megaraid_probe_one()
4357 if (!strcmp(adapter->fw_version, "3.00") || in megaraid_probe_one()
4358 !strcmp(adapter->fw_version, "3.01")) { in megaraid_probe_one()
4390 if (!strcmp(adapter->fw_version, "H01.07") || in megaraid_probe_one()
4391 !strcmp(adapter->fw_version, "H01.08") || in megaraid_probe_one()
4392 !strcmp(adapter->fw_version, "H01.09") ) { in megaraid_probe_one()
4400 adapter->flag &= ~BOARD_64BIT; in megaraid_probe_one()
4404 if (mega_is_bios_enabled(adapter)) in megaraid_probe_one()
4406 mega_hbas[hba_count].hostdata_addr = adapter; in megaraid_probe_one()
4412 mega_enum_raid_scsi(adapter); in megaraid_probe_one()
4422 mega_get_boot_drv(adapter); in megaraid_probe_one()
4424 if (adapter->boot_pdrv_enabled) { in megaraid_probe_one()
4425 j = adapter->product_info.nchannels; in megaraid_probe_one()
4427 adapter->logdrv_chan[i] = 0; in megaraid_probe_one()
4429 adapter->logdrv_chan[i] = 1; in megaraid_probe_one()
4432 adapter->logdrv_chan[i] = 1; in megaraid_probe_one()
4434 adapter->logdrv_chan[i] = 0; in megaraid_probe_one()
4435 adapter->mega_ch_class <<= NVIRT_CHAN; in megaraid_probe_one()
4442 adapter->read_ldidmap = 0; /* set it after first logdrv in megaraid_probe_one()
4444 adapter->support_random_del = mega_support_random_del(adapter); in megaraid_probe_one()
4447 if (mega_init_scb(adapter)) in megaraid_probe_one()
4453 atomic_set(&adapter->pend_cmds, 0); in megaraid_probe_one()
4458 atomic_set(&adapter->quiescent, 0); in megaraid_probe_one()
4460 hba_soft_state[hba_count] = adapter; in megaraid_probe_one()
4471 mcontroller[i].numldrv = adapter->numldrv; in megaraid_probe_one()
4482 if ((adapter->flag & BOARD_64BIT) && (sizeof(dma_addr_t) == 8)) { in megaraid_probe_one()
4484 adapter->has_64bit_addr = 1; in megaraid_probe_one()
4487 adapter->has_64bit_addr = 0; in megaraid_probe_one()
4490 mutex_init(&adapter->int_mtx); in megaraid_probe_one()
4491 init_completion(&adapter->int_waitq); in megaraid_probe_one()
4493 adapter->this_id = DEFAULT_INITIATOR_ID; in megaraid_probe_one()
4494 adapter->host->this_id = DEFAULT_INITIATOR_ID; in megaraid_probe_one()
4504 adapter->has_cluster = mega_support_cluster(adapter); in megaraid_probe_one()
4505 if (adapter->has_cluster) { in megaraid_probe_one()
4508 adapter->this_id); in megaraid_probe_one()
4525 pci_free_consistent(adapter->dev, sizeof(mbox64_t), in megaraid_probe_one()
4526 adapter->una_mbox64, adapter->una_mbox64_dma); in megaraid_probe_one()
4528 free_irq(adapter->host->irq, adapter); in megaraid_probe_one()
4530 kfree(adapter->scb_list); in megaraid_probe_one()
4532 pci_free_consistent(adapter->dev, MEGA_BUFFER_SIZE, in megaraid_probe_one()
4533 adapter->mega_buffer, adapter->buf_dma_handle); in megaraid_probe_one()
4551 __megaraid_shutdown(adapter_t *adapter) in __megaraid_shutdown() argument
4561 free_irq(adapter->host->irq, adapter); in __megaraid_shutdown()
4564 issue_scb_block(adapter, raw_mbox); in __megaraid_shutdown()
4571 issue_scb_block(adapter, raw_mbox); in __megaraid_shutdown()
4573 if (atomic_read(&adapter->pend_cmds) > 0) in __megaraid_shutdown()
4588 adapter_t *adapter = (adapter_t *)host->hostdata; in megaraid_remove_one() local
4592 __megaraid_shutdown(adapter); in megaraid_remove_one()
4595 if (adapter->flag & BOARD_MEMMAP) { in megaraid_remove_one()
4596 iounmap((void *)adapter->base); in megaraid_remove_one()
4597 release_mem_region(adapter->host->base, 128); in megaraid_remove_one()
4599 release_region(adapter->base, 16); in megaraid_remove_one()
4601 mega_free_sgl(adapter); in megaraid_remove_one()
4604 if (adapter->controller_proc_dir_entry) { in megaraid_remove_one()
4605 remove_proc_entry("stat", adapter->controller_proc_dir_entry); in megaraid_remove_one()
4607 adapter->controller_proc_dir_entry); in megaraid_remove_one()
4609 adapter->controller_proc_dir_entry); in megaraid_remove_one()
4612 adapter->controller_proc_dir_entry); in megaraid_remove_one()
4614 adapter->controller_proc_dir_entry); in megaraid_remove_one()
4617 adapter->controller_proc_dir_entry); in megaraid_remove_one()
4619 adapter->controller_proc_dir_entry); in megaraid_remove_one()
4621 adapter->controller_proc_dir_entry); in megaraid_remove_one()
4623 adapter->controller_proc_dir_entry); in megaraid_remove_one()
4626 adapter->controller_proc_dir_entry); in megaraid_remove_one()
4628 adapter->controller_proc_dir_entry); in megaraid_remove_one()
4630 adapter->controller_proc_dir_entry); in megaraid_remove_one()
4632 adapter->controller_proc_dir_entry); in megaraid_remove_one()
4636 sprintf(buf, "hba%d", adapter->host->host_no); in megaraid_remove_one()
4642 pci_free_consistent(adapter->dev, MEGA_BUFFER_SIZE, in megaraid_remove_one()
4643 adapter->mega_buffer, adapter->buf_dma_handle); in megaraid_remove_one()
4644 kfree(adapter->scb_list); in megaraid_remove_one()
4645 pci_free_consistent(adapter->dev, sizeof(mbox64_t), in megaraid_remove_one()
4646 adapter->una_mbox64, adapter->una_mbox64_dma); in megaraid_remove_one()
4658 adapter_t *adapter = (adapter_t *)host->hostdata; in megaraid_shutdown() local
4660 __megaraid_shutdown(adapter); in megaraid_shutdown()