Lines Matching refs:data
369 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_build_identify() local
370 int pos = data->msgout_len; in nsp32_build_identify()
378 data->msgoutbuf[pos] = IDENTIFY(mode, SCpnt->device->lun); pos++; in nsp32_build_identify()
380 data->msgout_len = pos; in nsp32_build_identify()
390 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_build_sdtr() local
391 int pos = data->msgout_len; in nsp32_build_sdtr()
393 data->msgoutbuf[pos] = EXTENDED_MESSAGE; pos++; in nsp32_build_sdtr()
394 data->msgoutbuf[pos] = EXTENDED_SDTR_LEN; pos++; in nsp32_build_sdtr()
395 data->msgoutbuf[pos] = EXTENDED_SDTR; pos++; in nsp32_build_sdtr()
396 data->msgoutbuf[pos] = period; pos++; in nsp32_build_sdtr()
397 data->msgoutbuf[pos] = offset; pos++; in nsp32_build_sdtr()
399 data->msgout_len = pos; in nsp32_build_sdtr()
407 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_build_nop() local
408 int pos = data->msgout_len; in nsp32_build_nop()
416 data->msgoutbuf[pos] = NOP; pos++; in nsp32_build_nop()
417 data->msgout_len = pos; in nsp32_build_nop()
425 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_build_reject() local
426 int pos = data->msgout_len; in nsp32_build_reject()
428 data->msgoutbuf[pos] = MESSAGE_REJECT; pos++; in nsp32_build_reject()
429 data->msgout_len = pos; in nsp32_build_reject()
456 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_selection_autopara() local
460 nsp32_autoparam *param = data->autoparam; in nsp32_selection_autopara()
485 if (data->msgout_len == 0) { in nsp32_selection_autopara()
489 } else if (data->msgout_len > 0 && data->msgout_len <= 3) { in nsp32_selection_autopara()
491 for (i = 0; i < data->msgout_len; i++) { in nsp32_selection_autopara()
499 msgout |= ((unsigned int)(data->msgoutbuf[i]) << 24); in nsp32_selection_autopara()
502 msgout |= (unsigned int)data->msgout_len; /* len */ in nsp32_selection_autopara()
525 param->syncreg = data->cur_target->syncreg; in nsp32_selection_autopara()
526 param->ackwidth = data->cur_target->ackwidth; in nsp32_selection_autopara()
528 param->sample_reg = data->cur_target->sample_reg; in nsp32_selection_autopara()
542 switch (data->trans_method) { in nsp32_selection_autopara()
564 param->sgt_pointer = cpu_to_le32(data->cur_lunt->sglun_paddr); in nsp32_selection_autopara()
569 nsp32_write4(base, SGT_ADR, data->auto_paddr); in nsp32_selection_autopara()
587 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_selection_autoscsi() local
645 if (data->msgout_len == 0) { in nsp32_selection_autoscsi()
650 } else if (data->msgout_len > 0 && data->msgout_len <= 3) { in nsp32_selection_autoscsi()
652 for (i = 0; i < data->msgout_len; i++) { in nsp32_selection_autoscsi()
660 msgout |= ((unsigned int)(data->msgoutbuf[i]) << 24); in nsp32_selection_autoscsi()
663 msgout |= (unsigned int)data->msgout_len; /* len */ in nsp32_selection_autoscsi()
681 nsp32_write1(base, SREQ_SMPL_RATE, data->cur_target->sample_reg); in nsp32_selection_autoscsi()
692 nsp32_write1(base, SYNC_REG, data->cur_target->syncreg); in nsp32_selection_autoscsi()
697 nsp32_write1(base, ACK_WIDTH, data->cur_target->ackwidth); in nsp32_selection_autoscsi()
704 data->msgout_len, msgout); in nsp32_selection_autoscsi()
709 nsp32_write4(base, SGT_ADR, data->cur_lunt->sglun_paddr); in nsp32_selection_autoscsi()
716 if (data->trans_method & NSP32_TRANSFER_BUSMASTER) { in nsp32_selection_autoscsi()
720 } else if (data->trans_method & NSP32_TRANSFER_MMIO) { in nsp32_selection_autoscsi()
722 } else if (data->trans_method & NSP32_TRANSFER_PIO) { in nsp32_selection_autoscsi()
811 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_reselection() local
837 if (newid >= ARRAY_SIZE(data->lunt) || newlun >= ARRAY_SIZE(data->lunt[0])) { in nsp32_reselection()
840 } else if(data->lunt[newid][newlun].SCpnt == NULL) { in nsp32_reselection()
845 data->cur_id = newid; in nsp32_reselection()
846 data->cur_lun = newlun; in nsp32_reselection()
847 data->cur_target = &(data->target[newid]); in nsp32_reselection()
848 data->cur_lunt = &(data->lunt[newid][newlun]); in nsp32_reselection()
865 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_setup_sg_table() local
867 nsp32_sgtable *sgt = data->cur_lunt->sglun->sgt; in nsp32_setup_sg_table()
911 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_queuecommand_lck() local
922 if (data->CurrentSC != NULL) { in nsp32_queuecommand_lck()
924 data->CurrentSC = NULL; in nsp32_queuecommand_lck()
949 data->CurrentSC = SCpnt; in nsp32_queuecommand_lck()
960 data->msgout_len = 0; in nsp32_queuecommand_lck()
961 data->msgin_len = 0; in nsp32_queuecommand_lck()
962 cur_lunt = &(data->lunt[SCpnt->device->id][SCpnt->device->lun]); in nsp32_queuecommand_lck()
966 data->cur_lunt = cur_lunt; in nsp32_queuecommand_lck()
967 data->cur_id = SCpnt->device->id; in nsp32_queuecommand_lck()
968 data->cur_lun = SCpnt->device->lun; in nsp32_queuecommand_lck()
986 target = &data->target[scmd_id(SCpnt)]; in nsp32_queuecommand_lck()
987 data->cur_target = target; in nsp32_queuecommand_lck()
993 nsp32_set_max_sync(data, target, &period, &offset); in nsp32_queuecommand_lck()
997 nsp32_set_async(data, target); in nsp32_queuecommand_lck()
1010 nsp32_set_async(data, target); in nsp32_queuecommand_lck()
1022 nsp32_set_async(data, target); in nsp32_queuecommand_lck()
1053 static int nsp32hw_init(nsp32_hw_data *data) in DEF_SCSI_QCMD()
1055 unsigned int base = data->BaseAddress; in DEF_SCSI_QCMD()
1080 if ((data->trans_method & NSP32_TRANSFER_PIO) || in DEF_SCSI_QCMD()
1081 (data->trans_method & NSP32_TRANSFER_MMIO)) { in DEF_SCSI_QCMD()
1084 } else if (data->trans_method & NSP32_TRANSFER_BUSMASTER) { in DEF_SCSI_QCMD()
1095 nsp32_index_write1(base, CLOCK_DIV, data->clock); in DEF_SCSI_QCMD()
1162 nsp32_hw_data *data = dev_id; in do_nsp32_isr() local
1163 unsigned int base = data->BaseAddress; in do_nsp32_isr()
1164 struct scsi_cmnd *SCpnt = data->CurrentSC; in do_nsp32_isr()
1170 struct Scsi_Host *host = data->Host; in do_nsp32_isr()
1194 if (data->CurrentSC != NULL) { in do_nsp32_isr()
1212 nsp32_do_bus_reset(data); in do_nsp32_isr()
1256 (data->msgout_len <= 3)) { in do_nsp32_isr()
1261 data->msgout_len = 0; in do_nsp32_isr()
1337 nsp32_sack_assert(data); in do_nsp32_isr()
1338 nsp32_wait_req(data, NEGATE); in do_nsp32_isr()
1339 nsp32_sack_negate(data); in do_nsp32_isr()
1447 nsp32_hw_data *data; in nsp32_show_info() local
1455 data = (nsp32_hw_data *)host->hostdata; in nsp32_show_info()
1463 …seq_printf(m, "MMIO(virtual address): 0x%lx-0x%lx\n", host->base, host->base + data->MmioLength - … in nsp32_show_info()
1468 model = data->pci_devid->driver_data; in nsp32_show_info()
1475 spin_lock_irqsave(&(data->Lock), flags); in nsp32_show_info()
1476 seq_printf(m, "CurrentSC: 0x%p\n\n", data->CurrentSC); in nsp32_show_info()
1477 spin_unlock_irqrestore(&(data->Lock), flags); in nsp32_show_info()
1481 for (id = 0; id < ARRAY_SIZE(data->target); id++) { in nsp32_show_info()
1490 if (data->target[id].sync_flag == SDTR_DONE) { in nsp32_show_info()
1491 if (data->target[id].period == 0 && in nsp32_show_info()
1492 data->target[id].offset == ASYNC_OFFSET ) { in nsp32_show_info()
1501 if (data->target[id].period != 0) { in nsp32_show_info()
1503 speed = 1000000 / (data->target[id].period * 4); in nsp32_show_info()
1508 data->target[id].offset in nsp32_show_info()
1524 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_scsi_done() local
1543 data->cur_lunt->SCpnt = NULL; in nsp32_scsi_done()
1544 data->cur_lunt = NULL; in nsp32_scsi_done()
1545 data->cur_target = NULL; in nsp32_scsi_done()
1546 data->CurrentSC = NULL; in nsp32_scsi_done()
1562 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_busfree_occur() local
1616 data->cur_lunt->msgin03 = FALSE; in nsp32_busfree_occur()
1618 data->cur_lunt->msgin03 = TRUE; in nsp32_busfree_occur()
1640 if (data->cur_target->sync_flag & SDTR_INITIATOR) { in nsp32_busfree_occur()
1645 nsp32_set_async(data, data->cur_target); in nsp32_busfree_occur()
1646 data->cur_target->sync_flag &= ~SDTR_INITIATOR; in nsp32_busfree_occur()
1647 data->cur_target->sync_flag |= SDTR_DONE; in nsp32_busfree_occur()
1648 } else if (data->cur_target->sync_flag & SDTR_TARGET) { in nsp32_busfree_occur()
1664 nsp32_set_async(data, data->cur_target); in nsp32_busfree_occur()
1666 data->cur_target->sync_flag &= ~SDTR_TARGET; in nsp32_busfree_occur()
1667 data->cur_target->sync_flag |= SDTR_DONE; in nsp32_busfree_occur()
1720 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_adjust_busfree() local
1721 int old_entry = data->cur_entry; in nsp32_adjust_busfree()
1723 int sg_num = data->cur_lunt->sg_num; in nsp32_adjust_busfree()
1724 nsp32_sgtable *sgt = data->cur_lunt->sglun->sgt; in nsp32_adjust_busfree()
1767 data->cur_entry = new_entry; in nsp32_adjust_busfree()
1793 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_msgout_occur() local
1800 "enter: msgout_len: 0x%x", data->msgout_len); in nsp32_msgout_occur()
1806 if (data->msgout_len == 0) { in nsp32_msgout_occur()
1815 new_sgtp = data->cur_lunt->sglun_paddr + in nsp32_msgout_occur()
1816 (data->cur_lunt->cur_entry * sizeof(nsp32_sgtable)); in nsp32_msgout_occur()
1821 for (i = 0; i < data->msgout_len; i++) { in nsp32_msgout_occur()
1823 "%d : 0x%x", i, data->msgoutbuf[i]); in nsp32_msgout_occur()
1828 nsp32_wait_req(data, ASSERT); in nsp32_msgout_occur()
1830 if (i == (data->msgout_len - 1)) { in nsp32_msgout_occur()
1849 nsp32_write1(base, SCSI_DATA_WITH_ACK, data->msgoutbuf[i]); in nsp32_msgout_occur()
1850 nsp32_wait_sack(data, NEGATE); in nsp32_msgout_occur()
1856 data->msgout_len = 0; in nsp32_msgout_occur()
1869 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_restart_autoscsi() local
1870 unsigned int base = data->BaseAddress; in nsp32_restart_autoscsi()
1875 if (data->cur_target == NULL || data->cur_lunt == NULL) { in nsp32_restart_autoscsi()
1883 nsp32_write1(base, SYNC_REG, data->cur_target->syncreg); in nsp32_restart_autoscsi()
1888 nsp32_write1(base, ACK_WIDTH, data->cur_target->ackwidth); in nsp32_restart_autoscsi()
1893 nsp32_write1(base, SREQ_SMPL_RATE, data->cur_target->sample_reg); in nsp32_restart_autoscsi()
1898 nsp32_write4(base, SGT_ADR, data->cur_lunt->sglun_paddr); in nsp32_restart_autoscsi()
1905 if (data->trans_method & NSP32_TRANSFER_BUSMASTER) { in nsp32_restart_autoscsi()
1909 } else if (data->trans_method & NSP32_TRANSFER_MMIO) { in nsp32_restart_autoscsi()
1911 } else if (data->trans_method & NSP32_TRANSFER_PIO) { in nsp32_restart_autoscsi()
1937 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_msgin_occur() local
1953 data->msginbuf[(unsigned char)data->msgin_len] = msg; in nsp32_msgin_occur()
1954 msgtype = data->msginbuf[0]; in nsp32_msgin_occur()
1957 data->msgin_len, msg, msgtype); in nsp32_msgin_occur()
1966 nsp32_sack_assert(data); in nsp32_msgin_occur()
2020 data->cur_lunt->msgin03 = FALSE; in nsp32_msgin_occur()
2030 new_sgtp = data->cur_lunt->sglun_paddr + in nsp32_msgin_occur()
2031 (data->cur_lunt->cur_entry * sizeof(nsp32_sgtable)); in nsp32_msgin_occur()
2049 if (data->cur_target->sync_flag & in nsp32_msgin_occur()
2056 nsp32_set_async(data, data->cur_target); in nsp32_msgin_occur()
2057 data->cur_target->sync_flag &= ~SDTR_INITIATOR; in nsp32_msgin_occur()
2058 data->cur_target->sync_flag |= SDTR_DONE; in nsp32_msgin_occur()
2085 if (data->msgin_len >= 1) { in nsp32_msgin_occur()
2098 if (data->msgin_len < 1) { in nsp32_msgin_occur()
2107 if ((data->msginbuf[1] + 1) > data->msgin_len) { in nsp32_msgin_occur()
2122 switch (data->msginbuf[2]) { in nsp32_msgin_occur()
2132 if (data->msgin_len != EXTENDED_SDTR_LEN + 1) { in nsp32_msgin_occur()
2166 data->msgin_len = 0; in nsp32_msgin_occur()
2175 if (data->msgout_len > 0) { in nsp32_msgin_occur()
2189 if (data->cur_lunt->msgin03 == TRUE) { in nsp32_msgin_occur()
2192 data->cur_lunt->msgin03 = FALSE; in nsp32_msgin_occur()
2194 data->msgin_len++; in nsp32_msgin_occur()
2205 nsp32_wait_req(data, NEGATE); in nsp32_msgin_occur()
2210 nsp32_sack_negate(data); in nsp32_msgin_occur()
2220 msg, data->msgin_len, msgtype); in nsp32_msgin_occur()
2222 data->msgin_len = 0; in nsp32_msgin_occur()
2232 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_analyze_sdtr() local
2233 nsp32_target *target = data->cur_target; in nsp32_analyze_sdtr()
2235 unsigned char get_period = data->msginbuf[3]; in nsp32_analyze_sdtr()
2236 unsigned char get_offset = data->msginbuf[4]; in nsp32_analyze_sdtr()
2242 synct = data->synct; in nsp32_analyze_sdtr()
2243 syncnum = data->syncnum; in nsp32_analyze_sdtr()
2291 if (get_period < data->synct[0].period_num) { in nsp32_analyze_sdtr()
2299 entry = nsp32_search_period_entry(data, target, get_period); in nsp32_analyze_sdtr()
2312 nsp32_set_sync_entry(data, target, entry, get_offset); in nsp32_analyze_sdtr()
2326 if (get_period < data->synct[0].period_num) { in nsp32_analyze_sdtr()
2327 get_period = data->synct[0].period_num; in nsp32_analyze_sdtr()
2330 entry = nsp32_search_period_entry(data, target, get_period); in nsp32_analyze_sdtr()
2333 nsp32_set_async(data, target); in nsp32_analyze_sdtr()
2336 nsp32_set_sync_entry(data, target, entry, get_offset); in nsp32_analyze_sdtr()
2353 nsp32_set_async(data, target); /* set as ASYNC transfer mode */ in nsp32_analyze_sdtr()
2365 static int nsp32_search_period_entry(nsp32_hw_data *data, in nsp32_search_period_entry() argument
2371 if (target->limit_entry >= data->syncnum) { in nsp32_search_period_entry()
2376 for (i = target->limit_entry; i < data->syncnum; i++) { in nsp32_search_period_entry()
2377 if (period >= data->synct[i].start_period && in nsp32_search_period_entry()
2378 period <= data->synct[i].end_period) { in nsp32_search_period_entry()
2387 if (i == data->syncnum) { in nsp32_search_period_entry()
2398 static void nsp32_set_async(nsp32_hw_data *data, nsp32_target *target) in nsp32_set_async() argument
2400 unsigned char period = data->synct[target->limit_entry].period_num; in nsp32_set_async()
2415 static void nsp32_set_max_sync(nsp32_hw_data *data, in nsp32_set_max_sync() argument
2422 period_num = data->synct[target->limit_entry].period_num; in nsp32_set_max_sync()
2423 *period = data->synct[target->limit_entry].start_period; in nsp32_set_max_sync()
2424 ackwidth = data->synct[target->limit_entry].ackwidth; in nsp32_set_max_sync()
2437 static void nsp32_set_sync_entry(nsp32_hw_data *data, in nsp32_set_sync_entry() argument
2444 period = data->synct[entry].period_num; in nsp32_set_sync_entry()
2445 ackwidth = data->synct[entry].ackwidth; in nsp32_set_sync_entry()
2447 sample_rate = data->synct[entry].sample_rate; in nsp32_set_sync_entry()
2466 static void nsp32_wait_req(nsp32_hw_data *data, int state) in nsp32_wait_req() argument
2468 unsigned int base = data->BaseAddress; in nsp32_wait_req()
2495 static void nsp32_wait_sack(nsp32_hw_data *data, int state) in nsp32_wait_sack() argument
2497 unsigned int base = data->BaseAddress; in nsp32_wait_sack()
2526 static void nsp32_sack_assert(nsp32_hw_data *data) in nsp32_sack_assert() argument
2528 unsigned int base = data->BaseAddress; in nsp32_sack_assert()
2539 static void nsp32_sack_negate(nsp32_hw_data *data) in nsp32_sack_negate() argument
2541 unsigned int base = data->BaseAddress; in nsp32_sack_negate()
2562 nsp32_hw_data *data; in nsp32_detect() local
2580 data = (nsp32_hw_data *)host->hostdata; in nsp32_detect()
2582 memcpy(data, &nsp32_data_base, sizeof(nsp32_hw_data)); in nsp32_detect()
2584 host->irq = data->IrqNumber; in nsp32_detect()
2585 host->io_port = data->BaseAddress; in nsp32_detect()
2586 host->unique_id = data->BaseAddress; in nsp32_detect()
2587 host->n_io_port = data->NumAddress; in nsp32_detect()
2588 host->base = (unsigned long)data->MmioAddress; in nsp32_detect()
2590 data->Host = host; in nsp32_detect()
2591 spin_lock_init(&(data->Lock)); in nsp32_detect()
2593 data->cur_lunt = NULL; in nsp32_detect()
2594 data->cur_target = NULL; in nsp32_detect()
2599 data->trans_method = NSP32_TRANSFER_BUSMASTER; in nsp32_detect()
2606 data->clock = CLOCK_4; in nsp32_detect()
2611 switch (data->clock) { in nsp32_detect()
2614 data->synct = nsp32_sync_table_40M; in nsp32_detect()
2615 data->syncnum = ARRAY_SIZE(nsp32_sync_table_40M); in nsp32_detect()
2619 data->synct = nsp32_sync_table_20M; in nsp32_detect()
2620 data->syncnum = ARRAY_SIZE(nsp32_sync_table_20M); in nsp32_detect()
2624 data->synct = nsp32_sync_table_pci; in nsp32_detect()
2625 data->syncnum = ARRAY_SIZE(nsp32_sync_table_pci); in nsp32_detect()
2631 data->clock = CLOCK_4; in nsp32_detect()
2632 data->synct = nsp32_sync_table_40M; in nsp32_detect()
2633 data->syncnum = ARRAY_SIZE(nsp32_sync_table_40M); in nsp32_detect()
2651 data->autoparam = pci_alloc_consistent(pdev, sizeof(nsp32_autoparam), &(data->auto_paddr)); in nsp32_detect()
2652 if (data->autoparam == NULL) { in nsp32_detect()
2660 data->sg_list = pci_alloc_consistent(pdev, NSP32_SG_TABLE_SIZE, in nsp32_detect()
2661 &(data->sg_paddr)); in nsp32_detect()
2662 if (data->sg_list == NULL) { in nsp32_detect()
2667 for (i = 0; i < ARRAY_SIZE(data->lunt); i++) { in nsp32_detect()
2668 for (j = 0; j < ARRAY_SIZE(data->lunt[0]); j++) { in nsp32_detect()
2669 int offset = i * ARRAY_SIZE(data->lunt[0]) + j; in nsp32_detect()
2676 .sglun = &(data->sg_list[offset]), in nsp32_detect()
2677 .sglun_paddr = data->sg_paddr + (offset * sizeof(nsp32_sglun)), in nsp32_detect()
2680 data->lunt[i][j] = tmp; in nsp32_detect()
2687 for (i = 0; i < ARRAY_SIZE(data->target); i++) { in nsp32_detect()
2688 nsp32_target *target = &(data->target[i]); in nsp32_detect()
2692 nsp32_set_async(data, target); in nsp32_detect()
2698 ret = nsp32_getprom_param(data); in nsp32_detect()
2700 data->resettime = 3; /* default 3 */ in nsp32_detect()
2706 nsp32hw_init(data); in nsp32_detect()
2708 snprintf(data->info_str, sizeof(data->info_str), in nsp32_detect()
2730 nsp32_do_bus_reset(data); in nsp32_detect()
2732 ret = request_irq(host->irq, do_nsp32_isr, IRQF_SHARED, "nsp32", data); in nsp32_detect()
2746 data->BaseAddress, data->NumAddress); in nsp32_detect()
2763 free_irq(host->irq, data); in nsp32_detect()
2767 data->sg_list, data->sg_paddr); in nsp32_detect()
2771 data->autoparam, data->auto_paddr); in nsp32_detect()
2782 nsp32_hw_data *data = (nsp32_hw_data *)host->hostdata; in nsp32_release() local
2784 if (data->autoparam) { in nsp32_release()
2785 pci_free_consistent(data->Pci, sizeof(nsp32_autoparam), in nsp32_release()
2786 data->autoparam, data->auto_paddr); in nsp32_release()
2789 if (data->sg_list) { in nsp32_release()
2790 pci_free_consistent(data->Pci, NSP32_SG_TABLE_SIZE, in nsp32_release()
2791 data->sg_list, data->sg_paddr); in nsp32_release()
2795 free_irq(host->irq, data); in nsp32_release()
2802 if (data->MmioAddress) { in nsp32_release()
2803 iounmap(data->MmioAddress); in nsp32_release()
2811 nsp32_hw_data *data = (nsp32_hw_data *)shpnt->hostdata; in nsp32_info() local
2813 return data->info_str; in nsp32_info()
2822 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_eh_abort() local
2827 if (data->cur_lunt->SCpnt == NULL) { in nsp32_eh_abort()
2832 if (data->cur_target->sync_flag & (SDTR_INITIATOR | SDTR_TARGET)) { in nsp32_eh_abort()
2834 data->cur_target->sync_flag = 0; in nsp32_eh_abort()
2835 nsp32_set_async(data, data->cur_target); in nsp32_eh_abort()
2850 nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; in nsp32_eh_bus_reset() local
2859 nsp32_do_bus_reset(data); in nsp32_eh_bus_reset()
2866 static void nsp32_do_bus_reset(nsp32_hw_data *data) in nsp32_do_bus_reset() argument
2868 unsigned int base = data->BaseAddress; in nsp32_do_bus_reset()
2887 for (i = 0; i < ARRAY_SIZE(data->target); i++) { in nsp32_do_bus_reset()
2888 nsp32_target *target = &data->target[i]; in nsp32_do_bus_reset()
2891 nsp32_set_async(data, target); in nsp32_do_bus_reset()
2905 data->CurrentSC = NULL; in nsp32_do_bus_reset()
2912 nsp32_hw_data *data = (nsp32_hw_data *)host->hostdata; in nsp32_eh_host_reset() local
2919 nsp32hw_init(data); in nsp32_eh_host_reset()
2921 nsp32_do_bus_reset(data); in nsp32_eh_host_reset()
2936 static int nsp32_getprom_param(nsp32_hw_data *data) in nsp32_getprom_param() argument
2938 int vendor = data->pci_devid->vendor; in nsp32_getprom_param()
2939 int device = data->pci_devid->device; in nsp32_getprom_param()
2945 ret = nsp32_prom_read(data, 0x7e); in nsp32_getprom_param()
2950 ret = nsp32_prom_read(data, 0x7f); in nsp32_getprom_param()
2961 ret = nsp32_getprom_c16(data); in nsp32_getprom_param()
2964 ret = nsp32_getprom_at24(data); in nsp32_getprom_param()
2967 ret = nsp32_getprom_at24(data); in nsp32_getprom_param()
2975 val = nsp32_prom_read(data, i); in nsp32_getprom_param()
3011 static int nsp32_getprom_at24(nsp32_hw_data *data) in nsp32_getprom_at24() argument
3023 data->resettime = nsp32_prom_read(data, 0x12); in nsp32_getprom_at24()
3038 ret = nsp32_prom_read(data, 0x07); in nsp32_getprom_at24()
3060 target = &data->target[i]; in nsp32_getprom_at24()
3064 ret = nsp32_prom_read(data, i); in nsp32_getprom_at24()
3065 entry = nsp32_search_period_entry(data, target, ret); in nsp32_getprom_at24()
3098 static int nsp32_getprom_c16(nsp32_hw_data *data) in nsp32_getprom_c16() argument
3109 data->resettime = nsp32_prom_read(data, 0x11); in nsp32_getprom_c16()
3115 target = &data->target[i]; in nsp32_getprom_c16()
3116 ret = nsp32_prom_read(data, i); in nsp32_getprom_c16()
3134 entry = nsp32_search_period_entry(data, target, val); in nsp32_getprom_c16()
3149 static int nsp32_prom_read(nsp32_hw_data *data, int romaddr) in nsp32_prom_read() argument
3154 nsp32_prom_start(data); in nsp32_prom_read()
3157 nsp32_prom_write_bit(data, 1); /* 1 */ in nsp32_prom_read()
3158 nsp32_prom_write_bit(data, 0); /* 0 */ in nsp32_prom_read()
3159 nsp32_prom_write_bit(data, 1); /* 1 */ in nsp32_prom_read()
3160 nsp32_prom_write_bit(data, 0); /* 0 */ in nsp32_prom_read()
3161 nsp32_prom_write_bit(data, 0); /* A2: 0 (GND) */ in nsp32_prom_read()
3162 nsp32_prom_write_bit(data, 0); /* A1: 0 (GND) */ in nsp32_prom_read()
3163 nsp32_prom_write_bit(data, 0); /* A0: 0 (GND) */ in nsp32_prom_read()
3166 nsp32_prom_write_bit(data, 0); in nsp32_prom_read()
3169 nsp32_prom_write_bit(data, 0); in nsp32_prom_read()
3173 nsp32_prom_write_bit(data, ((romaddr >> i) & 1)); in nsp32_prom_read()
3177 nsp32_prom_write_bit(data, 0); in nsp32_prom_read()
3180 nsp32_prom_start(data); in nsp32_prom_read()
3183 nsp32_prom_write_bit(data, 1); /* 1 */ in nsp32_prom_read()
3184 nsp32_prom_write_bit(data, 0); /* 0 */ in nsp32_prom_read()
3185 nsp32_prom_write_bit(data, 1); /* 1 */ in nsp32_prom_read()
3186 nsp32_prom_write_bit(data, 0); /* 0 */ in nsp32_prom_read()
3187 nsp32_prom_write_bit(data, 0); /* A2: 0 (GND) */ in nsp32_prom_read()
3188 nsp32_prom_write_bit(data, 0); /* A1: 0 (GND) */ in nsp32_prom_read()
3189 nsp32_prom_write_bit(data, 0); /* A0: 0 (GND) */ in nsp32_prom_read()
3192 nsp32_prom_write_bit(data, 1); in nsp32_prom_read()
3195 nsp32_prom_write_bit(data, 0); in nsp32_prom_read()
3200 val += (nsp32_prom_read_bit(data) << i); in nsp32_prom_read()
3204 nsp32_prom_write_bit(data, 1); in nsp32_prom_read()
3207 nsp32_prom_stop(data); in nsp32_prom_read()
3212 static void nsp32_prom_set(nsp32_hw_data *data, int bit, int val) in nsp32_prom_set() argument
3214 int base = data->BaseAddress; in nsp32_prom_set()
3230 static int nsp32_prom_get(nsp32_hw_data *data, int bit) in nsp32_prom_get() argument
3232 int base = data->BaseAddress; in nsp32_prom_get()
3254 static void nsp32_prom_start (nsp32_hw_data *data) in nsp32_prom_start() argument
3257 nsp32_prom_set(data, SCL, 1); in nsp32_prom_start()
3258 nsp32_prom_set(data, SDA, 1); in nsp32_prom_start()
3259 nsp32_prom_set(data, ENA, 1); /* output mode */ in nsp32_prom_start()
3260 nsp32_prom_set(data, SDA, 0); /* keeping SCL=1 and transiting in nsp32_prom_start()
3262 nsp32_prom_set(data, SCL, 0); in nsp32_prom_start()
3265 static void nsp32_prom_stop (nsp32_hw_data *data) in nsp32_prom_stop() argument
3268 nsp32_prom_set(data, SCL, 1); in nsp32_prom_stop()
3269 nsp32_prom_set(data, SDA, 0); in nsp32_prom_stop()
3270 nsp32_prom_set(data, ENA, 1); /* output mode */ in nsp32_prom_stop()
3271 nsp32_prom_set(data, SDA, 1); in nsp32_prom_stop()
3272 nsp32_prom_set(data, SCL, 0); in nsp32_prom_stop()
3275 static void nsp32_prom_write_bit(nsp32_hw_data *data, int val) in nsp32_prom_write_bit() argument
3278 nsp32_prom_set(data, SDA, val); in nsp32_prom_write_bit()
3279 nsp32_prom_set(data, SCL, 1 ); in nsp32_prom_write_bit()
3280 nsp32_prom_set(data, SCL, 0 ); in nsp32_prom_write_bit()
3283 static int nsp32_prom_read_bit(nsp32_hw_data *data) in nsp32_prom_read_bit() argument
3288 nsp32_prom_set(data, ENA, 0); /* input mode */ in nsp32_prom_read_bit()
3289 nsp32_prom_set(data, SCL, 1); in nsp32_prom_read_bit()
3291 val = nsp32_prom_get(data, SDA); in nsp32_prom_read_bit()
3293 nsp32_prom_set(data, SCL, 0); in nsp32_prom_read_bit()
3294 nsp32_prom_set(data, ENA, 1); /* output mode */ in nsp32_prom_read_bit()
3323 nsp32_hw_data *data = (nsp32_hw_data *)host->hostdata; in nsp32_resume() local
3332 reg = nsp32_read2(data->BaseAddress, INDEX_REG); in nsp32_resume()
3334 nsp32_msg(KERN_INFO, "io=0x%x reg=0x%x", data->BaseAddress, reg); in nsp32_resume()
3341 nsp32hw_init (data); in nsp32_resume()
3342 nsp32_do_bus_reset(data); in nsp32_resume()
3357 nsp32_hw_data *data = &nsp32_data_base; in nsp32_probe() local
3367 data->Pci = pdev; in nsp32_probe()
3368 data->pci_devid = id; in nsp32_probe()
3369 data->IrqNumber = pdev->irq; in nsp32_probe()
3370 data->BaseAddress = pci_resource_start(pdev, 0); in nsp32_probe()
3371 data->NumAddress = pci_resource_len (pdev, 0); in nsp32_probe()
3372 data->MmioAddress = pci_ioremap_bar(pdev, 1); in nsp32_probe()
3373 data->MmioLength = pci_resource_len (pdev, 1); in nsp32_probe()
3381 data->MmioAddress, data->MmioLength, in nsp32_probe()