\hypertarget{ohci_8h_source}{}\doxysection{ohci.\+h}
\label{ohci_8h_source}\index{dev/usb/controller/ohci.h@{dev/usb/controller/ohci.h}}
\mbox{\hyperlink{ohci_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00001}\mbox{\hyperlink{ohci_8h_a6d6ef6d0f42860587e343ded0dd5d3d3}{00001}} \textcolor{comment}{/* \$FreeBSD\$ */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00002}\mbox{\hyperlink{ohci_8h_a9bf4ffc71ed4464695ab39f9991a98b5}{00002}} \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00003}\mbox{\hyperlink{ohci_8h_ada7d19137ce791f8a12c9ba4815139a2}{00003}} \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/NetBSD}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00004}\mbox{\hyperlink{ohci_8h_ad6bc99d532e43008c15c59c97c7c85c1}{00004}} \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00005}\mbox{\hyperlink{ohci_8h_aa4e670866821bf060efaad3cc412aaa9}{00005}} \textcolor{comment}{ * Copyright (c) 1998 The NetBSD Foundation, Inc.}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00006}\mbox{\hyperlink{ohci_8h_a2a6b71226ee2f00431312ec95a08f1cd}{00006}} \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00007}\mbox{\hyperlink{ohci_8h_a82cfd08c386d49e31a1681c4eaef5487}{00007}} \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00008}\mbox{\hyperlink{ohci_8h_a61db46f28af7a76369e58b2756994096}{00008}} \textcolor{comment}{ * This code is derived from software contributed to The NetBSD Foundation}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00009}\mbox{\hyperlink{ohci_8h_a5060f914e209889de930173d2c392823}{00009}} \textcolor{comment}{ * by Lennart Augustsson (lennart@augustsson.net) at}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00010}\mbox{\hyperlink{ohci_8h_a00d3efa4d4f926be3548142e67ad5e33}{00010}} \textcolor{comment}{ * Carlstedt Research \& Technology.}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00011}\mbox{\hyperlink{ohci_8h_a29de5c4858a15d524d7195fad05c950d}{00011}} \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00012}\mbox{\hyperlink{ohci_8h_a8a7db3629755fb14f38529c93f05ef08}{00012}} \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00013}\mbox{\hyperlink{ohci_8h_a31b1a9af820079a7890172aec64fc0fb}{00013}} \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00014}\mbox{\hyperlink{ohci_8h_aa107abd3d5280d52a9092e907beec00e}{00014}} \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00015}\mbox{\hyperlink{ohci_8h_ac4265618bed96838e631b61a79da7d28}{00015}} \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00016}\mbox{\hyperlink{ohci_8h_a23126596c21db0ac8250e2227b9e55ad}{00016}} \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00017}\mbox{\hyperlink{ohci_8h_a2bb5accb0b19cbd989d7fbae71503659}{00017}} \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00018}\mbox{\hyperlink{ohci_8h_a736b3613bc1010d5700c7ed6f2e248e6}{00018}} \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00019}\mbox{\hyperlink{ohci_8h_a8dff495a3272c9fd65dd3e33819bf1f4}{00019}} \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00020}\mbox{\hyperlink{ohci_8h_a0d167619601bfe0a5d358b3c54e46437}{00020}} \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00021}\mbox{\hyperlink{ohci_8h_a23476744adda3876a7ee12b76c18c96b}{00021}} \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00022}\mbox{\hyperlink{ohci_8h_a35649205ff5971b34cc03a29bc5967c3}{00022}} \textcolor{comment}{ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00023}00023 \textcolor{comment}{ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00024}00024 \textcolor{comment}{ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00025}\mbox{\hyperlink{ohci_8h_a4eb4f83751f58ffe952cee00c0f7bb00}{00025}} \textcolor{comment}{ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00026}\mbox{\hyperlink{ohci_8h_a7a5a98872bf909b3e7ff6b9c2f50a907}{00026}} \textcolor{comment}{ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00027}\mbox{\hyperlink{ohci_8h_a566172821c611863f19e03ba47910540}{00027}} \textcolor{comment}{ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00028}\mbox{\hyperlink{ohci_8h_aed5f5926c255c91831c71cebe9d3bee6}{00028}} \textcolor{comment}{ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00029}\mbox{\hyperlink{ohci_8h_a8aed22e2c7b283705ec82e0120515618}{00029}} \textcolor{comment}{ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00030}\mbox{\hyperlink{ohci_8h_aa20d020f2117d436ad14e585f09c2b4d}{00030}} \textcolor{comment}{ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00031}00031 \textcolor{comment}{ * POSSIBILITY OF SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00032}00032 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00033}00033 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00034}00034 \textcolor{preprocessor}{\#ifndef \_OHCI\_H\_}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00035}00035 \textcolor{preprocessor}{\#define \_OHCI\_H\_}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00036}00036 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00037}\mbox{\hyperlink{ohci_8h_a0a8b5388709ddff77cf7d25c84bcbc6d}{00037}} \textcolor{preprocessor}{\#define OHCI\_MAX\_DEVICES MIN(USB\_MAX\_DEVICES, 128)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00038}00038 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00039}\mbox{\hyperlink{ohci_8h_a87fdd7a9915c2e5bdadcc518f23e97ce}{00039}} \textcolor{preprocessor}{\#define OHCI\_NO\_INTRS           32}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00040}\mbox{\hyperlink{ohci_8h_a0fbcad676f917e46857770439c0237cb}{00040}} \textcolor{preprocessor}{\#define OHCI\_HCCA\_SIZE          256}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00041}00041 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00042}00042 \textcolor{comment}{/* Structures alignment (bytes) */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00043}\mbox{\hyperlink{ohci_8h_ae2b36c9c5147d37a235b56c45d37fc88}{00043}} \textcolor{preprocessor}{\#define OHCI\_HCCA\_ALIGN         256}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00044}\mbox{\hyperlink{ohci_8h_a79e5a4a2c35a0e0424805105bcf0fccb}{00044}} \textcolor{preprocessor}{\#define OHCI\_ED\_ALIGN           16}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00045}\mbox{\hyperlink{ohci_8h_ad87b485b3ab598f5b31d46f4f3e431f7}{00045}} \textcolor{preprocessor}{\#define OHCI\_TD\_ALIGN           16}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00046}\mbox{\hyperlink{ohci_8h_ad8faf4f9807fd725b339be8da1553ad8}{00046}} \textcolor{preprocessor}{\#define OHCI\_ITD\_ALIGN          32}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00047}00047 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00048}\mbox{\hyperlink{ohci_8h_a1638d6cdcb4f290482e91ccf354adc52}{00048}} \textcolor{preprocessor}{\#define OHCI\_PAGE\_SIZE          0x1000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00049}\mbox{\hyperlink{ohci_8h_abbc43838032f465335ef081918f257b4}{00049}} \textcolor{preprocessor}{\#define OHCI\_PAGE(x)            ((x) \&\string~ 0xfff)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00050}\mbox{\hyperlink{ohci_8h_a48489ecd1bd515b94c2696b861e99407}{00050}} \textcolor{preprocessor}{\#define OHCI\_PAGE\_OFFSET(x)     ((x) \& 0xfff)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00051}\mbox{\hyperlink{ohci_8h_a9f6f6d6b04c85a12517867cae4684ebe}{00051}} \textcolor{preprocessor}{\#define OHCI\_PAGE\_MASK(x)       ((x) \& 0xfff)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00052}00052 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00053}00053 \textcolor{preprocessor}{\#if     ((USB\_PAGE\_SIZE < OHCI\_ED\_ALIGN) || (OHCI\_ED\_ALIGN == 0) ||     \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00054}00054 \textcolor{preprocessor}{        (USB\_PAGE\_SIZE < OHCI\_TD\_ALIGN) || (OHCI\_TD\_ALIGN == 0) ||      \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00055}00055 \textcolor{preprocessor}{        (USB\_PAGE\_SIZE < OHCI\_ITD\_ALIGN) || (OHCI\_ITD\_ALIGN == 0) ||    \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00056}00056 \textcolor{preprocessor}{        (USB\_PAGE\_SIZE < OHCI\_PAGE\_SIZE) || (OHCI\_PAGE\_SIZE == 0))}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00057}00057 \textcolor{preprocessor}{\#error  "{}Invalid USB page size!"{}}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00058}00058 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00059}00059 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00060}\mbox{\hyperlink{ohci_8h_a5c576312e8ccd60cba9d735b5c79bd0a}{00060}} \textcolor{preprocessor}{\#define OHCI\_VIRTUAL\_FRAMELIST\_COUNT 128}\textcolor{comment}{/* dummy */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00061}00061 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00062}00062 \textcolor{preprocessor}{\#if (OHCI\_VIRTUAL\_FRAMELIST\_COUNT < USB\_MAX\_FS\_ISOC\_FRAMES\_PER\_XFER)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00063}00063 \textcolor{preprocessor}{\#error "{}maximum number of full-\/speed isochronous frames is higher than supported!"{}}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00064}00064 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00065}00065 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00066}\mbox{\hyperlink{structohci__hcca}{00066}} \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__hcca}{ohci\_hcca}} \{}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00067}\mbox{\hyperlink{structohci__hcca_a648020a89c0be7ec9b1da400be6cc217}{00067}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__hcca_a648020a89c0be7ec9b1da400be6cc217}{hcca\_interrupt\_table}}[\mbox{\hyperlink{ohci_8h_a87fdd7a9915c2e5bdadcc518f23e97ce}{OHCI\_NO\_INTRS}}];}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00068}\mbox{\hyperlink{structohci__hcca_af6320e8c35179d1f314bef207480cfe9}{00068}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__hcca_af6320e8c35179d1f314bef207480cfe9}{hcca\_frame\_number}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00069}\mbox{\hyperlink{structohci__hcca_af34f7bc57ad8f1a8fa62e54cc40ca7a4}{00069}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__hcca_af34f7bc57ad8f1a8fa62e54cc40ca7a4}{hcca\_done\_head}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00070}00070 \textcolor{preprocessor}{\#define OHCI\_DONE\_INTRS         1}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00071}00071 \} \mbox{\hyperlink{ohci_8h_a255caac2b0869e1edff45d64eded17c5}{\_\_aligned}}(\mbox{\hyperlink{ohci_8h_ae2b36c9c5147d37a235b56c45d37fc88}{OHCI\_HCCA\_ALIGN}});}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00072}00072 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00073}\mbox{\hyperlink{ohci_8h_a8efe129deaa9556f162c236cc3b7d94a}{00073}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__hcca}{ohci\_hcca}} \mbox{\hyperlink{structohci__hcca}{ohci\_hcca\_t}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00074}00074 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00075}\mbox{\hyperlink{structohci__ed}{00075}} \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__ed}{ohci\_ed}} \{}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00076}\mbox{\hyperlink{structohci__ed_a081f938317907599f87282bdcf5c4039}{00076}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__ed_a081f938317907599f87282bdcf5c4039}{ed\_flags}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00077}00077 \textcolor{preprocessor}{\#define OHCI\_ED\_GET\_FA(s)       ((s) \& 0x7f)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00078}00078 \textcolor{preprocessor}{\#define OHCI\_ED\_ADDRMASK        0x0000007f}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00079}00079 \textcolor{preprocessor}{\#define OHCI\_ED\_SET\_FA(s)       (s)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00080}00080 \textcolor{preprocessor}{\#define OHCI\_ED\_GET\_EN(s)       (((s) >> 7) \& 0xf)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00081}00081 \textcolor{preprocessor}{\#define OHCI\_ED\_SET\_EN(s)       ((s) << 7)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00082}00082 \textcolor{preprocessor}{\#define OHCI\_ED\_DIR\_MASK        0x00001800}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00083}00083 \textcolor{preprocessor}{\#define OHCI\_ED\_DIR\_TD          0x00000000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00084}00084 \textcolor{preprocessor}{\#define OHCI\_ED\_DIR\_OUT         0x00000800}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00085}00085 \textcolor{preprocessor}{\#define OHCI\_ED\_DIR\_IN          0x00001000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00086}00086 \textcolor{preprocessor}{\#define OHCI\_ED\_SPEED           0x00002000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00087}00087 \textcolor{preprocessor}{\#define OHCI\_ED\_SKIP            0x00004000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00088}00088 \textcolor{preprocessor}{\#define OHCI\_ED\_FORMAT\_GEN      0x00000000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00089}00089 \textcolor{preprocessor}{\#define OHCI\_ED\_FORMAT\_ISO      0x00008000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00090}00090 \textcolor{preprocessor}{\#define OHCI\_ED\_GET\_MAXP(s)     (((s) >> 16) \& 0x07ff)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00091}00091 \textcolor{preprocessor}{\#define OHCI\_ED\_SET\_MAXP(s)     ((s) << 16)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00092}00092 \textcolor{preprocessor}{\#define OHCI\_ED\_MAXPMASK        (0x7ff << 16)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00093}\mbox{\hyperlink{structohci__ed_ae49ad4bc1120623615b6617a34df6894}{00093}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__ed_ae49ad4bc1120623615b6617a34df6894}{ed\_tailp}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00094}\mbox{\hyperlink{structohci__ed_aed98352e265e7b8a6a6050f164d8b052}{00094}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__ed_aed98352e265e7b8a6a6050f164d8b052}{ed\_headp}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00095}00095 \textcolor{preprocessor}{\#define OHCI\_HALTED             0x00000001}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00096}00096 \textcolor{preprocessor}{\#define OHCI\_TOGGLECARRY        0x00000002}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00097}00097 \textcolor{preprocessor}{\#define OHCI\_HEADMASK           0xfffffffc}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00098}\mbox{\hyperlink{structohci__ed_a5b41b0d1634fca5cb95be34dcece8dc3}{00098}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__ed_a5b41b0d1634fca5cb95be34dcece8dc3}{ed\_next}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00099}00099 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00100}00100 \textcolor{comment}{ * Extra information needed:}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00101}00101 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00102}\mbox{\hyperlink{structohci__ed_a03c7dfab0bbf4833081714da57e58c2b}{00102}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__ed}{ohci\_ed}} *\mbox{\hyperlink{structohci__ed_a03c7dfab0bbf4833081714da57e58c2b}{next}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00103}\mbox{\hyperlink{structohci__ed_aceda56a4802dee914831d33cecb4bcbb}{00103}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__ed}{ohci\_ed}} *\mbox{\hyperlink{structohci__ed_aceda56a4802dee914831d33cecb4bcbb}{prev}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00104}\mbox{\hyperlink{structohci__ed_a72db455fef08feb69066e13cc4db7cd1}{00104}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__ed}{ohci\_ed}} *\mbox{\hyperlink{structohci__ed_a72db455fef08feb69066e13cc4db7cd1}{obj\_next}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00105}\mbox{\hyperlink{structohci__ed_a28b686a08faa0db5d4dc1532e379dc79}{00105}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *\mbox{\hyperlink{structohci__ed_a28b686a08faa0db5d4dc1532e379dc79}{page\_cache}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00106}\mbox{\hyperlink{structohci__ed_aa6e3c7be74635496686ac1c732926306}{00106}}         uint32\_t \mbox{\hyperlink{structohci__ed_aa6e3c7be74635496686ac1c732926306}{ed\_self}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00107}00107 \} \mbox{\hyperlink{ohci_8h_a255caac2b0869e1edff45d64eded17c5}{\_\_aligned}}(\mbox{\hyperlink{ohci_8h_a79e5a4a2c35a0e0424805105bcf0fccb}{OHCI\_ED\_ALIGN}});}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00108}00108 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00109}\mbox{\hyperlink{ohci_8h_ab51cda757e73d9a50d86b82472dac7b2}{00109}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__ed}{ohci\_ed}} \mbox{\hyperlink{structohci__ed}{ohci\_ed\_t}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00110}00110 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00111}\mbox{\hyperlink{structohci__td}{00111}} \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__td}{ohci\_td}} \{}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00112}\mbox{\hyperlink{structohci__td_a56990323c68c92a9a3e52542544b5579}{00112}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__td_a56990323c68c92a9a3e52542544b5579}{td\_flags}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00113}00113 \textcolor{preprocessor}{\#define OHCI\_TD\_R               0x00040000      }\textcolor{comment}{/* Buffer Rounding  */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00114}00114 \textcolor{preprocessor}{\#define OHCI\_TD\_DP\_MASK         0x00180000      }\textcolor{comment}{/* Direction / PID */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00115}00115 \textcolor{preprocessor}{\#define OHCI\_TD\_SETUP           0x00000000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00116}00116 \textcolor{preprocessor}{\#define OHCI\_TD\_OUT             0x00080000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00117}00117 \textcolor{preprocessor}{\#define OHCI\_TD\_IN              0x00100000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00118}00118 \textcolor{preprocessor}{\#define OHCI\_TD\_GET\_DI(x)       (((x) >> 21) \& 7)       }\textcolor{comment}{/* Delay Interrupt */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00119}00119 \textcolor{preprocessor}{\#define OHCI\_TD\_SET\_DI(x)       ((x) << 21)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00120}00120 \textcolor{preprocessor}{\#define OHCI\_TD\_NOINTR          0x00e00000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00121}00121 \textcolor{preprocessor}{\#define OHCI\_TD\_INTR\_MASK       0x00e00000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00122}00122 \textcolor{preprocessor}{\#define OHCI\_TD\_TOGGLE\_CARRY    0x00000000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00123}00123 \textcolor{preprocessor}{\#define OHCI\_TD\_TOGGLE\_0        0x02000000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00124}00124 \textcolor{preprocessor}{\#define OHCI\_TD\_TOGGLE\_1        0x03000000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00125}00125 \textcolor{preprocessor}{\#define OHCI\_TD\_TOGGLE\_MASK     0x03000000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00126}00126 \textcolor{preprocessor}{\#define OHCI\_TD\_GET\_EC(x)       (((x) >> 26) \& 3)       }\textcolor{comment}{/* Error Count */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00127}00127 \textcolor{preprocessor}{\#define OHCI\_TD\_GET\_CC(x)       ((x) >> 28)     }\textcolor{comment}{/* Condition Code */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00128}00128 \textcolor{preprocessor}{\#define OHCI\_TD\_SET\_CC(x)       ((x) << 28)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00129}00129 \textcolor{preprocessor}{\#define OHCI\_TD\_NOCC            0xf0000000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00130}\mbox{\hyperlink{structohci__td_a3596479d53d43328418a5eb84aeccf8a}{00130}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__td_a3596479d53d43328418a5eb84aeccf8a}{td\_cbp}}; \textcolor{comment}{/* Current Buffer Pointer */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00131}\mbox{\hyperlink{structohci__td_a64de52e04f419a2da10a4c15bc7c15da}{00131}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__td_a64de52e04f419a2da10a4c15bc7c15da}{td\_next}};       \textcolor{comment}{/* Next TD */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00132}00132 \textcolor{preprocessor}{\#define OHCI\_TD\_NEXT\_END        0}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00133}\mbox{\hyperlink{structohci__td_a24b21dc2e83f88f7b7ec3356e56f1c8c}{00133}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__td_a24b21dc2e83f88f7b7ec3356e56f1c8c}{td\_be}};   \textcolor{comment}{/* Buffer End */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00134}00134 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00135}00135 \textcolor{comment}{ * Extra information needed:}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00136}00136 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00137}\mbox{\hyperlink{structohci__td_a3a827b8c6408f65b0f599121d695bd5c}{00137}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__td}{ohci\_td}} *\mbox{\hyperlink{structohci__td_a3a827b8c6408f65b0f599121d695bd5c}{obj\_next}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00138}\mbox{\hyperlink{structohci__td_a205ea8c945f4d0e1ccd6d45f82410a57}{00138}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__td}{ohci\_td}} *\mbox{\hyperlink{structohci__td_a205ea8c945f4d0e1ccd6d45f82410a57}{alt\_next}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00139}\mbox{\hyperlink{structohci__td_a7dc50f18255061438c3c87e76be98d9c}{00139}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *\mbox{\hyperlink{structohci__td_a7dc50f18255061438c3c87e76be98d9c}{page\_cache}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00140}\mbox{\hyperlink{structohci__td_a9edc49bb1c89eff94b0c3b0f838b1994}{00140}}         uint32\_t \mbox{\hyperlink{structohci__td_a9edc49bb1c89eff94b0c3b0f838b1994}{td\_self}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00141}\mbox{\hyperlink{structohci__td_a5644e10fc40e8b372bfa47335482235c}{00141}}         uint16\_t \mbox{\hyperlink{structohci__td_a5644e10fc40e8b372bfa47335482235c}{len}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00142}00142 \} \mbox{\hyperlink{ohci_8h_a255caac2b0869e1edff45d64eded17c5}{\_\_aligned}}(\mbox{\hyperlink{ohci_8h_ad87b485b3ab598f5b31d46f4f3e431f7}{OHCI\_TD\_ALIGN}});}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00143}00143 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00144}\mbox{\hyperlink{ohci_8h_a61aa4ba2ac601d47ccc88916510c9ecf}{00144}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__td}{ohci\_td}} \mbox{\hyperlink{structohci__td}{ohci\_td\_t}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00145}00145 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00146}\mbox{\hyperlink{structohci__itd}{00146}} \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__itd}{ohci\_itd}} \{}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00147}\mbox{\hyperlink{structohci__itd_acc4afd89f1a05fa4e8b0c0537473c1f9}{00147}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__itd_acc4afd89f1a05fa4e8b0c0537473c1f9}{itd\_flags}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00148}00148 \textcolor{preprocessor}{\#define OHCI\_ITD\_GET\_SF(x)      ((x) \& 0x0000ffff)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00149}00149 \textcolor{preprocessor}{\#define OHCI\_ITD\_SET\_SF(x)      ((x) \& 0xffff)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00150}00150 \textcolor{preprocessor}{\#define OHCI\_ITD\_GET\_DI(x)      (((x) >> 21) \& 7)       }\textcolor{comment}{/* Delay Interrupt */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00151}00151 \textcolor{preprocessor}{\#define OHCI\_ITD\_SET\_DI(x)      ((x) << 21)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00152}00152 \textcolor{preprocessor}{\#define OHCI\_ITD\_NOINTR         0x00e00000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00153}00153 \textcolor{preprocessor}{\#define OHCI\_ITD\_GET\_FC(x)      ((((x) >> 24) \& 7)+1)   }\textcolor{comment}{/* Frame Count */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00154}00154 \textcolor{preprocessor}{\#define OHCI\_ITD\_SET\_FC(x)      (((x)-\/1) << 24)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00155}00155 \textcolor{preprocessor}{\#define OHCI\_ITD\_GET\_CC(x)      ((x) >> 28)     }\textcolor{comment}{/* Condition Code */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00156}00156 \textcolor{preprocessor}{\#define OHCI\_ITD\_NOCC           0xf0000000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00157}00157 \textcolor{preprocessor}{\#define OHCI\_ITD\_NOFFSET        8}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00158}\mbox{\hyperlink{structohci__itd_ac9e804aee932738f569bdde76b72cfaf}{00158}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__itd_ac9e804aee932738f569bdde76b72cfaf}{itd\_bp0}};       \textcolor{comment}{/* Buffer Page 0 */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00159}\mbox{\hyperlink{structohci__itd_a1a239af35ea250235c7060dc189f9e34}{00159}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__itd_a1a239af35ea250235c7060dc189f9e34}{itd\_next}};     \textcolor{comment}{/* Next ITD */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00160}\mbox{\hyperlink{structohci__itd_a94a0c0e0620704ab4a430856238399ca}{00160}}         \textcolor{keyword}{volatile} uint32\_t \mbox{\hyperlink{structohci__itd_a94a0c0e0620704ab4a430856238399ca}{itd\_be}}; \textcolor{comment}{/* Buffer End */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00161}\mbox{\hyperlink{structohci__itd_acd7229aed17432ebfe0ecab6665cc834}{00161}}         \textcolor{keyword}{volatile} uint16\_t \mbox{\hyperlink{structohci__itd_acd7229aed17432ebfe0ecab6665cc834}{itd\_offset}}[\mbox{\hyperlink{ohci_8h_a00dc4549786ff8398928b08093c30eab}{OHCI\_ITD\_NOFFSET}}];       \textcolor{comment}{/* Buffer offsets and}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00162}00162 \textcolor{comment}{                                                         * Status */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00163}00163 \textcolor{preprocessor}{\#define OHCI\_ITD\_PAGE\_SELECT    0x00001000}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00164}00164 \textcolor{preprocessor}{\#define OHCI\_ITD\_MK\_OFFS(len)   (0xe000 | ((len) \& 0x1fff))}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00165}00165 \textcolor{preprocessor}{\#define OHCI\_ITD\_PSW\_LENGTH(x)  ((x) \& 0xfff)   }\textcolor{comment}{/* Transfer length */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00166}00166 \textcolor{preprocessor}{\#define OHCI\_ITD\_PSW\_GET\_CC(x)  ((x) >> 12)     }\textcolor{comment}{/* Condition Code */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00167}00167 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00168}00168 \textcolor{comment}{ * Extra information needed:}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00169}00169 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00170}\mbox{\hyperlink{structohci__itd_ac539245fd61d5f702401e710186961ef}{00170}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__itd}{ohci\_itd}} *\mbox{\hyperlink{structohci__itd_ac539245fd61d5f702401e710186961ef}{obj\_next}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00171}\mbox{\hyperlink{structohci__itd_ad7ecede661ac19f09f7f1841fd0db557}{00171}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *\mbox{\hyperlink{structohci__itd_ad7ecede661ac19f09f7f1841fd0db557}{page\_cache}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00172}\mbox{\hyperlink{structohci__itd_a2210538197368beb4bc1f366eedc7a7d}{00172}}         uint32\_t \mbox{\hyperlink{structohci__itd_a2210538197368beb4bc1f366eedc7a7d}{itd\_self}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00173}\mbox{\hyperlink{structohci__itd_afd290b8f1972f13a59ef8f7042888bec}{00173}}         uint8\_t \mbox{\hyperlink{structohci__itd_afd290b8f1972f13a59ef8f7042888bec}{frames}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00174}00174 \} \mbox{\hyperlink{ohci_8h_a255caac2b0869e1edff45d64eded17c5}{\_\_aligned}}(\mbox{\hyperlink{ohci_8h_ad8faf4f9807fd725b339be8da1553ad8}{OHCI\_ITD\_ALIGN}});}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00175}00175 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00176}\mbox{\hyperlink{ohci_8h_aeb741e1ba629697c37a3466b62eb34e1}{00176}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__itd}{ohci\_itd}} \mbox{\hyperlink{structohci__itd}{ohci\_itd\_t}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00177}00177 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00178}\mbox{\hyperlink{ohci_8h_abdeda618fa160f0fe16fae2c4f4db614}{00178}} \textcolor{preprocessor}{\#define OHCI\_CC\_NO\_ERROR                0}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00179}\mbox{\hyperlink{ohci_8h_acd536b3ada977824190540def996a009}{00179}} \textcolor{preprocessor}{\#define OHCI\_CC\_CRC                     1}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00180}\mbox{\hyperlink{ohci_8h_ae4527635997cd157d4f05b67f877fffd}{00180}} \textcolor{preprocessor}{\#define OHCI\_CC\_BIT\_STUFFING            2}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00181}\mbox{\hyperlink{ohci_8h_a94e1e7eeeeda392de3fd520d88560b2d}{00181}} \textcolor{preprocessor}{\#define OHCI\_CC\_DATA\_TOGGLE\_MISMATCH    3}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00182}\mbox{\hyperlink{ohci_8h_adb399caedb228a59c31a3bd0f285a994}{00182}} \textcolor{preprocessor}{\#define OHCI\_CC\_STALL                   4}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00183}\mbox{\hyperlink{ohci_8h_a4e680c12930657e9e98f9618d57d0e5e}{00183}} \textcolor{preprocessor}{\#define OHCI\_CC\_DEVICE\_NOT\_RESPONDING   5}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00184}\mbox{\hyperlink{ohci_8h_a4e880aae5dfa8c77be19222415fc2aec}{00184}} \textcolor{preprocessor}{\#define OHCI\_CC\_PID\_CHECK\_FAILURE       6}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00185}\mbox{\hyperlink{ohci_8h_aecd7325cef7e8ea22e0fed338b4b504b}{00185}} \textcolor{preprocessor}{\#define OHCI\_CC\_UNEXPECTED\_PID          7}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00186}\mbox{\hyperlink{ohci_8h_a3484347a8246204341ad0a4f3fd74b3f}{00186}} \textcolor{preprocessor}{\#define OHCI\_CC\_DATA\_OVERRUN            8}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00187}\mbox{\hyperlink{ohci_8h_ad942830143cda0f554d690957809067c}{00187}} \textcolor{preprocessor}{\#define OHCI\_CC\_DATA\_UNDERRUN           9}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00188}\mbox{\hyperlink{ohci_8h_af41425165c9c6321de20b73e74a9e6c8}{00188}} \textcolor{preprocessor}{\#define OHCI\_CC\_BUFFER\_OVERRUN          12}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00189}\mbox{\hyperlink{ohci_8h_aadeb4c13df4165ae06844dd8ca6db8f6}{00189}} \textcolor{preprocessor}{\#define OHCI\_CC\_BUFFER\_UNDERRUN         13}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00190}\mbox{\hyperlink{ohci_8h_ae02a8cc62a7cb1f1c95d563635ee655c}{00190}} \textcolor{preprocessor}{\#define OHCI\_CC\_NOT\_ACCESSED            15}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00191}00191 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00192}00192 \textcolor{comment}{/* Some delay needed when changing certain registers. */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00193}\mbox{\hyperlink{ohci_8h_a97d4ce76a6782f3cbce1d40478b5c5e0}{00193}} \textcolor{preprocessor}{\#define OHCI\_ENABLE\_POWER\_DELAY         5}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00194}\mbox{\hyperlink{ohci_8h_a8a5a74cf33eb20275832953fa42fb423}{00194}} \textcolor{preprocessor}{\#define OHCI\_READ\_DESC\_DELAY            5}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00195}00195 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00196}\mbox{\hyperlink{ohci_8h_ab191d0e07f30b4f2e3ae0529ba2f3a98}{00196}} \textcolor{preprocessor}{\#define OHCI\_NO\_EDS                     (2*OHCI\_NO\_INTRS)}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00197}00197 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00198}\mbox{\hyperlink{structohci__hw__softc}{00198}} \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__hw__softc}{ohci\_hw\_softc}} \{}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00199}\mbox{\hyperlink{structohci__hw__softc_a5f1e17ec681990ffdb537c6de85183a8}{00199}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} \mbox{\hyperlink{structohci__hw__softc_a5f1e17ec681990ffdb537c6de85183a8}{hcca\_pc}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00200}\mbox{\hyperlink{structohci__hw__softc_a36e4456accac16c62b0475954195d5fc}{00200}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} \mbox{\hyperlink{structohci__hw__softc_a36e4456accac16c62b0475954195d5fc}{ctrl\_start\_pc}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00201}\mbox{\hyperlink{structohci__hw__softc_a0c6193f27f8216b6671d0694a1b1a30d}{00201}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} \mbox{\hyperlink{structohci__hw__softc_a0c6193f27f8216b6671d0694a1b1a30d}{bulk\_start\_pc}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00202}\mbox{\hyperlink{structohci__hw__softc_ae3c21f51cba1ba3df072c9fa50c77e8d}{00202}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} \mbox{\hyperlink{structohci__hw__softc_ae3c21f51cba1ba3df072c9fa50c77e8d}{isoc\_start\_pc}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00203}\mbox{\hyperlink{structohci__hw__softc_a9e46038b64004411e7d3b4268db0e31f}{00203}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} \mbox{\hyperlink{structohci__hw__softc_a9e46038b64004411e7d3b4268db0e31f}{intr\_start\_pc}}[\mbox{\hyperlink{ohci_8h_ab191d0e07f30b4f2e3ae0529ba2f3a98}{OHCI\_NO\_EDS}}];}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00204}00204 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00205}\mbox{\hyperlink{structohci__hw__softc_a3418ebd414d0c8140e31f8bb5a0b03d1}{00205}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page}{usb\_page}} \mbox{\hyperlink{structohci__hw__softc_a3418ebd414d0c8140e31f8bb5a0b03d1}{hcca\_pg}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00206}\mbox{\hyperlink{structohci__hw__softc_af60f19e5f2c7180a97080f476b0f401d}{00206}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page}{usb\_page}} \mbox{\hyperlink{structohci__hw__softc_af60f19e5f2c7180a97080f476b0f401d}{ctrl\_start\_pg}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00207}\mbox{\hyperlink{structohci__hw__softc_a48ac98d9d0d10b6755c14aa2fca6f66f}{00207}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page}{usb\_page}} \mbox{\hyperlink{structohci__hw__softc_a48ac98d9d0d10b6755c14aa2fca6f66f}{bulk\_start\_pg}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00208}\mbox{\hyperlink{structohci__hw__softc_abf1686dddea184b988d320b7e9e96a85}{00208}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page}{usb\_page}} \mbox{\hyperlink{structohci__hw__softc_abf1686dddea184b988d320b7e9e96a85}{isoc\_start\_pg}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00209}\mbox{\hyperlink{structohci__hw__softc_ad479f062097d8ed49364d507dbdb57f2}{00209}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page}{usb\_page}} \mbox{\hyperlink{structohci__hw__softc_ad479f062097d8ed49364d507dbdb57f2}{intr\_start\_pg}}[\mbox{\hyperlink{ohci_8h_ab191d0e07f30b4f2e3ae0529ba2f3a98}{OHCI\_NO\_EDS}}];}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00210}\mbox{\hyperlink{ohci_8h_a255caac2b0869e1edff45d64eded17c5}{00210}} \};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00211}00211 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00212}\mbox{\hyperlink{structohci__config__desc}{00212}} \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__config__desc}{ohci\_config\_desc}} \{}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00213}\mbox{\hyperlink{structohci__config__desc_a319dd1b516814604475fa81fcbf64354}{00213}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__config__descriptor}{usb\_config\_descriptor}} \mbox{\hyperlink{structohci__config__desc_a319dd1b516814604475fa81fcbf64354}{confd}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00214}\mbox{\hyperlink{structohci__config__desc_adfdb565a57d15c796c26c90d5ceb190e}{00214}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface__descriptor}{usb\_interface\_descriptor}} \mbox{\hyperlink{structohci__config__desc_adfdb565a57d15c796c26c90d5ceb190e}{ifcd}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00215}\mbox{\hyperlink{structohci__config__desc_acc34b1f50085cdafe060895384243f6d}{00215}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__endpoint__descriptor}{usb\_endpoint\_descriptor}} \mbox{\hyperlink{structohci__config__desc_acc34b1f50085cdafe060895384243f6d}{endpd}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00216}\mbox{\hyperlink{ohci_8h_a58a319e0180697f95b1779a1f04eda63}{00216}} \} \mbox{\hyperlink{ohci_8h_a58a319e0180697f95b1779a1f04eda63}{\_\_packed}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00217}00217 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00218}\mbox{\hyperlink{unionohci__hub__desc}{00218}} \textcolor{keyword}{union }\mbox{\hyperlink{unionohci__hub__desc}{ohci\_hub\_desc}} \{}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00219}\mbox{\hyperlink{unionohci__hub__desc_a5144d3ae084f3b02d27e337adc307b3a}{00219}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__status}{usb\_status}} \mbox{\hyperlink{unionohci__hub__desc_a5144d3ae084f3b02d27e337adc307b3a}{stat}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00220}\mbox{\hyperlink{unionohci__hub__desc_aad991368f85b4090b6940b201342c93f}{00220}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__port__status}{usb\_port\_status}} \mbox{\hyperlink{unionohci__hub__desc_aad991368f85b4090b6940b201342c93f}{ps}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00221}\mbox{\hyperlink{unionohci__hub__desc_ac4c0d8b9e918f956e24848a08d5228e7}{00221}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__hub__descriptor}{usb\_hub\_descriptor}} \mbox{\hyperlink{unionohci__hub__desc_ac4c0d8b9e918f956e24848a08d5228e7}{hubd}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00222}\mbox{\hyperlink{unionohci__hub__desc_addf0fe68fc0bfbc5c0832b8f9032235c}{00222}}         uint8\_t \mbox{\hyperlink{unionohci__hub__desc_addf0fe68fc0bfbc5c0832b8f9032235c}{temp}}[128];}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00223}00223 \};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00224}00224 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00225}\mbox{\hyperlink{structohci__softc}{00225}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__softc}{ohci\_softc}} \{}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00226}\mbox{\hyperlink{structohci__softc_a37f5762691135c20947770a0694f8b2e}{00226}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__hw__softc}{ohci\_hw\_softc}} \mbox{\hyperlink{structohci__softc_a37f5762691135c20947770a0694f8b2e}{sc\_hw}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00227}\mbox{\hyperlink{structohci__softc_a67ec2816f2e71f7198ffca089a706ee4}{00227}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__bus}{usb\_bus}} \mbox{\hyperlink{structohci__softc_a67ec2816f2e71f7198ffca089a706ee4}{sc\_bus}};             \textcolor{comment}{/* base device */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00228}\mbox{\hyperlink{structohci__softc_a2c66fa42a013bebd15dc0c9a34c60e11}{00228}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__callout}{usb\_callout}} \mbox{\hyperlink{structohci__softc_a2c66fa42a013bebd15dc0c9a34c60e11}{sc\_tmo\_rhsc}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00229}\mbox{\hyperlink{structohci__softc_a5d56ec208257a351e8f90de7933750b8}{00229}}         \textcolor{keyword}{union }\mbox{\hyperlink{unionohci__hub__desc}{ohci\_hub\_desc}} \mbox{\hyperlink{structohci__softc_a5d56ec208257a351e8f90de7933750b8}{sc\_hub\_desc}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00230}00230 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00231}\mbox{\hyperlink{structohci__softc_a754414df0573417a970551c1194a2607}{00231}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device}{usb\_device}} *\mbox{\hyperlink{structohci__softc_a754414df0573417a970551c1194a2607}{sc\_devices}}[\mbox{\hyperlink{ohci_8h_a0a8b5388709ddff77cf7d25c84bcbc6d}{OHCI\_MAX\_DEVICES}}];}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00232}\mbox{\hyperlink{structohci__softc_ac7cc92dc07c129e713bda1c499e64dbe}{00232}}         \textcolor{keyword}{struct }resource *\mbox{\hyperlink{structohci__softc_ac7cc92dc07c129e713bda1c499e64dbe}{sc\_io\_res}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00233}\mbox{\hyperlink{structohci__softc_ab5af37410f3b3d4e714b1399c6d5f47b}{00233}}         \textcolor{keyword}{struct }resource *\mbox{\hyperlink{structohci__softc_ab5af37410f3b3d4e714b1399c6d5f47b}{sc\_irq\_res}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00234}\mbox{\hyperlink{structohci__softc_a5e902c52a2da1d789387e00ca4d1cf83}{00234}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__hcca}{ohci\_hcca}} *\mbox{\hyperlink{structohci__softc_a5e902c52a2da1d789387e00ca4d1cf83}{sc\_hcca\_p}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00235}\mbox{\hyperlink{structohci__softc_a9598e1b505d3e116c685ecee641a0ea0}{00235}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__ed}{ohci\_ed}} *\mbox{\hyperlink{structohci__softc_a9598e1b505d3e116c685ecee641a0ea0}{sc\_ctrl\_p\_last}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00236}\mbox{\hyperlink{structohci__softc_a30ab9239fd4c73fc6e22f6c8f07766da}{00236}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__ed}{ohci\_ed}} *\mbox{\hyperlink{structohci__softc_a30ab9239fd4c73fc6e22f6c8f07766da}{sc\_bulk\_p\_last}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00237}\mbox{\hyperlink{structohci__softc_a428da7f6ddaab2e04d6552baf066c249}{00237}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__ed}{ohci\_ed}} *\mbox{\hyperlink{structohci__softc_a428da7f6ddaab2e04d6552baf066c249}{sc\_isoc\_p\_last}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00238}\mbox{\hyperlink{structohci__softc_a22133e429df0b14abda84e76906ff4e7}{00238}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structohci__ed}{ohci\_ed}} *\mbox{\hyperlink{structohci__softc_a22133e429df0b14abda84e76906ff4e7}{sc\_intr\_p\_last}}[\mbox{\hyperlink{ohci_8h_ab191d0e07f30b4f2e3ae0529ba2f3a98}{OHCI\_NO\_EDS}}];}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00239}\mbox{\hyperlink{structohci__softc_aff50a32edebe58a34787f9d8aaeb4e89}{00239}}         \textcolor{keywordtype}{void}   *\mbox{\hyperlink{structohci__softc_aff50a32edebe58a34787f9d8aaeb4e89}{sc\_intr\_hdl}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00240}\mbox{\hyperlink{structohci__softc_adbc50ec8be3fe1f265c7b06a5f4f925b}{00240}}         device\_t \mbox{\hyperlink{structohci__softc_adbc50ec8be3fe1f265c7b06a5f4f925b}{sc\_dev}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00241}\mbox{\hyperlink{structohci__softc_ac0f7c61430f942248973f66ef40cfa6a}{00241}}         bus\_size\_t \mbox{\hyperlink{structohci__softc_ac0f7c61430f942248973f66ef40cfa6a}{sc\_io\_size}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00242}\mbox{\hyperlink{structohci__softc_a33a00d895a22de600f31b2d59a279068}{00242}}         bus\_space\_tag\_t \mbox{\hyperlink{structohci__softc_a33a00d895a22de600f31b2d59a279068}{sc\_io\_tag}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00243}\mbox{\hyperlink{structohci__softc_ae2be03b620d4308379eb06f5e02a9cd6}{00243}}         bus\_space\_handle\_t \mbox{\hyperlink{structohci__softc_ae2be03b620d4308379eb06f5e02a9cd6}{sc\_io\_hdl}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00244}00244 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00245}\mbox{\hyperlink{structohci__softc_aebdc16ac9f9e8e393518772949926ee0}{00245}}         uint32\_t \mbox{\hyperlink{structohci__softc_aebdc16ac9f9e8e393518772949926ee0}{sc\_eintrs}};            \textcolor{comment}{/* enabled interrupts */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00246}00246 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00247}\mbox{\hyperlink{structohci__softc_a9fcb19b97c9b1ec7c3ee32eb0f86a074}{00247}}         uint16\_t \mbox{\hyperlink{structohci__softc_a9fcb19b97c9b1ec7c3ee32eb0f86a074}{sc\_intr\_stat}}[\mbox{\hyperlink{ohci_8h_ab191d0e07f30b4f2e3ae0529ba2f3a98}{OHCI\_NO\_EDS}}];}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00248}\mbox{\hyperlink{structohci__softc_a7dca1c14dbe79e6dbdd98ae7f84076b2}{00248}}         uint16\_t \mbox{\hyperlink{structohci__softc_a7dca1c14dbe79e6dbdd98ae7f84076b2}{sc\_id\_vendor}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00249}00249 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00250}\mbox{\hyperlink{structohci__softc_af2eaeb24308e307c021acf7fe0d38515}{00250}}         uint8\_t \mbox{\hyperlink{structohci__softc_af2eaeb24308e307c021acf7fe0d38515}{sc\_noport}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00251}\mbox{\hyperlink{structohci__softc_a12a26882fe85c281873516d038660eee}{00251}}         uint8\_t \mbox{\hyperlink{structohci__softc_a12a26882fe85c281873516d038660eee}{sc\_addr}};         \textcolor{comment}{/* device address */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00252}\mbox{\hyperlink{structohci__softc_af91ca445a6581a109a25c32bea607822}{00252}}         uint8\_t \mbox{\hyperlink{structohci__softc_af91ca445a6581a109a25c32bea607822}{sc\_conf}};         \textcolor{comment}{/* device configuration */}}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00253}\mbox{\hyperlink{structohci__softc_a010b9bd47c48c4bbe0a522e81423ac7e}{00253}}         uint8\_t \mbox{\hyperlink{structohci__softc_a010b9bd47c48c4bbe0a522e81423ac7e}{sc\_hub\_idata}}[32];}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00254}00254 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00255}\mbox{\hyperlink{structohci__softc_ae0c7ea2895a9e2bc556adec7d8c2af13}{00255}}         \textcolor{keywordtype}{char}    \mbox{\hyperlink{structohci__softc_ae0c7ea2895a9e2bc556adec7d8c2af13}{sc\_vendor}}[16];}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00256}00256 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00257}\mbox{\hyperlink{ohci_8h_af98a7a5f62548848743a5932604181dc}{00257}} \} \mbox{\hyperlink{ohci_8h_af98a7a5f62548848743a5932604181dc}{ohci\_softc\_t}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00258}00258 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00259}\mbox{\hyperlink{ohci_8h_a49ee4d3775d14eeab9e3e81e80aa90a7}{00259}} \mbox{\hyperlink{usb__controller_8h_a8e0c620f0c41f1951cec11e056efbf79}{usb\_bus\_mem\_cb\_t}} \mbox{\hyperlink{ohci_8h_a49ee4d3775d14eeab9e3e81e80aa90a7}{ohci\_iterate\_hw\_softc}};}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00260}00260 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00261}00261 \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} \mbox{\hyperlink{ohci_8h_a93b8badc0d7ab137739c89471848b2db}{ohci\_init}}(\mbox{\hyperlink{structohci__softc}{ohci\_softc\_t}} *sc);}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00262}00262 \textcolor{keywordtype}{void}    \mbox{\hyperlink{ohci_8h_a4549f67f576c3e40510ba3fbbcab93f6}{ohci\_detach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structohci__softc}{ohci\_softc}} *sc);}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00263}00263 \textcolor{keywordtype}{void}    \mbox{\hyperlink{ohci_8h_a3191a1ba1d568e50c49b2942a74d4a8f}{ohci\_interrupt}}(\mbox{\hyperlink{structohci__softc}{ohci\_softc\_t}} *sc);}
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00264}00264 }
\DoxyCodeLine{\Hypertarget{ohci_8h_source_l00265}00265 \textcolor{preprocessor}{\#endif                                  }\textcolor{comment}{/* \_OHCI\_H\_ */}\textcolor{preprocessor}{}}

\end{DoxyCode}
