drivers/net/wireless/realtek/rtw89/pci.h

Source file repositories/reference/linux-study-clean/drivers/net/wireless/realtek/rtw89/pci.h

File Facts

System
Linux kernel
Corpus path
drivers/net/wireless/realtek/rtw89/pci.h
Extension
.h
Size
60590 bytes
Lines
1949
Domain
Driver Families
Bucket
drivers/net
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct rtw89_pci_bd_idx_addr {
	u32 tx_bd_addrs[RTW89_TXCH_NUM];
	u32 rx_bd_addrs[RTW89_RXCH_NUM];
};

struct rtw89_pci_ch_dma_addr {
	u32 num; /* also `offset` addr for group_bd_addr design */
	u32 idx;
	u32 bdram;
	u32 desa_l;
	u32 desa_h;
};

struct rtw89_pci_ch_dma_addr_set {
	struct rtw89_pci_ch_dma_addr tx[RTW89_TXCH_NUM];
	struct rtw89_pci_ch_dma_addr rx[RTW89_RXCH_NUM];
};

struct rtw89_pci_bd_ram {
	u8 start_idx;
	u8 max_num;
	u8 min_num;
};

struct rtw89_pci_isr_def {
	u32 isr_rdu;
	u32 isr_halt_c2h;
	u32 isr_wdt_timeout;
	u32 isr_sps_ocp;
	struct rtw89_reg2_def isr_clear_rpq;
	struct rtw89_reg2_def isr_clear_rxq;
};

struct rtw89_pci_gen_def {
	int (*mac_pre_init)(struct rtw89_dev *rtwdev);
	int (*mac_pre_deinit)(struct rtw89_dev *rtwdev);
	int (*mac_post_init)(struct rtw89_dev *rtwdev);

	void (*clr_idx_all)(struct rtw89_dev *rtwdev);
	int (*rst_bdram)(struct rtw89_dev *rtwdev);

	int (*lv1rst_stop_dma)(struct rtw89_dev *rtwdev);
	int (*lv1rst_start_dma)(struct rtw89_dev *rtwdev);

	void (*ctrl_txdma_ch)(struct rtw89_dev *rtwdev, bool enable);
	void (*ctrl_txdma_fw_ch)(struct rtw89_dev *rtwdev, bool enable);
	int (*poll_txdma_ch_idle)(struct rtw89_dev *rtwdev);

	void (*aspm_set)(struct rtw89_dev *rtwdev, bool enable);
	void (*clkreq_set)(struct rtw89_dev *rtwdev, bool enable);
	void (*l1ss_set)(struct rtw89_dev *rtwdev, bool enable);

	void (*disable_eq)(struct rtw89_dev *rtwdev);
	void (*power_wake)(struct rtw89_dev *rtwdev, bool pwr_up);
};

#define RTW89_PCI_SSID(v, d, ssv, ssd, cust) \
	.vendor = v, .device = d, .subsystem_vendor = ssv, .subsystem_device = ssd, \
	.custid = RTW89_CUSTID_ ##cust

struct rtw89_pci_ssid_quirk {
	unsigned short vendor;
	unsigned short device;
	unsigned short subsystem_vendor;
	unsigned short subsystem_device;
	enum rtw89_custid custid;
	unsigned long bitmap; /* bitmap of rtw89_quirks */
};

struct rtw89_pci_rpp_info {
	u16 seq;
	u8 qsel;
	u8 tx_status;
	u8 txch;
};

struct rtw89_pci_info {
	const struct rtw89_pci_gen_def *gen_def;
	const struct rtw89_pci_isr_def *isr_def;
	enum mac_ax_bd_trunc_mode txbd_trunc_mode;
	enum mac_ax_bd_trunc_mode rxbd_trunc_mode;
	enum mac_ax_rxbd_mode rxbd_mode;
	enum mac_ax_tag_mode tag_mode;
	enum mac_ax_tx_burst tx_burst;
	enum mac_ax_rx_burst rx_burst;
	enum mac_ax_wd_dma_intvl wd_dma_idle_intvl;
	enum mac_ax_wd_dma_intvl wd_dma_act_intvl;
	enum mac_ax_multi_tag_num multi_tag_num;
	enum mac_ax_pcie_func_ctrl lbc_en;
	enum mac_ax_lbc_tmr lbc_tmr;

Annotation

Implementation Notes