root/drivers/net/wireless/realtek/rtw88/rtw8814a.h
/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
/* Copyright(c) 2025  Realtek Corporation
 */

#ifndef __RTW8814A_H__
#define __RTW8814A_H__

struct rtw8814au_efuse {
        u8 vid[2];                      /* 0xd0 */
        u8 pid[2];                      /* 0xd2 */
        u8 res[4];                      /* 0xd4 */
        u8 mac_addr[ETH_ALEN];          /* 0xd8 */
} __packed;

struct rtw8814ae_efuse {
        u8 mac_addr[ETH_ALEN];          /* 0xd0 */
        u8 vid[2];                      /* 0xd6 */
        u8 did[2];                      /* 0xd8 */
        u8 svid[2];                     /* 0xda */
        u8 smid[2];                     /* 0xdc */
} __packed;

struct rtw8814a_efuse {
        __le16 rtl_id;
        u8 res0[0x0c];
        u8 usb_mode;                    /* 0x0e */
        u8 res1;

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

        u8 channel_plan;                /* 0xb8 */
        u8 xtal_k;                      /* 0xb9 */
        u8 thermal_meter;               /* 0xba */
        u8 iqk_lck;                     /* 0xbb */
        u8 pa_type;                     /* 0xbc */
        u8 lna_type_2g[2];              /* 0xbd */
        u8 lna_type_5g[2];              /* 0xbf */
        u8 rf_board_option;             /* 0xc1 */
        u8 res2;
        u8 rf_bt_setting;               /* 0xc3 */
        u8 eeprom_version;              /* 0xc4 */
        u8 eeprom_customer_id;          /* 0xc5 */
        u8 tx_bb_swing_setting_2g;      /* 0xc6 */
        u8 tx_bb_swing_setting_5g;      /* 0xc7 */
        u8 res3;
        u8 trx_antenna_option;          /* 0xc9 */
        u8 rfe_option;                  /* 0xca */
        u8 country_code[2];             /* 0xcb */
        u8 res4[3];
        union {
                struct rtw8814au_efuse u;
                struct rtw8814ae_efuse e;
        };
        u8 res5[0x122];                 /* 0xde */
} __packed;

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

extern const struct rtw_chip_info rtw8814a_hw_spec;

#endif