rtl8xxxu: Make rtl8xxxu_add_path_on() use device specific init values
authorJes Sorensen <Jes.Sorensen@redhat.com>
Mon, 29 Feb 2016 22:04:33 +0000 (17:04 -0500)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 10 Mar 2016 13:29:01 +0000 (15:29 +0200)
rtl8192cu/rtl8188cu/rtl8723au use the same values, but 8723bu and
8192eu have their own.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h

index 171e0388d5ec6548ef5f9dbaddcd007e91febebf..a16dabfa713ecba4ad9d23c794f6e38e022e6e71 100644 (file)
@@ -3557,11 +3557,13 @@ static void rtl8xxxu_path_adda_on(struct rtl8xxxu_priv *priv, const u32 *regs,
        u32 path_on;
        int i;
 
-       path_on = path_a_on ? 0x04db25a4 : 0x0b1b25a4;
        if (priv->tx_paths == 1) {
-               path_on = 0x0bdb25a0;
-               rtl8xxxu_write32(priv, regs[0], 0x0b1b25a0);
+               path_on = priv->fops->adda_1t_path_on;
+               rtl8xxxu_write32(priv, regs[0], priv->fops->adda_1t_init);
        } else {
+               path_on = path_a_on ? priv->fops->adda_2t_path_on_a :
+                       priv->fops->adda_2t_path_on_b;
+
                rtl8xxxu_write32(priv, regs[0], path_on);
        }
 
@@ -6537,6 +6539,10 @@ static struct rtl8xxxu_fileops rtl8723au_fops = {
        .writeN_block_size = 1024,
        .mbox_ext_reg = REG_HMBOX_EXT_0,
        .mbox_ext_width = 2,
+       .adda_1t_init = 0x0b1b25a0,
+       .adda_1t_path_on = 0x0bdb25a0,
+       .adda_2t_path_on_a = 0x04db25a4,
+       .adda_2t_path_on_b = 0x0b1b25a4,
 };
 
 static struct rtl8xxxu_fileops rtl8723bu_fops = {
@@ -6548,6 +6554,10 @@ static struct rtl8xxxu_fileops rtl8723bu_fops = {
        .writeN_block_size = 1024,
        .mbox_ext_reg = REG_HMBOX_EXT0_8723B,
        .mbox_ext_width = 4,
+       .adda_1t_init = 0x01c00014,
+       .adda_1t_path_on = 0x01c00014,
+       .adda_2t_path_on_a = 0x01c00014,
+       .adda_2t_path_on_b = 0x01c00014,
 };
 
 #ifdef CONFIG_RTL8XXXU_UNTESTED
@@ -6560,6 +6570,10 @@ static struct rtl8xxxu_fileops rtl8192cu_fops = {
        .writeN_block_size = 128,
        .mbox_ext_reg = REG_HMBOX_EXT_0,
        .mbox_ext_width = 2,
+       .adda_1t_init = 0x0b1b25a0,
+       .adda_1t_path_on = 0x0bdb25a0,
+       .adda_2t_path_on_a = 0x04db25a4,
+       .adda_2t_path_on_b = 0x0b1b25a4,
 };
 
 #endif
@@ -6572,6 +6586,10 @@ static struct rtl8xxxu_fileops rtl8192eu_fops = {
        .writeN_block_size = 128,
        .mbox_ext_reg = REG_HMBOX_EXT0_8723B,
        .mbox_ext_width = 4,
+       .adda_1t_init = 0x0fc01616,
+       .adda_1t_path_on = 0x0fc01616,
+       .adda_2t_path_on_a = 0x0fc01616,
+       .adda_2t_path_on_b = 0x0fc01616,
 };
 
 static struct usb_device_id dev_table[] = {
index 07533acaa9c6c905a5b992cc012eae286e898436..4b8431db38d248d5d0ff109cacc6a3edbe7bb535 100644 (file)
@@ -854,4 +854,8 @@ struct rtl8xxxu_fileops {
        int writeN_block_size;
        u16 mbox_ext_reg;
        char mbox_ext_width;
+       u32 adda_1t_init;
+       u32 adda_1t_path_on;
+       u32 adda_2t_path_on_a;
+       u32 adda_2t_path_on_b;
 };