Lines Matching refs:tp

549 static int esp_need_to_nego_wide(struct esp_target_data *tp)  in esp_need_to_nego_wide()  argument
551 struct scsi_target *target = tp->starget; in esp_need_to_nego_wide()
553 return spi_width(target) != tp->nego_goal_width; in esp_need_to_nego_wide()
556 static int esp_need_to_nego_sync(struct esp_target_data *tp) in esp_need_to_nego_sync() argument
558 struct scsi_target *target = tp->starget; in esp_need_to_nego_sync()
561 if (!spi_offset(target) && !tp->nego_goal_offset) in esp_need_to_nego_sync()
564 if (spi_offset(target) == tp->nego_goal_offset && in esp_need_to_nego_sync()
565 spi_period(target) == tp->nego_goal_period) in esp_need_to_nego_sync()
721 struct esp_target_data *tp; in esp_maybe_execute_command() local
747 tp = &esp->target[tgt]; in esp_maybe_execute_command()
762 if (tp->flags & ESP_TGT_CHECK_NEGO) { in esp_maybe_execute_command()
766 if (tp->flags & ESP_TGT_BROKEN) { in esp_maybe_execute_command()
767 tp->flags &= ~ESP_TGT_DISCONNECT; in esp_maybe_execute_command()
768 tp->nego_goal_period = 0; in esp_maybe_execute_command()
769 tp->nego_goal_offset = 0; in esp_maybe_execute_command()
770 tp->nego_goal_width = 0; in esp_maybe_execute_command()
771 tp->nego_goal_tags = 0; in esp_maybe_execute_command()
775 if (spi_width(tp->starget) == tp->nego_goal_width && in esp_maybe_execute_command()
776 spi_period(tp->starget) == tp->nego_goal_period && in esp_maybe_execute_command()
777 spi_offset(tp->starget) == tp->nego_goal_offset) { in esp_maybe_execute_command()
778 tp->flags &= ~ESP_TGT_CHECK_NEGO; in esp_maybe_execute_command()
782 if (esp->rev == FASHME && esp_need_to_nego_wide(tp)) { in esp_maybe_execute_command()
785 (tp->nego_goal_width ? in esp_maybe_execute_command()
787 tp->flags |= ESP_TGT_NEGO_WIDE; in esp_maybe_execute_command()
788 } else if (esp_need_to_nego_sync(tp)) { in esp_maybe_execute_command()
791 tp->nego_goal_period, in esp_maybe_execute_command()
792 tp->nego_goal_offset); in esp_maybe_execute_command()
793 tp->flags |= ESP_TGT_NEGO_SYNC; in esp_maybe_execute_command()
795 tp->flags &= ~ESP_TGT_CHECK_NEGO; in esp_maybe_execute_command()
799 if (tp->flags & (ESP_TGT_NEGO_WIDE | ESP_TGT_NEGO_SYNC)) in esp_maybe_execute_command()
808 if (lp && (tp->flags & ESP_TGT_DISCONNECT) && ent->tag[0]) in esp_maybe_execute_command()
1141 struct esp_target_data *tp; in esp_reconnect() local
1194 tp = &esp->target[target]; in esp_reconnect()
1195 dev = __scsi_device_lookup_by_target(tp->starget, lun); in esp_reconnect()
1256 struct esp_target_data *tp = &esp->target[cmd->device->id]; in esp_finish_select() local
1265 tp->flags &= ~(ESP_TGT_NEGO_SYNC | ESP_TGT_NEGO_WIDE); in esp_finish_select()
1424 static void esp_setsync(struct esp *esp, struct esp_target_data *tp, in esp_setsync() argument
1428 spi_period(tp->starget) = scsi_period; in esp_setsync()
1429 spi_offset(tp->starget) = scsi_offset; in esp_setsync()
1430 spi_width(tp->starget) = (tp->flags & ESP_TGT_WIDE) ? 1 : 0; in esp_setsync()
1443 tp->esp_config3 |= bit; in esp_setsync()
1445 tp->esp_config3 &= ~bit; in esp_setsync()
1447 esp->prev_cfg3 = tp->esp_config3; in esp_setsync()
1452 tp->esp_period = esp->prev_stp = esp_stp; in esp_setsync()
1453 tp->esp_offset = esp->prev_soff = esp_soff; in esp_setsync()
1458 tp->flags &= ~(ESP_TGT_NEGO_SYNC | ESP_TGT_CHECK_NEGO); in esp_setsync()
1460 spi_display_xfer_agreement(tp->starget); in esp_setsync()
1467 struct esp_target_data *tp; in esp_msgin_reject() local
1471 tp = &esp->target[tgt]; in esp_msgin_reject()
1473 if (tp->flags & ESP_TGT_NEGO_WIDE) { in esp_msgin_reject()
1474 tp->flags &= ~(ESP_TGT_NEGO_WIDE | ESP_TGT_WIDE); in esp_msgin_reject()
1476 if (!esp_need_to_nego_sync(tp)) { in esp_msgin_reject()
1477 tp->flags &= ~ESP_TGT_CHECK_NEGO; in esp_msgin_reject()
1482 tp->nego_goal_period, in esp_msgin_reject()
1483 tp->nego_goal_offset); in esp_msgin_reject()
1484 tp->flags |= ESP_TGT_NEGO_SYNC; in esp_msgin_reject()
1490 if (tp->flags & ESP_TGT_NEGO_SYNC) { in esp_msgin_reject()
1491 tp->flags &= ~(ESP_TGT_NEGO_SYNC | ESP_TGT_CHECK_NEGO); in esp_msgin_reject()
1492 tp->esp_period = 0; in esp_msgin_reject()
1493 tp->esp_offset = 0; in esp_msgin_reject()
1494 esp_setsync(esp, tp, 0, 0, 0, 0); in esp_msgin_reject()
1504 static void esp_msgin_sdtr(struct esp *esp, struct esp_target_data *tp) in esp_msgin_sdtr() argument
1510 if (!(tp->flags & ESP_TGT_NEGO_SYNC)) in esp_msgin_sdtr()
1536 esp_setsync(esp, tp, period, offset, stp, offset); in esp_msgin_sdtr()
1546 tp->nego_goal_period = period; in esp_msgin_sdtr()
1547 tp->nego_goal_offset = offset; in esp_msgin_sdtr()
1550 tp->nego_goal_period, in esp_msgin_sdtr()
1551 tp->nego_goal_offset); in esp_msgin_sdtr()
1555 static void esp_msgin_wdtr(struct esp *esp, struct esp_target_data *tp) in esp_msgin_wdtr() argument
1566 if (!(tp->flags & ESP_TGT_NEGO_WIDE)) in esp_msgin_wdtr()
1569 cfg3 = tp->esp_config3; in esp_msgin_wdtr()
1571 tp->flags |= ESP_TGT_WIDE; in esp_msgin_wdtr()
1574 tp->flags &= ~ESP_TGT_WIDE; in esp_msgin_wdtr()
1577 tp->esp_config3 = cfg3; in esp_msgin_wdtr()
1581 tp->flags &= ~ESP_TGT_NEGO_WIDE; in esp_msgin_wdtr()
1583 spi_period(tp->starget) = 0; in esp_msgin_wdtr()
1584 spi_offset(tp->starget) = 0; in esp_msgin_wdtr()
1585 if (!esp_need_to_nego_sync(tp)) { in esp_msgin_wdtr()
1586 tp->flags &= ~ESP_TGT_CHECK_NEGO; in esp_msgin_wdtr()
1591 tp->nego_goal_period, in esp_msgin_wdtr()
1592 tp->nego_goal_offset); in esp_msgin_wdtr()
1593 tp->flags |= ESP_TGT_NEGO_SYNC; in esp_msgin_wdtr()
1608 struct esp_target_data *tp; in esp_msgin_extended() local
1611 tp = &esp->target[tgt]; in esp_msgin_extended()
1613 esp_msgin_sdtr(esp, tp); in esp_msgin_extended()
1617 esp_msgin_wdtr(esp, tp); in esp_msgin_extended()
2092 struct esp_target_data *tp = &esp->target[i]; in esp_reset_cleanup() local
2094 tp->esp_period = 0; in esp_reset_cleanup()
2095 tp->esp_offset = 0; in esp_reset_cleanup()
2096 tp->esp_config3 &= ~(ESP_CONFIG3_EWIDE | in esp_reset_cleanup()
2099 tp->flags &= ~ESP_TGT_WIDE; in esp_reset_cleanup()
2100 tp->flags |= ESP_TGT_CHECK_NEGO; in esp_reset_cleanup()
2102 if (tp->starget) in esp_reset_cleanup()
2103 __starget_for_each_device(tp->starget, NULL, in esp_reset_cleanup()
2444 struct esp_target_data *tp = &esp->target[starget->id]; in esp_target_alloc() local
2446 tp->starget = starget; in esp_target_alloc()
2454 struct esp_target_data *tp = &esp->target[starget->id]; in esp_target_destroy() local
2456 tp->starget = NULL; in esp_target_destroy()
2462 struct esp_target_data *tp = &esp->target[dev->id]; in esp_slave_alloc() local
2470 spi_min_period(tp->starget) = esp->min_period; in esp_slave_alloc()
2471 spi_max_offset(tp->starget) = 15; in esp_slave_alloc()
2474 spi_max_width(tp->starget) = 1; in esp_slave_alloc()
2476 spi_max_width(tp->starget) = 0; in esp_slave_alloc()
2484 struct esp_target_data *tp = &esp->target[dev->id]; in esp_slave_configure() local
2489 tp->flags |= ESP_TGT_DISCONNECT; in esp_slave_configure()
2717 struct esp_target_data *tp = &esp->target[target->id]; in esp_set_offset() local
2720 tp->nego_goal_offset = 0; in esp_set_offset()
2722 tp->nego_goal_offset = offset; in esp_set_offset()
2723 tp->flags |= ESP_TGT_CHECK_NEGO; in esp_set_offset()
2730 struct esp_target_data *tp = &esp->target[target->id]; in esp_set_period() local
2732 tp->nego_goal_period = period; in esp_set_period()
2733 tp->flags |= ESP_TGT_CHECK_NEGO; in esp_set_period()
2740 struct esp_target_data *tp = &esp->target[target->id]; in esp_set_width() local
2742 tp->nego_goal_width = (width ? 1 : 0); in esp_set_width()
2743 tp->flags |= ESP_TGT_CHECK_NEGO; in esp_set_width()