• Home
  • Raw
  • Download

Lines Matching +full:ts +full:- +full:attached

2  * PMC-Sierra PM8001/8081/8088/8089 SAS/SATA based host adapters driver
4 * Copyright (c) 2008-2009 USI Co., Ltd.
18 * 3. Neither the names of the above-listed copyright holders nor the names
46 * pm8001_find_tag - from sas task to find out tag that belongs to this task
52 if (task->lldd_task) { in pm8001_find_tag()
54 ccb = task->lldd_task; in pm8001_find_tag()
55 *tag = ccb->ccb_tag; in pm8001_find_tag()
62 * pm8001_tag_free - free the no more needed tag
68 void *bitmap = pm8001_ha->rsvd_tags; in pm8001_tag_free()
74 spin_lock_irqsave(&pm8001_ha->bitmap_lock, flags); in pm8001_tag_free()
76 spin_unlock_irqrestore(&pm8001_ha->bitmap_lock, flags); in pm8001_tag_free()
80 * pm8001_tag_alloc - allocate a empty tag for task used.
86 void *bitmap = pm8001_ha->rsvd_tags; in pm8001_tag_alloc()
90 spin_lock_irqsave(&pm8001_ha->bitmap_lock, flags); in pm8001_tag_alloc()
93 spin_unlock_irqrestore(&pm8001_ha->bitmap_lock, flags); in pm8001_tag_alloc()
94 return -SAS_QUEUE_FULL; in pm8001_tag_alloc()
97 spin_unlock_irqrestore(&pm8001_ha->bitmap_lock, flags); in pm8001_tag_alloc()
105 * pm8001_mem_alloc - allocate memory for pm8001.
123 align_offset = (dma_addr_t)align - 1; in pm8001_mem_alloc()
124 mem_virt_alloc = dma_alloc_coherent(&pdev->dev, mem_size + align, in pm8001_mem_alloc()
127 return -ENOMEM; in pm8001_mem_alloc()
130 *virt_addr = (void *)mem_virt_alloc + phys_align - *pphys_addr; in pm8001_mem_alloc()
137 * pm8001_find_ha_by_dev - from domain device which come from sas layer to
144 struct sas_ha_struct *sha = dev->port->ha; in pm8001_find_ha_by_dev()
145 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_find_ha_by_dev()
150 * pm8001_phy_control - this function should be registered to
161 int rc = 0, phy_id = sas_phy->id; in pm8001_phy_control()
167 pm8001_ha = sas_phy->ha->lldd_ha; in pm8001_phy_control()
168 phy = &pm8001_ha->phy[phy_id]; in pm8001_phy_control()
169 pm8001_ha->phy[phy_id].enable_completion = &completion; in pm8001_phy_control()
171 if (PM8001_CHIP_DISP->fatal_errors(pm8001_ha)) { in pm8001_phy_control()
178 return -EFAULT; in pm8001_phy_control()
184 if (rates->minimum_linkrate) { in pm8001_phy_control()
185 pm8001_ha->phy[phy_id].minimum_linkrate = in pm8001_phy_control()
186 rates->minimum_linkrate; in pm8001_phy_control()
188 if (rates->maximum_linkrate) { in pm8001_phy_control()
189 pm8001_ha->phy[phy_id].maximum_linkrate = in pm8001_phy_control()
190 rates->maximum_linkrate; in pm8001_phy_control()
192 if (pm8001_ha->phy[phy_id].phy_state == PHY_LINK_DISABLE) { in pm8001_phy_control()
193 PM8001_CHIP_DISP->phy_start_req(pm8001_ha, phy_id); in pm8001_phy_control()
196 PM8001_CHIP_DISP->phy_ctl_req(pm8001_ha, phy_id, in pm8001_phy_control()
200 if (pm8001_ha->phy[phy_id].phy_state == PHY_LINK_DISABLE) { in pm8001_phy_control()
201 PM8001_CHIP_DISP->phy_start_req(pm8001_ha, phy_id); in pm8001_phy_control()
204 PM8001_CHIP_DISP->phy_ctl_req(pm8001_ha, phy_id, in pm8001_phy_control()
208 if (pm8001_ha->phy[phy_id].phy_state == PHY_LINK_DISABLE) { in pm8001_phy_control()
209 PM8001_CHIP_DISP->phy_start_req(pm8001_ha, phy_id); in pm8001_phy_control()
212 PM8001_CHIP_DISP->phy_ctl_req(pm8001_ha, phy_id, in pm8001_phy_control()
216 PM8001_CHIP_DISP->phy_ctl_req(pm8001_ha, phy_id, in pm8001_phy_control()
220 if (pm8001_ha->chip_id != chip_8001) { in pm8001_phy_control()
221 if (pm8001_ha->phy[phy_id].phy_state == in pm8001_phy_control()
223 sas_phy_disconnected(&phy->sas_phy); in pm8001_phy_control()
224 sas_notify_phy_event(&phy->sas_phy, in pm8001_phy_control()
226 phy->phy_attached = 0; in pm8001_phy_control()
229 if (pm8001_ha->phy[phy_id].phy_state == in pm8001_phy_control()
231 sas_phy_disconnected(&phy->sas_phy); in pm8001_phy_control()
232 sas_notify_phy_event(&phy->sas_phy, in pm8001_phy_control()
234 phy->phy_attached = 0; in pm8001_phy_control()
237 PM8001_CHIP_DISP->phy_stop_req(pm8001_ha, phy_id); in pm8001_phy_control()
240 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_phy_control()
241 if (pm8001_ha->chip_id == chip_8001) { in pm8001_phy_control()
242 if (-1 == pm8001_bar4_shift(pm8001_ha, in pm8001_phy_control()
244 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_phy_control()
245 return -EINVAL; in pm8001_phy_control()
249 struct sas_phy *phy = sas_phy->phy; in pm8001_phy_control()
250 u32 __iomem *qp = pm8001_ha->io_mem[2].memvirtaddr in pm8001_phy_control()
253 phy->invalid_dword_count = readl(qp); in pm8001_phy_control()
254 phy->running_disparity_error_count = readl(&qp[1]); in pm8001_phy_control()
255 phy->loss_of_dword_sync_count = readl(&qp[3]); in pm8001_phy_control()
256 phy->phy_reset_problem_count = readl(&qp[4]); in pm8001_phy_control()
258 if (pm8001_ha->chip_id == chip_8001) in pm8001_phy_control()
260 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_phy_control()
264 rc = -EOPNOTSUPP; in pm8001_phy_control()
271 * pm8001_scan_start - we should enable all HBA phys by sending the phy_start
281 pm8001_ha = sha->lldd_ha; in pm8001_scan_start()
283 if (pm8001_ha->chip_id == chip_8001) in pm8001_scan_start()
284 PM8001_CHIP_DISP->sas_re_init_req(pm8001_ha); in pm8001_scan_start()
285 for (i = 0; i < pm8001_ha->chip->n_phy; ++i) { in pm8001_scan_start()
286 pm8001_ha->phy[i].enable_completion = &completion; in pm8001_scan_start()
287 PM8001_CHIP_DISP->phy_start_req(pm8001_ha, i); in pm8001_scan_start()
307 * pm8001_task_prep_smp - the dispatcher function, prepare data for smp task
309 * @ccb: the ccb which attached to smp task
314 return PM8001_CHIP_DISP->smp_req(pm8001_ha, ccb); in pm8001_task_prep_smp()
319 struct ata_queued_cmd *qc = task->uldd_task; in pm8001_get_ncq_tag()
321 if (qc && ata_is_ncq(qc->tf.protocol)) { in pm8001_get_ncq_tag()
322 *tag = qc->tag; in pm8001_get_ncq_tag()
330 * pm8001_task_prep_ata - the dispatcher function, prepare data for sata task
332 * @ccb: the ccb which attached to sata task
337 return PM8001_CHIP_DISP->sata_req(pm8001_ha, ccb); in pm8001_task_prep_ata()
341 * pm8001_task_prep_internal_abort - the dispatcher function, prepare data
344 * @ccb: the ccb which attached to sata task
349 return PM8001_CHIP_DISP->task_abort(pm8001_ha, ccb); in pm8001_task_prep_internal_abort()
353 * pm8001_task_prep_ssp_tm - the dispatcher function, prepare task management data
355 * @ccb: the ccb which attached to TM
361 return PM8001_CHIP_DISP->ssp_tm_req(pm8001_ha, ccb, tmf); in pm8001_task_prep_ssp_tm()
365 * pm8001_task_prep_ssp - the dispatcher function, prepare ssp data for ssp task
367 * @ccb: the ccb which attached to ssp task
372 return PM8001_CHIP_DISP->ssp_io_req(pm8001_ha, ccb); in pm8001_task_prep_ssp()
375 /* Find the local port id that's attached to this device */
378 struct domain_device *pdev = dev->parent; in sas_find_local_port_id()
380 /* Directly attached device */ in sas_find_local_port_id()
382 return dev->port->id; in sas_find_local_port_id()
384 struct domain_device *pdev_p = pdev->parent; in sas_find_local_port_id()
386 return pdev->port->id; in sas_find_local_port_id()
387 pdev = pdev->parent; in sas_find_local_port_id()
393 ((!pm8001_dev || (pm8001_dev->dev_type == SAS_PHY_UNUSED)))
399 struct sas_task *task = ccb->task; in pm8001_deliver_command()
400 enum sas_protocol task_proto = task->task_proto; in pm8001_deliver_command()
401 struct sas_tmf_task *tmf = task->tmf; in pm8001_deliver_command()
417 dev_err(pm8001_ha->dev, "unknown sas_task proto: 0x%x\n", in pm8001_deliver_command()
421 return -EINVAL; in pm8001_deliver_command()
425 * pm8001_queue_command - register for upper layer used, all IO commands sent
432 struct task_status_struct *ts = &task->task_status; in pm8001_queue_command() local
433 enum sas_protocol task_proto = task->task_proto; in pm8001_queue_command()
434 struct domain_device *dev = task->dev; in pm8001_queue_command()
435 struct pm8001_device *pm8001_dev = dev->lldd_dev; in pm8001_queue_command()
444 if (!internal_abort && !dev->port) { in pm8001_queue_command()
445 ts->resp = SAS_TASK_UNDELIVERED; in pm8001_queue_command()
446 ts->stat = SAS_PHY_DOWN; in pm8001_queue_command()
447 if (dev->dev_type != SAS_SATA_DEV) in pm8001_queue_command()
448 task->task_done(task); in pm8001_queue_command()
453 if (pm8001_ha->controller_fatal_error) { in pm8001_queue_command()
454 ts->resp = SAS_TASK_UNDELIVERED; in pm8001_queue_command()
455 task->task_done(task); in pm8001_queue_command()
461 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_queue_command()
463 pm8001_dev = dev->lldd_dev; in pm8001_queue_command()
464 port = &pm8001_ha->port[sas_find_local_port_id(dev)]; in pm8001_queue_command()
467 (DEV_IS_GONE(pm8001_dev) || !port->port_attached)) { in pm8001_queue_command()
468 ts->resp = SAS_TASK_UNDELIVERED; in pm8001_queue_command()
469 ts->stat = SAS_PHY_DOWN; in pm8001_queue_command()
471 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_queue_command()
472 task->task_done(task); in pm8001_queue_command()
473 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_queue_command()
475 task->task_done(task); in pm8001_queue_command()
477 rc = -ENODEV; in pm8001_queue_command()
483 rc = -SAS_QUEUE_FULL; in pm8001_queue_command()
488 if (task->num_scatter) { in pm8001_queue_command()
489 n_elem = dma_map_sg(pm8001_ha->dev, task->scatter, in pm8001_queue_command()
490 task->num_scatter, task->data_dir); in pm8001_queue_command()
492 rc = -ENOMEM; in pm8001_queue_command()
497 n_elem = task->num_scatter; in pm8001_queue_command()
500 task->lldd_task = ccb; in pm8001_queue_command()
501 ccb->n_elem = n_elem; in pm8001_queue_command()
503 atomic_inc(&pm8001_dev->running_req); in pm8001_queue_command()
507 atomic_dec(&pm8001_dev->running_req); in pm8001_queue_command()
509 dma_unmap_sg(pm8001_ha->dev, task->scatter, in pm8001_queue_command()
510 task->num_scatter, task->data_dir); in pm8001_queue_command()
518 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_queue_command()
524 * pm8001_ccb_task_free - free the sg for ssp and smp command, free the ccb.
526 * @ccb: the ccb which attached to ssp task to free
531 struct sas_task *task = ccb->task; in pm8001_ccb_task_free()
538 if (!sas_protocol_ata(task->task_proto) && ccb->n_elem) in pm8001_ccb_task_free()
539 dma_unmap_sg(pm8001_ha->dev, task->scatter, in pm8001_ccb_task_free()
540 task->num_scatter, task->data_dir); in pm8001_ccb_task_free()
542 switch (task->task_proto) { in pm8001_ccb_task_free()
544 dma_unmap_sg(pm8001_ha->dev, &task->smp_task.smp_resp, 1, in pm8001_ccb_task_free()
546 dma_unmap_sg(pm8001_ha->dev, &task->smp_task.smp_req, 1, in pm8001_ccb_task_free()
558 if (sas_protocol_ata(task->task_proto)) { in pm8001_ccb_task_free()
560 qc = task->uldd_task; in pm8001_ccb_task_free()
561 pm8001_dev = ccb->device; in pm8001_ccb_task_free()
562 trace_pm80xx_request_complete(pm8001_ha->id, in pm8001_ccb_task_free()
563 pm8001_dev ? pm8001_dev->attached_phy : PM8001_MAX_PHYS, in pm8001_ccb_task_free()
564 ccb->ccb_tag, 0 /* ctlr_opcode not known */, in pm8001_ccb_task_free()
565 qc ? qc->tf.command : 0, // ata opcode in pm8001_ccb_task_free()
566 pm8001_dev ? atomic_read(&pm8001_dev->running_req) : -1); in pm8001_ccb_task_free()
569 task->lldd_task = NULL; in pm8001_ccb_task_free()
574 * pm8001_alloc_dev - find a empty pm8001_device
581 if (pm8001_ha->devices[dev].dev_type == SAS_PHY_UNUSED) { in pm8001_alloc_dev()
582 pm8001_ha->devices[dev].id = dev; in pm8001_alloc_dev()
583 return &pm8001_ha->devices[dev]; in pm8001_alloc_dev()
594 * pm8001_find_dev - find a matching pm8001_device
603 if (pm8001_ha->devices[dev].device_id == device_id) in pm8001_find_dev()
604 return &pm8001_ha->devices[dev]; in pm8001_find_dev()
614 u32 id = pm8001_dev->id; in pm8001_free_dev()
616 pm8001_dev->id = id; in pm8001_free_dev()
617 pm8001_dev->dev_type = SAS_PHY_UNUSED; in pm8001_free_dev()
618 pm8001_dev->device_id = PM8001_MAX_DEVICES; in pm8001_free_dev()
619 pm8001_dev->sas_device = NULL; in pm8001_free_dev()
623 * pm8001_dev_found_notify - libsas notify a device is found.
639 struct domain_device *parent_dev = dev->parent; in pm8001_dev_found_notify()
644 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_dev_found_notify()
648 res = -1; in pm8001_dev_found_notify()
651 pm8001_device->sas_device = dev; in pm8001_dev_found_notify()
652 dev->lldd_dev = pm8001_device; in pm8001_dev_found_notify()
653 pm8001_device->dev_type = dev->dev_type; in pm8001_dev_found_notify()
654 pm8001_device->dcompletion = &completion; in pm8001_dev_found_notify()
655 if (parent_dev && dev_is_expander(parent_dev->dev_type)) { in pm8001_dev_found_notify()
658 phy_id = sas_find_attached_phy_id(&parent_dev->ex_dev, dev); in pm8001_dev_found_notify()
661 "Error: no attached dev:%016llx at ex:%016llx.\n", in pm8001_dev_found_notify()
662 SAS_ADDR(dev->sas_addr), in pm8001_dev_found_notify()
663 SAS_ADDR(parent_dev->sas_addr)); in pm8001_dev_found_notify()
666 pm8001_device->attached_phy = phy_id; in pm8001_dev_found_notify()
669 if (dev->dev_type == SAS_SATA_DEV) { in pm8001_dev_found_notify()
670 pm8001_device->attached_phy = in pm8001_dev_found_notify()
671 dev->rphy->identify.phy_identifier; in pm8001_dev_found_notify()
676 PM8001_CHIP_DISP->reg_dev_req(pm8001_ha, pm8001_device, flag); in pm8001_dev_found_notify()
677 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_dev_found_notify()
679 if (dev->dev_type == SAS_END_DEVICE) in pm8001_dev_found_notify()
681 pm8001_ha->flags = PM8001F_RUN_TIME; in pm8001_dev_found_notify()
684 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_dev_found_notify()
696 * pm8001_dev_gone_notify - see the comments for "pm8001_dev_found_notify"
703 struct pm8001_device *pm8001_dev = dev->lldd_dev; in pm8001_dev_gone_notify()
706 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_dev_gone_notify()
708 u32 device_id = pm8001_dev->device_id; in pm8001_dev_gone_notify()
711 pm8001_dev->device_id, pm8001_dev->dev_type); in pm8001_dev_gone_notify()
712 if (atomic_read(&pm8001_dev->running_req)) { in pm8001_dev_gone_notify()
713 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_dev_gone_notify()
715 while (atomic_read(&pm8001_dev->running_req)) in pm8001_dev_gone_notify()
717 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_dev_gone_notify()
719 PM8001_CHIP_DISP->dereg_dev_req(pm8001_ha, device_id); in pm8001_dev_gone_notify()
724 dev->lldd_dev = NULL; in pm8001_dev_gone_notify()
725 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_dev_gone_notify()
745 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_open_reject_retry()
749 struct task_status_struct *ts; in pm8001_open_reject_retry() local
752 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[i]; in pm8001_open_reject_retry()
754 if (ccb->ccb_tag == PM8001_INVALID_TAG) in pm8001_open_reject_retry()
757 pm8001_dev = ccb->device; in pm8001_open_reject_retry()
758 if (!pm8001_dev || (pm8001_dev->dev_type == SAS_PHY_UNUSED)) in pm8001_open_reject_retry()
762 - (uintptr_t)&pm8001_ha->devices; in pm8001_open_reject_retry()
768 task = ccb->task; in pm8001_open_reject_retry()
769 if (!task || !task->task_done) in pm8001_open_reject_retry()
773 ts = &task->task_status; in pm8001_open_reject_retry()
774 ts->resp = SAS_TASK_COMPLETE; in pm8001_open_reject_retry()
776 ts->stat = SAS_OPEN_REJECT; in pm8001_open_reject_retry()
777 ts->open_rej_reason = SAS_OREJ_RSVD_RETRY; in pm8001_open_reject_retry()
779 atomic_dec(&pm8001_dev->running_req); in pm8001_open_reject_retry()
780 spin_lock_irqsave(&task->task_state_lock, flags1); in pm8001_open_reject_retry()
781 task->task_state_flags &= ~SAS_TASK_STATE_PENDING; in pm8001_open_reject_retry()
782 task->task_state_flags |= SAS_TASK_STATE_DONE; in pm8001_open_reject_retry()
783 if (unlikely((task->task_state_flags in pm8001_open_reject_retry()
785 spin_unlock_irqrestore(&task->task_state_lock, in pm8001_open_reject_retry()
789 spin_unlock_irqrestore(&task->task_state_lock, in pm8001_open_reject_retry()
793 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_open_reject_retry()
794 task->task_done(task); in pm8001_open_reject_retry()
795 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_open_reject_retry()
799 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_open_reject_retry()
803 * pm8001_I_T_nexus_reset() - reset the initiator/target connection
816 if (!dev || !dev->lldd_dev) in pm8001_I_T_nexus_reset()
817 return -ENODEV; in pm8001_I_T_nexus_reset()
819 pm8001_dev = dev->lldd_dev; in pm8001_I_T_nexus_reset()
832 "with rc %d\n", pm8001_dev->device_id, rc); in pm8001_I_T_nexus_reset()
840 "with rc %d\n", pm8001_dev->device_id, rc); in pm8001_I_T_nexus_reset()
848 pm8001_dev->device_id, rc); in pm8001_I_T_nexus_reset()
865 if (!dev || !dev->lldd_dev) in pm8001_I_T_nexus_event_handler()
866 return -1; in pm8001_I_T_nexus_event_handler()
868 pm8001_dev = dev->lldd_dev; in pm8001_I_T_nexus_event_handler()
892 pm8001_dev->setds_completion = &completion_setstate; in pm8001_I_T_nexus_event_handler()
909 pm8001_dev->device_id, rc); in pm8001_I_T_nexus_event_handler()
915 /* mandatory SAM-3, the task reset the specified LUN*/
919 struct pm8001_device *pm8001_dev = dev->lldd_dev; in pm8001_lu_reset()
923 if (PM8001_CHIP_DISP->fatal_errors(pm8001_ha)) { in pm8001_lu_reset()
938 pm8001_dev->setds_completion = &completion_setstate; in pm8001_lu_reset()
939 rc = PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha, in pm8001_lu_reset()
945 /* If failed, fall-through I_T_Nexus reset */ in pm8001_lu_reset()
947 pm8001_dev->device_id, rc); in pm8001_lu_reset()
951 /* optional SAM-3 */
956 if (unlikely(!task || !task->lldd_task || !task->dev)) in pm8001_query_task()
959 if (task->task_proto & SAS_PROTOCOL_SSP) { in pm8001_query_task()
960 struct scsi_cmnd *cmnd = task->uldd_task; in pm8001_query_task()
961 struct domain_device *dev = task->dev; in pm8001_query_task()
970 pm8001_dbg(pm8001_ha, EH, "Query:[%16ph]\n", cmnd->cmnd); in pm8001_query_task()
991 /* mandatory SAM-3, still need free task/ccb info, abort the specified task */
994 struct pm8001_ccb_info *ccb = task->lldd_task; in pm8001_abort_task()
1004 if (!task->lldd_task || !task->dev) in pm8001_abort_task()
1007 dev = task->dev; in pm8001_abort_task()
1008 pm8001_dev = dev->lldd_dev; in pm8001_abort_task()
1010 phy_id = pm8001_dev->attached_phy; in pm8001_abort_task()
1012 if (PM8001_CHIP_DISP->fatal_errors(pm8001_ha)) { in pm8001_abort_task()
1023 spin_lock_irqsave(&task->task_state_lock, flags); in pm8001_abort_task()
1024 if (task->task_state_flags & SAS_TASK_STATE_DONE) { in pm8001_abort_task()
1025 spin_unlock_irqrestore(&task->task_state_lock, flags); in pm8001_abort_task()
1028 task->task_state_flags |= SAS_TASK_STATE_ABORTED; in pm8001_abort_task()
1029 if (task->slow_task == NULL) { in pm8001_abort_task()
1031 task->slow_task = &slow_task; in pm8001_abort_task()
1033 spin_unlock_irqrestore(&task->task_state_lock, flags); in pm8001_abort_task()
1034 if (task->task_proto & SAS_PROTOCOL_SSP) { in pm8001_abort_task()
1037 } else if (task->task_proto & SAS_PROTOCOL_SATA || in pm8001_abort_task()
1038 task->task_proto & SAS_PROTOCOL_STP) { in pm8001_abort_task()
1039 if (pm8001_ha->chip_id == chip_8006) { in pm8001_abort_task()
1042 struct pm8001_phy *phy = pm8001_ha->phy + phy_id; in pm8001_abort_task()
1043 port_id = phy->port->port_id; in pm8001_abort_task()
1046 pm8001_dev->setds_completion = &completion; in pm8001_abort_task()
1047 PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha, in pm8001_abort_task()
1053 phy->port_reset_status = PORT_RESET_TMO; in pm8001_abort_task()
1054 phy->reset_success = false; in pm8001_abort_task()
1055 phy->enable_completion = &completion; in pm8001_abort_task()
1056 phy->reset_completion = &completion_reset; in pm8001_abort_task()
1057 ret = PM8001_CHIP_DISP->phy_ctl_req(pm8001_ha, phy_id, in pm8001_abort_task()
1060 phy->enable_completion = NULL; in pm8001_abort_task()
1061 phy->reset_completion = NULL; in pm8001_abort_task()
1077 if (!ret || !phy->reset_success) { in pm8001_abort_task()
1078 phy->enable_completion = NULL; in pm8001_abort_task()
1079 phy->reset_completion = NULL; in pm8001_abort_task()
1090 phy->reset_completion = NULL; in pm8001_abort_task()
1091 WARN_ON(phy->port_reset_status == in pm8001_abort_task()
1093 if (phy->port_reset_status == PORT_RESET_TMO) { in pm8001_abort_task()
1095 PM8001_CHIP_DISP->hw_event_ack_req( in pm8001_abort_task()
1113 &task->slow_task->completion, in pm8001_abort_task()
1120 pm8001_dev->setds_completion = &completion; in pm8001_abort_task()
1121 PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha, in pm8001_abort_task()
1131 ccb->task = NULL; in pm8001_abort_task()
1135 } else if (task->task_proto & SAS_PROTOCOL_SMP) { in pm8001_abort_task()
1141 spin_lock_irqsave(&task->task_state_lock, flags); in pm8001_abort_task()
1142 if (task->slow_task == &slow_task) in pm8001_abort_task()
1143 task->slow_task = NULL; in pm8001_abort_task()
1144 spin_unlock_irqrestore(&task->task_state_lock, flags); in pm8001_abort_task()
1152 struct pm8001_device *pm8001_dev = dev->lldd_dev; in pm8001_clear_task_set()
1156 pm8001_dev->device_id); in pm8001_clear_task_set()
1162 struct sas_ha_struct *sas_ha = sas_phy->ha; in pm8001_port_formed()
1163 struct pm8001_hba_info *pm8001_ha = sas_ha->lldd_ha; in pm8001_port_formed()
1164 struct pm8001_phy *phy = sas_phy->lldd_phy; in pm8001_port_formed()
1165 struct asd_sas_port *sas_port = sas_phy->port; in pm8001_port_formed()
1166 struct pm8001_port *port = phy->port; in pm8001_port_formed()
1172 sas_port->lldd_port = port; in pm8001_port_formed()
1178 struct pm8001_device *pm8001_dev = dev->lldd_dev; in pm8001_setds_completion()
1181 if (pm8001_ha->chip_id != chip_8001) { in pm8001_setds_completion()
1182 pm8001_dev->setds_completion = &completion_setstate; in pm8001_setds_completion()
1183 PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha, in pm8001_setds_completion()
1191 struct pm8001_ccb_info *ccb = task->lldd_task; in pm8001_tmf_aborted()
1194 ccb->task = NULL; in pm8001_tmf_aborted()