\hypertarget{r88e__fw_8c_source}{}\doxysection{r88e\+\_\+fw.\+c}
\label{r88e__fw_8c_source}\index{dev/rtwn/rtl8188e/r88e\_fw.c@{dev/rtwn/rtl8188e/r88e\_fw.c}}
\mbox{\hyperlink{r88e__fw_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00001}00001 \textcolor{comment}{/*      \$OpenBSD: if\_urtwn.c,v 1.16 2011/02/10 17:26:40 jakemsr Exp \$   */}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00002}00002 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00003}00003 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00004}00004 \textcolor{comment}{ * Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00005}00005 \textcolor{comment}{ * Copyright (c) 2014 Kevin Lo <kevlo@FreeBSD.org>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00006}00006 \textcolor{comment}{ * Copyright (c) 2015-\/2016 Andriy Voskoboinyk <avos@FreeBSD.org>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00008}00008 \textcolor{comment}{ * Permission to use, copy, modify, and distribute this software for any}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00009}00009 \textcolor{comment}{ * purpose with or without fee is hereby granted, provided that the above}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00010}00010 \textcolor{comment}{ * copyright notice and this permission notice appear in all copies.}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00011}00011 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00012}00012 \textcolor{comment}{ * THE SOFTWARE IS PROVIDED "{}AS IS"{} AND THE AUTHOR DISCLAIMS ALL WARRANTIES}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00013}00013 \textcolor{comment}{ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00014}00014 \textcolor{comment}{ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00015}00015 \textcolor{comment}{ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00016}00016 \textcolor{comment}{ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00017}00017 \textcolor{comment}{ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00018}00018 \textcolor{comment}{ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00019}00019 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00020}00020 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00021}00021 \textcolor{preprocessor}{\#include <sys/cdefs.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00022}\mbox{\hyperlink{r88e__fw_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{00022}} \mbox{\hyperlink{r88e__fw_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{\_\_FBSDID}}(\textcolor{stringliteral}{"{}\$FreeBSD\$"{}});}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00023}00023 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00024}00024 \textcolor{preprocessor}{\#include "{}opt\_wlan.h"{}}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00025}00025 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00026}00026 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00027}00027 \textcolor{preprocessor}{\#include <sys/lock.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00028}00028 \textcolor{preprocessor}{\#include <sys/mutex.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00029}00029 \textcolor{preprocessor}{\#include <sys/mbuf.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00030}00030 \textcolor{preprocessor}{\#include <sys/kernel.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00031}00031 \textcolor{preprocessor}{\#include <sys/socket.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00032}00032 \textcolor{preprocessor}{\#include <sys/systm.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00033}00033 \textcolor{preprocessor}{\#include <sys/malloc.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00034}00034 \textcolor{preprocessor}{\#include <sys/queue.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00035}00035 \textcolor{preprocessor}{\#include <sys/taskqueue.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00036}00036 \textcolor{preprocessor}{\#include <sys/bus.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00037}00037 \textcolor{preprocessor}{\#include <sys/endian.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00038}00038 \textcolor{preprocessor}{\#include <sys/linker.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00039}00039 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00040}00040 \textcolor{preprocessor}{\#include <net/if.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00041}00041 \textcolor{preprocessor}{\#include <net/ethernet.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00042}00042 \textcolor{preprocessor}{\#include <net/if\_media.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00043}00043 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00044}00044 \textcolor{preprocessor}{\#include <net80211/ieee80211\_var.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00045}00045 \textcolor{preprocessor}{\#include <net80211/ieee80211\_radiotap.h>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00046}00046 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00047}00047 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{if__rtwnreg_8h}{dev/rtwn/if\_rtwnreg.h}}>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00048}00048 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{if__rtwnvar_8h}{dev/rtwn/if\_rtwnvar.h}}>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00049}00049 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00050}00050 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{if__rtwn__debug_8h}{dev/rtwn/if\_rtwn\_debug.h}}>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00051}00051 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00052}00052 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{r88e_8h}{dev/rtwn/rtl8188e/r88e.h}}>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00053}00053 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{r88e__reg_8h}{dev/rtwn/rtl8188e/r88e\_reg.h}}>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00054}00054 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{r88e__fw__cmd_8h}{dev/rtwn/rtl8188e/r88e\_fw\_cmd.h}}>}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00055}00055 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00056}00056 \textcolor{preprocessor}{\#ifndef RTWN\_WITHOUT\_UCODE}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00057}00057 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00058}\mbox{\hyperlink{r88e_8h_a03eb40019580237b9092785945653d6b}{00058}} \mbox{\hyperlink{r88e__fw_8c_aa76a643905b1189fefd14200f5fecb07}{r88e\_fw\_cmd}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, uint8\_t \textcolor{keywordtype}{id}, \textcolor{keyword}{const} \textcolor{keywordtype}{void} *buf, \textcolor{keywordtype}{int} len)}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00059}00059 \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00060}00060         \textcolor{keyword}{struct }\mbox{\hyperlink{structr88e__fw__cmd}{r88e\_fw\_cmd}} cmd;}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00061}00061         \textcolor{keywordtype}{int} ntries, error;}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00062}00062 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00063}00063         \textcolor{keywordflow}{if} (!(sc-\/>\mbox{\hyperlink{structrtwn__softc_aa141cf90dc5b1563913ece10d996ad7e}{sc\_flags}} \& \mbox{\hyperlink{if__rtwnvar_8h_af009bc525f30644399e7c195ba7a2afd}{RTWN\_FW\_LOADED}})) \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00064}00064                 \mbox{\hyperlink{if__rtwn__debug_8h_a6ca1eeaaeb8a9a7f515dd33e65e9c591}{RTWN\_DPRINTF}}(sc, RTWN\_DEBUG\_FIRMWARE, \textcolor{stringliteral}{"{}\%s: firmware "{}}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00065}00065                     \textcolor{stringliteral}{"{}was not loaded; command (id \%d) will be discarded\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00066}00066                     \_\_func\_\_, \textcolor{keywordtype}{id});}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00067}00067                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00068}00068         \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00069}00069 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00070}00070         \textcolor{comment}{/* Wait for current FW box to be empty. */}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00071}00071         \textcolor{keywordflow}{for} (ntries = 0; ntries < 100; ntries++) \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00072}00072                 \textcolor{keywordflow}{if} (!(\mbox{\hyperlink{if__rtwnvar_8h_aac420dec51bde7fb227f4b85ff462485}{rtwn\_read\_1}}(sc, \mbox{\hyperlink{r92c__reg_8h_a6b304c09ed8c51ab33a9ece8cd22063b}{R92C\_HMETFR}}) \& (1 << sc-\/>\mbox{\hyperlink{structrtwn__softc_a11b0bb8d214181cd87bf0de01790efd7}{fwcur}})))}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00073}00073                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00074}00074                 \mbox{\hyperlink{if__rtwnvar_8h_a3fe76ab201bc261d0950f661104812e2}{rtwn\_delay}}(sc, 2000);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00075}00075         \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00076}00076         \textcolor{keywordflow}{if} (ntries == 100) \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00077}00077                 device\_printf(sc-\/>\mbox{\hyperlink{structrtwn__softc_a299d18a16d08213b975a1585651583f9}{sc\_dev}},}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00078}00078                     \textcolor{stringliteral}{"{}could not send firmware command\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00079}00079                 \textcolor{keywordflow}{return} (ETIMEDOUT);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00080}00080         \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00081}00081         memset(\&cmd, 0, \textcolor{keyword}{sizeof}(cmd));}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00082}00082         cmd.\mbox{\hyperlink{structr88e__fw__cmd_a7c6cb9fc671eda167b24d1c3b6ee72d1}{id}} = \mbox{\hyperlink{r88e__fw__cmd_8h_a1e6927fa1486224044e568f9c370519b}{id}};}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00083}00083         KASSERT(len <= \textcolor{keyword}{sizeof}(cmd.\mbox{\hyperlink{structr88e__fw__cmd_aa727aa4eefa6852d517629d908a29ee9}{msg}}),}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00084}00084             (\textcolor{stringliteral}{"{}\%s: firmware command too long (\%d > \%zu)\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00085}00085             \_\_func\_\_, len, \textcolor{keyword}{sizeof}(cmd.\mbox{\hyperlink{structr88e__fw__cmd_aa727aa4eefa6852d517629d908a29ee9}{msg}})));}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00086}00086         memcpy(cmd.\mbox{\hyperlink{structr88e__fw__cmd_aa727aa4eefa6852d517629d908a29ee9}{msg}}, buf, len);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00087}00087 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00088}00088         \textcolor{comment}{/* Write the first word last since that will trigger the FW. */}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00089}00089         \textcolor{keywordflow}{if} (len > 3) \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00090}00090                 error = \mbox{\hyperlink{if__rtwnvar_8h_a7f17e4877feb5ff91f23223e6e1b885c}{rtwn\_write\_4}}(sc, \mbox{\hyperlink{r88e__reg_8h_a5e2ec5d9468ac75cc4228daa00cce88b}{R88E\_HMEBOX\_EXT}}(sc-\/>\mbox{\hyperlink{structrtwn__softc_a11b0bb8d214181cd87bf0de01790efd7}{fwcur}}),}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00091}00091                     *(uint32\_t *)((uint8\_t *)\&cmd + 4));}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00092}00092                 \textcolor{keywordflow}{if} (error != 0)}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00093}00093                         \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00094}00094         \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00095}00095         error = \mbox{\hyperlink{if__rtwnvar_8h_a7f17e4877feb5ff91f23223e6e1b885c}{rtwn\_write\_4}}(sc, \mbox{\hyperlink{r92c__reg_8h_a5a2ce9b0d2850da107ddc3457b1a0629}{R92C\_HMEBOX}}(sc-\/>\mbox{\hyperlink{structrtwn__softc_a11b0bb8d214181cd87bf0de01790efd7}{fwcur}}), *(uint32\_t *)\&cmd);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00096}00096         \textcolor{keywordflow}{if} (error != 0)}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00097}00097                 \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00098}00098 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00099}00099         sc-\/>\mbox{\hyperlink{structrtwn__softc_a11b0bb8d214181cd87bf0de01790efd7}{fwcur}} = (sc-\/>\mbox{\hyperlink{structrtwn__softc_a11b0bb8d214181cd87bf0de01790efd7}{fwcur}} + 1) \% \mbox{\hyperlink{if__rtwnreg_8h_ac7ef18688bd2600b512c0896932ae798}{R92C\_H2C\_NBOX}};}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00100}00100 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00101}00101         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00102}00102 \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00103}00103 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00104}00104 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00105}\mbox{\hyperlink{r88e_8h_a35b74f7d9f150fc7152336f45b9c4714}{00105}} \mbox{\hyperlink{r88e__fw_8c_a50227cdaa4ae1155f91a7ad998469289}{r88e\_fw\_reset}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keywordtype}{int} reason)}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00106}00106 \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00107}00107         uint16\_t reg;}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00108}00108 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00109}00109         reg = \mbox{\hyperlink{if__rtwnvar_8h_a0b472837d38e093cf4962967cf9c34bb}{rtwn\_read\_2}}(sc, \mbox{\hyperlink{r92c__reg_8h_a3534d19cce76efcebdaa962fddfc4166}{R92C\_SYS\_FUNC\_EN}});}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00110}00110         \mbox{\hyperlink{if__rtwnvar_8h_a61d56a364bbdf0b209f7e07ebb59b823}{rtwn\_write\_2}}(sc, \mbox{\hyperlink{r92c__reg_8h_a3534d19cce76efcebdaa962fddfc4166}{R92C\_SYS\_FUNC\_EN}}, reg \& \string~\mbox{\hyperlink{r92c__reg_8h_a16f28ec71bdb3e0b922e44e049faf7eb}{R92C\_SYS\_FUNC\_EN\_CPUEN}});}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00111}00111 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00112}00112         \textcolor{keywordflow}{if} (reason != \mbox{\hyperlink{if__rtwnvar_8h_adf764cbdea00d65edcd07bb9953ad2b7a2e5aeb2c8fac10c210acb48983a32ec8}{RTWN\_FW\_RESET\_SHUTDOWN}}) \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00113}00113                 \mbox{\hyperlink{if__rtwnvar_8h_a61d56a364bbdf0b209f7e07ebb59b823}{rtwn\_write\_2}}(sc, \mbox{\hyperlink{r92c__reg_8h_a3534d19cce76efcebdaa962fddfc4166}{R92C\_SYS\_FUNC\_EN}},}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00114}00114                     reg | \mbox{\hyperlink{r92c__reg_8h_a16f28ec71bdb3e0b922e44e049faf7eb}{R92C\_SYS\_FUNC\_EN\_CPUEN}});}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00115}00115         \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00116}00116 \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00117}00117 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00118}00118 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00119}\mbox{\hyperlink{r88e_8h_a56c141f370a9dfddc7c441b7414d2d25}{00119}} \mbox{\hyperlink{r88e__fw_8c_aa20c710b6e82e51dfdf59e4ac0d6318c}{r88e\_fw\_download\_enable}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keywordtype}{int} enable)}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00120}00120 \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00121}00121         \textcolor{keywordflow}{if} (enable) \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00122}00122                 \textcolor{comment}{/* MCU firmware download enable. */}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00123}00123                 \mbox{\hyperlink{if__rtwnvar_8h_a7884b9ec832912e02680a76200618a74}{rtwn\_setbits\_1}}(sc, \mbox{\hyperlink{r92c__reg_8h_a58f55c57360040d3336b1d36f40089ba}{R92C\_MCUFWDL}}, 0, \mbox{\hyperlink{r92c__reg_8h_ada468171723ca6ba4c41a8b174643e0c}{R92C\_MCUFWDL\_EN}});}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00124}00124                 \textcolor{comment}{/* 8051 reset. */}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00125}00125                 \mbox{\hyperlink{if__rtwnvar_8h_a0b4a07b836b7fb793728d6961caa8bc7}{rtwn\_setbits\_1\_shift}}(sc, \mbox{\hyperlink{r92c__reg_8h_a58f55c57360040d3336b1d36f40089ba}{R92C\_MCUFWDL}}, \mbox{\hyperlink{r92c__reg_8h_a9a7875e41099c7dcdf23070c1407be59}{R92C\_MCUFWDL\_ROM\_DLEN}},}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00126}00126                     0, 2);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00127}00127         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00128}00128                 \textcolor{comment}{/* MCU download disable. */}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00129}00129                 \mbox{\hyperlink{if__rtwnvar_8h_a7884b9ec832912e02680a76200618a74}{rtwn\_setbits\_1}}(sc, \mbox{\hyperlink{r92c__reg_8h_a58f55c57360040d3336b1d36f40089ba}{R92C\_MCUFWDL}}, \mbox{\hyperlink{r92c__reg_8h_ada468171723ca6ba4c41a8b174643e0c}{R92C\_MCUFWDL\_EN}}, 0);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00130}00130                 \textcolor{comment}{/* Reserved for f/w extension. */}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00131}00131                 \mbox{\hyperlink{if__rtwnvar_8h_a7d7ea5512c1c28b20889a89730770795}{rtwn\_write\_1}}(sc, \mbox{\hyperlink{r92c__reg_8h_a58f55c57360040d3336b1d36f40089ba}{R92C\_MCUFWDL}} + 1, 0);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00132}00132         \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00133}00133 \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00134}00134 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00135}00135 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00136}00136 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00137}\mbox{\hyperlink{r88e_8h_a1eacd048619b31f051ede2020e5fddb0}{00137}} \mbox{\hyperlink{r88e__fw_8c_a573583c4b97aeeaeb167d3a0f3018c26}{r88e\_macid\_enable\_link}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keywordtype}{int} \textcolor{keywordtype}{id}, \textcolor{keywordtype}{int} enable)}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00138}00138 \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00139}00139         uint32\_t reg;}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00140}00140 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00141}00141         reg = \mbox{\hyperlink{r88e__reg_8h_a7d8ce4044546006959e3ac31a12429b7}{R88E\_MACID\_NO\_LINK}};}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00142}00142         \textcolor{keywordflow}{if} (\textcolor{keywordtype}{id} > 32)}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00143}00143                 reg += 4;}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00144}00144 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00145}00145         \textcolor{keywordflow}{if} (enable)}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00146}00146                 \mbox{\hyperlink{if__rtwnvar_8h_a5c0608f5fb0702c11c9eeed348982b8b}{rtwn\_setbits\_4}}(sc, reg, 1 << (\textcolor{keywordtype}{id} \% 32), 0);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00147}00147         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00148}00148                 \mbox{\hyperlink{if__rtwnvar_8h_a5c0608f5fb0702c11c9eeed348982b8b}{rtwn\_setbits\_4}}(sc, reg, 0, 1 << (\textcolor{keywordtype}{id} \% 32));}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00149}00149 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00150}00150         \textcolor{comment}{/* XXX max macid for tx reports */}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00151}00151 \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00152}00152 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00153}00153 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00154}\mbox{\hyperlink{r88e_8h_ad9dbb8fb3036ac7d51f3d73b26b0852a}{00154}} \mbox{\hyperlink{r88e__fw_8c_a6568dd28f07d3abce103d36d21301d17}{r88e\_set\_media\_status}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keywordtype}{int} macid)}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00155}00155 \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00156}00156         \textcolor{keyword}{struct }\mbox{\hyperlink{structr88e__fw__cmd__msrrpt}{r88e\_fw\_cmd\_msrrpt}} status;}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00157}00157 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00158}00158         \textcolor{keywordflow}{if} (\mbox{\hyperlink{structr88e__fw__cmd__msrrpt_a3be09854094e369075a1a269ea6f199a}{macid}} \& \mbox{\hyperlink{if__rtwnvar_8h_ac589c4320c905ad10a07b9b3a41ad95d}{RTWN\_MACID\_VALID}})}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00159}00159                 status.\mbox{\hyperlink{structr88e__fw__cmd__msrrpt_af815c5a348228ca2edbd11b3cc1d7c2d}{msrb0}} = \mbox{\hyperlink{r88e__fw__cmd_8h_ad2d07a357aa30fd4eea06e817a57ab54}{R88E\_MSRRPT\_B0\_ASSOC}};}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00160}00160         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00161}00161                 status.\mbox{\hyperlink{structr88e__fw__cmd__msrrpt_af815c5a348228ca2edbd11b3cc1d7c2d}{msrb0}} = \mbox{\hyperlink{r88e__fw__cmd_8h_a75e95c2811b0e705698d1554b66b93ca}{R88E\_MSRRPT\_B0\_DISASSOC}};}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00162}00162         status.\mbox{\hyperlink{structr88e__fw__cmd__msrrpt_a3be09854094e369075a1a269ea6f199a}{macid}} = (\mbox{\hyperlink{structr88e__fw__cmd__msrrpt_a3be09854094e369075a1a269ea6f199a}{macid}} \& \string~RTWN\_MACID\_VALID);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00163}00163 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00164}00164         \mbox{\hyperlink{r88e__fw_8c_a573583c4b97aeeaeb167d3a0f3018c26}{r88e\_macid\_enable\_link}}(sc, status.\mbox{\hyperlink{structr88e__fw__cmd__msrrpt_a3be09854094e369075a1a269ea6f199a}{macid}},}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00165}00165             (\mbox{\hyperlink{structr88e__fw__cmd__msrrpt_a3be09854094e369075a1a269ea6f199a}{macid}} \& \mbox{\hyperlink{if__rtwnvar_8h_ac589c4320c905ad10a07b9b3a41ad95d}{RTWN\_MACID\_VALID}}) != 0);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00166}00166 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00167}00167 \textcolor{preprocessor}{\#ifndef RTWN\_WITHOUT\_UCODE}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00168}00168         \textcolor{keywordflow}{if} (\mbox{\hyperlink{r88e__fw_8c_aa76a643905b1189fefd14200f5fecb07}{r88e\_fw\_cmd}}(sc, \mbox{\hyperlink{r88e__fw__cmd_8h_a64e850d65bebbebabadcc05699826e5a}{R88E\_CMD\_MSR\_RPT}}, \&status, \textcolor{keyword}{sizeof}(status)) != 0) \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00169}00169                 device\_printf(sc-\/>\mbox{\hyperlink{structrtwn__softc_a299d18a16d08213b975a1585651583f9}{sc\_dev}}, \textcolor{stringliteral}{"{}\%s: cannot change media status!\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00170}00170                     \_\_func\_\_);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00171}00171         \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00172}00172 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00173}00173 \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00174}00174 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00175}00175 \textcolor{preprocessor}{\#ifndef RTWN\_WITHOUT\_UCODE}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00176}00176 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00177}\mbox{\hyperlink{r88e_8h_ae3353a4f2685ab98fec62a952b875a48}{00177}} \mbox{\hyperlink{r88e__fw_8c_aade4977fa8139be5e7ace86c0a16afdb}{r88e\_set\_rsvd\_page}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keywordtype}{int} probe\_resp, \textcolor{keywordtype}{int} null,}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00178}00178     \textcolor{keywordtype}{int} qos\_null)}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00179}00179 \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00180}00180         \textcolor{keyword}{struct }\mbox{\hyperlink{structr88e__fw__cmd__rsvdpage}{r88e\_fw\_cmd\_rsvdpage}} rsvd;}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00181}00181 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00182}00182         rsvd.\mbox{\hyperlink{structr88e__fw__cmd__rsvdpage_a5f7aead5c567486cfec70e11e132710d}{probe\_resp}} = \mbox{\hyperlink{structr88e__fw__cmd__rsvdpage_a5f7aead5c567486cfec70e11e132710d}{probe\_resp}};}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00183}00183         rsvd.\mbox{\hyperlink{structr88e__fw__cmd__rsvdpage_af017f234da6ca7ffa5c38e35774f8e51}{ps\_poll}} = 0;}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00184}00184         rsvd.\mbox{\hyperlink{structr88e__fw__cmd__rsvdpage_a8bd3e00789eb0304782548588ffe78f7}{null\_data}} = null;}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00185}00185         rsvd.\mbox{\hyperlink{structr88e__fw__cmd__rsvdpage_a68c93dbc8500b79d659bd85bdd970623}{null\_data\_qos}} = qos\_null;}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00186}00186         rsvd.\mbox{\hyperlink{structr88e__fw__cmd__rsvdpage_a97e4c16286d23db6c131831219969109}{null\_data\_qos\_bt}} = 0;}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00187}00187         \textcolor{keywordflow}{return} (\mbox{\hyperlink{r88e__fw_8c_aa76a643905b1189fefd14200f5fecb07}{r88e\_fw\_cmd}}(sc, \mbox{\hyperlink{r88e__fw__cmd_8h_acf253c3e6b1c2bef593d3d8869185572}{R88E\_CMD\_RSVD\_PAGE}}, \&rsvd, \textcolor{keyword}{sizeof}(rsvd)));}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00188}00188 \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00189}00189 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00190}00190 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00191}\mbox{\hyperlink{r88e_8h_aed957b4c3f07dd358ea79bddf9b4b6ef}{00191}} \mbox{\hyperlink{r88e__fw_8c_a4878c51d88971073dab1242c5ccb984d}{r88e\_set\_pwrmode}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structrtwn__softc}{rtwn\_softc}} *sc, \textcolor{keyword}{struct} ieee80211vap *vap,}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00192}00192     \textcolor{keywordtype}{int} off)}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00193}00193 \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00194}00194         \textcolor{keyword}{struct }\mbox{\hyperlink{structr88e__fw__cmd__pwrmode}{r88e\_fw\_cmd\_pwrmode}} \mbox{\hyperlink{structr88e__fw__cmd__pwrmode_a76d6b5c9b3084c81c6be7c0c41827675}{mode}};}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00195}00195         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00196}00196 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00197}00197         \textcolor{keywordflow}{if} (off \&\& vap-\/>iv\_state == IEEE80211\_S\_RUN \&\&}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00198}00198             (vap-\/>iv\_flags \& IEEE80211\_F\_PMGTON)) \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00199}00199                 \mbox{\hyperlink{structr88e__fw__cmd__pwrmode_a76d6b5c9b3084c81c6be7c0c41827675}{mode}}.mode = \mbox{\hyperlink{r88e__fw__cmd_8h_a26ac411017f111d0d38cc2ee1d9c2e56}{R88E\_PWRMODE\_LEG}};}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00200}00200                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00201}00201 \textcolor{comment}{                 * TODO: switch to RFOFF state}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00202}00202 \textcolor{comment}{                 * (something is missing here -\/ Rx stops with it).}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00203}00203 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00204}00204 \textcolor{preprocessor}{\#ifdef RTWN\_TODO}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00205}00205                 \mbox{\hyperlink{structr88e__fw__cmd__pwrmode_a76d6b5c9b3084c81c6be7c0c41827675}{mode}}.pwr\_state = \mbox{\hyperlink{r88e__fw__cmd_8h_a4f0aa2be9c19cca97f1157819ae1becc}{R88E\_PWRMODE\_STATE\_RFOFF}};}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00206}00206 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00207}00207                 \mbox{\hyperlink{structr88e__fw__cmd__pwrmode_a76d6b5c9b3084c81c6be7c0c41827675}{mode}}.pwr\_state = \mbox{\hyperlink{r88e__fw__cmd_8h_a1ebcc0232ce18819a52d91083168fbcb}{R88E\_PWRMODE\_STATE\_RFON}};}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00208}00208 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00209}00209         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00210}00210                 \mbox{\hyperlink{structr88e__fw__cmd__pwrmode_a76d6b5c9b3084c81c6be7c0c41827675}{mode}}.mode = \mbox{\hyperlink{r88e__fw__cmd_8h_a1b1027bfd5651174d1a0bcc01f5ccdf1}{R88E\_PWRMODE\_CAM}};}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00211}00211                 \mbox{\hyperlink{structr88e__fw__cmd__pwrmode_a76d6b5c9b3084c81c6be7c0c41827675}{mode}}.pwr\_state = \mbox{\hyperlink{r88e__fw__cmd_8h_a087ea4af2474730469d13c5f4b9ee165}{R88E\_PWRMODE\_STATE\_ALLON}};}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00212}00212         \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00213}00213         \mbox{\hyperlink{structr88e__fw__cmd__pwrmode_a76d6b5c9b3084c81c6be7c0c41827675}{mode}}.pwrb1 =}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00214}00214             \mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R88E\_PWRMODE\_B1\_SMART\_PS, \mbox{\hyperlink{r88e__fw__cmd_8h_aa3ba66515073a449a4a502a15d5b78fa}{R88E\_PWRMODE\_B1\_LEG\_NULLDATA}}) |}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00215}00215             \mbox{\hyperlink{if__rtwnreg_8h_a14155179e01608510206b9cdf4790068}{SM}}(R88E\_PWRMODE\_B1\_RLBM, \mbox{\hyperlink{r88e__fw__cmd_8h_aa9d6c1540e60c2faf006e2670da052fa}{R88E\_PWRMODE\_B1\_MODE\_MIN}});}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00216}00216         \textcolor{comment}{/* XXX ignored */}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00217}00217         \mbox{\hyperlink{structr88e__fw__cmd__pwrmode_a76d6b5c9b3084c81c6be7c0c41827675}{mode}}.bcn\_pass = 0;}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00218}00218         \mbox{\hyperlink{structr88e__fw__cmd__pwrmode_a76d6b5c9b3084c81c6be7c0c41827675}{mode}}.queue\_uapsd = 0;}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00219}00219         error = \mbox{\hyperlink{r88e__fw_8c_aa76a643905b1189fefd14200f5fecb07}{r88e\_fw\_cmd}}(sc, \mbox{\hyperlink{r88e__fw__cmd_8h_ad09558433d894787d33a321d4d25c2d7}{R88E\_CMD\_SET\_PWRMODE}}, \&\mbox{\hyperlink{structr88e__fw__cmd__pwrmode_a76d6b5c9b3084c81c6be7c0c41827675}{mode}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{structr88e__fw__cmd__pwrmode_a76d6b5c9b3084c81c6be7c0c41827675}{mode}}));}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00220}00220         \textcolor{keywordflow}{if} (error != 0) \{}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00221}00221                 device\_printf(sc-\/>\mbox{\hyperlink{structrtwn__softc_a299d18a16d08213b975a1585651583f9}{sc\_dev}},}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00222}00222                     \textcolor{stringliteral}{"{}\%s: CMD\_SET\_PWRMODE was not sent, error \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00223}00223                     \_\_func\_\_, error);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00224}00224         \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00225}00225 }
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00226}00226         \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00227}00227 \}}
\DoxyCodeLine{\Hypertarget{r88e__fw_8c_source_l00228}00228 \textcolor{preprocessor}{\#endif}}

\end{DoxyCode}
