\hypertarget{uhci_8h_source}{}\doxysection{uhci.\+h}
\label{uhci_8h_source}\index{dev/usb/controller/uhci.h@{dev/usb/controller/uhci.h}}
\mbox{\hyperlink{uhci_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00001}00001 \textcolor{comment}{/* \$FreeBSD\$ */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00002}00002 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00003}\mbox{\hyperlink{uhci_8h_a8a939d80c077affbb961d80e9b863cbe}{00003}} \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/FreeBSD}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00004}\mbox{\hyperlink{uhci_8h_a6c2168768c5f0cae4dd1c9465913c5a1}{00004}} \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00005}\mbox{\hyperlink{uhci_8h_a8163c26896f9ec87622cd4bffaabb1e0}{00005}} \textcolor{comment}{ * Copyright (c) 1998 The NetBSD Foundation, Inc.}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00006}\mbox{\hyperlink{uhci_8h_a56e33440d2d172a2f5b8b8e696a53430}{00006}} \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00007}\mbox{\hyperlink{uhci_8h_ac6a28b86cb95d8e1884f17e5433cce5c}{00007}} \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00008}\mbox{\hyperlink{uhci_8h_a0693b167d4b96015d59c0b68adf09018}{00008}} \textcolor{comment}{ * This code is derived from software contributed to The NetBSD Foundation}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00009}\mbox{\hyperlink{uhci_8h_a16f6194b7aa03ae52920a7226b0a43be}{00009}} \textcolor{comment}{ * by Lennart Augustsson (lennart@augustsson.net) at}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00010}\mbox{\hyperlink{uhci_8h_a8d1ca08c77ac3654a494e6ea14be4375}{00010}} \textcolor{comment}{ * Carlstedt Research \& Technology.}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00011}\mbox{\hyperlink{uhci_8h_a8a6d9ce2537dd89b5ff1589b2154d7d5}{00011}} \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00012}\mbox{\hyperlink{uhci_8h_adecdda3822ef689f63838bc256fd5023}{00012}} \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00013}\mbox{\hyperlink{uhci_8h_a76bebd4bac306c81ec24158225e70520}{00013}} \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00014}\mbox{\hyperlink{uhci_8h_a4e3b5aa37501236c6dea0ef5fe8205c2}{00014}} \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00015}\mbox{\hyperlink{uhci_8h_a38f45296e6e86843c6bffd52118a7843}{00015}} \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00016}\mbox{\hyperlink{uhci_8h_a0970b6df958f7f3e7ca9b8c39673356b}{00016}} \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00017}\mbox{\hyperlink{uhci_8h_a3ae9da25c93179b3c8952c4d974c711f}{00017}} \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00018}\mbox{\hyperlink{uhci_8h_ae85e164a33a80b74e86bf32ec9c329ea}{00018}} \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00019}\mbox{\hyperlink{uhci_8h_a3abc472b7ac061b4a806aeaa152e1e96}{00019}} \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00020}\mbox{\hyperlink{uhci_8h_ab8e55d179dfb52eeafb24695f1aae2a3}{00020}} \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00021}\mbox{\hyperlink{uhci_8h_ae0a4fe760016d22c10ab9d407a8355b6}{00021}} \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00022}\mbox{\hyperlink{uhci_8h_afe246a85b8dde16cb8a4e87cf0b53d75}{00022}} \textcolor{comment}{ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00023}\mbox{\hyperlink{uhci_8h_af429e4dee1df845cf00c387c61c52bae}{00023}} \textcolor{comment}{ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00024}\mbox{\hyperlink{uhci_8h_a54f7cbb52f209bf614542aa28040d75c}{00024}} \textcolor{comment}{ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00025}\mbox{\hyperlink{uhci_8h_a024b197e8317bc2c89552964704ae987}{00025}} \textcolor{comment}{ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00026}\mbox{\hyperlink{uhci_8h_a4fb9bbec311d77a451ccadc8ed6eebac}{00026}} \textcolor{comment}{ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00027}\mbox{\hyperlink{uhci_8h_ad03957e846aa24bdf97d424829ea1c6d}{00027}} \textcolor{comment}{ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00028}\mbox{\hyperlink{uhci_8h_af30bdd511f2ecea4ee7bda1382bf0cff}{00028}} \textcolor{comment}{ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00029}\mbox{\hyperlink{uhci_8h_a87955cc8dfec6fc8019759174aa6535c}{00029}} \textcolor{comment}{ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00030}\mbox{\hyperlink{uhci_8h_a7fc421456446d84144cd6871deaf0a08}{00030}} \textcolor{comment}{ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00031}\mbox{\hyperlink{uhci_8h_a9be91f3660ba8b4d5c7dbb15e4f54d98}{00031}} \textcolor{comment}{ * POSSIBILITY OF SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00032}\mbox{\hyperlink{uhci_8h_adeb7f170fc624ed40f0d3f1eb5f0c446}{00032}} \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00033}\mbox{\hyperlink{uhci_8h_a2521af45bec5db6e6b80cf37c0c424ca}{00033}} }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00034}\mbox{\hyperlink{uhci_8h_aca5d30ff574072e582bd4550d2c42108}{00034}} \textcolor{preprocessor}{\#ifndef \_UHCI\_H\_}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00035}\mbox{\hyperlink{uhci_8h_ad6919e4c55b786eebc48bc74944e3226}{00035}} \textcolor{preprocessor}{\#define \_UHCI\_H\_}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00036}\mbox{\hyperlink{uhci_8h_a3b5cb75c1d18c9910744bcdfadd6ef79}{00036}} }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00037}\mbox{\hyperlink{uhci_8h_a6ca3496a3776a42b7d23a633247cad9e}{00037}} \textcolor{preprocessor}{\#define UHCI\_MAX\_DEVICES MIN(USB\_MAX\_DEVICES, 128)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00038}00038 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00039}\mbox{\hyperlink{uhci_8h_a4e29fcb6e8bf72c9f1366e5f7a9ac1c6}{00039}} \textcolor{preprocessor}{\#define UHCI\_FRAMELIST\_COUNT    1024    }\textcolor{comment}{/* units */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00040}\mbox{\hyperlink{uhci_8h_ade9ce43c4574a1e3ee0cf8d25f646be9}{00040}} \textcolor{preprocessor}{\#define UHCI\_FRAMELIST\_ALIGN    4096    }\textcolor{comment}{/* bytes */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00041}\mbox{\hyperlink{uhci_8h_a8cbbc8c81e6bb752048c155863f2a760}{00041}} }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00042}\mbox{\hyperlink{uhci_8h_a490b389e45bc081240058ebc38413c76}{00042}} \textcolor{comment}{/* Structures alignment (bytes) */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00043}\mbox{\hyperlink{uhci_8h_a1e37869b6f594000b8836122ad8b9982}{00043}} \textcolor{preprocessor}{\#define UHCI\_TD\_ALIGN           16}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00044}\mbox{\hyperlink{uhci_8h_a5472749fd1eabeba03446a37fa34a7b5}{00044}} \textcolor{preprocessor}{\#define UHCI\_QH\_ALIGN           16}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00045}\mbox{\hyperlink{uhci_8h_a0b9447edeb7460dc2f2dc27cf7c52206}{00045}} }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00046}\mbox{\hyperlink{uhci_8h_a8aed22e2c7b283705ec82e0120515618}{00046}} \textcolor{preprocessor}{\#if     ((USB\_PAGE\_SIZE < UHCI\_TD\_ALIGN) || (UHCI\_TD\_ALIGN == 0) ||     \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00047}00047 \textcolor{preprocessor}{        (USB\_PAGE\_SIZE < UHCI\_QH\_ALIGN) || (UHCI\_QH\_ALIGN == 0))}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00048}00048 \textcolor{preprocessor}{\#error  "{}Invalid USB page size!"{}}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00049}00049 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00050}00050 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00051}\mbox{\hyperlink{uhci_8h_a754a2acf7b5e5bb1357fff621ab7bd5f}{00051}} \textcolor{keyword}{typedef} uint32\_t \mbox{\hyperlink{uhci_8h_a7b0ddab54f5aca833d0e8d5f190c4b8b}{uhci\_physaddr\_t}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00052}00052 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00053}\mbox{\hyperlink{uhci_8h_aac5a52a917f4264ac69e2cea5dbf429a}{00053}} \textcolor{preprocessor}{\#define UHCI\_PTR\_T              0x00000001}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00054}\mbox{\hyperlink{uhci_8h_a2df5d04d44d1c9a1fc9ca8661f789081}{00054}} \textcolor{preprocessor}{\#define UHCI\_PTR\_TD             0x00000000}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00055}\mbox{\hyperlink{uhci_8h_a91ec3b3f1db99bf8f6d6723bf5039307}{00055}} \textcolor{preprocessor}{\#define UHCI\_PTR\_QH             0x00000002}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00056}\mbox{\hyperlink{uhci_8h_a3df9544cb3ab3914d31e5e15802e3c1a}{00056}} \textcolor{preprocessor}{\#define UHCI\_PTR\_VF             0x00000004}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00057}00057 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00058}00058 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00059}00059 \textcolor{comment}{ * The Queue Heads (QH) and Transfer Descriptors (TD) are accessed by}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00060}00060 \textcolor{comment}{ * both the CPU and the USB-\/controller which run concurrently. Great}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00061}00061 \textcolor{comment}{ * care must be taken. When the data-\/structures are linked into the}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00062}00062 \textcolor{comment}{ * USB controller's frame list, the USB-\/controller "{}owns"{} the}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00063}00063 \textcolor{comment}{ * td\_status and qh\_elink fields, which will not be written by the}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00064}00064 \textcolor{comment}{ * CPU.}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00065}00065 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00066}00066 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00067}00067 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00068}\mbox{\hyperlink{structuhci__td}{00068}} \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__td}{uhci\_td}} \{}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00069}00069 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00070}00070 \textcolor{comment}{ * Data used by the UHCI controller.}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00071}00071 \textcolor{comment}{ * volatile is used in order to mantain struct members ordering.}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00072}00072 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00073}\mbox{\hyperlink{structuhci__td_ae3725fd65fcd0b0f31da834630689648}{00073}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structuhci__td_ae3725fd65fcd0b0f31da834630689648}{td\_next}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00074}\mbox{\hyperlink{structuhci__td_a98faa27e7d943c7f59668147eb9f7f79}{00074}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structuhci__td_a98faa27e7d943c7f59668147eb9f7f79}{td\_status}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00075}00075 \textcolor{preprocessor}{\#define UHCI\_TD\_GET\_ACTLEN(s)   (((s) + 1) \& 0x3ff)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00076}00076 \textcolor{preprocessor}{\#define UHCI\_TD\_ZERO\_ACTLEN(t)  ((t) | 0x3ff)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00077}00077 \textcolor{preprocessor}{\#define UHCI\_TD\_BITSTUFF        0x00020000}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00078}00078 \textcolor{preprocessor}{\#define UHCI\_TD\_CRCTO           0x00040000}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00079}00079 \textcolor{preprocessor}{\#define UHCI\_TD\_NAK             0x00080000}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00080}00080 \textcolor{preprocessor}{\#define UHCI\_TD\_BABBLE          0x00100000}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00081}00081 \textcolor{preprocessor}{\#define UHCI\_TD\_DBUFFER         0x00200000}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00082}00082 \textcolor{preprocessor}{\#define UHCI\_TD\_STALLED         0x00400000}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00083}00083 \textcolor{preprocessor}{\#define UHCI\_TD\_ACTIVE          0x00800000}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00084}00084 \textcolor{preprocessor}{\#define UHCI\_TD\_IOC             0x01000000}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00085}00085 \textcolor{preprocessor}{\#define UHCI\_TD\_IOS             0x02000000}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00086}00086 \textcolor{preprocessor}{\#define UHCI\_TD\_LS              0x04000000}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00087}00087 \textcolor{preprocessor}{\#define UHCI\_TD\_GET\_ERRCNT(s)   (((s) >> 27) \& 3)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00088}00088 \textcolor{preprocessor}{\#define UHCI\_TD\_SET\_ERRCNT(n)   ((n) << 27)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00089}00089 \textcolor{preprocessor}{\#define UHCI\_TD\_SPD             0x20000000}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00090}\mbox{\hyperlink{structuhci__td_a629a22bee0c109e7860e6758de720e71}{00090}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structuhci__td_a629a22bee0c109e7860e6758de720e71}{td\_token}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00091}00091 \textcolor{preprocessor}{\#define UHCI\_TD\_PID             0x000000ff}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00092}00092 \textcolor{preprocessor}{\#define UHCI\_TD\_PID\_IN          0x00000069}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00093}00093 \textcolor{preprocessor}{\#define UHCI\_TD\_PID\_OUT         0x000000e1}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00094}00094 \textcolor{preprocessor}{\#define UHCI\_TD\_PID\_SETUP       0x0000002d}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00095}00095 \textcolor{preprocessor}{\#define UHCI\_TD\_GET\_PID(s)      ((s) \& 0xff)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00096}00096 \textcolor{preprocessor}{\#define UHCI\_TD\_SET\_DEVADDR(a)  ((a) << 8)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00097}00097 \textcolor{preprocessor}{\#define UHCI\_TD\_GET\_DEVADDR(s)  (((s) >> 8) \& 0x7f)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00098}00098 \textcolor{preprocessor}{\#define UHCI\_TD\_SET\_ENDPT(e)    (((e) \& 0xf) << 15)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00099}00099 \textcolor{preprocessor}{\#define UHCI\_TD\_GET\_ENDPT(s)    (((s) >> 15) \& 0xf)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00100}00100 \textcolor{preprocessor}{\#define UHCI\_TD\_SET\_DT(t)       ((t) << 19)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00101}00101 \textcolor{preprocessor}{\#define UHCI\_TD\_GET\_DT(s)       (((s) >> 19) \& 1)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00102}00102 \textcolor{preprocessor}{\#define UHCI\_TD\_SET\_MAXLEN(l)   (((l)-\/1U) << 21)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00103}00103 \textcolor{preprocessor}{\#define UHCI\_TD\_GET\_MAXLEN(s)   ((((s) >> 21) + 1) \& 0x7ff)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00104}00104 \textcolor{preprocessor}{\#define UHCI\_TD\_MAXLEN\_MASK     0xffe00000}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00105}\mbox{\hyperlink{structuhci__td_a09209a453463fa9292c895be52c303ec}{00105}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structuhci__td_a09209a453463fa9292c895be52c303ec}{td\_buffer}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00106}00106 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00107}00107 \textcolor{comment}{ * Extra information needed:}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00108}00108 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00109}\mbox{\hyperlink{structuhci__td_abcd80b39f9c60d7de5ec63b53dde60ca}{00109}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__td}{uhci\_td}} *\mbox{\hyperlink{structuhci__td_abcd80b39f9c60d7de5ec63b53dde60ca}{next}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00110}\mbox{\hyperlink{structuhci__td_a03bd538dbdffaa1b1fbcae96bb8b06fb}{00110}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__td}{uhci\_td}} *\mbox{\hyperlink{structuhci__td_a03bd538dbdffaa1b1fbcae96bb8b06fb}{prev}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00111}\mbox{\hyperlink{structuhci__td_a6f0c25ff69233d6b515ea9bd84f29e81}{00111}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__td}{uhci\_td}} *\mbox{\hyperlink{structuhci__td_a6f0c25ff69233d6b515ea9bd84f29e81}{obj\_next}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00112}\mbox{\hyperlink{structuhci__td_a46616012e4c3c246b8186447a71a3b51}{00112}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *\mbox{\hyperlink{structuhci__td_a46616012e4c3c246b8186447a71a3b51}{page\_cache}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00113}\mbox{\hyperlink{structuhci__td_a4fa3d7cca42b188c15804187daa0f855}{00113}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *\mbox{\hyperlink{structuhci__td_a4fa3d7cca42b188c15804187daa0f855}{fix\_pc}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00114}\mbox{\hyperlink{structuhci__td_a28f4daa9ffe0fd0243ba88fc28feb078}{00114}}         uint32\_t \mbox{\hyperlink{structuhci__td_a28f4daa9ffe0fd0243ba88fc28feb078}{td\_self}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00115}\mbox{\hyperlink{structuhci__td_a0a250d4b1c6b07fb2a9923139a23824d}{00115}}         uint16\_t \mbox{\hyperlink{structuhci__td_a0a250d4b1c6b07fb2a9923139a23824d}{len}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00116}00116 \} \mbox{\hyperlink{uhci_8h_a754a2acf7b5e5bb1357fff621ab7bd5f}{\_\_aligned}}(\mbox{\hyperlink{uhci_8h_ae4a0a9a4592277d6a9b565bda5535e8f}{UHCI\_TD\_ALIGN}});}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00117}00117 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00118}\mbox{\hyperlink{uhci_8h_acc42f7054c382ef6458f747dd0a74cb1}{00118}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__td}{uhci\_td}} \mbox{\hyperlink{structuhci__td}{uhci\_td\_t}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00119}00119 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00120}\mbox{\hyperlink{uhci_8h_a81bc7c0bf658852a12bc00564ef17291}{00120}} \textcolor{preprocessor}{\#define UHCI\_TD\_ERROR   (UHCI\_TD\_BITSTUFF | UHCI\_TD\_CRCTO |             \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00121}00121 \textcolor{preprocessor}{                        UHCI\_TD\_BABBLE | UHCI\_TD\_DBUFFER | UHCI\_TD\_STALLED)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00122}00122 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00123}\mbox{\hyperlink{uhci_8h_a265ebab635a3db61bfac5366987ea87d}{00123}} \textcolor{preprocessor}{\#define UHCI\_TD\_SETUP(len, endp, dev)   (UHCI\_TD\_SET\_MAXLEN(len) |      \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00124}00124 \textcolor{preprocessor}{                                        UHCI\_TD\_SET\_ENDPT(endp) |       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00125}00125 \textcolor{preprocessor}{                                        UHCI\_TD\_SET\_DEVADDR(dev) |      \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00126}00126 \textcolor{preprocessor}{                                        UHCI\_TD\_PID\_SETUP)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00127}00127 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00128}\mbox{\hyperlink{uhci_8h_aed09f801477be98775ac1dc361c498e6}{00128}} \textcolor{preprocessor}{\#define UHCI\_TD\_OUT(len, endp, dev, dt) (UHCI\_TD\_SET\_MAXLEN(len) |      \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00129}00129 \textcolor{preprocessor}{                                        UHCI\_TD\_SET\_ENDPT(endp) |       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00130}00130 \textcolor{preprocessor}{                                        UHCI\_TD\_SET\_DEVADDR(dev) |      \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00131}00131 \textcolor{preprocessor}{                                        UHCI\_TD\_PID\_OUT | UHCI\_TD\_SET\_DT(dt))}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00132}00132 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00133}\mbox{\hyperlink{uhci_8h_aa079ae0188808af66f6a02c921fdf441}{00133}} \textcolor{preprocessor}{\#define UHCI\_TD\_IN(len, endp, dev, dt)  (UHCI\_TD\_SET\_MAXLEN(len) |      \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00134}00134 \textcolor{preprocessor}{                                        UHCI\_TD\_SET\_ENDPT(endp) |       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00135}00135 \textcolor{preprocessor}{                                        UHCI\_TD\_SET\_DEVADDR(dev) |      \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00136}00136 \textcolor{preprocessor}{                                        UHCI\_TD\_PID\_IN | UHCI\_TD\_SET\_DT(dt))}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00137}00137 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00138}\mbox{\hyperlink{structuhci__qh}{00138}} \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__qh}{uhci\_qh}} \{}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00139}00139 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00140}00140 \textcolor{comment}{ * Data used by the UHCI controller.}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00141}00141 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00142}\mbox{\hyperlink{structuhci__qh_a15ed23a7f45a4b8792fd38a294d8aed2}{00142}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structuhci__qh_a15ed23a7f45a4b8792fd38a294d8aed2}{qh\_h\_next}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00143}\mbox{\hyperlink{structuhci__qh_a265da6068bf8e3a1e7fe126f1fb94c21}{00143}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structuhci__qh_a265da6068bf8e3a1e7fe126f1fb94c21}{qh\_e\_next}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00144}00144 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00145}00145 \textcolor{comment}{ * Extra information needed:}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00146}00146 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00147}\mbox{\hyperlink{structuhci__qh_a741005a0233c2d948f63544903ebd2a7}{00147}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__qh}{uhci\_qh}} *\mbox{\hyperlink{structuhci__qh_a741005a0233c2d948f63544903ebd2a7}{h\_next}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00148}\mbox{\hyperlink{structuhci__qh_ae2fa2f94b7c5ea12c79bb1780a549b0d}{00148}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__qh}{uhci\_qh}} *\mbox{\hyperlink{structuhci__qh_ae2fa2f94b7c5ea12c79bb1780a549b0d}{h\_prev}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00149}\mbox{\hyperlink{structuhci__qh_adb243d155e226a466d6e390cbf064e19}{00149}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__qh}{uhci\_qh}} *\mbox{\hyperlink{structuhci__qh_adb243d155e226a466d6e390cbf064e19}{obj\_next}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00150}\mbox{\hyperlink{structuhci__qh_a830d470abeac947271b68c6e91de1582}{00150}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__td}{uhci\_td}} *\mbox{\hyperlink{structuhci__qh_a830d470abeac947271b68c6e91de1582}{e\_next}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00151}\mbox{\hyperlink{structuhci__qh_ae3bda4a10d3b0521d9d1f88e0f017278}{00151}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *\mbox{\hyperlink{structuhci__qh_ae3bda4a10d3b0521d9d1f88e0f017278}{page\_cache}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00152}\mbox{\hyperlink{structuhci__qh_a8b942f0a79c5cf5318c814e7bfea3487}{00152}}         uint32\_t \mbox{\hyperlink{structuhci__qh_a8b942f0a79c5cf5318c814e7bfea3487}{qh\_self}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00153}\mbox{\hyperlink{structuhci__qh_add003534795dbdb6fcefc2833fcb1fdb}{00153}}         uint16\_t \mbox{\hyperlink{structuhci__qh_add003534795dbdb6fcefc2833fcb1fdb}{intr\_pos}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00154}00154 \} \mbox{\hyperlink{uhci_8h_a754a2acf7b5e5bb1357fff621ab7bd5f}{\_\_aligned}}(\mbox{\hyperlink{uhci_8h_a0ccfd28e80b60f10c09ddb1db3a1aef1}{UHCI\_QH\_ALIGN}});}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00155}00155 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00156}\mbox{\hyperlink{uhci_8h_a582325b7dc9a7a597bf31e060b7b5453}{00156}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__qh}{uhci\_qh}} \mbox{\hyperlink{structuhci__qh}{uhci\_qh\_t}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00157}00157 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00158}00158 \textcolor{comment}{/* Maximum number of isochronous TD's and QH's interrupt */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00159}\mbox{\hyperlink{uhci_8h_ad60c0c86b9a216390eba82d6daa0df1a}{00159}} \textcolor{preprocessor}{\#define UHCI\_VFRAMELIST\_COUNT   128}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00160}\mbox{\hyperlink{uhci_8h_a7f6f70c11f66b72ca3c486e7970d7778}{00160}} \textcolor{preprocessor}{\#define UHCI\_IFRAMELIST\_COUNT   (2 * UHCI\_VFRAMELIST\_COUNT)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00161}00161 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00162}00162 \textcolor{preprocessor}{\#if     (((UHCI\_VFRAMELIST\_COUNT \& (UHCI\_VFRAMELIST\_COUNT-\/1)) != 0) ||  \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00163}00163 \textcolor{preprocessor}{        (UHCI\_VFRAMELIST\_COUNT > UHCI\_FRAMELIST\_COUNT))}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00164}00164 \textcolor{preprocessor}{\#error  "{}UHCI\_VFRAMELIST\_COUNT is not power of two"{}}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00165}00165 \textcolor{preprocessor}{\#error  "{}or UHCI\_VFRAMELIST\_COUNT > UHCI\_FRAMELIST\_COUNT"{}}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00166}00166 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00167}00167 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00168}00168 \textcolor{preprocessor}{\#if (UHCI\_VFRAMELIST\_COUNT < USB\_MAX\_FS\_ISOC\_FRAMES\_PER\_XFER)}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00169}00169 \textcolor{preprocessor}{\#error "{}maximum number of full-\/speed isochronous frames is higher than supported!"{}}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00170}00170 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00171}00171 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00172}\mbox{\hyperlink{structuhci__config__desc}{00172}} \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__config__desc}{uhci\_config\_desc}} \{}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00173}\mbox{\hyperlink{structuhci__config__desc_aa79ba5971d3b9bffc5231861439c81c8}{00173}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__config__descriptor}{usb\_config\_descriptor}} \mbox{\hyperlink{structuhci__config__desc_aa79ba5971d3b9bffc5231861439c81c8}{confd}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00174}\mbox{\hyperlink{structuhci__config__desc_a5dd81db2b379cb3b162a5dcb08f58052}{00174}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface__descriptor}{usb\_interface\_descriptor}} \mbox{\hyperlink{structuhci__config__desc_a5dd81db2b379cb3b162a5dcb08f58052}{ifcd}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00175}\mbox{\hyperlink{structuhci__config__desc_a7fb427420f99d341217d80c68f5e97d0}{00175}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__endpoint__descriptor}{usb\_endpoint\_descriptor}} \mbox{\hyperlink{structuhci__config__desc_a7fb427420f99d341217d80c68f5e97d0}{endpd}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00176}\mbox{\hyperlink{uhci_8h_a76a0b36dde36d24578a29ffa1c454d83}{00176}} \} \mbox{\hyperlink{uhci_8h_a76a0b36dde36d24578a29ffa1c454d83}{\_\_packed}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00177}00177 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00178}\mbox{\hyperlink{unionuhci__hub__desc}{00178}} \textcolor{keyword}{union }\mbox{\hyperlink{unionuhci__hub__desc}{uhci\_hub\_desc}} \{}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00179}\mbox{\hyperlink{unionuhci__hub__desc_a901747b9cb28a3409cfbc473f08e7c5b}{00179}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__status}{usb\_status}} \mbox{\hyperlink{unionuhci__hub__desc_a901747b9cb28a3409cfbc473f08e7c5b}{stat}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00180}\mbox{\hyperlink{unionuhci__hub__desc_a283225e69a7bb72fe82b925160a95499}{00180}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__port__status}{usb\_port\_status}} \mbox{\hyperlink{unionuhci__hub__desc_a283225e69a7bb72fe82b925160a95499}{ps}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00181}\mbox{\hyperlink{unionuhci__hub__desc_a02b006e33eba9f18706b00b03b17a9bf}{00181}}         uint8\_t \mbox{\hyperlink{unionuhci__hub__desc_a02b006e33eba9f18706b00b03b17a9bf}{temp}}[128];}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00182}00182 \};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00183}00183 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00184}\mbox{\hyperlink{structuhci__hw__softc}{00184}} \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__hw__softc}{uhci\_hw\_softc}} \{}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00185}\mbox{\hyperlink{structuhci__hw__softc_ab3db027965a0130a42af5e9a6fb1324f}{00185}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} \mbox{\hyperlink{structuhci__hw__softc_ab3db027965a0130a42af5e9a6fb1324f}{pframes\_pc}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00186}\mbox{\hyperlink{structuhci__hw__softc_adf1ed2f191b816070ddb4669df64a073}{00186}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} \mbox{\hyperlink{structuhci__hw__softc_adf1ed2f191b816070ddb4669df64a073}{isoc\_start\_pc}}[\mbox{\hyperlink{uhci_8h_ad60c0c86b9a216390eba82d6daa0df1a}{UHCI\_VFRAMELIST\_COUNT}}];}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00187}\mbox{\hyperlink{structuhci__hw__softc_a97b492f98c80e2636cc85c0243d4a507}{00187}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} \mbox{\hyperlink{structuhci__hw__softc_a97b492f98c80e2636cc85c0243d4a507}{intr\_start\_pc}}[\mbox{\hyperlink{uhci_8h_a7f6f70c11f66b72ca3c486e7970d7778}{UHCI\_IFRAMELIST\_COUNT}}];}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00188}\mbox{\hyperlink{structuhci__hw__softc_a4d4126a2b6d13cd4edbb10ef6326c4c0}{00188}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} \mbox{\hyperlink{structuhci__hw__softc_a4d4126a2b6d13cd4edbb10ef6326c4c0}{ls\_ctl\_start\_pc}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00189}\mbox{\hyperlink{structuhci__hw__softc_a6eeffeae0d359b0955d3c4190fba8251}{00189}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} \mbox{\hyperlink{structuhci__hw__softc_a6eeffeae0d359b0955d3c4190fba8251}{fs\_ctl\_start\_pc}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00190}\mbox{\hyperlink{structuhci__hw__softc_acba210325895b6727445932bdb349923}{00190}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} \mbox{\hyperlink{structuhci__hw__softc_acba210325895b6727445932bdb349923}{bulk\_start\_pc}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00191}\mbox{\hyperlink{structuhci__hw__softc_a6621b980b3241bf8437e12cf1c4b371f}{00191}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} \mbox{\hyperlink{structuhci__hw__softc_a6621b980b3241bf8437e12cf1c4b371f}{last\_qh\_pc}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00192}\mbox{\hyperlink{structuhci__hw__softc_ae43411a8962cd991bac5c1b403b44527}{00192}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} \mbox{\hyperlink{structuhci__hw__softc_ae43411a8962cd991bac5c1b403b44527}{last\_td\_pc}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00193}00193 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00194}\mbox{\hyperlink{structuhci__hw__softc_a3b8e38deb6dcd8b3225087eb7941f4d6}{00194}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page}{usb\_page}} \mbox{\hyperlink{structuhci__hw__softc_a3b8e38deb6dcd8b3225087eb7941f4d6}{pframes\_pg}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00195}\mbox{\hyperlink{structuhci__hw__softc_a9645661572a529a3683f36a13f8f20b3}{00195}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page}{usb\_page}} \mbox{\hyperlink{structuhci__hw__softc_a9645661572a529a3683f36a13f8f20b3}{isoc\_start\_pg}}[\mbox{\hyperlink{uhci_8h_ad60c0c86b9a216390eba82d6daa0df1a}{UHCI\_VFRAMELIST\_COUNT}}];}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00196}\mbox{\hyperlink{structuhci__hw__softc_a4bbd64ccd12a4d8f7af895635def893f}{00196}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page}{usb\_page}} \mbox{\hyperlink{structuhci__hw__softc_a4bbd64ccd12a4d8f7af895635def893f}{intr\_start\_pg}}[\mbox{\hyperlink{uhci_8h_a7f6f70c11f66b72ca3c486e7970d7778}{UHCI\_IFRAMELIST\_COUNT}}];}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00197}\mbox{\hyperlink{structuhci__hw__softc_a71680a9e6eae29c8becbc8bdc1980892}{00197}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page}{usb\_page}} \mbox{\hyperlink{structuhci__hw__softc_a71680a9e6eae29c8becbc8bdc1980892}{ls\_ctl\_start\_pg}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00198}\mbox{\hyperlink{structuhci__hw__softc_ad391c50206535648b3b744c385c0caf9}{00198}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page}{usb\_page}} \mbox{\hyperlink{structuhci__hw__softc_ad391c50206535648b3b744c385c0caf9}{fs\_ctl\_start\_pg}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00199}\mbox{\hyperlink{structuhci__hw__softc_a1c64536ca4451d0ff5932e9f58f9f184}{00199}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page}{usb\_page}} \mbox{\hyperlink{structuhci__hw__softc_a1c64536ca4451d0ff5932e9f58f9f184}{bulk\_start\_pg}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00200}\mbox{\hyperlink{structuhci__hw__softc_a2616ef766801e7bd9f47df8bb9610e72}{00200}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page}{usb\_page}} \mbox{\hyperlink{structuhci__hw__softc_a2616ef766801e7bd9f47df8bb9610e72}{last\_qh\_pg}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00201}\mbox{\hyperlink{structuhci__hw__softc_a04ddff95146d0db54cf05e2b0b83fadd}{00201}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page}{usb\_page}} \mbox{\hyperlink{structuhci__hw__softc_a04ddff95146d0db54cf05e2b0b83fadd}{last\_td\_pg}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00202}00202 \};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00203}00203 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00204}\mbox{\hyperlink{structuhci__softc}{00204}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__softc}{uhci\_softc}} \{}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00205}\mbox{\hyperlink{structuhci__softc_addb3ddadb7e7f71d80181fd5a8d035fd}{00205}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__hw__softc}{uhci\_hw\_softc}} \mbox{\hyperlink{structuhci__softc_addb3ddadb7e7f71d80181fd5a8d035fd}{sc\_hw}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00206}\mbox{\hyperlink{structuhci__softc_a1f42f33ccbb5bf2d41c4af18f11b9f4f}{00206}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__bus}{usb\_bus}} \mbox{\hyperlink{structuhci__softc_a1f42f33ccbb5bf2d41c4af18f11b9f4f}{sc\_bus}};             \textcolor{comment}{/* base device */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00207}\mbox{\hyperlink{structuhci__softc_a1b66a7fdda2bc29a77aeecb4db541a51}{00207}}         \textcolor{keyword}{union }\mbox{\hyperlink{unionuhci__hub__desc}{uhci\_hub\_desc}} \mbox{\hyperlink{structuhci__softc_a1b66a7fdda2bc29a77aeecb4db541a51}{sc\_hub\_desc}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00208}\mbox{\hyperlink{structuhci__softc_aed2b6471d1a1015385483bb948732999}{00208}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__callout}{usb\_callout}} \mbox{\hyperlink{structuhci__softc_aed2b6471d1a1015385483bb948732999}{sc\_root\_intr}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00209}00209 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00210}\mbox{\hyperlink{structuhci__softc_a634f363ee2d95fd5fb146476daea9ffe}{00210}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device}{usb\_device}} *\mbox{\hyperlink{structuhci__softc_a634f363ee2d95fd5fb146476daea9ffe}{sc\_devices}}[\mbox{\hyperlink{uhci_8h_a6ca3496a3776a42b7d23a633247cad9e}{UHCI\_MAX\_DEVICES}}];}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00211}00211         \textcolor{comment}{/* pointer to last TD for isochronous */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00212}\mbox{\hyperlink{structuhci__softc_a483b1b5ef9fca1223da81c48a5bf4180}{00212}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__td}{uhci\_td}} *\mbox{\hyperlink{structuhci__softc_a483b1b5ef9fca1223da81c48a5bf4180}{sc\_isoc\_p\_last}}[\mbox{\hyperlink{uhci_8h_ad60c0c86b9a216390eba82d6daa0df1a}{UHCI\_VFRAMELIST\_COUNT}}];}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00213}00213         \textcolor{comment}{/* pointer to last QH for interrupt */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00214}\mbox{\hyperlink{structuhci__softc_a6e9f0c6b354ca8b2084ef3d6b14598b7}{00214}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__qh}{uhci\_qh}} *\mbox{\hyperlink{structuhci__softc_a6e9f0c6b354ca8b2084ef3d6b14598b7}{sc\_intr\_p\_last}}[\mbox{\hyperlink{uhci_8h_a7f6f70c11f66b72ca3c486e7970d7778}{UHCI\_IFRAMELIST\_COUNT}}];}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00215}00215         \textcolor{comment}{/* pointer to last QH for low speed control */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00216}\mbox{\hyperlink{structuhci__softc_a391fa639d27b2439b46c6cea1ec3ee21}{00216}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__qh}{uhci\_qh}} *\mbox{\hyperlink{structuhci__softc_a391fa639d27b2439b46c6cea1ec3ee21}{sc\_ls\_ctl\_p\_last}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00217}00217         \textcolor{comment}{/* pointer to last QH for full speed control */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00218}\mbox{\hyperlink{structuhci__softc_a1de80ca9f0aa63b5fbd63cc95bcf9c83}{00218}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__qh}{uhci\_qh}} *\mbox{\hyperlink{structuhci__softc_a1de80ca9f0aa63b5fbd63cc95bcf9c83}{sc\_fs\_ctl\_p\_last}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00219}00219         \textcolor{comment}{/* pointer to last QH for bulk */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00220}\mbox{\hyperlink{structuhci__softc_a9344d6ec667bf583a7b474957345851e}{00220}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__qh}{uhci\_qh}} *\mbox{\hyperlink{structuhci__softc_a9344d6ec667bf583a7b474957345851e}{sc\_bulk\_p\_last}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00221}\mbox{\hyperlink{structuhci__softc_ab131a21aa85967e35dafb711bfc41cd7}{00221}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__qh}{uhci\_qh}} *\mbox{\hyperlink{structuhci__softc_ab131a21aa85967e35dafb711bfc41cd7}{sc\_reclaim\_qh\_p}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00222}\mbox{\hyperlink{structuhci__softc_a366ffdce6acfcc2f00c778dea1a7a354}{00222}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__qh}{uhci\_qh}} *\mbox{\hyperlink{structuhci__softc_a366ffdce6acfcc2f00c778dea1a7a354}{sc\_last\_qh\_p}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00223}\mbox{\hyperlink{structuhci__softc_ac8bde511f46ab90efcc10afe471d0be0}{00223}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhci__td}{uhci\_td}} *\mbox{\hyperlink{structuhci__softc_ac8bde511f46ab90efcc10afe471d0be0}{sc\_last\_td\_p}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00224}\mbox{\hyperlink{structuhci__softc_ac3c1e6e8865f7d29c59a733b318f2d95}{00224}}         \textcolor{keyword}{struct }resource *\mbox{\hyperlink{structuhci__softc_ac3c1e6e8865f7d29c59a733b318f2d95}{sc\_io\_res}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00225}\mbox{\hyperlink{structuhci__softc_a25971f71f186801bd43af30d264014e7}{00225}}         \textcolor{keyword}{struct }resource *\mbox{\hyperlink{structuhci__softc_a25971f71f186801bd43af30d264014e7}{sc\_irq\_res}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00226}\mbox{\hyperlink{structuhci__softc_a38cf1f23d15fa8630886c57d097884a2}{00226}}         \textcolor{keywordtype}{void}   *\mbox{\hyperlink{structuhci__softc_a38cf1f23d15fa8630886c57d097884a2}{sc\_intr\_hdl}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00227}\mbox{\hyperlink{structuhci__softc_a11333a6b299157618264b117ee6e5f02}{00227}}         device\_t \mbox{\hyperlink{structuhci__softc_a11333a6b299157618264b117ee6e5f02}{sc\_dev}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00228}\mbox{\hyperlink{structuhci__softc_aea8c4cbd50eb96aed88cbb37efa7727b}{00228}}         bus\_size\_t \mbox{\hyperlink{structuhci__softc_aea8c4cbd50eb96aed88cbb37efa7727b}{sc\_io\_size}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00229}\mbox{\hyperlink{structuhci__softc_a655b1d7cb79f63cf02c507f777fb28fc}{00229}}         bus\_space\_tag\_t \mbox{\hyperlink{structuhci__softc_a655b1d7cb79f63cf02c507f777fb28fc}{sc\_io\_tag}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00230}\mbox{\hyperlink{structuhci__softc_a346ee525fa6a6297bce3004973f8bd3d}{00230}}         bus\_space\_handle\_t \mbox{\hyperlink{structuhci__softc_a346ee525fa6a6297bce3004973f8bd3d}{sc\_io\_hdl}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00231}00231 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00232}\mbox{\hyperlink{structuhci__softc_a4c6060dad999f1e51a6d5cd2a2b116f9}{00232}}         uint32\_t \mbox{\hyperlink{structuhci__softc_a4c6060dad999f1e51a6d5cd2a2b116f9}{sc\_loops}};              \textcolor{comment}{/* number of QHs that wants looping */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00233}00233 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00234}\mbox{\hyperlink{structuhci__softc_a585e3511db78b632348743d251a7d830}{00234}}         uint16\_t \mbox{\hyperlink{structuhci__softc_a585e3511db78b632348743d251a7d830}{sc\_intr\_stat}}[\mbox{\hyperlink{uhci_8h_a7f6f70c11f66b72ca3c486e7970d7778}{UHCI\_IFRAMELIST\_COUNT}}];}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00235}00235 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00236}\mbox{\hyperlink{structuhci__softc_a01daf42256b77168bacf87bb04fab700}{00236}}         uint8\_t \mbox{\hyperlink{structuhci__softc_a01daf42256b77168bacf87bb04fab700}{sc\_addr}};         \textcolor{comment}{/* device address */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00237}\mbox{\hyperlink{structuhci__softc_ae6d8cd56b13064b7224fb58624203548}{00237}}         uint8\_t \mbox{\hyperlink{structuhci__softc_ae6d8cd56b13064b7224fb58624203548}{sc\_conf}};         \textcolor{comment}{/* device configuration */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00238}\mbox{\hyperlink{structuhci__softc_a07e645237c983461d2e81ad91fb70b4e}{00238}}         uint8\_t \mbox{\hyperlink{structuhci__softc_a07e645237c983461d2e81ad91fb70b4e}{sc\_isreset}};           \textcolor{comment}{/* bits set if a root hub is reset */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00239}\mbox{\hyperlink{structuhci__softc_a43720f50c05e4d929b101addc1421fca}{00239}}         uint8\_t \mbox{\hyperlink{structuhci__softc_a43720f50c05e4d929b101addc1421fca}{sc\_isresumed}};               \textcolor{comment}{/* bits set if a port was resumed */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00240}\mbox{\hyperlink{structuhci__softc_ae989d2431aae15fcc9579aee5005a6d9}{00240}}         uint8\_t \mbox{\hyperlink{structuhci__softc_ae989d2431aae15fcc9579aee5005a6d9}{sc\_hub\_idata}}[1];}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00241}00241 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00242}\mbox{\hyperlink{structuhci__softc_a66015825604fc3c5f0dd407535629455}{00242}}         \textcolor{keywordtype}{char}    \mbox{\hyperlink{structuhci__softc_a66015825604fc3c5f0dd407535629455}{sc\_vendor}}[16];         \textcolor{comment}{/* vendor string for root hub */}}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00243}\mbox{\hyperlink{uhci_8h_a067df8c3bb5214a17f8672acef600474}{00243}} \} \mbox{\hyperlink{uhci_8h_a067df8c3bb5214a17f8672acef600474}{uhci\_softc\_t}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00244}00244 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00245}\mbox{\hyperlink{uhci_8h_a3923e56eec51255fc2f68370795f3872}{00245}} \mbox{\hyperlink{usb__controller_8h_a8e0c620f0c41f1951cec11e056efbf79}{usb\_bus\_mem\_cb\_t}} \mbox{\hyperlink{uhci_8h_a3923e56eec51255fc2f68370795f3872}{uhci\_iterate\_hw\_softc}};}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00246}00246 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00247}00247 \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} \mbox{\hyperlink{uhci_8h_a011161d65b22c52f8f58a9b22b240037}{uhci\_init}}(\mbox{\hyperlink{structuhci__softc}{uhci\_softc\_t}} *sc);}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00248}00248 \textcolor{keywordtype}{void}    \mbox{\hyperlink{uhci_8h_abcb7474461b8b5bca23b1cb7d93896c9}{uhci\_reset}}(\mbox{\hyperlink{structuhci__softc}{uhci\_softc\_t}} *sc);}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00249}00249 \textcolor{keywordtype}{void}    \mbox{\hyperlink{uhci_8h_a81acdd3fdb2d7137b2c067a8c6b406e7}{uhci\_interrupt}}(\mbox{\hyperlink{structuhci__softc}{uhci\_softc\_t}} *sc);}
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00250}00250 }
\DoxyCodeLine{\Hypertarget{uhci_8h_source_l00251}00251 \textcolor{preprocessor}{\#endif                                  }\textcolor{comment}{/* \_UHCI\_H\_ */}\textcolor{preprocessor}{}}

\end{DoxyCode}
