\hypertarget{usb__hub__acpi_8c_source}{}\doxysection{usb\+\_\+hub\+\_\+acpi.\+c}
\label{usb__hub__acpi_8c_source}\index{dev/usb/usb\_hub\_acpi.c@{dev/usb/usb\_hub\_acpi.c}}
\mbox{\hyperlink{usb__hub__acpi_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00001}00001 \textcolor{comment}{/* \$FreeBSD\$ */}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00002}00002 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00003}00003 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/NetBSD}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00005}00005 \textcolor{comment}{ * Copyright (c) 1998 The NetBSD Foundation, Inc. All rights reserved.}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00006}00006 \textcolor{comment}{ * Copyright (c) 1998 Lennart Augustsson. All rights reserved.}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00007}00007 \textcolor{comment}{ * Copyright (c) 2008-\/2010 Hans Petter Selasky. All rights reserved.}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00008}00008 \textcolor{comment}{ * Copyright (c) 2019 Takanori Watanabe.}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00009}00009 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00010}00010 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00011}00011 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00012}00012 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00013}00013 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00014}00014 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00015}00015 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00016}00016 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00017}00017 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00018}00018 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00019}00019 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00020}00020 \textcolor{comment}{ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00021}00021 \textcolor{comment}{ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00022}00022 \textcolor{comment}{ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00023}00023 \textcolor{comment}{ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00024}00024 \textcolor{comment}{ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00025}00025 \textcolor{comment}{ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00026}00026 \textcolor{comment}{ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00027}00027 \textcolor{comment}{ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00028}00028 \textcolor{comment}{ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00029}00029 \textcolor{comment}{ * SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00030}00030 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00031}00031 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00032}00032 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00033}00033 \textcolor{comment}{ * USB spec: http://www.usb.org/developers/docs/usbspec.zip}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00034}00034 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00035}00035 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00036}00036 \textcolor{preprocessor}{\#ifdef USB\_GLOBAL\_INCLUDE\_FILE}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00037}00037 \textcolor{preprocessor}{\#include USB\_GLOBAL\_INCLUDE\_FILE}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00038}00038 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00039}00039 \textcolor{preprocessor}{\#include <sys/stdint.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00040}00040 \textcolor{preprocessor}{\#include <sys/stddef.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00041}00041 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00042}00042 \textcolor{preprocessor}{\#include <sys/queue.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00043}00043 \textcolor{preprocessor}{\#include <sys/types.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00044}00044 \textcolor{preprocessor}{\#include <sys/systm.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00045}00045 \textcolor{preprocessor}{\#include <sys/kernel.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00046}00046 \textcolor{preprocessor}{\#include <sys/bus.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00047}00047 \textcolor{preprocessor}{\#include <sys/module.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00048}00048 \textcolor{preprocessor}{\#include <sys/lock.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00049}00049 \textcolor{preprocessor}{\#include <sys/mutex.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00050}00050 \textcolor{preprocessor}{\#include <sys/condvar.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00051}00051 \textcolor{preprocessor}{\#include <sys/sysctl.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00052}00052 \textcolor{preprocessor}{\#include <sys/sx.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00053}00053 \textcolor{preprocessor}{\#include <sys/unistd.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00054}00054 \textcolor{preprocessor}{\#include <sys/callout.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00055}00055 \textcolor{preprocessor}{\#include <sys/malloc.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00056}00056 \textcolor{preprocessor}{\#include <sys/priv.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00057}00057 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00058}00058 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb_8h}{dev/usb/usb.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00059}00059 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usbdi_8h}{dev/usb/usbdi.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00060}00060 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usbdi__util_8h}{dev/usb/usbdi\_util.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00061}00061 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00062}\mbox{\hyperlink{usb__hub__acpi_8c_a927dd6f59caf10a2991dfb564bcbb1e1}{00062}} \textcolor{preprocessor}{\#define USB\_DEBUG\_VAR uhub\_debug}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00063}00063 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00064}00064 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__core_8h}{dev/usb/usb\_core.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00065}00065 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__process_8h}{dev/usb/usb\_process.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00066}00066 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__device_8h}{dev/usb/usb\_device.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00067}00067 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__request_8h}{dev/usb/usb\_request.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00068}00068 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__debug_8h}{dev/usb/usb\_debug.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00069}00069 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__hub_8h}{dev/usb/usb\_hub.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00070}00070 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__util_8h}{dev/usb/usb\_util.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00071}00071 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__busdma_8h}{dev/usb/usb\_busdma.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00072}00072 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__transfer_8h}{dev/usb/usb\_transfer.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00073}00073 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__dynamic_8h}{dev/usb/usb\_dynamic.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00074}00074 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00075}00075 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__controller_8h}{dev/usb/usb\_controller.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00076}00076 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__bus_8h}{dev/usb/usb\_bus.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00077}00077 \textcolor{preprocessor}{\#endif                                  }\textcolor{comment}{/* USB\_GLOBAL\_INCLUDE\_FILE */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00078}00078 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__hub__private_8h}{dev/usb/usb\_hub\_private.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00079}00079 \textcolor{preprocessor}{\#include <contrib/dev/acpica/include/acpi.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00080}00080 \textcolor{preprocessor}{\#include <contrib/dev/acpica/include/accommon.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00081}00081 \textcolor{preprocessor}{\#include <dev/acpica/acpivar.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00082}00082 \textcolor{preprocessor}{\#include <sys/sbuf.h>}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00083}00083 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00084}\mbox{\hyperlink{usb__hub__acpi_8c_a5a409c78bf8c48811e31f23bc218d9f9}{00084}} \textcolor{preprocessor}{\#define ACPI\_PLD\_SIZE 20}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00085}\mbox{\hyperlink{structacpi__uhub__port}{00085}} \textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__port}{acpi\_uhub\_port}} \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00086}\mbox{\hyperlink{structacpi__uhub__port_a0c2215f5f3c32e7082272d31996844f6}{00086}}         ACPI\_HANDLE \mbox{\hyperlink{structacpi__uhub__port_a0c2215f5f3c32e7082272d31996844f6}{handle}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00087}\mbox{\hyperlink{usb__hub__acpi_8c_a8324051d2cc094d9de1448502347e9c3}{00087}} \textcolor{preprocessor}{\#define    ACPI\_UPC\_CONNECTABLE 0x80000000}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00088}\mbox{\hyperlink{usb__hub__acpi_8c_a6425fef0fca7acde1ad49791582beff3}{00088}} \textcolor{preprocessor}{\#define    ACPI\_UPC\_PORTTYPE(x) ((x)\&0xff)}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00089}\mbox{\hyperlink{structacpi__uhub__port_abdd89522a70e88146a10274616bd78e0}{00089}}         uint32\_t \mbox{\hyperlink{structacpi__uhub__port_abdd89522a70e88146a10274616bd78e0}{upc}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00090}\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{00090}}         uint8\_t \mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[\mbox{\hyperlink{usb__hub__acpi_8c_a5a409c78bf8c48811e31f23bc218d9f9}{ACPI\_PLD\_SIZE}}];}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00091}00091 \};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00092}00092 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00093}\mbox{\hyperlink{structacpi__uhub__softc}{00093}} \textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__softc}{acpi\_uhub\_softc}} \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00094}\mbox{\hyperlink{structacpi__uhub__softc_aa0449ce5974da9babf645b974ddf5131}{00094}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhub__softc}{uhub\_softc}} \mbox{\hyperlink{structacpi__uhub__softc_aa0449ce5974da9babf645b974ddf5131}{usc}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00095}\mbox{\hyperlink{structacpi__uhub__softc_ab6e801fa75a855eedfeba8cc06108a81}{00095}}         uint8\_t \mbox{\hyperlink{structacpi__uhub__softc_ab6e801fa75a855eedfeba8cc06108a81}{nports}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00096}\mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{00096}}         ACPI\_HANDLE \mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{ah}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00097}\mbox{\hyperlink{structacpi__uhub__softc_aef1af5f84555619efa86fa0fd4680402}{00097}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__port}{acpi\_uhub\_port}} *\mbox{\hyperlink{structacpi__uhub__softc_aef1af5f84555619efa86fa0fd4680402}{port}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00098}00098 \};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00099}00099 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00100}00100 \textcolor{keyword}{static} UINT32}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00101}\mbox{\hyperlink{usb__hub__acpi_8c_ad0da7cbfeb5558d68f8444a5ad460960}{00101}} \mbox{\hyperlink{usb__hub__acpi_8c_ad0da7cbfeb5558d68f8444a5ad460960}{acpi\_uhub\_find\_rh\_cb}}(ACPI\_HANDLE ah, UINT32 nl, \textcolor{keywordtype}{void} *ctx, \textcolor{keywordtype}{void} **\mbox{\hyperlink{xhci_8h_ade818037fd6c985038ff29656089758d}{status}})}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00102}00102 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00103}00103         ACPI\_DEVICE\_INFO *devinfo;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00104}00104         UINT32 ret;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00105}00105 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00106}00106         *\mbox{\hyperlink{xhci_8h_ade818037fd6c985038ff29656089758d}{status}} = NULL;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00107}00107         devinfo = NULL;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00108}00108 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00109}00109         ret = AcpiGetObjectInfo(ah, \&devinfo);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00110}00110         \textcolor{keywordflow}{if} (ACPI\_SUCCESS(ret)) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00111}00111                 \textcolor{keywordflow}{if} ((devinfo-\/>Valid \& ACPI\_VALID\_ADR) \&\&}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00112}00112                     (devinfo-\/>Address == 0)) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00113}00113                         ret = AE\_CTRL\_TERMINATE;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00114}00114                         *\mbox{\hyperlink{xhci_8h_ade818037fd6c985038ff29656089758d}{status}} = ah;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00115}00115                 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00116}00116                 AcpiOsFree(devinfo);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00117}00117         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00118}00118         \textcolor{keywordflow}{return} (ret);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00119}00119 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00120}00120 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00121}00121 \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00122}\mbox{\hyperlink{usb__hub__acpi_8c_af5f38f2067232daafd447ee0a3de8f91}{00122}} \mbox{\hyperlink{usb__hub__acpi_8c_af5f38f2067232daafd447ee0a3de8f91}{acpi\_uhub\_upc\_type}}(uint8\_t type)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00123}00123 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00124}00124         \textcolor{keyword}{const} \textcolor{keywordtype}{char} *typelist[] = \{\textcolor{stringliteral}{"{}TypeA"{}}, \textcolor{stringliteral}{"{}MiniAB"{}}, \textcolor{stringliteral}{"{}Express"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00125}00125                                   \textcolor{stringliteral}{"{}USB3-\/A"{}}, \textcolor{stringliteral}{"{}USB3-\/B"{}}, \textcolor{stringliteral}{"{}USB-\/MicroB"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00126}00126                                   \textcolor{stringliteral}{"{}USB3-\/MicroAB"{}}, \textcolor{stringliteral}{"{}USB3-\/PowerB"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00127}00127                                   \textcolor{stringliteral}{"{}TypeC-\/USB2"{}}, \textcolor{stringliteral}{"{}TypeC-\/Switch"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00128}00128                                   \textcolor{stringliteral}{"{}TypeC-\/nonSwitch"{}}\};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00129}00129         \textcolor{keyword}{const} \textcolor{keywordtype}{int} last = \textcolor{keyword}{sizeof}(typelist) / \textcolor{keyword}{sizeof}(typelist[0]);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00130}00130 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00131}00131         \textcolor{keywordflow}{if} (type == 0xff) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00132}00132                 \textcolor{keywordflow}{return} \textcolor{stringliteral}{"{}Proprietary"{}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00133}00133         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00134}00134 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00135}00135         \textcolor{keywordflow}{return} (type < last) ? typelist[type] : \textcolor{stringliteral}{"{}Unknown"{}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00136}00136 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00137}00137 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00138}00138 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00139}\mbox{\hyperlink{usb__hub__acpi_8c_a0364b5dcf4f103423f7023e40b2941c4}{00139}} \mbox{\hyperlink{usb__hub__acpi_8c_a0364b5dcf4f103423f7023e40b2941c4}{acpi\_uhub\_parse\_upc}}(device\_t dev, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} p, ACPI\_HANDLE ah, \textcolor{keyword}{struct} sysctl\_oid\_list *poid)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00140}00140 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00141}00141         ACPI\_BUFFER buf;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00142}00142         \textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__softc}{acpi\_uhub\_softc}} *sc = device\_get\_softc(dev);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00143}00143         \textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__port}{acpi\_uhub\_port}} *port = \&sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_aef1af5f84555619efa86fa0fd4680402}{port}}[p -\/ 1];}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00144}00144 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00145}00145         buf.Pointer = NULL;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00146}00146         buf.Length = ACPI\_ALLOCATE\_BUFFER;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00147}00147 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00148}00148         \textcolor{keywordflow}{if} (AcpiEvaluateObject(ah, \textcolor{stringliteral}{"{}\_UPC"{}}, NULL, \&buf) == AE\_OK) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00149}00149                 ACPI\_OBJECT *obj = buf.Pointer;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00150}00150                 UINT64 porttypenum, conn;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00151}00151                 uint8\_t *connectable;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00152}00152 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00153}00153                 acpi\_PkgInt(obj, 0, \&conn);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00154}00154                 acpi\_PkgInt(obj, 1, \&porttypenum);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00155}00155                 connectable = conn ? \textcolor{stringliteral}{"{}"{}} : \textcolor{stringliteral}{"{}non"{}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00156}00156 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00157}00157                 port-\/>\mbox{\hyperlink{structacpi__uhub__port_abdd89522a70e88146a10274616bd78e0}{upc}} = porttypenum;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00158}00158                 port-\/>\mbox{\hyperlink{structacpi__uhub__port_abdd89522a70e88146a10274616bd78e0}{upc}} |= (conn) ? (\mbox{\hyperlink{usb__hub__acpi_8c_a8324051d2cc094d9de1448502347e9c3}{ACPI\_UPC\_CONNECTABLE}}) : 0;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00159}00159 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00160}00160                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__debug_8c_ae3f6d70c719c77e228ccc905331d7784}{usb\_debug}})}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00161}00161                         device\_printf(dev, \textcolor{stringliteral}{"{}Port \%u \%sconnectable \%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00162}00162                             p, connectable,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00163}00163                             \mbox{\hyperlink{usb__hub__acpi_8c_af5f38f2067232daafd447ee0a3de8f91}{acpi\_uhub\_upc\_type}}(porttypenum));}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00164}00164 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00165}00165                 SYSCTL\_ADD\_U32(}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00166}00166                     device\_get\_sysctl\_ctx(dev),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00167}00167                     poid, OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00168}00168                     \textcolor{stringliteral}{"{}upc"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00169}00169                     CTLFLAG\_RD | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00170}00170                     SYSCTL\_NULL\_U32\_PTR, port-\/>\mbox{\hyperlink{structacpi__uhub__port_abdd89522a70e88146a10274616bd78e0}{upc}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00171}00171                     \textcolor{stringliteral}{"{}UPC value. MSB is visible flag"{}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00172}00172         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00173}00173         AcpiOsFree(buf.Pointer);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00174}00174 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00175}00175         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00176}00176 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00177}00177 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00178}\mbox{\hyperlink{usb__hub__acpi_8c_ad8a64a9e3d0a4fdd1bbf04e51ff60bd2}{00178}} \mbox{\hyperlink{usb__hub__acpi_8c_ad8a64a9e3d0a4fdd1bbf04e51ff60bd2}{acpi\_uhub\_port\_sysctl}}(SYSCTL\_HANDLER\_ARGS)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00179}00179 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00180}00180         \textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__port}{acpi\_uhub\_port}} *port = oidp-\/>oid\_arg1;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00181}00181         \textcolor{keyword}{struct }sbuf sb;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00182}00182         \textcolor{keywordtype}{int} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00183}00183 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00184}00184         sbuf\_new\_for\_sysctl(\&sb, NULL, 256, \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00185}00185         sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}Handle \%s\(\backslash\)n"{}}, acpi\_name(port-\/>\mbox{\hyperlink{structacpi__uhub__port_a0c2215f5f3c32e7082272d31996844f6}{handle}}));}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00186}00186         \textcolor{keywordflow}{if} (port-\/>\mbox{\hyperlink{structacpi__uhub__port_abdd89522a70e88146a10274616bd78e0}{upc}} == 0xffffffff) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00187}00187                 sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)tNo information\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00188}00188                 \textcolor{keywordflow}{goto} end;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00189}00189         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00190}00190         sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)t"{}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00191}00191         \textcolor{keywordflow}{if} (port-\/>\mbox{\hyperlink{structacpi__uhub__port_abdd89522a70e88146a10274616bd78e0}{upc}} \& \mbox{\hyperlink{usb__hub__acpi_8c_a8324051d2cc094d9de1448502347e9c3}{ACPI\_UPC\_CONNECTABLE}}) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00192}00192                 sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}Connectable "{}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00193}00193         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00194}00194         sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\%s port\(\backslash\)n"{}}, \mbox{\hyperlink{usb__hub__acpi_8c_af5f38f2067232daafd447ee0a3de8f91}{acpi\_uhub\_upc\_type}}(port-\/>\mbox{\hyperlink{structacpi__uhub__port_abdd89522a70e88146a10274616bd78e0}{upc}} \& 0xff));}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00195}00195 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00196}00196         \textcolor{keywordflow}{if} ((port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[0] \& 0x80) == 0) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00197}00197                 sbuf\_printf(\&sb,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00198}00198                     \textcolor{stringliteral}{"{}\(\backslash\)tColor:\#\%02x\%02x\%02x\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00199}00199                     port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[1], port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[2],}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00200}00200                     port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[3]);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00201}00201         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00202}00202         sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)tWidth \%d mm Height \%d mm\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00203}00203             port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[4] | (port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[5] << 8),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00204}00204             port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[6] | (port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[7] << 8));}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00205}00205         \textcolor{keywordflow}{if} (port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[8] \& 1) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00206}00206                 sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)tVisible\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00207}00207         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00208}00208         \textcolor{keywordflow}{if} (port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[8] \& 2) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00209}00209                 sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)tDock\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00210}00210         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00211}00211         \textcolor{keywordflow}{if} (port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[8] \& 4) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00212}00212                 sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)tLid\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00213}00213         \} \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00214}00214                 \textcolor{keywordtype}{int} panelpos = (port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[8] >> 3) \& 7;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00215}00215                 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *panposstr[] = \{\textcolor{stringliteral}{"{}Top"{}}, \textcolor{stringliteral}{"{}Bottom"{}}, \textcolor{stringliteral}{"{}Left"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00216}00216                                            \textcolor{stringliteral}{"{}Right"{}}, \textcolor{stringliteral}{"{}Front"{}}, \textcolor{stringliteral}{"{}Back"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00217}00217                                            \textcolor{stringliteral}{"{}Unknown"{}}, \textcolor{stringliteral}{"{}Invalid"{}}\};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00218}00218                 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *shapestr[] = \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00219}00219                         \textcolor{stringliteral}{"{}Round"{}}, \textcolor{stringliteral}{"{}Oval"{}}, \textcolor{stringliteral}{"{}Square"{}}, \textcolor{stringliteral}{"{}VRect"{}}, \textcolor{stringliteral}{"{}HRect"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00220}00220                         \textcolor{stringliteral}{"{}VTrape"{}}, \textcolor{stringliteral}{"{}HTrape"{}}, \textcolor{stringliteral}{"{}Unknown"{}}, \textcolor{stringliteral}{"{}Chamferd"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00221}00221                         \textcolor{stringliteral}{"{}Rsvd"{}}, \textcolor{stringliteral}{"{}Rsvd"{}}, \textcolor{stringliteral}{"{}Rsvd"{}}, \textcolor{stringliteral}{"{}Rsvd"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00222}00222                         \textcolor{stringliteral}{"{}Rsvd"{}}, \textcolor{stringliteral}{"{}Rsvd"{}}, \textcolor{stringliteral}{"{}Rsvd"{}}, \textcolor{stringliteral}{"{}Rsvd"{}}\};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00223}00223 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00224}00224                 sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)tPanelPosition: \%s\(\backslash\)n"{}}, panposstr[panelpos]);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00225}00225                 \textcolor{keywordflow}{if} (panelpos < 6) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00226}00226                         \textcolor{keyword}{const} \textcolor{keywordtype}{char} *posstr[] = \{\textcolor{stringliteral}{"{}Upper"{}}, \textcolor{stringliteral}{"{}Center"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00227}00227                         \textcolor{stringliteral}{"{}Lower"{}}, \textcolor{stringliteral}{"{}Invalid"{}}\};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00228}00228 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00229}00229                         sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)tVertPosition: \%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00230}00230                             posstr[(port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[8] >> 6) \& 3]);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00231}00231                         sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)tHorizPosition: \%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00232}00232                             posstr[(port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[9]) \& 3]);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00233}00233                 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00234}00234                 sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)tShape: \%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00235}00235                     shapestr[(port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[9] >> 2) \& 0xf]);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00236}00236                 sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)tGroup Orientation \%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00237}00237                     ((port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[9] >> 6) \& 1) ? \textcolor{stringliteral}{"{}Vertical"{}} :}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00238}00238                     \textcolor{stringliteral}{"{}Horizontal"{}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00239}00239                 sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)tGroupToken \%x\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00240}00240                     ((port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[9] >> 7)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00241}00241                     | (port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[10] << 1)) \& 0xff);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00242}00242                 sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)tGroupPosition \%x\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00243}00243                     ((port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[10] >> 7)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00244}00244                     | (port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[11] << 1)) \& 0xff);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00245}00245                 sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)t\%s \%s \%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00246}00246                     (port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[11] \& 0x80) ?}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00247}00247                     \textcolor{stringliteral}{"{}Bay"{}} : \textcolor{stringliteral}{"{}"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00248}00248                     (port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[12] \& 1) ? \textcolor{stringliteral}{"{}Eject"{}} : \textcolor{stringliteral}{"{}"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00249}00249                     (port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[12] \& 2) ? \textcolor{stringliteral}{"{}OSPM"{}} : \textcolor{stringliteral}{"{}"{}}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00250}00250                     );}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00251}00251         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00252}00252         \textcolor{keywordflow}{if} ((port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[0] \& 0x7f) >= 2) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00253}00253                 sbuf\_printf(\&sb, \textcolor{stringliteral}{"{}\(\backslash\)tVOFF\%d mm HOFF \%dmm"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00254}00254                     port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[16] | (port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[17] << 8),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00255}00255                     port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[18] | (port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}[19] << 8));}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00256}00256         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00257}00257 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00258}00258 end:}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00259}00259         \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = sbuf\_finish(\&sb);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00260}00260         sbuf\_delete(\&sb);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00261}00261         \textcolor{keywordflow}{return} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00262}00262 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00263}00263 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00264}00264 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00265}\mbox{\hyperlink{usb__hub__acpi_8c_afda47c332823b297bb2c92e1c9c4b567}{00265}} \mbox{\hyperlink{usb__hub__acpi_8c_afda47c332823b297bb2c92e1c9c4b567}{acpi\_uhub\_parse\_pld}}(device\_t dev, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} p, ACPI\_HANDLE ah, \textcolor{keyword}{struct} sysctl\_oid\_list *tree)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00266}00266 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00267}00267         ACPI\_BUFFER buf;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00268}00268         \textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__softc}{acpi\_uhub\_softc}} *sc = device\_get\_softc(dev);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00269}00269         \textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__port}{acpi\_uhub\_port}} *port = \&sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_aef1af5f84555619efa86fa0fd4680402}{port}}[p -\/ 1];}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00270}00270 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00271}00271         buf.Pointer = NULL;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00272}00272         buf.Length = ACPI\_ALLOCATE\_BUFFER;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00273}00273 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00274}00274         \textcolor{keywordflow}{if} (AcpiEvaluateObject(ah, \textcolor{stringliteral}{"{}\_PLD"{}}, NULL, \&buf) == AE\_OK) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00275}00275                 ACPI\_OBJECT *obj;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00276}00276                 \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} *resbuf;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00277}00277                 \textcolor{keywordtype}{int} \mbox{\hyperlink{ehci_8h_a8aed22e2c7b283705ec82e0120515618}{len}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00278}00278 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00279}00279                 obj = buf.Pointer;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00280}00280 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00281}00281                 \textcolor{keywordflow}{if} (obj-\/>Type == ACPI\_TYPE\_PACKAGE}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00282}00282                     \&\& obj-\/>Package.Elements[0].Type == ACPI\_TYPE\_BUFFER) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00283}00283                         ACPI\_OBJECT *obj1;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00284}00284 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00285}00285                         obj1 = \&obj-\/>Package.Elements[0];}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00286}00286                         \mbox{\hyperlink{ehci_8h_a8aed22e2c7b283705ec82e0120515618}{len}} = obj1-\/>Buffer.Length;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00287}00287                         resbuf = obj1-\/>Buffer.Pointer;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00288}00288                 \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (obj-\/>Type == ACPI\_TYPE\_BUFFER) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00289}00289                         \mbox{\hyperlink{ehci_8h_a8aed22e2c7b283705ec82e0120515618}{len}} = obj-\/>Buffer.Length;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00290}00290                         resbuf = obj-\/>Buffer.Pointer;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00291}00291                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00292}00292                         \textcolor{keywordflow}{goto} skip;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00293}00293                 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00294}00294                 \mbox{\hyperlink{ehci_8h_a8aed22e2c7b283705ec82e0120515618}{len}} = (\mbox{\hyperlink{ehci_8h_a8aed22e2c7b283705ec82e0120515618}{len}} < \mbox{\hyperlink{usb__hub__acpi_8c_a5a409c78bf8c48811e31f23bc218d9f9}{ACPI\_PLD\_SIZE}}) ? \mbox{\hyperlink{ehci_8h_a8aed22e2c7b283705ec82e0120515618}{len}} : \mbox{\hyperlink{usb__hub__acpi_8c_a5a409c78bf8c48811e31f23bc218d9f9}{ACPI\_PLD\_SIZE}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00295}00295                 memcpy(port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}, resbuf, \mbox{\hyperlink{ehci_8h_a8aed22e2c7b283705ec82e0120515618}{len}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00296}00296                 SYSCTL\_ADD\_OPAQUE(}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00297}00297                     device\_get\_sysctl\_ctx(dev), tree, OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00298}00298                     \textcolor{stringliteral}{"{}pldraw"{}}, CTLFLAG\_RD | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00299}00299                     port-\/>\mbox{\hyperlink{structacpi__uhub__port_a31bd6d0683d307bbca5b3713dff2266e}{pld}}, \mbox{\hyperlink{ehci_8h_a8aed22e2c7b283705ec82e0120515618}{len}}, \textcolor{stringliteral}{"{}A"{}}, \textcolor{stringliteral}{"{}Raw PLD value"{}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00300}00300 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00301}00301                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__debug_8c_ae3f6d70c719c77e228ccc905331d7784}{usb\_debug}}) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00302}00302                         device\_printf(dev, \textcolor{stringliteral}{"{}Revision:\%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00303}00303                             resbuf[0] \& 0x7f);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00304}00304                         \textcolor{keywordflow}{if} ((resbuf[0] \& 0x80) == 0) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00305}00305                                 device\_printf(dev,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00306}00306                                     \textcolor{stringliteral}{"{}Color:\#\%02x\%02x\%02x\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00307}00307                                     resbuf[1], resbuf[2],}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00308}00308                                     resbuf[3]);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00309}00309                         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00310}00310                         device\_printf(dev, \textcolor{stringliteral}{"{}Width \%d mm Height \%d mm\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00311}00311                             resbuf[4] | (resbuf[5] << 8),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00312}00312                             resbuf[6] | (resbuf[7] << 8));}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00313}00313                         \textcolor{keywordflow}{if} (resbuf[8] \& 1) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00314}00314                                 device\_printf(dev, \textcolor{stringliteral}{"{}Visible\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00315}00315                         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00316}00316                         \textcolor{keywordflow}{if} (resbuf[8] \& 2) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00317}00317                                 device\_printf(dev, \textcolor{stringliteral}{"{}Dock\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00318}00318                         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00319}00319                         \textcolor{keywordflow}{if} (resbuf[8] \& 4) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00320}00320                                 device\_printf(dev, \textcolor{stringliteral}{"{}Lid\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00321}00321                         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00322}00322                         device\_printf(dev, \textcolor{stringliteral}{"{}PanelPosition: \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00323}00323                             (resbuf[8] >> 3) \& 7);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00324}00324                         device\_printf(dev, \textcolor{stringliteral}{"{}VertPosition: \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00325}00325                             (resbuf[8] >> 6) \& 3);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00326}00326                         device\_printf(dev, \textcolor{stringliteral}{"{}HorizPosition: \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00327}00327                             (resbuf[9]) \& 3);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00328}00328                         device\_printf(dev, \textcolor{stringliteral}{"{}Shape: \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00329}00329                             (resbuf[9] >> 2) \& 0xf);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00330}00330                         device\_printf(dev, \textcolor{stringliteral}{"{}80: \%02x, \%02x, \%02x\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00331}00331                             resbuf[9], resbuf[10], resbuf[11]);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00332}00332                         device\_printf(dev, \textcolor{stringliteral}{"{}96: \%02x, \%02x, \%02x, \%02x\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00333}00333                             resbuf[12], resbuf[13],}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00334}00334                             resbuf[14], resbuf[15]);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00335}00335 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00336}00336                         \textcolor{keywordflow}{if} ((resbuf[0] \& 0x7f) >= 2) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00337}00337                                 device\_printf(dev, \textcolor{stringliteral}{"{}VOFF\%d mm HOFF \%dmm"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00338}00338                                     resbuf[16] | (resbuf[17] << 8),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00339}00339                                     resbuf[18] | (resbuf[19] << 8));}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00340}00340                         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00341}00341                 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00342}00342         skip:}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00343}00343                 AcpiOsFree(buf.Pointer);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00344}00344         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00345}00345         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00346}00346 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00347}00347 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00348}00348 \textcolor{keyword}{static} ACPI\_STATUS}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00349}\mbox{\hyperlink{usb__hub__acpi_8c_affd4ad90a7258fbf0ceadb048e9d40b9}{00349}} \mbox{\hyperlink{usb__hub__acpi_8c_affd4ad90a7258fbf0ceadb048e9d40b9}{acpi\_uhub\_find\_rh}}(device\_t dev, ACPI\_HANDLE *ah)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00350}00350 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00351}00351         device\_t grand;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00352}00352         ACPI\_HANDLE gah;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00353}00353 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00354}00354         *ah = NULL;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00355}00355         grand = device\_get\_parent(device\_get\_parent(dev));}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00356}00356 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00357}00357         \textcolor{keywordflow}{if} ((gah = acpi\_get\_handle(grand)) == NULL)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00358}00358                 \textcolor{keywordflow}{return} (AE\_ERROR);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00359}00359 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00360}00360         \textcolor{keywordflow}{return} (AcpiWalkNamespace(ACPI\_TYPE\_DEVICE, gah, 1,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00361}00361             \mbox{\hyperlink{usb__hub__acpi_8c_ad0da7cbfeb5558d68f8444a5ad460960}{acpi\_uhub\_find\_rh\_cb}}, NULL, dev, ah));}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00362}00362 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00363}00363 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00364}00364 \textcolor{keyword}{static} ACPI\_STATUS}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00365}\mbox{\hyperlink{usb__hub__acpi_8c_a7904a31eabebac26761eea4f10dce3ad}{00365}} \mbox{\hyperlink{usb__hub__acpi_8c_a7904a31eabebac26761eea4f10dce3ad}{acpi\_usb\_hub\_port\_probe\_cb}}(ACPI\_HANDLE ah, UINT32 lv, \textcolor{keywordtype}{void} *ctx, \textcolor{keywordtype}{void} **rv)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00366}00366 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00367}00367         ACPI\_DEVICE\_INFO *devinfo;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00368}00368         device\_t dev = ctx;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00369}00369         \textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__softc}{acpi\_uhub\_softc}} *sc = device\_get\_softc(dev);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00370}00370         UINT32 ret;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00371}00371 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00372}00372         ret = AcpiGetObjectInfo(\mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{ah}}, \&devinfo);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00373}00373         \textcolor{keywordflow}{if} (ACPI\_SUCCESS(ret)) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00374}00374                 \textcolor{keywordflow}{if} ((devinfo-\/>Valid \& ACPI\_VALID\_ADR) \&\&}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00375}00375                     (devinfo-\/>Address > 0) \&\&}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00376}00376                     (devinfo-\/>Address <= (uint64\_t)sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_ab6e801fa75a855eedfeba8cc06108a81}{nports}})) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00377}00377                         \textcolor{keywordtype}{char} buf[] = \textcolor{stringliteral}{"{}portXXX"{}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00378}00378                         \textcolor{keyword}{struct }sysctl\_ctx\_list *ctx = device\_get\_sysctl\_ctx(dev);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00379}00379                         \textcolor{keyword}{struct }sysctl\_oid *oid;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00380}00380                         \textcolor{keyword}{struct }sysctl\_oid\_list *tree;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00381}00381                         }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00382}00382                         snprintf(buf, \textcolor{keyword}{sizeof}(buf), \textcolor{stringliteral}{"{}port\%ju"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00383}00383                             (uintmax\_t)devinfo-\/>Address);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00384}00384                         oid = SYSCTL\_ADD\_NODE(ctx,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00385}00385                             SYSCTL\_CHILDREN(device\_get\_sysctl\_tree(dev)),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00386}00386                                 OID\_AUTO, buf, CTLFLAG\_RD | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00387}00387                                 NULL, \textcolor{stringliteral}{"{}port nodes"{}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00388}00388                         tree = SYSCTL\_CHILDREN(oid);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00389}00389                         sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_aef1af5f84555619efa86fa0fd4680402}{port}}[devinfo-\/>Address -\/ 1].\mbox{\hyperlink{structacpi__uhub__port_a0c2215f5f3c32e7082272d31996844f6}{handle}} = ah;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00390}00390                         sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_aef1af5f84555619efa86fa0fd4680402}{port}}[devinfo-\/>Address -\/ 1].\mbox{\hyperlink{structacpi__uhub__port_abdd89522a70e88146a10274616bd78e0}{upc}} = 0xffffffff;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00391}00391                         \mbox{\hyperlink{usb__hub__acpi_8c_a0364b5dcf4f103423f7023e40b2941c4}{acpi\_uhub\_parse\_upc}}(dev, devinfo-\/>Address, ah, tree);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00392}00392                         \mbox{\hyperlink{usb__hub__acpi_8c_afda47c332823b297bb2c92e1c9c4b567}{acpi\_uhub\_parse\_pld}}(dev, devinfo-\/>Address, ah, tree);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00393}00393                         SYSCTL\_ADD\_PROC(device\_get\_sysctl\_ctx(dev), tree,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00394}00394                             OID\_AUTO, \textcolor{stringliteral}{"{}info"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00395}00395                             CTLTYPE\_STRING | CTLFLAG\_RD | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00396}00396                             \&sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_aef1af5f84555619efa86fa0fd4680402}{port}}[devinfo-\/>Address -\/ 1], 0,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00397}00397                             \mbox{\hyperlink{usb__hub__acpi_8c_ad8a64a9e3d0a4fdd1bbf04e51ff60bd2}{acpi\_uhub\_port\_sysctl}}, \textcolor{stringliteral}{"{}A"{}}, \textcolor{stringliteral}{"{}Port information"{}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00398}00398                 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00399}00399                 AcpiOsFree(devinfo);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00400}00400         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00401}00401         \textcolor{keywordflow}{return} (AE\_OK);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00402}00402 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00403}00403 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00404}00404 \textcolor{keyword}{static} ACPI\_STATUS}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00405}\mbox{\hyperlink{usb__hub__acpi_8c_ab18980e7fdbafbc95845b5ce608bfd60}{00405}} \mbox{\hyperlink{usb__hub__acpi_8c_ab18980e7fdbafbc95845b5ce608bfd60}{acpi\_usb\_hub\_port\_probe}}(device\_t dev, ACPI\_HANDLE ah)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00406}00406 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00407}00407         \textcolor{keywordflow}{return} (AcpiWalkNamespace(ACPI\_TYPE\_DEVICE,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00408}00408             ah, 1,}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00409}00409             \mbox{\hyperlink{usb__hub__acpi_8c_a7904a31eabebac26761eea4f10dce3ad}{acpi\_usb\_hub\_port\_probe\_cb}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00410}00410             NULL, dev, NULL));}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00411}00411 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00412}00412 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00413}00413 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00414}\mbox{\hyperlink{usb__hub__acpi_8c_a706be2dfc46cba0b73f521cb2ba1db03}{00414}} \mbox{\hyperlink{usb__hub__acpi_8c_a706be2dfc46cba0b73f521cb2ba1db03}{acpi\_uhub\_root\_probe}}(device\_t dev)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00415}00415 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00416}00416         ACPI\_STATUS \mbox{\hyperlink{xhci_8h_ade818037fd6c985038ff29656089758d}{status}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00417}00417         ACPI\_HANDLE ah;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00418}00418 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00419}00419         \textcolor{keywordflow}{if} (acpi\_disabled(\textcolor{stringliteral}{"{}usb"{}}))}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00420}00420                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00421}00421 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00422}00422         \mbox{\hyperlink{xhci_8h_ade818037fd6c985038ff29656089758d}{status}} = \mbox{\hyperlink{usb__hub__acpi_8c_affd4ad90a7258fbf0ceadb048e9d40b9}{acpi\_uhub\_find\_rh}}(dev, \&ah);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00423}00423         \textcolor{keywordflow}{if} (ACPI\_SUCCESS(\mbox{\hyperlink{xhci_8h_ade818037fd6c985038ff29656089758d}{status}}) \&\& ah != NULL \&\&}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00424}00424             \mbox{\hyperlink{usb__hub__private_8h_ac683076afeafd838843f7ca07e3904d4}{uhub\_probe}}(dev) <= 0) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00425}00425                 \textcolor{comment}{/* success prior than non-\/ACPI USB HUB */}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00426}00426                 \textcolor{keywordflow}{return} (BUS\_PROBE\_DEFAULT + 1);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00427}00427         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00428}00428         \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00429}00429 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00430}00430 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00431}00431 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00432}\mbox{\hyperlink{usb__hub__acpi_8c_a37da3135f52f2b3b887e7d2b5800691c}{00432}} \mbox{\hyperlink{usb__hub__acpi_8c_a37da3135f52f2b3b887e7d2b5800691c}{acpi\_uhub\_probe}}(device\_t dev)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00433}00433 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00434}00434         ACPI\_HANDLE ah;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00435}00435 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00436}00436         \textcolor{keywordflow}{if} (acpi\_disabled(\textcolor{stringliteral}{"{}usb"{}}))}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00437}00437                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00438}00438 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00439}00439         ah = acpi\_get\_handle(dev);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00440}00440         \textcolor{keywordflow}{if} (ah == NULL)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00441}00441                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00442}00442 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00443}00443         \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__hub__private_8h_ac683076afeafd838843f7ca07e3904d4}{uhub\_probe}}(dev) <= 0) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00444}00444                 \textcolor{comment}{/* success prior than non-\/ACPI USB HUB */}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00445}00445                 \textcolor{keywordflow}{return} (BUS\_PROBE\_DEFAULT + 1);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00446}00446         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00447}00447         \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00448}00448 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00449}00449 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00450}\mbox{\hyperlink{usb__hub__acpi_8c_ae9f5709aae78c4cdc0feaeba73ce5b52}{00450}} \mbox{\hyperlink{usb__hub__acpi_8c_ae9f5709aae78c4cdc0feaeba73ce5b52}{acpi\_uhub\_attach\_common}}(device\_t dev)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00451}00451 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00452}00452         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__hub}{usb\_hub}} *uh;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00453}00453         \textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__softc}{acpi\_uhub\_softc}} *sc = device\_get\_softc(dev);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00454}00454         ACPI\_STATUS \mbox{\hyperlink{xhci_8h_ade818037fd6c985038ff29656089758d}{status}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00455}00455         \textcolor{keywordtype}{int} ret = ENXIO;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00456}00456 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00457}00457         uh = sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_aa0449ce5974da9babf645b974ddf5131}{usc}}.\mbox{\hyperlink{structuhub__softc_a4819607eed7719ceea741c7710175cf6}{sc\_udev}}-\/>\mbox{\hyperlink{structusb__device_a4fff6a478d5f92f73df9d6f2b34760a3}{hub}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00458}00458         sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_ab6e801fa75a855eedfeba8cc06108a81}{nports}} = uh-\/>\mbox{\hyperlink{structusb__hub_afa8acde28ca18749a6eb93950617de33}{nports}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00459}00459         sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_aef1af5f84555619efa86fa0fd4680402}{port}} = malloc(\textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structacpi__uhub__port}{acpi\_uhub\_port}}) * uh-\/>\mbox{\hyperlink{structusb__hub_afa8acde28ca18749a6eb93950617de33}{nports}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00460}00460             M\_USBDEV, M\_WAITOK | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00461}00461         \mbox{\hyperlink{xhci_8h_ade818037fd6c985038ff29656089758d}{status}} = \mbox{\hyperlink{usb__hub__acpi_8c_ab18980e7fdbafbc95845b5ce608bfd60}{acpi\_usb\_hub\_port\_probe}}(dev, sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{ah}});}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00462}00462 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00463}00463         \textcolor{keywordflow}{if} (ACPI\_SUCCESS(\mbox{\hyperlink{xhci_8h_ade818037fd6c985038ff29656089758d}{status}}))\{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00464}00464                 ret = 0;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00465}00465         \} }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00466}00466 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00467}00467         \textcolor{keywordflow}{return} (ret);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00468}00468 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00469}00469 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00470}00470 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00471}\mbox{\hyperlink{usb__hub__acpi_8c_a9ce2066d1d90b2f949f283844eda05dd}{00471}} \mbox{\hyperlink{usb__hub__acpi_8c_a9ce2066d1d90b2f949f283844eda05dd}{acpi\_uhub\_detach}}(device\_t dev)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00472}00472 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00473}00473         \textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__softc}{acpi\_uhub\_softc}} *sc = device\_get\_softc(dev);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00474}00474 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00475}00475         free(sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_aef1af5f84555619efa86fa0fd4680402}{port}}, M\_USBDEV);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00476}00476 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00477}00477         \textcolor{keywordflow}{return} (\mbox{\hyperlink{usb__hub__private_8h_af19c413f8eeaee76acc5e40bfe4bf0cc}{uhub\_detach}}(dev));}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00478}00478 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00479}00479 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00480}00480 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00481}\mbox{\hyperlink{usb__hub__acpi_8c_a1e226c6e315c0ad9b814b6515c33eaba}{00481}} \mbox{\hyperlink{usb__hub__acpi_8c_a1e226c6e315c0ad9b814b6515c33eaba}{acpi\_uhub\_root\_attach}}(device\_t dev)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00482}00482 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00483}00483         \textcolor{keywordtype}{int} ret;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00484}00484         \textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__softc}{acpi\_uhub\_softc}} *sc = device\_get\_softc(dev);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00485}00485 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00486}00486         \textcolor{keywordflow}{if} (ACPI\_FAILURE(\mbox{\hyperlink{usb__hub__acpi_8c_affd4ad90a7258fbf0ceadb048e9d40b9}{acpi\_uhub\_find\_rh}}(dev, \&sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{ah}})) ||}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00487}00487             (sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{ah}} == NULL)) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00488}00488                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00489}00489         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00490}00490         \textcolor{keywordflow}{if} ((ret = \mbox{\hyperlink{usb__hub__private_8h_a932e6a69f40095006f2d428f17e2c0dc}{uhub\_attach}}(dev)) != 0) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00491}00491                 \textcolor{keywordflow}{return} (ret);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00492}00492         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00493}00493 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00494}00494         \textcolor{keywordflow}{if} ((ret = \mbox{\hyperlink{usb__hub__acpi_8c_ae9f5709aae78c4cdc0feaeba73ce5b52}{acpi\_uhub\_attach\_common}}(dev)) != 0) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00495}00495                 \mbox{\hyperlink{usb__hub__acpi_8c_a9ce2066d1d90b2f949f283844eda05dd}{acpi\_uhub\_detach}}(dev);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00496}00496         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00497}00497         \textcolor{keywordflow}{return} ret;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00498}00498 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00499}00499 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00500}00500 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00501}\mbox{\hyperlink{usb__hub__acpi_8c_a4ba6a68995538a2b7a23592a98b8be34}{00501}} \mbox{\hyperlink{usb__hub__acpi_8c_a4ba6a68995538a2b7a23592a98b8be34}{acpi\_uhub\_attach}}(device\_t dev)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00502}00502 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00503}00503         \textcolor{keywordtype}{int} ret;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00504}00504         \textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__softc}{acpi\_uhub\_softc}} *sc = device\_get\_softc(dev);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00505}00505 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00506}00506         sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{ah}} = acpi\_get\_handle(dev);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00507}00507 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00508}00508         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{ah}} == NULL) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00509}00509                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00510}00510         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00511}00511         \textcolor{keywordflow}{if} ((ret = \mbox{\hyperlink{usb__hub__private_8h_a932e6a69f40095006f2d428f17e2c0dc}{uhub\_attach}}(dev)) != 0) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00512}00512                 \textcolor{keywordflow}{return} (ret);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00513}00513         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00514}00514 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00515}00515         \textcolor{keywordflow}{if} ((ret = \mbox{\hyperlink{usb__hub__acpi_8c_ae9f5709aae78c4cdc0feaeba73ce5b52}{acpi\_uhub\_attach\_common}}(dev)) != 0) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00516}00516                 \mbox{\hyperlink{usb__hub__acpi_8c_a9ce2066d1d90b2f949f283844eda05dd}{acpi\_uhub\_detach}}(dev);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00517}00517         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00518}00518 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00519}00519         \textcolor{keywordflow}{return} (ret);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00520}00520 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00521}00521 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00522}00522 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00523}\mbox{\hyperlink{usb__hub__acpi_8c_a9ebe89a5ef9ef6bf697cec1fde26c19b}{00523}} \mbox{\hyperlink{usb__hub__acpi_8c_a9ebe89a5ef9ef6bf697cec1fde26c19b}{acpi\_uhub\_read\_ivar}}(device\_t dev, device\_t child, \textcolor{keywordtype}{int} idx, uintptr\_t *res)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00524}00524 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00525}00525         \textcolor{keyword}{struct }\mbox{\hyperlink{structhub__result}{hub\_result}} hres;}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00526}00526         \textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__softc}{acpi\_uhub\_softc}} *sc = device\_get\_softc(dev);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00527}00527         ACPI\_HANDLE \mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{ah}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00528}00528 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00529}00529         bus\_topo\_lock();}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00530}00530         \mbox{\hyperlink{usb__hub_8c_a7da76831db429f20ec4000ee6e96f163}{uhub\_find\_iface\_index}}(sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_aa0449ce5974da9babf645b974ddf5131}{usc}}.\mbox{\hyperlink{structuhub__softc_a4819607eed7719ceea741c7710175cf6}{sc\_udev}}-\/>\mbox{\hyperlink{structusb__device_a4fff6a478d5f92f73df9d6f2b34760a3}{hub}}, child, \&hres);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00531}00531         bus\_topo\_unlock();}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00532}00532 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00533}00533         \textcolor{keywordflow}{if} ((idx == ACPI\_IVAR\_HANDLE) \&\&}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00534}00534             (hres.\mbox{\hyperlink{structhub__result_a26e2d097c07b7441b498dd9f2815169e}{portno}} > 0) \&\&}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00535}00535             (hres.\mbox{\hyperlink{structhub__result_a26e2d097c07b7441b498dd9f2815169e}{portno}} <= sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_ab6e801fa75a855eedfeba8cc06108a81}{nports}}) \&\&}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00536}00536             (\mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{ah}} = sc-\/>\mbox{\hyperlink{structacpi__uhub__softc_aef1af5f84555619efa86fa0fd4680402}{port}}[hres.\mbox{\hyperlink{structhub__result_a26e2d097c07b7441b498dd9f2815169e}{portno}} -\/ 1].\mbox{\hyperlink{structacpi__uhub__port_a0c2215f5f3c32e7082272d31996844f6}{handle}})) \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00537}00537                 *res = (uintptr\_t)\mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{ah}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00538}00538                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00539}00539         \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00540}00540         \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00541}00541 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00542}00542 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00543}00543 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00544}\mbox{\hyperlink{usb__hub__acpi_8c_a06d739659d717df997faf74689584ebb}{00544}} \mbox{\hyperlink{usb__hub__acpi_8c_a06d739659d717df997faf74689584ebb}{acpi\_uhub\_child\_location}}(device\_t parent, device\_t child, \textcolor{keyword}{struct} sbuf *sb)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00545}00545 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00546}00546         ACPI\_HANDLE \mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{ah}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00547}00547 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00548}00548         \mbox{\hyperlink{usb__hub__private_8h_a0fc00fdfd29d59d72b7cab65da513452}{uhub\_child\_location}}(parent, child, sb);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00549}00549 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00550}00550         \mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{ah}} = acpi\_get\_handle(child);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00551}00551         \textcolor{keywordflow}{if} (\mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{ah}} != NULL)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00552}00552                 sbuf\_printf(sb, \textcolor{stringliteral}{"{} handle=\%s"{}}, acpi\_name(\mbox{\hyperlink{structacpi__uhub__softc_a8b2c52325ba83973fea42d8ac9e8e863}{ah}}));}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00553}00553         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00554}00554 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00555}00555 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00556}00556 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00557}\mbox{\hyperlink{usb__hub__acpi_8c_ad8fc392ec2b73ef0e267e9be259a3942}{00557}} \mbox{\hyperlink{usb__hub__acpi_8c_ad8fc392ec2b73ef0e267e9be259a3942}{acpi\_uhub\_get\_device\_path}}(device\_t bus, device\_t child, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *locator, \textcolor{keyword}{struct} sbuf *sb)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00558}00558 \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00559}00559         \textcolor{keywordflow}{if} (strcmp(locator, BUS\_LOCATOR\_ACPI) == 0)}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00560}00560                 \textcolor{keywordflow}{return} (acpi\_get\_acpi\_device\_path(bus, child, locator, sb));}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00561}00561 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00562}00562         \textcolor{comment}{/* Otherwise call the parent class' method. */}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00563}00563         \textcolor{keywordflow}{return} (\mbox{\hyperlink{usb__hub__private_8h_ab10518baabf47fc18899da8592bbe857}{uhub\_get\_device\_path}}(bus, child, locator, sb));}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00564}00564 \}}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00565}00565 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00566}\mbox{\hyperlink{usb__hub__acpi_8c_af4e532a2f6f5ae517a7bab2156e95496}{00566}} \textcolor{keyword}{static} device\_method\_t \mbox{\hyperlink{usb__hub__acpi_8c_af4e532a2f6f5ae517a7bab2156e95496}{acpi\_uhub\_methods}}[] = \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00567}00567         DEVMETHOD(device\_probe, \mbox{\hyperlink{usb__hub__acpi_8c_a37da3135f52f2b3b887e7d2b5800691c}{acpi\_uhub\_probe}}),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00568}00568         DEVMETHOD(device\_attach, \mbox{\hyperlink{usb__hub__acpi_8c_a4ba6a68995538a2b7a23592a98b8be34}{acpi\_uhub\_attach}}),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00569}00569         DEVMETHOD(device\_detach, \mbox{\hyperlink{usb__hub__acpi_8c_a9ce2066d1d90b2f949f283844eda05dd}{acpi\_uhub\_detach}}),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00570}00570         DEVMETHOD(bus\_child\_location, \mbox{\hyperlink{usb__hub__acpi_8c_a06d739659d717df997faf74689584ebb}{acpi\_uhub\_child\_location}}),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00571}00571         DEVMETHOD(bus\_get\_device\_path, \mbox{\hyperlink{usb__hub__acpi_8c_ad8fc392ec2b73ef0e267e9be259a3942}{acpi\_uhub\_get\_device\_path}}),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00572}00572         DEVMETHOD(bus\_read\_ivar, \mbox{\hyperlink{usb__hub__acpi_8c_a9ebe89a5ef9ef6bf697cec1fde26c19b}{acpi\_uhub\_read\_ivar}}),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00573}00573         DEVMETHOD\_END}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00574}00574 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00575}00575 \};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00576}00576 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00577}\mbox{\hyperlink{usb__hub__acpi_8c_a6bfeb3fb2f87bf16482a411a299a8441}{00577}} \textcolor{keyword}{static} device\_method\_t \mbox{\hyperlink{usb__hub__acpi_8c_a6bfeb3fb2f87bf16482a411a299a8441}{acpi\_uhub\_root\_methods}}[] = \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00578}00578         DEVMETHOD(device\_probe, \mbox{\hyperlink{usb__hub__acpi_8c_a706be2dfc46cba0b73f521cb2ba1db03}{acpi\_uhub\_root\_probe}}),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00579}00579         DEVMETHOD(device\_attach, \mbox{\hyperlink{usb__hub__acpi_8c_a1e226c6e315c0ad9b814b6515c33eaba}{acpi\_uhub\_root\_attach}}),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00580}00580         DEVMETHOD(device\_detach, \mbox{\hyperlink{usb__hub__acpi_8c_a9ce2066d1d90b2f949f283844eda05dd}{acpi\_uhub\_detach}}),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00581}00581         DEVMETHOD(bus\_read\_ivar, \mbox{\hyperlink{usb__hub__acpi_8c_a9ebe89a5ef9ef6bf697cec1fde26c19b}{acpi\_uhub\_read\_ivar}}),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00582}00582         DEVMETHOD(bus\_child\_location, \mbox{\hyperlink{usb__hub__acpi_8c_a06d739659d717df997faf74689584ebb}{acpi\_uhub\_child\_location}}),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00583}00583         DEVMETHOD(bus\_get\_device\_path, \mbox{\hyperlink{usb__hub__acpi_8c_ad8fc392ec2b73ef0e267e9be259a3942}{acpi\_uhub\_get\_device\_path}}),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00584}00584         DEVMETHOD\_END}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00585}00585 \};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00586}00586 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00587}\mbox{\hyperlink{usb__hub__acpi_8c_ab948f1e2205462d62e227ffee7d47aed}{00587}} \textcolor{keyword}{static} devclass\_t \mbox{\hyperlink{usb__hub__acpi_8c_ab948f1e2205462d62e227ffee7d47aed}{uhub\_devclass}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00588}00588 \textcolor{keyword}{extern} driver\_t \mbox{\hyperlink{usb__hub__acpi_8c_ae49e704f3a311890f630ad29794ea3c2}{uhub\_driver}};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00589}\mbox{\hyperlink{usb__hub__acpi_8c_ae1ee9323c2bccf8015317e604453ce24}{00589}} \textcolor{keyword}{static} kobj\_class\_t \mbox{\hyperlink{usb__hub__acpi_8c_ae1ee9323c2bccf8015317e604453ce24}{uhub\_baseclasses}}[] = \{\&\mbox{\hyperlink{usb__hub__acpi_8c_ae49e704f3a311890f630ad29794ea3c2}{uhub\_driver}}, NULL\};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00590}00590 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00591}\mbox{\hyperlink{usb__hub__acpi_8c_a1e52b12bbe8826cdb41a48cdc3f2fd9d}{00591}} \textcolor{keyword}{static} driver\_t \mbox{\hyperlink{usb__hub__acpi_8c_a1e52b12bbe8826cdb41a48cdc3f2fd9d}{acpi\_uhub\_driver}} = \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00592}00592         .name = \textcolor{stringliteral}{"{}uhub"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00593}00593         .methods = \mbox{\hyperlink{usb__hub__acpi_8c_af4e532a2f6f5ae517a7bab2156e95496}{acpi\_uhub\_methods}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00594}00594         .size = \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__softc}{acpi\_uhub\_softc}}),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00595}00595         .baseclasses = \mbox{\hyperlink{usb__hub__acpi_8c_ae1ee9323c2bccf8015317e604453ce24}{uhub\_baseclasses}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00596}00596 \};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00597}00597 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00598}\mbox{\hyperlink{usb__hub__acpi_8c_afd5b46cb51d69686c72d938be1595265}{00598}} \textcolor{keyword}{static} driver\_t \mbox{\hyperlink{usb__hub__acpi_8c_afd5b46cb51d69686c72d938be1595265}{acpi\_uhub\_root\_driver}} = \{}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00599}00599         .name = \textcolor{stringliteral}{"{}uhub"{}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00600}00600         .methods = \mbox{\hyperlink{usb__hub__acpi_8c_a6bfeb3fb2f87bf16482a411a299a8441}{acpi\_uhub\_root\_methods}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00601}00601         .size = \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct }\mbox{\hyperlink{structacpi__uhub__softc}{acpi\_uhub\_softc}}),}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00602}00602         .baseclasses = \mbox{\hyperlink{usb__hub__acpi_8c_ae1ee9323c2bccf8015317e604453ce24}{uhub\_baseclasses}},}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00603}00603 \};}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00604}00604 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00605}\mbox{\hyperlink{usb__hub__acpi_8c_a237b572eb2fceec6b96451843d2a0852}{00605}} \mbox{\hyperlink{usb__hub__acpi_8c_a237b572eb2fceec6b96451843d2a0852}{DRIVER\_MODULE}}(uacpi, uhub, \mbox{\hyperlink{usb__hub__acpi_8c_a1e52b12bbe8826cdb41a48cdc3f2fd9d}{acpi\_uhub\_driver}}, \mbox{\hyperlink{usb__hub__acpi_8c_ab948f1e2205462d62e227ffee7d47aed}{uhub\_devclass}}, 0, 0);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00606}\mbox{\hyperlink{usb__hub__acpi_8c_a16886b37d78bb0c01e2202ece1f26206}{00606}} \mbox{\hyperlink{usb__hub__acpi_8c_a237b572eb2fceec6b96451843d2a0852}{DRIVER\_MODULE}}(uacpi, usbus, \mbox{\hyperlink{usb__hub__acpi_8c_afd5b46cb51d69686c72d938be1595265}{acpi\_uhub\_root\_driver}}, \mbox{\hyperlink{usb__hub__acpi_8c_ab948f1e2205462d62e227ffee7d47aed}{uhub\_devclass}}, 0, 0);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00607}00607 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00608}\mbox{\hyperlink{usb__hub__acpi_8c_a556b4da3b3053ef72cacf2688007bbac}{00608}} \mbox{\hyperlink{usb__hub__acpi_8c_a556b4da3b3053ef72cacf2688007bbac}{MODULE\_DEPEND}}(uacpi, acpi, 1, 1, 1);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00609}\mbox{\hyperlink{usb__hub__acpi_8c_ab66ebc62d244a21a10d90cfe27db9f45}{00609}} \mbox{\hyperlink{usb__hub__acpi_8c_a556b4da3b3053ef72cacf2688007bbac}{MODULE\_DEPEND}}(uacpi, \mbox{\hyperlink{usb__if_8m_adfa3f6da9c4881e494b180c4ebb06470}{usb}}, 1, 1, 1);}
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00610}00610 }
\DoxyCodeLine{\Hypertarget{usb__hub__acpi_8c_source_l00611}\mbox{\hyperlink{usb__hub__acpi_8c_a80428c58904a0d2ad613c727fe735ea3}{00611}} \mbox{\hyperlink{usb__hub__acpi_8c_a80428c58904a0d2ad613c727fe735ea3}{MODULE\_VERSION}}(uacpi, 1);}

\end{DoxyCode}
