33#define USS820_MAX_DEVICES (USB_MIN_DEVICES + 1)
35#define USS820_EP_MAX 8
37#define USS820_TXDAT 0x00
39#define USS820_TXCNTL 0x01
40#define USS820_TXCNTL_MASK 0xFF
42#define USS820_TXCNTH 0x02
43#define USS820_TXCNTH_MASK 0x03
44#define USS820_TXCNTH_UNUSED 0xFC
46#define USS820_TXCON 0x03
47#define USS820_TXCON_REVRP 0x01
48#define USS820_TXCON_ADVRM 0x02
49#define USS820_TXCON_ATM 0x04
50#define USS820_TXCON_TXISO 0x08
51#define USS820_TXCON_UNUSED 0x10
52#define USS820_TXCON_FFSZ_16_64 0x00
53#define USS820_TXCON_FFSZ_64_256 0x20
54#define USS820_TXCON_FFSZ_8_512 0x40
55#define USS820_TXCON_FFSZ_32_1024 0x60
56#define USS820_TXCON_FFSZ_MASK 0x60
57#define USS820_TXCON_TXCLR 0x80
59#define USS820_TXFLG 0x04
60#define USS820_TXFLG_TXOVF 0x01
61#define USS820_TXFLG_TXURF 0x02
62#define USS820_TXFLG_TXFULL 0x04
63#define USS820_TXFLG_TXEMP 0x08
64#define USS820_TXFLG_UNUSED 0x30
65#define USS820_TXFLG_TXFIF0 0x40
66#define USS820_TXFLG_TXFIF1 0x80
68#define USS820_RXDAT 0x05
70#define USS820_RXCNTL 0x06
71#define USS820_RXCNTL_MASK 0xFF
73#define USS820_RXCNTH 0x07
74#define USS820_RXCNTH_MASK 0x03
75#define USS820_RXCNTH_UNUSED 0xFC
77#define USS820_RXCON 0x08
78#define USS820_RXCON_REVWP 0x01
79#define USS820_RXCON_ADVWM 0x02
80#define USS820_RXCON_ARM 0x04
81#define USS820_RXCON_RXISO 0x08
82#define USS820_RXCON_RXFFRC 0x10
83#define USS820_RXCON_FFSZ_16_64 0x00
84#define USS820_RXCON_FFSZ_64_256 0x20
85#define USS820_RXCON_FFSZ_8_512 0x40
86#define USS820_RXCON_FFSZ_32_1024 0x60
87#define USS820_RXCON_RXCLR 0x80
89#define USS820_RXFLG 0x09
90#define USS820_RXFLG_RXOVF 0x01
91#define USS820_RXFLG_RXURF 0x02
92#define USS820_RXFLG_RXFULL 0x04
93#define USS820_RXFLG_RXEMP 0x08
94#define USS820_RXFLG_RXFLUSH 0x10
95#define USS820_RXFLG_UNUSED 0x20
96#define USS820_RXFLG_RXFIF0 0x40
97#define USS820_RXFLG_RXFIF1 0x80
99#define USS820_EPINDEX 0x0a
100#define USS820_EPINDEX_MASK 0x07
101#define USS820_EPINDEX_UNUSED 0xF8
103#define USS820_EPCON 0x0b
104#define USS820_EPCON_TXEPEN 0x01
105#define USS820_EPCON_TXOE 0x02
106#define USS820_EPCON_RXEPEN 0x04
107#define USS820_EPCON_RXIE 0x08
108#define USS820_EPCON_RXSPM 0x10
109#define USS820_EPCON_CTLEP 0x20
110#define USS820_EPCON_TXSTL 0x40
111#define USS820_EPCON_RXSTL 0x80
113#define USS820_TXSTAT 0x0c
114#define USS820_TXSTAT_TXACK 0x01
115#define USS820_TXSTAT_TXERR 0x02
116#define USS820_TXSTAT_TXVOID 0x04
117#define USS820_TXSTAT_TXSOVW 0x08
119#define USS820_TXSTAT_TXFLUSH 0x10
120#define USS820_TXSTAT_TXNAKE 0x20
121#define USS820_TXSTAT_TXDSAM 0x40
122#define USS820_TXSTAT_TXSEQ 0x80
124#define USS820_RXSTAT 0x0d
125#define USS820_RXSTAT_RXACK 0x01
126#define USS820_RXSTAT_RXERR 0x02
127#define USS820_RXSTAT_RXVOID 0x04
128#define USS820_RXSTAT_RXSOVW 0x08
129#define USS820_RXSTAT_EDOVW 0x10
130#define USS820_RXSTAT_STOVW 0x20
131#define USS820_RXSTAT_RXSETUP 0x40
132#define USS820_RXSTAT_RXSEQ 0x80
134#define USS820_SOFL 0x0e
135#define USS820_SOFL_MASK 0xFF
137#define USS820_SOFH 0x0f
138#define USS820_SOFH_MASK 0x07
139#define USS820_SOFH_SOFDIS 0x08
140#define USS820_SOFH_FTLOCK 0x10
141#define USS820_SOFH_SOFIE 0x20
142#define USS820_SOFH_ASOF 0x40
143#define USS820_SOFH_SOFACK 0x80
145#define USS820_FADDR 0x10
146#define USS820_FADDR_MASK 0x7F
147#define USS820_FADDR_UNUSED 0x80
149#define USS820_SCR 0x11
150#define USS820_SCR_UNUSED 0x01
151#define USS820_SCR_T_IRQ 0x02
152#define USS820_SCR_IRQLVL 0x04
153#define USS820_SCR_SRESET 0x08
154#define USS820_SCR_IE_RESET 0x10
155#define USS820_SCR_IE_SUSP 0x20
156#define USS820_SCR_RWUPE 0x40
157#define USS820_SCR_IRQPOL 0x80
159#define USS820_SSR 0x12
160#define USS820_SSR_RESET 0x01
162#define USS820_SSR_SUSPEND 0x02
163#define USS820_SSR_RESUME 0x04
164#define USS820_SSR_SUSPDIS 0x08
165#define USS820_SSR_SUSPPO 0x10
166#define USS820_SSR_UNUSED 0xE0
168#define USS820_UNK0 0x13
169#define USS820_UNK0_UNUSED 0xFF
171#define USS820_SBI 0x14
172#define USS820_SBI_FTXD0 0x01
173#define USS820_SBI_FRXD0 0x02
174#define USS820_SBI_FTXD1 0x04
175#define USS820_SBI_FRXD1 0x08
176#define USS820_SBI_FTXD2 0x10
177#define USS820_SBI_FRXD2 0x20
178#define USS820_SBI_FTXD3 0x40
179#define USS820_SBI_FRXD3 0x80
181#define USS820_SBI1 0x15
182#define USS820_SBI1_FTXD4 0x01
183#define USS820_SBI1_FRXD4 0x02
184#define USS820_SBI1_FTXD5 0x04
185#define USS820_SBI1_FRXD5 0x08
186#define USS820_SBI1_FTXD6 0x10
187#define USS820_SBI1_FRXD6 0x20
188#define USS820_SBI1_FTXD7 0x40
189#define USS820_SBI1_FRXD7 0x80
191#define USS820_SBIE 0x16
192#define USS820_SBIE_FTXIE0 0x01
193#define USS820_SBIE_FRXIE0 0x02
194#define USS820_SBIE_FTXIE1 0x04
195#define USS820_SBIE_FRXIE1 0x08
196#define USS820_SBIE_FTXIE2 0x10
197#define USS820_SBIE_FRXIE2 0x20
198#define USS820_SBIE_FTXIE3 0x40
199#define USS820_SBIE_FRXIE3 0x80
201#define USS820_SBIE1 0x17
202#define USS820_SBIE1_FTXIE4 0x01
203#define USS820_SBIE1_FRXIE4 0x02
204#define USS820_SBIE1_FTXIE5 0x04
205#define USS820_SBIE1_FRXIE5 0x08
206#define USS820_SBIE1_FTXIE6 0x10
207#define USS820_SBIE1_FRXIE6 0x20
208#define USS820_SBIE1_FTXIE7 0x40
209#define USS820_SBIE1_FRXIE7 0x80
211#define USS820_REV 0x18
212#define USS820_REV_MIN 0x0F
213#define USS820_REV_MAJ 0xF0
215#define USS820_LOCK 0x19
216#define USS820_LOCK_UNLOCKED 0x01
217#define USS820_LOCK_UNUSED 0xFE
219#define USS820_PEND 0x1a
220#define USS820_PEND_PEND 0x01
221#define USS820_PEND_UNUSED 0xFE
223#define USS820_SCRATCH 0x1b
224#define USS820_SCRATCH_MASK 0x7F
225#define USS820_SCRATCH_IE_RESUME 0x80
227#define USS820_MCSR 0x1c
228#define USS820_MCSR_DPEN 0x01
229#define USS820_MCSR_SUSPLOE 0x02
230#define USS820_MCSR_BDFEAT 0x04
231#define USS820_MCSR_FEAT 0x08
232#define USS820_MCSR_PKGID 0x10
233#define USS820_MCSR_SUSPS 0x20
234#define USS820_MCSR_INIT 0x40
235#define USS820_MCSR_RWUPR 0x80
237#define USS820_DSAV 0x1d
238#define USS820_DSAV_TXAV0 0x01
239#define USS820_DSAV_RXAV0 0x02
240#define USS820_DSAV_TXAV1 0x04
241#define USS820_DSAV_RXAV1 0x08
242#define USS820_DSAV_TXAV2 0x10
243#define USS820_DSAV_RXAV2 0x20
244#define USS820_DSAV_TXAV3 0x40
245#define USS820_DSAV_RXAV3 0x80
247#define USS820_DSAV1 0x1e
248#define USS820_DSAV1_TXAV4 0x01
249#define USS820_DSAV1_RXAV4 0x02
250#define USS820_DSAV1_TXAV5 0x04
251#define USS820_DSAV1_RXAV5 0x08
252#define USS820_DSAV1_TXAV6 0x10
253#define USS820_DSAV1_RXAV6 0x20
254#define USS820_DSAV1_TXAV7 0x40
255#define USS820_DSAV1_RXAV7 0x80
257#define USS820_UNK1 0x1f
258#define USS820_UNK1_UNKNOWN 0xFF
260#ifndef USS820_REG_STRIDE
261#define USS820_REG_STRIDE 1
264#define USS820_READ_1(sc, reg) \
265 bus_space_read_1((sc)->sc_io_tag, (sc)->sc_io_hdl, (reg) * USS820_REG_STRIDE)
267#define USS820_WRITE_1(sc, reg, data) \
268 bus_space_write_1((sc)->sc_io_tag, (sc)->sc_io_hdl, (reg) * USS820_REG_STRIDE, (data))
struct usb_page_cache * pc
struct uss820dci_td * td_next
struct usb_interface_descriptor ifcd
struct usb_endpoint_descriptor endpd
struct usb_config_descriptor confd
bus_space_tag_t sc_io_tag
uint32_t sc_xfer_complete
bus_space_handle_t sc_io_hdl
struct uss820_flags sc_flags
struct resource * sc_irq_res
struct resource * sc_io_res
struct usb_device * sc_devices[USS820_MAX_DEVICES]
union uss820_hub_temp sc_hub_temp
struct usb_page_cache * pc
uint8_t support_multi_buffer
struct uss820dci_td * obj_next
struct usb_port_status ps
#define USS820_MAX_DEVICES
uint8_t() uss820dci_cmd_t(struct uss820dci_softc *, struct uss820dci_td *td)
void uss820dci_uninit(struct uss820dci_softc *sc)
usb_error_t uss820dci_init(struct uss820dci_softc *sc)
struct uss820dci_config_desc __packed
driver_intr_t uss820dci_interrupt
driver_filter_t uss820dci_filter_interrupt