aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/b43/phy_n.c11
-rw-r--r--drivers/net/wireless/b43/phy_n.h1
-rw-r--r--drivers/net/wireless/b43/tables_nphy.c80
3 files changed, 44 insertions, 48 deletions
diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c
index 41dab89a2942..98ff8060f526 100644
--- a/drivers/net/wireless/b43/phy_n.c
+++ b/drivers/net/wireless/b43/phy_n.c
@@ -700,13 +700,11 @@ static void b43_radio_2057_init_post(struct b43_wldev *dev)
700 b43_radio_mask(dev, R2057_RFPLL_MISC_CAL_RESETN, ~0x78); 700 b43_radio_mask(dev, R2057_RFPLL_MISC_CAL_RESETN, ~0x78);
701 b43_radio_mask(dev, R2057_XTAL_CONFIG2, ~0x80); 701 b43_radio_mask(dev, R2057_XTAL_CONFIG2, ~0x80);
702 702
703 if (dev->phy.n->init_por) { 703 if (dev->phy.do_full_init) {
704 b43_radio_2057_rcal(dev); 704 b43_radio_2057_rcal(dev);
705 b43_radio_2057_rccal(dev); 705 b43_radio_2057_rccal(dev);
706 } 706 }
707 b43_radio_mask(dev, R2057_RFPLL_MASTER, ~0x8); 707 b43_radio_mask(dev, R2057_RFPLL_MASTER, ~0x8);
708
709 dev->phy.n->init_por = false;
710} 708}
711 709
712/* http://bcm-v4.sipsolutions.net/802.11/Radio/2057/Init */ 710/* http://bcm-v4.sipsolutions.net/802.11/Radio/2057/Init */
@@ -1028,7 +1026,7 @@ static void b43_radio_init2056_post(struct b43_wldev *dev)
1028 b43_radio_mask(dev, B2056_SYN_COM_RESET, ~0x2); 1026 b43_radio_mask(dev, B2056_SYN_COM_RESET, ~0x2);
1029 b43_radio_mask(dev, B2056_SYN_PLL_MAST2, ~0xFC); 1027 b43_radio_mask(dev, B2056_SYN_PLL_MAST2, ~0xFC);
1030 b43_radio_mask(dev, B2056_SYN_RCCAL_CTRL0, ~0x1); 1028 b43_radio_mask(dev, B2056_SYN_RCCAL_CTRL0, ~0x1);
1031 if (dev->phy.n->init_por) 1029 if (dev->phy.do_full_init)
1032 b43_radio_2056_rcal(dev); 1030 b43_radio_2056_rcal(dev);
1033} 1031}
1034 1032
@@ -1041,8 +1039,6 @@ static void b43_radio_init2056(struct b43_wldev *dev)
1041 b43_radio_init2056_pre(dev); 1039 b43_radio_init2056_pre(dev);
1042 b2056_upload_inittabs(dev, 0, 0); 1040 b2056_upload_inittabs(dev, 0, 0);
1043 b43_radio_init2056_post(dev); 1041 b43_radio_init2056_post(dev);
1044
1045 dev->phy.n->init_por = false;
1046} 1042}
1047 1043
1048/************************************************** 1044/**************************************************
@@ -5561,7 +5557,6 @@ static void b43_nphy_op_prepare_structs(struct b43_wldev *dev)
5561 nphy->hang_avoid = (phy->rev == 3 || phy->rev == 4); 5557 nphy->hang_avoid = (phy->rev == 3 || phy->rev == 4);
5562 nphy->spur_avoid = (phy->rev >= 3) ? 5558 nphy->spur_avoid = (phy->rev >= 3) ?
5563 B43_SPUR_AVOID_AUTO : B43_SPUR_AVOID_DISABLE; 5559 B43_SPUR_AVOID_AUTO : B43_SPUR_AVOID_DISABLE;
5564 nphy->init_por = true;
5565 nphy->gain_boost = true; /* this way we follow wl, assume it is true */ 5560 nphy->gain_boost = true; /* this way we follow wl, assume it is true */
5566 nphy->txrx_chain = 2; /* sth different than 0 and 1 for now */ 5561 nphy->txrx_chain = 2; /* sth different than 0 and 1 for now */
5567 nphy->phyrxchain = 3; /* to avoid b43_nphy_set_rx_core_state like wl */ 5562 nphy->phyrxchain = 3; /* to avoid b43_nphy_set_rx_core_state like wl */
@@ -5602,8 +5597,6 @@ static void b43_nphy_op_prepare_structs(struct b43_wldev *dev)
5602 nphy->ipa2g_on = sprom->fem.ghz2.extpa_gain == 2; 5597 nphy->ipa2g_on = sprom->fem.ghz2.extpa_gain == 2;
5603 nphy->ipa5g_on = sprom->fem.ghz5.extpa_gain == 2; 5598 nphy->ipa5g_on = sprom->fem.ghz5.extpa_gain == 2;
5604 } 5599 }
5605
5606 nphy->init_por = true;
5607} 5600}
5608 5601
5609static void b43_nphy_op_free(struct b43_wldev *dev) 5602static void b43_nphy_op_free(struct b43_wldev *dev)
diff --git a/drivers/net/wireless/b43/phy_n.h b/drivers/net/wireless/b43/phy_n.h
index 9a5b6bc27d24..ecfbf66dbc3b 100644
--- a/drivers/net/wireless/b43/phy_n.h
+++ b/drivers/net/wireless/b43/phy_n.h
@@ -931,7 +931,6 @@ struct b43_phy_n {
931 u16 papd_epsilon_offset[2]; 931 u16 papd_epsilon_offset[2];
932 s32 preamble_override; 932 s32 preamble_override;
933 u32 bb_mult_save; 933 u32 bb_mult_save;
934 bool init_por;
935 934
936 bool gain_boost; 935 bool gain_boost;
937 bool elna_gain_config; 936 bool elna_gain_config;
diff --git a/drivers/net/wireless/b43/tables_nphy.c b/drivers/net/wireless/b43/tables_nphy.c
index 50d03ffeac8c..4047c05e3807 100644
--- a/drivers/net/wireless/b43/tables_nphy.c
+++ b/drivers/net/wireless/b43/tables_nphy.c
@@ -3042,30 +3042,32 @@ static void b43_nphy_tables_init_rev3(struct b43_wldev *dev)
3042 antswlut = sprom->fem.ghz2.antswlut; 3042 antswlut = sprom->fem.ghz2.antswlut;
3043 3043
3044 /* Static tables */ 3044 /* Static tables */
3045 ntab_upload(dev, B43_NTAB_FRAMESTRUCT_R3, b43_ntab_framestruct_r3); 3045 if (dev->phy.do_full_init) {
3046 ntab_upload(dev, B43_NTAB_PILOT_R3, b43_ntab_pilot_r3); 3046 ntab_upload(dev, B43_NTAB_FRAMESTRUCT_R3, b43_ntab_framestruct_r3);
3047 ntab_upload(dev, B43_NTAB_TMAP_R3, b43_ntab_tmap_r3); 3047 ntab_upload(dev, B43_NTAB_PILOT_R3, b43_ntab_pilot_r3);
3048 ntab_upload(dev, B43_NTAB_INTLEVEL_R3, b43_ntab_intlevel_r3); 3048 ntab_upload(dev, B43_NTAB_TMAP_R3, b43_ntab_tmap_r3);
3049 ntab_upload(dev, B43_NTAB_TDTRN_R3, b43_ntab_tdtrn_r3); 3049 ntab_upload(dev, B43_NTAB_INTLEVEL_R3, b43_ntab_intlevel_r3);
3050 ntab_upload(dev, B43_NTAB_NOISEVAR_R3, b43_ntab_noisevar_r3); 3050 ntab_upload(dev, B43_NTAB_TDTRN_R3, b43_ntab_tdtrn_r3);
3051 ntab_upload(dev, B43_NTAB_MCS_R3, b43_ntab_mcs_r3); 3051 ntab_upload(dev, B43_NTAB_NOISEVAR_R3, b43_ntab_noisevar_r3);
3052 ntab_upload(dev, B43_NTAB_TDI20A0_R3, b43_ntab_tdi20a0_r3); 3052 ntab_upload(dev, B43_NTAB_MCS_R3, b43_ntab_mcs_r3);
3053 ntab_upload(dev, B43_NTAB_TDI20A1_R3, b43_ntab_tdi20a1_r3); 3053 ntab_upload(dev, B43_NTAB_TDI20A0_R3, b43_ntab_tdi20a0_r3);
3054 ntab_upload(dev, B43_NTAB_TDI40A0_R3, b43_ntab_tdi40a0_r3); 3054 ntab_upload(dev, B43_NTAB_TDI20A1_R3, b43_ntab_tdi20a1_r3);
3055 ntab_upload(dev, B43_NTAB_TDI40A1_R3, b43_ntab_tdi40a1_r3); 3055 ntab_upload(dev, B43_NTAB_TDI40A0_R3, b43_ntab_tdi40a0_r3);
3056 ntab_upload(dev, B43_NTAB_PILOTLT_R3, b43_ntab_pilotlt_r3); 3056 ntab_upload(dev, B43_NTAB_TDI40A1_R3, b43_ntab_tdi40a1_r3);
3057 ntab_upload(dev, B43_NTAB_CHANEST_R3, b43_ntab_channelest_r3); 3057 ntab_upload(dev, B43_NTAB_PILOTLT_R3, b43_ntab_pilotlt_r3);
3058 ntab_upload(dev, B43_NTAB_FRAMELT_R3, b43_ntab_framelookup_r3); 3058 ntab_upload(dev, B43_NTAB_CHANEST_R3, b43_ntab_channelest_r3);
3059 ntab_upload(dev, B43_NTAB_C0_ESTPLT_R3, b43_ntab_estimatepowerlt0_r3); 3059 ntab_upload(dev, B43_NTAB_FRAMELT_R3, b43_ntab_framelookup_r3);
3060 ntab_upload(dev, B43_NTAB_C1_ESTPLT_R3, b43_ntab_estimatepowerlt1_r3); 3060 ntab_upload(dev, B43_NTAB_C0_ESTPLT_R3, b43_ntab_estimatepowerlt0_r3);
3061 ntab_upload(dev, B43_NTAB_C0_ADJPLT_R3, b43_ntab_adjustpower0_r3); 3061 ntab_upload(dev, B43_NTAB_C1_ESTPLT_R3, b43_ntab_estimatepowerlt1_r3);
3062 ntab_upload(dev, B43_NTAB_C1_ADJPLT_R3, b43_ntab_adjustpower1_r3); 3062 ntab_upload(dev, B43_NTAB_C0_ADJPLT_R3, b43_ntab_adjustpower0_r3);
3063 ntab_upload(dev, B43_NTAB_C0_GAINCTL_R3, b43_ntab_gainctl0_r3); 3063 ntab_upload(dev, B43_NTAB_C1_ADJPLT_R3, b43_ntab_adjustpower1_r3);
3064 ntab_upload(dev, B43_NTAB_C1_GAINCTL_R3, b43_ntab_gainctl1_r3); 3064 ntab_upload(dev, B43_NTAB_C0_GAINCTL_R3, b43_ntab_gainctl0_r3);
3065 ntab_upload(dev, B43_NTAB_C0_IQLT_R3, b43_ntab_iqlt0_r3); 3065 ntab_upload(dev, B43_NTAB_C1_GAINCTL_R3, b43_ntab_gainctl1_r3);
3066 ntab_upload(dev, B43_NTAB_C1_IQLT_R3, b43_ntab_iqlt1_r3); 3066 ntab_upload(dev, B43_NTAB_C0_IQLT_R3, b43_ntab_iqlt0_r3);
3067 ntab_upload(dev, B43_NTAB_C0_LOFEEDTH_R3, b43_ntab_loftlt0_r3); 3067 ntab_upload(dev, B43_NTAB_C1_IQLT_R3, b43_ntab_iqlt1_r3);
3068 ntab_upload(dev, B43_NTAB_C1_LOFEEDTH_R3, b43_ntab_loftlt1_r3); 3068 ntab_upload(dev, B43_NTAB_C0_LOFEEDTH_R3, b43_ntab_loftlt0_r3);
3069 ntab_upload(dev, B43_NTAB_C1_LOFEEDTH_R3, b43_ntab_loftlt1_r3);
3070 }
3069 3071
3070 /* Volatile tables */ 3072 /* Volatile tables */
3071 if (antswlut < ARRAY_SIZE(b43_ntab_antswctl_r3)) 3073 if (antswlut < ARRAY_SIZE(b43_ntab_antswctl_r3))
@@ -3078,20 +3080,22 @@ static void b43_nphy_tables_init_rev3(struct b43_wldev *dev)
3078static void b43_nphy_tables_init_rev0(struct b43_wldev *dev) 3080static void b43_nphy_tables_init_rev0(struct b43_wldev *dev)
3079{ 3081{
3080 /* Static tables */ 3082 /* Static tables */
3081 ntab_upload(dev, B43_NTAB_FRAMESTRUCT, b43_ntab_framestruct); 3083 if (dev->phy.do_full_init) {
3082 ntab_upload(dev, B43_NTAB_FRAMELT, b43_ntab_framelookup); 3084 ntab_upload(dev, B43_NTAB_FRAMESTRUCT, b43_ntab_framestruct);
3083 ntab_upload(dev, B43_NTAB_TMAP, b43_ntab_tmap); 3085 ntab_upload(dev, B43_NTAB_FRAMELT, b43_ntab_framelookup);
3084 ntab_upload(dev, B43_NTAB_TDTRN, b43_ntab_tdtrn); 3086 ntab_upload(dev, B43_NTAB_TMAP, b43_ntab_tmap);
3085 ntab_upload(dev, B43_NTAB_INTLEVEL, b43_ntab_intlevel); 3087 ntab_upload(dev, B43_NTAB_TDTRN, b43_ntab_tdtrn);
3086 ntab_upload(dev, B43_NTAB_PILOT, b43_ntab_pilot); 3088 ntab_upload(dev, B43_NTAB_INTLEVEL, b43_ntab_intlevel);
3087 ntab_upload(dev, B43_NTAB_TDI20A0, b43_ntab_tdi20a0); 3089 ntab_upload(dev, B43_NTAB_PILOT, b43_ntab_pilot);
3088 ntab_upload(dev, B43_NTAB_TDI20A1, b43_ntab_tdi20a1); 3090 ntab_upload(dev, B43_NTAB_TDI20A0, b43_ntab_tdi20a0);
3089 ntab_upload(dev, B43_NTAB_TDI40A0, b43_ntab_tdi40a0); 3091 ntab_upload(dev, B43_NTAB_TDI20A1, b43_ntab_tdi20a1);
3090 ntab_upload(dev, B43_NTAB_TDI40A1, b43_ntab_tdi40a1); 3092 ntab_upload(dev, B43_NTAB_TDI40A0, b43_ntab_tdi40a0);
3091 ntab_upload(dev, B43_NTAB_CHANEST, b43_ntab_channelest); 3093 ntab_upload(dev, B43_NTAB_TDI40A1, b43_ntab_tdi40a1);
3092 ntab_upload(dev, B43_NTAB_MCS, b43_ntab_mcs); 3094 ntab_upload(dev, B43_NTAB_CHANEST, b43_ntab_channelest);
3093 ntab_upload(dev, B43_NTAB_NOISEVAR10, b43_ntab_noisevar10); 3095 ntab_upload(dev, B43_NTAB_MCS, b43_ntab_mcs);
3094 ntab_upload(dev, B43_NTAB_NOISEVAR11, b43_ntab_noisevar11); 3096 ntab_upload(dev, B43_NTAB_NOISEVAR10, b43_ntab_noisevar10);
3097 ntab_upload(dev, B43_NTAB_NOISEVAR11, b43_ntab_noisevar11);
3098 }
3095 3099
3096 /* Volatile tables */ 3100 /* Volatile tables */
3097 ntab_upload(dev, B43_NTAB_BDI, b43_ntab_bdi); 3101 ntab_upload(dev, B43_NTAB_BDI, b43_ntab_bdi);