Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/net/wireless/realtek/rtw88/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 5 kB image not shown  

Quelle  rtw88xxa.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
/* Copyright(c) 2024  Realtek Corporation
 */


#ifndef __RTW88XXA_H__
#define __RTW88XXA_H__

#include <asm/byteorder.h>
#include "reg.h"

struct rtw8821au_efuse {
 u8 res4[48];   /* 0xd0 */
 u8 vid[2];   /* 0x100 */
 u8 pid[2];
 u8 res8[3];
 u8 mac_addr[ETH_ALEN];  /* 0x107 */
 u8 res9[243];
} __packed;

struct rtw8812au_efuse {
 u8 vid[2];   /* 0xd0 */
 u8 pid[2];   /* 0xd2 */
 u8 res0[3];
 u8 mac_addr[ETH_ALEN];  /* 0xd7 */
 u8 res1[291];
} __packed;

struct rtw88xxa_efuse {
 __le16 rtl_id;
 u8 res0[6];   /* 0x02 */
 u8 usb_mode;   /* 0x08 */
 u8 res1[7];   /* 0x09 */

 /* power index for four RF paths */
 struct rtw_txpwr_idx txpwr_idx_table[4];

 u8 channel_plan;  /* 0xb8 */
 u8 xtal_k;
 u8 thermal_meter;
 u8 iqk_lck;
 u8 pa_type;   /* 0xbc */
 u8 lna_type_2g;   /* 0xbd */
 u8 res2;
 u8 lna_type_5g;   /* 0xbf */
 u8 res3;
 u8 rf_board_option;  /* 0xc1 */
 u8 rf_feature_option;
 u8 rf_bt_setting;
 u8 eeprom_version;
 u8 eeprom_customer_id;  /* 0xc5 */
 u8 tx_bb_swing_setting_2g;
 u8 tx_bb_swing_setting_5g;
 u8 tx_pwr_calibrate_rate;
 u8 rf_antenna_option;  /* 0xc9 */
 u8 rfe_option;
 u8 country_code[2];
 u8 res4[3];
 union {
  struct rtw8821au_efuse rtw8821au;
  struct rtw8812au_efuse rtw8812au;
 };
} __packed;

static_assert(sizeof(struct rtw88xxa_efuse) == 512);

#define WLAN_BCN_DMA_TIME   0x02
#define WLAN_TBTT_PROHIBIT   0x04
#define WLAN_TBTT_HOLD_TIME   0x064
#define WLAN_TBTT_TIME (WLAN_TBTT_PROHIBIT |\
   (WLAN_TBTT_HOLD_TIME << BIT_SHIFT_TBTT_HOLD_TIME_AP))

struct rtw_jaguar_phy_status_rpt {
 __le32 w0;
 __le32 w1;
 __le32 w2;
 __le32 w3;
 __le32 w4;
 __le32 w5;
 __le32 w6;
} __packed;

#define RTW_JGRPHY_W0_GAIN_A  GENMASK(6, 0)
#define RTW_JGRPHY_W0_TRSW_A  BIT(7)
#define RTW_JGRPHY_W0_GAIN_B  GENMASK(14, 8)
#define RTW_JGRPHY_W0_TRSW_B  BIT(15)
#define RTW_JGRPHY_W0_CHL_NUM  GENMASK(25, 16)
#define RTW_JGRPHY_W0_SUB_CHNL  GENMASK(29, 26)
#define RTW_JGRPHY_W0_R_RFMOD  GENMASK(31, 30)

/* CCK: */
#define RTW_JGRPHY_W1_SIG_QUAL  GENMASK(7, 0)
#define RTW_JGRPHY_W1_AGC_RPT_VGA_IDX GENMASK(12, 8)
#define RTW_JGRPHY_W1_AGC_RPT_LNA_IDX GENMASK(15, 13)
#define RTW_JGRPHY_W1_BB_POWER  GENMASK(23, 16)
/* OFDM: */
#define RTW_JGRPHY_W1_PWDB_ALL  GENMASK(7, 0)
#define RTW_JGRPHY_W1_CFO_SHORT_A GENMASK(15, 8) /* s8 */
#define RTW_JGRPHY_W1_CFO_SHORT_B GENMASK(23, 16) /* s8 */
#define RTW_JGRPHY_W1_BT_RF_CH_MSB GENMASK(31, 30)

#define RTW_JGRPHY_W2_ANT_DIV_SW_A BIT(0)
#define RTW_JGRPHY_W2_ANT_DIV_SW_B BIT(1)
#define RTW_JGRPHY_W2_BT_RF_CH_LSB GENMASK(7, 2)
#define RTW_JGRPHY_W2_CFO_TAIL_A GENMASK(15, 8) /* s8 */
#define RTW_JGRPHY_W2_CFO_TAIL_B GENMASK(23, 16) /* s8 */
#define RTW_JGRPHY_W2_PCTS_MSK_RPT_0 GENMASK(31, 24)

#define RTW_JGRPHY_W3_PCTS_MSK_RPT_1 GENMASK(7, 0)
/* Stream 1 and 2 RX EVM: */
#define RTW_JGRPHY_W3_RXEVM_1  GENMASK(15, 8) /* s8 */
#define RTW_JGRPHY_W3_RXEVM_2  GENMASK(23, 16) /* s8 */
#define RTW_JGRPHY_W3_RXSNR_A  GENMASK(31, 24) /* s8 */

#define RTW_JGRPHY_W4_RXSNR_B  GENMASK(7, 0) /* s8 */
#define RTW_JGRPHY_W4_PCTS_MSK_RPT_2 GENMASK(21, 8)
#define RTW_JGRPHY_W4_PCTS_RPT_VALID BIT(22)
#define RTW_JGRPHY_W4_RXEVM_3  GENMASK(31, 24) /* s8 */

#define RTW_JGRPHY_W5_RXEVM_4  GENMASK(7, 0) /* s8 */
/* 8812a, stream 1 and 2 CSI: */
#define RTW_JGRPHY_W5_CSI_CURRENT_1 GENMASK(15, 8)
#define RTW_JGRPHY_W5_CSI_CURRENT_2 GENMASK(23, 16)
/* 8814a: */
#define RTW_JGRPHY_W5_RXSNR_C  GENMASK(15, 8) /* s8 */
#define RTW_JGRPHY_W5_RXSNR_D  GENMASK(23, 16) /* s8 */
#define RTW_JGRPHY_W5_GAIN_C  GENMASK(30, 24)
#define RTW_JGRPHY_W5_TRSW_C  BIT(31)

#define RTW_JGRPHY_W6_GAIN_D  GENMASK(6, 0)
#define RTW_JGRPHY_W6_TRSW_D  BIT(7)
#define RTW_JGRPHY_W6_SIGEVM  GENMASK(15, 8) /* s8 */
#define RTW_JGRPHY_W6_ANTIDX_ANTC GENMASK(18, 16)
#define RTW_JGRPHY_W6_ANTIDX_ANTD GENMASK(21, 19)
#define RTW_JGRPHY_W6_DPDT_CTRL_KEEP BIT(22)
#define RTW_JGRPHY_W6_GNT_BT_KEEP BIT(23)
#define RTW_JGRPHY_W6_ANTIDX_ANTA GENMASK(26, 24)
#define RTW_JGRPHY_W6_ANTIDX_ANTB GENMASK(29, 27)
#define RTW_JGRPHY_W6_HW_ANTSW_OCCUR GENMASK(31, 30)

#define RF18_BW_MASK  (BIT(11) | BIT(10))

void rtw88xxa_efuse_grant(struct rtw_dev *rtwdev, bool on);
int rtw88xxa_read_efuse(struct rtw_dev *rtwdev, u8 *log_map);
void rtw88xxa_power_off(struct rtw_dev *rtwdev,
   const struct rtw_pwr_seq_cmd *const *enter_lps_flow);
int rtw88xxa_power_on(struct rtw_dev *rtwdev);
u32 rtw88xxa_phy_read_rf(struct rtw_dev *rtwdev,
    enum rtw_rf_path rf_path, u32 addr, u32 mask);
void rtw88xxa_set_channel(struct rtw_dev *rtwdev, u8 channel, u8 bw,
     u8 primary_chan_idx);
void rtw88xxa_query_phy_status(struct rtw_dev *rtwdev, u8 *phy_status,
          struct rtw_rx_pkt_stat *pkt_stat,
          s8 (*cck_rx_pwr)(u8 lna_idx, u8 vga_idx));
void rtw88xxa_set_tx_power_index(struct rtw_dev *rtwdev);
void rtw88xxa_false_alarm_statistics(struct rtw_dev *rtwdev);
void rtw88xxa_iqk_backup_mac_bb(struct rtw_dev *rtwdev,
    u32 *macbb_backup,
    const u32 *backup_macbb_reg,
    u32 macbb_num);
void rtw88xxa_iqk_backup_afe(struct rtw_dev *rtwdev, u32 *afe_backup,
        const u32 *backup_afe_reg, u32 afe_num);
void rtw88xxa_iqk_restore_mac_bb(struct rtw_dev *rtwdev,
     u32 *macbb_backup,
     const u32 *backup_macbb_reg,
     u32 macbb_num);
void rtw88xxa_iqk_configure_mac(struct rtw_dev *rtwdev);
bool rtw88xxa_iqk_finish(int average, int threshold,
    int *x_temp, int *y_temp, int *x, int *y,
    bool break_inner, bool break_outer);
void rtw88xxa_phy_pwrtrack(struct rtw_dev *rtwdev,
      void (*do_lck)(struct rtw_dev *rtwdev),
      void (*do_iqk)(struct rtw_dev *rtwdev));
void rtw88xxa_phy_cck_pd_set(struct rtw_dev *rtwdev, u8 new_lvl);

#endif

Messung V0.5
C=95 H=97 G=95

¤ Dauer der Verarbeitung: 0.4 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.