acb 285 drivers/media/i2c/msp3400-driver.c state->acb &= ~scarts[out][0]; acb 286 drivers/media/i2c/msp3400-driver.c state->acb |= scarts[out][in + 1]; acb 288 drivers/media/i2c/msp3400-driver.c state->acb = 0xf60; /* Mute Input and SCART 1 Output */ acb 291 drivers/media/i2c/msp3400-driver.c scart_names[in], out, state->acb); acb 292 drivers/media/i2c/msp3400-driver.c msp_write_dsp(client, 0x13, state->acb); acb 601 drivers/media/i2c/msp3400-driver.c dev_info(&client->dev, "ACB: 0x%04x\n", state->acb); acb 88 drivers/media/i2c/msp3400-driver.h int acb; acb 1054 drivers/media/i2c/msp3400-kthreads.c if (msp_write_dsp(client, 0x13, state->acb)) acb 120 drivers/media/i2c/sony-btf-mpx.c u16 acb; acb 213 drivers/media/i2c/sony-btf-mpx.c mpx_write(client, 0x12, 0x0013, mpx_audio_modes[mode].acb); acb 235 drivers/media/i2c/sony-btf-mpx.c mpx_audio_modes[mode].acb, acb 65 drivers/net/dsa/bcm_sf2.h void __iomem *acb; acb 199 drivers/net/dsa/bcm_sf2.h SF2_IO_MACRO(acb); acb 307 drivers/scsi/arcmsr/arcmsr.h #define MEM_BASE0(x) (u32 __iomem *)((unsigned long)acb->mem_base0 + x) acb 308 drivers/scsi/arcmsr/arcmsr.h #define MEM_BASE1(x) (u32 __iomem *)((unsigned long)acb->mem_base1 + x) acb 862 drivers/scsi/arcmsr/arcmsr.h struct AdapterControlBlock *acb; /*x32: 4byte, x64: 8byte*/ acb 949 drivers/scsi/arcmsr/arcmsr.h void arcmsr_free_sysfs_attr(struct AdapterControlBlock *acb); acb 71 drivers/scsi/arcmsr/arcmsr_attr.c struct AdapterControlBlock *acb = (struct AdapterControlBlock *) host->hostdata; acb 81 drivers/scsi/arcmsr/arcmsr_attr.c spin_lock_irqsave(&acb->rqbuffer_lock, flags); acb 82 drivers/scsi/arcmsr/arcmsr_attr.c if (acb->rqbuf_getIndex != acb->rqbuf_putIndex) { acb 83 drivers/scsi/arcmsr/arcmsr_attr.c unsigned int tail = acb->rqbuf_getIndex; acb 84 drivers/scsi/arcmsr/arcmsr_attr.c unsigned int head = acb->rqbuf_putIndex; acb 92 drivers/scsi/arcmsr/arcmsr_attr.c memcpy(ptmpQbuffer, acb->rqbuffer + tail, allxfer_len); acb 94 drivers/scsi/arcmsr/arcmsr_attr.c memcpy(ptmpQbuffer, acb->rqbuffer + tail, cnt_to_end); acb 95 drivers/scsi/arcmsr/arcmsr_attr.c memcpy(ptmpQbuffer + cnt_to_end, acb->rqbuffer, allxfer_len - cnt_to_end); acb 97 drivers/scsi/arcmsr/arcmsr_attr.c acb->rqbuf_getIndex = (acb->rqbuf_getIndex + allxfer_len) % ARCMSR_MAX_QBUFFER; acb 99 drivers/scsi/arcmsr/arcmsr_attr.c if (acb->acb_flags & ACB_F_IOPDATA_OVERFLOW) { acb 101 drivers/scsi/arcmsr/arcmsr_attr.c acb->acb_flags &= ~ACB_F_IOPDATA_OVERFLOW; acb 102 drivers/scsi/arcmsr/arcmsr_attr.c prbuffer = arcmsr_get_iop_rqbuffer(acb); acb 103 drivers/scsi/arcmsr/arcmsr_attr.c if (arcmsr_Read_iop_rqbuffer_data(acb, prbuffer) == 0) acb 104 drivers/scsi/arcmsr/arcmsr_attr.c acb->acb_flags |= ACB_F_IOPDATA_OVERFLOW; acb 106 drivers/scsi/arcmsr/arcmsr_attr.c spin_unlock_irqrestore(&acb->rqbuffer_lock, flags); acb 118 drivers/scsi/arcmsr/arcmsr_attr.c struct AdapterControlBlock *acb = (struct AdapterControlBlock *) host->hostdata; acb 130 drivers/scsi/arcmsr/arcmsr_attr.c spin_lock_irqsave(&acb->wqbuffer_lock, flags); acb 131 drivers/scsi/arcmsr/arcmsr_attr.c if (acb->wqbuf_putIndex != acb->wqbuf_getIndex) { acb 132 drivers/scsi/arcmsr/arcmsr_attr.c arcmsr_write_ioctldata2iop(acb); acb 133 drivers/scsi/arcmsr/arcmsr_attr.c spin_unlock_irqrestore(&acb->wqbuffer_lock, flags); acb 136 drivers/scsi/arcmsr/arcmsr_attr.c pQbuffer = &acb->wqbuffer[acb->wqbuf_putIndex]; acb 137 drivers/scsi/arcmsr/arcmsr_attr.c cnt2end = ARCMSR_MAX_QBUFFER - acb->wqbuf_putIndex; acb 142 drivers/scsi/arcmsr/arcmsr_attr.c acb->wqbuf_putIndex = 0; acb 143 drivers/scsi/arcmsr/arcmsr_attr.c pQbuffer = acb->wqbuffer; acb 146 drivers/scsi/arcmsr/arcmsr_attr.c acb->wqbuf_putIndex += user_len; acb 147 drivers/scsi/arcmsr/arcmsr_attr.c acb->wqbuf_putIndex %= ARCMSR_MAX_QBUFFER; acb 148 drivers/scsi/arcmsr/arcmsr_attr.c if (acb->acb_flags & ACB_F_MESSAGE_WQBUFFER_CLEARED) { acb 149 drivers/scsi/arcmsr/arcmsr_attr.c acb->acb_flags &= acb 151 drivers/scsi/arcmsr/arcmsr_attr.c arcmsr_write_ioctldata2iop(acb); acb 153 drivers/scsi/arcmsr/arcmsr_attr.c spin_unlock_irqrestore(&acb->wqbuffer_lock, flags); acb 166 drivers/scsi/arcmsr/arcmsr_attr.c struct AdapterControlBlock *acb = (struct AdapterControlBlock *) host->hostdata; acb 173 drivers/scsi/arcmsr/arcmsr_attr.c arcmsr_clear_iop2drv_rqueue_buffer(acb); acb 174 drivers/scsi/arcmsr/arcmsr_attr.c acb->acb_flags |= acb 178 drivers/scsi/arcmsr/arcmsr_attr.c spin_lock_irqsave(&acb->rqbuffer_lock, flags); acb 179 drivers/scsi/arcmsr/arcmsr_attr.c acb->rqbuf_getIndex = 0; acb 180 drivers/scsi/arcmsr/arcmsr_attr.c acb->rqbuf_putIndex = 0; acb 181 drivers/scsi/arcmsr/arcmsr_attr.c spin_unlock_irqrestore(&acb->rqbuffer_lock, flags); acb 182 drivers/scsi/arcmsr/arcmsr_attr.c spin_lock_irqsave(&acb->wqbuffer_lock, flags); acb 183 drivers/scsi/arcmsr/arcmsr_attr.c acb->wqbuf_getIndex = 0; acb 184 drivers/scsi/arcmsr/arcmsr_attr.c acb->wqbuf_putIndex = 0; acb 185 drivers/scsi/arcmsr/arcmsr_attr.c spin_unlock_irqrestore(&acb->wqbuffer_lock, flags); acb 186 drivers/scsi/arcmsr/arcmsr_attr.c pQbuffer = acb->rqbuffer; acb 188 drivers/scsi/arcmsr/arcmsr_attr.c pQbuffer = acb->wqbuffer; acb 220 drivers/scsi/arcmsr/arcmsr_attr.c int arcmsr_alloc_sysfs_attr(struct AdapterControlBlock *acb) acb 222 drivers/scsi/arcmsr/arcmsr_attr.c struct Scsi_Host *host = acb->host; acb 249 drivers/scsi/arcmsr/arcmsr_attr.c void arcmsr_free_sysfs_attr(struct AdapterControlBlock *acb) acb 251 drivers/scsi/arcmsr/arcmsr_attr.c struct Scsi_Host *host = acb->host; acb 273 drivers/scsi/arcmsr/arcmsr_attr.c struct AdapterControlBlock *acb = acb 277 drivers/scsi/arcmsr/arcmsr_attr.c atomic_read(&acb->ccboutstandingcount)); acb 285 drivers/scsi/arcmsr/arcmsr_attr.c struct AdapterControlBlock *acb = acb 289 drivers/scsi/arcmsr/arcmsr_attr.c acb->num_resets); acb 297 drivers/scsi/arcmsr/arcmsr_attr.c struct AdapterControlBlock *acb = acb 301 drivers/scsi/arcmsr/arcmsr_attr.c acb->num_aborts); acb 309 drivers/scsi/arcmsr/arcmsr_attr.c struct AdapterControlBlock *acb = acb 313 drivers/scsi/arcmsr/arcmsr_attr.c acb->firm_model); acb 321 drivers/scsi/arcmsr/arcmsr_attr.c struct AdapterControlBlock *acb = acb 326 drivers/scsi/arcmsr/arcmsr_attr.c acb->firm_version); acb 334 drivers/scsi/arcmsr/arcmsr_attr.c struct AdapterControlBlock *acb = acb 339 drivers/scsi/arcmsr/arcmsr_attr.c acb->firm_request_len); acb 347 drivers/scsi/arcmsr/arcmsr_attr.c struct AdapterControlBlock *acb = acb 352 drivers/scsi/arcmsr/arcmsr_attr.c acb->firm_numbers_queue); acb 360 drivers/scsi/arcmsr/arcmsr_attr.c struct AdapterControlBlock *acb = acb 365 drivers/scsi/arcmsr/arcmsr_attr.c acb->firm_sdram_size); acb 373 drivers/scsi/arcmsr/arcmsr_attr.c struct AdapterControlBlock *acb = acb 378 drivers/scsi/arcmsr/arcmsr_attr.c acb->firm_hd_channels); acb 106 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_iop_message_xfer(struct AdapterControlBlock *acb, acb 108 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_iop_confirm(struct AdapterControlBlock *acb); acb 120 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_iop_init(struct AdapterControlBlock *acb); acb 121 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_free_ccb_pool(struct AdapterControlBlock *acb); acb 122 drivers/scsi/arcmsr/arcmsr_hba.c static u32 arcmsr_disable_outbound_ints(struct AdapterControlBlock *acb); acb 123 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_enable_outbound_ints(struct AdapterControlBlock *acb, acb 125 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_stop_adapter_bgrb(struct AdapterControlBlock *acb); acb 126 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaA_flush_cache(struct AdapterControlBlock *acb); acb 127 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaB_flush_cache(struct AdapterControlBlock *acb); acb 130 drivers/scsi/arcmsr/arcmsr_hba.c static bool arcmsr_get_firmware_spec(struct AdapterControlBlock *acb); acb 131 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_start_adapter_bgrb(struct AdapterControlBlock *acb); acb 133 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaD_message_isr(struct AdapterControlBlock *acb); acb 134 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaE_message_isr(struct AdapterControlBlock *acb); acb 135 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaE_postqueue_isr(struct AdapterControlBlock *acb); acb 136 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hardware_reset(struct AdapterControlBlock *acb); acb 138 drivers/scsi/arcmsr/arcmsr_hba.c static irqreturn_t arcmsr_interrupt(struct AdapterControlBlock *acb); acb 140 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_wait_firmware_ready(struct AdapterControlBlock *acb); acb 230 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_free_io_queue(struct AdapterControlBlock *acb) acb 232 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 236 drivers/scsi/arcmsr/arcmsr_hba.c dma_free_coherent(&acb->pdev->dev, acb->ioqueue_size, acb 237 drivers/scsi/arcmsr/arcmsr_hba.c acb->dma_coherent2, acb->dma_coherent_handle2); acb 243 drivers/scsi/arcmsr/arcmsr_hba.c static bool arcmsr_remap_pciregion(struct AdapterControlBlock *acb) acb 245 drivers/scsi/arcmsr/arcmsr_hba.c struct pci_dev *pdev = acb->pdev; acb 246 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type){ acb 248 drivers/scsi/arcmsr/arcmsr_hba.c acb->pmuA = ioremap(pci_resource_start(pdev,0), pci_resource_len(pdev,0)); acb 249 drivers/scsi/arcmsr/arcmsr_hba.c if (!acb->pmuA) { acb 250 drivers/scsi/arcmsr/arcmsr_hba.c printk(KERN_NOTICE "arcmsr%d: memory mapping region fail \n", acb->host->host_no); acb 259 drivers/scsi/arcmsr/arcmsr_hba.c printk(KERN_NOTICE "arcmsr%d: memory mapping region fail \n", acb->host->host_no); acb 265 drivers/scsi/arcmsr/arcmsr_hba.c printk(KERN_NOTICE "arcmsr%d: memory mapping region fail \n", acb->host->host_no); acb 268 drivers/scsi/arcmsr/arcmsr_hba.c acb->mem_base0 = mem_base0; acb 269 drivers/scsi/arcmsr/arcmsr_hba.c acb->mem_base1 = mem_base1; acb 273 drivers/scsi/arcmsr/arcmsr_hba.c acb->pmuC = ioremap_nocache(pci_resource_start(pdev, 1), pci_resource_len(pdev, 1)); acb 274 drivers/scsi/arcmsr/arcmsr_hba.c if (!acb->pmuC) { acb 275 drivers/scsi/arcmsr/arcmsr_hba.c printk(KERN_NOTICE "arcmsr%d: memory mapping region fail \n", acb->host->host_no); acb 278 drivers/scsi/arcmsr/arcmsr_hba.c if (readl(&acb->pmuC->outbound_doorbell) & ARCMSR_HBCMU_IOP2DRV_MESSAGE_CMD_DONE) { acb 279 drivers/scsi/arcmsr/arcmsr_hba.c writel(ARCMSR_HBCMU_IOP2DRV_MESSAGE_CMD_DONE_DOORBELL_CLEAR, &acb->pmuC->outbound_doorbell_clear);/*clear interrupt*/ acb 294 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->host_no); acb 297 drivers/scsi/arcmsr/arcmsr_hba.c acb->mem_base0 = mem_base0; acb 301 drivers/scsi/arcmsr/arcmsr_hba.c acb->pmuE = ioremap(pci_resource_start(pdev, 1), acb 303 drivers/scsi/arcmsr/arcmsr_hba.c if (!acb->pmuE) { acb 305 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->host_no); acb 308 drivers/scsi/arcmsr/arcmsr_hba.c writel(0, &acb->pmuE->host_int_status); /*clear interrupt*/ acb 309 drivers/scsi/arcmsr/arcmsr_hba.c writel(ARCMSR_HBEMU_DOORBELL_SYNC, &acb->pmuE->iobound_doorbell); /* synchronize doorbell to 0 */ acb 310 drivers/scsi/arcmsr/arcmsr_hba.c acb->in_doorbell = 0; acb 311 drivers/scsi/arcmsr/arcmsr_hba.c acb->out_doorbell = 0; acb 318 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_unmap_pciregion(struct AdapterControlBlock *acb) acb 320 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 322 drivers/scsi/arcmsr/arcmsr_hba.c iounmap(acb->pmuA); acb 326 drivers/scsi/arcmsr/arcmsr_hba.c iounmap(acb->mem_base0); acb 327 drivers/scsi/arcmsr/arcmsr_hba.c iounmap(acb->mem_base1); acb 332 drivers/scsi/arcmsr/arcmsr_hba.c iounmap(acb->pmuC); acb 336 drivers/scsi/arcmsr/arcmsr_hba.c iounmap(acb->mem_base0); acb 339 drivers/scsi/arcmsr/arcmsr_hba.c iounmap(acb->pmuE); acb 347 drivers/scsi/arcmsr/arcmsr_hba.c struct AdapterControlBlock *acb = dev_id; acb 349 drivers/scsi/arcmsr/arcmsr_hba.c handle_state = arcmsr_interrupt(acb); acb 381 drivers/scsi/arcmsr/arcmsr_hba.c static uint8_t arcmsr_hbaA_wait_msgint_ready(struct AdapterControlBlock *acb) acb 383 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 399 drivers/scsi/arcmsr/arcmsr_hba.c static uint8_t arcmsr_hbaB_wait_msgint_ready(struct AdapterControlBlock *acb) acb 401 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 472 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaA_flush_cache(struct AdapterControlBlock *acb) acb 474 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 478 drivers/scsi/arcmsr/arcmsr_hba.c if (arcmsr_hbaA_wait_msgint_ready(acb)) acb 483 drivers/scsi/arcmsr/arcmsr_hba.c timeout, retry count down = %d \n", acb->host->host_no, retry_count); acb 488 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaB_flush_cache(struct AdapterControlBlock *acb) acb 490 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 494 drivers/scsi/arcmsr/arcmsr_hba.c if (arcmsr_hbaB_wait_msgint_ready(acb)) acb 499 drivers/scsi/arcmsr/arcmsr_hba.c timeout,retry count down = %d \n", acb->host->host_no, retry_count); acb 557 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_flush_adapter_cache(struct AdapterControlBlock *acb) acb 559 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 562 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaA_flush_cache(acb); acb 567 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaB_flush_cache(acb); acb 571 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaC_flush_cache(acb); acb 575 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaD_flush_cache(acb); acb 578 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaE_flush_cache(acb); acb 583 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaB_assign_regAddr(struct AdapterControlBlock *acb) acb 585 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 587 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->pdev->device == PCI_DEVICE_ID_ARECA_1203) { acb 603 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaD_assign_regAddr(struct AdapterControlBlock *acb) acb 605 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 635 drivers/scsi/arcmsr/arcmsr_hba.c static bool arcmsr_alloc_io_queue(struct AdapterControlBlock *acb) acb 640 drivers/scsi/arcmsr/arcmsr_hba.c struct pci_dev *pdev = acb->pdev; acb 642 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 644 drivers/scsi/arcmsr/arcmsr_hba.c acb->ioqueue_size = roundup(sizeof(struct MessageUnit_B), 32); acb 645 drivers/scsi/arcmsr/arcmsr_hba.c dma_coherent = dma_alloc_coherent(&pdev->dev, acb->ioqueue_size, acb 648 drivers/scsi/arcmsr/arcmsr_hba.c pr_notice("arcmsr%d: DMA allocation failed\n", acb->host->host_no); acb 651 drivers/scsi/arcmsr/arcmsr_hba.c acb->dma_coherent_handle2 = dma_coherent_handle; acb 652 drivers/scsi/arcmsr/arcmsr_hba.c acb->dma_coherent2 = dma_coherent; acb 653 drivers/scsi/arcmsr/arcmsr_hba.c acb->pmuB = (struct MessageUnit_B *)dma_coherent; acb 654 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaB_assign_regAddr(acb); acb 658 drivers/scsi/arcmsr/arcmsr_hba.c acb->ioqueue_size = roundup(sizeof(struct MessageUnit_D), 32); acb 659 drivers/scsi/arcmsr/arcmsr_hba.c dma_coherent = dma_alloc_coherent(&pdev->dev, acb->ioqueue_size, acb 662 drivers/scsi/arcmsr/arcmsr_hba.c pr_notice("arcmsr%d: DMA allocation failed\n", acb->host->host_no); acb 665 drivers/scsi/arcmsr/arcmsr_hba.c acb->dma_coherent_handle2 = dma_coherent_handle; acb 666 drivers/scsi/arcmsr/arcmsr_hba.c acb->dma_coherent2 = dma_coherent; acb 667 drivers/scsi/arcmsr/arcmsr_hba.c acb->pmuD = (struct MessageUnit_D *)dma_coherent; acb 668 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaD_assign_regAddr(acb); acb 674 drivers/scsi/arcmsr/arcmsr_hba.c acb->ioqueue_size = roundup(completeQ_size, 32); acb 675 drivers/scsi/arcmsr/arcmsr_hba.c dma_coherent = dma_alloc_coherent(&pdev->dev, acb->ioqueue_size, acb 678 drivers/scsi/arcmsr/arcmsr_hba.c pr_notice("arcmsr%d: DMA allocation failed\n", acb->host->host_no); acb 681 drivers/scsi/arcmsr/arcmsr_hba.c acb->dma_coherent_handle2 = dma_coherent_handle; acb 682 drivers/scsi/arcmsr/arcmsr_hba.c acb->dma_coherent2 = dma_coherent; acb 683 drivers/scsi/arcmsr/arcmsr_hba.c acb->pCompletionQ = dma_coherent; acb 684 drivers/scsi/arcmsr/arcmsr_hba.c acb->completionQ_entry = acb->ioqueue_size / sizeof(struct deliver_completeQ); acb 685 drivers/scsi/arcmsr/arcmsr_hba.c acb->doneq_index = 0; acb 694 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_alloc_ccb_pool(struct AdapterControlBlock *acb) acb 696 drivers/scsi/arcmsr/arcmsr_hba.c struct pci_dev *pdev = acb->pdev; acb 709 drivers/scsi/arcmsr/arcmsr_hba.c acb->devstate[i][j] = ARECA_RAID_GONE; acb 713 drivers/scsi/arcmsr/arcmsr_hba.c firm_config_version = acb->firm_cfg_version; acb 718 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->max_sectors = max_xfer_len/512; acb 719 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->sg_tablesize = max_sg_entrys; acb 721 drivers/scsi/arcmsr/arcmsr_hba.c acb->uncache_size = roundup_ccbsize * acb->maxFreeCCB; acb 722 drivers/scsi/arcmsr/arcmsr_hba.c acb->uncache_size += acb->ioqueue_size; acb 723 drivers/scsi/arcmsr/arcmsr_hba.c dma_coherent = dma_alloc_coherent(&pdev->dev, acb->uncache_size, &dma_coherent_handle, GFP_KERNEL); acb 725 drivers/scsi/arcmsr/arcmsr_hba.c printk(KERN_NOTICE "arcmsr%d: dma_alloc_coherent got error\n", acb->host->host_no); acb 728 drivers/scsi/arcmsr/arcmsr_hba.c acb->dma_coherent = dma_coherent; acb 729 drivers/scsi/arcmsr/arcmsr_hba.c acb->dma_coherent_handle = dma_coherent_handle; acb 730 drivers/scsi/arcmsr/arcmsr_hba.c memset(dma_coherent, 0, acb->uncache_size); acb 731 drivers/scsi/arcmsr/arcmsr_hba.c acb->ccbsize = roundup_ccbsize; acb 734 drivers/scsi/arcmsr/arcmsr_hba.c acb->vir2phy_offset = (unsigned long)dma_coherent - (unsigned long)dma_coherent_handle; acb 735 drivers/scsi/arcmsr/arcmsr_hba.c for(i = 0; i < acb->maxFreeCCB; i++){ acb 737 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 748 drivers/scsi/arcmsr/arcmsr_hba.c acb->pccb_pool[i] = ccb_tmp; acb 749 drivers/scsi/arcmsr/arcmsr_hba.c ccb_tmp->acb = acb; acb 754 drivers/scsi/arcmsr/arcmsr_hba.c acb->maxFreeCCB = i; acb 755 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->can_queue = i; acb 759 drivers/scsi/arcmsr/arcmsr_hba.c list_add_tail(&ccb_tmp->list, &acb->ccb_free_list); acb 763 drivers/scsi/arcmsr/arcmsr_hba.c acb->dma_coherent_handle2 = dma_coherent_handle; acb 764 drivers/scsi/arcmsr/arcmsr_hba.c acb->dma_coherent2 = ccb_tmp; acb 765 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 767 drivers/scsi/arcmsr/arcmsr_hba.c acb->pmuB = (struct MessageUnit_B *)acb->dma_coherent2; acb 768 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaB_assign_regAddr(acb); acb 771 drivers/scsi/arcmsr/arcmsr_hba.c acb->pmuD = (struct MessageUnit_D *)acb->dma_coherent2; acb 772 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaD_assign_regAddr(acb); acb 775 drivers/scsi/arcmsr/arcmsr_hba.c acb->pCompletionQ = acb->dma_coherent2; acb 776 drivers/scsi/arcmsr/arcmsr_hba.c acb->completionQ_entry = acb->ioqueue_size / sizeof(struct deliver_completeQ); acb 777 drivers/scsi/arcmsr/arcmsr_hba.c acb->doneq_index = 0; acb 785 drivers/scsi/arcmsr/arcmsr_hba.c struct AdapterControlBlock *acb = container_of(work, acb 787 drivers/scsi/arcmsr/arcmsr_hba.c char *acb_dev_map = (char *)acb->device_map; acb 794 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= ~ACB_F_MSG_GET_CONFIG; acb 795 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 797 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 804 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 811 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *reg = acb->pmuC; acb 818 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 825 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *reg = acb->pmuE; acb 832 drivers/scsi/arcmsr/arcmsr_hba.c atomic_inc(&acb->rq_map_token); acb 845 drivers/scsi/arcmsr/arcmsr_hba.c scsi_add_device(acb->host, acb 849 drivers/scsi/arcmsr/arcmsr_hba.c psdev = scsi_device_lookup(acb->host, acb 866 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_request_irq(struct pci_dev *pdev, struct AdapterControlBlock *acb) acb 876 drivers/scsi/arcmsr/arcmsr_hba.c pr_info("arcmsr%d: msi-x enabled\n", acb->host->host_no); acb 894 drivers/scsi/arcmsr/arcmsr_hba.c acb->vector_count = nvec; acb 897 drivers/scsi/arcmsr/arcmsr_hba.c flags, "arcmsr", acb)) { acb 899 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->host_no, pci_irq_vector(pdev, i)); acb 907 drivers/scsi/arcmsr/arcmsr_hba.c free_irq(pci_irq_vector(pdev, i), acb); acb 930 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_set_dma_mask(struct AdapterControlBlock *acb) acb 932 drivers/scsi/arcmsr/arcmsr_hba.c struct pci_dev *pcidev = acb->pdev; acb 935 drivers/scsi/arcmsr/arcmsr_hba.c if (((acb->adapter_type == ACB_ADAPTER_TYPE_A) && !dma_mask_64) || acb 958 drivers/scsi/arcmsr/arcmsr_hba.c struct AdapterControlBlock *acb; acb 972 drivers/scsi/arcmsr/arcmsr_hba.c acb = (struct AdapterControlBlock *) host->hostdata; acb 973 drivers/scsi/arcmsr/arcmsr_hba.c memset(acb,0,sizeof(struct AdapterControlBlock)); acb 974 drivers/scsi/arcmsr/arcmsr_hba.c acb->pdev = pdev; acb 975 drivers/scsi/arcmsr/arcmsr_hba.c acb->adapter_type = id->driver_data; acb 976 drivers/scsi/arcmsr/arcmsr_hba.c if (arcmsr_set_dma_mask(acb)) acb 978 drivers/scsi/arcmsr/arcmsr_hba.c acb->host = host; acb 996 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_init(&acb->eh_lock); acb 997 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_init(&acb->ccblist_lock); acb 998 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_init(&acb->postq_lock); acb 999 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_init(&acb->doneq_lock); acb 1000 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_init(&acb->rqbuffer_lock); acb 1001 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_init(&acb->wqbuffer_lock); acb 1002 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= (ACB_F_MESSAGE_WQBUFFER_CLEARED | acb 1005 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= ~ACB_F_SCSISTOPADAPTER; acb 1006 drivers/scsi/arcmsr/arcmsr_hba.c INIT_LIST_HEAD(&acb->ccb_free_list); acb 1007 drivers/scsi/arcmsr/arcmsr_hba.c error = arcmsr_remap_pciregion(acb); acb 1011 drivers/scsi/arcmsr/arcmsr_hba.c error = arcmsr_alloc_io_queue(acb); acb 1014 drivers/scsi/arcmsr/arcmsr_hba.c error = arcmsr_get_firmware_spec(acb); acb 1018 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_free_io_queue(acb); acb 1019 drivers/scsi/arcmsr/arcmsr_hba.c error = arcmsr_alloc_ccb_pool(acb); acb 1027 drivers/scsi/arcmsr/arcmsr_hba.c if (arcmsr_request_irq(pdev, acb) == FAILED) acb 1029 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_iop_init(acb); acb 1030 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_init_get_devmap_timer(acb); acb 1032 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_init_set_datetime_timer(acb); acb 1033 drivers/scsi/arcmsr/arcmsr_hba.c if(arcmsr_alloc_sysfs_attr(acb)) acb 1039 drivers/scsi/arcmsr/arcmsr_hba.c del_timer_sync(&acb->refresh_timer); acb 1040 drivers/scsi/arcmsr/arcmsr_hba.c del_timer_sync(&acb->eternal_timer); acb 1041 drivers/scsi/arcmsr/arcmsr_hba.c flush_work(&acb->arcmsr_do_message_isr_bh); acb 1042 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_stop_adapter_bgrb(acb); acb 1043 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_flush_adapter_cache(acb); acb 1044 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_free_irq(pdev, acb); acb 1048 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_free_ccb_pool(acb); acb 1051 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_free_io_queue(acb); acb 1053 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_unmap_pciregion(acb); acb 1064 drivers/scsi/arcmsr/arcmsr_hba.c struct AdapterControlBlock *acb) acb 1068 drivers/scsi/arcmsr/arcmsr_hba.c for (i = 0; i < acb->vector_count; i++) acb 1069 drivers/scsi/arcmsr/arcmsr_hba.c free_irq(pci_irq_vector(pdev, i), acb); acb 1077 drivers/scsi/arcmsr/arcmsr_hba.c struct AdapterControlBlock *acb = acb 1080 drivers/scsi/arcmsr/arcmsr_hba.c intmask_org = arcmsr_disable_outbound_ints(acb); acb 1081 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_free_irq(pdev, acb); acb 1082 drivers/scsi/arcmsr/arcmsr_hba.c del_timer_sync(&acb->eternal_timer); acb 1084 drivers/scsi/arcmsr/arcmsr_hba.c del_timer_sync(&acb->refresh_timer); acb 1085 drivers/scsi/arcmsr/arcmsr_hba.c flush_work(&acb->arcmsr_do_message_isr_bh); acb 1086 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_stop_adapter_bgrb(acb); acb 1087 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_flush_adapter_cache(acb); acb 1098 drivers/scsi/arcmsr/arcmsr_hba.c struct AdapterControlBlock *acb = acb 1108 drivers/scsi/arcmsr/arcmsr_hba.c if (arcmsr_set_dma_mask(acb)) acb 1111 drivers/scsi/arcmsr/arcmsr_hba.c if (arcmsr_request_irq(pdev, acb) == FAILED) acb 1113 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 1115 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 1126 drivers/scsi/arcmsr/arcmsr_hba.c writel(0, &acb->pmuE->host_int_status); acb 1127 drivers/scsi/arcmsr/arcmsr_hba.c writel(ARCMSR_HBEMU_DOORBELL_SYNC, &acb->pmuE->iobound_doorbell); acb 1128 drivers/scsi/arcmsr/arcmsr_hba.c acb->in_doorbell = 0; acb 1129 drivers/scsi/arcmsr/arcmsr_hba.c acb->out_doorbell = 0; acb 1130 drivers/scsi/arcmsr/arcmsr_hba.c acb->doneq_index = 0; acb 1133 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_iop_init(acb); acb 1134 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_init_get_devmap_timer(acb); acb 1136 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_init_set_datetime_timer(acb); acb 1139 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_stop_adapter_bgrb(acb); acb 1140 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_flush_adapter_cache(acb); acb 1143 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_free_ccb_pool(acb); acb 1144 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_unmap_pciregion(acb); acb 1151 drivers/scsi/arcmsr/arcmsr_hba.c static uint8_t arcmsr_hbaA_abort_allcmd(struct AdapterControlBlock *acb) acb 1153 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 1155 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaA_wait_msgint_ready(acb)) { acb 1158 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no); acb 1164 drivers/scsi/arcmsr/arcmsr_hba.c static uint8_t arcmsr_hbaB_abort_allcmd(struct AdapterControlBlock *acb) acb 1166 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 1169 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaB_wait_msgint_ready(acb)) { acb 1172 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no); acb 1219 drivers/scsi/arcmsr/arcmsr_hba.c static uint8_t arcmsr_abort_allcmd(struct AdapterControlBlock *acb) acb 1222 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 1224 drivers/scsi/arcmsr/arcmsr_hba.c rtnval = arcmsr_hbaA_abort_allcmd(acb); acb 1229 drivers/scsi/arcmsr/arcmsr_hba.c rtnval = arcmsr_hbaB_abort_allcmd(acb); acb 1234 drivers/scsi/arcmsr/arcmsr_hba.c rtnval = arcmsr_hbaC_abort_allcmd(acb); acb 1239 drivers/scsi/arcmsr/arcmsr_hba.c rtnval = arcmsr_hbaD_abort_allcmd(acb); acb 1242 drivers/scsi/arcmsr/arcmsr_hba.c rtnval = arcmsr_hbaE_abort_allcmd(acb); acb 1257 drivers/scsi/arcmsr/arcmsr_hba.c struct AdapterControlBlock *acb = ccb->acb; acb 1260 drivers/scsi/arcmsr/arcmsr_hba.c atomic_dec(&acb->ccboutstandingcount); acb 1263 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->ccblist_lock, flags); acb 1264 drivers/scsi/arcmsr/arcmsr_hba.c list_add_tail(&ccb->list, &acb->ccb_free_list); acb 1265 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->ccblist_lock, flags); acb 1287 drivers/scsi/arcmsr/arcmsr_hba.c static u32 arcmsr_disable_outbound_ints(struct AdapterControlBlock *acb) acb 1290 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 1292 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 1299 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 1305 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *reg = acb->pmuC; acb 1312 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 1318 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *reg = acb->pmuE; acb 1328 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_report_ccb_state(struct AdapterControlBlock *acb, acb 1335 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->devstate[id][lun] == ARECA_RAID_GONE) acb 1336 drivers/scsi/arcmsr/arcmsr_hba.c acb->devstate[id][lun] = ARECA_RAID_GOOD; acb 1342 drivers/scsi/arcmsr/arcmsr_hba.c acb->devstate[id][lun] = ARECA_RAID_GONE; acb 1351 drivers/scsi/arcmsr/arcmsr_hba.c acb->devstate[id][lun] = ARECA_RAID_GONE; acb 1358 drivers/scsi/arcmsr/arcmsr_hba.c acb->devstate[id][lun] = ARECA_RAID_GOOD; acb 1368 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no acb 1372 drivers/scsi/arcmsr/arcmsr_hba.c acb->devstate[id][lun] = ARECA_RAID_GONE; acb 1380 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_drain_donequeue(struct AdapterControlBlock *acb, struct CommandControlBlock *pCCB, bool error) acb 1382 drivers/scsi/arcmsr/arcmsr_hba.c if ((pCCB->acb != acb) || (pCCB->startdone != ARCMSR_CCB_START)) { acb 1389 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->host_no, pCCB); acb 1397 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no acb 1398 drivers/scsi/arcmsr/arcmsr_hba.c , acb acb 1400 drivers/scsi/arcmsr/arcmsr_hba.c , pCCB->acb acb 1402 drivers/scsi/arcmsr/arcmsr_hba.c , atomic_read(&acb->ccboutstandingcount)); acb 1405 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_report_ccb_state(acb, pCCB, error); acb 1408 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_done4abort_postqueue(struct AdapterControlBlock *acb) acb 1417 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 1420 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 1423 drivers/scsi/arcmsr/arcmsr_hba.c acb->outbound_int_enable; acb 1427 drivers/scsi/arcmsr/arcmsr_hba.c && (i++ < acb->maxOutstanding)) { acb 1429 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->cdb_phyadd_hipart) acb 1430 drivers/scsi/arcmsr/arcmsr_hba.c ccb_cdb_phy = ccb_cdb_phy | acb->cdb_phyadd_hipart; acb 1431 drivers/scsi/arcmsr/arcmsr_hba.c pARCMSR_CDB = (struct ARCMSR_CDB *)(acb->vir2phy_offset + ccb_cdb_phy); acb 1434 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_drain_donequeue(acb, pCCB, error); acb 1440 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 1448 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->cdb_phyadd_hipart) acb 1449 drivers/scsi/arcmsr/arcmsr_hba.c ccb_cdb_phy = ccb_cdb_phy | acb->cdb_phyadd_hipart; acb 1450 drivers/scsi/arcmsr/arcmsr_hba.c pARCMSR_CDB = (struct ARCMSR_CDB *)(acb->vir2phy_offset + ccb_cdb_phy); acb 1453 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_drain_donequeue(acb, pCCB, error); acb 1462 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *reg = acb->pmuC; acb 1463 drivers/scsi/arcmsr/arcmsr_hba.c while ((readl(®->host_int_status) & ARCMSR_HBCMU_OUTBOUND_POSTQUEUE_ISR) && (i++ < acb->maxOutstanding)) { acb 1467 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->cdb_phyadd_hipart) acb 1468 drivers/scsi/arcmsr/arcmsr_hba.c ccb_cdb_phy = ccb_cdb_phy | acb->cdb_phyadd_hipart; acb 1469 drivers/scsi/arcmsr/arcmsr_hba.c pARCMSR_CDB = (struct ARCMSR_CDB *)(acb->vir2phy_offset + ccb_cdb_phy); acb 1472 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_drain_donequeue(acb, pCCB, error); acb 1477 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *pmu = acb->pmuD; acb 1482 drivers/scsi/arcmsr/arcmsr_hba.c residual = atomic_read(&acb->ccboutstandingcount); acb 1484 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->doneq_lock, flags); acb 1496 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->doneq_lock, flags); acb 1502 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->cdb_phyadd_hipart) acb 1503 drivers/scsi/arcmsr/arcmsr_hba.c ccb_cdb_phy = ccb_cdb_phy | acb->cdb_phyadd_hipart; acb 1505 drivers/scsi/arcmsr/arcmsr_hba.c (acb->vir2phy_offset + ccb_cdb_phy); acb 1511 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_drain_donequeue(acb, pCCB, error); acb 1515 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->doneq_lock, flags); acb 1524 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaE_postqueue_isr(acb); acb 1529 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_remove_scsi_devices(struct AdapterControlBlock *acb) acb 1531 drivers/scsi/arcmsr/arcmsr_hba.c char *acb_dev_map = (char *)acb->device_map; acb 1537 drivers/scsi/arcmsr/arcmsr_hba.c for (i = 0; i < acb->maxFreeCCB; i++) { acb 1538 drivers/scsi/arcmsr/arcmsr_hba.c ccb = acb->pccb_pool[i]; acb 1550 drivers/scsi/arcmsr/arcmsr_hba.c psdev = scsi_device_lookup(acb->host, acb 1565 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_free_pcidev(struct AdapterControlBlock *acb) acb 1570 drivers/scsi/arcmsr/arcmsr_hba.c host = acb->host; acb 1571 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_free_sysfs_attr(acb); acb 1573 drivers/scsi/arcmsr/arcmsr_hba.c flush_work(&acb->arcmsr_do_message_isr_bh); acb 1574 drivers/scsi/arcmsr/arcmsr_hba.c del_timer_sync(&acb->eternal_timer); acb 1576 drivers/scsi/arcmsr/arcmsr_hba.c del_timer_sync(&acb->refresh_timer); acb 1577 drivers/scsi/arcmsr/arcmsr_hba.c pdev = acb->pdev; acb 1578 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_free_irq(pdev, acb); acb 1579 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_free_ccb_pool(acb); acb 1580 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_unmap_pciregion(acb); acb 1589 drivers/scsi/arcmsr/arcmsr_hba.c struct AdapterControlBlock *acb = acb 1596 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= ~ACB_F_IOP_INITED; acb 1597 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_ADAPTER_REMOVED; acb 1598 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_remove_scsi_devices(acb); acb 1599 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_free_pcidev(acb); acb 1602 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_free_sysfs_attr(acb); acb 1604 drivers/scsi/arcmsr/arcmsr_hba.c flush_work(&acb->arcmsr_do_message_isr_bh); acb 1605 drivers/scsi/arcmsr/arcmsr_hba.c del_timer_sync(&acb->eternal_timer); acb 1607 drivers/scsi/arcmsr/arcmsr_hba.c del_timer_sync(&acb->refresh_timer); acb 1608 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_disable_outbound_ints(acb); acb 1609 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_stop_adapter_bgrb(acb); acb 1610 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_flush_adapter_cache(acb); acb 1611 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_SCSISTOPADAPTER; acb 1612 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= ~ACB_F_IOP_INITED; acb 1614 drivers/scsi/arcmsr/arcmsr_hba.c for (poll_count = 0; poll_count < acb->maxOutstanding; poll_count++){ acb 1615 drivers/scsi/arcmsr/arcmsr_hba.c if (!atomic_read(&acb->ccboutstandingcount)) acb 1617 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_interrupt(acb);/* FIXME: need spinlock */ acb 1621 drivers/scsi/arcmsr/arcmsr_hba.c if (atomic_read(&acb->ccboutstandingcount)) { acb 1624 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_abort_allcmd(acb); acb 1625 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_done4abort_postqueue(acb); acb 1626 drivers/scsi/arcmsr/arcmsr_hba.c for (i = 0; i < acb->maxFreeCCB; i++) { acb 1627 drivers/scsi/arcmsr/arcmsr_hba.c struct CommandControlBlock *ccb = acb->pccb_pool[i]; acb 1635 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_free_irq(pdev, acb); acb 1636 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_free_ccb_pool(acb); acb 1637 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_unmap_pciregion(acb); acb 1646 drivers/scsi/arcmsr/arcmsr_hba.c struct AdapterControlBlock *acb = acb 1648 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_ADAPTER_REMOVED) acb 1650 drivers/scsi/arcmsr/arcmsr_hba.c del_timer_sync(&acb->eternal_timer); acb 1652 drivers/scsi/arcmsr/arcmsr_hba.c del_timer_sync(&acb->refresh_timer); acb 1653 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_disable_outbound_ints(acb); acb 1654 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_free_irq(pdev, acb); acb 1655 drivers/scsi/arcmsr/arcmsr_hba.c flush_work(&acb->arcmsr_do_message_isr_bh); acb 1656 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_stop_adapter_bgrb(acb); acb 1657 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_flush_adapter_cache(acb); acb 1674 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_enable_outbound_ints(struct AdapterControlBlock *acb, acb 1678 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 1681 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 1686 drivers/scsi/arcmsr/arcmsr_hba.c acb->outbound_int_enable = ~(intmask_org & mask) & 0x000000ff; acb 1691 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 1697 drivers/scsi/arcmsr/arcmsr_hba.c acb->outbound_int_enable = (intmask_org | mask) & 0x0000000f; acb 1701 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *reg = acb->pmuC; acb 1704 drivers/scsi/arcmsr/arcmsr_hba.c acb->outbound_int_enable = ~(intmask_org & mask) & 0x0000000f; acb 1708 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 1715 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *reg = acb->pmuE; acb 1724 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_build_ccb(struct AdapterControlBlock *acb, acb 1744 drivers/scsi/arcmsr/arcmsr_hba.c if (unlikely(nseg > acb->host->sg_tablesize || nseg < 0)) acb 1779 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_post_ccb(struct AdapterControlBlock *acb, struct CommandControlBlock *ccb) acb 1783 drivers/scsi/arcmsr/arcmsr_hba.c atomic_inc(&acb->ccboutstandingcount); acb 1785 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 1787 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 1798 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 1816 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *phbcmu = acb->pmuC; acb 1826 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *pmu = acb->pmuD; acb 1832 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->postq_lock, flags); acb 1845 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->postq_lock, flags); acb 1849 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *pmu = acb->pmuE; acb 1861 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaA_stop_bgrb(struct AdapterControlBlock *acb) acb 1863 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 1864 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= ~ACB_F_MSG_START_BGRB; acb 1866 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaA_wait_msgint_ready(acb)) { acb 1869 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no); acb 1873 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaB_stop_bgrb(struct AdapterControlBlock *acb) acb 1875 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 1876 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= ~ACB_F_MSG_START_BGRB; acb 1879 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaB_wait_msgint_ready(acb)) { acb 1882 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no); acb 1925 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_stop_adapter_bgrb(struct AdapterControlBlock *acb) acb 1927 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 1929 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaA_stop_bgrb(acb); acb 1934 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaB_stop_bgrb(acb); acb 1938 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaC_stop_bgrb(acb); acb 1942 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaD_stop_bgrb(acb); acb 1945 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaE_stop_bgrb(acb); acb 1950 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_free_ccb_pool(struct AdapterControlBlock *acb) acb 1952 drivers/scsi/arcmsr/arcmsr_hba.c dma_free_coherent(&acb->pdev->dev, acb->uncache_size, acb->dma_coherent, acb->dma_coherent_handle); acb 1955 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_iop_message_read(struct AdapterControlBlock *acb) acb 1957 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 1959 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 1965 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 1970 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *reg = acb->pmuC; acb 1976 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 1982 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *reg = acb->pmuE; acb 1983 drivers/scsi/arcmsr/arcmsr_hba.c acb->out_doorbell ^= ARCMSR_HBEMU_DRV2IOP_DATA_READ_OK; acb 1984 drivers/scsi/arcmsr/arcmsr_hba.c writel(acb->out_doorbell, ®->iobound_doorbell); acb 1990 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_iop_message_wrote(struct AdapterControlBlock *acb) acb 1992 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 1994 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 2004 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 2013 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *reg = acb->pmuC; acb 2022 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 2028 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *reg = acb->pmuE; acb 2029 drivers/scsi/arcmsr/arcmsr_hba.c acb->out_doorbell ^= ARCMSR_HBEMU_DRV2IOP_DATA_WRITE_OK; acb 2030 drivers/scsi/arcmsr/arcmsr_hba.c writel(acb->out_doorbell, ®->iobound_doorbell); acb 2036 drivers/scsi/arcmsr/arcmsr_hba.c struct QBUFFER __iomem *arcmsr_get_iop_rqbuffer(struct AdapterControlBlock *acb) acb 2039 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 2042 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 2048 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 2053 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *phbcmu = acb->pmuC; acb 2058 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 2063 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *reg = acb->pmuE; acb 2071 drivers/scsi/arcmsr/arcmsr_hba.c static struct QBUFFER __iomem *arcmsr_get_iop_wqbuffer(struct AdapterControlBlock *acb) acb 2074 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 2077 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 2083 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 2088 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *reg = acb->pmuC; acb 2093 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 2098 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *reg = acb->pmuE; acb 2107 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_Read_iop_rqbuffer_in_DWORD(struct AdapterControlBlock *acb, acb 2133 drivers/scsi/arcmsr/arcmsr_hba.c pQbuffer = &acb->rqbuffer[acb->rqbuf_putIndex]; acb 2135 drivers/scsi/arcmsr/arcmsr_hba.c acb->rqbuf_putIndex++; acb 2137 drivers/scsi/arcmsr/arcmsr_hba.c acb->rqbuf_putIndex %= ARCMSR_MAX_QBUFFER; acb 2143 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_iop_message_read(acb); acb 2148 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_Read_iop_rqbuffer_data(struct AdapterControlBlock *acb, acb 2155 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->adapter_type > ACB_ADAPTER_TYPE_B) acb 2156 drivers/scsi/arcmsr/arcmsr_hba.c return arcmsr_Read_iop_rqbuffer_in_DWORD(acb, prbuffer); acb 2160 drivers/scsi/arcmsr/arcmsr_hba.c pQbuffer = &acb->rqbuffer[acb->rqbuf_putIndex]; acb 2162 drivers/scsi/arcmsr/arcmsr_hba.c acb->rqbuf_putIndex++; acb 2163 drivers/scsi/arcmsr/arcmsr_hba.c acb->rqbuf_putIndex %= ARCMSR_MAX_QBUFFER; acb 2167 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_iop_message_read(acb); acb 2171 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_iop2drv_data_wrote_handle(struct AdapterControlBlock *acb) acb 2177 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->rqbuffer_lock, flags); acb 2178 drivers/scsi/arcmsr/arcmsr_hba.c prbuffer = arcmsr_get_iop_rqbuffer(acb); acb 2179 drivers/scsi/arcmsr/arcmsr_hba.c buf_empty_len = (acb->rqbuf_putIndex - acb->rqbuf_getIndex - 1) & acb 2182 drivers/scsi/arcmsr/arcmsr_hba.c if (arcmsr_Read_iop_rqbuffer_data(acb, prbuffer) == 0) acb 2183 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_IOPDATA_OVERFLOW; acb 2185 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_IOPDATA_OVERFLOW; acb 2186 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->rqbuffer_lock, flags); acb 2189 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_write_ioctldata2iop_in_DWORD(struct AdapterControlBlock *acb) acb 2197 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_MESSAGE_WQBUFFER_READED) { acb 2203 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= (~ACB_F_MESSAGE_WQBUFFER_READED); acb 2204 drivers/scsi/arcmsr/arcmsr_hba.c pwbuffer = arcmsr_get_iop_wqbuffer(acb); acb 2206 drivers/scsi/arcmsr/arcmsr_hba.c while ((acb->wqbuf_getIndex != acb->wqbuf_putIndex) acb 2208 drivers/scsi/arcmsr/arcmsr_hba.c pQbuffer = &acb->wqbuffer[acb->wqbuf_getIndex]; acb 2210 drivers/scsi/arcmsr/arcmsr_hba.c acb->wqbuf_getIndex++; acb 2211 drivers/scsi/arcmsr/arcmsr_hba.c acb->wqbuf_getIndex %= ARCMSR_MAX_QBUFFER; acb 2229 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_iop_message_wrote(acb); acb 2234 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_write_ioctldata2iop(struct AdapterControlBlock *acb) acb 2241 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->adapter_type > ACB_ADAPTER_TYPE_B) { acb 2242 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_write_ioctldata2iop_in_DWORD(acb); acb 2245 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_MESSAGE_WQBUFFER_READED) { acb 2246 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= (~ACB_F_MESSAGE_WQBUFFER_READED); acb 2247 drivers/scsi/arcmsr/arcmsr_hba.c pwbuffer = arcmsr_get_iop_wqbuffer(acb); acb 2249 drivers/scsi/arcmsr/arcmsr_hba.c while ((acb->wqbuf_getIndex != acb->wqbuf_putIndex) acb 2251 drivers/scsi/arcmsr/arcmsr_hba.c pQbuffer = &acb->wqbuffer[acb->wqbuf_getIndex]; acb 2253 drivers/scsi/arcmsr/arcmsr_hba.c acb->wqbuf_getIndex++; acb 2254 drivers/scsi/arcmsr/arcmsr_hba.c acb->wqbuf_getIndex %= ARCMSR_MAX_QBUFFER; acb 2259 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_iop_message_wrote(acb); acb 2263 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_iop2drv_data_read_handle(struct AdapterControlBlock *acb) acb 2267 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->wqbuffer_lock, flags); acb 2268 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_MESSAGE_WQBUFFER_READED; acb 2269 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->wqbuf_getIndex != acb->wqbuf_putIndex) acb 2270 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_write_ioctldata2iop(acb); acb 2271 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->wqbuf_getIndex == acb->wqbuf_putIndex) acb 2272 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_MESSAGE_WQBUFFER_CLEARED; acb 2273 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->wqbuffer_lock, flags); acb 2276 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaA_doorbell_isr(struct AdapterControlBlock *acb) acb 2279 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 2284 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_iop2drv_data_wrote_handle(acb); acb 2286 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_iop2drv_data_read_handle(acb); acb 2365 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaA_postqueue_isr(struct AdapterControlBlock *acb) acb 2368 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 2376 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->cdb_phyadd_hipart) acb 2377 drivers/scsi/arcmsr/arcmsr_hba.c cdb_phy_addr = cdb_phy_addr | acb->cdb_phyadd_hipart; acb 2378 drivers/scsi/arcmsr/arcmsr_hba.c pARCMSR_CDB = (struct ARCMSR_CDB *)(acb->vir2phy_offset + cdb_phy_addr); acb 2381 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_drain_donequeue(acb, pCCB, error); acb 2384 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaB_postqueue_isr(struct AdapterControlBlock *acb) acb 2388 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 2397 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->cdb_phyadd_hipart) acb 2398 drivers/scsi/arcmsr/arcmsr_hba.c cdb_phy_addr = cdb_phy_addr | acb->cdb_phyadd_hipart; acb 2399 drivers/scsi/arcmsr/arcmsr_hba.c pARCMSR_CDB = (struct ARCMSR_CDB *)(acb->vir2phy_offset + cdb_phy_addr); acb 2402 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_drain_donequeue(acb, pCCB, error); acb 2410 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaC_postqueue_isr(struct AdapterControlBlock *acb) acb 2419 drivers/scsi/arcmsr/arcmsr_hba.c phbcmu = acb->pmuC; acb 2426 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->cdb_phyadd_hipart) acb 2427 drivers/scsi/arcmsr/arcmsr_hba.c ccb_cdb_phy = ccb_cdb_phy | acb->cdb_phyadd_hipart; acb 2428 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_cdb = (struct ARCMSR_CDB *)(acb->vir2phy_offset acb 2435 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_drain_donequeue(acb, ccb, error); acb 2445 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaD_postqueue_isr(struct AdapterControlBlock *acb) acb 2455 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->doneq_lock, flags); acb 2456 drivers/scsi/arcmsr/arcmsr_hba.c pmu = acb->pmuD; acb 2472 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->cdb_phyadd_hipart) acb 2473 drivers/scsi/arcmsr/arcmsr_hba.c ccb_cdb_phy = ccb_cdb_phy | acb->cdb_phyadd_hipart; acb 2474 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_cdb = (struct ARCMSR_CDB *)(acb->vir2phy_offset acb 2480 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_drain_donequeue(acb, ccb, error); acb 2488 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->doneq_lock, flags); acb 2491 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaE_postqueue_isr(struct AdapterControlBlock *acb) acb 2500 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->doneq_lock, flags); acb 2501 drivers/scsi/arcmsr/arcmsr_hba.c doneq_index = acb->doneq_index; acb 2502 drivers/scsi/arcmsr/arcmsr_hba.c pmu = acb->pmuE; acb 2504 drivers/scsi/arcmsr/arcmsr_hba.c cmdSMID = acb->pCompletionQ[doneq_index].cmdSMID; acb 2505 drivers/scsi/arcmsr/arcmsr_hba.c ccb = acb->pccb_pool[cmdSMID]; acb 2506 drivers/scsi/arcmsr/arcmsr_hba.c error = (acb->pCompletionQ[doneq_index].cmdFlag acb 2508 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_drain_donequeue(acb, ccb, error); acb 2510 drivers/scsi/arcmsr/arcmsr_hba.c if (doneq_index >= acb->completionQ_entry) acb 2513 drivers/scsi/arcmsr/arcmsr_hba.c acb->doneq_index = doneq_index; acb 2515 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->doneq_lock, flags); acb 2526 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaA_message_isr(struct AdapterControlBlock *acb) acb 2528 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 2531 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_MSG_GET_CONFIG) acb 2532 drivers/scsi/arcmsr/arcmsr_hba.c schedule_work(&acb->arcmsr_do_message_isr_bh); acb 2534 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaB_message_isr(struct AdapterControlBlock *acb) acb 2536 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 2540 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_MSG_GET_CONFIG) acb 2541 drivers/scsi/arcmsr/arcmsr_hba.c schedule_work(&acb->arcmsr_do_message_isr_bh); acb 2552 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaC_message_isr(struct AdapterControlBlock *acb) acb 2554 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *reg = acb->pmuC; acb 2557 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_MSG_GET_CONFIG) acb 2558 drivers/scsi/arcmsr/arcmsr_hba.c schedule_work(&acb->arcmsr_do_message_isr_bh); acb 2561 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaD_message_isr(struct AdapterControlBlock *acb) acb 2563 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 2567 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_MSG_GET_CONFIG) acb 2568 drivers/scsi/arcmsr/arcmsr_hba.c schedule_work(&acb->arcmsr_do_message_isr_bh); acb 2571 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaE_message_isr(struct AdapterControlBlock *acb) acb 2573 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *reg = acb->pmuE; acb 2576 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_MSG_GET_CONFIG) acb 2577 drivers/scsi/arcmsr/arcmsr_hba.c schedule_work(&acb->arcmsr_do_message_isr_bh); acb 2580 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_hbaA_handle_isr(struct AdapterControlBlock *acb) acb 2583 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 2585 drivers/scsi/arcmsr/arcmsr_hba.c acb->outbound_int_enable; acb 2591 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaA_doorbell_isr(acb); acb 2593 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaA_postqueue_isr(acb); acb 2595 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaA_message_isr(acb); acb 2597 drivers/scsi/arcmsr/arcmsr_hba.c acb->outbound_int_enable; acb 2604 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_hbaB_handle_isr(struct AdapterControlBlock *acb) acb 2607 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 2609 drivers/scsi/arcmsr/arcmsr_hba.c acb->outbound_int_enable; acb 2616 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_iop2drv_data_wrote_handle(acb); acb 2618 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_iop2drv_data_read_handle(acb); acb 2620 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaB_postqueue_isr(acb); acb 2622 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaB_message_isr(acb); acb 2624 drivers/scsi/arcmsr/arcmsr_hba.c acb->outbound_int_enable; acb 2708 drivers/scsi/arcmsr/arcmsr_hba.c static irqreturn_t arcmsr_interrupt(struct AdapterControlBlock *acb) acb 2710 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 2712 drivers/scsi/arcmsr/arcmsr_hba.c return arcmsr_hbaA_handle_isr(acb); acb 2715 drivers/scsi/arcmsr/arcmsr_hba.c return arcmsr_hbaB_handle_isr(acb); acb 2718 drivers/scsi/arcmsr/arcmsr_hba.c return arcmsr_hbaC_handle_isr(acb); acb 2720 drivers/scsi/arcmsr/arcmsr_hba.c return arcmsr_hbaD_handle_isr(acb); acb 2722 drivers/scsi/arcmsr/arcmsr_hba.c return arcmsr_hbaE_handle_isr(acb); acb 2728 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_iop_parking(struct AdapterControlBlock *acb) acb 2730 drivers/scsi/arcmsr/arcmsr_hba.c if (acb) { acb 2732 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_MSG_START_BGRB) { acb 2734 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= ~ACB_F_MSG_START_BGRB; acb 2735 drivers/scsi/arcmsr/arcmsr_hba.c intmask_org = arcmsr_disable_outbound_ints(acb); acb 2736 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_stop_adapter_bgrb(acb); acb 2737 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_flush_adapter_cache(acb); acb 2738 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_enable_outbound_ints(acb, intmask_org); acb 2744 drivers/scsi/arcmsr/arcmsr_hba.c void arcmsr_clear_iop2drv_rqueue_buffer(struct AdapterControlBlock *acb) acb 2748 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_IOPDATA_OVERFLOW) { acb 2750 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_IOPDATA_OVERFLOW) { acb 2751 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= ~ACB_F_IOPDATA_OVERFLOW; acb 2752 drivers/scsi/arcmsr/arcmsr_hba.c acb->rqbuf_getIndex = 0; acb 2753 drivers/scsi/arcmsr/arcmsr_hba.c acb->rqbuf_putIndex = 0; acb 2754 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_iop_message_read(acb); acb 2756 drivers/scsi/arcmsr/arcmsr_hba.c } else if (acb->rqbuf_getIndex != acb 2757 drivers/scsi/arcmsr/arcmsr_hba.c acb->rqbuf_putIndex) { acb 2758 drivers/scsi/arcmsr/arcmsr_hba.c acb->rqbuf_getIndex = 0; acb 2759 drivers/scsi/arcmsr/arcmsr_hba.c acb->rqbuf_putIndex = 0; acb 2767 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_iop_message_xfer(struct AdapterControlBlock *acb, acb 2807 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->rqbuffer_lock, flags); acb 2808 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->rqbuf_getIndex != acb->rqbuf_putIndex) { acb 2809 drivers/scsi/arcmsr/arcmsr_hba.c unsigned int tail = acb->rqbuf_getIndex; acb 2810 drivers/scsi/arcmsr/arcmsr_hba.c unsigned int head = acb->rqbuf_putIndex; acb 2818 drivers/scsi/arcmsr/arcmsr_hba.c memcpy(ptmpQbuffer, acb->rqbuffer + tail, allxfer_len); acb 2820 drivers/scsi/arcmsr/arcmsr_hba.c memcpy(ptmpQbuffer, acb->rqbuffer + tail, cnt_to_end); acb 2821 drivers/scsi/arcmsr/arcmsr_hba.c memcpy(ptmpQbuffer + cnt_to_end, acb->rqbuffer, allxfer_len - cnt_to_end); acb 2823 drivers/scsi/arcmsr/arcmsr_hba.c acb->rqbuf_getIndex = (acb->rqbuf_getIndex + allxfer_len) % ARCMSR_MAX_QBUFFER; acb 2827 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_IOPDATA_OVERFLOW) { acb 2829 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= ~ACB_F_IOPDATA_OVERFLOW; acb 2830 drivers/scsi/arcmsr/arcmsr_hba.c prbuffer = arcmsr_get_iop_rqbuffer(acb); acb 2831 drivers/scsi/arcmsr/arcmsr_hba.c if (arcmsr_Read_iop_rqbuffer_data(acb, prbuffer) == 0) acb 2832 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_IOPDATA_OVERFLOW; acb 2834 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->rqbuffer_lock, flags); acb 2837 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->fw_flag == FW_DEADLOCK) acb 2866 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->wqbuffer_lock, flags); acb 2867 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->wqbuf_putIndex != acb->wqbuf_getIndex) { acb 2870 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_write_ioctldata2iop(acb); acb 2879 drivers/scsi/arcmsr/arcmsr_hba.c pQbuffer = &acb->wqbuffer[acb->wqbuf_putIndex]; acb 2880 drivers/scsi/arcmsr/arcmsr_hba.c cnt2end = ARCMSR_MAX_QBUFFER - acb->wqbuf_putIndex; acb 2885 drivers/scsi/arcmsr/arcmsr_hba.c acb->wqbuf_putIndex = 0; acb 2886 drivers/scsi/arcmsr/arcmsr_hba.c pQbuffer = acb->wqbuffer; acb 2889 drivers/scsi/arcmsr/arcmsr_hba.c acb->wqbuf_putIndex += user_len; acb 2890 drivers/scsi/arcmsr/arcmsr_hba.c acb->wqbuf_putIndex %= ARCMSR_MAX_QBUFFER; acb 2891 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_MESSAGE_WQBUFFER_CLEARED) { acb 2892 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= acb 2894 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_write_ioctldata2iop(acb); acb 2897 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->wqbuffer_lock, flags); acb 2899 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->fw_flag == FW_DEADLOCK) acb 2908 drivers/scsi/arcmsr/arcmsr_hba.c uint8_t *pQbuffer = acb->rqbuffer; acb 2910 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_clear_iop2drv_rqueue_buffer(acb); acb 2911 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->rqbuffer_lock, flags); acb 2912 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_MESSAGE_RQBUFFER_CLEARED; acb 2913 drivers/scsi/arcmsr/arcmsr_hba.c acb->rqbuf_getIndex = 0; acb 2914 drivers/scsi/arcmsr/arcmsr_hba.c acb->rqbuf_putIndex = 0; acb 2916 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->rqbuffer_lock, flags); acb 2917 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->fw_flag == FW_DEADLOCK) acb 2926 drivers/scsi/arcmsr/arcmsr_hba.c uint8_t *pQbuffer = acb->wqbuffer; acb 2927 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->wqbuffer_lock, flags); acb 2928 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= (ACB_F_MESSAGE_WQBUFFER_CLEARED | acb 2930 drivers/scsi/arcmsr/arcmsr_hba.c acb->wqbuf_getIndex = 0; acb 2931 drivers/scsi/arcmsr/arcmsr_hba.c acb->wqbuf_putIndex = 0; acb 2933 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->wqbuffer_lock, flags); acb 2934 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->fw_flag == FW_DEADLOCK) acb 2944 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_clear_iop2drv_rqueue_buffer(acb); acb 2945 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->rqbuffer_lock, flags); acb 2946 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_MESSAGE_RQBUFFER_CLEARED; acb 2947 drivers/scsi/arcmsr/arcmsr_hba.c acb->rqbuf_getIndex = 0; acb 2948 drivers/scsi/arcmsr/arcmsr_hba.c acb->rqbuf_putIndex = 0; acb 2949 drivers/scsi/arcmsr/arcmsr_hba.c pQbuffer = acb->rqbuffer; acb 2951 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->rqbuffer_lock, flags); acb 2952 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->wqbuffer_lock, flags); acb 2953 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= (ACB_F_MESSAGE_WQBUFFER_CLEARED | acb 2955 drivers/scsi/arcmsr/arcmsr_hba.c acb->wqbuf_getIndex = 0; acb 2956 drivers/scsi/arcmsr/arcmsr_hba.c acb->wqbuf_putIndex = 0; acb 2957 drivers/scsi/arcmsr/arcmsr_hba.c pQbuffer = acb->wqbuffer; acb 2959 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->wqbuffer_lock, flags); acb 2960 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->fw_flag == FW_DEADLOCK) acb 2969 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->fw_flag == FW_DEADLOCK) acb 2979 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->fw_flag == FW_DEADLOCK) acb 2990 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->fw_flag == FW_DEADLOCK) acb 2996 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_iop_parking(acb); acb 3000 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->fw_flag == FW_DEADLOCK) acb 3006 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_flush_adapter_cache(acb); acb 3021 drivers/scsi/arcmsr/arcmsr_hba.c static struct CommandControlBlock *arcmsr_get_freeccb(struct AdapterControlBlock *acb) acb 3023 drivers/scsi/arcmsr/arcmsr_hba.c struct list_head *head = &acb->ccb_free_list; acb 3026 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->ccblist_lock, flags); acb 3031 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->ccblist_lock, flags); acb 3034 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->ccblist_lock, flags); acb 3038 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_handle_virtual_command(struct AdapterControlBlock *acb, acb 3078 drivers/scsi/arcmsr/arcmsr_hba.c if (arcmsr_iop_message_xfer(acb, cmd)) acb 3092 drivers/scsi/arcmsr/arcmsr_hba.c struct AdapterControlBlock *acb = (struct AdapterControlBlock *) host->hostdata; acb 3096 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_ADAPTER_REMOVED) { acb 3106 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_handle_virtual_command(acb, cmd); acb 3109 drivers/scsi/arcmsr/arcmsr_hba.c ccb = arcmsr_get_freeccb(acb); acb 3112 drivers/scsi/arcmsr/arcmsr_hba.c if (arcmsr_build_ccb( acb, ccb, cmd ) == FAILED) { acb 3117 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_post_ccb(acb, ccb); acb 3166 drivers/scsi/arcmsr/arcmsr_hba.c static bool arcmsr_hbaA_get_config(struct AdapterControlBlock *acb) acb 3168 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 3170 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_wait_firmware_ready(acb); acb 3172 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaA_wait_msgint_ready(acb)) { acb 3174 drivers/scsi/arcmsr/arcmsr_hba.c miscellaneous data' timeout \n", acb->host->host_no); acb 3177 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_get_adapter_config(acb, reg->message_rwbuffer); acb 3180 drivers/scsi/arcmsr/arcmsr_hba.c static bool arcmsr_hbaB_get_config(struct AdapterControlBlock *acb) acb 3182 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 3184 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_wait_firmware_ready(acb); acb 3186 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaB_wait_msgint_ready(acb)) { acb 3187 drivers/scsi/arcmsr/arcmsr_hba.c printk(KERN_ERR "arcmsr%d: can't set driver mode.\n", acb->host->host_no); acb 3191 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaB_wait_msgint_ready(acb)) { acb 3193 drivers/scsi/arcmsr/arcmsr_hba.c miscellaneous data' timeout \n", acb->host->host_no); acb 3196 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_get_adapter_config(acb, reg->message_rwbuffer); acb 3223 drivers/scsi/arcmsr/arcmsr_hba.c static bool arcmsr_hbaD_get_config(struct AdapterControlBlock *acb) acb 3225 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 3227 drivers/scsi/arcmsr/arcmsr_hba.c if (readl(acb->pmuD->outbound_doorbell) & acb 3230 drivers/scsi/arcmsr/arcmsr_hba.c acb->pmuD->outbound_doorbell);/*clear interrupt*/ acb 3232 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_wait_firmware_ready(acb); acb 3236 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaD_wait_msgint_ready(acb)) { acb 3238 drivers/scsi/arcmsr/arcmsr_hba.c "miscellaneous data timeout\n", acb->host->host_no); acb 3241 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_get_adapter_config(acb, reg->msgcode_rwbuffer); acb 3271 drivers/scsi/arcmsr/arcmsr_hba.c static bool arcmsr_get_firmware_spec(struct AdapterControlBlock *acb) acb 3275 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 3277 drivers/scsi/arcmsr/arcmsr_hba.c rtn = arcmsr_hbaA_get_config(acb); acb 3280 drivers/scsi/arcmsr/arcmsr_hba.c rtn = arcmsr_hbaB_get_config(acb); acb 3283 drivers/scsi/arcmsr/arcmsr_hba.c rtn = arcmsr_hbaC_get_config(acb); acb 3286 drivers/scsi/arcmsr/arcmsr_hba.c rtn = arcmsr_hbaD_get_config(acb); acb 3289 drivers/scsi/arcmsr/arcmsr_hba.c rtn = arcmsr_hbaE_get_config(acb); acb 3294 drivers/scsi/arcmsr/arcmsr_hba.c acb->maxOutstanding = acb->firm_numbers_queue - 1; acb 3295 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->host->can_queue >= acb->firm_numbers_queue) acb 3296 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->can_queue = acb->maxOutstanding; acb 3298 drivers/scsi/arcmsr/arcmsr_hba.c acb->maxOutstanding = acb->host->can_queue; acb 3299 drivers/scsi/arcmsr/arcmsr_hba.c acb->maxFreeCCB = acb->host->can_queue; acb 3300 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->maxFreeCCB < ARCMSR_MAX_FREECCB_NUM) acb 3301 drivers/scsi/arcmsr/arcmsr_hba.c acb->maxFreeCCB += 64; acb 3305 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_hbaA_polling_ccbdone(struct AdapterControlBlock *acb, acb 3308 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 3318 drivers/scsi/arcmsr/arcmsr_hba.c outbound_intstatus = readl(®->outbound_intstatus) & acb->outbound_int_enable; acb 3335 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->cdb_phyadd_hipart) acb 3336 drivers/scsi/arcmsr/arcmsr_hba.c ccb_cdb_phy = ccb_cdb_phy | acb->cdb_phyadd_hipart; acb 3337 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_cdb = (struct ARCMSR_CDB *)(acb->vir2phy_offset + ccb_cdb_phy); acb 3340 drivers/scsi/arcmsr/arcmsr_hba.c if ((ccb->acb != acb) || (ccb->startdone != ARCMSR_CCB_START)) { acb 3344 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no acb 3355 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no acb 3357 drivers/scsi/arcmsr/arcmsr_hba.c , atomic_read(&acb->ccboutstandingcount)); acb 3361 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_report_ccb_state(acb, ccb, error); acb 3366 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_hbaB_polling_ccbdone(struct AdapterControlBlock *acb, acb 3369 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 3404 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->cdb_phyadd_hipart) acb 3405 drivers/scsi/arcmsr/arcmsr_hba.c ccb_cdb_phy = ccb_cdb_phy | acb->cdb_phyadd_hipart; acb 3406 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_cdb = (struct ARCMSR_CDB *)(acb->vir2phy_offset + ccb_cdb_phy); acb 3409 drivers/scsi/arcmsr/arcmsr_hba.c if ((ccb->acb != acb) || (ccb->startdone != ARCMSR_CCB_START)) { acb 3413 drivers/scsi/arcmsr/arcmsr_hba.c ,acb->host->host_no acb 3424 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no acb 3426 drivers/scsi/arcmsr/arcmsr_hba.c , atomic_read(&acb->ccboutstandingcount)); acb 3430 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_report_ccb_state(acb, ccb, error); acb 3435 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_hbaC_polling_ccbdone(struct AdapterControlBlock *acb, acb 3438 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *reg = acb->pmuC; acb 3465 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->cdb_phyadd_hipart) acb 3466 drivers/scsi/arcmsr/arcmsr_hba.c ccb_cdb_phy = ccb_cdb_phy | acb->cdb_phyadd_hipart; acb 3467 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_cdb = (struct ARCMSR_CDB *)(acb->vir2phy_offset + ccb_cdb_phy); acb 3471 drivers/scsi/arcmsr/arcmsr_hba.c if ((pCCB->acb != acb) || (pCCB->startdone != ARCMSR_CCB_START)) { acb 3475 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no acb 3486 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no acb 3488 drivers/scsi/arcmsr/arcmsr_hba.c , atomic_read(&acb->ccboutstandingcount)); acb 3492 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_report_ccb_state(acb, pCCB, error); acb 3497 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_hbaD_polling_ccbdone(struct AdapterControlBlock *acb, acb 3506 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *pmu = acb->pmuD; acb 3511 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->doneq_lock, flags); acb 3515 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->doneq_lock, flags); acb 3534 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->doneq_lock, flags); acb 3539 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->cdb_phyadd_hipart) acb 3540 drivers/scsi/arcmsr/arcmsr_hba.c ccb_cdb_phy = ccb_cdb_phy | acb->cdb_phyadd_hipart; acb 3541 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_cdb = (struct ARCMSR_CDB *)(acb->vir2phy_offset + acb 3546 drivers/scsi/arcmsr/arcmsr_hba.c if ((pCCB->acb != acb) || acb 3552 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no acb 3563 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no acb 3565 drivers/scsi/arcmsr/arcmsr_hba.c , atomic_read(&acb->ccboutstandingcount)); acb 3570 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_report_ccb_state(acb, pCCB, error); acb 3575 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_hbaE_polling_ccbdone(struct AdapterControlBlock *acb, acb 3584 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *reg = acb->pmuE; acb 3589 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->doneq_lock, flags); acb 3590 drivers/scsi/arcmsr/arcmsr_hba.c doneq_index = acb->doneq_index; acb 3593 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->doneq_lock, flags); acb 3606 drivers/scsi/arcmsr/arcmsr_hba.c cmdSMID = acb->pCompletionQ[doneq_index].cmdSMID; acb 3608 drivers/scsi/arcmsr/arcmsr_hba.c if (doneq_index >= acb->completionQ_entry) acb 3610 drivers/scsi/arcmsr/arcmsr_hba.c acb->doneq_index = doneq_index; acb 3611 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->doneq_lock, flags); acb 3612 drivers/scsi/arcmsr/arcmsr_hba.c pCCB = acb->pccb_pool[cmdSMID]; acb 3615 drivers/scsi/arcmsr/arcmsr_hba.c if ((pCCB->acb != acb) || (pCCB->startdone != ARCMSR_CCB_START)) { acb 3620 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no acb 3631 drivers/scsi/arcmsr/arcmsr_hba.c , acb->host->host_no acb 3633 drivers/scsi/arcmsr/arcmsr_hba.c , atomic_read(&acb->ccboutstandingcount)); acb 3636 drivers/scsi/arcmsr/arcmsr_hba.c error = (acb->pCompletionQ[doneq_index].cmdFlag & acb 3638 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_report_ccb_state(acb, pCCB, error); acb 3644 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_polling_ccbdone(struct AdapterControlBlock *acb, acb 3648 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 3651 drivers/scsi/arcmsr/arcmsr_hba.c rtn = arcmsr_hbaA_polling_ccbdone(acb, poll_ccb); acb 3656 drivers/scsi/arcmsr/arcmsr_hba.c rtn = arcmsr_hbaB_polling_ccbdone(acb, poll_ccb); acb 3660 drivers/scsi/arcmsr/arcmsr_hba.c rtn = arcmsr_hbaC_polling_ccbdone(acb, poll_ccb); acb 3664 drivers/scsi/arcmsr/arcmsr_hba.c rtn = arcmsr_hbaD_polling_ccbdone(acb, poll_ccb); acb 3667 drivers/scsi/arcmsr/arcmsr_hba.c rtn = arcmsr_hbaE_polling_ccbdone(acb, poll_ccb); acb 3755 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_iop_confirm(struct AdapterControlBlock *acb) acb 3766 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 3769 drivers/scsi/arcmsr/arcmsr_hba.c dma_coherent_handle = acb->dma_coherent_handle2; acb 3772 drivers/scsi/arcmsr/arcmsr_hba.c dma_coherent_handle = acb->dma_coherent_handle + acb 3776 drivers/scsi/arcmsr/arcmsr_hba.c dma_coherent_handle = acb->dma_coherent_handle; acb 3781 drivers/scsi/arcmsr/arcmsr_hba.c acb->cdb_phyaddr_hi32 = cdb_phyaddr_hi32; acb 3782 drivers/scsi/arcmsr/arcmsr_hba.c acb->cdb_phyadd_hipart = ((uint64_t)cdb_phyaddr_hi32) << 32; acb 3788 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 3792 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 3798 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaA_wait_msgint_ready(acb)) { acb 3801 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->host_no); acb 3811 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 3815 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaB_wait_msgint_ready(acb)) { acb 3817 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->host_no); acb 3833 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaB_wait_msgint_ready(acb)) { acb 3835 drivers/scsi/arcmsr/arcmsr_hba.c timeout \n",acb->host->host_no); acb 3839 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaB_wait_msgint_ready(acb)) { acb 3841 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->host_no); acb 3847 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *reg = acb->pmuC; acb 3850 drivers/scsi/arcmsr/arcmsr_hba.c acb->adapter_index, cdb_phyaddr_hi32); acb 3855 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaC_wait_msgint_ready(acb)) { acb 3857 drivers/scsi/arcmsr/arcmsr_hba.c timeout \n", acb->host->host_no); acb 3864 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 3875 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaD_wait_msgint_ready(acb)) { acb 3877 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->host_no); acb 3883 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *reg = acb->pmuE; acb 3888 drivers/scsi/arcmsr/arcmsr_hba.c writel(acb->ccbsize, ®->msgcode_rwbuffer[4]); acb 3889 drivers/scsi/arcmsr/arcmsr_hba.c dma_coherent_handle = acb->dma_coherent_handle2; acb 3894 drivers/scsi/arcmsr/arcmsr_hba.c writel(acb->ioqueue_size, ®->msgcode_rwbuffer[7]); acb 3896 drivers/scsi/arcmsr/arcmsr_hba.c acb->out_doorbell ^= ARCMSR_HBEMU_DRV2IOP_MESSAGE_CMD_DONE; acb 3897 drivers/scsi/arcmsr/arcmsr_hba.c writel(acb->out_doorbell, ®->iobound_doorbell); acb 3898 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaE_wait_msgint_ready(acb)) { acb 3900 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->host_no); acb 3909 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_wait_firmware_ready(struct AdapterControlBlock *acb) acb 3912 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 3915 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 3917 drivers/scsi/arcmsr/arcmsr_hba.c if (!(acb->acb_flags & ACB_F_IOP_INITED)) acb 3925 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 3927 drivers/scsi/arcmsr/arcmsr_hba.c if (!(acb->acb_flags & ACB_F_IOP_INITED)) acb 3935 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *reg = acb->pmuC; acb 3937 drivers/scsi/arcmsr/arcmsr_hba.c if (!(acb->acb_flags & ACB_F_IOP_INITED)) acb 3944 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 3946 drivers/scsi/arcmsr/arcmsr_hba.c if (!(acb->acb_flags & ACB_F_IOP_INITED)) acb 3954 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *reg = acb->pmuE; acb 3956 drivers/scsi/arcmsr/arcmsr_hba.c if (!(acb->acb_flags & ACB_F_IOP_INITED)) acb 3967 drivers/scsi/arcmsr/arcmsr_hba.c struct AdapterControlBlock *acb = from_timer(acb, t, eternal_timer); acb 3968 drivers/scsi/arcmsr/arcmsr_hba.c if (unlikely(atomic_read(&acb->rq_map_token) == 0) || acb 3969 drivers/scsi/arcmsr/arcmsr_hba.c (acb->acb_flags & ACB_F_BUS_RESET) || acb 3970 drivers/scsi/arcmsr/arcmsr_hba.c (acb->acb_flags & ACB_F_ABORT)) { acb 3971 drivers/scsi/arcmsr/arcmsr_hba.c mod_timer(&acb->eternal_timer, acb 3974 drivers/scsi/arcmsr/arcmsr_hba.c acb->fw_flag = FW_NORMAL; acb 3975 drivers/scsi/arcmsr/arcmsr_hba.c if (atomic_read(&acb->ante_token_value) == acb 3976 drivers/scsi/arcmsr/arcmsr_hba.c atomic_read(&acb->rq_map_token)) { acb 3977 drivers/scsi/arcmsr/arcmsr_hba.c atomic_set(&acb->rq_map_token, 16); acb 3979 drivers/scsi/arcmsr/arcmsr_hba.c atomic_set(&acb->ante_token_value, acb 3980 drivers/scsi/arcmsr/arcmsr_hba.c atomic_read(&acb->rq_map_token)); acb 3981 drivers/scsi/arcmsr/arcmsr_hba.c if (atomic_dec_and_test(&acb->rq_map_token)) { acb 3982 drivers/scsi/arcmsr/arcmsr_hba.c mod_timer(&acb->eternal_timer, jiffies + acb 3986 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 3988 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 3993 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 3998 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *reg = acb->pmuC; acb 4004 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 4009 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *reg = acb->pmuE; acb 4011 drivers/scsi/arcmsr/arcmsr_hba.c acb->out_doorbell ^= ARCMSR_HBEMU_DRV2IOP_MESSAGE_CMD_DONE; acb 4012 drivers/scsi/arcmsr/arcmsr_hba.c writel(acb->out_doorbell, ®->iobound_doorbell); acb 4018 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_MSG_GET_CONFIG; acb 4019 drivers/scsi/arcmsr/arcmsr_hba.c mod_timer(&acb->eternal_timer, jiffies + msecs_to_jiffies(6 * HZ)); acb 4023 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaA_start_bgrb(struct AdapterControlBlock *acb) acb 4025 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 4026 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_MSG_START_BGRB; acb 4028 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaA_wait_msgint_ready(acb)) { acb 4030 drivers/scsi/arcmsr/arcmsr_hba.c rebuild' timeout \n", acb->host->host_no); acb 4034 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hbaB_start_bgrb(struct AdapterControlBlock *acb) acb 4036 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 4037 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_MSG_START_BGRB; acb 4039 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaB_wait_msgint_ready(acb)) { acb 4041 drivers/scsi/arcmsr/arcmsr_hba.c rebuild' timeout \n",acb->host->host_no); acb 4084 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_start_adapter_bgrb(struct AdapterControlBlock *acb) acb 4086 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 4088 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaA_start_bgrb(acb); acb 4091 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaB_start_bgrb(acb); acb 4094 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaC_start_bgrb(acb); acb 4097 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaD_start_bgrb(acb); acb 4100 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hbaE_start_bgrb(acb); acb 4105 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_clear_doorbell_queue_buffer(struct AdapterControlBlock *acb) acb 4107 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 4109 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 4120 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 4137 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *reg = acb->pmuC; acb 4158 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 4180 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *reg = acb->pmuE; acb 4183 drivers/scsi/arcmsr/arcmsr_hba.c acb->in_doorbell = readl(®->iobound_doorbell); acb 4185 drivers/scsi/arcmsr/arcmsr_hba.c acb->out_doorbell ^= ARCMSR_HBEMU_DRV2IOP_DATA_READ_OK; acb 4186 drivers/scsi/arcmsr/arcmsr_hba.c writel(acb->out_doorbell, ®->iobound_doorbell); acb 4189 drivers/scsi/arcmsr/arcmsr_hba.c tmp = acb->in_doorbell; acb 4190 drivers/scsi/arcmsr/arcmsr_hba.c acb->in_doorbell = readl(®->iobound_doorbell); acb 4191 drivers/scsi/arcmsr/arcmsr_hba.c if((tmp ^ acb->in_doorbell) & ARCMSR_HBEMU_IOP2DRV_DATA_WRITE_OK) { acb 4193 drivers/scsi/arcmsr/arcmsr_hba.c acb->out_doorbell ^= ARCMSR_HBEMU_DRV2IOP_DATA_READ_OK; acb 4194 drivers/scsi/arcmsr/arcmsr_hba.c writel(acb->out_doorbell, ®->iobound_doorbell); acb 4203 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_enable_eoi_mode(struct AdapterControlBlock *acb) acb 4205 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->adapter_type) { acb 4210 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 4212 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_hbaB_wait_msgint_ready(acb)) { acb 4224 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_hardware_reset(struct AdapterControlBlock *acb) acb 4228 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *pmuA = acb->pmuA; acb 4229 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *pmuC = acb->pmuC; acb 4230 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *pmuD = acb->pmuD; acb 4233 drivers/scsi/arcmsr/arcmsr_hba.c printk(KERN_NOTICE "arcmsr%d: executing hw bus reset .....\n", acb->host->host_no); acb 4235 drivers/scsi/arcmsr/arcmsr_hba.c pci_read_config_byte(acb->pdev, i, &value[i]); acb 4238 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->dev_id == 0x1680) { acb 4240 drivers/scsi/arcmsr/arcmsr_hba.c } else if (acb->dev_id == 0x1880) { acb 4251 drivers/scsi/arcmsr/arcmsr_hba.c } else if (acb->dev_id == 0x1884) { acb 4252 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *pmuE = acb->pmuE; acb 4264 drivers/scsi/arcmsr/arcmsr_hba.c } else if (acb->dev_id == 0x1214) { acb 4267 drivers/scsi/arcmsr/arcmsr_hba.c pci_write_config_byte(acb->pdev, 0x84, 0x20); acb 4272 drivers/scsi/arcmsr/arcmsr_hba.c pci_write_config_byte(acb->pdev, i, value[i]); acb 4278 drivers/scsi/arcmsr/arcmsr_hba.c static bool arcmsr_reset_in_progress(struct AdapterControlBlock *acb) acb 4282 drivers/scsi/arcmsr/arcmsr_hba.c switch(acb->adapter_type) { acb 4284 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_A __iomem *reg = acb->pmuA; acb 4290 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_B *reg = acb->pmuB; acb 4296 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_C __iomem *reg = acb->pmuC; acb 4301 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_D *reg = acb->pmuD; acb 4307 drivers/scsi/arcmsr/arcmsr_hba.c struct MessageUnit_E __iomem *reg = acb->pmuE; acb 4316 drivers/scsi/arcmsr/arcmsr_hba.c static void arcmsr_iop_init(struct AdapterControlBlock *acb) acb 4320 drivers/scsi/arcmsr/arcmsr_hba.c intmask_org = arcmsr_disable_outbound_ints(acb); acb 4321 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_wait_firmware_ready(acb); acb 4322 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_iop_confirm(acb); acb 4324 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_start_adapter_bgrb(acb); acb 4326 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_clear_doorbell_queue_buffer(acb); acb 4327 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_enable_eoi_mode(acb); acb 4329 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_enable_outbound_ints(acb, intmask_org); acb 4330 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_IOP_INITED; acb 4333 drivers/scsi/arcmsr/arcmsr_hba.c static uint8_t arcmsr_iop_reset(struct AdapterControlBlock *acb) acb 4341 drivers/scsi/arcmsr/arcmsr_hba.c if (atomic_read(&acb->ccboutstandingcount) != 0) { acb 4343 drivers/scsi/arcmsr/arcmsr_hba.c intmask_org = arcmsr_disable_outbound_ints(acb); acb 4345 drivers/scsi/arcmsr/arcmsr_hba.c rtnval = arcmsr_abort_allcmd(acb); acb 4347 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_done4abort_postqueue(acb); acb 4348 drivers/scsi/arcmsr/arcmsr_hba.c for (i = 0; i < acb->maxFreeCCB; i++) { acb 4349 drivers/scsi/arcmsr/arcmsr_hba.c ccb = acb->pccb_pool[i]; acb 4354 drivers/scsi/arcmsr/arcmsr_hba.c spin_lock_irqsave(&acb->ccblist_lock, flags); acb 4355 drivers/scsi/arcmsr/arcmsr_hba.c list_add_tail(&ccb->list, &acb->ccb_free_list); acb 4356 drivers/scsi/arcmsr/arcmsr_hba.c spin_unlock_irqrestore(&acb->ccblist_lock, flags); acb 4359 drivers/scsi/arcmsr/arcmsr_hba.c atomic_set(&acb->ccboutstandingcount, 0); acb 4361 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_enable_outbound_ints(acb, intmask_org); acb 4369 drivers/scsi/arcmsr/arcmsr_hba.c struct AdapterControlBlock *acb; acb 4372 drivers/scsi/arcmsr/arcmsr_hba.c acb = (struct AdapterControlBlock *) cmd->device->host->hostdata; acb 4373 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_ADAPTER_REMOVED) acb 4376 drivers/scsi/arcmsr/arcmsr_hba.c " num_aborts = %d \n", acb->num_resets, acb->num_aborts); acb 4377 drivers/scsi/arcmsr/arcmsr_hba.c acb->num_resets++; acb 4379 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_BUS_RESET) { acb 4382 drivers/scsi/arcmsr/arcmsr_hba.c timeout = wait_event_timeout(wait_q, (acb->acb_flags acb 4387 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_BUS_RESET; acb 4388 drivers/scsi/arcmsr/arcmsr_hba.c if (!arcmsr_iop_reset(acb)) { acb 4389 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_hardware_reset(acb); acb 4390 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= ~ACB_F_IOP_INITED; acb 4393 drivers/scsi/arcmsr/arcmsr_hba.c if (arcmsr_reset_in_progress(acb)) { acb 4395 drivers/scsi/arcmsr/arcmsr_hba.c acb->fw_flag = FW_DEADLOCK; acb 4398 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->host_no); acb 4404 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_iop_init(acb); acb 4405 drivers/scsi/arcmsr/arcmsr_hba.c atomic_set(&acb->rq_map_token, 16); acb 4406 drivers/scsi/arcmsr/arcmsr_hba.c atomic_set(&acb->ante_token_value, 16); acb 4407 drivers/scsi/arcmsr/arcmsr_hba.c acb->fw_flag = FW_NORMAL; acb 4408 drivers/scsi/arcmsr/arcmsr_hba.c mod_timer(&acb->eternal_timer, jiffies + acb 4410 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= ~ACB_F_BUS_RESET; acb 4414 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= ~ACB_F_BUS_RESET; acb 4415 drivers/scsi/arcmsr/arcmsr_hba.c atomic_set(&acb->rq_map_token, 16); acb 4416 drivers/scsi/arcmsr/arcmsr_hba.c atomic_set(&acb->ante_token_value, 16); acb 4417 drivers/scsi/arcmsr/arcmsr_hba.c acb->fw_flag = FW_NORMAL; acb 4418 drivers/scsi/arcmsr/arcmsr_hba.c mod_timer(&acb->eternal_timer, jiffies + acb 4425 drivers/scsi/arcmsr/arcmsr_hba.c static int arcmsr_abort_one_cmd(struct AdapterControlBlock *acb, acb 4429 drivers/scsi/arcmsr/arcmsr_hba.c rtn = arcmsr_polling_ccbdone(acb, ccb); acb 4435 drivers/scsi/arcmsr/arcmsr_hba.c struct AdapterControlBlock *acb = acb 4441 drivers/scsi/arcmsr/arcmsr_hba.c if (acb->acb_flags & ACB_F_ADAPTER_REMOVED) acb 4445 drivers/scsi/arcmsr/arcmsr_hba.c acb->host->host_no, cmd->device->id, (u32)cmd->device->lun); acb 4446 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags |= ACB_F_ABORT; acb 4447 drivers/scsi/arcmsr/arcmsr_hba.c acb->num_aborts++; acb 4454 drivers/scsi/arcmsr/arcmsr_hba.c if (!atomic_read(&acb->ccboutstandingcount)) { acb 4455 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= ~ACB_F_ABORT; acb 4459 drivers/scsi/arcmsr/arcmsr_hba.c intmask_org = arcmsr_disable_outbound_ints(acb); acb 4460 drivers/scsi/arcmsr/arcmsr_hba.c for (i = 0; i < acb->maxFreeCCB; i++) { acb 4461 drivers/scsi/arcmsr/arcmsr_hba.c struct CommandControlBlock *ccb = acb->pccb_pool[i]; acb 4464 drivers/scsi/arcmsr/arcmsr_hba.c rtn = arcmsr_abort_one_cmd(acb, ccb); acb 4468 drivers/scsi/arcmsr/arcmsr_hba.c acb->acb_flags &= ~ACB_F_ABORT; acb 4469 drivers/scsi/arcmsr/arcmsr_hba.c arcmsr_enable_outbound_ints(acb, intmask_org); acb 4475 drivers/scsi/arcmsr/arcmsr_hba.c struct AdapterControlBlock *acb = acb 4480 drivers/scsi/arcmsr/arcmsr_hba.c switch (acb->pdev->device) { acb 156 drivers/scsi/dc395x.c #define DC395x_read8(acb,address) (u8)(inb(acb->io_port_base + (address))) acb 157 drivers/scsi/dc395x.c #define DC395x_read16(acb,address) (u16)(inw(acb->io_port_base + (address))) acb 158 drivers/scsi/dc395x.c #define DC395x_read32(acb,address) (u32)(inl(acb->io_port_base + (address))) acb 159 drivers/scsi/dc395x.c #define DC395x_write8(acb,address,value) outb((value), acb->io_port_base + (address)) acb 160 drivers/scsi/dc395x.c #define DC395x_write16(acb,address,value) outw((value), acb->io_port_base + (address)) acb 161 drivers/scsi/dc395x.c #define DC395x_write32(acb,address,value) outl((value), acb->io_port_base + (address)) acb 271 drivers/scsi/dc395x.c struct AdapterCtlBlk *acb; acb 344 drivers/scsi/dc395x.c static void data_out_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 346 drivers/scsi/dc395x.c static void data_in_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 348 drivers/scsi/dc395x.c static void command_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 350 drivers/scsi/dc395x.c static void status_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 352 drivers/scsi/dc395x.c static void msgout_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 354 drivers/scsi/dc395x.c static void msgin_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 356 drivers/scsi/dc395x.c static void data_out_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 358 drivers/scsi/dc395x.c static void data_in_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 360 drivers/scsi/dc395x.c static void command_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 362 drivers/scsi/dc395x.c static void status_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 364 drivers/scsi/dc395x.c static void msgout_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 366 drivers/scsi/dc395x.c static void msgin_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 368 drivers/scsi/dc395x.c static void nop0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 370 drivers/scsi/dc395x.c static void nop1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 372 drivers/scsi/dc395x.c static void set_basic_config(struct AdapterCtlBlk *acb); acb 373 drivers/scsi/dc395x.c static void cleanup_after_transfer(struct AdapterCtlBlk *acb, acb 375 drivers/scsi/dc395x.c static void reset_scsi_bus(struct AdapterCtlBlk *acb); acb 376 drivers/scsi/dc395x.c static void data_io_transfer(struct AdapterCtlBlk *acb, acb 378 drivers/scsi/dc395x.c static void disconnect(struct AdapterCtlBlk *acb); acb 379 drivers/scsi/dc395x.c static void reselect(struct AdapterCtlBlk *acb); acb 380 drivers/scsi/dc395x.c static u8 start_scsi(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb, acb 382 drivers/scsi/dc395x.c static inline void enable_msgout_abort(struct AdapterCtlBlk *acb, acb 386 drivers/scsi/dc395x.c static void doing_srb_done(struct AdapterCtlBlk *acb, u8 did_code, acb 388 drivers/scsi/dc395x.c static void scsi_reset_detect(struct AdapterCtlBlk *acb); acb 389 drivers/scsi/dc395x.c static void pci_unmap_srb(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb); acb 390 drivers/scsi/dc395x.c static void pci_unmap_srb_sense(struct AdapterCtlBlk *acb, acb 392 drivers/scsi/dc395x.c static void srb_done(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb, acb 394 drivers/scsi/dc395x.c static void request_sense(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb, acb 396 drivers/scsi/dc395x.c static void set_xfer_rate(struct AdapterCtlBlk *acb, acb 757 drivers/scsi/dc395x.c static void waiting_set_timer(struct AdapterCtlBlk *acb, unsigned long to) acb 759 drivers/scsi/dc395x.c if (timer_pending(&acb->waiting_timer)) acb 761 drivers/scsi/dc395x.c if (time_before(jiffies + to, acb->last_reset - HZ / 2)) acb 762 drivers/scsi/dc395x.c acb->waiting_timer.expires = acb 763 drivers/scsi/dc395x.c acb->last_reset - HZ / 2 + 1; acb 765 drivers/scsi/dc395x.c acb->waiting_timer.expires = jiffies + to + 1; acb 766 drivers/scsi/dc395x.c add_timer(&acb->waiting_timer); acb 771 drivers/scsi/dc395x.c static void waiting_process_next(struct AdapterCtlBlk *acb) acb 777 drivers/scsi/dc395x.c struct list_head *dcb_list_head = &acb->dcb_list; acb 779 drivers/scsi/dc395x.c if (acb->active_dcb acb 780 drivers/scsi/dc395x.c || (acb->acb_flag & (RESET_DETECT + RESET_DONE + RESET_DEV))) acb 783 drivers/scsi/dc395x.c if (timer_pending(&acb->waiting_timer)) acb 784 drivers/scsi/dc395x.c del_timer(&acb->waiting_timer); acb 794 drivers/scsi/dc395x.c if (dcb == acb->dcb_run_robin) { acb 801 drivers/scsi/dc395x.c acb->dcb_run_robin = start; acb 814 drivers/scsi/dc395x.c acb->dcb_run_robin = dcb_get_next(dcb_list_head, acb 815 drivers/scsi/dc395x.c acb->dcb_run_robin); acb 826 drivers/scsi/dc395x.c if (!start_scsi(acb, pos, srb)) acb 829 drivers/scsi/dc395x.c waiting_set_timer(acb, HZ/50); acb 840 drivers/scsi/dc395x.c struct AdapterCtlBlk *acb = from_timer(acb, t, waiting_timer); acb 842 drivers/scsi/dc395x.c "waiting_timeout: Queue woken up by timer. acb=%p\n", acb); acb 843 drivers/scsi/dc395x.c DC395x_LOCK_IO(acb->scsi_host, flags); acb 844 drivers/scsi/dc395x.c waiting_process_next(acb); acb 845 drivers/scsi/dc395x.c DC395x_UNLOCK_IO(acb->scsi_host, flags); acb 850 drivers/scsi/dc395x.c static struct DeviceCtlBlk *find_dcb(struct AdapterCtlBlk *acb, u8 id, u8 lun) acb 852 drivers/scsi/dc395x.c return acb->children[id][lun]; acb 857 drivers/scsi/dc395x.c static void send_srb(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb) acb 862 drivers/scsi/dc395x.c acb->active_dcb || acb 863 drivers/scsi/dc395x.c (acb->acb_flag & (RESET_DETECT + RESET_DONE + RESET_DEV))) { acb 865 drivers/scsi/dc395x.c waiting_process_next(acb); acb 869 drivers/scsi/dc395x.c if (!start_scsi(acb, dcb, srb)) { acb 873 drivers/scsi/dc395x.c waiting_set_timer(acb, HZ / 50); acb 949 drivers/scsi/dc395x.c srb->sg_bus_addr = dma_map_single(&dcb->acb->dev->dev, acb 983 drivers/scsi/dc395x.c struct AdapterCtlBlk *acb = acb 992 drivers/scsi/dc395x.c if (cmd->device->id >= acb->scsi_host->max_id || acb 993 drivers/scsi/dc395x.c cmd->device->lun >= acb->scsi_host->max_lun || acb 999 drivers/scsi/dc395x.c if (!(acb->dcb_map[cmd->device->id] & (1 << cmd->device->lun))) { acb 1006 drivers/scsi/dc395x.c dcb = find_dcb(acb, cmd->device->id, cmd->device->lun); acb 1018 drivers/scsi/dc395x.c srb = list_first_entry_or_null(&acb->srb_free_list, acb 1035 drivers/scsi/dc395x.c waiting_process_next(acb); acb 1038 drivers/scsi/dc395x.c send_srb(acb, srb); acb 1064 drivers/scsi/dc395x.c struct AdapterCtlBlk *acb; acb 1068 drivers/scsi/dc395x.c acb = (struct AdapterCtlBlk *)sdev->host->hostdata; acb 1073 drivers/scsi/dc395x.c if ((acb->gmode2 & NAC_GREATER_1G) && (cylinders > 1024)) { acb 1088 drivers/scsi/dc395x.c static void dump_register_info(struct AdapterCtlBlk *acb, acb 1092 drivers/scsi/dc395x.c struct pci_dev *dev = acb->dev; acb 1095 drivers/scsi/dc395x.c dcb = acb->active_dcb; acb 1113 drivers/scsi/dc395x.c (acb->active_dcb) ? "" : "not"); acb 1119 drivers/scsi/dc395x.c DC395x_read16(acb, TRM_S1040_SCSI_STATUS), acb 1120 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT), acb 1121 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_SIGNAL), acb 1122 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS), acb 1123 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_SYNC), acb 1124 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_TARGETID), acb 1125 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_IDMSG), acb 1126 drivers/scsi/dc395x.c DC395x_read32(acb, TRM_S1040_SCSI_COUNTER), acb 1127 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_INTEN), acb 1128 drivers/scsi/dc395x.c DC395x_read16(acb, TRM_S1040_SCSI_CONFIG0), acb 1129 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_CONFIG2), acb 1130 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_COMMAND), acb 1131 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_TIMEOUT)); acb 1135 drivers/scsi/dc395x.c DC395x_read16(acb, TRM_S1040_DMA_COMMAND), acb 1136 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_DMA_FIFOCNT), acb 1137 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT), acb 1138 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_DMA_STATUS), acb 1139 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_DMA_INTEN), acb 1140 drivers/scsi/dc395x.c DC395x_read16(acb, TRM_S1040_DMA_CONFIG), acb 1141 drivers/scsi/dc395x.c DC395x_read32(acb, TRM_S1040_DMA_XCNT), acb 1142 drivers/scsi/dc395x.c DC395x_read32(acb, TRM_S1040_DMA_CXCNT), acb 1143 drivers/scsi/dc395x.c DC395x_read32(acb, TRM_S1040_DMA_XHIGHADDR), acb 1144 drivers/scsi/dc395x.c DC395x_read32(acb, TRM_S1040_DMA_XLOWADDR)); acb 1147 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_GEN_CONTROL), acb 1148 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_GEN_STATUS), acb 1149 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_GEN_TIMER), acb 1154 drivers/scsi/dc395x.c static inline void clear_fifo(struct AdapterCtlBlk *acb, char *txt) acb 1157 drivers/scsi/dc395x.c u8 lines = DC395x_read8(acb, TRM_S1040_SCSI_SIGNAL); acb 1158 drivers/scsi/dc395x.c u8 fifocnt = DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT); acb 1164 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_CLRFIFO); acb 1168 drivers/scsi/dc395x.c static void reset_dev_param(struct AdapterCtlBlk *acb) acb 1171 drivers/scsi/dc395x.c struct NvRamType *eeprom = &acb->eeprom; acb 1172 drivers/scsi/dc395x.c dprintkdbg(DBG_0, "reset_dev_param: acb=%p\n", acb); acb 1174 drivers/scsi/dc395x.c list_for_each_entry(dcb, &acb->dcb_list, list) { acb 1185 drivers/scsi/dc395x.c || !(acb->config & HCC_WIDE_CARD)) acb 1198 drivers/scsi/dc395x.c struct AdapterCtlBlk *acb = acb 1204 drivers/scsi/dc395x.c if (timer_pending(&acb->waiting_timer)) acb 1205 drivers/scsi/dc395x.c del_timer(&acb->waiting_timer); acb 1210 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_DMA_INTEN, 0x00); acb 1211 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_INTEN, 0x00); acb 1212 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_CONTROL, DO_RSTMODULE); acb 1213 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_DMA_CONTROL, DMARESETMODULE); acb 1215 drivers/scsi/dc395x.c reset_scsi_bus(acb); acb 1219 drivers/scsi/dc395x.c acb->last_reset = acb 1221 drivers/scsi/dc395x.c HZ * acb->eeprom.delay_time; acb 1227 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_DMA_CONTROL, CLRXFIFO); acb 1228 drivers/scsi/dc395x.c clear_fifo(acb, "eh_bus_reset"); acb 1230 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS); acb 1231 drivers/scsi/dc395x.c set_basic_config(acb); acb 1233 drivers/scsi/dc395x.c reset_dev_param(acb); acb 1234 drivers/scsi/dc395x.c doing_srb_done(acb, DID_RESET, cmd, 0); acb 1235 drivers/scsi/dc395x.c acb->active_dcb = NULL; acb 1236 drivers/scsi/dc395x.c acb->acb_flag = 0; /* RESET_DETECT, RESET_DONE ,RESET_DEV */ acb 1237 drivers/scsi/dc395x.c waiting_process_next(acb); acb 1264 drivers/scsi/dc395x.c struct AdapterCtlBlk *acb = acb 1271 drivers/scsi/dc395x.c dcb = find_dcb(acb, cmd->device->id, cmd->device->lun); acb 1280 drivers/scsi/dc395x.c pci_unmap_srb_sense(acb, srb); acb 1281 drivers/scsi/dc395x.c pci_unmap_srb(acb, srb); acb 1283 drivers/scsi/dc395x.c list_add_tail(&srb->list, &acb->srb_free_list); acb 1300 drivers/scsi/dc395x.c static void build_sdtr(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb, acb 1328 drivers/scsi/dc395x.c static void build_wdtr(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb, acb 1332 drivers/scsi/dc395x.c (acb->config & HCC_WIDE_CARD)) ? 1 : 0; acb 1355 drivers/scsi/dc395x.c static void selto_timer(struct AdapterCtlBlk *acb) acb 1357 drivers/scsi/dc395x.c if (timer_pending(&acb->selto_timer)) acb 1359 drivers/scsi/dc395x.c acb->selto_timer.function = selection_timeout_missed; acb 1360 drivers/scsi/dc395x.c acb->selto_timer.data = (unsigned long) acb; acb 1362 drivers/scsi/dc395x.c (jiffies + HZ, acb->last_reset + HZ / 2)) acb 1363 drivers/scsi/dc395x.c acb->selto_timer.expires = acb 1364 drivers/scsi/dc395x.c acb->last_reset + HZ / 2 + 1; acb 1366 drivers/scsi/dc395x.c acb->selto_timer.expires = jiffies + HZ + 1; acb 1367 drivers/scsi/dc395x.c add_timer(&acb->selto_timer); acb 1374 drivers/scsi/dc395x.c struct AdapterCtlBlk *acb = (struct AdapterCtlBlk *)ptr; acb 1377 drivers/scsi/dc395x.c if (!acb->active_dcb || !acb->active_dcb->active_srb) { acb 1381 drivers/scsi/dc395x.c DC395x_LOCK_IO(acb->scsi_host, flags); acb 1382 drivers/scsi/dc395x.c srb = acb->active_dcb->active_srb; acb 1383 drivers/scsi/dc395x.c disconnect(acb); acb 1384 drivers/scsi/dc395x.c DC395x_UNLOCK_IO(acb->scsi_host, flags); acb 1389 drivers/scsi/dc395x.c static u8 start_scsi(struct AdapterCtlBlk* acb, struct DeviceCtlBlk* dcb, acb 1400 drivers/scsi/dc395x.c s_stat = DC395x_read8(acb, TRM_S1040_SCSI_SIGNAL); acb 1402 drivers/scsi/dc395x.c s_stat2 = DC395x_read16(acb, TRM_S1040_SCSI_STATUS); acb 1421 drivers/scsi/dc395x.c if (acb->active_dcb) { acb 1425 drivers/scsi/dc395x.c acb->active_dcb->active_srb ? acb 1426 drivers/scsi/dc395x.c acb->active_dcb->active_srb->cmd : 0); acb 1429 drivers/scsi/dc395x.c if (DC395x_read16(acb, TRM_S1040_SCSI_STATUS) & SCSIINTERRUPT) { acb 1435 drivers/scsi/dc395x.c if (time_before(jiffies, acb->last_reset - HZ / 2)) { acb 1441 drivers/scsi/dc395x.c clear_fifo(acb, "start_scsi"); acb 1442 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_HOSTID, acb->scsi_host->this_id); acb 1443 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_TARGETID, dcb->target_id); acb 1444 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_SYNC, dcb->sync_period); acb 1445 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_OFFSET, dcb->sync_offset); acb 1469 drivers/scsi/dc395x.c build_wdtr(acb, dcb, srb); acb 1475 drivers/scsi/dc395x.c build_sdtr(acb, dcb, srb); acb 1480 drivers/scsi/dc395x.c build_wdtr(acb, dcb, srb); acb 1486 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, identify_message); acb 1507 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, acb 1512 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, MSG_SIMPLE_QTAG); acb 1513 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, tag_number); acb 1526 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, REQUEST_SENSE); acb 1527 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, (dcb->target_lun << 5)); acb 1528 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 0); acb 1529 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 0); acb 1530 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, SCSI_SENSE_BUFFERSIZE); acb 1531 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 0); acb 1535 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, *ptr++); acb 1538 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, acb 1540 drivers/scsi/dc395x.c if (DC395x_read16(acb, TRM_S1040_SCSI_STATUS) & SCSIINTERRUPT) { acb 1560 drivers/scsi/dc395x.c acb->active_dcb = dcb; acb 1563 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, acb 1566 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, scsicommand); acb 1573 drivers/scsi/dc395x.c DC395x_write16 (acb, TRM_S1040_SCSI_CONTROL, DO_SETATN); \ acb 1578 drivers/scsi/dc395x.c static inline void enable_msgout_abort(struct AdapterCtlBlk *acb, acb 1596 drivers/scsi/dc395x.c static void dc395x_handle_interrupt(struct AdapterCtlBlk *acb, acb 1607 drivers/scsi/dc395x.c DC395x_LOCK_IO(acb->scsi_host, flags); acb 1610 drivers/scsi/dc395x.c scsi_intstatus = DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS); acb 1620 drivers/scsi/dc395x.c if (timer_pending(&acb->selto_timer)) acb 1621 drivers/scsi/dc395x.c del_timer(&acb->selto_timer); acb 1624 drivers/scsi/dc395x.c disconnect(acb); /* bus free interrupt */ acb 1628 drivers/scsi/dc395x.c reselect(acb); acb 1636 drivers/scsi/dc395x.c scsi_reset_detect(acb); acb 1640 drivers/scsi/dc395x.c dcb = acb->active_dcb; acb 1650 drivers/scsi/dc395x.c enable_msgout_abort(acb, srb); acb 1670 drivers/scsi/dc395x.c dc395x_statev(acb, srb, &scsi_status); acb 1693 drivers/scsi/dc395x.c dc395x_statev(acb, srb, &scsi_status); acb 1696 drivers/scsi/dc395x.c DC395x_UNLOCK_IO(acb->scsi_host, flags); acb 1702 drivers/scsi/dc395x.c struct AdapterCtlBlk *acb = dev_id; acb 1710 drivers/scsi/dc395x.c scsi_status = DC395x_read16(acb, TRM_S1040_SCSI_STATUS); acb 1711 drivers/scsi/dc395x.c dma_status = DC395x_read8(acb, TRM_S1040_DMA_STATUS); acb 1714 drivers/scsi/dc395x.c dc395x_handle_interrupt(acb, scsi_status); acb 1722 drivers/scsi/dc395x.c if (acb->active_dcb) { acb 1723 drivers/scsi/dc395x.c acb->active_dcb-> flag |= ABORT_DEV_; acb 1724 drivers/scsi/dc395x.c if (acb->active_dcb->active_srb) acb 1725 drivers/scsi/dc395x.c enable_msgout_abort(acb, acb->active_dcb->active_srb); acb 1727 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_DMA_CONTROL, ABORTXFER | CLRXFIFO); acb 1730 drivers/scsi/dc395x.c acb = NULL; acb 1739 drivers/scsi/dc395x.c static void msgout_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 1746 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */ acb 1751 drivers/scsi/dc395x.c static void msgout_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 1758 drivers/scsi/dc395x.c clear_fifo(acb, "msgout_phase1"); acb 1768 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, MSG_NOP); acb 1769 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */ acb 1770 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_FIFO_OUT); acb 1775 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, *ptr++); acb 1780 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_FIFO_OUT); acb 1784 drivers/scsi/dc395x.c static void command_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 1788 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); acb 1792 drivers/scsi/dc395x.c static void command_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 1800 drivers/scsi/dc395x.c clear_fifo(acb, "command_phase1"); acb 1801 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_CLRATN); acb 1805 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, *ptr); acb 1809 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, REQUEST_SENSE); acb 1810 drivers/scsi/dc395x.c dcb = acb->active_dcb; acb 1812 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, (dcb->target_lun << 5)); acb 1813 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 0); acb 1814 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 0); acb 1815 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, SCSI_SENSE_BUFFERSIZE); acb 1816 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 0); acb 1820 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); acb 1822 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_FIFO_OUT); acb 1872 drivers/scsi/dc395x.c dma_sync_single_for_cpu(&srb->dcb->acb->dev->dev, acb 1878 drivers/scsi/dc395x.c dma_sync_single_for_device(&srb->dcb->acb->dev->dev, acb 1909 drivers/scsi/dc395x.c static void cleanup_after_transfer(struct AdapterCtlBlk *acb, acb 1913 drivers/scsi/dc395x.c if (DC395x_read16(acb, TRM_S1040_DMA_COMMAND) & 0x0001) { /* read */ acb 1914 drivers/scsi/dc395x.c if (!(DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT) & 0x40)) acb 1915 drivers/scsi/dc395x.c clear_fifo(acb, "cleanup/in"); acb 1916 drivers/scsi/dc395x.c if (!(DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT) & 0x80)) acb 1917 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_DMA_CONTROL, CLRXFIFO); acb 1919 drivers/scsi/dc395x.c if (!(DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT) & 0x80)) acb 1920 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_DMA_CONTROL, CLRXFIFO); acb 1921 drivers/scsi/dc395x.c if (!(DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT) & 0x40)) acb 1922 drivers/scsi/dc395x.c clear_fifo(acb, "cleanup/out"); acb 1924 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); acb 1935 drivers/scsi/dc395x.c static void data_out_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 1959 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_DMA_FIFOCNT), acb 1960 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT), acb 1961 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT), acb 1962 drivers/scsi/dc395x.c DC395x_read32(acb, TRM_S1040_SCSI_COUNTER), scsi_status, acb 1964 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_DMA_CONTROL, STOPDMAXFER | CLRXFIFO); acb 1982 drivers/scsi/dc395x.c (u32)(DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT) & acb 1990 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT), acb 1992 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT), acb 1993 drivers/scsi/dc395x.c DC395x_read32(acb, TRM_S1040_SCSI_COUNTER), acb 1994 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_DMA_FIFOCNT), acb 1995 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT), acb 1996 drivers/scsi/dc395x.c DC395x_read32(acb, TRM_S1040_DMA_CXCNT)); acb 2009 drivers/scsi/dc395x.c DC395x_read32(acb, TRM_S1040_SCSI_COUNTER); acb 2063 drivers/scsi/dc395x.c cleanup_after_transfer(acb, srb); acb 2068 drivers/scsi/dc395x.c static void data_out_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 2073 drivers/scsi/dc395x.c clear_fifo(acb, "data_out_phase1"); acb 2075 drivers/scsi/dc395x.c data_io_transfer(acb, srb, XFERDATAOUT); acb 2078 drivers/scsi/dc395x.c static void data_in_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 2114 drivers/scsi/dc395x.c if (!(DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT) & 0x80)) { acb 2123 drivers/scsi/dc395x.c (DC395x_read16(acb, TRM_S1040_DMA_FIFOSTAT) & acb 2135 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_DMA_FIFOCNT), acb 2136 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT)); acb 2139 drivers/scsi/dc395x.c sc = DC395x_read32(acb, TRM_S1040_SCSI_COUNTER); acb 2140 drivers/scsi/dc395x.c fc = DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT); acb 2152 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_DMA_FIFOSTAT), acb 2153 drivers/scsi/dc395x.c DC395x_read32(acb, TRM_S1040_DMA_CXCNT), acb 2170 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_CONFIG2, acb 2189 drivers/scsi/dc395x.c byte = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); acb 2200 drivers/scsi/dc395x.c fc = DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT); acb 2213 drivers/scsi/dc395x.c u8 byte = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); acb 2221 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_CONFIG2, 0); acb 2245 drivers/scsi/dc395x.c (u32)(DC395x_read8(acb, TRM_S1040_SCSI_FIFOCNT) & acb 2264 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_DMA_STATUS); acb 2286 drivers/scsi/dc395x.c cleanup_after_transfer(acb, srb); acb 2291 drivers/scsi/dc395x.c static void data_in_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 2296 drivers/scsi/dc395x.c data_io_transfer(acb, srb, XFERDATAIN); acb 2300 drivers/scsi/dc395x.c static void data_io_transfer(struct AdapterCtlBlk *acb, acb 2310 drivers/scsi/dc395x.c if (srb == acb->tmp_srb) acb 2318 drivers/scsi/dc395x.c u8 dma_status = DC395x_read8(acb, TRM_S1040_DMA_STATUS); acb 2326 drivers/scsi/dc395x.c dump_register_info(acb, dcb, srb); acb 2327 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_DMA_CONTROL, CLRXFIFO); acb 2335 drivers/scsi/dc395x.c DC395x_write32(acb, TRM_S1040_DMA_XHIGHADDR, 0); acb 2338 drivers/scsi/dc395x.c DC395x_write32(acb, TRM_S1040_DMA_XLOWADDR, acb 2343 drivers/scsi/dc395x.c DC395x_write32(acb, TRM_S1040_DMA_XCNT, acb 2348 drivers/scsi/dc395x.c DC395x_write32(acb, TRM_S1040_DMA_XLOWADDR, acb 2350 drivers/scsi/dc395x.c DC395x_write32(acb, TRM_S1040_DMA_XCNT, acb 2354 drivers/scsi/dc395x.c DC395x_write32(acb, TRM_S1040_SCSI_COUNTER, acb 2356 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */ acb 2358 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, acb 2360 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_DMA_COMMAND, io_dir); acb 2362 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_DMA_COMMAND, io_dir); acb 2363 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, acb 2376 drivers/scsi/dc395x.c DC395x_write32(acb, TRM_S1040_SCSI_COUNTER, acb 2378 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */ acb 2380 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, acb 2387 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_CONFIG2, acb 2408 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, *virt++); acb 2418 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 0); acb 2422 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_CONFIG2, 0); acb 2427 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, acb 2444 drivers/scsi/dc395x.c DC395x_write32(acb, TRM_S1040_SCSI_COUNTER, 2); acb 2445 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_CONFIG2, acb 2448 drivers/scsi/dc395x.c data = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); acb 2449 drivers/scsi/dc395x.c data2 = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); acb 2454 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 'K'); acb 2455 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 'G'); acb 2457 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_CONFIG2, 0); acb 2459 drivers/scsi/dc395x.c DC395x_write32(acb, TRM_S1040_SCSI_COUNTER, 1); acb 2463 drivers/scsi/dc395x.c data = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); acb 2465 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_FIFO, 'K'); acb 2468 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */ acb 2471 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, bval); acb 2476 drivers/scsi/dc395x.c static void status_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 2481 drivers/scsi/dc395x.c srb->target_status = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); acb 2482 drivers/scsi/dc395x.c srb->end_message = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); /* get message */ acb 2485 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */ acb 2486 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_MSGACCEPT); acb 2490 drivers/scsi/dc395x.c static void status_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 2496 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */ acb 2497 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_COMP); acb 2516 drivers/scsi/dc395x.c static inline void msgin_reject(struct AdapterCtlBlk *acb, acb 2530 drivers/scsi/dc395x.c static struct ScsiReqBlk *msgin_qtag(struct AdapterCtlBlk *acb, acb 2558 drivers/scsi/dc395x.c enable_msgout_abort(acb, srb); acb 2564 drivers/scsi/dc395x.c memcpy(srb->msgin_buf, dcb->active_srb->msgin_buf, acb->msg_len); acb 2572 drivers/scsi/dc395x.c srb = acb->tmp_srb; acb 2583 drivers/scsi/dc395x.c static inline void reprogram_regs(struct AdapterCtlBlk *acb, acb 2586 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_TARGETID, dcb->target_id); acb 2587 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_SYNC, dcb->sync_period); acb 2588 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_OFFSET, dcb->sync_offset); acb 2589 drivers/scsi/dc395x.c set_xfer_rate(acb, dcb); acb 2594 drivers/scsi/dc395x.c static void msgin_set_async(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb) acb 2606 drivers/scsi/dc395x.c reprogram_regs(acb, dcb); acb 2609 drivers/scsi/dc395x.c build_wdtr(acb, dcb, srb); acb 2617 drivers/scsi/dc395x.c static void msgin_set_sync(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb) acb 2678 drivers/scsi/dc395x.c build_wdtr(acb, dcb, srb); acb 2686 drivers/scsi/dc395x.c reprogram_regs(acb, dcb); acb 2690 drivers/scsi/dc395x.c static inline void msgin_set_nowide(struct AdapterCtlBlk *acb, acb 2700 drivers/scsi/dc395x.c reprogram_regs(acb, dcb); acb 2703 drivers/scsi/dc395x.c build_sdtr(acb, dcb, srb); acb 2709 drivers/scsi/dc395x.c static void msgin_set_wide(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb) acb 2713 drivers/scsi/dc395x.c && acb->config & HCC_WIDE_CARD) ? 1 : 0; acb 2739 drivers/scsi/dc395x.c reprogram_regs(acb, dcb); acb 2742 drivers/scsi/dc395x.c build_sdtr(acb, dcb, srb); acb 2761 drivers/scsi/dc395x.c static void msgin_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 2764 drivers/scsi/dc395x.c struct DeviceCtlBlk *dcb = acb->active_dcb; acb 2767 drivers/scsi/dc395x.c srb->msgin_buf[acb->msg_len++] = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); acb 2768 drivers/scsi/dc395x.c if (msgin_completed(srb->msgin_buf, acb->msg_len)) { acb 2779 drivers/scsi/dc395x.c msgin_qtag(acb, dcb, acb 2784 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, acb 2788 drivers/scsi/dc395x.c msgin_set_async(acb, srb); acb 2793 drivers/scsi/dc395x.c msgin_set_nowide(acb, srb); acb 2796 drivers/scsi/dc395x.c enable_msgout_abort(acb, srb); acb 2804 drivers/scsi/dc395x.c msgin_set_sync(acb, srb); acb 2811 drivers/scsi/dc395x.c msgin_set_wide(acb, srb); acb 2814 drivers/scsi/dc395x.c msgin_reject(acb, srb); acb 2846 drivers/scsi/dc395x.c enable_msgout_abort(acb, srb); acb 2859 drivers/scsi/dc395x.c msgin_reject(acb, srb); acb 2864 drivers/scsi/dc395x.c acb->msg_len = 0; acb 2867 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important ... you know! */ acb 2868 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_MSGACCEPT); acb 2872 drivers/scsi/dc395x.c static void msgin_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 2876 drivers/scsi/dc395x.c clear_fifo(acb, "msgin_phase1"); acb 2877 drivers/scsi/dc395x.c DC395x_write32(acb, TRM_S1040_SCSI_COUNTER, 1); acb 2882 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */ acb 2884 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_FIFO_IN); acb 2888 drivers/scsi/dc395x.c static void nop0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 2894 drivers/scsi/dc395x.c static void nop1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, acb 2900 drivers/scsi/dc395x.c static void set_xfer_rate(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb) acb 2908 drivers/scsi/dc395x.c if (acb->scan_devices) { acb 2913 drivers/scsi/dc395x.c list_for_each_entry(i, &acb->dcb_list, list) acb 2923 drivers/scsi/dc395x.c static void disconnect(struct AdapterCtlBlk *acb) acb 2925 drivers/scsi/dc395x.c struct DeviceCtlBlk *dcb = acb->active_dcb; acb 2932 drivers/scsi/dc395x.c acb->last_reset = acb 2934 drivers/scsi/dc395x.c HZ * acb->eeprom.delay_time; acb 2935 drivers/scsi/dc395x.c clear_fifo(acb, "disconnectEx"); acb 2936 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_HWRESELECT); acb 2940 drivers/scsi/dc395x.c acb->active_dcb = NULL; acb 2944 drivers/scsi/dc395x.c clear_fifo(acb, "disconnect"); acb 2945 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_HWRESELECT); acb 2951 drivers/scsi/dc395x.c waiting_process_next(acb); acb 2954 drivers/scsi/dc395x.c acb->last_reset = jiffies + HZ / 2 + 1; acb 2956 drivers/scsi/dc395x.c doing_srb_done(acb, DID_ABORT, srb->cmd, 1); acb 2957 drivers/scsi/dc395x.c waiting_process_next(acb); acb 2981 drivers/scsi/dc395x.c || acb->scan_devices) { acb 2991 drivers/scsi/dc395x.c waiting_set_timer(acb, HZ / 20); acb 2994 drivers/scsi/dc395x.c u8 bval = DC395x_read8(acb, TRM_S1040_SCSI_SIGNAL); acb 3004 drivers/scsi/dc395x.c waiting_process_next(acb); acb 3013 drivers/scsi/dc395x.c srb_done(acb, dcb, srb); acb 3019 drivers/scsi/dc395x.c static void reselect(struct AdapterCtlBlk *acb) acb 3021 drivers/scsi/dc395x.c struct DeviceCtlBlk *dcb = acb->active_dcb; acb 3026 drivers/scsi/dc395x.c dprintkdbg(DBG_0, "reselect: acb=%p\n", acb); acb 3028 drivers/scsi/dc395x.c clear_fifo(acb, "reselect"); acb 3031 drivers/scsi/dc395x.c rsel_tar_lun_id = DC395x_read16(acb, TRM_S1040_SCSI_TARGETID); acb 3037 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */ acb 3041 drivers/scsi/dc395x.c if (!acb->scan_devices) { acb 3046 drivers/scsi/dc395x.c DC395x_read16(acb, TRM_S1040_SCSI_STATUS)); acb 3053 drivers/scsi/dc395x.c waiting_set_timer(acb, HZ / 20); acb 3064 drivers/scsi/dc395x.c dcb = find_dcb(acb, id, lun); acb 3068 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */ acb 3071 drivers/scsi/dc395x.c acb->active_dcb = dcb; acb 3079 drivers/scsi/dc395x.c srb = acb->tmp_srb; acb 3091 drivers/scsi/dc395x.c srb = acb->tmp_srb; acb 3094 drivers/scsi/dc395x.c enable_msgout_abort(acb, srb); acb 3098 drivers/scsi/dc395x.c enable_msgout_abort(acb, srb); acb 3108 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_HOSTID, acb->scsi_host->this_id); /* host ID */ acb 3109 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_TARGETID, dcb->target_id); /* target ID */ acb 3110 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_OFFSET, dcb->sync_offset); /* offset */ acb 3111 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_SYNC, dcb->sync_period); /* sync period, wide */ acb 3112 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */ acb 3114 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_MSGACCEPT); acb 3146 drivers/scsi/dc395x.c dcb->acb->tag_max_num; acb 3155 drivers/scsi/dc395x.c static void add_dev(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb, acb 3166 drivers/scsi/dc395x.c static void pci_unmap_srb(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb) acb 3175 drivers/scsi/dc395x.c dma_unmap_single(&acb->dev->dev, srb->sg_bus_addr, SEGMENTX_LEN, acb 3186 drivers/scsi/dc395x.c static void pci_unmap_srb_sense(struct AdapterCtlBlk *acb, acb 3194 drivers/scsi/dc395x.c dma_unmap_single(&acb->dev->dev, srb->segment_x[0].address, acb 3209 drivers/scsi/dc395x.c static void srb_done(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb, acb 3225 drivers/scsi/dc395x.c pci_unmap_srb_sense(acb, srb); acb 3238 drivers/scsi/dc395x.c dcb->target_lun, status, acb->scan_devices); acb 3244 drivers/scsi/dc395x.c dcb->target_lun, status, acb->scan_devices); acb 3250 drivers/scsi/dc395x.c dcb->target_lun, status, acb->scan_devices); acb 3256 drivers/scsi/dc395x.c dcb->target_lun, status, acb->scan_devices); acb 3262 drivers/scsi/dc395x.c dcb->target_lun, status, acb->scan_devices); acb 3304 drivers/scsi/dc395x.c request_sense(acb, dcb, srb); acb 3315 drivers/scsi/dc395x.c waiting_set_timer(acb, HZ / 20); acb 3354 drivers/scsi/dc395x.c pci_unmap_srb(acb, srb); acb 3377 drivers/scsi/dc395x.c add_dev(acb, dcb, ptr); acb 3399 drivers/scsi/dc395x.c if (srb != acb->tmp_srb) { acb 3403 drivers/scsi/dc395x.c list_move_tail(&srb->list, &acb->srb_free_list); acb 3409 drivers/scsi/dc395x.c waiting_process_next(acb); acb 3414 drivers/scsi/dc395x.c static void doing_srb_done(struct AdapterCtlBlk *acb, u8 did_flag, acb 3420 drivers/scsi/dc395x.c list_for_each_entry(dcb, &acb->dcb_list, list) { acb 3436 drivers/scsi/dc395x.c list_add_tail(&srb->list, &acb->srb_free_list); acb 3438 drivers/scsi/dc395x.c pci_unmap_srb_sense(acb, srb); acb 3439 drivers/scsi/dc395x.c pci_unmap_srb(acb, srb); acb 3464 drivers/scsi/dc395x.c list_move_tail(&srb->list, &acb->srb_free_list); acb 3466 drivers/scsi/dc395x.c pci_unmap_srb_sense(acb, srb); acb 3467 drivers/scsi/dc395x.c pci_unmap_srb(acb, srb); acb 3484 drivers/scsi/dc395x.c static void reset_scsi_bus(struct AdapterCtlBlk *acb) acb 3486 drivers/scsi/dc395x.c dprintkdbg(DBG_0, "reset_scsi_bus: acb=%p\n", acb); acb 3487 drivers/scsi/dc395x.c acb->acb_flag |= RESET_DEV; /* RESET_DETECT, RESET_DONE, RESET_DEV */ acb 3488 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_RSTSCSI); acb 3490 drivers/scsi/dc395x.c while (!(DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS) & INT_SCSIRESET)) acb 3495 drivers/scsi/dc395x.c static void set_basic_config(struct AdapterCtlBlk *acb) acb 3499 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_TIMEOUT, acb->sel_timeout); acb 3500 drivers/scsi/dc395x.c if (acb->config & HCC_PARITY) acb 3505 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_CONFIG0, bval); acb 3508 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_CONFIG1, 0x03); /* was 0x13: default */ acb 3510 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_HOSTID, acb->scsi_host->this_id); acb 3512 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_OFFSET, 0x00); acb 3514 drivers/scsi/dc395x.c wval = DC395x_read16(acb, TRM_S1040_GEN_CONTROL) & 0x7F; acb 3515 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_GEN_CONTROL, wval); acb 3517 drivers/scsi/dc395x.c wval = DC395x_read16(acb, TRM_S1040_DMA_CONFIG) & ~DMA_FIFO_CTRL; acb 3520 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_DMA_CONFIG, wval); acb 3522 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS); acb 3524 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_INTEN, 0x7F); acb 3525 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_DMA_INTEN, EN_SCSIINTR | EN_DMAXFERERROR acb 3531 drivers/scsi/dc395x.c static void scsi_reset_detect(struct AdapterCtlBlk *acb) acb 3533 drivers/scsi/dc395x.c dprintkl(KERN_INFO, "scsi_reset_detect: acb=%p\n", acb); acb 3535 drivers/scsi/dc395x.c if (timer_pending(&acb->waiting_timer)) acb 3536 drivers/scsi/dc395x.c del_timer(&acb->waiting_timer); acb 3538 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_CONTROL, DO_RSTMODULE); acb 3539 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_DMA_CONTROL, DMARESETMODULE); acb 3543 drivers/scsi/dc395x.c acb->last_reset = acb 3545 drivers/scsi/dc395x.c HZ * acb->eeprom.delay_time; acb 3547 drivers/scsi/dc395x.c clear_fifo(acb, "scsi_reset_detect"); acb 3548 drivers/scsi/dc395x.c set_basic_config(acb); acb 3552 drivers/scsi/dc395x.c if (acb->acb_flag & RESET_DEV) { /* RESET_DETECT, RESET_DONE, RESET_DEV */ acb 3553 drivers/scsi/dc395x.c acb->acb_flag |= RESET_DONE; acb 3555 drivers/scsi/dc395x.c acb->acb_flag |= RESET_DETECT; acb 3556 drivers/scsi/dc395x.c reset_dev_param(acb); acb 3557 drivers/scsi/dc395x.c doing_srb_done(acb, DID_RESET, NULL, 1); acb 3559 drivers/scsi/dc395x.c acb->active_dcb = NULL; acb 3560 drivers/scsi/dc395x.c acb->acb_flag = 0; acb 3561 drivers/scsi/dc395x.c waiting_process_next(acb); acb 3566 drivers/scsi/dc395x.c static void request_sense(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb, acb 3590 drivers/scsi/dc395x.c srb->segment_x[0].address = dma_map_single(&acb->dev->dev, acb 3599 drivers/scsi/dc395x.c if (start_scsi(acb, dcb, srb)) { /* Should only happen, if sb. else grabs the bus */ acb 3604 drivers/scsi/dc395x.c waiting_set_timer(acb, HZ / 100); acb 3622 drivers/scsi/dc395x.c static struct DeviceCtlBlk *device_alloc(struct AdapterCtlBlk *acb, acb 3625 drivers/scsi/dc395x.c struct NvRamType *eeprom = &acb->eeprom; acb 3633 drivers/scsi/dc395x.c dcb->acb = NULL; acb 3657 drivers/scsi/dc395x.c && (acb->config & HCC_WIDE_CARD)) acb 3668 drivers/scsi/dc395x.c list_for_each_entry(p, &acb->dcb_list, list) acb 3691 drivers/scsi/dc395x.c static void adapter_add_device(struct AdapterCtlBlk *acb, acb 3695 drivers/scsi/dc395x.c dcb->acb = acb; acb 3698 drivers/scsi/dc395x.c if (list_empty(&acb->dcb_list)) acb 3699 drivers/scsi/dc395x.c acb->dcb_run_robin = dcb; acb 3702 drivers/scsi/dc395x.c list_add_tail(&dcb->list, &acb->dcb_list); acb 3705 drivers/scsi/dc395x.c acb->dcb_map[dcb->target_id] |= (1 << dcb->target_lun); acb 3706 drivers/scsi/dc395x.c acb->children[dcb->target_id][dcb->target_lun] = dcb; acb 3719 drivers/scsi/dc395x.c static void adapter_remove_device(struct AdapterCtlBlk *acb, acb 3728 drivers/scsi/dc395x.c if (acb->active_dcb == dcb) acb 3729 drivers/scsi/dc395x.c acb->active_dcb = NULL; acb 3730 drivers/scsi/dc395x.c if (acb->dcb_run_robin == dcb) acb 3731 drivers/scsi/dc395x.c acb->dcb_run_robin = dcb_get_next(&acb->dcb_list, dcb); acb 3734 drivers/scsi/dc395x.c list_for_each_entry_safe(i, tmp, &acb->dcb_list, list) acb 3741 drivers/scsi/dc395x.c acb->dcb_map[dcb->target_id] &= ~(1 << dcb->target_lun); acb 3742 drivers/scsi/dc395x.c acb->children[dcb->target_id][dcb->target_lun] = NULL; acb 3743 drivers/scsi/dc395x.c dcb->acb = NULL; acb 3754 drivers/scsi/dc395x.c static void adapter_remove_and_free_device(struct AdapterCtlBlk *acb, acb 3764 drivers/scsi/dc395x.c adapter_remove_device(acb, dcb); acb 3775 drivers/scsi/dc395x.c static void adapter_remove_and_free_all_devices(struct AdapterCtlBlk* acb) acb 3780 drivers/scsi/dc395x.c list_size(&acb->dcb_list)); acb 3782 drivers/scsi/dc395x.c list_for_each_entry_safe(dcb, tmp, &acb->dcb_list, list) acb 3783 drivers/scsi/dc395x.c adapter_remove_and_free_device(acb, dcb); acb 3796 drivers/scsi/dc395x.c struct AdapterCtlBlk *acb = (struct AdapterCtlBlk *)scsi_device->host->hostdata; acb 3799 drivers/scsi/dc395x.c dcb = device_alloc(acb, scsi_device->id, scsi_device->lun); acb 3802 drivers/scsi/dc395x.c adapter_add_device(acb, dcb); acb 3816 drivers/scsi/dc395x.c struct AdapterCtlBlk *acb = (struct AdapterCtlBlk *)scsi_device->host->hostdata; acb 3817 drivers/scsi/dc395x.c struct DeviceCtlBlk *dcb = find_dcb(acb, scsi_device->id, scsi_device->lun); acb 3819 drivers/scsi/dc395x.c adapter_remove_and_free_device(acb, dcb); acb 4141 drivers/scsi/dc395x.c static void adapter_sg_tables_free(struct AdapterCtlBlk *acb) acb 4147 drivers/scsi/dc395x.c kfree(acb->srb_array[i].segment_x); acb 4154 drivers/scsi/dc395x.c static int adapter_sg_tables_alloc(struct AdapterCtlBlk *acb) acb 4165 drivers/scsi/dc395x.c acb->srb_array[i].segment_x = NULL; acb 4171 drivers/scsi/dc395x.c adapter_sg_tables_free(acb); acb 4178 drivers/scsi/dc395x.c acb->srb_array[srb_idx++].segment_x = acb 4182 drivers/scsi/dc395x.c acb->srb.segment_x = acb 4200 drivers/scsi/dc395x.c static void adapter_print_config(struct AdapterCtlBlk *acb) acb 4204 drivers/scsi/dc395x.c bval = DC395x_read8(acb, TRM_S1040_GEN_STATUS); acb 4216 drivers/scsi/dc395x.c bval = DC395x_read8(acb, TRM_S1040_GEN_CONTROL); acb 4244 drivers/scsi/dc395x.c static void adapter_init_params(struct AdapterCtlBlk *acb) acb 4246 drivers/scsi/dc395x.c struct NvRamType *eeprom = &acb->eeprom; acb 4253 drivers/scsi/dc395x.c INIT_LIST_HEAD(&acb->dcb_list); acb 4254 drivers/scsi/dc395x.c acb->dcb_run_robin = NULL; acb 4255 drivers/scsi/dc395x.c acb->active_dcb = NULL; acb 4257 drivers/scsi/dc395x.c INIT_LIST_HEAD(&acb->srb_free_list); acb 4259 drivers/scsi/dc395x.c acb->tmp_srb = &acb->srb; acb 4260 drivers/scsi/dc395x.c timer_setup(&acb->waiting_timer, waiting_timeout, 0); acb 4261 drivers/scsi/dc395x.c timer_setup(&acb->selto_timer, NULL, 0); acb 4263 drivers/scsi/dc395x.c acb->srb_count = DC395x_MAX_SRB_CNT; acb 4265 drivers/scsi/dc395x.c acb->sel_timeout = DC395x_SEL_TIMEOUT; /* timeout=250ms */ acb 4268 drivers/scsi/dc395x.c acb->tag_max_num = 1 << eeprom->max_tag; acb 4269 drivers/scsi/dc395x.c if (acb->tag_max_num > 30) acb 4270 drivers/scsi/dc395x.c acb->tag_max_num = 30; acb 4272 drivers/scsi/dc395x.c acb->acb_flag = 0; /* RESET_DETECT, RESET_DONE, RESET_DEV */ acb 4273 drivers/scsi/dc395x.c acb->gmode2 = eeprom->channel_cfg; acb 4274 drivers/scsi/dc395x.c acb->config = 0; /* NOTE: actually set in adapter_init_chip */ acb 4277 drivers/scsi/dc395x.c acb->lun_chk = 1; acb 4278 drivers/scsi/dc395x.c acb->scan_devices = 1; acb 4280 drivers/scsi/dc395x.c acb->scsi_host->this_id = eeprom->scsi_id; acb 4281 drivers/scsi/dc395x.c acb->hostid_bit = (1 << acb->scsi_host->this_id); acb 4284 drivers/scsi/dc395x.c acb->dcb_map[i] = 0; acb 4286 drivers/scsi/dc395x.c acb->msg_len = 0; acb 4289 drivers/scsi/dc395x.c for (i = 0; i < acb->srb_count - 1; i++) acb 4290 drivers/scsi/dc395x.c list_add_tail(&acb->srb_array[i].list, &acb->srb_free_list); acb 4308 drivers/scsi/dc395x.c struct AdapterCtlBlk *acb = (struct AdapterCtlBlk *)host->hostdata; acb 4309 drivers/scsi/dc395x.c struct NvRamType *eeprom = &acb->eeprom; acb 4315 drivers/scsi/dc395x.c host->io_port = acb->io_port_base; acb 4316 drivers/scsi/dc395x.c host->n_io_port = acb->io_port_len; acb 4318 drivers/scsi/dc395x.c host->unique_id = acb->io_port_base; acb 4319 drivers/scsi/dc395x.c host->irq = acb->irq_level; acb 4320 drivers/scsi/dc395x.c acb->last_reset = jiffies; acb 4342 drivers/scsi/dc395x.c static void adapter_init_chip(struct AdapterCtlBlk *acb) acb 4344 drivers/scsi/dc395x.c struct NvRamType *eeprom = &acb->eeprom; acb 4347 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_DMA_INTEN, 0x00); acb 4348 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_INTEN, 0x00); acb 4351 drivers/scsi/dc395x.c DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_RSTMODULE); acb 4354 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_DMA_CONTROL, DMARESETMODULE); acb 4358 drivers/scsi/dc395x.c acb->config = HCC_AUTOTERM | HCC_PARITY; acb 4359 drivers/scsi/dc395x.c if (DC395x_read8(acb, TRM_S1040_GEN_STATUS) & WIDESCSI) acb 4360 drivers/scsi/dc395x.c acb->config |= HCC_WIDE_CARD; acb 4363 drivers/scsi/dc395x.c acb->config |= HCC_SCSI_RESET; acb 4365 drivers/scsi/dc395x.c if (acb->config & HCC_SCSI_RESET) { acb 4367 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_CONTROL, DO_RSTSCSI); acb 4373 drivers/scsi/dc395x.c acb->last_reset = acb 4375 drivers/scsi/dc395x.c HZ * acb->eeprom.delay_time; acb 4395 drivers/scsi/dc395x.c static int adapter_init(struct AdapterCtlBlk *acb, unsigned long io_port, acb 4403 drivers/scsi/dc395x.c acb->io_port_base = io_port; acb 4404 drivers/scsi/dc395x.c acb->io_port_len = io_port_len; acb 4406 drivers/scsi/dc395x.c if (request_irq(irq, dc395x_interrupt, IRQF_SHARED, DC395X_NAME, acb)) { acb 4412 drivers/scsi/dc395x.c acb->irq_level = irq; acb 4415 drivers/scsi/dc395x.c check_eeprom(&acb->eeprom, io_port); acb 4416 drivers/scsi/dc395x.c print_eeprom_settings(&acb->eeprom); acb 4419 drivers/scsi/dc395x.c adapter_init_params(acb); acb 4422 drivers/scsi/dc395x.c adapter_print_config(acb); acb 4424 drivers/scsi/dc395x.c if (adapter_sg_tables_alloc(acb)) { acb 4428 drivers/scsi/dc395x.c adapter_init_scsi_host(acb->scsi_host); acb 4429 drivers/scsi/dc395x.c adapter_init_chip(acb); acb 4430 drivers/scsi/dc395x.c set_basic_config(acb); acb 4435 drivers/scsi/dc395x.c acb, acb->dcb_map, acb->srb_array, sizeof(struct AdapterCtlBlk), acb 4440 drivers/scsi/dc395x.c if (acb->irq_level) acb 4441 drivers/scsi/dc395x.c free_irq(acb->irq_level, acb); acb 4442 drivers/scsi/dc395x.c if (acb->io_port_base) acb 4443 drivers/scsi/dc395x.c release_region(acb->io_port_base, acb->io_port_len); acb 4444 drivers/scsi/dc395x.c adapter_sg_tables_free(acb); acb 4457 drivers/scsi/dc395x.c static void adapter_uninit_chip(struct AdapterCtlBlk *acb) acb 4460 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_DMA_INTEN, 0); acb 4461 drivers/scsi/dc395x.c DC395x_write8(acb, TRM_S1040_SCSI_INTEN, 0); acb 4464 drivers/scsi/dc395x.c if (acb->config & HCC_SCSI_RESET) acb 4465 drivers/scsi/dc395x.c reset_scsi_bus(acb); acb 4468 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS); acb 4480 drivers/scsi/dc395x.c static void adapter_uninit(struct AdapterCtlBlk *acb) acb 4483 drivers/scsi/dc395x.c DC395x_LOCK_IO(acb->scsi_host, flags); acb 4486 drivers/scsi/dc395x.c if (timer_pending(&acb->waiting_timer)) acb 4487 drivers/scsi/dc395x.c del_timer(&acb->waiting_timer); acb 4488 drivers/scsi/dc395x.c if (timer_pending(&acb->selto_timer)) acb 4489 drivers/scsi/dc395x.c del_timer(&acb->selto_timer); acb 4491 drivers/scsi/dc395x.c adapter_uninit_chip(acb); acb 4492 drivers/scsi/dc395x.c adapter_remove_and_free_all_devices(acb); acb 4493 drivers/scsi/dc395x.c DC395x_UNLOCK_IO(acb->scsi_host, flags); acb 4495 drivers/scsi/dc395x.c if (acb->irq_level) acb 4496 drivers/scsi/dc395x.c free_irq(acb->irq_level, acb); acb 4497 drivers/scsi/dc395x.c if (acb->io_port_base) acb 4498 drivers/scsi/dc395x.c release_region(acb->io_port_base, acb->io_port_len); acb 4500 drivers/scsi/dc395x.c adapter_sg_tables_free(acb); acb 4511 drivers/scsi/dc395x.c struct AdapterCtlBlk *acb = (struct AdapterCtlBlk *)host->hostdata; acb 4520 drivers/scsi/dc395x.c DC395x_LOCK_IO(acb->scsi_host, flags); acb 4524 drivers/scsi/dc395x.c (acb->config & HCC_WIDE_CARD) ? "Wide" : ""); acb 4525 drivers/scsi/dc395x.c seq_printf(m, "io_port_base 0x%04lx, ", acb->io_port_base); acb 4526 drivers/scsi/dc395x.c seq_printf(m, "irq_level 0x%04x, ", acb->irq_level); acb 4527 drivers/scsi/dc395x.c seq_printf(m, " SelTimeout %ims\n", (1638 * acb->sel_timeout) / 1000); acb 4532 drivers/scsi/dc395x.c seq_printf(m, "tag_max_num %i", acb->tag_max_num); acb 4535 drivers/scsi/dc395x.c DC395x_read8(acb, TRM_S1040_SCSI_CONFIG1)); acb 4536 drivers/scsi/dc395x.c seq_printf(m, ", DelayReset %is\n", acb->eeprom.delay_time); acb 4539 drivers/scsi/dc395x.c seq_printf(m, "Nr of DCBs: %i\n", list_size(&acb->dcb_list)); acb 4541 drivers/scsi/dc395x.c acb->dcb_map[0], acb->dcb_map[1], acb->dcb_map[2], acb 4542 drivers/scsi/dc395x.c acb->dcb_map[3], acb->dcb_map[4], acb->dcb_map[5], acb 4543 drivers/scsi/dc395x.c acb->dcb_map[6], acb->dcb_map[7]); acb 4545 drivers/scsi/dc395x.c acb->dcb_map[8], acb->dcb_map[9], acb->dcb_map[10], acb 4546 drivers/scsi/dc395x.c acb->dcb_map[11], acb->dcb_map[12], acb->dcb_map[13], acb 4547 drivers/scsi/dc395x.c acb->dcb_map[14], acb->dcb_map[15]); acb 4553 drivers/scsi/dc395x.c list_for_each_entry(dcb, &acb->dcb_list, list) { acb 4583 drivers/scsi/dc395x.c if (timer_pending(&acb->waiting_timer)) acb 4588 drivers/scsi/dc395x.c list_for_each_entry(dcb, &acb->dcb_list, list) { acb 4607 drivers/scsi/dc395x.c seq_printf(m, "DCB list for ACB %p:\n", acb); acb 4608 drivers/scsi/dc395x.c list_for_each_entry(dcb, &acb->dcb_list, list) { acb 4614 drivers/scsi/dc395x.c DC395x_UNLOCK_IO(acb->scsi_host, flags); acb 4669 drivers/scsi/dc395x.c struct AdapterCtlBlk *acb = NULL; acb 4694 drivers/scsi/dc395x.c acb = (struct AdapterCtlBlk*)scsi_host->hostdata; acb 4695 drivers/scsi/dc395x.c acb->scsi_host = scsi_host; acb 4696 drivers/scsi/dc395x.c acb->dev = dev; acb 4699 drivers/scsi/dc395x.c if (adapter_init(acb, io_port_base, io_port_len, irq)) { acb 4717 drivers/scsi/dc395x.c if (acb != NULL) acb 4718 drivers/scsi/dc395x.c adapter_uninit(acb); acb 4735 drivers/scsi/dc395x.c struct AdapterCtlBlk *acb = (struct AdapterCtlBlk *)(scsi_host->hostdata); acb 4737 drivers/scsi/dc395x.c dprintkdbg(DBG_0, "dc395x_remove_one: acb=%p\n", acb); acb 4740 drivers/scsi/dc395x.c adapter_uninit(acb); acb 394 drivers/scsi/qla4xxx/ql4_bsg.c uint8_t *acb = NULL; acb 421 drivers/scsi/qla4xxx/ql4_bsg.c acb = dma_alloc_coherent(&ha->pdev->dev, len, &acb_dma, GFP_KERNEL); acb 422 drivers/scsi/qla4xxx/ql4_bsg.c if (!acb) { acb 438 drivers/scsi/qla4xxx/ql4_bsg.c acb, len); acb 444 drivers/scsi/qla4xxx/ql4_bsg.c dma_free_coherent(&ha->pdev->dev, len, acb, acb_dma); acb 2341 drivers/scsi/qla4xxx/ql4_mbx.c struct addr_ctrl_blk *acb = NULL; acb 2346 drivers/scsi/qla4xxx/ql4_mbx.c acb = dma_alloc_coherent(&ha->pdev->dev, acb 2349 drivers/scsi/qla4xxx/ql4_mbx.c if (!acb) { acb 2354 drivers/scsi/qla4xxx/ql4_mbx.c memset(acb, 0, acb_len); acb 2375 drivers/scsi/qla4xxx/ql4_mbx.c memcpy(ha->saved_acb, acb, acb_len); acb 2386 drivers/scsi/qla4xxx/ql4_mbx.c memcpy(acb, ha->saved_acb, acb_len); acb 2399 drivers/scsi/qla4xxx/ql4_mbx.c dma_free_coherent(&ha->pdev->dev, sizeof(struct addr_ctrl_blk), acb, acb 2675 drivers/scsi/qla4xxx/ql4_os.c struct addr_ctrl_blk_def *acb; acb 2676 drivers/scsi/qla4xxx/ql4_os.c acb = (struct addr_ctrl_blk_def *)init_fw_cb; acb 2677 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved1, 0, sizeof(acb->reserved1)); acb 2678 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved2, 0, sizeof(acb->reserved2)); acb 2679 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved3, 0, sizeof(acb->reserved3)); acb 2680 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved4, 0, sizeof(acb->reserved4)); acb 2681 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved5, 0, sizeof(acb->reserved5)); acb 2682 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved6, 0, sizeof(acb->reserved6)); acb 2683 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved7, 0, sizeof(acb->reserved7)); acb 2684 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved8, 0, sizeof(acb->reserved8)); acb 2685 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved9, 0, sizeof(acb->reserved9)); acb 2686 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved10, 0, sizeof(acb->reserved10)); acb 2687 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved11, 0, sizeof(acb->reserved11)); acb 2688 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved12, 0, sizeof(acb->reserved12)); acb 2689 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved13, 0, sizeof(acb->reserved13)); acb 2690 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved14, 0, sizeof(acb->reserved14)); acb 2691 drivers/scsi/qla4xxx/ql4_os.c memset(acb->reserved15, 0, sizeof(acb->reserved15)); acb 9465 drivers/scsi/qla4xxx/ql4_os.c struct addr_ctrl_blk_def *acb = NULL; acb 9470 drivers/scsi/qla4xxx/ql4_os.c acb = dma_alloc_coherent(&ha->pdev->dev, acb 9473 drivers/scsi/qla4xxx/ql4_os.c if (!acb) { acb 9480 drivers/scsi/qla4xxx/ql4_os.c memset(acb, 0, acb_len); acb 9505 drivers/scsi/qla4xxx/ql4_os.c acb, acb_dma); acb 119 drivers/video/fbdev/omap/lcd_ams_delta.c .acb = 37, acb 509 drivers/video/fbdev/omap/lcdc.c l |= panel->acb << 8; acb 74 drivers/video/fbdev/omap/omapfb.h int acb; /* ac-bias pin frequency */