Lines Matching refs:hostdata
226 struct NCR5380_hostdata *hostdata = \
227 (struct NCR5380_hostdata *)(in)->hostdata
228 #define HOSTDATA(in) ((struct NCR5380_hostdata *)(in)->hostdata)
274 static void __init init_tags(struct NCR5380_hostdata *hostdata) in init_tags() argument
279 if (!(hostdata->flags & FLAG_TAGGED_QUEUING)) in init_tags()
284 ta = &hostdata->TagAlloc[target][lun]; in init_tags()
309 if (hostdata->busy[cmd->device->id] & (1 << lun)) in is_lun_busy()
312 !(hostdata->flags & FLAG_TAGGED_QUEUING) || in is_lun_busy()
315 if (hostdata->TagAlloc[scmd_id(cmd)][lun].nr_allocated >= in is_lun_busy()
316 hostdata->TagAlloc[scmd_id(cmd)][lun].queue_size) { in is_lun_busy()
339 !(hostdata->flags & FLAG_TAGGED_QUEUING) || in cmd_get_tag()
342 hostdata->busy[cmd->device->id] |= (1 << lun); in cmd_get_tag()
346 struct tag_alloc *ta = &hostdata->TagAlloc[scmd_id(cmd)][lun]; in cmd_get_tag()
369 hostdata->busy[cmd->device->id] &= ~(1 << lun); in cmd_free_tag()
376 struct tag_alloc *ta = &hostdata->TagAlloc[scmd_id(cmd)][lun]; in cmd_free_tag()
385 static void free_all_tags(struct NCR5380_hostdata *hostdata) in free_all_tags() argument
390 if (!(hostdata->flags & FLAG_TAGGED_QUEUING)) in free_all_tags()
395 ta = &hostdata->TagAlloc[target][lun]; in free_all_tags()
595 static inline void queue_main(struct NCR5380_hostdata *hostdata) in queue_main() argument
597 if (!hostdata->main_running) { in queue_main()
602 schedule_work(&hostdata->main_task); in queue_main()
619 struct NCR5380_hostdata *hostdata = shost_priv(instance); in NCR5380_info() local
621 return hostdata->info; in NCR5380_info()
626 struct NCR5380_hostdata *hostdata = shost_priv(instance); in prepare_info() local
628 snprintf(hostdata->info, sizeof(hostdata->info), in prepare_info()
639 hostdata->flags & FLAG_TAGGED_QUEUING ? "TAGGED_QUEUING " : "", in prepare_info()
679 struct NCR5380_hostdata *hostdata; in NCR5380_print_status() local
686 hostdata = (struct NCR5380_hostdata *)instance->hostdata; in NCR5380_print_status()
690 hostdata->main_running ? "" : "n't"); in NCR5380_print_status()
691 if (!hostdata->connected) in NCR5380_print_status()
694 lprint_Scsi_Cmnd((struct scsi_cmnd *) hostdata->connected); in NCR5380_print_status()
696 for (ptr = (struct scsi_cmnd *)hostdata->issue_queue; ptr; ptr = NEXT(ptr)) in NCR5380_print_status()
700 for (ptr = (struct scsi_cmnd *) hostdata->disconnected_queue; ptr; in NCR5380_print_status()
725 struct NCR5380_hostdata *hostdata; in NCR5380_show_info() local
729 hostdata = (struct NCR5380_hostdata *)instance->hostdata; in NCR5380_show_info()
733 hostdata->main_running ? "" : "n't"); in NCR5380_show_info()
734 if (!hostdata->connected) in NCR5380_show_info()
737 show_Scsi_Cmnd((struct scsi_cmnd *) hostdata->connected, m); in NCR5380_show_info()
739 for (ptr = (struct scsi_cmnd *)hostdata->issue_queue; ptr; ptr = NEXT(ptr)) in NCR5380_show_info()
743 for (ptr = (struct scsi_cmnd *) hostdata->disconnected_queue; ptr; in NCR5380_show_info()
770 hostdata->host = instance; in NCR5380_init()
771 hostdata->aborted = 0; in NCR5380_init()
772 hostdata->id_mask = 1 << instance->this_id; in NCR5380_init()
773 hostdata->id_higher_mask = 0; in NCR5380_init()
774 for (i = hostdata->id_mask; i <= 0x80; i <<= 1) in NCR5380_init()
775 if (i > hostdata->id_mask) in NCR5380_init()
776 hostdata->id_higher_mask |= i; in NCR5380_init()
778 hostdata->busy[i] = 0; in NCR5380_init()
780 init_tags(hostdata); in NCR5380_init()
783 hostdata->dma_len = 0; in NCR5380_init()
785 hostdata->targets_present = 0; in NCR5380_init()
786 hostdata->connected = NULL; in NCR5380_init()
787 hostdata->issue_queue = NULL; in NCR5380_init()
788 hostdata->disconnected_queue = NULL; in NCR5380_init()
789 hostdata->flags = flags; in NCR5380_init()
791 INIT_WORK(&hostdata->main_task, NCR5380_main); in NCR5380_init()
812 struct NCR5380_hostdata *hostdata = shost_priv(instance); in NCR5380_exit() local
814 cancel_work_sync(&hostdata->main_task); in NCR5380_exit()
830 struct NCR5380_hostdata *hostdata = shost_priv(instance); in NCR5380_queue_command() local
885 if (!(hostdata->issue_queue) || (cmd->cmnd[0] == REQUEST_SENSE)) { in NCR5380_queue_command()
886 LIST(cmd, hostdata->issue_queue); in NCR5380_queue_command()
887 SET_NEXT(cmd, hostdata->issue_queue); in NCR5380_queue_command()
888 hostdata->issue_queue = cmd; in NCR5380_queue_command()
890 for (tmp = (struct scsi_cmnd *)hostdata->issue_queue; in NCR5380_queue_command()
909 queue_main(hostdata); in NCR5380_queue_command()
911 NCR5380_main(&hostdata->main_task); in NCR5380_queue_command()
917 struct NCR5380_hostdata *hostdata = shost_priv(instance); in maybe_release_dma_irq() local
920 if (!hostdata->disconnected_queue && in maybe_release_dma_irq()
921 !hostdata->issue_queue && in maybe_release_dma_irq()
922 !hostdata->connected && in maybe_release_dma_irq()
923 !hostdata->retain_dma_intr) in maybe_release_dma_irq()
940 struct NCR5380_hostdata *hostdata = in NCR5380_main() local
942 struct Scsi_Host *instance = hostdata->host; in NCR5380_main()
968 if (hostdata->main_running) in NCR5380_main()
970 hostdata->main_running = 1; in NCR5380_main()
977 if (!hostdata->connected) { in NCR5380_main()
984 for (tmp = (struct scsi_cmnd *) hostdata->issue_queue, prev = NULL; in NCR5380_main()
992 for (tmp = (struct scsi_cmnd *) hostdata->issue_queue, in NCR5380_main()
998 tmp, scmd_id(tmp), hostdata->busy[scmd_id(tmp)], in NCR5380_main()
1006 !(hostdata->busy[tmp->device->id] & (1 << lun)) in NCR5380_main()
1015 REMOVE(-1, hostdata->issue_queue, tmp, NEXT(tmp)); in NCR5380_main()
1016 hostdata->issue_queue = NEXT(tmp); in NCR5380_main()
1019 hostdata->retain_dma_intr++; in NCR5380_main()
1048 hostdata->retain_dma_intr--; in NCR5380_main()
1055 LIST(tmp, hostdata->issue_queue); in NCR5380_main()
1056 SET_NEXT(tmp, hostdata->issue_queue); in NCR5380_main()
1057 hostdata->issue_queue = tmp; in NCR5380_main()
1061 hostdata->retain_dma_intr--; in NCR5380_main()
1065 if (hostdata->connected) in NCR5380_main()
1072 if (hostdata->connected in NCR5380_main()
1074 && !hostdata->dma_len in NCR5380_main()
1089 hostdata->main_running = 0; in NCR5380_main()
1114 if (!hostdata->connected) { in NCR5380_dma_complete()
1120 if (hostdata->read_overruns) { in NCR5380_dma_complete()
1121 p = hostdata->connected->SCp.phase; in NCR5380_dma_complete()
1139 if ((sun3scsi_dma_finish(rq_data_dir(hostdata->connected->request)))) { in NCR5380_dma_complete()
1160 transferred = hostdata->dma_len - NCR5380_dma_residual(instance); in NCR5380_dma_complete()
1161 hostdata->dma_len = 0; in NCR5380_dma_complete()
1163 data = (unsigned char **)&hostdata->connected->SCp.ptr; in NCR5380_dma_complete()
1164 count = &hostdata->connected->SCp.this_residual; in NCR5380_dma_complete()
1168 if (hostdata->read_overruns) { in NCR5380_dma_complete()
1172 cnt = toPIO = hostdata->read_overruns; in NCR5380_dma_complete()
1316 hostdata->restart_select = 0; in NCR5380_select()
1327 if (hostdata->connected) { in NCR5380_select()
1337 NCR5380_write(OUTPUT_DATA_REG, hostdata->id_mask); in NCR5380_select()
1348 time_before(jiffies, timeout) && !hostdata->connected) in NCR5380_select()
1353 NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask); in NCR5380_select()
1359 !hostdata->connected) in NCR5380_select()
1365 if (hostdata->connected) { in NCR5380_select()
1380 (NCR5380_read(CURRENT_SCSI_DATA_REG) & hostdata->id_higher_mask) || in NCR5380_select()
1382 hostdata->connected) { in NCR5380_select()
1396 hostdata->connected) { in NCR5380_select()
1416 if (hostdata->connected) { in NCR5380_select()
1429 NCR5380_write(OUTPUT_DATA_REG, (hostdata->id_mask | (1 << cmd->device->id))); in NCR5380_select()
1446 if (hostdata->connected) { in NCR5380_select()
1514 NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask); in NCR5380_select()
1534 if (hostdata->targets_present & (1 << cmd->device->id)) { in NCR5380_select()
1536 if (hostdata->restart_select) in NCR5380_select()
1539 NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask); in NCR5380_select()
1547 NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask); in NCR5380_select()
1549 NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask); in NCR5380_select()
1553 hostdata->targets_present |= (1 << cmd->device->id); in NCR5380_select()
1580 tmp[1] = hostdata->last_message = SIMPLE_QUEUE_TAG; in NCR5380_select()
1596 hostdata->connected = cmd; in NCR5380_select()
1598 hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun); in NCR5380_select()
1835 hostdata->dma_len = c; in NCR5380_transfer_dma()
1880 if (hostdata->read_overruns && (p & SR_IO)) in NCR5380_transfer_dma()
1881 c -= hostdata->read_overruns; in NCR5380_transfer_dma()
1893 if (!(hostdata->flags & FLAG_LATE_DMA_SETUP)) { in NCR5380_transfer_dma()
1898 hostdata->dma_len = (p & SR_IO) ? in NCR5380_transfer_dma()
1911 if (hostdata->flags & FLAG_LATE_DMA_SETUP) { in NCR5380_transfer_dma()
1916 hostdata->dma_len = (p & SR_IO) ? in NCR5380_transfer_dma()
1956 struct scsi_cmnd *cmd = (struct scsi_cmnd *) hostdata->connected; in NCR5380_information_transfer()
2133 NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask); in NCR5380_information_transfer()
2158 cmd = hostdata->connected; in NCR5380_information_transfer()
2169 hostdata->retain_dma_intr++; in NCR5380_information_transfer()
2170 hostdata->connected = NULL; in NCR5380_information_transfer()
2182 struct tag_alloc *ta = &hostdata->TagAlloc[scmd_id(cmd)][cmd->device->lun]; in NCR5380_information_transfer()
2191 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in NCR5380_information_transfer()
2194 NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask); in NCR5380_information_transfer()
2218 hostdata->ses.cmd_len) { in NCR5380_information_transfer()
2219 scsi_eh_restore_cmnd(cmd, &hostdata->ses); in NCR5380_information_transfer()
2220 hostdata->ses.cmd_len = 0 ; in NCR5380_information_transfer()
2225 scsi_eh_prep_cmnd(cmd, &hostdata->ses, NULL, 0, ~0); in NCR5380_information_transfer()
2229 LIST(cmd,hostdata->issue_queue); in NCR5380_information_transfer()
2230 SET_NEXT(cmd, hostdata->issue_queue); in NCR5380_information_transfer()
2231 hostdata->issue_queue = (struct scsi_cmnd *) cmd; in NCR5380_information_transfer()
2240 NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask); in NCR5380_information_transfer()
2247 while ((NCR5380_read(STATUS_REG) & SR_BSY) && !hostdata->connected) in NCR5380_information_transfer()
2251 hostdata->retain_dma_intr--; in NCR5380_information_transfer()
2263 NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask); in NCR5380_information_transfer()
2264 switch (hostdata->last_message) { in NCR5380_information_transfer()
2275 hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun); in NCR5380_information_transfer()
2289 LIST(cmd,hostdata->disconnected_queue); in NCR5380_information_transfer()
2290 SET_NEXT(cmd, hostdata->disconnected_queue); in NCR5380_information_transfer()
2291 hostdata->connected = NULL; in NCR5380_information_transfer()
2292 hostdata->disconnected_queue = cmd; in NCR5380_information_transfer()
2305 NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask); in NCR5380_information_transfer()
2307 while ((NCR5380_read(STATUS_REG) & SR_BSY) && !hostdata->connected) in NCR5380_information_transfer()
2328 NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask); in NCR5380_information_transfer()
2414 hostdata->last_message = msgout; in NCR5380_information_transfer()
2421 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in NCR5380_information_transfer()
2423 hostdata->connected = NULL; in NCR5380_information_transfer()
2425 NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask); in NCR5380_information_transfer()
2491 hostdata->restart_select = 1; in NCR5380_reselect()
2493 target_mask = NCR5380_read(CURRENT_SCSI_DATA_REG) & ~(hostdata->id_mask); in NCR5380_reselect()
2546 if (phase == PHASE_MSGIN && (hostdata->flags & FLAG_TAGGED_QUEUING)) { in NCR5380_reselect()
2564 for (tmp = (struct scsi_cmnd *) hostdata->disconnected_queue, prev = NULL; in NCR5380_reselect()
2575 REMOVE(-1, hostdata->disconnected_queue, tmp, NEXT(tmp)); in NCR5380_reselect()
2576 hostdata->disconnected_queue = NEXT(tmp); in NCR5380_reselect()
2647 hostdata->connected = tmp; in NCR5380_reselect()
2695 if (hostdata->connected == cmd) { in NCR5380_abort()
2716 hostdata->aborted = 1; in NCR5380_abort()
2717 hostdata->connected = NULL; in NCR5380_abort()
2722 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in NCR5380_abort()
2740 for (prev = (struct scsi_cmnd **)&(hostdata->issue_queue), in NCR5380_abort()
2741 tmp = (struct scsi_cmnd *)hostdata->issue_queue; in NCR5380_abort()
2770 if (hostdata->connected) { in NCR5380_abort()
2801 for (tmp = (struct scsi_cmnd *) hostdata->disconnected_queue; tmp; in NCR5380_abort()
2815 for (prev = (struct scsi_cmnd **)&(hostdata->disconnected_queue), in NCR5380_abort()
2816 tmp = (struct scsi_cmnd *)hostdata->disconnected_queue; in NCR5380_abort()
2830 hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun); in NCR5380_abort()
2876 struct NCR5380_hostdata *hostdata = shost_priv(instance); in NCR5380_bus_reset() local
2903 if (hostdata->issue_queue) in NCR5380_bus_reset()
2905 if (hostdata->connected) in NCR5380_bus_reset()
2907 if (hostdata->disconnected_queue) in NCR5380_bus_reset()
2911 hostdata->issue_queue = NULL; in NCR5380_bus_reset()
2912 hostdata->connected = NULL; in NCR5380_bus_reset()
2913 hostdata->disconnected_queue = NULL; in NCR5380_bus_reset()
2915 free_all_tags(hostdata); in NCR5380_bus_reset()
2918 hostdata->busy[i] = 0; in NCR5380_bus_reset()
2920 hostdata->dma_len = 0; in NCR5380_bus_reset()