1*7453645fSAndriy Voskoboinyk /*- 2*7453645fSAndriy Voskoboinyk * Copyright (c) 2015 Kevin Lo <kevlo@FreeBSD.org> 3*7453645fSAndriy Voskoboinyk * Copyright (c) 2016 Andriy Voskoboinyk <avos@FreeBSD.org> 4*7453645fSAndriy Voskoboinyk * 5*7453645fSAndriy Voskoboinyk * Permission to use, copy, modify, and distribute this software for any 6*7453645fSAndriy Voskoboinyk * purpose with or without fee is hereby granted, provided that the above 7*7453645fSAndriy Voskoboinyk * copyright notice and this permission notice appear in all copies. 8*7453645fSAndriy Voskoboinyk * 9*7453645fSAndriy Voskoboinyk * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10*7453645fSAndriy Voskoboinyk * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11*7453645fSAndriy Voskoboinyk * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12*7453645fSAndriy Voskoboinyk * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13*7453645fSAndriy Voskoboinyk * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14*7453645fSAndriy Voskoboinyk * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15*7453645fSAndriy Voskoboinyk * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16*7453645fSAndriy Voskoboinyk * 17*7453645fSAndriy Voskoboinyk * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ 18*7453645fSAndriy Voskoboinyk * $FreeBSD$ 19*7453645fSAndriy Voskoboinyk */ 20*7453645fSAndriy Voskoboinyk 21*7453645fSAndriy Voskoboinyk #ifndef R88E_FW_CMD_H 22*7453645fSAndriy Voskoboinyk #define R88E_FW_CMD_H 23*7453645fSAndriy Voskoboinyk 24*7453645fSAndriy Voskoboinyk /* 25*7453645fSAndriy Voskoboinyk * Host to firmware commands. 26*7453645fSAndriy Voskoboinyk */ 27*7453645fSAndriy Voskoboinyk struct r88e_fw_cmd { 28*7453645fSAndriy Voskoboinyk uint8_t id; 29*7453645fSAndriy Voskoboinyk #define R88E_CMD_RSVD_PAGE 0x00 30*7453645fSAndriy Voskoboinyk #define R88E_CMD_MSR_RPT 0x01 31*7453645fSAndriy Voskoboinyk #define R88E_CMD_SET_PWRMODE 0x20 32*7453645fSAndriy Voskoboinyk 33*7453645fSAndriy Voskoboinyk uint8_t msg[7]; 34*7453645fSAndriy Voskoboinyk } __packed __attribute__((aligned(4))); 35*7453645fSAndriy Voskoboinyk 36*7453645fSAndriy Voskoboinyk /* Structure for R88E_CMD_RSVD_PAGE. */ 37*7453645fSAndriy Voskoboinyk struct r88e_fw_cmd_rsvdpage { 38*7453645fSAndriy Voskoboinyk uint8_t probe_resp; 39*7453645fSAndriy Voskoboinyk uint8_t ps_poll; 40*7453645fSAndriy Voskoboinyk uint8_t null_data; 41*7453645fSAndriy Voskoboinyk uint8_t null_data_qos; 42*7453645fSAndriy Voskoboinyk uint8_t null_data_qos_bt; 43*7453645fSAndriy Voskoboinyk } __packed; 44*7453645fSAndriy Voskoboinyk 45*7453645fSAndriy Voskoboinyk /* Structure for R88E_CMD_MSR_RPT. */ 46*7453645fSAndriy Voskoboinyk struct r88e_fw_cmd_msrrpt { 47*7453645fSAndriy Voskoboinyk uint8_t msrb0; 48*7453645fSAndriy Voskoboinyk #define R88E_MSRRPT_B0_DISASSOC 0x00 49*7453645fSAndriy Voskoboinyk #define R88E_MSRRPT_B0_ASSOC 0x01 50*7453645fSAndriy Voskoboinyk 51*7453645fSAndriy Voskoboinyk uint8_t macid; 52*7453645fSAndriy Voskoboinyk } __packed; 53*7453645fSAndriy Voskoboinyk 54*7453645fSAndriy Voskoboinyk /* Structure for R88E_CMD_SET_PWRMODE. */ 55*7453645fSAndriy Voskoboinyk struct r88e_fw_cmd_pwrmode { 56*7453645fSAndriy Voskoboinyk uint8_t mode; 57*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_CAM 0 58*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_LEG 1 59*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_UAPSD 2 60*7453645fSAndriy Voskoboinyk 61*7453645fSAndriy Voskoboinyk uint8_t pwrb1; 62*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_RLBM_M 0x0f 63*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_RLBM_S 0 64*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_MODE_MIN 0 65*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_MODE_MAX 1 66*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_MODE_DTIM 2 67*7453645fSAndriy Voskoboinyk 68*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_SMART_PS_M 0xf0 69*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_SMART_PS_S 4 70*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_LEG_PSPOLL0 0 71*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_LEG_PSPOLL1 1 72*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_LEG_NULLDATA 2 73*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_WMM_PSPOLL 0 74*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_WMM_NULLDATA 1 75*7453645fSAndriy Voskoboinyk 76*7453645fSAndriy Voskoboinyk uint8_t bcn_pass; 77*7453645fSAndriy Voskoboinyk uint8_t queue_uapsd; 78*7453645fSAndriy Voskoboinyk uint8_t pwr_state; 79*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_STATE_RFOFF 0x00 80*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_STATE_RFON 0x04 81*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_STATE_ALLON 0x0c 82*7453645fSAndriy Voskoboinyk } __packed; 83*7453645fSAndriy Voskoboinyk 84*7453645fSAndriy Voskoboinyk #endif /* R88E_FW_CMD_H */ 85