mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 02:53:36 +02:00
wifi: rtw89: pci: add to read PCI configuration space from common code
Normally only access PCI device in pci.c. However for debug purpose, a set of registers predefined in firmware element including PCI configuration space should be read for diagnosis. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Link: https://patch.msgid.link/20251111022452.28093-2-pkshih@realtek.com
This commit is contained in:
parent
12e6bea1aa
commit
dae8d7d63b
|
|
@ -39,6 +39,8 @@ extern const struct ieee80211_ops rtw89_ops;
|
|||
#define RFREG_MASK 0xfffff
|
||||
#define INV_RF_DATA 0xffffffff
|
||||
#define BYPASS_CR_DATA 0xbabecafe
|
||||
#define RTW89_R32_EA 0xEAEAEAEA
|
||||
#define RTW89_R32_DEAD 0xDEADBEEF
|
||||
|
||||
#define RTW89_TRACK_WORK_PERIOD round_jiffies_relative(HZ * 2)
|
||||
#define RTW89_TRACK_PS_WORK_PERIOD msecs_to_jiffies(100)
|
||||
|
|
@ -3674,6 +3676,8 @@ struct rtw89_hci_ops {
|
|||
void (*write16)(struct rtw89_dev *rtwdev, u32 addr, u16 data);
|
||||
void (*write32)(struct rtw89_dev *rtwdev, u32 addr, u32 data);
|
||||
|
||||
u32 (*read32_pci_cfg)(struct rtw89_dev *rtwdev, u32 addr);
|
||||
|
||||
int (*mac_pre_init)(struct rtw89_dev *rtwdev);
|
||||
int (*mac_pre_deinit)(struct rtw89_dev *rtwdev);
|
||||
int (*mac_post_init)(struct rtw89_dev *rtwdev);
|
||||
|
|
@ -6658,6 +6662,15 @@ rtw89_write_rf(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path,
|
|||
mutex_unlock(&rtwdev->rf_mutex);
|
||||
}
|
||||
|
||||
static inline u32 rtw89_read32_pci_cfg(struct rtw89_dev *rtwdev, u32 addr)
|
||||
{
|
||||
if (rtwdev->hci.type != RTW89_HCI_TYPE_PCIE ||
|
||||
!rtwdev->hci.ops->read32_pci_cfg)
|
||||
return RTW89_R32_EA;
|
||||
|
||||
return rtwdev->hci.ops->read32_pci_cfg(rtwdev, addr);
|
||||
}
|
||||
|
||||
static inline struct ieee80211_txq *rtw89_txq_to_txq(struct rtw89_txq *rtwtxq)
|
||||
{
|
||||
void *p = rtwtxq;
|
||||
|
|
|
|||
|
|
@ -581,8 +581,6 @@ enum rtw89_mac_bf_rrsc_rate {
|
|||
RTW89_MAC_BF_RRSC_MAX = 32
|
||||
};
|
||||
|
||||
#define RTW89_R32_EA 0xEAEAEAEA
|
||||
#define RTW89_R32_DEAD 0xDEADBEEF
|
||||
#define MAC_REG_POOL_COUNT 10
|
||||
#define ACCESS_CMAC(_addr) \
|
||||
({typeof(_addr) __addr = (_addr); \
|
||||
|
|
|
|||
|
|
@ -2064,6 +2064,20 @@ static void rtw89_pci_ops_write32(struct rtw89_dev *rtwdev, u32 addr, u32 data)
|
|||
writel(data, rtwpci->mmap + addr);
|
||||
}
|
||||
|
||||
static u32 rtw89_pci_ops_read32_pci_cfg(struct rtw89_dev *rtwdev, u32 addr)
|
||||
{
|
||||
struct rtw89_pci *rtwpci = (struct rtw89_pci *)rtwdev->priv;
|
||||
struct pci_dev *pdev = rtwpci->pdev;
|
||||
u32 value;
|
||||
int ret;
|
||||
|
||||
ret = pci_read_config_dword(pdev, addr, &value);
|
||||
if (ret)
|
||||
return RTW89_R32_EA;
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static void rtw89_pci_ctrl_dma_trx(struct rtw89_dev *rtwdev, bool enable)
|
||||
{
|
||||
const struct rtw89_pci_info *info = rtwdev->pci_info;
|
||||
|
|
@ -4683,6 +4697,8 @@ static const struct rtw89_hci_ops rtw89_pci_ops = {
|
|||
.write16 = rtw89_pci_ops_write16,
|
||||
.write32 = rtw89_pci_ops_write32,
|
||||
|
||||
.read32_pci_cfg = rtw89_pci_ops_read32_pci_cfg,
|
||||
|
||||
.mac_pre_init = rtw89_pci_ops_mac_pre_init,
|
||||
.mac_pre_deinit = rtw89_pci_ops_mac_pre_deinit,
|
||||
.mac_post_init = rtw89_pci_ops_mac_post_init,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user