Lines Matching refs:ha
1084 struct hostdata *ha; in port_detect() local
1278 ha = (struct hostdata *)shost->hostdata; in port_detect()
1280 memset(ha, 0, sizeof(struct hostdata)); in port_detect()
1281 ha->subversion = subversion; in port_detect()
1282 ha->protocol_rev = protocol_rev; in port_detect()
1283 ha->is_pci = is_pci; in port_detect()
1284 ha->pdev = pdev; in port_detect()
1285 ha->board_number = j; in port_detect()
1287 if (ha->subversion == ESA) in port_detect()
1302 strcpy(ha->board_name, name); in port_detect()
1307 ha->board_name, shost->sg_tablesize); in port_detect()
1314 ha->board_name, shost->can_queue); in port_detect()
1340 ha->cp[i].cp_dma_addr = pci_map_single(ha->pdev, in port_detect()
1341 &ha->cp[i], in port_detect()
1348 ha->cp[i].sglist = kmalloc(sz, gfp_mask); in port_detect()
1349 if (!ha->cp[i].sglist) { in port_detect()
1352 ha->board_name, i); in port_detect()
1357 if (!(ha->sp_cpu_addr = pci_alloc_consistent(ha->pdev, in port_detect()
1359 &ha->sp_dma_addr))) { in port_detect()
1360 printk("%s: pci_alloc_consistent failed, detaching.\n", ha->board_name); in port_detect()
1385 ha->board_name, ha->protocol_rev, bus_type, in port_detect()
1392 ha->board_name, shost->max_id, shost->max_lun); in port_detect()
1396 ha->board_name, i, info.host_addr[3 - i]); in port_detect()
1416 if (ha->pdev) { in port_detect()
1417 pci_set_master(ha->pdev); in port_detect()
1418 if (pci_set_dma_mask(ha->pdev, DMA_BIT_MASK(32))) in port_detect()
1420 ha->board_name); in port_detect()
1598 static void map_dma(unsigned int i, struct hostdata *ha) in map_dma() argument
1606 cpp = &ha->cp[i]; in map_dma()
1612 H2DEV(pci_map_single(ha->pdev, SCpnt->sense_buffer, in map_dma()
1622 count = pci_map_sg(ha->pdev, scsi_sglist(SCpnt), scsi_sg_count(SCpnt), in map_dma()
1632 cpp->data_address = H2DEV(pci_map_single(ha->pdev, cpp->sglist, in map_dma()
1639 static void unmap_dma(unsigned int i, struct hostdata *ha) in unmap_dma() argument
1645 cpp = &ha->cp[i]; in unmap_dma()
1650 pci_unmap_single(ha->pdev, DEV2H(cpp->sense_addr), in unmap_dma()
1654 pci_unmap_sg(ha->pdev, scsi_sglist(SCpnt), scsi_sg_count(SCpnt), in unmap_dma()
1661 pci_unmap_single(ha->pdev, DEV2H(cpp->data_address), in unmap_dma()
1665 static void sync_dma(unsigned int i, struct hostdata *ha) in sync_dma() argument
1671 cpp = &ha->cp[i]; in sync_dma()
1676 pci_dma_sync_single_for_cpu(ha->pdev, DEV2H(cpp->sense_addr), in sync_dma()
1681 pci_dma_sync_sg_for_cpu(ha->pdev, scsi_sglist(SCpnt), in sync_dma()
1688 pci_dma_sync_single_for_cpu(ha->pdev, in sync_dma()
1693 static void scsi_to_dev_dir(unsigned int i, struct hostdata *ha) in scsi_to_dev_dir() argument
1712 cpp = &ha->cp[i]; in scsi_to_dev_dir()
1731 ha->board_name); in scsi_to_dev_dir()
1752 struct hostdata *ha = (struct hostdata *)shost->hostdata; in eata2x_queuecommand_lck() local
1758 ha->board_name, SCpnt); in eata2x_queuecommand_lck()
1762 i = ha->last_cp_used + 1; in eata2x_queuecommand_lck()
1767 if (ha->cp_stat[i] == FREE) { in eata2x_queuecommand_lck()
1768 ha->last_cp_used = i; in eata2x_queuecommand_lck()
1774 printk("%s: qcomm, no free mailbox.\n", ha->board_name); in eata2x_queuecommand_lck()
1779 cpp = &ha->cp[i]; in eata2x_queuecommand_lck()
1784 cpp->sp_dma_addr = H2DEV(ha->sp_dma_addr); in eata2x_queuecommand_lck()
1808 scsi_to_dev_dir(i, ha); in eata2x_queuecommand_lck()
1811 map_dma(i, ha); in eata2x_queuecommand_lck()
1815 ha->cp_stat[i] = READY; in eata2x_queuecommand_lck()
1816 flush_dev(SCpnt->device, blk_rq_pos(SCpnt->request), ha, 0); in eata2x_queuecommand_lck()
1822 unmap_dma(i, ha); in eata2x_queuecommand_lck()
1828 ha->cp_stat[i] = IN_USE; in eata2x_queuecommand_lck()
1837 struct hostdata *ha = (struct hostdata *)shost->hostdata; in DEF_SCSI_QCMD() local
1849 panic("%s: abort, invalid SCarg->host_scribble.\n", ha->board_name); in DEF_SCSI_QCMD()
1852 printk("%s: abort, timeout error.\n", ha->board_name); in DEF_SCSI_QCMD()
1856 if (ha->cp_stat[i] == FREE) { in DEF_SCSI_QCMD()
1857 printk("%s: abort, mbox %d is free.\n", ha->board_name, i); in DEF_SCSI_QCMD()
1861 if (ha->cp_stat[i] == IN_USE) { in DEF_SCSI_QCMD()
1862 printk("%s: abort, mbox %d is in use.\n", ha->board_name, i); in DEF_SCSI_QCMD()
1864 if (SCarg != ha->cp[i].SCpnt) in DEF_SCSI_QCMD()
1866 ha->board_name, i, SCarg, ha->cp[i].SCpnt); in DEF_SCSI_QCMD()
1870 ha->board_name, i); in DEF_SCSI_QCMD()
1875 if (ha->cp_stat[i] == IN_RESET) { in DEF_SCSI_QCMD()
1876 printk("%s: abort, mbox %d is in reset.\n", ha->board_name, i); in DEF_SCSI_QCMD()
1880 if (ha->cp_stat[i] == LOCKED) { in DEF_SCSI_QCMD()
1881 printk("%s: abort, mbox %d is locked.\n", ha->board_name, i); in DEF_SCSI_QCMD()
1885 if (ha->cp_stat[i] == READY || ha->cp_stat[i] == ABORTING) { in DEF_SCSI_QCMD()
1886 unmap_dma(i, ha); in DEF_SCSI_QCMD()
1889 ha->cp_stat[i] = FREE; in DEF_SCSI_QCMD()
1891 ha->board_name, i); in DEF_SCSI_QCMD()
1896 panic("%s: abort, mbox %d, invalid cp_stat.\n", ha->board_name, i); in DEF_SCSI_QCMD()
1905 struct hostdata *ha = (struct hostdata *)shost->hostdata; in eata2x_eh_host_reset() local
1912 printk("%s: reset, inactive.\n", ha->board_name); in eata2x_eh_host_reset()
1914 if (ha->in_reset) { in eata2x_eh_host_reset()
1915 printk("%s: reset, exit, already in reset.\n", ha->board_name); in eata2x_eh_host_reset()
1921 printk("%s: reset, exit, timeout error.\n", ha->board_name); in eata2x_eh_host_reset()
1926 ha->retries = 0; in eata2x_eh_host_reset()
1930 ha->target_redo[k][c] = 1; in eata2x_eh_host_reset()
1931 ha->target_to[k][c] = 0; in eata2x_eh_host_reset()
1936 if (ha->cp_stat[i] == FREE) in eata2x_eh_host_reset()
1939 if (ha->cp_stat[i] == LOCKED) { in eata2x_eh_host_reset()
1940 ha->cp_stat[i] = FREE; in eata2x_eh_host_reset()
1942 ha->board_name, i); in eata2x_eh_host_reset()
1946 if (!(SCpnt = ha->cp[i].SCpnt)) in eata2x_eh_host_reset()
1947 panic("%s: reset, mbox %d, SCpnt == NULL.\n", ha->board_name, i); in eata2x_eh_host_reset()
1949 if (ha->cp_stat[i] == READY || ha->cp_stat[i] == ABORTING) { in eata2x_eh_host_reset()
1950 ha->cp_stat[i] = ABORTING; in eata2x_eh_host_reset()
1952 ha->board_name, i); in eata2x_eh_host_reset()
1956 ha->cp_stat[i] = IN_RESET; in eata2x_eh_host_reset()
1958 ha->board_name, i); in eata2x_eh_host_reset()
1962 panic("%s: reset, mbox %d, garbled SCpnt.\n", ha->board_name, i); in eata2x_eh_host_reset()
1965 panic("%s: reset, mbox %d, index mismatch.\n", ha->board_name, i); in eata2x_eh_host_reset()
1969 ha->board_name, i); in eata2x_eh_host_reset()
1976 printk("%s: reset, cannot reset, timeout error.\n", ha->board_name); in eata2x_eh_host_reset()
1981 printk("%s: reset, board reset done, enabling interrupts.\n", ha->board_name); in eata2x_eh_host_reset()
1987 ha->in_reset = 1; in eata2x_eh_host_reset()
1998 printk("%s: reset, interrupts disabled, loops %d.\n", ha->board_name, limit); in eata2x_eh_host_reset()
2002 if (ha->cp_stat[i] == IN_RESET) { in eata2x_eh_host_reset()
2003 SCpnt = ha->cp[i].SCpnt; in eata2x_eh_host_reset()
2004 unmap_dma(i, ha); in eata2x_eh_host_reset()
2009 ha->cp_stat[i] = LOCKED; in eata2x_eh_host_reset()
2013 ha->board_name, i); in eata2x_eh_host_reset()
2016 else if (ha->cp_stat[i] == ABORTING) { in eata2x_eh_host_reset()
2017 SCpnt = ha->cp[i].SCpnt; in eata2x_eh_host_reset()
2018 unmap_dma(i, ha); in eata2x_eh_host_reset()
2023 ha->cp_stat[i] = FREE; in eata2x_eh_host_reset()
2027 ha->board_name, i); in eata2x_eh_host_reset()
2037 ha->in_reset = 0; in eata2x_eh_host_reset()
2041 printk("%s: reset, exit, done.\n", ha->board_name); in eata2x_eh_host_reset()
2043 printk("%s: reset, exit.\n", ha->board_name); in eata2x_eh_host_reset()
2098 static int reorder(struct hostdata *ha, unsigned long cursec, in reorder() argument
2127 cpp = &ha->cp[k]; in reorder()
2177 cpp = &ha->cp[k]; in reorder()
2222 cpp = &ha->cp[k]; in reorder()
2239 struct hostdata *ha, unsigned int ihdlr) in flush_dev() argument
2247 if (ha->cp_stat[k] != READY && ha->cp_stat[k] != IN_USE) in flush_dev()
2250 cpp = &ha->cp[k]; in flush_dev()
2256 if (ha->cp_stat[k] == IN_USE) in flush_dev()
2262 if (reorder(ha, cursec, ihdlr, il, n_ready)) in flush_dev()
2267 cpp = &ha->cp[k]; in flush_dev()
2276 ha->cp_stat[k] = ABORTING; in flush_dev()
2280 ha->cp_stat[k] = IN_USE; in flush_dev()
2290 struct hostdata *ha = (struct hostdata *)shost->hostdata; in ihdlr() local
2297 ha->iocount++; in ihdlr()
2300 printk("%s: ihdlr, enter, irq %d, count %d.\n", ha->board_name, irq, in ihdlr()
2301 ha->iocount); in ihdlr()
2308 ha->board_name, irq, reg, ha->iocount); in ihdlr()
2312 spp = &ha->sp; in ihdlr()
2315 memcpy(spp, ha->sp_cpu_addr, sizeof(struct mssp)); in ihdlr()
2318 memset(ha->sp_cpu_addr, 0, sizeof(struct mssp)); in ihdlr()
2328 if (ha->iocount < 200) { in ihdlr()
2338 if (spp->eoc == 0 && ha->iocount > 1) in ihdlr()
2341 ha->board_name, irq, reg, ha->iocount); in ihdlr()
2345 ha->board_name, spp->cpp_index, irq, reg, ha->iocount); in ihdlr()
2353 cpp = &(ha->cp[i]); in ihdlr()
2356 if ((ha->iocount > 500) && ((ha->iocount % 500) < 3)) in ihdlr()
2360 if (ha->cp_stat[i] == IGNORE) { in ihdlr()
2361 ha->cp_stat[i] = FREE; in ihdlr()
2363 } else if (ha->cp_stat[i] == LOCKED) { in ihdlr()
2364 ha->cp_stat[i] = FREE; in ihdlr()
2365 printk("%s: ihdlr, mbox %d unlocked, count %d.\n", ha->board_name, i, in ihdlr()
2366 ha->iocount); in ihdlr()
2368 } else if (ha->cp_stat[i] == FREE) { in ihdlr()
2369 printk("%s: ihdlr, mbox %d is free, count %d.\n", ha->board_name, i, in ihdlr()
2370 ha->iocount); in ihdlr()
2372 } else if (ha->cp_stat[i] == IN_RESET) in ihdlr()
2373 printk("%s: ihdlr, mbox %d is in reset.\n", ha->board_name, i); in ihdlr()
2374 else if (ha->cp_stat[i] != IN_USE) in ihdlr()
2376 ha->board_name, i, ha->cp_stat[i]); in ihdlr()
2378 ha->cp_stat[i] = FREE; in ihdlr()
2382 panic("%s: ihdlr, mbox %d, SCpnt == NULL.\n", ha->board_name, i); in ihdlr()
2385 panic("%s: ihdlr, mbox %d, SCpnt %p garbled.\n", ha->board_name, in ihdlr()
2390 ha->board_name, i, in ihdlr()
2393 sync_dma(i, ha); in ihdlr()
2397 flush_dev(SCpnt->device, blk_rq_pos(SCpnt->request), ha, 1); in ihdlr()
2402 if ((ha->iocount > 500) && ((ha->iocount % 200) < 2)) in ihdlr()
2415 && ha->target_redo[SCpnt->device->id][SCpnt-> in ihdlr()
2430 ha->target_redo[SCpnt->device->id][SCpnt->device-> in ihdlr()
2434 (!(tstatus == CHECK_CONDITION && ha->iocount <= 1000 && in ihdlr()
2438 ha->board_name, in ihdlr()
2443 ha->target_to[SCpnt->device->id][SCpnt->device->channel] = 0; in ihdlr()
2445 if (ha->last_retried_pid == SCpnt->serial_number) in ihdlr()
2446 ha->retries = 0; in ihdlr()
2452 if (ha->target_to[SCpnt->device->id][SCpnt->device->channel] > 1) in ihdlr()
2456 ha->target_to[SCpnt->device->id][SCpnt->device-> in ihdlr()
2468 ha->target_redo[k][c] = 1; in ihdlr()
2471 && ha->retries < MAX_INTERNAL_RETRIES) { in ihdlr()
2479 ha->retries++; in ihdlr()
2480 ha->last_retried_pid = SCpnt->serial_number; in ihdlr()
2503 if ((spp->adapter_status != ASOK && ha->iocount > 1000) || in ihdlr()
2505 spp->adapter_status != ASST && ha->iocount <= 1000) || in ihdlr()
2511 reg, ha->iocount); in ihdlr()
2513 unmap_dma(i, ha); in ihdlr()
2521 printk("%s: ihdlr, exit, irq %d, count %d.\n", ha->board_name, in ihdlr()
2522 irq, ha->iocount); in ihdlr()
2550 struct hostdata *ha = (struct hostdata *)shost->hostdata; in eata2x_release() local
2554 kfree((&ha->cp[i])->sglist); in eata2x_release()
2557 pci_unmap_single(ha->pdev, ha->cp[i].cp_dma_addr, in eata2x_release()
2560 if (ha->sp_cpu_addr) in eata2x_release()
2561 pci_free_consistent(ha->pdev, sizeof(struct mssp), in eata2x_release()
2562 ha->sp_cpu_addr, ha->sp_dma_addr); in eata2x_release()
2564 free_irq(shost->irq, &sha[ha->board_number]); in eata2x_release()