From: Ping-Ke Shih <pkshih@realtek.com>
To: Bitterblue Smith <rtl8821cerfe2@gmail.com>,
Piotr Oniszczuk <piotr.oniszczuk@gmail.com>
Cc: "linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
"martin.blumenstingl@googlemail.com"
<martin.blumenstingl@googlemail.com>
Subject: Re: rtl8822cs, mainline 6.16-rc7: kernel reports ' unsupported rf path'
Date: Wed, 23 Jul 2025 12:23:23 +0000 [thread overview]
Message-ID: <5933c3ef71914cdf83687042488800d2@realtek.com> (raw)
In-Reply-To: <7dfa0377-538f-464b-b4e4-4c9daa1fb85a@gmail.com>
Bitterblue Smith <rtl8821cerfe2@gmail.com> wrote:
>
> On 23/07/2025 12:07, Ping-Ke Shih wrote:
> > Piotr Oniszczuk <piotr.oniszczuk@gmail.com> wrote:
> >>> Wiadomość napisana przez Ping-Ke Shih <pkshih@realtek.com> w dniu 23 lip 2025, o godz. 10:19:
> >>>
> >>> working state:
> >>> rtw88: rtw_chip_parameter_setup:1859 hal->chip_version=0x493d30ea
> >>> non-working state:
> >>> rtw88: rtw_chip_parameter_setup:1859 hal->chip_version=0x303030ea
> >>>
> >>> I'd try to read more times to see if it can become correct...
> >>> Also, I force to use correct value at the last iteration to see if it
> >>> can work even incorrect value of register 0xF0.
> >>>
> >>> diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c
> >>> index fa0ed39cb199..137418d1108d 100644
> >>> --- a/drivers/net/wireless/realtek/rtw88/main.c
> >>> +++ b/drivers/net/wireless/realtek/rtw88/main.c
> >>> @@ -1858,9 +1861,14 @@ static int rtw_chip_parameter_setup(struct rtw_dev *rtwdev)
> >>> return -EINVAL;
> >>> }
> >>>
> >>> - hal->chip_version = rtw_read32(rtwdev, REG_SYS_CFG1);
> >>> + for (int i = 0; i < 20; i++) {
> >>> + hal->chip_version = i == 19 ? 0x493d30ea : rtw_read32(rtwdev, REG_SYS_CFG1);
> >>> hal->cut_version = BIT_GET_CHIP_VER(hal->chip_version);
> >>> hal->mp_chip = (hal->chip_version & BIT_RTL_ID) ? 0 : 1;
> >>> + printk("rtw88: %s:%d hal->chip_version=0x%x\n",
> >>> + __func__, __LINE__, hal->chip_version);
> >>> + mdelay(100);
> >>> + }
> >>> if (hal->chip_version & BIT_RF_TYPE_ID) {
> >>> hal->rf_type = RF_2T2R;
> >>> hal->rf_path_num = 2;
> >>>
> >>>
> >>
> >> well - with above patch all starts to work well :-)
> >> 10 boots, 10 working wifi with correct scans.
> >
> > Good.
> >
> >>
> >> demsg from working sys: https://termbin.com/bhs4
> >
> > Unfortunately, the log said:
> > first read:
> > rtw88: rtw_chip_parameter_setup:1860 hal->chip_version=0x303030ea
> > 2nd~19th read:
> > rtw88: rtw_chip_parameter_setup:1860 hal->chip_version=0x30303030
> >
> > Not sure if I can use this pattern to make a workaround. I think the better
> > way would be to use firmware report to fix this. I'll try to make a patch
> > and get back to you soon.
> >
> >
>
> Maybe there is a mistake in rtw_sdio_read32() ? It's pretty complicated.
> The equivalent function in the vendor driver is reg_r32_sdio_8822c().
> I think for reading REG_SYS_CFG1 in rtw_chip_parameter_setup() it needs
> to do the indirect read in the snippet below:
>
> u32
> reg_r32_sdio_8822c(struct halmac_adapter *adapter, u32 offset)
> {
> enum halmac_ret_status status = HALMAC_RET_SUCCESS;
> union {
> __le32 dword;
> u8 byte[4];
> } value32 = { 0x00000000 };
>
> if (((offset & 0xFFFF0000) == 0) &&
> adapter->halmac_state.mac_pwr == HALMAC_MAC_POWER_OFF) {
> return r_indir_sdio_88xx(adapter, offset, HALMAC_IO_DWORD);
Thanks for the hints. I think it's worth to try:
diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c
index fa0ed39cb199..5ea13c775796 100644
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -1861,6 +1861,8 @@ static int rtw_chip_parameter_setup(struct rtw_dev *rtwdev)
hal->chip_version = rtw_read32(rtwdev, REG_SYS_CFG1);
hal->cut_version = BIT_GET_CHIP_VER(hal->chip_version);
hal->mp_chip = (hal->chip_version & BIT_RTL_ID) ? 0 : 1;
+ printk("rtw88: %s:%d hal->chip_version=0x%x\n",
+ __func__, __LINE__, hal->chip_version);
if (hal->chip_version & BIT_RF_TYPE_ID) {
hal->rf_type = RF_2T2R;
hal->rf_path_num = 2;
diff --git a/drivers/net/wireless/realtek/rtw88/sdio.c b/drivers/net/wireless/realtek/rtw88/sdio.c
index cc2d4fef3587..5c9e7c8cdd7e 100644
--- a/drivers/net/wireless/realtek/rtw88/sdio.c
+++ b/drivers/net/wireless/realtek/rtw88/sdio.c
@@ -144,6 +144,10 @@ static u32 rtw_sdio_to_io_address(struct rtw_dev *rtwdev, u32 addr,
static bool rtw_sdio_use_direct_io(struct rtw_dev *rtwdev, u32 addr)
{
+ if (!rtw_sdio_is_bus_addr(addr) &&
+ !test_bit(RTW_FLAG_POWERON, rtwdev->flags))
+ return false;
+
return !rtw_sdio_is_sdio30_supported(rtwdev) ||
rtw_sdio_is_bus_addr(addr);
}
next prev parent reply other threads:[~2025-07-23 12:23 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-22 13:29 rtl8822cs, mainline 6.16-rc7: kernel reports ' unsupported rf path' Piotr Oniszczuk
2025-07-23 0:52 ` Ping-Ke Shih
2025-07-23 7:34 ` Piotr Oniszczuk
2025-07-23 7:50 ` Ping-Ke Shih
2025-07-23 8:02 ` Piotr Oniszczuk
2025-07-23 8:19 ` Ping-Ke Shih
2025-07-23 8:46 ` Piotr Oniszczuk
2025-07-23 9:07 ` Ping-Ke Shih
2025-07-23 11:14 ` Bitterblue Smith
2025-07-23 12:23 ` Ping-Ke Shih [this message]
2025-07-23 13:02 ` Piotr Oniszczuk
2025-07-24 0:52 ` Ping-Ke Shih
2025-07-24 7:55 ` Piotr Oniszczuk
2025-07-24 7:59 ` Ping-Ke Shih
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5933c3ef71914cdf83687042488800d2@realtek.com \
--to=pkshih@realtek.com \
--cc=linux-wireless@vger.kernel.org \
--cc=martin.blumenstingl@googlemail.com \
--cc=piotr.oniszczuk@gmail.com \
--cc=rtl8821cerfe2@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.