Message ID | 20240208022857.14379-3-pkshih@realtek.com |
---|---|
State | Superseded |
Headers | show |
Series | wifi: rtw89: enable DBCC for WiFi 7 chips by default | expand |
Hi Ping-Ke, kernel test robot noticed the following build warnings: [auto build test WARNING on wireless-next/main] [also build test WARNING on next-20240208] [cannot apply to wireless/main linus/master v6.8-rc3] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Ping-Ke-Shih/wifi-rtw89-correct-PHY-register-offset-for-PHY-1/20240208-103413 base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main patch link: https://lore.kernel.org/r/20240208022857.14379-3-pkshih%40realtek.com patch subject: [PATCH 02/11] wifi: rtw89: load BB parameters to PHY-1 config: powerpc-allyesconfig (https://download.01.org/0day-ci/archive/20240209/202402090838.S5xcKIlg-lkp@intel.com/config) compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project 7dd790db8b77c4a833c06632e903dc4f13877a64) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240209/202402090838.S5xcKIlg-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202402090838.S5xcKIlg-lkp@intel.com/ All warnings (new ones prefixed by >>): >> drivers/net/wireless/realtek/rtw89/phy.c:1047:7: warning: cast to smaller integer type 'enum rtw89_phy_idx' from 'void *' [-Wvoid-pointer-to-enum-cast] 1047 | if ((enum rtw89_phy_idx)extra_data == RTW89_PHY_1) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning generated. vim +1047 drivers/net/wireless/realtek/rtw89/phy.c 1022 1023 static void rtw89_phy_config_bb_reg(struct rtw89_dev *rtwdev, 1024 const struct rtw89_reg2_def *reg, 1025 enum rtw89_rf_path rf_path, 1026 void *extra_data) 1027 { 1028 u32 addr; 1029 1030 if (reg->addr == 0xfe) { 1031 mdelay(50); 1032 } else if (reg->addr == 0xfd) { 1033 mdelay(5); 1034 } else if (reg->addr == 0xfc) { 1035 mdelay(1); 1036 } else if (reg->addr == 0xfb) { 1037 udelay(50); 1038 } else if (reg->addr == 0xfa) { 1039 udelay(5); 1040 } else if (reg->addr == 0xf9) { 1041 udelay(1); 1042 } else if (reg->data == BYPASS_CR_DATA) { 1043 rtw89_debug(rtwdev, RTW89_DBG_PHY_TRACK, "Bypass CR 0x%x\n", reg->addr); 1044 } else { 1045 addr = reg->addr; 1046 > 1047 if ((enum rtw89_phy_idx)extra_data == RTW89_PHY_1) 1048 addr += rtw89_phy0_phy1_offset(rtwdev, reg->addr); 1049 1050 rtw89_phy_write32(rtwdev, addr, reg->data); 1051 } 1052 } 1053
On Fri, 2024-02-09 at 08:50 +0800, kernel test robot wrote: > > > > > drivers/net/wireless/realtek/rtw89/phy.c:1047:7: warning: cast to smaller integer type 'enum > > > rtw89_phy_idx' from 'void *' [-Wvoid-pointer-to-enum-cast] > 1047 | if ((enum rtw89_phy_idx)extra_data == RTW89_PHY_1) > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 1 warning generated. > > > vim +1047 drivers/net/wireless/realtek/rtw89/phy.c > > 1022 > 1023 static void rtw89_phy_config_bb_reg(struct rtw89_dev *rtwdev, > 1024 const struct rtw89_reg2_def *reg, > 1025 enum rtw89_rf_path rf_path, > 1026 void *extra_data) > 1027 { > 1028 u32 addr; > 1029 > 1030 if (reg->addr == 0xfe) { > 1031 mdelay(50); > 1032 } else if (reg->addr == 0xfd) { > 1033 mdelay(5); > 1034 } else if (reg->addr == 0xfc) { > 1035 mdelay(1); > 1036 } else if (reg->addr == 0xfb) { > 1037 udelay(50); > 1038 } else if (reg->addr == 0xfa) { > 1039 udelay(5); > 1040 } else if (reg->addr == 0xf9) { > 1041 udelay(1); > 1042 } else if (reg->data == BYPASS_CR_DATA) { > 1043 rtw89_debug(rtwdev, RTW89_DBG_PHY_TRACK, "Bypass CR 0x%x\n", reg->addr); > 1044 } else { > 1045 addr = reg->addr; > 1046 > > 1047 if ((enum rtw89_phy_idx)extra_data == RTW89_PHY_1) > 1048 addr += rtw89_phy0_phy1_offset(rtwdev, reg->addr); > 1049 > 1050 rtw89_phy_write32(rtwdev, addr, reg->data); > 1051 } > 1052 } > This function is one of callback function of 'config' argument of rtw89_phy_init_reg(). static void rtw89_phy_init_reg(struct rtw89_dev *rtwdev, const struct rtw89_phy_table *table, void (*config)(struct rtw89_dev *rtwdev, const struct rtw89_reg2_def *reg, enum rtw89_rf_path rf_path, void *data), void *extra_data) The 'void *extra_data' is explained by callback function 'config', and there are many existing callback functions. To simply suppress this warning , I plan to cast 'extra_data' from 'void *' by 'uintptr_t' to avoid clang warning, and gcc can also accept this. I did this by v2. Ping-Ke
diff --git a/drivers/net/wireless/realtek/rtw89/phy.c b/drivers/net/wireless/realtek/rtw89/phy.c index 7c2f0ba996b1..389eb01d303c 100644 --- a/drivers/net/wireless/realtek/rtw89/phy.c +++ b/drivers/net/wireless/realtek/rtw89/phy.c @@ -1025,22 +1025,30 @@ static void rtw89_phy_config_bb_reg(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path, void *extra_data) { - if (reg->addr == 0xfe) + u32 addr; + + if (reg->addr == 0xfe) { mdelay(50); - else if (reg->addr == 0xfd) + } else if (reg->addr == 0xfd) { mdelay(5); - else if (reg->addr == 0xfc) + } else if (reg->addr == 0xfc) { mdelay(1); - else if (reg->addr == 0xfb) + } else if (reg->addr == 0xfb) { udelay(50); - else if (reg->addr == 0xfa) + } else if (reg->addr == 0xfa) { udelay(5); - else if (reg->addr == 0xf9) + } else if (reg->addr == 0xf9) { udelay(1); - else if (reg->data == BYPASS_CR_DATA) + } else if (reg->data == BYPASS_CR_DATA) { rtw89_debug(rtwdev, RTW89_DBG_PHY_TRACK, "Bypass CR 0x%x\n", reg->addr); - else - rtw89_phy_write32(rtwdev, reg->addr, reg->data); + } else { + addr = reg->addr; + + if ((enum rtw89_phy_idx)extra_data == RTW89_PHY_1) + addr += rtw89_phy0_phy1_offset(rtwdev, reg->addr); + + rtw89_phy_write32(rtwdev, addr, reg->data); + } } union rtw89_phy_bb_gain_arg { @@ -1554,6 +1562,9 @@ void rtw89_phy_init_bb_reg(struct rtw89_dev *rtwdev) bb_table = elm_info->bb_tbl ? elm_info->bb_tbl : chip->bb_table; rtw89_phy_init_reg(rtwdev, bb_table, rtw89_phy_config_bb_reg, NULL); + if (rtwdev->dbcc_en) + rtw89_phy_init_reg(rtwdev, bb_table, rtw89_phy_config_bb_reg, + (void *)RTW89_PHY_1); rtw89_chip_init_txpwr_unit(rtwdev, RTW89_PHY_0); bb_gain_table = elm_info->bb_gain ? elm_info->bb_gain : chip->bb_gain_table;
We are going to support MLO/DBCC, so need to load parameter table to PHY-1 as well. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> --- drivers/net/wireless/realtek/rtw89/phy.c | 29 ++++++++++++++++-------- 1 file changed, 20 insertions(+), 9 deletions(-)