| H A D | xhci-ring.c | 3 * xHCI host controller driver 62 #include "xhci.h" 63 #include "xhci-trace.h" 65 static int queue_command(struct xhci_hcd *xhci, struct xhci_command *cmd, 193 void inc_deq(struct xhci_hcd *xhci, struct xhci_ring *ring) in inc_deq() 216 xhci_warn(xhci, "Missing link TRB at end of segment\n"); in inc_deq() 228 xhci_warn(xhci, "Ring is an endless link TRB loop\n"); in inc_deq() 239 static void inc_enq_past_link(struct xhci_hcd *xhci, struct xhci_ring *ring, u32 chain) in inc_enq_past_link() 249 * xHCI hardware can't handle the chain bit being cleared on a link TRB. in inc_enq_past_link() 254 if (!xhci_link_chain_quirk(xhci, rin in inc_enq_past_link() 188 inc_deq(struct xhci_hcd * xhci,struct xhci_ring * ring) inc_deq() argument 234 inc_enq_past_link(struct xhci_hcd * xhci,struct xhci_ring * ring,u32 chain) inc_enq_past_link() argument 285 inc_enq(struct xhci_hcd * xhci,struct xhci_ring * ring,bool more_trbs_coming) inc_enq() argument 381 xhci_ring_expansion_needed(struct xhci_hcd * xhci,struct xhci_ring * ring,unsigned int num_trbs) xhci_ring_expansion_needed() argument 424 xhci_ring_cmd_db(struct xhci_hcd * xhci) xhci_ring_cmd_db() argument 438 xhci_mod_cmd_timer(struct xhci_hcd * xhci) xhci_mod_cmd_timer() argument 444 xhci_next_queued_cmd(struct xhci_hcd * xhci) xhci_next_queued_cmd() argument 455 xhci_handle_stopped_cmd_ring(struct xhci_hcd * xhci,struct xhci_command * cur_cmd) xhci_handle_stopped_cmd_ring() argument 492 xhci_abort_cmd_ring(struct xhci_hcd * xhci,unsigned long flags) xhci_abort_cmd_ring() argument 551 xhci_ring_ep_doorbell(struct xhci_hcd * xhci,unsigned int slot_id,unsigned int ep_index,unsigned int stream_id) xhci_ring_ep_doorbell() argument 578 xhci_ring_doorbell_for_active_rings(struct xhci_hcd * xhci,unsigned int slot_id,unsigned int ep_index) xhci_ring_doorbell_for_active_rings() argument 602 xhci_get_virt_ep(struct xhci_hcd * xhci,unsigned int slot_id,unsigned int ep_index) xhci_get_virt_ep() argument 622 xhci_virt_ep_to_ring(struct xhci_hcd * xhci,struct xhci_virt_ep * ep,unsigned int stream_id) xhci_virt_ep_to_ring() argument 646 xhci_triad_to_transfer_ring(struct xhci_hcd * xhci,unsigned int slot_id,unsigned int ep_index,unsigned int stream_id) xhci_triad_to_transfer_ring() argument 666 xhci_get_hw_deq(struct xhci_hcd * xhci,struct xhci_virt_device * vdev,unsigned int ep_index,unsigned int stream_id) xhci_get_hw_deq() argument 689 xhci_move_deq_to_next_td(struct xhci_hcd * xhci,struct xhci_virt_ep * ep,unsigned int stream_id) xhci_move_deq_to_next_td() argument 783 td_to_noop(struct xhci_hcd * xhci,struct xhci_virt_ep * ep,struct xhci_td * td,bool flip_cycle) td_to_noop() argument 807 xhci_giveback_urb_in_irq(struct xhci_hcd * xhci,struct xhci_td * cur_td,int status) xhci_giveback_urb_in_irq() argument 827 xhci_unmap_one_bounce_buffer(struct xhci_hcd * xhci,struct xhci_ring * ring,struct xhci_td * td,struct xhci_segment * seg) xhci_unmap_one_bounce_buffer() argument 859 xhci_unmap_td_bounce_buffer(struct xhci_hcd * xhci,struct xhci_ring * ring,struct xhci_td * td) xhci_unmap_td_bounce_buffer() argument 877 xhci_td_cleanup(struct xhci_hcd * xhci,struct xhci_td * td,struct xhci_ring * ep_ring,int status) xhci_td_cleanup() argument 924 xhci_dequeue_td(struct xhci_hcd * xhci,struct xhci_td * td,struct xhci_ring * ring,u32 status) xhci_dequeue_td() argument 935 xhci_giveback_invalidated_tds(struct xhci_hcd * xhci,struct xhci_virt_ep * ep) xhci_giveback_invalidated_tds() argument 958 xhci_reset_halted_ep(struct xhci_hcd * xhci,unsigned int slot_id,unsigned int ep_index,enum xhci_ep_reset_type reset_type) xhci_reset_halted_ep() argument 982 xhci_handle_halted_endpoint(struct xhci_hcd * xhci,struct xhci_virt_ep * ep,struct xhci_td * td,enum xhci_ep_reset_type reset_type) xhci_handle_halted_endpoint() argument 1036 xhci_invalidate_cancelled_tds(struct xhci_hcd * xhci,struct xhci_virt_ep * ep) xhci_invalidate_cancelled_tds() argument 1152 xhci_process_cancelled_tds(struct xhci_hcd * xhci,struct xhci_virt_ep * ep) xhci_process_cancelled_tds() argument 1162 find_halted_td(struct xhci_hcd * xhci,struct xhci_virt_ep * ep) find_halted_td() argument 1187 xhci_handle_cmd_stop_ep(struct xhci_hcd * xhci,int slot_id,union xhci_trb * trb,u32 comp_code) xhci_handle_cmd_stop_ep() argument 1314 xhci_kill_ring_urbs(struct xhci_hcd * xhci,struct xhci_ring * ring) xhci_kill_ring_urbs() argument 1333 xhci_kill_endpoint_urbs(struct xhci_hcd * xhci,int slot_id,int ep_index) xhci_kill_endpoint_urbs() argument 1389 xhci_hc_died(struct xhci_hcd * xhci) xhci_hc_died() argument 1424 xhci_handle_cmd_set_deq(struct xhci_hcd * xhci,int slot_id,union xhci_trb * trb,u32 cmd_comp_code) xhci_handle_cmd_set_deq() argument 1564 xhci_handle_cmd_reset_ep(struct xhci_hcd * xhci,int slot_id,union xhci_trb * trb,u32 cmd_comp_code) xhci_handle_cmd_reset_ep() argument 1607 xhci_handle_cmd_disable_slot(struct xhci_hcd * xhci,int slot_id,u32 cmd_comp_code) xhci_handle_cmd_disable_slot() argument 1629 xhci_handle_cmd_config_ep(struct xhci_hcd * xhci,int slot_id) xhci_handle_cmd_config_ep() argument 1662 xhci_handle_cmd_addr_dev(struct xhci_hcd * xhci,int slot_id) xhci_handle_cmd_addr_dev() argument 1674 xhci_handle_cmd_reset_dev(struct xhci_hcd * xhci,int slot_id) xhci_handle_cmd_reset_dev() argument 1691 xhci_handle_cmd_nec_get_fw(struct xhci_hcd * xhci,struct xhci_event_cmd * event) xhci_handle_cmd_nec_get_fw() argument 1717 xhci_cleanup_command_queue(struct xhci_hcd * xhci) xhci_cleanup_command_queue() argument 1727 struct xhci_hcd *xhci; xhci_handle_command_timeout() local 1803 handle_cmd_completion(struct xhci_hcd * xhci,struct xhci_event_cmd * event) handle_cmd_completion() argument 1943 handle_vendor_event(struct xhci_hcd * xhci,union xhci_trb * event,u32 trb_type) handle_vendor_event() argument 1951 handle_device_notification(struct xhci_hcd * xhci,union xhci_trb * event) handle_device_notification() argument 1983 xhci_cavium_reset_phy_quirk(struct xhci_hcd * xhci) xhci_cavium_reset_phy_quirk() argument 2000 handle_port_status(struct xhci_hcd * xhci,union xhci_trb * event) handle_port_status() argument 2179 xhci_clear_hub_tt_buffer(struct xhci_hcd * xhci,struct xhci_td * td,struct xhci_virt_ep * ep) xhci_clear_hub_tt_buffer() argument 2204 xhci_halted_host_endpoint(struct xhci_hcd * xhci,struct xhci_ep_ctx * ep_ctx,unsigned int comp_code) xhci_halted_host_endpoint() argument 2233 xhci_is_vendor_info_code(struct xhci_hcd * xhci,unsigned int trb_comp_code) xhci_is_vendor_info_code() argument 2247 finish_td(struct xhci_hcd * xhci,struct xhci_virt_ep * ep,struct xhci_ring * ep_ring,struct xhci_td * td,u32 trb_comp_code) finish_td() argument 2306 process_ctrl_td(struct xhci_hcd * xhci,struct xhci_virt_ep * ep,struct xhci_ring * ep_ring,struct xhci_td * td,union xhci_trb * ep_trb,struct xhci_transfer_event * event) process_ctrl_td() argument 2401 process_isoc_td(struct xhci_hcd * xhci,struct xhci_virt_ep * ep,struct xhci_ring * ep_ring,struct xhci_td * td,union xhci_trb * ep_trb,struct xhci_transfer_event * event) process_isoc_td() argument 2505 process_bulk_intr_td(struct xhci_hcd * xhci,struct xhci_virt_ep * ep,struct xhci_ring * ep_ring,struct xhci_td * td,union xhci_trb * ep_trb,struct xhci_transfer_event * event) process_bulk_intr_td() argument 2574 handle_transferless_tx_event(struct xhci_hcd * xhci,struct xhci_virt_ep * ep,u32 trb_comp_code) handle_transferless_tx_event() argument 2600 xhci_spurious_success_tx_event(struct xhci_hcd * xhci,struct xhci_ring * ring) xhci_spurious_success_tx_event() argument 2632 handle_tx_event(struct xhci_hcd * xhci,struct xhci_interrupter * ir,struct xhci_transfer_event * event) handle_tx_event() argument 2992 xhci_handle_event_trb(struct xhci_hcd * xhci,struct xhci_interrupter * ir,union xhci_trb * event) xhci_handle_event_trb() argument 3044 xhci_update_erst_dequeue(struct xhci_hcd * xhci,struct xhci_interrupter * ir,bool clear_ehb) xhci_update_erst_dequeue() argument 3092 xhci_handle_events(struct xhci_hcd * xhci,struct xhci_interrupter * ir,bool skip_events) xhci_handle_events() argument 3153 xhci_skip_sec_intr_events(struct xhci_hcd * xhci,struct xhci_ring * ring,struct xhci_interrupter * ir) xhci_skip_sec_intr_events() argument 3185 struct xhci_hcd *xhci = hcd_to_xhci(hcd); xhci_irq() local 3244 queue_trb(struct xhci_hcd * xhci,struct xhci_ring * ring,bool more_trbs_coming,u32 field1,u32 field2,u32 field3,u32 field4) queue_trb() argument 3268 prepare_ring(struct xhci_hcd * xhci,struct xhci_ring * ep_ring,u32 ep_state,unsigned int num_trbs,gfp_t mem_flags) prepare_ring() argument 3330 prepare_transfer(struct xhci_hcd * xhci,struct xhci_virt_device * xdev,unsigned int ep_index,unsigned int stream_id,unsigned int num_trbs,struct urb * urb,unsigned int td_index,gfp_t mem_flags) prepare_transfer() argument 3437 giveback_first_trb(struct xhci_hcd * xhci,int slot_id,unsigned int ep_index,unsigned int stream_id,int start_cycle,struct xhci_generic_trb * start_trb) giveback_first_trb() argument 3488 xhci_queue_intr_tx(struct xhci_hcd * xhci,gfp_t mem_flags,struct urb * urb,int slot_id,unsigned int ep_index) xhci_queue_intr_tx() argument 3519 xhci_td_remainder(struct xhci_hcd * xhci,int transferred,int trb_buff_len,unsigned int td_total_len,struct urb * urb,bool more_trbs_coming) xhci_td_remainder() argument 3546 xhci_align_td(struct xhci_hcd * xhci,struct urb * urb,u32 enqd_len,u32 * trb_buff_len,struct xhci_segment * seg) xhci_align_td() argument 3616 xhci_queue_bulk_tx(struct xhci_hcd * xhci,gfp_t mem_flags,struct urb * urb,int slot_id,unsigned int ep_index) xhci_queue_bulk_tx() argument 3775 xhci_queue_ctrl_tx(struct xhci_hcd * xhci,gfp_t mem_flags,struct urb * urb,int slot_id,unsigned int ep_index) xhci_queue_ctrl_tx() argument 3930 xhci_get_burst_count(struct xhci_hcd * xhci,struct urb * urb,unsigned int total_packet_count) xhci_get_burst_count() argument 3950 xhci_get_last_burst_packet_count(struct xhci_hcd * xhci,struct urb * urb,unsigned int total_packet_count) xhci_get_last_burst_packet_count() argument 3976 xhci_ist_microframes(struct xhci_hcd * xhci) xhci_ist_microframes() argument 3986 xhci_isoc_td_uses_frame_id(struct xhci_hcd * xhci,struct urb * urb,struct xhci_virt_ep * ep,int i) xhci_isoc_td_uses_frame_id() argument 4021 xhci_get_isoc_start_frame(struct xhci_hcd * xhci,struct urb * urb,struct xhci_virt_ep * ep) xhci_get_isoc_start_frame() argument 4077 trb_block_event_intr(struct xhci_hcd * xhci,int num_tds,int i,struct xhci_interrupter * ir) trb_block_event_intr() argument 4096 xhci_queue_isoc_tx(struct xhci_hcd * xhci,gfp_t mem_flags,struct urb * urb,int slot_id,unsigned int ep_index) xhci_queue_isoc_tx() argument 4296 xhci_queue_isoc_tx_prepare(struct xhci_hcd * xhci,gfp_t mem_flags,struct urb * urb,int slot_id,unsigned int ep_index) xhci_queue_isoc_tx_prepare() argument 4355 queue_command(struct xhci_hcd * xhci,struct xhci_command * cmd,u32 field1,u32 field2,u32 field3,u32 field4,bool command_must_succeed) queue_command() argument 4404 xhci_queue_slot_control(struct xhci_hcd * xhci,struct xhci_command * cmd,u32 trb_type,u32 slot_id) xhci_queue_slot_control() argument 4412 xhci_queue_address_device(struct xhci_hcd * xhci,struct xhci_command * cmd,dma_addr_t in_ctx_ptr,u32 slot_id,enum xhci_setup_dev setup) xhci_queue_address_device() argument 4421 xhci_queue_vendor_command(struct xhci_hcd * xhci,struct xhci_command * cmd,u32 field1,u32 field2,u32 field3,u32 field4) xhci_queue_vendor_command() argument 4428 xhci_queue_reset_device(struct xhci_hcd * xhci,struct xhci_command * cmd,u32 slot_id) xhci_queue_reset_device() argument 4437 xhci_queue_configure_endpoint(struct xhci_hcd * xhci,struct xhci_command * cmd,dma_addr_t in_ctx_ptr,u32 slot_id,bool command_must_succeed) xhci_queue_configure_endpoint() argument 4448 xhci_queue_get_port_bw(struct xhci_hcd * xhci,struct xhci_command * cmd,dma_addr_t in_ctx_ptr,u8 dev_speed,bool command_must_succeed) xhci_queue_get_port_bw() argument 4459 xhci_queue_evaluate_context(struct xhci_hcd * xhci,struct xhci_command * cmd,dma_addr_t in_ctx_ptr,u32 slot_id,bool command_must_succeed) xhci_queue_evaluate_context() argument 4472 xhci_queue_stop_endpoint(struct xhci_hcd * xhci,struct xhci_command * cmd,int slot_id,unsigned int ep_index,int suspend) xhci_queue_stop_endpoint() argument 4484 xhci_queue_reset_ep(struct xhci_hcd * xhci,struct xhci_command * cmd,int slot_id,unsigned int ep_index,enum xhci_ep_reset_type reset_type) xhci_queue_reset_ep() argument [all...] |