1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 /*
22  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
23  * Use is subject to license terms.
24  */
25 
26 #ifndef	_SYS_USB_UHCITGT_H
27 #define	_SYS_USB_UHCITGT_H
28 
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 /*
35  *  Shared function declarations
36  */
37 queue_head_t	*uhci_alloc_queue_head(uhci_state_t *uhcip);
38 uhci_state_t	*uhci_obtain_state(dev_info_t *dip);
39 
40 int		uhci_insert_ctrl_td(uhci_state_t *uhcip,
41 			usba_pipe_handle_data_t	*pipe_handle,
42 			usb_ctrl_req_t	*req,
43 			usb_flags_t		flags);
44 int		uhci_insert_bulk_td(uhci_state_t *uhcip,
45 			usba_pipe_handle_data_t	*pipe_handle,
46 			usb_bulk_req_t		*req,
47 			usb_flags_t		flags);
48 int		uhci_insert_intr_td(uhci_state_t *uhcip,
49 			usba_pipe_handle_data_t	*pipe_handle,
50 			usb_intr_req_t		*req,
51 			usb_flags_t		flags);
52 int		uhci_insert_isoc_td(
53 			uhci_state_t		*uhcip,
54 			usba_pipe_handle_data_t	*ph,
55 			usb_isoc_req_t		*isoc_req,
56 			size_t			length,
57 			usb_flags_t		usb_flags);
58 
59 void		uhci_remove_qh(uhci_state_t *uhcip, uhci_pipe_private_t *pp);
60 void		uhci_insert_qh(uhci_state_t *uhcip,
61 			usba_pipe_handle_data_t	*pipe_handle);
62 void		uhci_modify_td_active_bits(
63 			uhci_state_t		*uhcip,
64 			uhci_pipe_private_t	*pp);
65 
66 int		uhci_allocate_bandwidth(uhci_state_t *uhcip,
67 		    usba_pipe_handle_data_t *pipe_handle, uint_t *node);
68 void		uhci_deallocate_bandwidth(uhci_state_t *uhcip,
69 		    usba_pipe_handle_data_t *pipe_handle);
70 void		uhci_remove_tds_tws(uhci_state_t *uhcip,
71 		    usba_pipe_handle_data_t *ph);
72 void		uhci_remove_isoc_tds_tws(uhci_state_t *uhcip,
73 		    uhci_pipe_private_t *ph);
74 int		uhci_start_isoc_receive_polling(
75 			uhci_state_t		*uhcip,
76 			usba_pipe_handle_data_t	*ph,
77 			usb_isoc_req_t		*req,
78 			usb_flags_t		usb_flags);
79 
80 
81 void		uhci_save_data_toggle(uhci_pipe_private_t *pp);
82 int		uhci_handle_root_hub_request(
83 			uhci_state_t		*uhcip,
84 			usba_pipe_handle_data_t  *pipe_handle,
85 			usb_ctrl_req_t	*req);
86 
87 void		uhci_remove_bulk_tds_tws(uhci_state_t *uhcip,
88 			uhci_pipe_private_t *pp,
89 			int what);
90 void		uhci_root_hub_reset_occurred(uhci_state_t *uhcip,
91 			usb_port_t port);
92 int		uhci_root_hub_allocate_intr_pipe_resource(
93 			uhci_state_t *uhcip,
94 			usb_flags_t flags);
95 void		uhci_root_hub_intr_pipe_cleanup(uhci_state_t *uhcip,
96 						usb_cr_t cr);
97 void		uhci_hcdi_callback(uhci_state_t *uhcip,
98 			uhci_pipe_private_t *pp,
99 			usba_pipe_handle_data_t *ph,
100 			uhci_trans_wrapper_t *tw,
101 			usb_cr_t cr);
102 int		uhci_allocate_periodic_in_resource(uhci_state_t *uhcip,
103 			uhci_pipe_private_t *pp,
104 			uhci_trans_wrapper_t *tw, usb_flags_t flags);
105 
106 #ifdef __cplusplus
107 }
108 #endif
109 
110 #endif /* _SYS_USB_UHCITGT_H */
111