ahci_port_t
ahci_port_t *ahci_portp;
ahci_port_t *ahci_portp;
ahci_add_doneq(ahci_port_t *ahci_portp, sata_pkt_t *satapkt, int reason)
ahci_flush_doneq(ahci_port_t *ahci_portp)
ahci_port_t *ahci_portp;
static int ahci_check_slot_handle(ahci_port_t *, int);
static int ahci_setup_port_base_addresses(ahci_ctl_t *, ahci_port_t *);
static int ahci_alloc_rcvd_fis(ahci_ctl_t *, ahci_port_t *);
static void ahci_dealloc_rcvd_fis(ahci_port_t *);
ahci_port_t *ahci_portp;
static int ahci_alloc_cmd_list(ahci_ctl_t *, ahci_port_t *);
static void ahci_dealloc_cmd_list(ahci_ctl_t *, ahci_port_t *);
static int ahci_alloc_cmd_tables(ahci_ctl_t *, ahci_port_t *);
static void ahci_dealloc_cmd_tables(ahci_ctl_t *, ahci_port_t *);
static void ahci_alloc_pmult(ahci_ctl_t *, ahci_port_t *);
static void ahci_dealloc_pmult(ahci_ctl_t *, ahci_port_t *);
static int ahci_initialize_port(ahci_ctl_t *, ahci_port_t *, ahci_addr_t *);
static int ahci_initialize_pmult(ahci_ctl_t *, ahci_port_t *, ahci_addr_t *,
static int ahci_initialize_pmport(ahci_ctl_t *, ahci_port_t *, ahci_addr_t *);
ahci_do_sync_start(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
static int ahci_probe_pmult(ahci_ctl_t *, ahci_port_t *, ahci_addr_t *);
static int ahci_probe_pmport(ahci_ctl_t *, ahci_port_t *, ahci_addr_t *,
static int ahci_start_port(ahci_ctl_t *, ahci_port_t *, uint8_t);
static void ahci_find_dev_signature(ahci_ctl_t *, ahci_port_t *,
static int ahci_deliver_satapkt(ahci_ctl_t *, ahci_port_t *,
ahci_claim_free_slot(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
static int ahci_do_sync_start(ahci_ctl_t *, ahci_port_t *,
static int ahci_claim_free_slot(ahci_ctl_t *, ahci_port_t *,
static void ahci_add_doneq(ahci_port_t *, sata_pkt_t *, int);
static void ahci_flush_doneq(ahci_port_t *);
static int ahci_software_reset(ahci_ctl_t *, ahci_port_t *, ahci_addr_t *);
static int ahci_port_reset(ahci_ctl_t *, ahci_port_t *, ahci_addr_t *);
ahci_deliver_satapkt(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
static int ahci_pmport_reset(ahci_ctl_t *, ahci_port_t *, ahci_addr_t *);
static void ahci_reject_all_abort_pkts(ahci_ctl_t *, ahci_port_t *, uint8_t);
static int ahci_reset_device_reject_pkts(ahci_ctl_t *, ahci_port_t *,
static int ahci_reset_pmdevice_reject_pkts(ahci_ctl_t *, ahci_port_t *,
static int ahci_reset_port_reject_pkts(ahci_ctl_t *, ahci_port_t *,
static int ahci_put_port_into_notrunning_state(ahci_ctl_t *, ahci_port_t *,
static int ahci_restart_port_wait_till_ready(ahci_ctl_t *, ahci_port_t *,
static void ahci_mop_commands(ahci_ctl_t *, ahci_port_t *, uint32_t,
static uint32_t ahci_get_rdlogext_data(ahci_ctl_t *, ahci_port_t *, uint8_t);
static void ahci_get_rqsense_data(ahci_ctl_t *, ahci_port_t *,
static void ahci_fatal_error_recovery_handler(ahci_ctl_t *, ahci_port_t *,
static void ahci_pmult_error_recovery_handler(ahci_ctl_t *, ahci_port_t *,
static void ahci_timeout_pkts(ahci_ctl_t *, ahci_port_t *,
static void ahci_port_intr(ahci_ctl_t *, ahci_port_t *, uint8_t);
static int ahci_intr_cmd_cmplt(ahci_ctl_t *, ahci_port_t *, uint8_t);
static int ahci_intr_set_device_bits(ahci_ctl_t *, ahci_port_t *, uint8_t);
static int ahci_intr_ncq_events(ahci_ctl_t *, ahci_port_t *, ahci_addr_t *);
ahci_port_t *ahci_portp;
static int ahci_intr_pmult_sntf_events(ahci_ctl_t *, ahci_port_t *, uint8_t);
static int ahci_intr_port_connect_change(ahci_ctl_t *, ahci_port_t *, uint8_t);
ahci_port_t *, uint8_t);
static int ahci_intr_phyrdy_change(ahci_ctl_t *, ahci_port_t *, uint8_t);
static int ahci_intr_non_fatal_error(ahci_ctl_t *, ahci_port_t *,
static int ahci_intr_fatal_error(ahci_ctl_t *, ahci_port_t *,
static int ahci_intr_cold_port_detect(ahci_ctl_t *, ahci_port_t *, uint8_t);
ahci_port_t *ahci_portp, ahci_addr_t *addrp)
ahci_port_t *ahci_portp, ahci_addr_t *addrp)
ahci_port_t *ahci_portp, ahci_addr_t *addrp)
ahci_port_t *ahci_portp;
ahci_port_t *ahci_portp;
ahci_port_t *ahci_portp;
ahci_port_t *ahci_portp;
ahci_port_t *ahci_portp, uint8_t port)
ahci_port_t *ahci_portp;
ahci_port_t *ahci_portp = ahci_ctlp->ahcictl_ports[port];
ahci_check_slot_handle(ahci_port_t *ahci_portp, int slot)
ahci_port_t *ahci_portp;
ahci_port_t *ahci_portp;
ahci_port_t *ahci_portp;
ahci_alloc_pmult(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp)
ahci_dealloc_pmult(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp)
ahci_initialize_port(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
ahci_port_t *ahci_portp;
ahci_initialize_pmult(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
ahci_initialize_pmport(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
ahci_probe_pmult(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
ahci_probe_pmport(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
ahci_software_reset(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
ahci_port_reset(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
ahci_pmport_reset(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
ahci_port_t *ahci_portp;
ahci_find_dev_signature(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
ahci_start_port(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp, uint8_t port)
ahci_setup_port_base_addresses(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp)
ahci_port_t *ahci_portp;
(ahci_port_t *)kmem_zalloc(sizeof (ahci_port_t), KM_SLEEP);
kmem_free(ahci_portp, sizeof (ahci_port_t));
ahci_port_t *ahci_portp = ahci_ctlp->ahcictl_ports[port];
kmem_free(ahci_portp, sizeof (ahci_port_t));
ahci_alloc_rcvd_fis(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp)
ahci_dealloc_rcvd_fis(ahci_port_t *ahci_portp)
ahci_alloc_cmd_list(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp)
ahci_dealloc_cmd_list(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp)
ahci_alloc_cmd_tables(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp)
ahci_dealloc_cmd_tables(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp)
ahci_port_intr(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp, uint8_t port)
ahci_port_t *ahci_portp;
ahci_port_t *ahci_portp, uint8_t port)
ahci_port_t *ahci_portp, uint8_t port)
ahci_port_t *ahci_portp, ahci_addr_t *addrp)
ahci_intr_pmult_sntf_events(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
ahci_port_t *ahci_portp, uint8_t port)
ahci_port_t *ahci_portp, uint8_t port)
ahci_port_t *ahci_portp, uint8_t port)
ahci_intr_non_fatal_error(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
ahci_port_t *ahci_portp, uint8_t port, uint32_t intr_status)
ahci_port_t *ahci_portp, uint8_t port)
ahci_port_t *ahci_portp, uint8_t port)
ahci_port_t *ahci_portp, uint8_t port, int flag, int *reset_flag)
ahci_port_t *ahci_portp,
ahci_get_rdlogext_data(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
ahci_get_rqsense_data(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
ahci_port_t *ahci_portp, ahci_addr_t *addrp, uint32_t intr_status)
ahci_port_t *ahci_portp, uint8_t port, uint32_t intr_status)
ahci_port_t *ahci_portp;
ahci_timeout_pkts(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp,
ahci_port_t *ahci_portp;
_NOTE(READ_ONLY_DATA(ahci_port_t::ahciport_rcvd_fis_dma_handle))
_NOTE(READ_ONLY_DATA(ahci_port_t::ahciport_cmd_list_dma_handle))
_NOTE(READ_ONLY_DATA(ahci_port_t::ahciport_cmd_tables_dma_handle))
_NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
ahci_port_t::ahciport_device_type))
_NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
ahci_port_t::ahciport_port_state))
_NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
ahci_port_t::ahciport_flags))
_NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
ahci_port_t::ahciport_pending_tags))
_NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
ahci_port_t::ahciport_slot_pkts))
_NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
ahci_port_t::ahciport_slot_timeout))
_NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
ahci_port_t::ahciport_doneq))
_NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
ahci_port_t::ahciport_doneqtail))
_NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
ahci_port_t::ahciport_doneq_len))
_NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
ahci_port_t::ahciport_reset_in_progress))
_NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
ahci_port_t::ahciport_mop_in_progress))
_NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
ahci_port_t::ahciport_event_taskq))
ahci_port_t *ahcictl_ports[AHCI_MAX_PORTS];