xref: /netbsd-src/sys/arch/mips/adm5120/dev/ahcivar.h (revision 4e8e66439e246961c4367c78584be80e23f52897)
1 /*	$NetBSD: ahcivar.h,v 1.6 2016/04/23 10:15:29 skrll Exp $	*/
2 
3 /*-
4  * Copyright (c) 2007 Ruslan Ermilov and Vsevolod Lobko.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or
8  * without modification, are permitted provided that the following
9  * conditions are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above
13  *    copyright notice, this list of conditions and the following
14  *    disclaimer in the documentation and/or other materials provided
15  *    with the distribution.
16  * 3. The names of the authors may not be used to endorse or promote
17  *    products derived from this software without specific prior
18  *    written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY
21  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
23  * PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS
24  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
25  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
27  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
29  * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
31  * OF SUCH DAMAGE.
32  */
33 /*
34  * Copyright (c) 2001 The NetBSD Foundation, Inc.
35  * All rights reserved.
36  *
37  * This code is derived from software contributed to The NetBSD Foundation
38  * by Tetsuya Isaki.
39  *
40  * Redistribution and use in source and binary forms, with or without
41  * modification, are permitted provided that the following conditions
42  * are met:
43  * 1. Redistributions of source code must retain the above copyright
44  *    notice, this list of conditions and the following disclaimer.
45  * 2. Redistributions in binary form must reproduce the above copyright
46  *    notice, this list of conditions and the following disclaimer in the
47  *    documentation and/or other materials provided with the distribution.
48  *
49  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
50  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
51  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
52  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
53  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
54  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
55  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
56  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
57  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
58  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
59  * POSSIBILITY OF SUCH DAMAGE.
60  */
61 #ifndef	_AHCIVAR_H
62 #define	_AHCIVAR_H
63 
64 /*
65  * ADM5120 USB Host Controller
66  */
67 
68 #define MS_TO_TICKS(ms) ((ms) * hz / 1000)
69 #define delay_ms(X) \
70 	usb_delay_ms(&sc->sc_bus, (X));
71 
72 struct ahci_xfer {
73 	struct usbd_xfer *sx_xfer;
74 	callout_t sx_callout_t;
75 };
76 
77 struct ahci_softc {
78 	struct usbd_bus		 sc_bus;
79 	bus_space_tag_t		 sc_st;
80 	bus_space_handle_t	 sc_ioh;
81 	bus_dma_tag_t		 sc_dmat;
82 	void *sc_ih;			/* interrupt cookie */
83 
84 	kmutex_t		 sc_lock;
85 	kmutex_t		 sc_intr_lock;
86 
87 	void			(*sc_enable_power)(void *, int);
88 	void			(*sc_enable_intr)(void *, int);
89 	void			*sc_arg;
90 	int			 sc_powerstat;
91 #define POWER_ON	(1)
92 #define POWER_OFF	(0)
93 #define INTR_ON 	(1)
94 #define INTR_OFF	(0)
95 
96 	device_t		 sc_child;
97 
98 	device_t		 sc_parent;	/* parent device */
99 
100 	uint8_t			 sc_addr;	/* device address of root hub */
101 	uint8_t			 sc_conf;
102 	SIMPLEQ_HEAD(, usbd_xfer) sc_free_xfers;
103 
104 	/* Information for the root hub interrupt pipe */
105 	int			 sc_interval;
106 	struct usbd_xfer	*sc_intr_xfer;
107 	callout_t		 sc_poll_handle;
108 
109 	int				 sc_flags;
110 #define AHCDF_RESET	(0x01)
111 #define AHCDF_INSERT	(0x02)
112 
113 	/* Root HUB specific members */
114 	int				sc_fullspeed;
115 	int				sc_connect;	/* XXX */
116 	int				sc_change;
117 };
118 
119 int  ahci_intr(void *);
120 #endif	/* _AHCIVAR_H */
121