OSDN Git Service

rtw89: make rfk helpers common across chips
authorZong-Zhe Yang <kevin_yang@realtek.com>
Fri, 11 Feb 2022 07:59:48 +0000 (15:59 +0800)
committerKalle Valo <kvalo@kernel.org>
Mon, 14 Feb 2022 18:06:21 +0000 (20:06 +0200)
These rfk helpers are also useful for the chip which is under planning.
So, move them to common code to avoid duplicate stuff in the future.

Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220211075953.40421-2-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/phy.c
drivers/net/wireless/realtek/rtw89/phy.h
drivers/net/wireless/realtek/rtw89/rtw8852a_rfk.c
drivers/net/wireless/realtek/rtw89/rtw8852a_rfk_table.h

index 130db2f..c491a11 100644 (file)
@@ -3037,3 +3037,55 @@ void rtw89_phy_set_bss_color(struct rtw89_dev *rtwdev, struct ieee80211_vif *vif
        rtw89_phy_write32_idx(rtwdev, R_BSS_CLR_MAP, B_BSS_CLR_MAP_STAID,
                              vif->bss_conf.aid, phy_idx);
 }
+
+static void
+_rfk_write_rf(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
+{
+       rtw89_write_rf(rtwdev, def->path, def->addr, def->mask, def->data);
+}
+
+static void
+_rfk_write32_mask(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
+{
+       rtw89_phy_write32_mask(rtwdev, def->addr, def->mask, def->data);
+}
+
+static void
+_rfk_write32_set(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
+{
+       rtw89_phy_write32_set(rtwdev, def->addr, def->mask);
+}
+
+static void
+_rfk_write32_clr(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
+{
+       rtw89_phy_write32_clr(rtwdev, def->addr, def->mask);
+}
+
+static void
+_rfk_delay(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
+{
+       udelay(def->data);
+}
+
+static void
+(*_rfk_handler[])(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def) = {
+       [RTW89_RFK_F_WRF] = _rfk_write_rf,
+       [RTW89_RFK_F_WM] = _rfk_write32_mask,
+       [RTW89_RFK_F_WS] = _rfk_write32_set,
+       [RTW89_RFK_F_WC] = _rfk_write32_clr,
+       [RTW89_RFK_F_DELAY] = _rfk_delay,
+};
+
+static_assert(ARRAY_SIZE(_rfk_handler) == RTW89_RFK_F_NUM);
+
+void
+rtw89_rfk_parser(struct rtw89_dev *rtwdev, const struct rtw89_rfk_tbl *tbl)
+{
+       const struct rtw89_reg5_def *p = tbl->defs;
+       const struct rtw89_reg5_def *end = tbl->defs + tbl->size;
+
+       for (; p < end; p++)
+               _rfk_handler[p->flag](rtwdev, p);
+}
+EXPORT_SYMBOL(rtw89_rfk_parser);
index 2cb68f4..81bd4ae 100644 (file)
@@ -328,6 +328,65 @@ static inline u32 rtw89_phy_read32_mask(struct rtw89_dev *rtwdev,
        return rtw89_read32_mask(rtwdev, addr | RTW89_PHY_ADDR_OFFSET, mask);
 }
 
+enum rtw89_rfk_flag {
+       RTW89_RFK_F_WRF = 0,
+       RTW89_RFK_F_WM = 1,
+       RTW89_RFK_F_WS = 2,
+       RTW89_RFK_F_WC = 3,
+       RTW89_RFK_F_DELAY = 4,
+       RTW89_RFK_F_NUM,
+};
+
+struct rtw89_rfk_tbl {
+       const struct rtw89_reg5_def *defs;
+       u32 size;
+};
+
+#define DECLARE_RFK_TBL(_name)                 \
+const struct rtw89_rfk_tbl _name ## _tbl = {   \
+       .defs = _name,                          \
+       .size = ARRAY_SIZE(_name),              \
+}
+
+#define DECL_RFK_WRF(_path, _addr, _mask, _data)       \
+       {.flag = RTW89_RFK_F_WRF,                       \
+        .path = _path,                                 \
+        .addr = _addr,                                 \
+        .mask = _mask,                                 \
+        .data = _data,}
+
+#define DECL_RFK_WM(_addr, _mask, _data)       \
+       {.flag = RTW89_RFK_F_WM,                \
+        .addr = _addr,                         \
+        .mask = _mask,                         \
+        .data = _data,}
+
+#define DECL_RFK_WS(_addr, _mask)      \
+       {.flag = RTW89_RFK_F_WS,        \
+        .addr = _addr,                 \
+        .mask = _mask,}
+
+#define DECL_RFK_WC(_addr, _mask)      \
+       {.flag = RTW89_RFK_F_WC,        \
+        .addr = _addr,                 \
+        .mask = _mask,}
+
+#define DECL_RFK_DELAY(_data)          \
+       {.flag = RTW89_RFK_F_DELAY,     \
+        .data = _data,}
+
+void
+rtw89_rfk_parser(struct rtw89_dev *rtwdev, const struct rtw89_rfk_tbl *tbl);
+
+#define rtw89_rfk_parser_by_cond(dev, cond, tbl_t, tbl_f)      \
+       do {                                                    \
+               typeof(dev) __dev = (dev);                      \
+               if (cond)                                       \
+                       rtw89_rfk_parser(__dev, (tbl_t));       \
+               else                                            \
+                       rtw89_rfk_parser(__dev, (tbl_f));       \
+       } while (0)
+
 void rtw89_phy_write_reg3_tbl(struct rtw89_dev *rtwdev,
                              const struct rtw89_phy_reg3_tbl *tbl);
 u8 rtw89_phy_get_txsc(struct rtw89_dev *rtwdev,
index c021e93..aa32668 100644 (file)
 #include "rtw8852a_rfk_table.h"
 #include "rtw8852a_table.h"
 
-static void
-_rfk_write_rf(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
-{
-       rtw89_write_rf(rtwdev, def->path, def->addr, def->mask, def->data);
-}
-
-static void
-_rfk_write32_mask(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
-{
-       rtw89_phy_write32_mask(rtwdev, def->addr, def->mask, def->data);
-}
-
-static void
-_rfk_write32_set(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
-{
-       rtw89_phy_write32_set(rtwdev, def->addr, def->mask);
-}
-
-static void
-_rfk_write32_clr(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
-{
-       rtw89_phy_write32_clr(rtwdev, def->addr, def->mask);
-}
-
-static void
-_rfk_delay(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def)
-{
-       udelay(def->data);
-}
-
-static void
-(*_rfk_handler[])(struct rtw89_dev *rtwdev, const struct rtw89_reg5_def *def) = {
-       [RTW89_RFK_F_WRF] = _rfk_write_rf,
-       [RTW89_RFK_F_WM] = _rfk_write32_mask,
-       [RTW89_RFK_F_WS] = _rfk_write32_set,
-       [RTW89_RFK_F_WC] = _rfk_write32_clr,
-       [RTW89_RFK_F_DELAY] = _rfk_delay,
-};
-
-static_assert(ARRAY_SIZE(_rfk_handler) == RTW89_RFK_F_NUM);
-
-static void
-rtw89_rfk_parser(struct rtw89_dev *rtwdev, const struct rtw89_rfk_tbl *tbl)
-{
-       const struct rtw89_reg5_def *p = tbl->defs;
-       const struct rtw89_reg5_def *end = tbl->defs + tbl->size;
-
-       for (; p < end; p++)
-               _rfk_handler[p->flag](rtwdev, p);
-}
-
-#define rtw89_rfk_parser_by_cond(rtwdev, cond, tbl_t, tbl_f)   \
-       do {                                                    \
-               typeof(rtwdev) _dev = (rtwdev);                 \
-               if (cond)                                       \
-                       rtw89_rfk_parser(_dev, (tbl_t));        \
-               else                                            \
-                       rtw89_rfk_parser(_dev, (tbl_f));        \
-       } while (0)
-
 static u8 _kpath(struct rtw89_dev *rtwdev, enum rtw89_phy_idx phy_idx)
 {
        rtw89_debug(rtwdev, RTW89_DBG_RFK, "[RFK]dbcc_en: %x,  PHY%d\n",
index 4a4a45d..33e6c40 100644 (file)
@@ -5,54 +5,7 @@
 #ifndef __RTW89_8852A_RFK_TABLE_H__
 #define __RTW89_8852A_RFK_TABLE_H__
 
-#include "core.h"
-
-enum rtw89_rfk_flag {
-       RTW89_RFK_F_WRF = 0,
-       RTW89_RFK_F_WM = 1,
-       RTW89_RFK_F_WS = 2,
-       RTW89_RFK_F_WC = 3,
-       RTW89_RFK_F_DELAY = 4,
-       RTW89_RFK_F_NUM,
-};
-
-struct rtw89_rfk_tbl {
-       const struct rtw89_reg5_def *defs;
-       u32 size;
-};
-
-#define DECLARE_RFK_TBL(_name)                 \
-const struct rtw89_rfk_tbl _name ## _tbl = {   \
-       .defs = _name,                          \
-       .size = ARRAY_SIZE(_name),              \
-}
-
-#define DECL_RFK_WRF(_path, _addr, _mask, _data)       \
-       {.flag = RTW89_RFK_F_WRF,                       \
-        .path = _path,                                 \
-        .addr = _addr,                                 \
-        .mask = _mask,                                 \
-        .data = _data,}
-
-#define DECL_RFK_WM(_addr, _mask, _data)       \
-       {.flag = RTW89_RFK_F_WM,                \
-        .addr = _addr,                         \
-        .mask = _mask,                         \
-        .data = _data,}
-
-#define DECL_RFK_WS(_addr, _mask)      \
-       {.flag = RTW89_RFK_F_WS,        \
-        .addr = _addr,                 \
-        .mask = _mask,}
-
-#define DECL_RFK_WC(_addr, _mask)      \
-       {.flag = RTW89_RFK_F_WC,        \
-        .addr = _addr,                 \
-        .mask = _mask,}
-
-#define DECL_RFK_DELAY(_data)          \
-       {.flag = RTW89_RFK_F_DELAY,     \
-        .data = _data,}
+#include "phy.h"
 
 extern const struct rtw89_rfk_tbl rtw8852a_tssi_sys_defs_tbl;
 extern const struct rtw89_rfk_tbl rtw8852a_tssi_sys_defs_2g_tbl;