diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2013-03-31 14:00:45 -0400 |
---|---|---|
committer | Rafał Miłecki <zajec5@gmail.com> | 2013-04-23 06:27:58 -0400 |
commit | 31bfffbae102591f347c02a9545a7362f57a21ea (patch) | |
tree | 2a27343ff1875a79821b5c9c5c895c21e9a127b2 | |
parent | 3cc8ff9f2feb12810f7d49465ad9bc2f054822aa (diff) |
b43: N-PHY: clean init tables
Sort defines, use one macro for all revs, support for 5GHz when
uploading antenna table.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
-rw-r--r-- | drivers/net/wireless/b43/tables_nphy.c | 94 | ||||
-rw-r--r-- | drivers/net/wireless/b43/tables_nphy.h | 26 |
2 files changed, 62 insertions, 58 deletions
diff --git a/drivers/net/wireless/b43/tables_nphy.c b/drivers/net/wireless/b43/tables_nphy.c index 0977fa0278c9..94c755fdda14 100644 --- a/drivers/net/wireless/b43/tables_nphy.c +++ b/drivers/net/wireless/b43/tables_nphy.c | |||
@@ -2174,7 +2174,7 @@ static const u16 b43_ntab_loftlt1_r3[] = { | |||
2174 | /* volatile tables, PHY revision >= 3 */ | 2174 | /* volatile tables, PHY revision >= 3 */ |
2175 | 2175 | ||
2176 | /* indexed by antswctl2g */ | 2176 | /* indexed by antswctl2g */ |
2177 | static const u16 b43_ntab_antswctl2g_r3[4][32] = { | 2177 | static const u16 b43_ntab_antswctl_r3[4][32] = { |
2178 | { | 2178 | { |
2179 | 0x0082, 0x0082, 0x0211, 0x0222, 0x0328, | 2179 | 0x0082, 0x0082, 0x0211, 0x0222, 0x0328, |
2180 | 0x0000, 0x0000, 0x0000, 0x0144, 0x0000, | 2180 | 0x0000, 0x0000, 0x0000, 0x0144, 0x0000, |
@@ -3095,8 +3095,54 @@ void b43_ntab_write_bulk(struct b43_wldev *dev, u32 offset, | |||
3095 | } | 3095 | } |
3096 | 3096 | ||
3097 | #define ntab_upload(dev, offset, data) do { \ | 3097 | #define ntab_upload(dev, offset, data) do { \ |
3098 | b43_ntab_write_bulk(dev, offset, offset##_SIZE, data); \ | 3098 | b43_ntab_write_bulk(dev, offset, ARRAY_SIZE(data), data); \ |
3099 | } while (0) | 3099 | } while (0) |
3100 | |||
3101 | static void b43_nphy_tables_init_rev3(struct b43_wldev *dev) | ||
3102 | { | ||
3103 | struct ssb_sprom *sprom = dev->dev->bus_sprom; | ||
3104 | u8 antswlut; | ||
3105 | |||
3106 | if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ) | ||
3107 | antswlut = sprom->fem.ghz5.antswlut; | ||
3108 | else | ||
3109 | antswlut = sprom->fem.ghz2.antswlut; | ||
3110 | |||
3111 | /* Static tables */ | ||
3112 | ntab_upload(dev, B43_NTAB_FRAMESTRUCT_R3, b43_ntab_framestruct_r3); | ||
3113 | ntab_upload(dev, B43_NTAB_PILOT_R3, b43_ntab_pilot_r3); | ||
3114 | ntab_upload(dev, B43_NTAB_TMAP_R3, b43_ntab_tmap_r3); | ||
3115 | ntab_upload(dev, B43_NTAB_INTLEVEL_R3, b43_ntab_intlevel_r3); | ||
3116 | ntab_upload(dev, B43_NTAB_TDTRN_R3, b43_ntab_tdtrn_r3); | ||
3117 | ntab_upload(dev, B43_NTAB_NOISEVAR0_R3, b43_ntab_noisevar0_r3); | ||
3118 | ntab_upload(dev, B43_NTAB_NOISEVAR1_R3, b43_ntab_noisevar1_r3); | ||
3119 | ntab_upload(dev, B43_NTAB_MCS_R3, b43_ntab_mcs_r3); | ||
3120 | ntab_upload(dev, B43_NTAB_TDI20A0_R3, b43_ntab_tdi20a0_r3); | ||
3121 | ntab_upload(dev, B43_NTAB_TDI20A1_R3, b43_ntab_tdi20a1_r3); | ||
3122 | ntab_upload(dev, B43_NTAB_TDI40A0_R3, b43_ntab_tdi40a0_r3); | ||
3123 | ntab_upload(dev, B43_NTAB_TDI40A1_R3, b43_ntab_tdi40a1_r3); | ||
3124 | ntab_upload(dev, B43_NTAB_PILOTLT_R3, b43_ntab_pilotlt_r3); | ||
3125 | ntab_upload(dev, B43_NTAB_CHANEST_R3, b43_ntab_channelest_r3); | ||
3126 | ntab_upload(dev, B43_NTAB_FRAMELT_R3, b43_ntab_framelookup_r3); | ||
3127 | ntab_upload(dev, B43_NTAB_C0_ESTPLT_R3, b43_ntab_estimatepowerlt0_r3); | ||
3128 | ntab_upload(dev, B43_NTAB_C1_ESTPLT_R3, b43_ntab_estimatepowerlt1_r3); | ||
3129 | ntab_upload(dev, B43_NTAB_C0_ADJPLT_R3, b43_ntab_adjustpower0_r3); | ||
3130 | ntab_upload(dev, B43_NTAB_C1_ADJPLT_R3, b43_ntab_adjustpower1_r3); | ||
3131 | ntab_upload(dev, B43_NTAB_C0_GAINCTL_R3, b43_ntab_gainctl0_r3); | ||
3132 | ntab_upload(dev, B43_NTAB_C1_GAINCTL_R3, b43_ntab_gainctl1_r3); | ||
3133 | ntab_upload(dev, B43_NTAB_C0_IQLT_R3, b43_ntab_iqlt0_r3); | ||
3134 | ntab_upload(dev, B43_NTAB_C1_IQLT_R3, b43_ntab_iqlt1_r3); | ||
3135 | ntab_upload(dev, B43_NTAB_C0_LOFEEDTH_R3, b43_ntab_loftlt0_r3); | ||
3136 | ntab_upload(dev, B43_NTAB_C1_LOFEEDTH_R3, b43_ntab_loftlt1_r3); | ||
3137 | |||
3138 | /* Volatile tables */ | ||
3139 | if (antswlut < ARRAY_SIZE(b43_ntab_antswctl_r3)) | ||
3140 | ntab_upload(dev, B43_NTAB_ANT_SW_CTL_R3, | ||
3141 | b43_ntab_antswctl_r3[antswlut]); | ||
3142 | else | ||
3143 | B43_WARN_ON(1); | ||
3144 | } | ||
3145 | |||
3100 | static void b43_nphy_tables_init_rev0(struct b43_wldev *dev) | 3146 | static void b43_nphy_tables_init_rev0(struct b43_wldev *dev) |
3101 | { | 3147 | { |
3102 | /* Static tables */ | 3148 | /* Static tables */ |
@@ -3130,50 +3176,6 @@ static void b43_nphy_tables_init_rev0(struct b43_wldev *dev) | |||
3130 | ntab_upload(dev, B43_NTAB_C1_LOFEEDTH, b43_ntab_loftlt1); | 3176 | ntab_upload(dev, B43_NTAB_C1_LOFEEDTH, b43_ntab_loftlt1); |
3131 | } | 3177 | } |
3132 | 3178 | ||
3133 | #define ntab_upload_r3(dev, offset, data) do { \ | ||
3134 | b43_ntab_write_bulk(dev, offset, ARRAY_SIZE(data), data); \ | ||
3135 | } while (0) | ||
3136 | static void b43_nphy_tables_init_rev3(struct b43_wldev *dev) | ||
3137 | { | ||
3138 | struct ssb_sprom *sprom = dev->dev->bus_sprom; | ||
3139 | |||
3140 | /* Static tables */ | ||
3141 | ntab_upload_r3(dev, B43_NTAB_FRAMESTRUCT_R3, b43_ntab_framestruct_r3); | ||
3142 | ntab_upload_r3(dev, B43_NTAB_PILOT_R3, b43_ntab_pilot_r3); | ||
3143 | ntab_upload_r3(dev, B43_NTAB_TMAP_R3, b43_ntab_tmap_r3); | ||
3144 | ntab_upload_r3(dev, B43_NTAB_INTLEVEL_R3, b43_ntab_intlevel_r3); | ||
3145 | ntab_upload_r3(dev, B43_NTAB_TDTRN_R3, b43_ntab_tdtrn_r3); | ||
3146 | ntab_upload_r3(dev, B43_NTAB_NOISEVAR0_R3, b43_ntab_noisevar0_r3); | ||
3147 | ntab_upload_r3(dev, B43_NTAB_NOISEVAR1_R3, b43_ntab_noisevar1_r3); | ||
3148 | ntab_upload_r3(dev, B43_NTAB_MCS_R3, b43_ntab_mcs_r3); | ||
3149 | ntab_upload_r3(dev, B43_NTAB_TDI20A0_R3, b43_ntab_tdi20a0_r3); | ||
3150 | ntab_upload_r3(dev, B43_NTAB_TDI20A1_R3, b43_ntab_tdi20a1_r3); | ||
3151 | ntab_upload_r3(dev, B43_NTAB_TDI40A0_R3, b43_ntab_tdi40a0_r3); | ||
3152 | ntab_upload_r3(dev, B43_NTAB_TDI40A1_R3, b43_ntab_tdi40a1_r3); | ||
3153 | ntab_upload_r3(dev, B43_NTAB_PILOTLT_R3, b43_ntab_pilotlt_r3); | ||
3154 | ntab_upload_r3(dev, B43_NTAB_CHANEST_R3, b43_ntab_channelest_r3); | ||
3155 | ntab_upload_r3(dev, B43_NTAB_FRAMELT_R3, b43_ntab_framelookup_r3); | ||
3156 | ntab_upload_r3(dev, B43_NTAB_C0_ESTPLT_R3, | ||
3157 | b43_ntab_estimatepowerlt0_r3); | ||
3158 | ntab_upload_r3(dev, B43_NTAB_C1_ESTPLT_R3, | ||
3159 | b43_ntab_estimatepowerlt1_r3); | ||
3160 | ntab_upload_r3(dev, B43_NTAB_C0_ADJPLT_R3, b43_ntab_adjustpower0_r3); | ||
3161 | ntab_upload_r3(dev, B43_NTAB_C1_ADJPLT_R3, b43_ntab_adjustpower1_r3); | ||
3162 | ntab_upload_r3(dev, B43_NTAB_C0_GAINCTL_R3, b43_ntab_gainctl0_r3); | ||
3163 | ntab_upload_r3(dev, B43_NTAB_C1_GAINCTL_R3, b43_ntab_gainctl1_r3); | ||
3164 | ntab_upload_r3(dev, B43_NTAB_C0_IQLT_R3, b43_ntab_iqlt0_r3); | ||
3165 | ntab_upload_r3(dev, B43_NTAB_C1_IQLT_R3, b43_ntab_iqlt1_r3); | ||
3166 | ntab_upload_r3(dev, B43_NTAB_C0_LOFEEDTH_R3, b43_ntab_loftlt0_r3); | ||
3167 | ntab_upload_r3(dev, B43_NTAB_C1_LOFEEDTH_R3, b43_ntab_loftlt1_r3); | ||
3168 | |||
3169 | /* Volatile tables */ | ||
3170 | if (sprom->fem.ghz2.antswlut < ARRAY_SIZE(b43_ntab_antswctl2g_r3)) | ||
3171 | ntab_upload_r3(dev, B43_NTAB_ANT_SW_CTL_R3, | ||
3172 | b43_ntab_antswctl2g_r3[sprom->fem.ghz2.antswlut]); | ||
3173 | else | ||
3174 | B43_WARN_ON(1); | ||
3175 | } | ||
3176 | |||
3177 | /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/InitTables */ | 3179 | /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/InitTables */ |
3178 | void b43_nphy_tables_init(struct b43_wldev *dev) | 3180 | void b43_nphy_tables_init(struct b43_wldev *dev) |
3179 | { | 3181 | { |
diff --git a/drivers/net/wireless/b43/tables_nphy.h b/drivers/net/wireless/b43/tables_nphy.h index df6c828e3a7e..9ff33adcff89 100644 --- a/drivers/net/wireless/b43/tables_nphy.h +++ b/drivers/net/wireless/b43/tables_nphy.h | |||
@@ -115,22 +115,22 @@ struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent( | |||
115 | #define B43_NTAB_NOISEVAR11_SIZE 256 | 115 | #define B43_NTAB_NOISEVAR11_SIZE 256 |
116 | #define B43_NTAB_C0_ESTPLT B43_NTAB8 (0x1A, 0x000) /* Estimate Power Lookup Table Core 0 */ | 116 | #define B43_NTAB_C0_ESTPLT B43_NTAB8 (0x1A, 0x000) /* Estimate Power Lookup Table Core 0 */ |
117 | #define B43_NTAB_C0_ESTPLT_SIZE 64 | 117 | #define B43_NTAB_C0_ESTPLT_SIZE 64 |
118 | #define B43_NTAB_C1_ESTPLT B43_NTAB8 (0x1B, 0x000) /* Estimate Power Lookup Table Core 1 */ | ||
119 | #define B43_NTAB_C1_ESTPLT_SIZE 64 | ||
120 | #define B43_NTAB_C0_ADJPLT B43_NTAB8 (0x1A, 0x040) /* Adjust Power Lookup Table Core 0 */ | 118 | #define B43_NTAB_C0_ADJPLT B43_NTAB8 (0x1A, 0x040) /* Adjust Power Lookup Table Core 0 */ |
121 | #define B43_NTAB_C0_ADJPLT_SIZE 128 | 119 | #define B43_NTAB_C0_ADJPLT_SIZE 128 |
122 | #define B43_NTAB_C1_ADJPLT B43_NTAB8 (0x1B, 0x040) /* Adjust Power Lookup Table Core 1 */ | ||
123 | #define B43_NTAB_C1_ADJPLT_SIZE 128 | ||
124 | #define B43_NTAB_C0_GAINCTL B43_NTAB32(0x1A, 0x0C0) /* Gain Control Lookup Table Core 0 */ | 120 | #define B43_NTAB_C0_GAINCTL B43_NTAB32(0x1A, 0x0C0) /* Gain Control Lookup Table Core 0 */ |
125 | #define B43_NTAB_C0_GAINCTL_SIZE 128 | 121 | #define B43_NTAB_C0_GAINCTL_SIZE 128 |
126 | #define B43_NTAB_C1_GAINCTL B43_NTAB32(0x1B, 0x0C0) /* Gain Control Lookup Table Core 1 */ | ||
127 | #define B43_NTAB_C1_GAINCTL_SIZE 128 | ||
128 | #define B43_NTAB_C0_IQLT B43_NTAB32(0x1A, 0x140) /* IQ Lookup Table Core 0 */ | 122 | #define B43_NTAB_C0_IQLT B43_NTAB32(0x1A, 0x140) /* IQ Lookup Table Core 0 */ |
129 | #define B43_NTAB_C0_IQLT_SIZE 128 | 123 | #define B43_NTAB_C0_IQLT_SIZE 128 |
130 | #define B43_NTAB_C1_IQLT B43_NTAB32(0x1B, 0x140) /* IQ Lookup Table Core 1 */ | ||
131 | #define B43_NTAB_C1_IQLT_SIZE 128 | ||
132 | #define B43_NTAB_C0_LOFEEDTH B43_NTAB16(0x1A, 0x1C0) /* Local Oscillator Feed Through Lookup Table Core 0 */ | 124 | #define B43_NTAB_C0_LOFEEDTH B43_NTAB16(0x1A, 0x1C0) /* Local Oscillator Feed Through Lookup Table Core 0 */ |
133 | #define B43_NTAB_C0_LOFEEDTH_SIZE 128 | 125 | #define B43_NTAB_C0_LOFEEDTH_SIZE 128 |
126 | #define B43_NTAB_C1_ESTPLT B43_NTAB8 (0x1B, 0x000) /* Estimate Power Lookup Table Core 1 */ | ||
127 | #define B43_NTAB_C1_ESTPLT_SIZE 64 | ||
128 | #define B43_NTAB_C1_ADJPLT B43_NTAB8 (0x1B, 0x040) /* Adjust Power Lookup Table Core 1 */ | ||
129 | #define B43_NTAB_C1_ADJPLT_SIZE 128 | ||
130 | #define B43_NTAB_C1_GAINCTL B43_NTAB32(0x1B, 0x0C0) /* Gain Control Lookup Table Core 1 */ | ||
131 | #define B43_NTAB_C1_GAINCTL_SIZE 128 | ||
132 | #define B43_NTAB_C1_IQLT B43_NTAB32(0x1B, 0x140) /* IQ Lookup Table Core 1 */ | ||
133 | #define B43_NTAB_C1_IQLT_SIZE 128 | ||
134 | #define B43_NTAB_C1_LOFEEDTH B43_NTAB16(0x1B, 0x1C0) /* Local Oscillator Feed Through Lookup Table Core 1 */ | 134 | #define B43_NTAB_C1_LOFEEDTH B43_NTAB16(0x1B, 0x1C0) /* Local Oscillator Feed Through Lookup Table Core 1 */ |
135 | #define B43_NTAB_C1_LOFEEDTH_SIZE 128 | 135 | #define B43_NTAB_C1_LOFEEDTH_SIZE 128 |
136 | 136 | ||
@@ -154,15 +154,17 @@ struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent( | |||
154 | #define B43_NTAB_CHANEST_R3 B43_NTAB32(22, 0) /* channel estimate */ | 154 | #define B43_NTAB_CHANEST_R3 B43_NTAB32(22, 0) /* channel estimate */ |
155 | #define B43_NTAB_FRAMELT_R3 B43_NTAB8(24, 0) /* frame lookup */ | 155 | #define B43_NTAB_FRAMELT_R3 B43_NTAB8(24, 0) /* frame lookup */ |
156 | #define B43_NTAB_C0_ESTPLT_R3 B43_NTAB8(26, 0) /* estimated power lookup 0 */ | 156 | #define B43_NTAB_C0_ESTPLT_R3 B43_NTAB8(26, 0) /* estimated power lookup 0 */ |
157 | #define B43_NTAB_C1_ESTPLT_R3 B43_NTAB8(27, 0) /* estimated power lookup 1 */ | ||
158 | #define B43_NTAB_C0_ADJPLT_R3 B43_NTAB8(26, 64) /* adjusted power lookup 0 */ | 157 | #define B43_NTAB_C0_ADJPLT_R3 B43_NTAB8(26, 64) /* adjusted power lookup 0 */ |
159 | #define B43_NTAB_C1_ADJPLT_R3 B43_NTAB8(27, 64) /* adjusted power lookup 1 */ | ||
160 | #define B43_NTAB_C0_GAINCTL_R3 B43_NTAB32(26, 192) /* gain control lookup 0 */ | 158 | #define B43_NTAB_C0_GAINCTL_R3 B43_NTAB32(26, 192) /* gain control lookup 0 */ |
161 | #define B43_NTAB_C1_GAINCTL_R3 B43_NTAB32(27, 192) /* gain control lookup 1 */ | ||
162 | #define B43_NTAB_C0_IQLT_R3 B43_NTAB32(26, 320) /* I/Q lookup 0 */ | 159 | #define B43_NTAB_C0_IQLT_R3 B43_NTAB32(26, 320) /* I/Q lookup 0 */ |
163 | #define B43_NTAB_C1_IQLT_R3 B43_NTAB32(27, 320) /* I/Q lookup 1 */ | ||
164 | #define B43_NTAB_C0_LOFEEDTH_R3 B43_NTAB16(26, 448) /* Local Oscillator Feed Through lookup 0 */ | 160 | #define B43_NTAB_C0_LOFEEDTH_R3 B43_NTAB16(26, 448) /* Local Oscillator Feed Through lookup 0 */ |
161 | #define B43_NTAB_C0_PAPD_COMP_R3 B43_NTAB16(26, 576) | ||
162 | #define B43_NTAB_C1_ESTPLT_R3 B43_NTAB8(27, 0) /* estimated power lookup 1 */ | ||
163 | #define B43_NTAB_C1_ADJPLT_R3 B43_NTAB8(27, 64) /* adjusted power lookup 1 */ | ||
164 | #define B43_NTAB_C1_GAINCTL_R3 B43_NTAB32(27, 192) /* gain control lookup 1 */ | ||
165 | #define B43_NTAB_C1_IQLT_R3 B43_NTAB32(27, 320) /* I/Q lookup 1 */ | ||
165 | #define B43_NTAB_C1_LOFEEDTH_R3 B43_NTAB16(27, 448) /* Local Oscillator Feed Through lookup 1 */ | 166 | #define B43_NTAB_C1_LOFEEDTH_R3 B43_NTAB16(27, 448) /* Local Oscillator Feed Through lookup 1 */ |
167 | #define B43_NTAB_C1_PAPD_COMP_R3 B43_NTAB16(27, 576) | ||
166 | 168 | ||
167 | #define B43_NTAB_TX_IQLO_CAL_LOFT_LADDER_40_SIZE 18 | 169 | #define B43_NTAB_TX_IQLO_CAL_LOFT_LADDER_40_SIZE 18 |
168 | #define B43_NTAB_TX_IQLO_CAL_LOFT_LADDER_20_SIZE 18 | 170 | #define B43_NTAB_TX_IQLO_CAL_LOFT_LADDER_20_SIZE 18 |