Search Linux Wireless

RE: [PATCH rtw-next v2 03/11] wifi: rtw89: usb: Fix rtw89_usb_ops_mac_pre_init() for RTL8852CU

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> wrote:
> The registers used in this function are located at different offsets in
> RTL8852CU compared to other chips. Use the right registers for each
> chip.
> 
> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx>
> ---
> v2:
>  - No change, messed up sending v1.
> ---
>  drivers/net/wireless/realtek/rtw89/usb.c | 29 ++++++++++++++++++++----
>  1 file changed, 24 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/wireless/realtek/rtw89/usb.c b/drivers/net/wireless/realtek/rtw89/usb.c
> index eb9978a60d04..e749a37ac1b5 100644
> --- a/drivers/net/wireless/realtek/rtw89/usb.c
> +++ b/drivers/net/wireless/realtek/rtw89/usb.c
> @@ -726,20 +726,39 @@ static int rtw89_usb_ops_deinit(struct rtw89_dev *rtwdev)
> 
>  static int rtw89_usb_ops_mac_pre_init(struct rtw89_dev *rtwdev)
>  {
> +       u32 usb_host_request_2, usb_wlan0_1, hci_func_en;
>         u32 val32;
> 
> -       rtw89_write32_set(rtwdev, R_AX_USB_HOST_REQUEST_2, B_AX_R_USBIO_MODE);
> +       switch (rtwdev->chip->chip_id) {
> +       case RTL8851B:
> +       case RTL8852A:
> +       case RTL8852B:
> +               usb_host_request_2 = R_AX_USB_HOST_REQUEST_2;
> +               usb_wlan0_1 = R_AX_USB_WLAN0_1;
> +               hci_func_en = R_AX_HCI_FUNC_EN;

Like comment in 02/11, rtw89_usb_info can help if you like that style. 

Otherwise,

Acked-by: Ping-Ke Shih <pkshih@xxxxxxxxxxx>

> +               break;
> +       case RTL8852C:
> +               usb_host_request_2 = R_AX_USB_HOST_REQUEST_2_V1;
> +               usb_wlan0_1 = R_AX_USB_WLAN0_1_V1;
> +               hci_func_en = R_AX_HCI_FUNC_EN_V1;
> +               break;
> +       default:
> +               rtw89_err(rtwdev, "%s: unknown chip\n", __func__);
> +               return -EOPNOTSUPP;
> +       }
> +
> +       rtw89_write32_set(rtwdev, usb_host_request_2, B_AX_R_USBIO_MODE);
> 
>         /* fix USB IO hang suggest by chihhanli@xxxxxxxxxxx */
> -       rtw89_write32_clr(rtwdev, R_AX_USB_WLAN0_1,
> +       rtw89_write32_clr(rtwdev, usb_wlan0_1,
>                           B_AX_USBRX_RST | B_AX_USBTX_RST);
> 
> -       val32 = rtw89_read32(rtwdev, R_AX_HCI_FUNC_EN);
> +       val32 = rtw89_read32(rtwdev, hci_func_en);
>         val32 &= ~(B_AX_HCI_RXDMA_EN | B_AX_HCI_TXDMA_EN);
> -       rtw89_write32(rtwdev, R_AX_HCI_FUNC_EN, val32);
> +       rtw89_write32(rtwdev, hci_func_en, val32);
> 
>         val32 |= B_AX_HCI_RXDMA_EN | B_AX_HCI_TXDMA_EN;
> -       rtw89_write32(rtwdev, R_AX_HCI_FUNC_EN, val32);
> +       rtw89_write32(rtwdev, hci_func_en, val32);
>         /* fix USB TRX hang suggest by chihhanli@xxxxxxxxxxx */
> 
>         return 0;
> --
> 2.50.0





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux