Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Staging: winbond: reg.c Coding style fixes

I fixed all problems reported by checkpatch.pl except some
(a lot of) long lines and some printk:s.
I removed "commented away" code and version comments.

Signed-off-by: Lars Lindley <lindley@coyote.org>
Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
Acked-by: Pavel Machek <pavel@ucw.cz>
Acked-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

authored by

Lars Lindley and committed by
Greg Kroah-Hartman
fa6896f2 152f1bc0

+1823 -2114
+1823 -2114
drivers/staging/winbond/reg.c
··· 1 1 #include "sysdef.h" 2 2 #include "wbhal_f.h" 3 3 4 - /////////////////////////////////////////////////////////////////////////////////////////////////// 5 - // Original Phy.h 6 - //***************************************************************************** 7 - 8 - /***************************************************************************** 9 - ; For MAXIM2825/6/7 Ver. 331 or more 10 - ; Edited by Tiger, Sep-17-2003 11 - ; revised by Ben, Sep-18-2003 12 - 13 - 0x00 0x000a2 14 - 0x01 0x21cc0 15 - ;0x02 0x13802 16 - 0x02 0x1383a 17 - 18 - ;channe1 01 ; 0x03 0x30142 ; 0x04 0x0b333; 19 - ;channe1 02 ;0x03 0x32141 ;0x04 0x08444; 20 - ;channe1 03 ;0x03 0x32143 ;0x04 0x0aeee; 21 - ;channe1 04 ;0x03 0x32142 ;0x04 0x0b333; 22 - ;channe1 05 ;0x03 0x31141 ;0x04 0x08444; 23 - ;channe1 06 ; 24 - 0x03 0x31143; 25 - 0x04 0x0aeee; 26 - ;channe1 07 ;0x03 0x31142 ;0x04 0x0b333; 27 - ;channe1 08 ;0x03 0x33141 ;0x04 0x08444; 28 - ;channe1 09 ;0x03 0x33143 ;0x04 0x0aeee; 29 - ;channe1 10 ;0x03 0x33142 ;0x04 0x0b333; 30 - ;channe1 11 ;0x03 0x30941 ;0x04 0x08444; 31 - ;channe1 12 ;0x03 0x30943 ;0x04 0x0aeee; 32 - ;channe1 13 ;0x03 0x30942 ;0x04 0x0b333; 33 - 34 - 0x05 0x28986 35 - 0x06 0x18008 36 - 0x07 0x38400 37 - 0x08 0x05100; 100 Hz DC 38 - ;0x08 0x05900; 30 KHz DC 39 - 0x09 0x24f08 40 - 0x0a 0x17e00, 0x17ea0 41 - 0x0b 0x37d80 42 - 0x0c 0x0c900 // 0x0ca00 (lager power 9db than 0x0c000), 0x0c000 43 - *****************************************************************************/ 44 - // MAX2825 (pure b/g) 45 - u32 max2825_rf_data[] = 46 - { 47 - (0x00<<18)|0x000a2, 48 - (0x01<<18)|0x21cc0, 49 - (0x02<<18)|0x13806, 50 - (0x03<<18)|0x30142, 51 - (0x04<<18)|0x0b333, 52 - (0x05<<18)|0x289A6, 53 - (0x06<<18)|0x18008, 54 - (0x07<<18)|0x38000, 55 - (0x08<<18)|0x05100, 56 - (0x09<<18)|0x24f08, 57 - (0x0A<<18)|0x14000, 58 - (0x0B<<18)|0x37d80, 59 - (0x0C<<18)|0x0c100 // 11a: 0x0c300, 11g: 0x0c100 60 - }; 61 - 62 - u32 max2825_channel_data_24[][3] = 63 - { 64 - {(0x03<<18)|0x30142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 01 65 - {(0x03<<18)|0x32141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 02 66 - {(0x03<<18)|0x32143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 03 67 - {(0x03<<18)|0x32142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 04 68 - {(0x03<<18)|0x31141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 05 69 - {(0x03<<18)|0x31143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 06 70 - {(0x03<<18)|0x31142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 07 71 - {(0x03<<18)|0x33141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 08 72 - {(0x03<<18)|0x33143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 09 73 - {(0x03<<18)|0x33142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 10 74 - {(0x03<<18)|0x30941, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 11 75 - {(0x03<<18)|0x30943, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 12 76 - {(0x03<<18)|0x30942, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 13 77 - {(0x03<<18)|0x32941, (0x04<<18)|0x09999, (0x05<<18)|0x289A6} // 14 (2484MHz) hhmodify 78 - }; 79 - 80 - u32 max2825_power_data_24[] = {(0x0C<<18)|0x0c000, (0x0C<<18)|0x0c100}; 81 - 82 - /****************************************************************************/ 83 - // MAX2827 (a/b/g) 84 - u32 max2827_rf_data[] = 85 - { 86 - (0x00<<18)|0x000a2, 87 - (0x01<<18)|0x21cc0, 88 - (0x02<<18)|0x13806, 89 - (0x03<<18)|0x30142, 90 - (0x04<<18)|0x0b333, 91 - (0x05<<18)|0x289A6, 92 - (0x06<<18)|0x18008, 93 - (0x07<<18)|0x38000, 94 - (0x08<<18)|0x05100, 95 - (0x09<<18)|0x24f08, 96 - (0x0A<<18)|0x14000, 97 - (0x0B<<18)|0x37d80, 98 - (0x0C<<18)|0x0c100 // 11a: 0x0c300, 11g: 0x0c100 99 - }; 100 - 101 - u32 max2827_channel_data_24[][3] = 102 - { 103 - {(0x03<<18)|0x30142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 01 104 - {(0x03<<18)|0x32141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 02 105 - {(0x03<<18)|0x32143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 03 106 - {(0x03<<18)|0x32142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 04 107 - {(0x03<<18)|0x31141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 05 108 - {(0x03<<18)|0x31143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 06 109 - {(0x03<<18)|0x31142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 07 110 - {(0x03<<18)|0x33141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 08 111 - {(0x03<<18)|0x33143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 09 112 - {(0x03<<18)|0x33142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 10 113 - {(0x03<<18)|0x30941, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 11 114 - {(0x03<<18)|0x30943, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 12 115 - {(0x03<<18)|0x30942, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 13 116 - {(0x03<<18)|0x32941, (0x04<<18)|0x09999, (0x05<<18)|0x289A6} // 14 (2484MHz) hhmodify 117 - }; 118 - 119 - u32 max2827_channel_data_50[][3] = 120 - { 121 - {(0x03<<18)|0x33cc3, (0x04<<18)|0x08ccc, (0x05<<18)|0x2A9A6}, // channel 36 122 - {(0x03<<18)|0x302c0, (0x04<<18)|0x08000, (0x05<<18)|0x2A9A6}, // channel 40 123 - {(0x03<<18)|0x302c2, (0x04<<18)|0x0b333, (0x05<<18)|0x2A9A6}, // channel 44 124 - {(0x03<<18)|0x322c1, (0x04<<18)|0x09999, (0x05<<18)|0x2A9A6}, // channel 48 125 - {(0x03<<18)|0x312c1, (0x04<<18)|0x0a666, (0x05<<18)|0x2A9A6}, // channel 52 126 - {(0x03<<18)|0x332c3, (0x04<<18)|0x08ccc, (0x05<<18)|0x2A9A6}, // channel 56 127 - {(0x03<<18)|0x30ac0, (0x04<<18)|0x08000, (0x05<<18)|0x2A9A6}, // channel 60 128 - {(0x03<<18)|0x30ac2, (0x04<<18)|0x0b333, (0x05<<18)|0x2A9A6} // channel 64 129 - }; 130 - 131 - u32 max2827_power_data_24[] = {(0x0C<<18)|0x0C000, (0x0C<<18)|0x0D600, (0x0C<<18)|0x0C100}; 132 - u32 max2827_power_data_50[] = {(0x0C<<18)|0x0C400, (0x0C<<18)|0x0D500, (0x0C<<18)|0x0C300}; 133 - 134 - /****************************************************************************/ 135 - // MAX2828 (a/b/g) 136 - u32 max2828_rf_data[] = 137 - { 138 - (0x00<<18)|0x000a2, 139 - (0x01<<18)|0x21cc0, 140 - (0x02<<18)|0x13806, 141 - (0x03<<18)|0x30142, 142 - (0x04<<18)|0x0b333, 143 - (0x05<<18)|0x289A6, 144 - (0x06<<18)|0x18008, 145 - (0x07<<18)|0x38000, 146 - (0x08<<18)|0x05100, 147 - (0x09<<18)|0x24f08, 148 - (0x0A<<18)|0x14000, 149 - (0x0B<<18)|0x37d80, 150 - (0x0C<<18)|0x0c100 // 11a: 0x0c300, 11g: 0x0c100 151 - }; 152 - 153 - u32 max2828_channel_data_24[][3] = 154 - { 155 - {(0x03<<18)|0x30142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 01 156 - {(0x03<<18)|0x32141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 02 157 - {(0x03<<18)|0x32143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 03 158 - {(0x03<<18)|0x32142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 04 159 - {(0x03<<18)|0x31141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 05 160 - {(0x03<<18)|0x31143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 06 161 - {(0x03<<18)|0x31142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 07 162 - {(0x03<<18)|0x33141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 08 163 - {(0x03<<18)|0x33143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 09 164 - {(0x03<<18)|0x33142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 10 165 - {(0x03<<18)|0x30941, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 11 166 - {(0x03<<18)|0x30943, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 12 167 - {(0x03<<18)|0x30942, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 13 168 - {(0x03<<18)|0x32941, (0x04<<18)|0x09999, (0x05<<18)|0x289A6} // 14 (2484MHz) hhmodify 169 - }; 170 - 171 - u32 max2828_channel_data_50[][3] = 172 - { 173 - {(0x03<<18)|0x33cc3, (0x04<<18)|0x08ccc, (0x05<<18)|0x289A6}, // channel 36 174 - {(0x03<<18)|0x302c0, (0x04<<18)|0x08000, (0x05<<18)|0x289A6}, // channel 40 175 - {(0x03<<18)|0x302c2, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channel 44 176 - {(0x03<<18)|0x322c1, (0x04<<18)|0x09999, (0x05<<18)|0x289A6}, // channel 48 177 - {(0x03<<18)|0x312c1, (0x04<<18)|0x0a666, (0x05<<18)|0x289A6}, // channel 52 178 - {(0x03<<18)|0x332c3, (0x04<<18)|0x08ccc, (0x05<<18)|0x289A6}, // channel 56 179 - {(0x03<<18)|0x30ac0, (0x04<<18)|0x08000, (0x05<<18)|0x289A6}, // channel 60 180 - {(0x03<<18)|0x30ac2, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6} // channel 64 181 - }; 182 - 183 - u32 max2828_power_data_24[] = {(0x0C<<18)|0x0c000, (0x0C<<18)|0x0c100}; 184 - u32 max2828_power_data_50[] = {(0x0C<<18)|0x0c000, (0x0C<<18)|0x0c100}; 185 - 186 - /****************************************************************************/ 187 - // LA20040728 kevin 188 - // MAX2829 (a/b/g) 189 - u32 max2829_rf_data[] = 190 - { 191 - (0x00<<18)|0x000a2, 192 - (0x01<<18)|0x23520, 193 - (0x02<<18)|0x13802, 194 - (0x03<<18)|0x30142, 195 - (0x04<<18)|0x0b333, 196 - (0x05<<18)|0x28906, 197 - (0x06<<18)|0x18008, 198 - (0x07<<18)|0x3B500, 199 - (0x08<<18)|0x05100, 200 - (0x09<<18)|0x24f08, 201 - (0x0A<<18)|0x14000, 202 - (0x0B<<18)|0x37d80, 203 - (0x0C<<18)|0x0F300 //TXVGA=51, (MAX-6 dB) 204 - }; 205 - 206 - u32 max2829_channel_data_24[][3] = 207 - { 208 - {(3<<18)|0x30142, (4<<18)|0x0b333, (5<<18)|0x289C6}, // 01 (2412MHz) 209 - {(3<<18)|0x32141, (4<<18)|0x08444, (5<<18)|0x289C6}, // 02 (2417MHz) 210 - {(3<<18)|0x32143, (4<<18)|0x0aeee, (5<<18)|0x289C6}, // 03 (2422MHz) 211 - {(3<<18)|0x32142, (4<<18)|0x0b333, (5<<18)|0x289C6}, // 04 (2427MHz) 212 - {(3<<18)|0x31141, (4<<18)|0x08444, (5<<18)|0x289C6}, // 05 (2432MHz) 213 - {(3<<18)|0x31143, (4<<18)|0x0aeee, (5<<18)|0x289C6}, // 06 (2437MHz) 214 - {(3<<18)|0x31142, (4<<18)|0x0b333, (5<<18)|0x289C6}, // 07 (2442MHz) 215 - {(3<<18)|0x33141, (4<<18)|0x08444, (5<<18)|0x289C6}, // 08 (2447MHz) 216 - {(3<<18)|0x33143, (4<<18)|0x0aeee, (5<<18)|0x289C6}, // 09 (2452MHz) 217 - {(3<<18)|0x33142, (4<<18)|0x0b333, (5<<18)|0x289C6}, // 10 (2457MHz) 218 - {(3<<18)|0x30941, (4<<18)|0x08444, (5<<18)|0x289C6}, // 11 (2462MHz) 219 - {(3<<18)|0x30943, (4<<18)|0x0aeee, (5<<18)|0x289C6}, // 12 (2467MHz) 220 - {(3<<18)|0x30942, (4<<18)|0x0b333, (5<<18)|0x289C6}, // 13 (2472MHz) 221 - {(3<<18)|0x32941, (4<<18)|0x09999, (5<<18)|0x289C6}, // 14 (2484MHz) hh-modify 222 - }; 223 - 224 - u32 max2829_channel_data_50[][4] = 225 - { 226 - {36, (3<<18)|0x33cc3, (4<<18)|0x08ccc, (5<<18)|0x2A946}, // 36 (5.180GHz) 227 - {40, (3<<18)|0x302c0, (4<<18)|0x08000, (5<<18)|0x2A946}, // 40 (5.200GHz) 228 - {44, (3<<18)|0x302c2, (4<<18)|0x0b333, (5<<18)|0x2A946}, // 44 (5.220GHz) 229 - {48, (3<<18)|0x322c1, (4<<18)|0x09999, (5<<18)|0x2A946}, // 48 (5.240GHz) 230 - {52, (3<<18)|0x312c1, (4<<18)|0x0a666, (5<<18)|0x2A946}, // 52 (5.260GHz) 231 - {56, (3<<18)|0x332c3, (4<<18)|0x08ccc, (5<<18)|0x2A946}, // 56 (5.280GHz) 232 - {60, (3<<18)|0x30ac0, (4<<18)|0x08000, (5<<18)|0x2A946}, // 60 (5.300GHz) 233 - {64, (3<<18)|0x30ac2, (4<<18)|0x0b333, (5<<18)|0x2A946}, // 64 (5.320GHz) 234 - 235 - {100, (3<<18)|0x30ec0, (4<<18)|0x08000, (5<<18)|0x2A9C6}, // 100 (5.500GHz) 236 - {104, (3<<18)|0x30ec2, (4<<18)|0x0b333, (5<<18)|0x2A9C6}, // 104 (5.520GHz) 237 - {108, (3<<18)|0x32ec1, (4<<18)|0x09999, (5<<18)|0x2A9C6}, // 108 (5.540GHz) 238 - {112, (3<<18)|0x31ec1, (4<<18)|0x0a666, (5<<18)|0x2A9C6}, // 112 (5.560GHz) 239 - {116, (3<<18)|0x33ec3, (4<<18)|0x08ccc, (5<<18)|0x2A9C6}, // 116 (5.580GHz) 240 - {120, (3<<18)|0x301c0, (4<<18)|0x08000, (5<<18)|0x2A9C6}, // 120 (5.600GHz) 241 - {124, (3<<18)|0x301c2, (4<<18)|0x0b333, (5<<18)|0x2A9C6}, // 124 (5.620GHz) 242 - {128, (3<<18)|0x321c1, (4<<18)|0x09999, (5<<18)|0x2A9C6}, // 128 (5.640GHz) 243 - {132, (3<<18)|0x311c1, (4<<18)|0x0a666, (5<<18)|0x2A9C6}, // 132 (5.660GHz) 244 - {136, (3<<18)|0x331c3, (4<<18)|0x08ccc, (5<<18)|0x2A9C6}, // 136 (5.680GHz) 245 - {140, (3<<18)|0x309c0, (4<<18)|0x08000, (5<<18)|0x2A9C6}, // 140 (5.700GHz) 246 - 247 - {149, (3<<18)|0x329c2, (4<<18)|0x0b333, (5<<18)|0x2A9C6}, // 149 (5.745GHz) 248 - {153, (3<<18)|0x319c1, (4<<18)|0x09999, (5<<18)|0x2A9C6}, // 153 (5.765GHz) 249 - {157, (3<<18)|0x339c1, (4<<18)|0x0a666, (5<<18)|0x2A9C6}, // 157 (5.785GHz) 250 - {161, (3<<18)|0x305c3, (4<<18)|0x08ccc, (5<<18)|0x2A9C6}, // 161 (5.805GHz) 251 - 252 - // Japan 253 - { 184, (3<<18)|0x308c2, (4<<18)|0x0b333, (5<<18)|0x2A946}, // 184 (4.920GHz) 254 - { 188, (3<<18)|0x328c1, (4<<18)|0x09999, (5<<18)|0x2A946}, // 188 (4.940GHz) 255 - { 192, (3<<18)|0x318c1, (4<<18)|0x0a666, (5<<18)|0x2A946}, // 192 (4.960GHz) 256 - { 196, (3<<18)|0x338c3, (4<<18)|0x08ccc, (5<<18)|0x2A946}, // 196 (4.980GHz) 257 - { 8, (3<<18)|0x324c1, (4<<18)|0x09999, (5<<18)|0x2A946}, // 8 (5.040GHz) 258 - { 12, (3<<18)|0x314c1, (4<<18)|0x0a666, (5<<18)|0x2A946}, // 12 (5.060GHz) 259 - { 16, (3<<18)|0x334c3, (4<<18)|0x08ccc, (5<<18)|0x2A946}, // 16 (5.080GHz) 260 - { 34, (3<<18)|0x31cc2, (4<<18)|0x0b333, (5<<18)|0x2A946}, // 34 (5.170GHz) 261 - { 38, (3<<18)|0x33cc1, (4<<18)|0x09999, (5<<18)|0x2A946}, // 38 (5.190GHz) 262 - { 42, (3<<18)|0x302c1, (4<<18)|0x0a666, (5<<18)|0x2A946}, // 42 (5.210GHz) 263 - { 46, (3<<18)|0x322c3, (4<<18)|0x08ccc, (5<<18)|0x2A946}, // 46 (5.230GHz) 264 - }; 265 - 266 - /***************************************************************************** 267 - ; For MAXIM2825/6/7 Ver. 317 or less 268 - ; Edited by Tiger, Sep-17-2003 for 2.4Ghz channels 269 - ; Updated by Tiger, Sep-22-2003 for 5.0Ghz channels 270 - ; Corrected by Tiger, Sep-23-2003, for 0x03 and 0x04 of 5.0Ghz channels 271 - 272 - 0x00 0x00080 273 - 0x01 0x214c0 274 - 0x02 0x13802 275 - 276 - ;2.4GHz Channels 277 - ;channe1 01 (2.412GHz); 0x03 0x30143 ;0x04 0x0accc 278 - ;channe1 02 (2.417GHz); 0x03 0x32140 ;0x04 0x09111 279 - ;channe1 03 (2.422GHz); 0x03 0x32142 ;0x04 0x0bbbb 280 - ;channe1 04 (2.427GHz); 0x03 0x32143 ;0x04 0x0accc 281 - ;channe1 05 (2.432GHz); 0x03 0x31140 ;0x04 0x09111 282 - ;channe1 06 (2.437GHz); 0x03 0x31142 ;0x04 0x0bbbb 283 - ;channe1 07 (2.442GHz); 0x03 0x31143 ;0x04 0x0accc 284 - ;channe1 08 (2.447GHz); 0x03 0x33140 ;0x04 0x09111 285 - ;channe1 09 (2.452GHz); 0x03 0x33142 ;0x04 0x0bbbb 286 - ;channe1 10 (2.457GHz); 0x03 0x33143 ;0x04 0x0accc 287 - ;channe1 11 (2.462GHz); 0x03 0x30940 ;0x04 0x09111 288 - ;channe1 12 (2.467GHz); 0x03 0x30942 ;0x04 0x0bbbb 289 - ;channe1 13 (2.472GHz); 0x03 0x30943 ;0x04 0x0accc 290 - 291 - ;5.0Ghz Channels 292 - ;channel 36 (5.180GHz); 0x03 0x33cc0 ;0x04 0x0b333 293 - ;channel 40 (5.200GHz); 0x03 0x302c0 ;0x04 0x08000 294 - ;channel 44 (5.220GHz); 0x03 0x302c2 ;0x04 0x0b333 295 - ;channel 48 (5.240GHz); 0x03 0x322c1 ;0x04 0x09999 296 - ;channel 52 (5.260GHz); 0x03 0x312c1 ;0x04 0x0a666 297 - ;channel 56 (5.280GHz); 0x03 0x332c3 ;0x04 0x08ccc 298 - ;channel 60 (5.300GHz); 0x03 0x30ac0 ;0x04 0x08000 299 - ;channel 64 (5.320GHz); 0x03 0x30ac2 ;0x04 0x08333 300 - 301 - ;2.4GHz band ;0x05 0x28986; 302 - ;5.0GHz band 303 - 0x05 0x2a986 304 - 305 - 0x06 0x18008 306 - 0x07 0x38400 307 - 0x08 0x05108 308 - 0x09 0x27ff8 309 - 0x0a 0x14000 310 - 0x0b 0x37f99 311 - 0x0c 0x0c000 312 - *****************************************************************************/ 313 - u32 maxim_317_rf_data[] = 314 - { 315 - (0x00<<18)|0x000a2, 316 - (0x01<<18)|0x214c0, 317 - (0x02<<18)|0x13802, 318 - (0x03<<18)|0x30143, 319 - (0x04<<18)|0x0accc, 320 - (0x05<<18)|0x28986, 321 - (0x06<<18)|0x18008, 322 - (0x07<<18)|0x38400, 323 - (0x08<<18)|0x05108, 324 - (0x09<<18)|0x27ff8, 325 - (0x0A<<18)|0x14000, 326 - (0x0B<<18)|0x37f99, 327 - (0x0C<<18)|0x0c000 328 - }; 329 - 330 - u32 maxim_317_channel_data_24[][3] = 331 - { 332 - {(0x03<<18)|0x30143, (0x04<<18)|0x0accc, (0x05<<18)|0x28986}, // channe1 01 333 - {(0x03<<18)|0x32140, (0x04<<18)|0x09111, (0x05<<18)|0x28986}, // channe1 02 334 - {(0x03<<18)|0x32142, (0x04<<18)|0x0bbbb, (0x05<<18)|0x28986}, // channe1 03 335 - {(0x03<<18)|0x32143, (0x04<<18)|0x0accc, (0x05<<18)|0x28986}, // channe1 04 336 - {(0x03<<18)|0x31140, (0x04<<18)|0x09111, (0x05<<18)|0x28986}, // channe1 05 337 - {(0x03<<18)|0x31142, (0x04<<18)|0x0bbbb, (0x05<<18)|0x28986}, // channe1 06 338 - {(0x03<<18)|0x31143, (0x04<<18)|0x0accc, (0x05<<18)|0x28986}, // channe1 07 339 - {(0x03<<18)|0x33140, (0x04<<18)|0x09111, (0x05<<18)|0x28986}, // channe1 08 340 - {(0x03<<18)|0x33142, (0x04<<18)|0x0bbbb, (0x05<<18)|0x28986}, // channe1 09 341 - {(0x03<<18)|0x33143, (0x04<<18)|0x0accc, (0x05<<18)|0x28986}, // channe1 10 342 - {(0x03<<18)|0x30940, (0x04<<18)|0x09111, (0x05<<18)|0x28986}, // channe1 11 343 - {(0x03<<18)|0x30942, (0x04<<18)|0x0bbbb, (0x05<<18)|0x28986}, // channe1 12 344 - {(0x03<<18)|0x30943, (0x04<<18)|0x0accc, (0x05<<18)|0x28986} // channe1 13 345 - }; 346 - 347 - u32 maxim_317_channel_data_50[][3] = 348 - { 349 - {(0x03<<18)|0x33cc0, (0x04<<18)|0x0b333, (0x05<<18)|0x2a986}, // channel 36 350 - {(0x03<<18)|0x302c0, (0x04<<18)|0x08000, (0x05<<18)|0x2a986}, // channel 40 351 - {(0x03<<18)|0x302c3, (0x04<<18)|0x0accc, (0x05<<18)|0x2a986}, // channel 44 352 - {(0x03<<18)|0x322c1, (0x04<<18)|0x09666, (0x05<<18)|0x2a986}, // channel 48 353 - {(0x03<<18)|0x312c2, (0x04<<18)|0x09999, (0x05<<18)|0x2a986}, // channel 52 354 - {(0x03<<18)|0x332c0, (0x04<<18)|0x0b333, (0x05<<18)|0x2a99e}, // channel 56 355 - {(0x03<<18)|0x30ac0, (0x04<<18)|0x08000, (0x05<<18)|0x2a99e}, // channel 60 356 - {(0x03<<18)|0x30ac3, (0x04<<18)|0x0accc, (0x05<<18)|0x2a99e} // channel 64 357 - }; 358 - 359 - u32 maxim_317_power_data_24[] = {(0x0C<<18)|0x0c000, (0x0C<<18)|0x0c100}; 360 - u32 maxim_317_power_data_50[] = {(0x0C<<18)|0x0c000, (0x0C<<18)|0x0c100}; 361 - 362 - /***************************************************************************** 363 - ;;AL2230 MP (Mass Production Version) 364 - ;;RF Registers Setting for Airoha AL2230 silicon after June 1st, 2004 365 - ;;Updated by Tiger Huang (June 1st, 2004) 366 - ;;20-bit length and LSB first 367 - 368 - ;;Ch01 (2412MHz) ;0x00 0x09EFC ;0x01 0x8CCCC; 369 - ;;Ch02 (2417MHz) ;0x00 0x09EFC ;0x01 0x8CCCD; 370 - ;;Ch03 (2422MHz) ;0x00 0x09E7C ;0x01 0x8CCCC; 371 - ;;Ch04 (2427MHz) ;0x00 0x09E7C ;0x01 0x8CCCD; 372 - ;;Ch05 (2432MHz) ;0x00 0x05EFC ;0x01 0x8CCCC; 373 - ;;Ch06 (2437MHz) ;0x00 0x05EFC ;0x01 0x8CCCD; 374 - ;;Ch07 (2442MHz) ;0x00 0x05E7C ;0x01 0x8CCCC; 375 - ;;Ch08 (2447MHz) ;0x00 0x05E7C ;0x01 0x8CCCD; 376 - ;;Ch09 (2452MHz) ;0x00 0x0DEFC ;0x01 0x8CCCC; 377 - ;;Ch10 (2457MHz) ;0x00 0x0DEFC ;0x01 0x8CCCD; 378 - ;;Ch11 (2462MHz) ;0x00 0x0DE7C ;0x01 0x8CCCC; 379 - ;;Ch12 (2467MHz) ;0x00 0x0DE7C ;0x01 0x8CCCD; 380 - ;;Ch13 (2472MHz) ;0x00 0x03EFC ;0x01 0x8CCCC; 381 - ;;Ch14 (2484Mhz) ;0x00 0x03E7C ;0x01 0x86666; 382 - 383 - 0x02 0x401D8; RXDCOC BW 100Hz for RXHP low 384 - ;;0x02 0x481DC; RXDCOC BW 30Khz for RXHP low 385 - 386 - 0x03 0xCFFF0 387 - 0x04 0x23800 388 - 0x05 0xA3B72 389 - 0x06 0x6DA01 390 - 0x07 0xE1688 391 - 0x08 0x11600 392 - 0x09 0x99E02 393 - 0x0A 0x5DDB0 394 - 0x0B 0xD9900 395 - 0x0C 0x3FFBD 396 - 0x0D 0xB0000 397 - 0x0F 0xF00A0 398 - 399 - ;RF Calibration for Airoha AL2230 400 - ;Edit by Ben Chang (01/30/04) 401 - ;Updated by Tiger Huang (03/03/04) 402 - 0x0f 0xf00a0 ; Initial Setting 403 - 0x0f 0xf00b0 ; Activate TX DCC 404 - 0x0f 0xf02a0 ; Activate Phase Calibration 405 - 0x0f 0xf00e0 ; Activate Filter RC Calibration 406 - 0x0f 0xf00a0 ; Restore Initial Setting 407 - *****************************************************************************/ 408 - 409 - u32 al2230_rf_data[] = 410 - { 411 - (0x00<<20)|0x09EFC, 412 - (0x01<<20)|0x8CCCC, 413 - (0x02<<20)|0x40058,// 20060627 Anson 0x401D8, 414 - (0x03<<20)|0xCFFF0, 415 - (0x04<<20)|0x24100,// 20060627 Anson 0x23800, 416 - (0x05<<20)|0xA3B2F,// 20060627 Anson 0xA3B72 417 - (0x06<<20)|0x6DA01, 418 - (0x07<<20)|0xE3628,// 20060627 Anson 0xE1688, 419 - (0x08<<20)|0x11600, 420 - (0x09<<20)|0x9DC02,// 20060627 Anosn 0x97602,//0x99E02, //0x9AE02 421 - (0x0A<<20)|0x5ddb0, // 941206 For QCOM interference 0x588b0,//0x5DDB0, 940601 adj 0x5aa30 for bluetooth 422 - (0x0B<<20)|0xD9900, 423 - (0x0C<<20)|0x3FFBD, 424 - (0x0D<<20)|0xB0000, 425 - (0x0F<<20)|0xF01A0 // 20060627 Anson 0xF00A0 426 - }; 427 - 428 - u32 al2230s_rf_data[] = 429 - { 430 - (0x00<<20)|0x09EFC, 431 - (0x01<<20)|0x8CCCC, 432 - (0x02<<20)|0x40058,// 20060419 0x401D8, 433 - (0x03<<20)|0xCFFF0, 434 - (0x04<<20)|0x24100,// 20060419 0x23800, 435 - (0x05<<20)|0xA3B2F,// 20060419 0xA3B72, 436 - (0x06<<20)|0x6DA01, 437 - (0x07<<20)|0xE3628,// 20060419 0xE1688, 438 - (0x08<<20)|0x11600, 439 - (0x09<<20)|0x9DC02,// 20060419 0x97602,//0x99E02, //0x9AE02 440 - (0x0A<<20)|0x5DDB0,// 941206 For QCOM interference 0x588b0,//0x5DDB0, 940601 adj 0x5aa30 for bluetooth 441 - (0x0B<<20)|0xD9900, 442 - (0x0C<<20)|0x3FFBD, 443 - (0x0D<<20)|0xB0000, 444 - (0x0F<<20)|0xF01A0 // 20060419 0xF00A0 445 - }; 446 - 447 - u32 al2230_channel_data_24[][2] = 448 - { 449 - {(0x00<<20)|0x09EFC, (0x01<<20)|0x8CCCC}, // channe1 01 450 - {(0x00<<20)|0x09EFC, (0x01<<20)|0x8CCCD}, // channe1 02 451 - {(0x00<<20)|0x09E7C, (0x01<<20)|0x8CCCC}, // channe1 03 452 - {(0x00<<20)|0x09E7C, (0x01<<20)|0x8CCCD}, // channe1 04 453 - {(0x00<<20)|0x05EFC, (0x01<<20)|0x8CCCC}, // channe1 05 454 - {(0x00<<20)|0x05EFC, (0x01<<20)|0x8CCCD}, // channe1 06 455 - {(0x00<<20)|0x05E7C, (0x01<<20)|0x8CCCC}, // channe1 07 456 - {(0x00<<20)|0x05E7C, (0x01<<20)|0x8CCCD}, // channe1 08 457 - {(0x00<<20)|0x0DEFC, (0x01<<20)|0x8CCCC}, // channe1 09 458 - {(0x00<<20)|0x0DEFC, (0x01<<20)|0x8CCCD}, // channe1 10 459 - {(0x00<<20)|0x0DE7C, (0x01<<20)|0x8CCCC}, // channe1 11 460 - {(0x00<<20)|0x0DE7C, (0x01<<20)|0x8CCCD}, // channe1 12 461 - {(0x00<<20)|0x03EFC, (0x01<<20)|0x8CCCC}, // channe1 13 462 - {(0x00<<20)|0x03E7C, (0x01<<20)|0x86666} // channe1 14 463 - }; 464 - 465 - // Current setting. u32 airoha_power_data_24[] = {(0x09<<20)|0x90202, (0x09<<20)|0x96602, (0x09<<20)|0x97602}; 466 - #define AIROHA_TXVGA_LOW_INDEX 31 // Index for 0x90202 467 - #define AIROHA_TXVGA_MIDDLE_INDEX 12 // Index for 0x96602 468 - #define AIROHA_TXVGA_HIGH_INDEX 8 // Index for 0x97602 1.0.24.0 1.0.28.0 469 4 /* 470 - u32 airoha_power_data_24[] = 471 - { 472 - 0x9FE02, // Max - 0 dB 473 - 0x9BE02, // Max - 1 dB 474 - 0x9DE02, // Max - 2 dB 475 - 0x99E02, // Max - 3 dB 476 - 0x9EE02, // Max - 4 dB 477 - 0x9AE02, // Max - 5 dB 478 - 0x9CE02, // Max - 6 dB 479 - 0x98E02, // Max - 7 dB 480 - 0x97602, // Max - 8 dB 481 - 0x93602, // Max - 9 dB 482 - 0x95602, // Max - 10 dB 483 - 0x91602, // Max - 11 dB 484 - 0x96602, // Max - 12 dB 485 - 0x92602, // Max - 13 dB 486 - 0x94602, // Max - 14 dB 487 - 0x90602, // Max - 15 dB 488 - 0x97A02, // Max - 16 dB 489 - 0x93A02, // Max - 17 dB 490 - 0x95A02, // Max - 18 dB 491 - 0x91A02, // Max - 19 dB 492 - 0x96A02, // Max - 20 dB 493 - 0x92A02, // Max - 21 dB 494 - 0x94A02, // Max - 22 dB 495 - 0x90A02, // Max - 23 dB 496 - 0x97202, // Max - 24 dB 497 - 0x93202, // Max - 25 dB 498 - 0x95202, // Max - 26 dB 499 - 0x91202, // Max - 27 dB 500 - 0x96202, // Max - 28 dB 501 - 0x92202, // Max - 29 dB 502 - 0x94202, // Max - 30 dB 503 - 0x90202 // Max - 31 dB 504 - }; 505 - */ 5 + * ==================================================== 6 + * Original Phy.h 7 + * ==================================================== 8 + */ 506 9 507 - // 20040927 1.1.69.1000 ybjiang 508 - // from John 509 - u32 al2230_txvga_data[][2] = 510 - { 511 - //value , index 10 + /* 11 + * ==================================================== 12 + * For MAXIM2825/6/7 Ver. 331 or more 13 + * 14 + * 0x00 0x000a2 15 + * 0x01 0x21cc0 16 + * 0x02 0x13802 17 + * 0x02 0x1383a 18 + * 19 + * channe1 01 ; 0x03 0x30142 ; 0x04 0x0b333; 20 + * channe1 02 ; 0x03 0x32141 ; 0x04 0x08444; 21 + * channe1 03 ; 0x03 0x32143 ; 0x04 0x0aeee; 22 + * channe1 04 ; 0x03 0x32142 ; 0x04 0x0b333; 23 + * channe1 05 ; 0x03 0x31141 ; 0x04 0x08444; 24 + * channe1 06 ; 0x03 0x31143 ; 0x04 0x0aeee; 25 + * channe1 07 ; 0x03 0x31142 ; 0x04 0x0b333; 26 + * channe1 08 ; 0x03 0x33141 ; 0x04 0x08444; 27 + * channe1 09 ; 0x03 0x33143 ; 0x04 0x0aeee; 28 + * channe1 10 ; 0x03 0x33142 ; 0x04 0x0b333; 29 + * channe1 11 ; 0x03 0x30941 ; 0x04 0x08444; 30 + * channe1 12 ; 0x03 0x30943 ; 0x04 0x0aeee; 31 + * channe1 13 ; 0x03 0x30942 ; 0x04 0x0b333; 32 + * 33 + * 0x05 0x28986 34 + * 0x06 0x18008 35 + * 0x07 0x38400 36 + * 0x08 0x05100; 100 Hz DC 37 + * 0x08 0x05900; 30 KHz DC 38 + * 0x09 0x24f08 39 + * 0x0a 0x17e00, 0x17ea0 40 + * 0x0b 0x37d80 41 + * 0x0c 0x0c900 -- 0x0ca00 (lager power 9db than 0x0c000), 0x0c000 42 + */ 43 + 44 + /* MAX2825 (pure b/g) */ 45 + u32 max2825_rf_data[] = { 46 + (0x00<<18) | 0x000a2, 47 + (0x01<<18) | 0x21cc0, 48 + (0x02<<18) | 0x13806, 49 + (0x03<<18) | 0x30142, 50 + (0x04<<18) | 0x0b333, 51 + (0x05<<18) | 0x289A6, 52 + (0x06<<18) | 0x18008, 53 + (0x07<<18) | 0x38000, 54 + (0x08<<18) | 0x05100, 55 + (0x09<<18) | 0x24f08, 56 + (0x0A<<18) | 0x14000, 57 + (0x0B<<18) | 0x37d80, 58 + (0x0C<<18) | 0x0c100 /* 11a: 0x0c300, 11g: 0x0c100 */ 59 + }; 60 + 61 + u32 max2825_channel_data_24[][3] = { 62 + {(0x03 << 18) | 0x30142, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channel 01 */ 63 + {(0x03 << 18) | 0x32141, (0x04 << 18) | 0x08444, (0x05 << 18) | 0x289A6}, /* channel 02 */ 64 + {(0x03 << 18) | 0x32143, (0x04 << 18) | 0x0aeee, (0x05 << 18) | 0x289A6}, /* channel 03 */ 65 + {(0x03 << 18) | 0x32142, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channel 04 */ 66 + {(0x03 << 18) | 0x31141, (0x04 << 18) | 0x08444, (0x05 << 18) | 0x289A6}, /* channel 05 */ 67 + {(0x03 << 18) | 0x31143, (0x04 << 18) | 0x0aeee, (0x05 << 18) | 0x289A6}, /* channel 06 */ 68 + {(0x03 << 18) | 0x31142, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channel 07 */ 69 + {(0x03 << 18) | 0x33141, (0x04 << 18) | 0x08444, (0x05 << 18) | 0x289A6}, /* channel 08 */ 70 + {(0x03 << 18) | 0x33143, (0x04 << 18) | 0x0aeee, (0x05 << 18) | 0x289A6}, /* channel 09 */ 71 + {(0x03 << 18) | 0x33142, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channel 10 */ 72 + {(0x03 << 18) | 0x30941, (0x04 << 18) | 0x08444, (0x05 << 18) | 0x289A6}, /* channel 11 */ 73 + {(0x03 << 18) | 0x30943, (0x04 << 18) | 0x0aeee, (0x05 << 18) | 0x289A6}, /* channel 12 */ 74 + {(0x03 << 18) | 0x30942, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channel 13 */ 75 + {(0x03 << 18) | 0x32941, (0x04 << 18) | 0x09999, (0x05 << 18) | 0x289A6} /* channel 14 (2484MHz) */ 76 + }; 77 + 78 + u32 max2825_power_data_24[] = {(0x0C << 18) | 0x0c000, (0x0C << 18) | 0x0c100}; 79 + 80 + /* ========================================== */ 81 + /* MAX2827 (a/b/g) */ 82 + u32 max2827_rf_data[] = { 83 + (0x00 << 18) | 0x000a2, 84 + (0x01 << 18) | 0x21cc0, 85 + (0x02 << 18) | 0x13806, 86 + (0x03 << 18) | 0x30142, 87 + (0x04 << 18) | 0x0b333, 88 + (0x05 << 18) | 0x289A6, 89 + (0x06 << 18) | 0x18008, 90 + (0x07 << 18) | 0x38000, 91 + (0x08 << 18) | 0x05100, 92 + (0x09 << 18) | 0x24f08, 93 + (0x0A << 18) | 0x14000, 94 + (0x0B << 18) | 0x37d80, 95 + (0x0C << 18) | 0x0c100 /* 11a: 0x0c300, 11g: 0x0c100 */ 96 + }; 97 + 98 + u32 max2827_channel_data_24[][3] = { 99 + {(0x03 << 18) | 0x30142, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channe1 01 */ 100 + {(0x03 << 18) | 0x32141, (0x04 << 18) | 0x08444, (0x05 << 18) | 0x289A6}, /* channe1 02 */ 101 + {(0x03 << 18) | 0x32143, (0x04 << 18) | 0x0aeee, (0x05 << 18) | 0x289A6}, /* channe1 03 */ 102 + {(0x03 << 18) | 0x32142, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channe1 04 */ 103 + {(0x03 << 18) | 0x31141, (0x04 << 18) | 0x08444, (0x05 << 18) | 0x289A6}, /* channe1 05 */ 104 + {(0x03 << 18) | 0x31143, (0x04 << 18) | 0x0aeee, (0x05 << 18) | 0x289A6}, /* channe1 06 */ 105 + {(0x03 << 18) | 0x31142, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channe1 07 */ 106 + {(0x03 << 18) | 0x33141, (0x04 << 18) | 0x08444, (0x05 << 18) | 0x289A6}, /* channe1 08 */ 107 + {(0x03 << 18) | 0x33143, (0x04 << 18) | 0x0aeee, (0x05 << 18) | 0x289A6}, /* channe1 09 */ 108 + {(0x03 << 18) | 0x33142, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channe1 10 */ 109 + {(0x03 << 18) | 0x30941, (0x04 << 18) | 0x08444, (0x05 << 18) | 0x289A6}, /* channe1 11 */ 110 + {(0x03 << 18) | 0x30943, (0x04 << 18) | 0x0aeee, (0x05 << 18) | 0x289A6}, /* channe1 12 */ 111 + {(0x03 << 18) | 0x30942, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channe1 13 */ 112 + {(0x03 << 18) | 0x32941, (0x04 << 18) | 0x09999, (0x05 << 18) | 0x289A6} /* channel 14 (2484MHz) */ 113 + }; 114 + 115 + u32 max2827_channel_data_50[][3] = { 116 + {(0x03 << 18) | 0x33cc3, (0x04 << 18) | 0x08ccc, (0x05 << 18) | 0x2A9A6}, /* channel 36 */ 117 + {(0x03 << 18) | 0x302c0, (0x04 << 18) | 0x08000, (0x05 << 18) | 0x2A9A6}, /* channel 40 */ 118 + {(0x03 << 18) | 0x302c2, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x2A9A6}, /* channel 44 */ 119 + {(0x03 << 18) | 0x322c1, (0x04 << 18) | 0x09999, (0x05 << 18) | 0x2A9A6}, /* channel 48 */ 120 + {(0x03 << 18) | 0x312c1, (0x04 << 18) | 0x0a666, (0x05 << 18) | 0x2A9A6}, /* channel 52 */ 121 + {(0x03 << 18) | 0x332c3, (0x04 << 18) | 0x08ccc, (0x05 << 18) | 0x2A9A6}, /* channel 56 */ 122 + {(0x03 << 18) | 0x30ac0, (0x04 << 18) | 0x08000, (0x05 << 18) | 0x2A9A6}, /* channel 60 */ 123 + {(0x03 << 18) | 0x30ac2, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x2A9A6} /* channel 64 */ 124 + }; 125 + 126 + u32 max2827_power_data_24[] = {(0x0C << 18) | 0x0C000, (0x0C << 18) | 0x0D600, (0x0C << 18) | 0x0C100}; 127 + u32 max2827_power_data_50[] = {(0x0C << 18) | 0x0C400, (0x0C << 18) | 0x0D500, (0x0C << 18) | 0x0C300}; 128 + 129 + /* ======================================================= */ 130 + /* MAX2828 (a/b/g) */ 131 + u32 max2828_rf_data[] = { 132 + (0x00 << 18) | 0x000a2, 133 + (0x01 << 18) | 0x21cc0, 134 + (0x02 << 18) | 0x13806, 135 + (0x03 << 18) | 0x30142, 136 + (0x04 << 18) | 0x0b333, 137 + (0x05 << 18) | 0x289A6, 138 + (0x06 << 18) | 0x18008, 139 + (0x07 << 18) | 0x38000, 140 + (0x08 << 18) | 0x05100, 141 + (0x09 << 18) | 0x24f08, 142 + (0x0A << 18) | 0x14000, 143 + (0x0B << 18) | 0x37d80, 144 + (0x0C << 18) | 0x0c100 /* 11a: 0x0c300, 11g: 0x0c100 */ 145 + }; 146 + 147 + u32 max2828_channel_data_24[][3] = { 148 + {(0x03 << 18) | 0x30142, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channe1 01 */ 149 + {(0x03 << 18) | 0x32141, (0x04 << 18) | 0x08444, (0x05 << 18) | 0x289A6}, /* channe1 02 */ 150 + {(0x03 << 18) | 0x32143, (0x04 << 18) | 0x0aeee, (0x05 << 18) | 0x289A6}, /* channe1 03 */ 151 + {(0x03 << 18) | 0x32142, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channe1 04 */ 152 + {(0x03 << 18) | 0x31141, (0x04 << 18) | 0x08444, (0x05 << 18) | 0x289A6}, /* channe1 05 */ 153 + {(0x03 << 18) | 0x31143, (0x04 << 18) | 0x0aeee, (0x05 << 18) | 0x289A6}, /* channe1 06 */ 154 + {(0x03 << 18) | 0x31142, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channe1 07 */ 155 + {(0x03 << 18) | 0x33141, (0x04 << 18) | 0x08444, (0x05 << 18) | 0x289A6}, /* channe1 08 */ 156 + {(0x03 << 18) | 0x33143, (0x04 << 18) | 0x0aeee, (0x05 << 18) | 0x289A6}, /* channe1 09 */ 157 + {(0x03 << 18) | 0x33142, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channe1 10 */ 158 + {(0x03 << 18) | 0x30941, (0x04 << 18) | 0x08444, (0x05 << 18) | 0x289A6}, /* channe1 11 */ 159 + {(0x03 << 18) | 0x30943, (0x04 << 18) | 0x0aeee, (0x05 << 18) | 0x289A6}, /* channe1 12 */ 160 + {(0x03 << 18) | 0x30942, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channe1 13 */ 161 + {(0x03 << 18) | 0x32941, (0x04 << 18) | 0x09999, (0x05 << 18) | 0x289A6} /* channel 14 (2484MHz) */ 162 + }; 163 + 164 + u32 max2828_channel_data_50[][3] = { 165 + {(0x03 << 18) | 0x33cc3, (0x04 << 18) | 0x08ccc, (0x05 << 18) | 0x289A6}, /* channel 36 */ 166 + {(0x03 << 18) | 0x302c0, (0x04 << 18) | 0x08000, (0x05 << 18) | 0x289A6}, /* channel 40 */ 167 + {(0x03 << 18) | 0x302c2, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6}, /* channel 44 */ 168 + {(0x03 << 18) | 0x322c1, (0x04 << 18) | 0x09999, (0x05 << 18) | 0x289A6}, /* channel 48 */ 169 + {(0x03 << 18) | 0x312c1, (0x04 << 18) | 0x0a666, (0x05 << 18) | 0x289A6}, /* channel 52 */ 170 + {(0x03 << 18) | 0x332c3, (0x04 << 18) | 0x08ccc, (0x05 << 18) | 0x289A6}, /* channel 56 */ 171 + {(0x03 << 18) | 0x30ac0, (0x04 << 18) | 0x08000, (0x05 << 18) | 0x289A6}, /* channel 60 */ 172 + {(0x03 << 18) | 0x30ac2, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x289A6} /* channel 64 */ 173 + }; 174 + 175 + u32 max2828_power_data_24[] = {(0x0C << 18) | 0x0c000, (0x0C << 18) | 0x0c100}; 176 + u32 max2828_power_data_50[] = {(0x0C << 18) | 0x0c000, (0x0C << 18) | 0x0c100}; 177 + 178 + /* ========================================================== */ 179 + /* MAX2829 (a/b/g) */ 180 + u32 max2829_rf_data[] = { 181 + (0x00 << 18) | 0x000a2, 182 + (0x01 << 18) | 0x23520, 183 + (0x02 << 18) | 0x13802, 184 + (0x03 << 18) | 0x30142, 185 + (0x04 << 18) | 0x0b333, 186 + (0x05 << 18) | 0x28906, 187 + (0x06 << 18) | 0x18008, 188 + (0x07 << 18) | 0x3B500, 189 + (0x08 << 18) | 0x05100, 190 + (0x09 << 18) | 0x24f08, 191 + (0x0A << 18) | 0x14000, 192 + (0x0B << 18) | 0x37d80, 193 + (0x0C << 18) | 0x0F300 /* TXVGA=51, (MAX-6 dB) */ 194 + }; 195 + 196 + u32 max2829_channel_data_24[][3] = { 197 + {(3 << 18) | 0x30142, (4 << 18) | 0x0b333, (5 << 18) | 0x289C6}, /* 01 (2412MHz) */ 198 + {(3 << 18) | 0x32141, (4 << 18) | 0x08444, (5 << 18) | 0x289C6}, /* 02 (2417MHz) */ 199 + {(3 << 18) | 0x32143, (4 << 18) | 0x0aeee, (5 << 18) | 0x289C6}, /* 03 (2422MHz) */ 200 + {(3 << 18) | 0x32142, (4 << 18) | 0x0b333, (5 << 18) | 0x289C6}, /* 04 (2427MHz) */ 201 + {(3 << 18) | 0x31141, (4 << 18) | 0x08444, (5 << 18) | 0x289C6}, /* 05 (2432MHz) */ 202 + {(3 << 18) | 0x31143, (4 << 18) | 0x0aeee, (5 << 18) | 0x289C6}, /* 06 (2437MHz) */ 203 + {(3 << 18) | 0x31142, (4 << 18) | 0x0b333, (5 << 18) | 0x289C6}, /* 07 (2442MHz) */ 204 + {(3 << 18) | 0x33141, (4 << 18) | 0x08444, (5 << 18) | 0x289C6}, /* 08 (2447MHz) */ 205 + {(3 << 18) | 0x33143, (4 << 18) | 0x0aeee, (5 << 18) | 0x289C6}, /* 09 (2452MHz) */ 206 + {(3 << 18) | 0x33142, (4 << 18) | 0x0b333, (5 << 18) | 0x289C6}, /* 10 (2457MHz) */ 207 + {(3 << 18) | 0x30941, (4 << 18) | 0x08444, (5 << 18) | 0x289C6}, /* 11 (2462MHz) */ 208 + {(3 << 18) | 0x30943, (4 << 18) | 0x0aeee, (5 << 18) | 0x289C6}, /* 12 (2467MHz) */ 209 + {(3 << 18) | 0x30942, (4 << 18) | 0x0b333, (5 << 18) | 0x289C6}, /* 13 (2472MHz) */ 210 + {(3 << 18) | 0x32941, (4 << 18) | 0x09999, (5 << 18) | 0x289C6}, /* 14 (2484MHz) */ 211 + }; 212 + 213 + u32 max2829_channel_data_50[][4] = { 214 + {36, (3 << 18) | 0x33cc3, (4 << 18) | 0x08ccc, (5 << 18) | 0x2A946}, /* 36 (5.180GHz) */ 215 + {40, (3 << 18) | 0x302c0, (4 << 18) | 0x08000, (5 << 18) | 0x2A946}, /* 40 (5.200GHz) */ 216 + {44, (3 << 18) | 0x302c2, (4 << 18) | 0x0b333, (5 << 18) | 0x2A946}, /* 44 (5.220GHz) */ 217 + {48, (3 << 18) | 0x322c1, (4 << 18) | 0x09999, (5 << 18) | 0x2A946}, /* 48 (5.240GHz) */ 218 + {52, (3 << 18) | 0x312c1, (4 << 18) | 0x0a666, (5 << 18) | 0x2A946}, /* 52 (5.260GHz) */ 219 + {56, (3 << 18) | 0x332c3, (4 << 18) | 0x08ccc, (5 << 18) | 0x2A946}, /* 56 (5.280GHz) */ 220 + {60, (3 << 18) | 0x30ac0, (4 << 18) | 0x08000, (5 << 18) | 0x2A946}, /* 60 (5.300GHz) */ 221 + {64, (3 << 18) | 0x30ac2, (4 << 18) | 0x0b333, (5 << 18) | 0x2A946}, /* 64 (5.320GHz) */ 222 + 223 + {100, (3 << 18) | 0x30ec0, (4 << 18) | 0x08000, (5 << 18) | 0x2A9C6}, /* 100 (5.500GHz) */ 224 + {104, (3 << 18) | 0x30ec2, (4 << 18) | 0x0b333, (5 << 18) | 0x2A9C6}, /* 104 (5.520GHz) */ 225 + {108, (3 << 18) | 0x32ec1, (4 << 18) | 0x09999, (5 << 18) | 0x2A9C6}, /* 108 (5.540GHz) */ 226 + {112, (3 << 18) | 0x31ec1, (4 << 18) | 0x0a666, (5 << 18) | 0x2A9C6}, /* 112 (5.560GHz) */ 227 + {116, (3 << 18) | 0x33ec3, (4 << 18) | 0x08ccc, (5 << 18) | 0x2A9C6}, /* 116 (5.580GHz) */ 228 + {120, (3 << 18) | 0x301c0, (4 << 18) | 0x08000, (5 << 18) | 0x2A9C6}, /* 120 (5.600GHz) */ 229 + {124, (3 << 18) | 0x301c2, (4 << 18) | 0x0b333, (5 << 18) | 0x2A9C6}, /* 124 (5.620GHz) */ 230 + {128, (3 << 18) | 0x321c1, (4 << 18) | 0x09999, (5 << 18) | 0x2A9C6}, /* 128 (5.640GHz) */ 231 + {132, (3 << 18) | 0x311c1, (4 << 18) | 0x0a666, (5 << 18) | 0x2A9C6}, /* 132 (5.660GHz) */ 232 + {136, (3 << 18) | 0x331c3, (4 << 18) | 0x08ccc, (5 << 18) | 0x2A9C6}, /* 136 (5.680GHz) */ 233 + {140, (3 << 18) | 0x309c0, (4 << 18) | 0x08000, (5 << 18) | 0x2A9C6}, /* 140 (5.700GHz) */ 234 + 235 + {149, (3 << 18) | 0x329c2, (4 << 18) | 0x0b333, (5 << 18) | 0x2A9C6}, /* 149 (5.745GHz) */ 236 + {153, (3 << 18) | 0x319c1, (4 << 18) | 0x09999, (5 << 18) | 0x2A9C6}, /* 153 (5.765GHz) */ 237 + {157, (3 << 18) | 0x339c1, (4 << 18) | 0x0a666, (5 << 18) | 0x2A9C6}, /* 157 (5.785GHz) */ 238 + {161, (3 << 18) | 0x305c3, (4 << 18) | 0x08ccc, (5 << 18) | 0x2A9C6}, /* 161 (5.805GHz) */ 239 + 240 + /* Japan */ 241 + { 184, (3 << 18) | 0x308c2, (4 << 18) | 0x0b333, (5 << 18) | 0x2A946}, /* 184 (4.920GHz) */ 242 + { 188, (3 << 18) | 0x328c1, (4 << 18) | 0x09999, (5 << 18) | 0x2A946}, /* 188 (4.940GHz) */ 243 + { 192, (3 << 18) | 0x318c1, (4 << 18) | 0x0a666, (5 << 18) | 0x2A946}, /* 192 (4.960GHz) */ 244 + { 196, (3 << 18) | 0x338c3, (4 << 18) | 0x08ccc, (5 << 18) | 0x2A946}, /* 196 (4.980GHz) */ 245 + { 8, (3 << 18) | 0x324c1, (4 << 18) | 0x09999, (5 << 18) | 0x2A946}, /* 8 (5.040GHz) */ 246 + { 12, (3 << 18) | 0x314c1, (4 << 18) | 0x0a666, (5 << 18) | 0x2A946}, /* 12 (5.060GHz) */ 247 + { 16, (3 << 18) | 0x334c3, (4 << 18) | 0x08ccc, (5 << 18) | 0x2A946}, /* 16 (5.080GHz) */ 248 + { 34, (3 << 18) | 0x31cc2, (4 << 18) | 0x0b333, (5 << 18) | 0x2A946}, /* 34 (5.170GHz) */ 249 + { 38, (3 << 18) | 0x33cc1, (4 << 18) | 0x09999, (5 << 18) | 0x2A946}, /* 38 (5.190GHz) */ 250 + { 42, (3 << 18) | 0x302c1, (4 << 18) | 0x0a666, (5 << 18) | 0x2A946}, /* 42 (5.210GHz) */ 251 + { 46, (3 << 18) | 0x322c3, (4 << 18) | 0x08ccc, (5 << 18) | 0x2A946}, /* 46 (5.230GHz) */ 252 + }; 253 + 254 + /* 255 + * ==================================================================== 256 + * For MAXIM2825/6/7 Ver. 317 or less 257 + * 258 + * 0x00 0x00080 259 + * 0x01 0x214c0 260 + * 0x02 0x13802 261 + * 262 + * 2.4GHz Channels 263 + * channe1 01 (2.412GHz); 0x03 0x30143 ;0x04 0x0accc 264 + * channe1 02 (2.417GHz); 0x03 0x32140 ;0x04 0x09111 265 + * channe1 03 (2.422GHz); 0x03 0x32142 ;0x04 0x0bbbb 266 + * channe1 04 (2.427GHz); 0x03 0x32143 ;0x04 0x0accc 267 + * channe1 05 (2.432GHz); 0x03 0x31140 ;0x04 0x09111 268 + * channe1 06 (2.437GHz); 0x03 0x31142 ;0x04 0x0bbbb 269 + * channe1 07 (2.442GHz); 0x03 0x31143 ;0x04 0x0accc 270 + * channe1 08 (2.447GHz); 0x03 0x33140 ;0x04 0x09111 271 + * channe1 09 (2.452GHz); 0x03 0x33142 ;0x04 0x0bbbb 272 + * channe1 10 (2.457GHz); 0x03 0x33143 ;0x04 0x0accc 273 + * channe1 11 (2.462GHz); 0x03 0x30940 ;0x04 0x09111 274 + * channe1 12 (2.467GHz); 0x03 0x30942 ;0x04 0x0bbbb 275 + * channe1 13 (2.472GHz); 0x03 0x30943 ;0x04 0x0accc 276 + * 277 + * 5.0Ghz Channels 278 + * channel 36 (5.180GHz); 0x03 0x33cc0 ;0x04 0x0b333 279 + * channel 40 (5.200GHz); 0x03 0x302c0 ;0x04 0x08000 280 + * channel 44 (5.220GHz); 0x03 0x302c2 ;0x04 0x0b333 281 + * channel 48 (5.240GHz); 0x03 0x322c1 ;0x04 0x09999 282 + * channel 52 (5.260GHz); 0x03 0x312c1 ;0x04 0x0a666 283 + * channel 56 (5.280GHz); 0x03 0x332c3 ;0x04 0x08ccc 284 + * channel 60 (5.300GHz); 0x03 0x30ac0 ;0x04 0x08000 285 + * channel 64 (5.320GHz); 0x03 0x30ac2 ;0x04 0x08333 286 + * 287 + * 2.4GHz band ; 0x05 0x28986; 288 + * 5.0GHz band ; 0x05 0x2a986 289 + * 0x06 0x18008 290 + * 0x07 0x38400 291 + * 0x08 0x05108 292 + * 0x09 0x27ff8 293 + * 0x0a 0x14000 294 + * 0x0b 0x37f99 295 + * 0x0c 0x0c000 296 + * ==================================================================== 297 + */ 298 + u32 maxim_317_rf_data[] = { 299 + (0x00 << 18) | 0x000a2, 300 + (0x01 << 18) | 0x214c0, 301 + (0x02 << 18) | 0x13802, 302 + (0x03 << 18) | 0x30143, 303 + (0x04 << 18) | 0x0accc, 304 + (0x05 << 18) | 0x28986, 305 + (0x06 << 18) | 0x18008, 306 + (0x07 << 18) | 0x38400, 307 + (0x08 << 18) | 0x05108, 308 + (0x09 << 18) | 0x27ff8, 309 + (0x0A << 18) | 0x14000, 310 + (0x0B << 18) | 0x37f99, 311 + (0x0C << 18) | 0x0c000 312 + }; 313 + 314 + u32 maxim_317_channel_data_24[][3] = { 315 + {(0x03 << 18) | 0x30143, (0x04 << 18) | 0x0accc, (0x05 << 18) | 0x28986}, /* channe1 01 */ 316 + {(0x03 << 18) | 0x32140, (0x04 << 18) | 0x09111, (0x05 << 18) | 0x28986}, /* channe1 02 */ 317 + {(0x03 << 18) | 0x32142, (0x04 << 18) | 0x0bbbb, (0x05 << 18) | 0x28986}, /* channe1 03 */ 318 + {(0x03 << 18) | 0x32143, (0x04 << 18) | 0x0accc, (0x05 << 18) | 0x28986}, /* channe1 04 */ 319 + {(0x03 << 18) | 0x31140, (0x04 << 18) | 0x09111, (0x05 << 18) | 0x28986}, /* channe1 05 */ 320 + {(0x03 << 18) | 0x31142, (0x04 << 18) | 0x0bbbb, (0x05 << 18) | 0x28986}, /* channe1 06 */ 321 + {(0x03 << 18) | 0x31143, (0x04 << 18) | 0x0accc, (0x05 << 18) | 0x28986}, /* channe1 07 */ 322 + {(0x03 << 18) | 0x33140, (0x04 << 18) | 0x09111, (0x05 << 18) | 0x28986}, /* channe1 08 */ 323 + {(0x03 << 18) | 0x33142, (0x04 << 18) | 0x0bbbb, (0x05 << 18) | 0x28986}, /* channe1 09 */ 324 + {(0x03 << 18) | 0x33143, (0x04 << 18) | 0x0accc, (0x05 << 18) | 0x28986}, /* channe1 10 */ 325 + {(0x03 << 18) | 0x30940, (0x04 << 18) | 0x09111, (0x05 << 18) | 0x28986}, /* channe1 11 */ 326 + {(0x03 << 18) | 0x30942, (0x04 << 18) | 0x0bbbb, (0x05 << 18) | 0x28986}, /* channe1 12 */ 327 + {(0x03 << 18) | 0x30943, (0x04 << 18) | 0x0accc, (0x05 << 18) | 0x28986} /* channe1 13 */ 328 + }; 329 + 330 + u32 maxim_317_channel_data_50[][3] = { 331 + {(0x03 << 18) | 0x33cc0, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x2a986}, /* channel 36 */ 332 + {(0x03 << 18) | 0x302c0, (0x04 << 18) | 0x08000, (0x05 << 18) | 0x2a986}, /* channel 40 */ 333 + {(0x03 << 18) | 0x302c3, (0x04 << 18) | 0x0accc, (0x05 << 18) | 0x2a986}, /* channel 44 */ 334 + {(0x03 << 18) | 0x322c1, (0x04 << 18) | 0x09666, (0x05 << 18) | 0x2a986}, /* channel 48 */ 335 + {(0x03 << 18) | 0x312c2, (0x04 << 18) | 0x09999, (0x05 << 18) | 0x2a986}, /* channel 52 */ 336 + {(0x03 << 18) | 0x332c0, (0x04 << 18) | 0x0b333, (0x05 << 18) | 0x2a99e}, /* channel 56 */ 337 + {(0x03 << 18) | 0x30ac0, (0x04 << 18) | 0x08000, (0x05 << 18) | 0x2a99e}, /* channel 60 */ 338 + {(0x03 << 18) | 0x30ac3, (0x04 << 18) | 0x0accc, (0x05 << 18) | 0x2a99e} /* channel 64 */ 339 + }; 340 + 341 + u32 maxim_317_power_data_24[] = {(0x0C << 18) | 0x0c000, (0x0C << 18) | 0x0c100}; 342 + u32 maxim_317_power_data_50[] = {(0x0C << 18) | 0x0c000, (0x0C << 18) | 0x0c100}; 343 + 344 + /* 345 + * =================================================================== 346 + * AL2230 MP (Mass Production Version) 347 + * RF Registers Setting for Airoha AL2230 silicon after June 1st, 2004 348 + * 20-bit length and LSB first 349 + * 350 + * Ch01 (2412MHz) ;0x00 0x09EFC ;0x01 0x8CCCC; 351 + * Ch02 (2417MHz) ;0x00 0x09EFC ;0x01 0x8CCCD; 352 + * Ch03 (2422MHz) ;0x00 0x09E7C ;0x01 0x8CCCC; 353 + * Ch04 (2427MHz) ;0x00 0x09E7C ;0x01 0x8CCCD; 354 + * Ch05 (2432MHz) ;0x00 0x05EFC ;0x01 0x8CCCC; 355 + * Ch06 (2437MHz) ;0x00 0x05EFC ;0x01 0x8CCCD; 356 + * Ch07 (2442MHz) ;0x00 0x05E7C ;0x01 0x8CCCC; 357 + * Ch08 (2447MHz) ;0x00 0x05E7C ;0x01 0x8CCCD; 358 + * Ch09 (2452MHz) ;0x00 0x0DEFC ;0x01 0x8CCCC; 359 + * Ch10 (2457MHz) ;0x00 0x0DEFC ;0x01 0x8CCCD; 360 + * Ch11 (2462MHz) ;0x00 0x0DE7C ;0x01 0x8CCCC; 361 + * Ch12 (2467MHz) ;0x00 0x0DE7C ;0x01 0x8CCCD; 362 + * Ch13 (2472MHz) ;0x00 0x03EFC ;0x01 0x8CCCC; 363 + * Ch14 (2484Mhz) ;0x00 0x03E7C ;0x01 0x86666; 364 + * 365 + * 0x02 0x401D8; RXDCOC BW 100Hz for RXHP low 366 + * 0x02 0x481DC; RXDCOC BW 30Khz for RXHP low 367 + * 368 + * 0x03 0xCFFF0 369 + * 0x04 0x23800 370 + * 0x05 0xA3B72 371 + * 0x06 0x6DA01 372 + * 0x07 0xE1688 373 + * 0x08 0x11600 374 + * 0x09 0x99E02 375 + * 0x0A 0x5DDB0 376 + * 0x0B 0xD9900 377 + * 0x0C 0x3FFBD 378 + * 0x0D 0xB0000 379 + * 0x0F 0xF00A0 380 + * 381 + * RF Calibration for Airoha AL2230 382 + * 383 + * 0x0f 0xf00a0 ; Initial Setting 384 + * 0x0f 0xf00b0 ; Activate TX DCC 385 + * 0x0f 0xf02a0 ; Activate Phase Calibration 386 + * 0x0f 0xf00e0 ; Activate Filter RC Calibration 387 + * 0x0f 0xf00a0 ; Restore Initial Setting 388 + * ================================================================== 389 + */ 390 + u32 al2230_rf_data[] = { 391 + (0x00 << 20) | 0x09EFC, 392 + (0x01 << 20) | 0x8CCCC, 393 + (0x02 << 20) | 0x40058, 394 + (0x03 << 20) | 0xCFFF0, 395 + (0x04 << 20) | 0x24100, 396 + (0x05 << 20) | 0xA3B2F, 397 + (0x06 << 20) | 0x6DA01, 398 + (0x07 << 20) | 0xE3628, 399 + (0x08 << 20) | 0x11600, 400 + (0x09 << 20) | 0x9DC02, 401 + (0x0A << 20) | 0x5ddb0, 402 + (0x0B << 20) | 0xD9900, 403 + (0x0C << 20) | 0x3FFBD, 404 + (0x0D << 20) | 0xB0000, 405 + (0x0F << 20) | 0xF01A0 406 + }; 407 + 408 + u32 al2230s_rf_data[] = { 409 + (0x00 << 20) | 0x09EFC, 410 + (0x01 << 20) | 0x8CCCC, 411 + (0x02 << 20) | 0x40058, 412 + (0x03 << 20) | 0xCFFF0, 413 + (0x04 << 20) | 0x24100, 414 + (0x05 << 20) | 0xA3B2F, 415 + (0x06 << 20) | 0x6DA01, 416 + (0x07 << 20) | 0xE3628, 417 + (0x08 << 20) | 0x11600, 418 + (0x09 << 20) | 0x9DC02, 419 + (0x0A << 20) | 0x5DDB0, 420 + (0x0B << 20) | 0xD9900, 421 + (0x0C << 20) | 0x3FFBD, 422 + (0x0D << 20) | 0xB0000, 423 + (0x0F << 20) | 0xF01A0 424 + }; 425 + 426 + u32 al2230_channel_data_24[][2] = { 427 + {(0x00 << 20) | 0x09EFC, (0x01 << 20) | 0x8CCCC}, /* channe1 01 */ 428 + {(0x00 << 20) | 0x09EFC, (0x01 << 20) | 0x8CCCD}, /* channe1 02 */ 429 + {(0x00 << 20) | 0x09E7C, (0x01 << 20) | 0x8CCCC}, /* channe1 03 */ 430 + {(0x00 << 20) | 0x09E7C, (0x01 << 20) | 0x8CCCD}, /* channe1 04 */ 431 + {(0x00 << 20) | 0x05EFC, (0x01 << 20) | 0x8CCCC}, /* channe1 05 */ 432 + {(0x00 << 20) | 0x05EFC, (0x01 << 20) | 0x8CCCD}, /* channe1 06 */ 433 + {(0x00 << 20) | 0x05E7C, (0x01 << 20) | 0x8CCCC}, /* channe1 07 */ 434 + {(0x00 << 20) | 0x05E7C, (0x01 << 20) | 0x8CCCD}, /* channe1 08 */ 435 + {(0x00 << 20) | 0x0DEFC, (0x01 << 20) | 0x8CCCC}, /* channe1 09 */ 436 + {(0x00 << 20) | 0x0DEFC, (0x01 << 20) | 0x8CCCD}, /* channe1 10 */ 437 + {(0x00 << 20) | 0x0DE7C, (0x01 << 20) | 0x8CCCC}, /* channe1 11 */ 438 + {(0x00 << 20) | 0x0DE7C, (0x01 << 20) | 0x8CCCD}, /* channe1 12 */ 439 + {(0x00 << 20) | 0x03EFC, (0x01 << 20) | 0x8CCCC}, /* channe1 13 */ 440 + {(0x00 << 20) | 0x03E7C, (0x01 << 20) | 0x86666} /* channe1 14 */ 441 + }; 442 + 443 + /* Current setting. u32 airoha_power_data_24[] = {(0x09 << 20) | 0x90202, (0x09 << 20) | 0x96602, (0x09 << 20) | 0x97602}; */ 444 + #define AIROHA_TXVGA_LOW_INDEX 31 /* Index for 0x90202 */ 445 + #define AIROHA_TXVGA_MIDDLE_INDEX 12 /* Index for 0x96602 */ 446 + #define AIROHA_TXVGA_HIGH_INDEX 8 /* Index for 0x97602 1.0.24.0 1.0.28.0 */ 447 + 448 + u32 al2230_txvga_data[][2] = { 449 + /* value , index */ 512 450 {0x090202, 0}, 513 451 {0x094202, 2}, 514 452 {0x092202, 4}, ··· 489 551 {0x09FE02, 63} 490 552 }; 491 553 492 - //-------------------------------- 493 - // For Airoha AL7230, 2.4Ghz band 494 - // Edit by Tiger, (March, 9, 2005) 495 - // 24bit, MSB first 554 + /* 555 + * ========================================== 556 + * For Airoha AL7230, 2.4Ghz band 557 + * 24bit, MSB first 558 + */ 496 559 497 - //channel independent registers: 498 - u32 al7230_rf_data_24[] = 499 - { 500 - (0x00<<24)|0x003790, 501 - (0x01<<24)|0x133331, 502 - (0x02<<24)|0x841FF2, 503 - (0x03<<24)|0x3FDFA3, 504 - (0x04<<24)|0x7FD784, 505 - (0x05<<24)|0x802B55, 506 - (0x06<<24)|0x56AF36, 507 - (0x07<<24)|0xCE0207, 508 - (0x08<<24)|0x6EBC08, 509 - (0x09<<24)|0x221BB9, 510 - (0x0A<<24)|0xE0000A, 511 - (0x0B<<24)|0x08071B, 512 - (0x0C<<24)|0x000A3C, 513 - (0x0D<<24)|0xFFFFFD, 514 - (0x0E<<24)|0x00000E, 515 - (0x0F<<24)|0x1ABA8F 560 + /* channel independent registers: */ 561 + u32 al7230_rf_data_24[] = { 562 + (0x00 << 24) | 0x003790, 563 + (0x01 << 24) | 0x133331, 564 + (0x02 << 24) | 0x841FF2, 565 + (0x03 << 24) | 0x3FDFA3, 566 + (0x04 << 24) | 0x7FD784, 567 + (0x05 << 24) | 0x802B55, 568 + (0x06 << 24) | 0x56AF36, 569 + (0x07 << 24) | 0xCE0207, 570 + (0x08 << 24) | 0x6EBC08, 571 + (0x09 << 24) | 0x221BB9, 572 + (0x0A << 24) | 0xE0000A, 573 + (0x0B << 24) | 0x08071B, 574 + (0x0C << 24) | 0x000A3C, 575 + (0x0D << 24) | 0xFFFFFD, 576 + (0x0E << 24) | 0x00000E, 577 + (0x0F << 24) | 0x1ABA8F 516 578 }; 517 579 518 - u32 al7230_channel_data_24[][2] = 519 - { 520 - {(0x00<<24)|0x003790, (0x01<<24)|0x133331}, // channe1 01 521 - {(0x00<<24)|0x003790, (0x01<<24)|0x1B3331}, // channe1 02 522 - {(0x00<<24)|0x003790, (0x01<<24)|0x033331}, // channe1 03 523 - {(0x00<<24)|0x003790, (0x01<<24)|0x0B3331}, // channe1 04 524 - {(0x00<<24)|0x0037A0, (0x01<<24)|0x133331}, // channe1 05 525 - {(0x00<<24)|0x0037A0, (0x01<<24)|0x1B3331}, // channe1 06 526 - {(0x00<<24)|0x0037A0, (0x01<<24)|0x033331}, // channe1 07 527 - {(0x00<<24)|0x0037A0, (0x01<<24)|0x0B3331}, // channe1 08 528 - {(0x00<<24)|0x0037B0, (0x01<<24)|0x133331}, // channe1 09 529 - {(0x00<<24)|0x0037B0, (0x01<<24)|0x1B3331}, // channe1 10 530 - {(0x00<<24)|0x0037B0, (0x01<<24)|0x033331}, // channe1 11 531 - {(0x00<<24)|0x0037B0, (0x01<<24)|0x0B3331}, // channe1 12 532 - {(0x00<<24)|0x0037C0, (0x01<<24)|0x133331}, // channe1 13 533 - {(0x00<<24)|0x0037C0, (0x01<<24)|0x066661} // channel 14 580 + u32 al7230_channel_data_24[][2] = { 581 + {(0x00 << 24) | 0x003790, (0x01 << 24) | 0x133331}, /* channe1 01 */ 582 + {(0x00 << 24) | 0x003790, (0x01 << 24) | 0x1B3331}, /* channe1 02 */ 583 + {(0x00 << 24) | 0x003790, (0x01 << 24) | 0x033331}, /* channe1 03 */ 584 + {(0x00 << 24) | 0x003790, (0x01 << 24) | 0x0B3331}, /* channe1 04 */ 585 + {(0x00 << 24) | 0x0037A0, (0x01 << 24) | 0x133331}, /* channe1 05 */ 586 + {(0x00 << 24) | 0x0037A0, (0x01 << 24) | 0x1B3331}, /* channe1 06 */ 587 + {(0x00 << 24) | 0x0037A0, (0x01 << 24) | 0x033331}, /* channe1 07 */ 588 + {(0x00 << 24) | 0x0037A0, (0x01 << 24) | 0x0B3331}, /* channe1 08 */ 589 + {(0x00 << 24) | 0x0037B0, (0x01 << 24) | 0x133331}, /* channe1 09 */ 590 + {(0x00 << 24) | 0x0037B0, (0x01 << 24) | 0x1B3331}, /* channe1 10 */ 591 + {(0x00 << 24) | 0x0037B0, (0x01 << 24) | 0x033331}, /* channe1 11 */ 592 + {(0x00 << 24) | 0x0037B0, (0x01 << 24) | 0x0B3331}, /* channe1 12 */ 593 + {(0x00 << 24) | 0x0037C0, (0x01 << 24) | 0x133331}, /* channe1 13 */ 594 + {(0x00 << 24) | 0x0037C0, (0x01 << 24) | 0x066661} /* channel 14 */ 534 595 }; 535 596 536 - //channel independent registers: 537 - u32 al7230_rf_data_50[] = 538 - { 539 - (0x00<<24)|0x0FF520, 540 - (0x01<<24)|0x000001, 541 - (0x02<<24)|0x451FE2, 542 - (0x03<<24)|0x5FDFA3, 543 - (0x04<<24)|0x6FD784, 544 - (0x05<<24)|0x853F55, 545 - (0x06<<24)|0x56AF36, 546 - (0x07<<24)|0xCE0207, 547 - (0x08<<24)|0x6EBC08, 548 - (0x09<<24)|0x221BB9, 549 - (0x0A<<24)|0xE0600A, 550 - (0x0B<<24)|0x08044B, 551 - (0x0C<<24)|0x00143C, 552 - (0x0D<<24)|0xFFFFFD, 553 - (0x0E<<24)|0x00000E, 554 - (0x0F<<24)|0x12BACF //5Ghz default state 597 + /* channel independent registers: */ 598 + u32 al7230_rf_data_50[] = { 599 + (0x00 << 24) | 0x0FF520, 600 + (0x01 << 24) | 0x000001, 601 + (0x02 << 24) | 0x451FE2, 602 + (0x03 << 24) | 0x5FDFA3, 603 + (0x04 << 24) | 0x6FD784, 604 + (0x05 << 24) | 0x853F55, 605 + (0x06 << 24) | 0x56AF36, 606 + (0x07 << 24) | 0xCE0207, 607 + (0x08 << 24) | 0x6EBC08, 608 + (0x09 << 24) | 0x221BB9, 609 + (0x0A << 24) | 0xE0600A, 610 + (0x0B << 24) | 0x08044B, 611 + (0x0C << 24) | 0x00143C, 612 + (0x0D << 24) | 0xFFFFFD, 613 + (0x0E << 24) | 0x00000E, 614 + (0x0F << 24) | 0x12BACF /* 5Ghz default state */ 555 615 }; 556 616 557 - u32 al7230_channel_data_5[][4] = 558 - { 559 - //channel dependent registers: 0x00, 0x01 and 0x04 560 - //11J =========== 561 - {184, (0x00<<24)|0x0FF520, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 184 562 - {188, (0x00<<24)|0x0FF520, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 188 563 - {192, (0x00<<24)|0x0FF530, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 192 564 - {196, (0x00<<24)|0x0FF530, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 196 565 - {8, (0x00<<24)|0x0FF540, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 008 566 - {12, (0x00<<24)|0x0FF540, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 012 567 - {16, (0x00<<24)|0x0FF550, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 016 568 - {34, (0x00<<24)|0x0FF560, (0x01<<24)|0x055551, (0x04<<24)|0x77F784}, // channel 034 569 - {38, (0x00<<24)|0x0FF570, (0x01<<24)|0x100001, (0x04<<24)|0x77F784}, // channel 038 570 - {42, (0x00<<24)|0x0FF570, (0x01<<24)|0x1AAAA1, (0x04<<24)|0x77F784}, // channel 042 571 - {46, (0x00<<24)|0x0FF570, (0x01<<24)|0x055551, (0x04<<24)|0x77F784}, // channel 046 572 - //11 A/H ========= 573 - {36, (0x00<<24)|0x0FF560, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 036 574 - {40, (0x00<<24)|0x0FF570, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 040 575 - {44, (0x00<<24)|0x0FF570, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 044 576 - {48, (0x00<<24)|0x0FF570, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 048 577 - {52, (0x00<<24)|0x0FF580, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 052 578 - {56, (0x00<<24)|0x0FF580, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 056 579 - {60, (0x00<<24)|0x0FF580, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 060 580 - {64, (0x00<<24)|0x0FF590, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 064 581 - {100, (0x00<<24)|0x0FF5C0, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 100 582 - {104, (0x00<<24)|0x0FF5C0, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 104 583 - {108, (0x00<<24)|0x0FF5C0, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 108 584 - {112, (0x00<<24)|0x0FF5D0, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 112 585 - {116, (0x00<<24)|0x0FF5D0, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 116 586 - {120, (0x00<<24)|0x0FF5D0, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 120 587 - {124, (0x00<<24)|0x0FF5E0, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 124 588 - {128, (0x00<<24)|0x0FF5E0, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 128 589 - {132, (0x00<<24)|0x0FF5E0, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 132 590 - {136, (0x00<<24)|0x0FF5F0, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 136 591 - {140, (0x00<<24)|0x0FF5F0, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 140 592 - {149, (0x00<<24)|0x0FF600, (0x01<<24)|0x180001, (0x04<<24)|0x77F784}, // channel 149 593 - {153, (0x00<<24)|0x0FF600, (0x01<<24)|0x02AAA1, (0x04<<24)|0x77F784}, // channel 153 594 - {157, (0x00<<24)|0x0FF600, (0x01<<24)|0x0D5551, (0x04<<24)|0x77F784}, // channel 157 595 - {161, (0x00<<24)|0x0FF610, (0x01<<24)|0x180001, (0x04<<24)|0x77F784}, // channel 161 596 - {165, (0x00<<24)|0x0FF610, (0x01<<24)|0x02AAA1, (0x04<<24)|0x77F784} // channel 165 617 + u32 al7230_channel_data_5[][4] = { 618 + /* channel dependent registers: 0x00, 0x01 and 0x04 */ 619 + /* 11J =========== */ 620 + {184, (0x00 << 24) | 0x0FF520, (0x01 << 24) | 0x000001, (0x04 << 24) | 0x67F784}, /* channel 184 */ 621 + {188, (0x00 << 24) | 0x0FF520, (0x01 << 24) | 0x0AAAA1, (0x04 << 24) | 0x77F784}, /* channel 188 */ 622 + {192, (0x00 << 24) | 0x0FF530, (0x01 << 24) | 0x155551, (0x04 << 24) | 0x77F784}, /* channel 192 */ 623 + {196, (0x00 << 24) | 0x0FF530, (0x01 << 24) | 0x000001, (0x04 << 24) | 0x67F784}, /* channel 196 */ 624 + {8, (0x00 << 24) | 0x0FF540, (0x01 << 24) | 0x000001, (0x04 << 24) | 0x67F784}, /* channel 008 */ 625 + {12, (0x00 << 24) | 0x0FF540, (0x01 << 24) | 0x0AAAA1, (0x04 << 24) | 0x77F784}, /* channel 012 */ 626 + {16, (0x00 << 24) | 0x0FF550, (0x01 << 24) | 0x155551, (0x04 << 24) | 0x77F784}, /* channel 016 */ 627 + {34, (0x00 << 24) | 0x0FF560, (0x01 << 24) | 0x055551, (0x04 << 24) | 0x77F784}, /* channel 034 */ 628 + {38, (0x00 << 24) | 0x0FF570, (0x01 << 24) | 0x100001, (0x04 << 24) | 0x77F784}, /* channel 038 */ 629 + {42, (0x00 << 24) | 0x0FF570, (0x01 << 24) | 0x1AAAA1, (0x04 << 24) | 0x77F784}, /* channel 042 */ 630 + {46, (0x00 << 24) | 0x0FF570, (0x01 << 24) | 0x055551, (0x04 << 24) | 0x77F784}, /* channel 046 */ 631 + /* 11 A/H ========= */ 632 + {36, (0x00 << 24) | 0x0FF560, (0x01 << 24) | 0x0AAAA1, (0x04 << 24) | 0x77F784}, /* channel 036 */ 633 + {40, (0x00 << 24) | 0x0FF570, (0x01 << 24) | 0x155551, (0x04 << 24) | 0x77F784}, /* channel 040 */ 634 + {44, (0x00 << 24) | 0x0FF570, (0x01 << 24) | 0x000001, (0x04 << 24) | 0x67F784}, /* channel 044 */ 635 + {48, (0x00 << 24) | 0x0FF570, (0x01 << 24) | 0x0AAAA1, (0x04 << 24) | 0x77F784}, /* channel 048 */ 636 + {52, (0x00 << 24) | 0x0FF580, (0x01 << 24) | 0x155551, (0x04 << 24) | 0x77F784}, /* channel 052 */ 637 + {56, (0x00 << 24) | 0x0FF580, (0x01 << 24) | 0x000001, (0x04 << 24) | 0x67F784}, /* channel 056 */ 638 + {60, (0x00 << 24) | 0x0FF580, (0x01 << 24) | 0x0AAAA1, (0x04 << 24) | 0x77F784}, /* channel 060 */ 639 + {64, (0x00 << 24) | 0x0FF590, (0x01 << 24) | 0x155551, (0x04 << 24) | 0x77F784}, /* channel 064 */ 640 + {100, (0x00 << 24) | 0x0FF5C0, (0x01 << 24) | 0x155551, (0x04 << 24) | 0x77F784}, /* channel 100 */ 641 + {104, (0x00 << 24) | 0x0FF5C0, (0x01 << 24) | 0x000001, (0x04 << 24) | 0x67F784}, /* channel 104 */ 642 + {108, (0x00 << 24) | 0x0FF5C0, (0x01 << 24) | 0x0AAAA1, (0x04 << 24) | 0x77F784}, /* channel 108 */ 643 + {112, (0x00 << 24) | 0x0FF5D0, (0x01 << 24) | 0x155551, (0x04 << 24) | 0x77F784}, /* channel 112 */ 644 + {116, (0x00 << 24) | 0x0FF5D0, (0x01 << 24) | 0x000001, (0x04 << 24) | 0x67F784}, /* channel 116 */ 645 + {120, (0x00 << 24) | 0x0FF5D0, (0x01 << 24) | 0x0AAAA1, (0x04 << 24) | 0x77F784}, /* channel 120 */ 646 + {124, (0x00 << 24) | 0x0FF5E0, (0x01 << 24) | 0x155551, (0x04 << 24) | 0x77F784}, /* channel 124 */ 647 + {128, (0x00 << 24) | 0x0FF5E0, (0x01 << 24) | 0x000001, (0x04 << 24) | 0x67F784}, /* channel 128 */ 648 + {132, (0x00 << 24) | 0x0FF5E0, (0x01 << 24) | 0x0AAAA1, (0x04 << 24) | 0x77F784}, /* channel 132 */ 649 + {136, (0x00 << 24) | 0x0FF5F0, (0x01 << 24) | 0x155551, (0x04 << 24) | 0x77F784}, /* channel 136 */ 650 + {140, (0x00 << 24) | 0x0FF5F0, (0x01 << 24) | 0x000001, (0x04 << 24) | 0x67F784}, /* channel 140 */ 651 + {149, (0x00 << 24) | 0x0FF600, (0x01 << 24) | 0x180001, (0x04 << 24) | 0x77F784}, /* channel 149 */ 652 + {153, (0x00 << 24) | 0x0FF600, (0x01 << 24) | 0x02AAA1, (0x04 << 24) | 0x77F784}, /* channel 153 */ 653 + {157, (0x00 << 24) | 0x0FF600, (0x01 << 24) | 0x0D5551, (0x04 << 24) | 0x77F784}, /* channel 157 */ 654 + {161, (0x00 << 24) | 0x0FF610, (0x01 << 24) | 0x180001, (0x04 << 24) | 0x77F784}, /* channel 161 */ 655 + {165, (0x00 << 24) | 0x0FF610, (0x01 << 24) | 0x02AAA1, (0x04 << 24) | 0x77F784} /* channel 165 */ 597 656 }; 598 657 599 - //; RF Calibration <=== Register 0x0F 600 - //0x0F 0x1ABA8F; start from 2.4Ghz default state 601 - //0x0F 0x9ABA8F; TXDC compensation 602 - //0x0F 0x3ABA8F; RXFIL adjustment 603 - //0x0F 0x1ABA8F; restore 2.4Ghz default state 658 + /* 659 + * RF Calibration <=== Register 0x0F 660 + * 0x0F 0x1ABA8F; start from 2.4Ghz default state 661 + * 0x0F 0x9ABA8F; TXDC compensation 662 + * 0x0F 0x3ABA8F; RXFIL adjustment 663 + * 0x0F 0x1ABA8F; restore 2.4Ghz default state 664 + */ 604 665 605 - //;TXVGA Mapping Table <=== Register 0x0B 606 - u32 al7230_txvga_data[][2] = 607 - { 608 - {0x08040B, 0}, //TXVGA=0; 609 - {0x08041B, 1}, //TXVGA=1; 610 - {0x08042B, 2}, //TXVGA=2; 611 - {0x08043B, 3}, //TXVGA=3; 612 - {0x08044B, 4}, //TXVGA=4; 613 - {0x08045B, 5}, //TXVGA=5; 614 - {0x08046B, 6}, //TXVGA=6; 615 - {0x08047B, 7}, //TXVGA=7; 616 - {0x08048B, 8}, //TXVGA=8; 617 - {0x08049B, 9}, //TXVGA=9; 618 - {0x0804AB, 10}, //TXVGA=10; 619 - {0x0804BB, 11}, //TXVGA=11; 620 - {0x0804CB, 12}, //TXVGA=12; 621 - {0x0804DB, 13}, //TXVGA=13; 622 - {0x0804EB, 14}, //TXVGA=14; 623 - {0x0804FB, 15}, //TXVGA=15; 624 - {0x08050B, 16}, //TXVGA=16; 625 - {0x08051B, 17}, //TXVGA=17; 626 - {0x08052B, 18}, //TXVGA=18; 627 - {0x08053B, 19}, //TXVGA=19; 628 - {0x08054B, 20}, //TXVGA=20; 629 - {0x08055B, 21}, //TXVGA=21; 630 - {0x08056B, 22}, //TXVGA=22; 631 - {0x08057B, 23}, //TXVGA=23; 632 - {0x08058B, 24}, //TXVGA=24; 633 - {0x08059B, 25}, //TXVGA=25; 634 - {0x0805AB, 26}, //TXVGA=26; 635 - {0x0805BB, 27}, //TXVGA=27; 636 - {0x0805CB, 28}, //TXVGA=28; 637 - {0x0805DB, 29}, //TXVGA=29; 638 - {0x0805EB, 30}, //TXVGA=30; 639 - {0x0805FB, 31}, //TXVGA=31; 640 - {0x08060B, 32}, //TXVGA=32; 641 - {0x08061B, 33}, //TXVGA=33; 642 - {0x08062B, 34}, //TXVGA=34; 643 - {0x08063B, 35}, //TXVGA=35; 644 - {0x08064B, 36}, //TXVGA=36; 645 - {0x08065B, 37}, //TXVGA=37; 646 - {0x08066B, 38}, //TXVGA=38; 647 - {0x08067B, 39}, //TXVGA=39; 648 - {0x08068B, 40}, //TXVGA=40; 649 - {0x08069B, 41}, //TXVGA=41; 650 - {0x0806AB, 42}, //TXVGA=42; 651 - {0x0806BB, 43}, //TXVGA=43; 652 - {0x0806CB, 44}, //TXVGA=44; 653 - {0x0806DB, 45}, //TXVGA=45; 654 - {0x0806EB, 46}, //TXVGA=46; 655 - {0x0806FB, 47}, //TXVGA=47; 656 - {0x08070B, 48}, //TXVGA=48; 657 - {0x08071B, 49}, //TXVGA=49; 658 - {0x08072B, 50}, //TXVGA=50; 659 - {0x08073B, 51}, //TXVGA=51; 660 - {0x08074B, 52}, //TXVGA=52; 661 - {0x08075B, 53}, //TXVGA=53; 662 - {0x08076B, 54}, //TXVGA=54; 663 - {0x08077B, 55}, //TXVGA=55; 664 - {0x08078B, 56}, //TXVGA=56; 665 - {0x08079B, 57}, //TXVGA=57; 666 - {0x0807AB, 58}, //TXVGA=58; 667 - {0x0807BB, 59}, //TXVGA=59; 668 - {0x0807CB, 60}, //TXVGA=60; 669 - {0x0807DB, 61}, //TXVGA=61; 670 - {0x0807EB, 62}, //TXVGA=62; 671 - {0x0807FB, 63}, //TXVGA=63; 666 + /* TXVGA Mapping Table <=== Register 0x0B */ 667 + u32 al7230_txvga_data[][2] = { 668 + {0x08040B, 0}, /* TXVGA = 0; */ 669 + {0x08041B, 1}, /* TXVGA = 1; */ 670 + {0x08042B, 2}, /* TXVGA = 2; */ 671 + {0x08043B, 3}, /* TXVGA = 3; */ 672 + {0x08044B, 4}, /* TXVGA = 4; */ 673 + {0x08045B, 5}, /* TXVGA = 5; */ 674 + {0x08046B, 6}, /* TXVGA = 6; */ 675 + {0x08047B, 7}, /* TXVGA = 7; */ 676 + {0x08048B, 8}, /* TXVGA = 8; */ 677 + {0x08049B, 9}, /* TXVGA = 9; */ 678 + {0x0804AB, 10}, /* TXVGA = 10; */ 679 + {0x0804BB, 11}, /* TXVGA = 11; */ 680 + {0x0804CB, 12}, /* TXVGA = 12; */ 681 + {0x0804DB, 13}, /* TXVGA = 13; */ 682 + {0x0804EB, 14}, /* TXVGA = 14; */ 683 + {0x0804FB, 15}, /* TXVGA = 15; */ 684 + {0x08050B, 16}, /* TXVGA = 16; */ 685 + {0x08051B, 17}, /* TXVGA = 17; */ 686 + {0x08052B, 18}, /* TXVGA = 18; */ 687 + {0x08053B, 19}, /* TXVGA = 19; */ 688 + {0x08054B, 20}, /* TXVGA = 20; */ 689 + {0x08055B, 21}, /* TXVGA = 21; */ 690 + {0x08056B, 22}, /* TXVGA = 22; */ 691 + {0x08057B, 23}, /* TXVGA = 23; */ 692 + {0x08058B, 24}, /* TXVGA = 24; */ 693 + {0x08059B, 25}, /* TXVGA = 25; */ 694 + {0x0805AB, 26}, /* TXVGA = 26; */ 695 + {0x0805BB, 27}, /* TXVGA = 27; */ 696 + {0x0805CB, 28}, /* TXVGA = 28; */ 697 + {0x0805DB, 29}, /* TXVGA = 29; */ 698 + {0x0805EB, 30}, /* TXVGA = 30; */ 699 + {0x0805FB, 31}, /* TXVGA = 31; */ 700 + {0x08060B, 32}, /* TXVGA = 32; */ 701 + {0x08061B, 33}, /* TXVGA = 33; */ 702 + {0x08062B, 34}, /* TXVGA = 34; */ 703 + {0x08063B, 35}, /* TXVGA = 35; */ 704 + {0x08064B, 36}, /* TXVGA = 36; */ 705 + {0x08065B, 37}, /* TXVGA = 37; */ 706 + {0x08066B, 38}, /* TXVGA = 38; */ 707 + {0x08067B, 39}, /* TXVGA = 39; */ 708 + {0x08068B, 40}, /* TXVGA = 40; */ 709 + {0x08069B, 41}, /* TXVGA = 41; */ 710 + {0x0806AB, 42}, /* TXVGA = 42; */ 711 + {0x0806BB, 43}, /* TXVGA = 43; */ 712 + {0x0806CB, 44}, /* TXVGA = 44; */ 713 + {0x0806DB, 45}, /* TXVGA = 45; */ 714 + {0x0806EB, 46}, /* TXVGA = 46; */ 715 + {0x0806FB, 47}, /* TXVGA = 47; */ 716 + {0x08070B, 48}, /* TXVGA = 48; */ 717 + {0x08071B, 49}, /* TXVGA = 49; */ 718 + {0x08072B, 50}, /* TXVGA = 50; */ 719 + {0x08073B, 51}, /* TXVGA = 51; */ 720 + {0x08074B, 52}, /* TXVGA = 52; */ 721 + {0x08075B, 53}, /* TXVGA = 53; */ 722 + {0x08076B, 54}, /* TXVGA = 54; */ 723 + {0x08077B, 55}, /* TXVGA = 55; */ 724 + {0x08078B, 56}, /* TXVGA = 56; */ 725 + {0x08079B, 57}, /* TXVGA = 57; */ 726 + {0x0807AB, 58}, /* TXVGA = 58; */ 727 + {0x0807BB, 59}, /* TXVGA = 59; */ 728 + {0x0807CB, 60}, /* TXVGA = 60; */ 729 + {0x0807DB, 61}, /* TXVGA = 61; */ 730 + {0x0807EB, 62}, /* TXVGA = 62; */ 731 + {0x0807FB, 63}, /* TXVGA = 63; */ 672 732 }; 673 - //-------------------------------- 733 + /* ============================================= */ 674 734 675 - 676 - //; W89RF242 RFIC SPI programming initial data 677 - //; Winbond WLAN 11g RFIC BB-SPI register -- version FA5976A rev 1.3b 678 - //; Update Date: Ocotber 3, 2005 by PP10 Hsiang-Te Ho 679 - //; 680 - //; Version 1.3b revision items: (Oct. 1, 2005 by HTHo) for FA5976A 681 - u32 w89rf242_rf_data[] = 682 - { 683 - (0x00<<24)|0xF86100, // 20060721 0xF86100, //; 3E184; MODA (0x00) -- Normal mode ; calibration off 684 - (0x01<<24)|0xEFFFC2, //; 3BFFF; MODB (0x01) -- turn off RSSI, and other circuits are turned on 685 - (0x02<<24)|0x102504, //; 04094; FSET (0x02) -- default 20MHz crystal ; Icmp=1.5mA 686 - (0x03<<24)|0x026286, //; 0098A; FCHN (0x03) -- default CH7, 2442MHz 687 - (0x04<<24)|0x000208, // 20060612.1.a 0x0002C8, // 20050818 // 20050816 0x000388 688 - //; 02008; FCAL (0x04) -- XTAL Freq Trim=001000 (socket board#1); FA5976AYG_v1.3C 689 - (0x05<<24)|0x24C60A, // 20060612.1.a 0x24C58A, // 941003 0x24C48A, // 20050818.2 0x24848A, // 20050818 // 20050816 0x24C48A 690 - //; 09316; GANA (0x05) -- TX VGA default (TXVGA=0x18(12)) & TXGPK=110 ; FA5976A_1.3D 691 - (0x06<<24)|0x3432CC, // 941003 0x26C34C, // 20050818 0x06B40C 692 - //; 0D0CB; GANB (0x06) -- RXDC(DC offset) on; LNA=11; RXVGA=001011(11) ; RXFLSW=11(010001); RXGPK=00; RXGCF=00; -50dBm input 693 - (0x07<<24)|0x0C68CE, // 20050818.2 0x0C66CE, // 20050818 // 20050816 0x0C68CE 694 - //; 031A3; FILT (0x07) -- TX/RX filter with auto-tuning; TFLBW=011; RFLBW=100 695 - (0x08<<24)|0x100010, //; 04000; TCAL (0x08) -- //for LO 696 - (0x09<<24)|0x004012, // 20060612.1.a 0x6E4012, // 0x004012, 697 - //; 1B900; RCALA (0x09) -- FASTS=11; HPDE=01 (100nsec); SEHP=1 (select B0 pin=RXHP); RXHP=1 (Turn on RXHP function)(FA5976A_1.3C) 698 - (0x0A<<24)|0x704014, //; 1C100; RCALB (0x0A) 699 - (0x0B<<24)|0x18BDD6, // 941003 0x1805D6, // 20050818.2 0x1801D6, // 20050818 // 20050816 0x1805D6 700 - //; 062F7; IQCAL (0x0B) -- Turn on LO phase tuner=0111 & RX-LO phase = 0111; FA5976A_1.3B (2005/09/29) 701 - (0x0C<<24)|0x575558, // 20050818.2 0x555558, // 20050818 // 20050816 0x575558 702 - //; 15D55 ; IBSA (0x0C) -- IFPre =11 ; TC5376A_v1.3A for corner 703 - (0x0D<<24)|0x55545A, // 20060612.1.a 0x55555A, 704 - //; 15555 ; IBSB (0x0D) 705 - (0x0E<<24)|0x5557DC, // 20060612.1.a 0x55555C, // 941003 0x5557DC, 706 - //; 1555F ; IBSC (0x0E) -- IRLNA & IRLNB (PTAT & Const current)=01/01; FA5976B_1.3F (2005/11/25) 707 - (0x10<<24)|0x000C20, // 941003 0x000020, // 20050818 708 - //; 00030 ; TMODA (0x10) -- LNA_gain_step=0011 ; LNA=15/16dB 709 - (0x11<<24)|0x0C0022, // 941003 0x030022 // 20050818.2 0x030022 // 20050818 // 20050816 0x0C0022 710 - //; 03000 ; TMODB (0x11) -- Turn ON RX-Q path Test Switch; To improve IQ path group delay (FA5976A_1.3C) 711 - (0x12<<24)|0x000024 // 20060612.1.a 0x001824 // 941003 add 712 - //; TMODC (0x12) -- Turn OFF Tempearure sensor 735 + /* 736 + * W89RF242 RFIC SPI programming initial data 737 + * Winbond WLAN 11g RFIC BB-SPI register -- version FA5976A rev 1.3b 738 + */ 739 + u32 w89rf242_rf_data[] = { 740 + (0x00 << 24) | 0xF86100, /* 3E184; MODA (0x00) -- Normal mode ; calibration off */ 741 + (0x01 << 24) | 0xEFFFC2, /* 3BFFF; MODB (0x01) -- turn off RSSI, and other circuits are turned on */ 742 + (0x02 << 24) | 0x102504, /* 04094; FSET (0x02) -- default 20MHz crystal ; Icmp=1.5mA */ 743 + (0x03 << 24) | 0x026286, /* 0098A; FCHN (0x03) -- default CH7, 2442MHz */ 744 + (0x04 << 24) | 0x000208, /* 02008; FCAL (0x04) -- XTAL Freq Trim=001000 (socket board#1); FA5976AYG_v1.3C */ 745 + (0x05 << 24) | 0x24C60A, /* 09316; GANA (0x05) -- TX VGA default (TXVGA=0x18(12)) & TXGPK=110 ; FA5976A_1.3D */ 746 + (0x06 << 24) | 0x3432CC, /* 0D0CB; GANB (0x06) -- RXDC(DC offset) on; LNA=11; RXVGA=001011(11) ; RXFLSW=11(010001); RXGPK=00; RXGCF=00; -50dBm input */ 747 + (0x07 << 24) | 0x0C68CE, /* 031A3; FILT (0x07) -- TX/RX filter with auto-tuning; TFLBW=011; RFLBW=100 */ 748 + (0x08 << 24) | 0x100010, /* 04000; TCAL (0x08) -- for LO */ 749 + (0x09 << 24) | 0x004012, /* 1B900; RCALA (0x09) -- FASTS=11; HPDE=01 (100nsec); SEHP=1 (select B0 pin=RXHP); RXHP=1 (Turn on RXHP function)(FA5976A_1.3C) */ 750 + (0x0A << 24) | 0x704014, /* 1C100; RCALB (0x0A) */ 751 + (0x0B << 24) | 0x18BDD6, /* 062F7; IQCAL (0x0B) -- Turn on LO phase tuner=0111 & RX-LO phase = 0111; FA5976A_1.3B */ 752 + (0x0C << 24) | 0x575558, /* 15D55 ; IBSA (0x0C) -- IFPre =11 ; TC5376A_v1.3A for corner */ 753 + (0x0D << 24) | 0x55545A, /* 15555 ; IBSB (0x0D) */ 754 + (0x0E << 24) | 0x5557DC, /* 1555F ; IBSC (0x0E) -- IRLNA & IRLNB (PTAT & Const current)=01/01; FA5976B_1.3F */ 755 + (0x10 << 24) | 0x000C20, /* 00030 ; TMODA (0x10) -- LNA_gain_step=0011 ; LNA=15/16dB */ 756 + (0x11 << 24) | 0x0C0022, /* 03000 ; TMODB (0x11) -- Turn ON RX-Q path Test Switch; To improve IQ path group delay (FA5976A_1.3C) */ 757 + (0x12 << 24) | 0x000024 /* TMODC (0x12) -- Turn OFF Tempearure sensor */ 713 758 }; 714 759 715 - u32 w89rf242_channel_data_24[][2] = 716 - { 717 - {(0x03<<24)|0x025B06, (0x04<<24)|0x080408}, // channe1 01 718 - {(0x03<<24)|0x025C46, (0x04<<24)|0x080408}, // channe1 02 719 - {(0x03<<24)|0x025D86, (0x04<<24)|0x080408}, // channe1 03 720 - {(0x03<<24)|0x025EC6, (0x04<<24)|0x080408}, // channe1 04 721 - {(0x03<<24)|0x026006, (0x04<<24)|0x080408}, // channe1 05 722 - {(0x03<<24)|0x026146, (0x04<<24)|0x080408}, // channe1 06 723 - {(0x03<<24)|0x026286, (0x04<<24)|0x080408}, // channe1 07 724 - {(0x03<<24)|0x0263C6, (0x04<<24)|0x080408}, // channe1 08 725 - {(0x03<<24)|0x026506, (0x04<<24)|0x080408}, // channe1 09 726 - {(0x03<<24)|0x026646, (0x04<<24)|0x080408}, // channe1 10 727 - {(0x03<<24)|0x026786, (0x04<<24)|0x080408}, // channe1 11 728 - {(0x03<<24)|0x0268C6, (0x04<<24)|0x080408}, // channe1 12 729 - {(0x03<<24)|0x026A06, (0x04<<24)|0x080408}, // channe1 13 730 - {(0x03<<24)|0x026D06, (0x04<<24)|0x080408} // channe1 14 760 + u32 w89rf242_channel_data_24[][2] = { 761 + {(0x03 << 24) | 0x025B06, (0x04 << 24) | 0x080408}, /* channe1 01 */ 762 + {(0x03 << 24) | 0x025C46, (0x04 << 24) | 0x080408}, /* channe1 02 */ 763 + {(0x03 << 24) | 0x025D86, (0x04 << 24) | 0x080408}, /* channe1 03 */ 764 + {(0x03 << 24) | 0x025EC6, (0x04 << 24) | 0x080408}, /* channe1 04 */ 765 + {(0x03 << 24) | 0x026006, (0x04 << 24) | 0x080408}, /* channe1 05 */ 766 + {(0x03 << 24) | 0x026146, (0x04 << 24) | 0x080408}, /* channe1 06 */ 767 + {(0x03 << 24) | 0x026286, (0x04 << 24) | 0x080408}, /* channe1 07 */ 768 + {(0x03 << 24) | 0x0263C6, (0x04 << 24) | 0x080408}, /* channe1 08 */ 769 + {(0x03 << 24) | 0x026506, (0x04 << 24) | 0x080408}, /* channe1 09 */ 770 + {(0x03 << 24) | 0x026646, (0x04 << 24) | 0x080408}, /* channe1 10 */ 771 + {(0x03 << 24) | 0x026786, (0x04 << 24) | 0x080408}, /* channe1 11 */ 772 + {(0x03 << 24) | 0x0268C6, (0x04 << 24) | 0x080408}, /* channe1 12 */ 773 + {(0x03 << 24) | 0x026A06, (0x04 << 24) | 0x080408}, /* channe1 13 */ 774 + {(0x03 << 24) | 0x026D06, (0x04 << 24) | 0x080408} /* channe1 14 */ 731 775 }; 732 776 733 - u32 w89rf242_power_data_24[] = {(0x05<<24)|0x24C48A, (0x05<<24)|0x24C48A, (0x05<<24)|0x24C48A}; 777 + u32 w89rf242_power_data_24[] = {(0x05 << 24) | 0x24C48A, (0x05 << 24) | 0x24C48A, (0x05 << 24) | 0x24C48A}; 734 778 735 - // 20060315.6 Enlarge for new scale 736 - // 20060316.6 20060619.2.a add mapping array 737 - u32 w89rf242_txvga_old_mapping[][2] = 738 - { 739 - {0, 0} , // New <-> Old 779 + u32 w89rf242_txvga_old_mapping[][2] = { 780 + {0, 0} , /* New <-> Old */ 740 781 {1, 1} , 741 782 {2, 2} , 742 783 {3, 3} , 743 784 {4, 4} , 744 785 {6, 5} , 745 - {8, 6 }, 746 - {10, 7 }, 747 - {12, 8 }, 748 - {14, 9 }, 786 + {8, 6}, 787 + {10, 7}, 788 + {12, 8}, 789 + {14, 9}, 749 790 {16, 10}, 750 791 {18, 11}, 751 792 {20, 12}, ··· 735 818 {30, 17}, 736 819 {32, 18}, 737 820 {34, 19}, 738 - 739 - 740 821 }; 741 822 742 - // 20060619.3 modify from Bruce's mail 743 - u32 w89rf242_txvga_data[][5] = 744 - { 745 - //low gain mode 746 - { (0x05<<24)|0x24C00A, 0, 0x00292315, 0x0800FEFF, 0x52523131 },// ; min gain 747 - { (0x05<<24)|0x24C80A, 1, 0x00292315, 0x0800FEFF, 0x52523131 }, 748 - { (0x05<<24)|0x24C04A, 2, 0x00292315, 0x0800FEFF, 0x52523131 },// (default) +14dBm (ANT) 749 - { (0x05<<24)|0x24C84A, 3, 0x00292315, 0x0800FEFF, 0x52523131 }, 823 + u32 w89rf242_txvga_data[][5] = { 824 + /* low gain mode */ 825 + {(0x05 << 24) | 0x24C00A, 0, 0x00292315, 0x0800FEFF, 0x52523131}, /* min gain */ 826 + {(0x05 << 24) | 0x24C80A, 1, 0x00292315, 0x0800FEFF, 0x52523131}, 827 + {(0x05 << 24) | 0x24C04A, 2, 0x00292315, 0x0800FEFF, 0x52523131}, /* (default) +14dBm (ANT) */ 828 + {(0x05 << 24) | 0x24C84A, 3, 0x00292315, 0x0800FEFF, 0x52523131}, 750 829 751 - //TXVGA=0x10 752 - { (0x05<<24)|0x24C40A, 4, 0x00292315, 0x0800FEFF, 0x60603838 }, 753 - { (0x05<<24)|0x24C40A, 5, 0x00262114, 0x0700FEFF, 0x65653B3B }, 830 + /* TXVGA=0x10 */ 831 + {(0x05 << 24) | 0x24C40A, 4, 0x00292315, 0x0800FEFF, 0x60603838}, 832 + {(0x05 << 24) | 0x24C40A, 5, 0x00262114, 0x0700FEFF, 0x65653B3B}, 754 833 755 - //TXVGA=0x11 756 - { (0x05<<24)|0x24C44A, 6, 0x00241F13, 0x0700FFFF, 0x58583333 }, 757 - { (0x05<<24)|0x24C44A, 7, 0x00292315, 0x0800FEFF, 0x5E5E3737 }, 834 + /* TXVGA=0x11 */ 835 + { (0x05 << 24) | 0x24C44A, 6, 0x00241F13, 0x0700FFFF, 0x58583333}, 836 + { (0x05 << 24) | 0x24C44A, 7, 0x00292315, 0x0800FEFF, 0x5E5E3737}, 758 837 759 - //TXVGA=0x12 760 - { (0x05<<24)|0x24C48A, 8, 0x00262114, 0x0700FEFF, 0x53533030 }, 761 - { (0x05<<24)|0x24C48A, 9, 0x00241F13, 0x0700FFFF, 0x59593434 }, 838 + /* TXVGA=0x12 */ 839 + {(0x05 << 24) | 0x24C48A, 8, 0x00262114, 0x0700FEFF, 0x53533030}, 840 + {(0x05 << 24) | 0x24C48A, 9, 0x00241F13, 0x0700FFFF, 0x59593434}, 762 841 763 - //TXVGA=0x13 764 - { (0x05<<24)|0x24C4CA, 10, 0x00292315, 0x0800FEFF, 0x52523030 }, 765 - { (0x05<<24)|0x24C4CA, 11, 0x00262114, 0x0700FEFF, 0x56563232 }, 842 + /* TXVGA=0x13 */ 843 + {(0x05 << 24) | 0x24C4CA, 10, 0x00292315, 0x0800FEFF, 0x52523030}, 844 + {(0x05 << 24) | 0x24C4CA, 11, 0x00262114, 0x0700FEFF, 0x56563232}, 766 845 767 - //TXVGA=0x14 768 - { (0x05<<24)|0x24C50A, 12, 0x00292315, 0x0800FEFF, 0x54543131 }, 769 - { (0x05<<24)|0x24C50A, 13, 0x00262114, 0x0700FEFF, 0x58583434 }, 846 + /* TXVGA=0x14 */ 847 + {(0x05 << 24) | 0x24C50A, 12, 0x00292315, 0x0800FEFF, 0x54543131}, 848 + {(0x05 << 24) | 0x24C50A, 13, 0x00262114, 0x0700FEFF, 0x58583434}, 770 849 771 - //TXVGA=0x15 772 - { (0x05<<24)|0x24C54A, 14, 0x00292315, 0x0800FEFF, 0x54543131 }, 773 - { (0x05<<24)|0x24C54A, 15, 0x00262114, 0x0700FEFF, 0x59593434 }, 850 + /* TXVGA=0x15 */ 851 + {(0x05 << 24) | 0x24C54A, 14, 0x00292315, 0x0800FEFF, 0x54543131}, 852 + {(0x05 << 24) | 0x24C54A, 15, 0x00262114, 0x0700FEFF, 0x59593434}, 774 853 775 - //TXVGA=0x16 776 - { (0x05<<24)|0x24C58A, 16, 0x00292315, 0x0800FEFF, 0x55553131 }, 777 - { (0x05<<24)|0x24C58A, 17, 0x00292315, 0x0800FEFF, 0x5B5B3535 }, 854 + /* TXVGA=0x16 */ 855 + {(0x05 << 24) | 0x24C58A, 16, 0x00292315, 0x0800FEFF, 0x55553131}, 856 + {(0x05 << 24) | 0x24C58A, 17, 0x00292315, 0x0800FEFF, 0x5B5B3535}, 778 857 779 - //TXVGA=0x17 780 - { (0x05<<24)|0x24C5CA, 18, 0x00262114, 0x0700FEFF, 0x51512F2F }, 781 - { (0x05<<24)|0x24C5CA, 19, 0x00241F13, 0x0700FFFF, 0x55553131 }, 858 + /* TXVGA=0x17 */ 859 + {(0x05 << 24) | 0x24C5CA, 18, 0x00262114, 0x0700FEFF, 0x51512F2F}, 860 + {(0x05 << 24) | 0x24C5CA, 19, 0x00241F13, 0x0700FFFF, 0x55553131}, 782 861 783 - //TXVGA=0x18 784 - { (0x05<<24)|0x24C60A, 20, 0x00292315, 0x0800FEFF, 0x4F4F2E2E }, 785 - { (0x05<<24)|0x24C60A, 21, 0x00262114, 0x0700FEFF, 0x53533030 }, 862 + /* TXVGA=0x18 */ 863 + {(0x05 << 24) | 0x24C60A, 20, 0x00292315, 0x0800FEFF, 0x4F4F2E2E}, 864 + {(0x05 << 24) | 0x24C60A, 21, 0x00262114, 0x0700FEFF, 0x53533030}, 786 865 787 - //TXVGA=0x19 788 - { (0x05<<24)|0x24C64A, 22, 0x00292315, 0x0800FEFF, 0x4E4E2D2D }, 789 - { (0x05<<24)|0x24C64A, 23, 0x00262114, 0x0700FEFF, 0x53533030 }, 866 + /* TXVGA=0x19 */ 867 + {(0x05 << 24) | 0x24C64A, 22, 0x00292315, 0x0800FEFF, 0x4E4E2D2D}, 868 + {(0x05 << 24) | 0x24C64A, 23, 0x00262114, 0x0700FEFF, 0x53533030}, 790 869 791 - //TXVGA=0x1A 792 - { (0x05<<24)|0x24C68A, 24, 0x00292315, 0x0800FEFF, 0x50502E2E }, 793 - { (0x05<<24)|0x24C68A, 25, 0x00262114, 0x0700FEFF, 0x55553131 }, 870 + /* TXVGA=0x1A */ 871 + {(0x05 << 24) | 0x24C68A, 24, 0x00292315, 0x0800FEFF, 0x50502E2E}, 872 + {(0x05 << 24) | 0x24C68A, 25, 0x00262114, 0x0700FEFF, 0x55553131}, 794 873 795 - //TXVGA=0x1B 796 - { (0x05<<24)|0x24C6CA, 26, 0x00262114, 0x0700FEFF, 0x53533030 }, 797 - { (0x05<<24)|0x24C6CA, 27, 0x00292315, 0x0800FEFF, 0x5A5A3434 }, 874 + /* TXVGA=0x1B */ 875 + {(0x05 << 24) | 0x24C6CA, 26, 0x00262114, 0x0700FEFF, 0x53533030}, 876 + {(0x05 << 24) | 0x24C6CA, 27, 0x00292315, 0x0800FEFF, 0x5A5A3434}, 798 877 799 - //TXVGA=0x1C 800 - { (0x05<<24)|0x24C70A, 28, 0x00292315, 0x0800FEFF, 0x55553131 }, 801 - { (0x05<<24)|0x24C70A, 29, 0x00292315, 0x0800FEFF, 0x5D5D3636 }, 878 + /* TXVGA=0x1C */ 879 + {(0x05 << 24) | 0x24C70A, 28, 0x00292315, 0x0800FEFF, 0x55553131}, 880 + {(0x05 << 24) | 0x24C70A, 29, 0x00292315, 0x0800FEFF, 0x5D5D3636}, 802 881 803 - //TXVGA=0x1D 804 - { (0x05<<24)|0x24C74A, 30, 0x00292315, 0x0800FEFF, 0x5F5F3737 }, 805 - { (0x05<<24)|0x24C74A, 31, 0x00262114, 0x0700FEFF, 0x65653B3B }, 882 + /* TXVGA=0x1D */ 883 + {(0x05 << 24) | 0x24C74A, 30, 0x00292315, 0x0800FEFF, 0x5F5F3737}, 884 + {(0x05 << 24) | 0x24C74A, 31, 0x00262114, 0x0700FEFF, 0x65653B3B}, 806 885 807 - //TXVGA=0x1E 808 - { (0x05<<24)|0x24C78A, 32, 0x00292315, 0x0800FEFF, 0x66663B3B }, 809 - { (0x05<<24)|0x24C78A, 33, 0x00262114, 0x0700FEFF, 0x70704141 }, 886 + /* TXVGA=0x1E */ 887 + {(0x05 << 24) | 0x24C78A, 32, 0x00292315, 0x0800FEFF, 0x66663B3B}, 888 + {(0x05 << 24) | 0x24C78A, 33, 0x00262114, 0x0700FEFF, 0x70704141}, 810 889 811 - //TXVGA=0x1F 812 - { (0x05<<24)|0x24C7CA, 34, 0x00292315, 0x0800FEFF, 0x72724242 } 890 + /* TXVGA=0x1F */ 891 + {(0x05 << 24) | 0x24C7CA, 34, 0x00292315, 0x0800FEFF, 0x72724242} 813 892 }; 814 893 815 - /////////////////////////////////////////////////////////////////////////////////////////////////// 816 - /////////////////////////////////////////////////////////////////////////////////////////////////// 817 - /////////////////////////////////////////////////////////////////////////////////////////////////// 894 + /* ================================================================================================== */ 818 895 819 896 820 897 821 - //============================================================================================================= 822 - // Uxx_ReadEthernetAddress -- 823 - // 824 - // Routine Description: 825 - // Reads in the Ethernet address from the IC. 826 - // 827 - // Arguments: 828 - // pHwData - The pHwData structure 829 - // 830 - // Return Value: 831 - // 832 - // The address is stored in EthernetIDAddr. 833 - //============================================================================================================= 834 - void 835 - Uxx_ReadEthernetAddress( struct hw_data * pHwData ) 898 + /* 899 + * ============================================================================================================= 900 + * Uxx_ReadEthernetAddress -- 901 + * 902 + * Routine Description: 903 + * Reads in the Ethernet address from the IC. 904 + * 905 + * Arguments: 906 + * pHwData - The pHwData structure 907 + * 908 + * Return Value: 909 + * 910 + * The address is stored in EthernetIDAddr. 911 + * ============================================================================================================= 912 + */ 913 + void Uxx_ReadEthernetAddress(struct hw_data *pHwData) 836 914 { 837 915 u32 ltmp; 838 916 839 - // Reading Ethernet address from EEPROM and set into hardware due to MAC address maybe change. 840 - // Only unplug and plug again can make hardware read EEPROM again. 20060727 841 - Wb35Reg_WriteSync( pHwData, 0x03b4, 0x08000000 ); // Start EEPROM access + Read + address(0x0d) 842 - Wb35Reg_ReadSync( pHwData, 0x03b4, &ltmp ); 843 - *(u16 *)pHwData->PermanentMacAddress = cpu_to_le16((u16)ltmp); //20060926 anson's endian 844 - Wb35Reg_WriteSync( pHwData, 0x03b4, 0x08010000 ); // Start EEPROM access + Read + address(0x0d) 845 - Wb35Reg_ReadSync( pHwData, 0x03b4, &ltmp ); 846 - *(u16 *)(pHwData->PermanentMacAddress + 2) = cpu_to_le16((u16)ltmp); //20060926 anson's endian 847 - Wb35Reg_WriteSync( pHwData, 0x03b4, 0x08020000 ); // Start EEPROM access + Read + address(0x0d) 848 - Wb35Reg_ReadSync( pHwData, 0x03b4, &ltmp ); 849 - *(u16 *)(pHwData->PermanentMacAddress + 4) = cpu_to_le16((u16)ltmp); //20060926 anson's endian 917 + /* 918 + * Reading Ethernet address from EEPROM and set into hardware due to MAC address maybe change. 919 + * Only unplug and plug again can make hardware read EEPROM again. 920 + */ 921 + Wb35Reg_WriteSync(pHwData, 0x03b4, 0x08000000); /* Start EEPROM access + Read + address(0x0d) */ 922 + Wb35Reg_ReadSync(pHwData, 0x03b4, &ltmp); 923 + *(u16 *)pHwData->PermanentMacAddress = cpu_to_le16((u16) ltmp); 924 + Wb35Reg_WriteSync(pHwData, 0x03b4, 0x08010000); /* Start EEPROM access + Read + address(0x0d) */ 925 + Wb35Reg_ReadSync(pHwData, 0x03b4, &ltmp); 926 + *(u16 *)(pHwData->PermanentMacAddress + 2) = cpu_to_le16((u16) ltmp); 927 + Wb35Reg_WriteSync(pHwData, 0x03b4, 0x08020000); /* Start EEPROM access + Read + address(0x0d) */ 928 + Wb35Reg_ReadSync(pHwData, 0x03b4, &ltmp); 929 + *(u16 *)(pHwData->PermanentMacAddress + 4) = cpu_to_le16((u16) ltmp); 850 930 *(u16 *)(pHwData->PermanentMacAddress + 6) = 0; 851 - Wb35Reg_WriteSync( pHwData, 0x03e8, cpu_to_le32(*(u32 *)pHwData->PermanentMacAddress) ); //20060926 anson's endian 852 - Wb35Reg_WriteSync( pHwData, 0x03ec, cpu_to_le32(*(u32 *)(pHwData->PermanentMacAddress+4)) ); //20060926 anson's endian 931 + Wb35Reg_WriteSync(pHwData, 0x03e8, cpu_to_le32(*(u32 *)pHwData->PermanentMacAddress)); 932 + Wb35Reg_WriteSync(pHwData, 0x03ec, cpu_to_le32(*(u32 *)(pHwData->PermanentMacAddress + 4))); 853 933 } 854 934 855 935 856 - //=============================================================================================================== 857 - // CardGetMulticastBit -- 858 - // Description: 859 - // For a given multicast address, returns the byte and bit in the card multicast registers that it hashes to. 860 - // Calls CardComputeCrc() to determine the CRC value. 861 - // Arguments: 862 - // Address - the address 863 - // Byte - the byte that it hashes to 864 - // Value - will have a 1 in the relevant bit 865 - // Return Value: 866 - // None. 867 - //============================================================================================================== 868 - void CardGetMulticastBit( u8 Address[ETH_ALEN], u8 *Byte, u8 *Value ) 936 + /* 937 + * =============================================================================================================== 938 + * CardGetMulticastBit -- 939 + * Description: 940 + * For a given multicast address, returns the byte and bit in the card multicast registers that it hashes to. 941 + * Calls CardComputeCrc() to determine the CRC value. 942 + * Arguments: 943 + * Address - the address 944 + * Byte - the byte that it hashes to 945 + * Value - will have a 1 in the relevant bit 946 + * Return Value: 947 + * None. 948 + * ============================================================================================================== 949 + */ 950 + void CardGetMulticastBit(u8 Address[ETH_ALEN], u8 *Byte, u8 *Value) 869 951 { 870 - u32 Crc; 871 - u32 BitNumber; 952 + u32 Crc; 953 + u32 BitNumber; 872 954 873 - // First compute the CRC. 874 - Crc = CardComputeCrc(Address, ETH_ALEN); 955 + /* First compute the CRC. */ 956 + Crc = CardComputeCrc(Address, ETH_ALEN); 875 957 876 - // The computed CRC is bit0~31 from left to right 877 - //At first we should do right shift 25bits, and read 7bits by using '&', 2^7=128 958 + /* The computed CRC is bit0~31 from left to right */ 959 + /* At first we should do right shift 25bits, and read 7bits by using '&', 2^7=128 */ 878 960 BitNumber = (u32) ((Crc >> 26) & 0x3f); 879 961 880 - *Byte = (u8) (BitNumber >> 3);// 900514 original (BitNumber / 8) 881 - *Value = (u8) ((u8)1 << (BitNumber % 8)); 962 + *Byte = (u8) (BitNumber >> 3); /* 900514 original (BitNumber / 8) */ 963 + *Value = (u8) ((u8) 1 << (BitNumber % 8)); 882 964 } 883 965 884 - void Uxx_power_on_procedure( struct hw_data * pHwData ) 966 + void Uxx_power_on_procedure(struct hw_data *pHwData) 885 967 { 886 968 u32 ltmp, loop; 887 969 888 - if( pHwData->phy_type <= RF_MAXIM_V1 ) 889 - Wb35Reg_WriteSync( pHwData, 0x03d4, 0xffffff38 ); 890 - else 891 - { 892 - Wb35Reg_WriteSync( pHwData, 0x03f4, 0xFF5807FF );// 20060721 For NEW IC 0xFF5807FF 893 - 894 - // 20060511.1 Fix the following 4 steps for Rx of RF 2230 initial fail 895 - Wb35Reg_WriteSync( pHwData, 0x03d4, 0x80 );// regulator on only 896 - msleep(10); // Modify 20051221.1.b 897 - Wb35Reg_WriteSync( pHwData, 0x03d4, 0xb8 );// REG_ON RF_RSTN on, and 898 - msleep(10); // Modify 20051221.1.b 899 - 970 + if (pHwData->phy_type <= RF_MAXIM_V1) 971 + Wb35Reg_WriteSync(pHwData, 0x03d4, 0xffffff38); 972 + else { 973 + Wb35Reg_WriteSync(pHwData, 0x03f4, 0xFF5807FF); 974 + Wb35Reg_WriteSync(pHwData, 0x03d4, 0x80); /* regulator on only */ 975 + msleep(10); 976 + Wb35Reg_WriteSync(pHwData, 0x03d4, 0xb8); /* REG_ON RF_RSTN on, and */ 977 + msleep(10); 900 978 ltmp = 0x4968; 901 - if( (pHwData->phy_type == RF_WB_242) || 902 - (RF_WB_242_1 == pHwData->phy_type) ) // 20060619.5 Add 979 + if ((pHwData->phy_type == RF_WB_242) || 980 + (RF_WB_242_1 == pHwData->phy_type)) 903 981 ltmp = 0x4468; 904 - Wb35Reg_WriteSync( pHwData, 0x03d0, ltmp ); 905 982 906 - Wb35Reg_WriteSync( pHwData, 0x03d4, 0xa0 );// PLL_PD REF_PD set to 0 983 + Wb35Reg_WriteSync(pHwData, 0x03d0, ltmp); 984 + Wb35Reg_WriteSync(pHwData, 0x03d4, 0xa0); /* PLL_PD REF_PD set to 0 */ 907 985 908 - msleep(20); // Modify 20051221.1.b 909 - Wb35Reg_ReadSync( pHwData, 0x03d0, &ltmp ); 910 - loop = 500; // Wait for 5 second 20061101 911 - while( !(ltmp & 0x20) && loop-- ) 912 - { 913 - msleep(10); // Modify 20051221.1.b 914 - if( !Wb35Reg_ReadSync( pHwData, 0x03d0, &ltmp ) ) 986 + msleep(20); 987 + Wb35Reg_ReadSync(pHwData, 0x03d0, &ltmp); 988 + loop = 500; /* Wait for 5 second */ 989 + while (!(ltmp & 0x20) && loop--) { 990 + msleep(10); 991 + if (!Wb35Reg_ReadSync(pHwData, 0x03d0, &ltmp)) 915 992 break; 916 993 } 917 994 918 - Wb35Reg_WriteSync( pHwData, 0x03d4, 0xe0 );// MLK_EN 995 + Wb35Reg_WriteSync(pHwData, 0x03d4, 0xe0); /* MLK_EN */ 919 996 } 920 997 921 - Wb35Reg_WriteSync( pHwData, 0x03b0, 1 );// Reset hardware first 922 - msleep(10); // Add this 20051221.1.b 998 + Wb35Reg_WriteSync(pHwData, 0x03b0, 1); /* Reset hardware first */ 999 + msleep(10); 923 1000 924 - // Set burst write delay 925 - Wb35Reg_WriteSync( pHwData, 0x03f8, 0x7ff ); 1001 + /* Set burst write delay */ 1002 + Wb35Reg_WriteSync(pHwData, 0x03f8, 0x7ff); 926 1003 } 927 1004 928 - void Set_ChanIndep_RfData_al7230_24( struct hw_data * pHwData, u32 *pltmp ,char number) 1005 + void Set_ChanIndep_RfData_al7230_24(struct hw_data *pHwData, u32 *pltmp , char number) 929 1006 { 930 1007 u8 i; 931 1008 932 - for( i=0; i<number; i++ ) 933 - { 1009 + for (i = 0; i < number; i++) { 934 1010 pHwData->phy_para[i] = al7230_rf_data_24[i]; 935 - pltmp[i] = (1 << 31) | (0 << 30) | (24 << 24) | (al7230_rf_data_24[i]&0xffffff); 1011 + pltmp[i] = (1 << 31) | (0 << 30) | (24 << 24) | (al7230_rf_data_24[i] & 0xffffff); 936 1012 } 937 1013 } 938 1014 939 - void Set_ChanIndep_RfData_al7230_50( struct hw_data * pHwData, u32 *pltmp, char number) 1015 + void Set_ChanIndep_RfData_al7230_50(struct hw_data *pHwData, u32 *pltmp, char number) 940 1016 { 941 1017 u8 i; 942 1018 943 - for( i=0; i<number; i++ ) 944 - { 1019 + for (i = 0; i < number; i++) { 945 1020 pHwData->phy_para[i] = al7230_rf_data_50[i]; 946 - pltmp[i] = (1 << 31) | (0 << 30) | (24 << 24) | (al7230_rf_data_50[i]&0xffffff); 1021 + pltmp[i] = (1 << 31) | (0 << 30) | (24 << 24) | (al7230_rf_data_50[i] & 0xffffff); 947 1022 } 948 1023 } 949 1024 950 1025 951 - //============================================================================================================= 952 - // RFSynthesizer_initial -- 953 - //============================================================================================================= 954 - void 955 - RFSynthesizer_initial(struct hw_data * pHwData) 1026 + /* 1027 + * ============================================================================================================= 1028 + * RFSynthesizer_initial -- 1029 + * ============================================================================================================= 1030 + */ 1031 + void RFSynthesizer_initial(struct hw_data *pHwData) 956 1032 { 957 1033 u32 altmp[32]; 958 - u32 * pltmp = altmp; 1034 + u32 *pltmp = altmp; 959 1035 u32 ltmp; 960 - u8 number=0x00; // The number of register vale 1036 + u8 number = 0x00; /* The number of register vale */ 961 1037 u8 i; 962 1038 963 - // 964 - // bit[31] SPI Enable. 965 - // 1=perform synthesizer program operation. This bit will 966 - // cleared automatically after the operation is completed. 967 - // bit[30] SPI R/W Control 968 - // 0=write, 1=read 969 - // bit[29:24] SPI Data Format Length 970 - // bit[17:4 ] RF Data bits. 971 - // bit[3 :0 ] RF address. 972 - switch( pHwData->phy_type ) 973 - { 1039 + /* 1040 + * bit[31] SPI Enable. 1041 + * 1=perform synthesizer program operation. This bit will 1042 + * cleared automatically after the operation is completed. 1043 + * bit[30] SPI R/W Control 1044 + * 0=write, 1=read 1045 + * bit[29:24] SPI Data Format Length 1046 + * bit[17:4 ] RF Data bits. 1047 + * bit[3 :0 ] RF address. 1048 + */ 1049 + switch (pHwData->phy_type) { 974 1050 case RF_MAXIM_2825: 975 - case RF_MAXIM_V1: // 11g Winbond 2nd BB(with Phy board (v1) + Maxim 331) 976 - number = sizeof(max2825_rf_data)/sizeof(max2825_rf_data[0]); 977 - for( i=0; i<number; i++ ) 978 - { 979 - pHwData->phy_para[i] = max2825_rf_data[i];// Backup Rf parameter 980 - pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2825_rf_data[i], 18); 1051 + case RF_MAXIM_V1: /* 11g Winbond 2nd BB(with Phy board (v1) + Maxim 331) */ 1052 + number = sizeof(max2825_rf_data) / sizeof(max2825_rf_data[0]); 1053 + for (i = 0; i < number; i++) { 1054 + pHwData->phy_para[i] = max2825_rf_data[i]; /* Backup Rf parameter */ 1055 + pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2825_rf_data[i], 18); 981 1056 } 982 1057 break; 983 - 984 1058 case RF_MAXIM_2827: 985 - number = sizeof(max2827_rf_data)/sizeof(max2827_rf_data[0]); 986 - for( i=0; i<number; i++ ) 987 - { 1059 + number = sizeof(max2827_rf_data) / sizeof(max2827_rf_data[0]); 1060 + for (i = 0; i < number; i++) { 988 1061 pHwData->phy_para[i] = max2827_rf_data[i]; 989 - pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2827_rf_data[i], 18); 1062 + pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2827_rf_data[i], 18); 990 1063 } 991 1064 break; 992 - 993 1065 case RF_MAXIM_2828: 994 - number = sizeof(max2828_rf_data)/sizeof(max2828_rf_data[0]); 995 - for( i=0; i<number; i++ ) 996 - { 1066 + number = sizeof(max2828_rf_data) / sizeof(max2828_rf_data[0]); 1067 + for (i = 0; i < number; i++) { 997 1068 pHwData->phy_para[i] = max2828_rf_data[i]; 998 - pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2828_rf_data[i], 18); 1069 + pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2828_rf_data[i], 18); 999 1070 } 1000 1071 break; 1001 - 1002 1072 case RF_MAXIM_2829: 1003 - number = sizeof(max2829_rf_data)/sizeof(max2829_rf_data[0]); 1004 - for( i=0; i<number; i++ ) 1005 - { 1073 + number = sizeof(max2829_rf_data) / sizeof(max2829_rf_data[0]); 1074 + for (i = 0; i < number; i++) { 1006 1075 pHwData->phy_para[i] = max2829_rf_data[i]; 1007 - pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2829_rf_data[i], 18); 1076 + pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2829_rf_data[i], 18); 1008 1077 } 1009 1078 break; 1010 - 1011 1079 case RF_AIROHA_2230: 1012 - number = sizeof(al2230_rf_data)/sizeof(al2230_rf_data[0]); 1013 - for( i=0; i<number; i++ ) 1014 - { 1080 + number = sizeof(al2230_rf_data) / sizeof(al2230_rf_data[0]); 1081 + for (i = 0; i < number; i++) { 1015 1082 pHwData->phy_para[i] = al2230_rf_data[i]; 1016 - pltmp[i] = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( al2230_rf_data[i], 20); 1083 + pltmp[i] = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse(al2230_rf_data[i], 20); 1017 1084 } 1018 1085 break; 1019 - 1020 1086 case RF_AIROHA_2230S: 1021 - number = sizeof(al2230s_rf_data)/sizeof(al2230s_rf_data[0]); 1022 - for( i=0; i<number; i++ ) 1023 - { 1087 + number = sizeof(al2230s_rf_data) / sizeof(al2230s_rf_data[0]); 1088 + for (i = 0; i < number; i++) { 1024 1089 pHwData->phy_para[i] = al2230s_rf_data[i]; 1025 - pltmp[i] = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( al2230s_rf_data[i], 20); 1090 + pltmp[i] = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse(al2230s_rf_data[i], 20); 1026 1091 } 1027 1092 break; 1028 - 1029 1093 case RF_AIROHA_7230: 1030 - 1031 - //Start to fill RF parameters, PLL_ON should be pulled low. 1032 - Wb35Reg_WriteSync( pHwData, 0x03dc, 0x00000000 ); 1033 - #ifdef _PE_STATE_DUMP_ 1094 + /* Start to fill RF parameters, PLL_ON should be pulled low. */ 1095 + Wb35Reg_WriteSync(pHwData, 0x03dc, 0x00000000); 1096 + #ifdef _PE_STATE_DUMP_ 1034 1097 printk("* PLL_ON low\n"); 1035 - #endif 1036 - 1037 - number = sizeof(al7230_rf_data_24)/sizeof(al7230_rf_data_24[0]); 1098 + #endif 1099 + number = sizeof(al7230_rf_data_24) / sizeof(al7230_rf_data_24[0]); 1038 1100 Set_ChanIndep_RfData_al7230_24(pHwData, pltmp, number); 1039 1101 break; 1040 - 1041 1102 case RF_WB_242: 1042 - case RF_WB_242_1: // 20060619.5 Add 1043 - number = sizeof(w89rf242_rf_data)/sizeof(w89rf242_rf_data[0]); 1044 - for( i=0; i<number; i++ ) 1045 - { 1103 + case RF_WB_242_1: 1104 + number = sizeof(w89rf242_rf_data) / sizeof(w89rf242_rf_data[0]); 1105 + for (i = 0; i < number; i++) { 1046 1106 ltmp = w89rf242_rf_data[i]; 1047 - if( i == 4 ) // Update the VCO trim from EEPROM 1048 - { 1049 - ltmp &= ~0xff0; // Mask bit4 ~bit11 1050 - ltmp |= pHwData->VCO_trim<<4; 1107 + if (i == 4) { /* Update the VCO trim from EEPROM */ 1108 + ltmp &= ~0xff0; /* Mask bit4 ~bit11 */ 1109 + ltmp |= pHwData->VCO_trim << 4; 1051 1110 } 1052 1111 1053 1112 pHwData->phy_para[i] = ltmp; 1054 - pltmp[i] = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( ltmp, 24); 1113 + pltmp[i] = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse(ltmp, 24); 1055 1114 } 1056 1115 break; 1057 1116 } 1058 1117 1059 1118 pHwData->phy_number = number; 1060 1119 1061 - // The 16 is the maximum capability of hardware. Here use 12 1062 - if( number > 12 ) { 1063 - //Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 12, NO_INCREMENT ); 1064 - for( i=0; i<12; i++ ) // For Al2230 1065 - Wb35Reg_WriteSync( pHwData, 0x0864, pltmp[i] ); 1120 + /* The 16 is the maximum capability of hardware. Here use 12 */ 1121 + if (number > 12) { 1122 + for (i = 0; i < 12; i++) /* For Al2230 */ 1123 + Wb35Reg_WriteSync(pHwData, 0x0864, pltmp[i]); 1066 1124 1067 1125 pltmp += 12; 1068 1126 number -= 12; 1069 1127 } 1070 1128 1071 - // Write to register. number must less and equal than 16 1072 - for( i=0; i<number; i++ ) 1073 - Wb35Reg_WriteSync( pHwData, 0x864, pltmp[i] ); 1129 + /* Write to register. number must less and equal than 16 */ 1130 + for (i = 0; i < number; i++) 1131 + Wb35Reg_WriteSync(pHwData, 0x864, pltmp[i]); 1074 1132 1075 - // 20060630.1 Calibration only 1 time 1076 - if( pHwData->CalOneTime ) 1133 + /* Calibration only 1 time */ 1134 + if (pHwData->CalOneTime) 1077 1135 return; 1078 1136 pHwData->CalOneTime = 1; 1079 1137 1080 - switch( pHwData->phy_type ) 1081 - { 1082 - case RF_AIROHA_2230: 1138 + switch (pHwData->phy_type) { 1139 + case RF_AIROHA_2230: 1140 + ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse((0x07 << 20) | 0xE168E, 20); 1141 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1142 + msleep(10); 1143 + ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse(al2230_rf_data[7], 20); 1144 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1145 + msleep(10); 1146 + case RF_AIROHA_2230S: 1147 + Wb35Reg_WriteSync(pHwData, 0x03d4, 0x80); /* regulator on only */ 1148 + msleep(10); 1149 + Wb35Reg_WriteSync(pHwData, 0x03d4, 0xa0); /* PLL_PD REF_PD set to 0 */ 1150 + msleep(10); 1151 + Wb35Reg_WriteSync(pHwData, 0x03d4, 0xe0); /* MLK_EN */ 1152 + Wb35Reg_WriteSync(pHwData, 0x03b0, 1); /* Reset hardware first */ 1153 + msleep(10); 1154 + /* ========================================================= */ 1083 1155 1084 - // 20060511.1 --- Modifying the follow step for Rx issue----------------- 1085 - ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( (0x07<<20)|0xE168E, 20); 1086 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1087 - msleep(10); 1088 - ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( al2230_rf_data[7], 20); 1089 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1090 - msleep(10); 1156 + /* The follow code doesn't use the burst-write mode */ 1157 + ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse((0x0F<<20) | 0xF01A0, 20); 1158 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1091 1159 1092 - case RF_AIROHA_2230S: // 20060420 Add this 1160 + ltmp = pHwData->reg.BB5C & 0xfffff000; 1161 + Wb35Reg_WriteSync(pHwData, 0x105c, ltmp); 1162 + pHwData->reg.BB50 |= 0x13; /* (MASK_IQCAL_MODE|MASK_CALIB_START) */ 1163 + Wb35Reg_WriteSync(pHwData, 0x1050, pHwData->reg.BB50); 1164 + msleep(5); 1093 1165 1094 - // 20060511.1 --- Modifying the follow step for Rx issue----------------- 1095 - Wb35Reg_WriteSync( pHwData, 0x03d4, 0x80 );// regulator on only 1096 - msleep(10); // Modify 20051221.1.b 1166 + ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse((0x0F << 20) | 0xF01B0, 20); 1167 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1168 + msleep(5); 1097 1169 1098 - Wb35Reg_WriteSync( pHwData, 0x03d4, 0xa0 );// PLL_PD REF_PD set to 0 1099 - msleep(10); // Modify 20051221.1.b 1170 + ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse((0x0F << 20) | 0xF01E0, 20); 1171 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1172 + msleep(5); 1100 1173 1101 - Wb35Reg_WriteSync( pHwData, 0x03d4, 0xe0 );// MLK_EN 1102 - Wb35Reg_WriteSync( pHwData, 0x03b0, 1 );// Reset hardware first 1103 - msleep(10); // Add this 20051221.1.b 1104 - //------------------------------------------------------------------------ 1174 + ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse((0x0F << 20) | 0xF01A0, 20); 1175 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp) ; 1105 1176 1106 - // The follow code doesn't use the burst-write mode 1107 - //phy_set_rf_data(phw_data, 0x0F, (0x0F<<20) | 0xF01A0); //Raise Initial Setting 1108 - ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( (0x0F<<20) | 0xF01A0, 20); 1109 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1177 + Wb35Reg_WriteSync(pHwData, 0x105c, pHwData->reg.BB5C); 1178 + pHwData->reg.BB50 &= ~0x13; /* (MASK_IQCAL_MODE|MASK_CALIB_START); */ 1179 + Wb35Reg_WriteSync(pHwData, 0x1050, pHwData->reg.BB50); 1180 + break; 1181 + case RF_AIROHA_7230: 1182 + /* RF parameters have filled completely, PLL_ON should be pulled high */ 1183 + Wb35Reg_WriteSync(pHwData, 0x03dc, 0x00000080); 1184 + #ifdef _PE_STATE_DUMP_ 1185 + printk("* PLL_ON high\n"); 1186 + #endif 1110 1187 1111 - ltmp = pHwData->reg.BB5C & 0xfffff000; 1112 - Wb35Reg_WriteSync( pHwData, 0x105c, ltmp ); 1113 - pHwData->reg.BB50 |= 0x13;//(MASK_IQCAL_MODE|MASK_CALIB_START);//20060315.1 modify 1114 - Wb35Reg_WriteSync(pHwData, 0x1050, pHwData->reg.BB50); 1115 - msleep(5); 1188 + /* 2.4GHz */ 1189 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x9ABA8F; 1190 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1191 + msleep(5); 1192 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x3ABA8F; 1193 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1194 + msleep(5); 1195 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x1ABA8F; 1196 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1197 + msleep(5); 1116 1198 1117 - //phy_set_rf_data(phw_data, 0x0F, (0x0F<<20) | 0xF01B0); //Activate Filter Cal. 1118 - ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( (0x0F<<20) | 0xF01B0, 20); 1119 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1120 - msleep(5); 1199 + /* 5GHz */ 1200 + Wb35Reg_WriteSync(pHwData, 0x03dc, 0x00000000); 1201 + #ifdef _PE_STATE_DUMP_ 1202 + printk("* PLL_ON low\n"); 1203 + #endif 1121 1204 1122 - //phy_set_rf_data(phw_data, 0x0F, (0x0F<<20) | 0xF01e0); //Activate TX DCC 1123 - ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( (0x0F<<20) | 0xF01E0, 20); 1124 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1125 - msleep(5); 1205 + number = sizeof(al7230_rf_data_50) / sizeof(al7230_rf_data_50[0]); 1206 + Set_ChanIndep_RfData_al7230_50(pHwData, pltmp, number); 1207 + /* Write to register. number must less and equal than 16 */ 1208 + for (i = 0; i < number; i++) 1209 + Wb35Reg_WriteSync(pHwData, 0x0864, pltmp[i]); 1210 + msleep(5); 1126 1211 1127 - //phy_set_rf_data(phw_data, 0x0F, (0x0F<<20) | 0xF01A0); //Resotre Initial Setting 1128 - ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( (0x0F<<20) | 0xF01A0, 20); 1129 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1212 + Wb35Reg_WriteSync(pHwData, 0x03dc, 0x00000080); 1213 + #ifdef _PE_STATE_DUMP_ 1214 + printk("* PLL_ON high\n"); 1215 + #endif 1130 1216 1131 - // //Force TXI(Q)P(N) to normal control 1132 - Wb35Reg_WriteSync( pHwData, 0x105c, pHwData->reg.BB5C ); 1133 - pHwData->reg.BB50 &= ~0x13;//(MASK_IQCAL_MODE|MASK_CALIB_START); 1134 - Wb35Reg_WriteSync( pHwData, 0x1050, pHwData->reg.BB50); 1135 - break; 1217 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x9ABA8F; 1218 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1219 + msleep(5); 1220 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x3ABA8F; 1221 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1222 + msleep(5); 1223 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x12BACF; 1224 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1225 + msleep(5); 1226 + break; 1227 + case RF_WB_242: 1228 + case RF_WB_242_1: 1229 + /* for FA5976A */ 1230 + ltmp = pHwData->reg.BB5C & 0xfffff000; 1231 + Wb35Reg_WriteSync(pHwData, 0x105c, ltmp); 1232 + Wb35Reg_WriteSync(pHwData, 0x1058, 0); 1233 + pHwData->reg.BB50 |= 0x3; /* (MASK_IQCAL_MODE|MASK_CALIB_START); */ 1234 + Wb35Reg_WriteSync(pHwData, 0x1050, pHwData->reg.BB50); 1136 1235 1137 - case RF_AIROHA_7230: 1236 + /* ----- Calibration (1). VCO frequency calibration */ 1237 + /* Calibration (1a.0). Synthesizer reset */ 1238 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x0F<<24) | 0x00101E, 24); 1239 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1240 + msleep(5); 1241 + /* Calibration (1a). VCO frequency calibration mode ; waiting 2msec VCO calibration time */ 1242 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFE69c0, 24); 1243 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1244 + msleep(2); 1138 1245 1139 - //RF parameters have filled completely, PLL_ON should be 1140 - //pulled high 1141 - Wb35Reg_WriteSync( pHwData, 0x03dc, 0x00000080 ); 1142 - #ifdef _PE_STATE_DUMP_ 1143 - printk("* PLL_ON high\n"); 1144 - #endif 1246 + /* ----- Calibration (2). TX baseband Gm-C filter auto-tuning */ 1247 + /* Calibration (2a). turn off ENCAL signal */ 1248 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xF8EBC0, 24); 1249 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1250 + /* Calibration (2b.0). TX filter auto-tuning BW: TFLBW=101 (TC5376A default) */ 1251 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x07<<24) | 0x0C68CE, 24); 1252 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1253 + /* Calibration (2b). send TX reset signal */ 1254 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x0F<<24) | 0x00201E, 24); 1255 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1256 + /* Calibration (2c). turn-on TX Gm-C filter auto-tuning */ 1257 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFCEBC0, 24); 1258 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1259 + udelay(150); /* Sleep 150 us */ 1260 + /* turn off ENCAL signal */ 1261 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xF8EBC0, 24); 1262 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1145 1263 1146 - //2.4GHz 1147 - //ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x1ABA8F; 1148 - //Wb35Reg_WriteSync pHwData, 0x0864, ltmp ); 1149 - //msleep(1); // Sleep 1 ms 1150 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x9ABA8F; 1151 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1152 - msleep(5); 1153 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x3ABA8F; 1154 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1155 - msleep(5); 1156 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x1ABA8F; 1157 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1158 - msleep(5); 1264 + /* ----- Calibration (3). RX baseband Gm-C filter auto-tuning */ 1265 + /* Calibration (3a). turn off ENCAL signal */ 1266 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFAEDC0, 24); 1267 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1268 + /* Calibration (3b.0). RX filter auto-tuning BW: RFLBW=100 (TC5376A+corner default;) */ 1269 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x07<<24) | 0x0C68CE, 24); 1270 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1271 + /* Calibration (3b). send RX reset signal */ 1272 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x0F<<24) | 0x00401E, 24); 1273 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1274 + /* Calibration (3c). turn-on RX Gm-C filter auto-tuning */ 1275 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFEEDC0, 24); 1276 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1277 + udelay(150); /* Sleep 150 us */ 1278 + /* Calibration (3e). turn off ENCAL signal */ 1279 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFAEDC0, 24); 1280 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1159 1281 1160 - //5GHz 1161 - Wb35Reg_WriteSync( pHwData, 0x03dc, 0x00000000 ); 1162 - #ifdef _PE_STATE_DUMP_ 1163 - printk("* PLL_ON low\n"); 1164 - #endif 1282 + /* ----- Calibration (4). TX LO leakage calibration */ 1283 + /* Calibration (4a). TX LO leakage calibration */ 1284 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFD6BC0, 24); 1285 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1286 + udelay(150); /* Sleep 150 us */ 1165 1287 1166 - number = sizeof(al7230_rf_data_50)/sizeof(al7230_rf_data_50[0]); 1167 - Set_ChanIndep_RfData_al7230_50(pHwData, pltmp, number); 1168 - // Write to register. number must less and equal than 16 1169 - for( i=0; i<number; i++ ) 1170 - Wb35Reg_WriteSync( pHwData, 0x0864, pltmp[i] ); 1171 - msleep(5); 1288 + /* ----- Calibration (5). RX DC offset calibration */ 1289 + /* Calibration (5a). turn off ENCAL signal and set to RX SW DC calibration mode */ 1290 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFAEDC0, 24); 1291 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1292 + /* Calibration (5b). turn off AGC servo-loop & RSSI */ 1293 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x01<<24) | 0xEBFFC2, 24); 1294 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1172 1295 1173 - Wb35Reg_WriteSync( pHwData, 0x03dc, 0x00000080 ); 1174 - #ifdef _PE_STATE_DUMP_ 1175 - printk("* PLL_ON high\n"); 1176 - #endif 1296 + /* for LNA=11 -------- */ 1297 + /* Calibration (5c-h). RX DC offset current bias ON; & LNA=11; RXVGA=111111 */ 1298 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x06<<24) | 0x343FCC, 24); 1299 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1300 + /* Calibration (5d). turn on RX DC offset cal function; and waiting 2 msec cal time */ 1301 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFF6DC0, 24); 1302 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1303 + msleep(2); 1304 + /* Calibration (5f). turn off ENCAL signal */ 1305 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFAEDC0, 24); 1306 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1177 1307 1178 - //ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x12BACF; 1179 - //Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1180 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x9ABA8F; 1181 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1182 - msleep(5); 1183 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x3ABA8F; 1184 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1185 - msleep(5); 1186 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x12BACF; 1187 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1188 - msleep(5); 1308 + /* for LNA=10 -------- */ 1309 + /* Calibration (5c-m). RX DC offset current bias ON; & LNA=10; RXVGA=111111 */ 1310 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x06<<24) | 0x342FCC, 24); 1311 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1312 + /* Calibration (5d). turn on RX DC offset cal function; and waiting 2 msec cal time */ 1313 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFF6DC0, 24); 1314 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1315 + msleep(2); 1316 + /* Calibration (5f). turn off ENCAL signal */ 1317 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFAEDC0, 24); 1318 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1189 1319 1190 - //Wb35Reg_WriteSync( pHwData, 0x03dc, 0x00000080 ); 1191 - //printk("* PLL_ON high\n"); 1192 - break; 1320 + /* for LNA=01 -------- */ 1321 + /* Calibration (5c-m). RX DC offset current bias ON; & LNA=01; RXVGA=111111 */ 1322 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x06<<24) | 0x341FCC, 24); 1323 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1324 + /* Calibration (5d). turn on RX DC offset cal function; and waiting 2 msec cal time */ 1325 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFF6DC0, 24); 1326 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1327 + msleep(2); 1328 + /* Calibration (5f). turn off ENCAL signal */ 1329 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFAEDC0, 24); 1330 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1193 1331 1194 - case RF_WB_242: 1195 - case RF_WB_242_1: // 20060619.5 Add 1332 + /* for LNA=00 -------- */ 1333 + /* Calibration (5c-l). RX DC offset current bias ON; & LNA=00; RXVGA=111111 */ 1334 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x06<<24) | 0x340FCC, 24); 1335 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1336 + /* Calibration (5d). turn on RX DC offset cal function; and waiting 2 msec cal time */ 1337 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFF6DC0, 24); 1338 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1339 + msleep(2); 1340 + /* Calibration (5f). turn off ENCAL signal */ 1341 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xFAEDC0, 24); 1342 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1343 + /* Calibration (5g). turn on AGC servo-loop */ 1344 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x01<<24) | 0xEFFFC2, 24); 1345 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1196 1346 1197 - // 1198 - // ; Version 1.3B revision items: for FA5976A , October 3, 2005 by HTHo 1199 - // 1200 - ltmp = pHwData->reg.BB5C & 0xfffff000; 1201 - Wb35Reg_WriteSync( pHwData, 0x105c, ltmp ); 1202 - Wb35Reg_WriteSync( pHwData, 0x1058, 0 ); 1203 - pHwData->reg.BB50 |= 0x3;//(MASK_IQCAL_MODE|MASK_CALIB_START);//20060630 1204 - Wb35Reg_WriteSync(pHwData, 0x1050, pHwData->reg.BB50); 1205 - 1206 - //----- Calibration (1). VCO frequency calibration 1207 - //Calibration (1a.0). Synthesizer reset (HTHo corrected 2005/05/10) 1208 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x0F<<24) | 0x00101E, 24); 1209 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1210 - msleep(5); // Sleep 5ms 1211 - //Calibration (1a). VCO frequency calibration mode ; waiting 2msec VCO calibration time 1212 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFE69c0, 24); 1213 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1214 - msleep(2); // Sleep 2ms 1215 - 1216 - //----- Calibration (2). TX baseband Gm-C filter auto-tuning 1217 - //Calibration (2a). turn off ENCAL signal 1218 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xF8EBC0, 24); 1219 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1220 - //Calibration (2b.0). TX filter auto-tuning BW: TFLBW=101 (TC5376A default) 1221 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x07<<24) | 0x0C68CE, 24); 1222 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1223 - //Calibration (2b). send TX reset signal (HTHo corrected May 10, 2005) 1224 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x0F<<24) | 0x00201E, 24); 1225 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1226 - //Calibration (2c). turn-on TX Gm-C filter auto-tuning 1227 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFCEBC0, 24); 1228 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1229 - udelay(150); // Sleep 150 us 1230 - //turn off ENCAL signal 1231 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xF8EBC0, 24); 1232 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1233 - 1234 - //----- Calibration (3). RX baseband Gm-C filter auto-tuning 1235 - //Calibration (3a). turn off ENCAL signal 1236 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFAEDC0, 24); 1237 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1238 - //Calibration (3b.0). RX filter auto-tuning BW: RFLBW=100 (TC5376A+corner default; July 26, 2005) 1239 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x07<<24) | 0x0C68CE, 24); 1240 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1241 - //Calibration (3b). send RX reset signal (HTHo corrected May 10, 2005) 1242 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x0F<<24) | 0x00401E, 24); 1243 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1244 - //Calibration (3c). turn-on RX Gm-C filter auto-tuning 1245 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFEEDC0, 24); 1246 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1247 - udelay(150); // Sleep 150 us 1248 - //Calibration (3e). turn off ENCAL signal 1249 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFAEDC0, 24); 1250 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1251 - 1252 - //----- Calibration (4). TX LO leakage calibration 1253 - //Calibration (4a). TX LO leakage calibration 1254 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFD6BC0, 24); 1255 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1256 - udelay(150); // Sleep 150 us 1257 - 1258 - //----- Calibration (5). RX DC offset calibration 1259 - //Calibration (5a). turn off ENCAL signal and set to RX SW DC caliration mode 1260 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFAEDC0, 24); 1261 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1262 - //Calibration (5b). turn off AGC servo-loop & RSSI 1263 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x01<<24) | 0xEBFFC2, 24); 1264 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1265 - 1266 - //; for LNA=11 -------- 1267 - //Calibration (5c-h). RX DC offset current bias ON; & LNA=11; RXVGA=111111 1268 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x06<<24) | 0x343FCC, 24); 1269 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1270 - //Calibration (5d). turn on RX DC offset cal function; and waiting 2 msec cal time 1271 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFF6DC0, 24); 1272 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1273 - msleep(2); // Sleep 2ms 1274 - //Calibration (5f). turn off ENCAL signal 1275 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFAEDC0, 24); 1276 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1277 - 1278 - //; for LNA=10 -------- 1279 - //Calibration (5c-m). RX DC offset current bias ON; & LNA=10; RXVGA=111111 1280 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x06<<24) | 0x342FCC, 24); 1281 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1282 - //Calibration (5d). turn on RX DC offset cal function; and waiting 2 msec cal time 1283 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFF6DC0, 24); 1284 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1285 - msleep(2); // Sleep 2ms 1286 - //Calibration (5f). turn off ENCAL signal 1287 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFAEDC0, 24); 1288 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1289 - 1290 - //; for LNA=01 -------- 1291 - //Calibration (5c-m). RX DC offset current bias ON; & LNA=01; RXVGA=111111 1292 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x06<<24) | 0x341FCC, 24); 1293 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1294 - //Calibration (5d). turn on RX DC offset cal function; and waiting 2 msec cal time 1295 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFF6DC0, 24); 1296 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1297 - msleep(2); // Sleep 2ms 1298 - //Calibration (5f). turn off ENCAL signal 1299 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFAEDC0, 24); 1300 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1301 - 1302 - //; for LNA=00 -------- 1303 - //Calibration (5c-l). RX DC offset current bias ON; & LNA=00; RXVGA=111111 1304 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x06<<24) | 0x340FCC, 24); 1305 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1306 - //Calibration (5d). turn on RX DC offset cal function; and waiting 2 msec cal time 1307 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFF6DC0, 24); 1308 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1309 - msleep(2); // Sleep 2ms 1310 - //Calibration (5f). turn off ENCAL signal 1311 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFAEDC0, 24); 1312 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1313 - //Calibration (5g). turn on AGC servo-loop 1314 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x01<<24) | 0xEFFFC2, 24); 1315 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1316 - 1317 - //; ----- Calibration (7). Switch RF chip to normal mode 1318 - //0x00 0xF86100 ; 3E184 ; Switch RF chip to normal mode 1319 - // msleep(10); // @@ 20060721 1320 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xF86100, 24); 1321 - Wb35Reg_WriteSync( pHwData, 0x0864, ltmp ); 1322 - msleep(5); // Sleep 5 ms 1323 - 1324 - // //write back 1325 - // Wb35Reg_WriteSync(pHwData, 0x105c, pHwData->reg.BB5C); 1326 - // pHwData->reg.BB50 &= ~0x13;//(MASK_IQCAL_MODE|MASK_CALIB_START); // 20060315.1 fix 1327 - // Wb35Reg_WriteSync(pHwData, 0x1050, pHwData->reg.BB50); 1328 - // msleep(1); // Sleep 1 ms 1329 - break; 1347 + /* ----- Calibration (7). Switch RF chip to normal mode */ 1348 + /* 0x00 0xF86100 ; 3E184 ; Switch RF chip to normal mode */ 1349 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse((0x00<<24) | 0xF86100, 24); 1350 + Wb35Reg_WriteSync(pHwData, 0x0864, ltmp); 1351 + msleep(5); 1352 + break; 1330 1353 } 1331 1354 } 1332 1355 1333 - void BBProcessor_AL7230_2400( struct hw_data * pHwData) 1356 + void BBProcessor_AL7230_2400(struct hw_data *pHwData) 1334 1357 { 1335 1358 struct wb35_reg *reg = &pHwData->reg; 1336 1359 u32 pltmp[12]; 1337 1360 1338 - pltmp[0] = 0x16A8337A; // 0x16a5215f; // 0x1000 AGC_Ctrl1 1339 - pltmp[1] = 0x9AFF9AA6; // 0x9aff9ca6; // 0x1004 AGC_Ctrl2 1340 - pltmp[2] = 0x55D00A04; // 0x55d00a04; // 0x1008 AGC_Ctrl3 1341 - pltmp[3] = 0xFFF72031; // 0xFfFf2138; // 0x100c AGC_Ctrl4 1361 + pltmp[0] = 0x16A8337A; /* 0x1000 AGC_Ctrl1 */ 1362 + pltmp[1] = 0x9AFF9AA6; /* 0x1004 AGC_Ctrl2 */ 1363 + pltmp[2] = 0x55D00A04; /* 0x1008 AGC_Ctrl3 */ 1364 + pltmp[3] = 0xFFF72031; /* 0x100c AGC_Ctrl4 */ 1342 1365 reg->BB0C = 0xFFF72031; 1343 - pltmp[4] = 0x0FacDCC5; // 0x1010 AGC_Ctrl5 // 20050927 0x0FacDCB7 1344 - pltmp[5] = 0x00CAA333; // 0x00eaa333; // 0x1014 AGC_Ctrl6 1345 - pltmp[6] = 0xF2211111; // 0x11111111; // 0x1018 AGC_Ctrl7 1346 - pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8 1347 - pltmp[8] = 0x06443440; // 0x1020 AGC_Ctrl9 1348 - pltmp[9] = 0xA8002A79; // 0xa9002A79; // 0x1024 AGC_Ctrl10 1349 - pltmp[10] = 0x40000528; // 20050927 0x40000228 1350 - pltmp[11] = 0x232D7F30; // 0x23457f30;// 0x102c A_ACQ_Ctrl 1366 + pltmp[4] = 0x0FacDCC5; /* 0x1010 AGC_Ctrl5 */ 1367 + pltmp[5] = 0x00CAA333; /* 0x1014 AGC_Ctrl6 */ 1368 + pltmp[6] = 0xF2211111; /* 0x1018 AGC_Ctrl7 */ 1369 + pltmp[7] = 0x0FA3F0ED; /* 0x101c AGC_Ctrl8 */ 1370 + pltmp[8] = 0x06443440; /* 0x1020 AGC_Ctrl9 */ 1371 + pltmp[9] = 0xA8002A79; /* 0x1024 AGC_Ctrl10 */ 1372 + pltmp[10] = 0x40000528; 1373 + pltmp[11] = 0x232D7F30; /* 0x102c A_ACQ_Ctrl */ 1351 1374 reg->BB2C = 0x232D7F30; 1352 - Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT ); 1375 + Wb35Reg_BurstWrite(pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT); 1353 1376 1354 - pltmp[0] = 0x00002c54; // 0x1030 B_ACQ_Ctrl 1377 + pltmp[0] = 0x00002c54; /* 0x1030 B_ACQ_Ctrl */ 1355 1378 reg->BB30 = 0x00002c54; 1356 - pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl 1357 - pltmp[2] = 0x5B2C8769; // 0x1038 B_TXRX_Ctrl 1358 - pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter 1379 + pltmp[1] = 0x00C0D6C5; /* 0x1034 A_TXRX_Ctrl */ 1380 + pltmp[2] = 0x5B2C8769; /* 0x1038 B_TXRX_Ctrl */ 1381 + pltmp[3] = 0x00000000; /* 0x103c 11a TX LS filter */ 1359 1382 reg->BB3C = 0x00000000; 1360 - pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter 1361 - pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter 1362 - pltmp[6] = 0x00332C1B; // 0x00453B24; // 0x1048 11b TX RC filter 1363 - pltmp[7] = 0x0A00FEFF; // 0x0E00FEFF; // 0x104c 11b TX RC filter 1364 - pltmp[8] = 0x2B106208; // 0x1050 MODE_Ctrl 1383 + pltmp[4] = 0x00003F29; /* 0x1040 11a TX LS filter */ 1384 + pltmp[5] = 0x0EFEFBFE; /* 0x1044 11a TX LS filter */ 1385 + pltmp[6] = 0x00332C1B; /* 0x1048 11b TX RC filter */ 1386 + pltmp[7] = 0x0A00FEFF; /* 0x104c 11b TX RC filter */ 1387 + pltmp[8] = 0x2B106208; /* 0x1050 MODE_Ctrl */ 1365 1388 reg->BB50 = 0x2B106208; 1366 - pltmp[9] = 0; // 0x1054 1389 + pltmp[9] = 0; /* 0x1054 */ 1367 1390 reg->BB54 = 0x00000000; 1368 - pltmp[10] = 0x52524242; // 0x64645252; // 0x1058 IQ_Alpha 1391 + pltmp[10] = 0x52524242; /* 0x1058 IQ_Alpha */ 1369 1392 reg->BB58 = 0x52524242; 1370 - pltmp[11] = 0xAA0AC000; // 0x105c DC_Cancel 1371 - Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT ); 1372 - 1393 + pltmp[11] = 0xAA0AC000; /* 0x105c DC_Cancel */ 1394 + Wb35Reg_BurstWrite(pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT); 1373 1395 } 1374 1396 1375 - void BBProcessor_AL7230_5000( struct hw_data * pHwData) 1397 + void BBProcessor_AL7230_5000(struct hw_data *pHwData) 1376 1398 { 1377 1399 struct wb35_reg *reg = &pHwData->reg; 1378 1400 u32 pltmp[12]; 1379 1401 1380 - pltmp[0] = 0x16AA6678; // 0x1000 AGC_Ctrl1 1381 - pltmp[1] = 0x9AFFA0B2; // 0x1004 AGC_Ctrl2 1382 - pltmp[2] = 0x55D00A04; // 0x1008 AGC_Ctrl3 1383 - pltmp[3] = 0xEFFF233E; // 0x100c AGC_Ctrl4 1402 + pltmp[0] = 0x16AA6678; /* 0x1000 AGC_Ctrl1 */ 1403 + pltmp[1] = 0x9AFFA0B2; /* 0x1004 AGC_Ctrl2 */ 1404 + pltmp[2] = 0x55D00A04; /* 0x1008 AGC_Ctrl3 */ 1405 + pltmp[3] = 0xEFFF233E; /* 0x100c AGC_Ctrl4 */ 1384 1406 reg->BB0C = 0xEFFF233E; 1385 - pltmp[4] = 0x0FacDCC5; // 0x1010 AGC_Ctrl5 // 20050927 0x0FacDCB7 1386 - pltmp[5] = 0x00CAA333; // 0x1014 AGC_Ctrl6 1387 - pltmp[6] = 0xF2432111; // 0x1018 AGC_Ctrl7 1388 - pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8 1389 - pltmp[8] = 0x05C43440; // 0x1020 AGC_Ctrl9 1390 - pltmp[9] = 0x00002A79; // 0x1024 AGC_Ctrl10 1391 - pltmp[10] = 0x40000528; // 20050927 0x40000228 1392 - pltmp[11] = 0x232FDF30;// 0x102c A_ACQ_Ctrl 1407 + pltmp[4] = 0x0FacDCC5; /* 0x1010 AGC_Ctrl5 */ 1408 + pltmp[5] = 0x00CAA333; /* 0x1014 AGC_Ctrl6 */ 1409 + pltmp[6] = 0xF2432111; /* 0x1018 AGC_Ctrl7 */ 1410 + pltmp[7] = 0x0FA3F0ED; /* 0x101c AGC_Ctrl8 */ 1411 + pltmp[8] = 0x05C43440; /* 0x1020 AGC_Ctrl9 */ 1412 + pltmp[9] = 0x00002A79; /* 0x1024 AGC_Ctrl10 */ 1413 + pltmp[10] = 0x40000528; 1414 + pltmp[11] = 0x232FDF30;/* 0x102c A_ACQ_Ctrl */ 1393 1415 reg->BB2C = 0x232FDF30; 1394 - Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT ); 1416 + Wb35Reg_BurstWrite(pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT); 1395 1417 1396 - pltmp[0] = 0x80002C7C; // 0x1030 B_ACQ_Ctrl 1397 - pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl 1398 - pltmp[2] = 0x5B2C8769; // 0x1038 B_TXRX_Ctrl 1399 - pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter 1418 + pltmp[0] = 0x80002C7C; /* 0x1030 B_ACQ_Ctrl */ 1419 + pltmp[1] = 0x00C0D6C5; /* 0x1034 A_TXRX_Ctrl */ 1420 + pltmp[2] = 0x5B2C8769; /* 0x1038 B_TXRX_Ctrl */ 1421 + pltmp[3] = 0x00000000; /* 0x103c 11a TX LS filter */ 1400 1422 reg->BB3C = 0x00000000; 1401 - pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter 1402 - pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter 1403 - pltmp[6] = 0x00332C1B; // 0x1048 11b TX RC filter 1404 - pltmp[7] = 0x0A00FEFF; // 0x104c 11b TX RC filter 1405 - pltmp[8] = 0x2B107208; // 0x1050 MODE_Ctrl 1423 + pltmp[4] = 0x00003F29; /* 0x1040 11a TX LS filter */ 1424 + pltmp[5] = 0x0EFEFBFE; /* 0x1044 11a TX LS filter */ 1425 + pltmp[6] = 0x00332C1B; /* 0x1048 11b TX RC filter */ 1426 + pltmp[7] = 0x0A00FEFF; /* 0x104c 11b TX RC filter */ 1427 + pltmp[8] = 0x2B107208; /* 0x1050 MODE_Ctrl */ 1406 1428 reg->BB50 = 0x2B107208; 1407 - pltmp[9] = 0; // 0x1054 1429 + pltmp[9] = 0; /* 0x1054 */ 1408 1430 reg->BB54 = 0x00000000; 1409 - pltmp[10] = 0x52524242; // 0x1058 IQ_Alpha 1431 + pltmp[10] = 0x52524242; /* 0x1058 IQ_Alpha */ 1410 1432 reg->BB58 = 0x52524242; 1411 - pltmp[11] = 0xAA0AC000; // 0x105c DC_Cancel 1412 - Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT ); 1413 - 1433 + pltmp[11] = 0xAA0AC000; /* 0x105c DC_Cancel */ 1434 + Wb35Reg_BurstWrite(pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT); 1414 1435 } 1415 1436 1416 - //============================================================================================================= 1417 - // BBProcessorPowerupInit -- 1418 - // 1419 - // Description: 1420 - // Initialize the Baseband processor. 1421 - // 1422 - // Arguments: 1423 - // pHwData - Handle of the USB Device. 1424 - // 1425 - // Return values: 1426 - // None. 1427 - //============================================================================================================= 1428 - void 1429 - BBProcessor_initial( struct hw_data * pHwData ) 1437 + /* 1438 + * =========================================================================== 1439 + * BBProcessorPowerupInit -- 1440 + * 1441 + * Description: 1442 + * Initialize the Baseband processor. 1443 + * 1444 + * Arguments: 1445 + * pHwData - Handle of the USB Device. 1446 + * 1447 + * Return values: 1448 + * None. 1449 + *============================================================================ 1450 + */ 1451 + void BBProcessor_initial(struct hw_data *pHwData) 1430 1452 { 1431 1453 struct wb35_reg *reg = &pHwData->reg; 1432 1454 u32 i, pltmp[12]; 1433 1455 1434 - switch( pHwData->phy_type ) 1435 - { 1436 - case RF_MAXIM_V1: // Initializng the Winbond 2nd BB(with Phy board (v1) + Maxim 331) 1456 + switch (pHwData->phy_type) { 1457 + case RF_MAXIM_V1: /* Initializng the Winbond 2nd BB(with Phy board (v1) + Maxim 331) */ 1458 + pltmp[0] = 0x16F47E77; /* 0x1000 AGC_Ctrl1 */ 1459 + pltmp[1] = 0x9AFFAEA4; /* 0x1004 AGC_Ctrl2 */ 1460 + pltmp[2] = 0x55D00A04; /* 0x1008 AGC_Ctrl3 */ 1461 + pltmp[3] = 0xEFFF1A34; /* 0x100c AGC_Ctrl4 */ 1462 + reg->BB0C = 0xEFFF1A34; 1463 + pltmp[4] = 0x0FABE0B7; /* 0x1010 AGC_Ctrl5 */ 1464 + pltmp[5] = 0x00CAA332; /* 0x1014 AGC_Ctrl6 */ 1465 + pltmp[6] = 0xF6632111; /* 0x1018 AGC_Ctrl7 */ 1466 + pltmp[7] = 0x0FA3F0ED; /* 0x101c AGC_Ctrl8 */ 1467 + pltmp[8] = 0x04CC3640; /* 0x1020 AGC_Ctrl9 */ 1468 + pltmp[9] = 0x00002A79; /* 0x1024 AGC_Ctrl10 */ 1469 + pltmp[10] = (pHwData->phy_type == 3) ? 0x40000a28 : 0x40000228; /* 0x1028 MAXIM_331(b31=0) + WBRF_V1(b11=1) : MAXIM_331(b31=0) + WBRF_V2(b11=0) */ 1470 + pltmp[11] = 0x232FDF30; /* 0x102c A_ACQ_Ctrl */ 1471 + reg->BB2C = 0x232FDF30; /* Modify for 33's 1.0.95.xxx version, antenna 1 */ 1472 + Wb35Reg_BurstWrite(pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT); 1437 1473 1438 - pltmp[0] = 0x16F47E77; // 0x1000 AGC_Ctrl1 1439 - pltmp[1] = 0x9AFFAEA4; // 0x1004 AGC_Ctrl2 1440 - pltmp[2] = 0x55D00A04; // 0x1008 AGC_Ctrl3 1441 - pltmp[3] = 0xEFFF1A34; // 0x100c AGC_Ctrl4 1442 - reg->BB0C = 0xEFFF1A34; 1443 - pltmp[4] = 0x0FABE0B7; // 0x1010 AGC_Ctrl5 1444 - pltmp[5] = 0x00CAA332; // 0x1014 AGC_Ctrl6 1445 - pltmp[6] = 0xF6632111; // 0x1018 AGC_Ctrl7 1446 - pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8 1447 - pltmp[8] = 0x04CC3640; // 0x1020 AGC_Ctrl9 1448 - pltmp[9] = 0x00002A79; // 0x1024 AGC_Ctrl10 1449 - pltmp[10] = (pHwData->phy_type==3) ? 0x40000a28 : 0x40000228; // 0x1028 MAXIM_331(b31=0) + WBRF_V1(b11=1) : MAXIM_331(b31=0) + WBRF_V2(b11=0) 1450 - pltmp[11] = 0x232FDF30; // 0x102c A_ACQ_Ctrl 1451 - reg->BB2C = 0x232FDF30; //Modify for 33's 1.0.95.xxx version, antenna 1 1452 - Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT ); 1474 + pltmp[0] = 0x00002C54; /* 0x1030 B_ACQ_Ctrl */ 1475 + reg->BB30 = 0x00002C54; 1476 + pltmp[1] = 0x00C0D6C5; /* 0x1034 A_TXRX_Ctrl */ 1477 + pltmp[2] = 0x5B6C8769; /* 0x1038 B_TXRX_Ctrl */ 1478 + pltmp[3] = 0x00000000; /* 0x103c 11a TX LS filter */ 1479 + reg->BB3C = 0x00000000; 1480 + pltmp[4] = 0x00003F29; /* 0x1040 11a TX LS filter */ 1481 + pltmp[5] = 0x0EFEFBFE; /* 0x1044 11a TX LS filter */ 1482 + pltmp[6] = 0x00453B24; /* 0x1048 11b TX RC filter */ 1483 + pltmp[7] = 0x0E00FEFF; /* 0x104c 11b TX RC filter */ 1484 + pltmp[8] = 0x27106208; /* 0x1050 MODE_Ctrl */ 1485 + reg->BB50 = 0x27106208; 1486 + pltmp[9] = 0; /* 0x1054 */ 1487 + reg->BB54 = 0x00000000; 1488 + pltmp[10] = 0x64646464; /* 0x1058 IQ_Alpha */ 1489 + reg->BB58 = 0x64646464; 1490 + pltmp[11] = 0xAA0AC000; /* 0x105c DC_Cancel */ 1491 + Wb35Reg_BurstWrite(pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT); 1453 1492 1454 - pltmp[0] = 0x00002C54; // 0x1030 B_ACQ_Ctrl 1455 - reg->BB30 = 0x00002C54; 1456 - pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl 1457 - pltmp[2] = 0x5B6C8769; // 0x1038 B_TXRX_Ctrl 1458 - pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter 1459 - reg->BB3C = 0x00000000; 1460 - pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter 1461 - pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter 1462 - pltmp[6] = 0x00453B24; // 0x1048 11b TX RC filter 1463 - pltmp[7] = 0x0E00FEFF; // 0x104c 11b TX RC filter 1464 - pltmp[8] = 0x27106208; // 0x1050 MODE_Ctrl 1465 - reg->BB50 = 0x27106208; 1466 - pltmp[9] = 0; // 0x1054 1467 - reg->BB54 = 0x00000000; 1468 - pltmp[10] = 0x64646464; // 0x1058 IQ_Alpha 1469 - reg->BB58 = 0x64646464; 1470 - pltmp[11] = 0xAA0AC000; // 0x105c DC_Cancel 1471 - Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT ); 1493 + Wb35Reg_Write(pHwData, 0x1070, 0x00000045); 1494 + break; 1472 1495 1473 - Wb35Reg_Write( pHwData, 0x1070, 0x00000045 ); 1474 - break; 1496 + case RF_MAXIM_2825: 1497 + case RF_MAXIM_2827: 1498 + case RF_MAXIM_2828: 1499 + pltmp[0] = 0x16b47e77; /* 0x1000 AGC_Ctrl1 */ 1500 + pltmp[1] = 0x9affaea4; /* 0x1004 AGC_Ctrl2 */ 1501 + pltmp[2] = 0x55d00a04; /* 0x1008 AGC_Ctrl3 */ 1502 + pltmp[3] = 0xefff1a34; /* 0x100c AGC_Ctrl4 */ 1503 + reg->BB0C = 0xefff1a34; 1504 + pltmp[4] = 0x0fabe0b7; /* 0x1010 AGC_Ctrl5 */ 1505 + pltmp[5] = 0x00caa332; /* 0x1014 AGC_Ctrl6 */ 1506 + pltmp[6] = 0xf6632111; /* 0x1018 AGC_Ctrl7 */ 1507 + pltmp[7] = 0x0FA3F0ED; /* 0x101c AGC_Ctrl8 */ 1508 + pltmp[8] = 0x04CC3640; /* 0x1020 AGC_Ctrl9 */ 1509 + pltmp[9] = 0x00002A79; /* 0x1024 AGC_Ctrl10 */ 1510 + pltmp[10] = 0x40000528; 1511 + pltmp[11] = 0x232fdf30; /* 0x102c A_ACQ_Ctrl */ 1512 + reg->BB2C = 0x232fdf30; /* antenna 1 */ 1513 + Wb35Reg_BurstWrite(pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT); 1475 1514 1476 - //------------------------------------------------------------------ 1477 - //[20040722 WK] 1478 - //Only for baseband version 2 1479 - // case RF_MAXIM_317: 1480 - case RF_MAXIM_2825: 1481 - case RF_MAXIM_2827: 1482 - case RF_MAXIM_2828: 1515 + pltmp[0] = 0x00002C54; /* 0x1030 B_ACQ_Ctrl */ 1516 + reg->BB30 = 0x00002C54; 1517 + pltmp[1] = 0x00C0D6C5; /* 0x1034 A_TXRX_Ctrl */ 1518 + pltmp[2] = 0x5B6C8769; /* 0x1038 B_TXRX_Ctrl */ 1519 + pltmp[3] = 0x00000000; /* 0x103c 11a TX LS filter */ 1520 + reg->BB3C = 0x00000000; 1521 + pltmp[4] = 0x00003F29; /* 0x1040 11a TX LS filter */ 1522 + pltmp[5] = 0x0EFEFBFE; /* 0x1044 11a TX LS filter */ 1523 + pltmp[6] = 0x00453B24; /* 0x1048 11b TX RC filter */ 1524 + pltmp[7] = 0x0D00FDFF; /* 0x104c 11b TX RC filter */ 1525 + pltmp[8] = 0x27106208; /* 0x1050 MODE_Ctrl */ 1526 + reg->BB50 = 0x27106208; 1527 + pltmp[9] = 0; /* 0x1054 */ 1528 + reg->BB54 = 0x00000000; 1529 + pltmp[10] = 0x64646464; /* 0x1058 IQ_Alpha */ 1530 + reg->BB58 = 0x64646464; 1531 + pltmp[11] = 0xAA28C000; /* 0x105c DC_Cancel */ 1532 + Wb35Reg_BurstWrite(pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT); 1483 1533 1484 - pltmp[0] = 0x16b47e77; // 0x1000 AGC_Ctrl1 1485 - pltmp[1] = 0x9affaea4; // 0x1004 AGC_Ctrl2 1486 - pltmp[2] = 0x55d00a04; // 0x1008 AGC_Ctrl3 1487 - pltmp[3] = 0xefff1a34; // 0x100c AGC_Ctrl4 1488 - reg->BB0C = 0xefff1a34; 1489 - pltmp[4] = 0x0fabe0b7; // 0x1010 AGC_Ctrl5 1490 - pltmp[5] = 0x00caa332; // 0x1014 AGC_Ctrl6 1491 - pltmp[6] = 0xf6632111; // 0x1018 AGC_Ctrl7 1492 - pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8 1493 - pltmp[8] = 0x04CC3640; // 0x1020 AGC_Ctrl9 1494 - pltmp[9] = 0x00002A79; // 0x1024 AGC_Ctrl10 1495 - pltmp[10] = 0x40000528; // 0x40000128; Modify for 33's 1.0.95 1496 - pltmp[11] = 0x232fdf30; // 0x102c A_ACQ_Ctrl 1497 - reg->BB2C = 0x232fdf30; //Modify for 33's 1.0.95.xxx version, antenna 1 1498 - Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT ); 1534 + Wb35Reg_Write(pHwData, 0x1070, 0x00000045); 1535 + break; 1499 1536 1500 - pltmp[0] = 0x00002C54; // 0x1030 B_ACQ_Ctrl 1501 - reg->BB30 = 0x00002C54; 1502 - pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl 1503 - pltmp[2] = 0x5B6C8769; // 0x1038 B_TXRX_Ctrl 1504 - pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter 1505 - reg->BB3C = 0x00000000; 1506 - pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter 1507 - pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter 1508 - pltmp[6] = 0x00453B24; // 0x1048 11b TX RC filter 1509 - pltmp[7] = 0x0D00FDFF; // 0x104c 11b TX RC filter 1510 - pltmp[8] = 0x27106208; // 0x1050 MODE_Ctrl 1511 - reg->BB50 = 0x27106208; 1512 - pltmp[9] = 0; // 0x1054 1513 - reg->BB54 = 0x00000000; 1514 - pltmp[10] = 0x64646464; // 0x1058 IQ_Alpha 1515 - reg->BB58 = 0x64646464; 1516 - pltmp[11] = 0xAA28C000; // 0x105c DC_Cancel 1517 - Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT ); 1537 + case RF_MAXIM_2829: 1538 + pltmp[0] = 0x16b47e77; /* 0x1000 AGC_Ctrl1 */ 1539 + pltmp[1] = 0x9affaea4; /* 0x1004 AGC_Ctrl2 */ 1540 + pltmp[2] = 0x55d00a04; /* 0x1008 AGC_Ctrl3 */ 1541 + pltmp[3] = 0xf4ff1632; /* 0x100c AGC_Ctrl4 */ 1542 + reg->BB0C = 0xf4ff1632; 1543 + pltmp[4] = 0x0fabe0b7; /* 0x1010 AGC_Ctrl5 */ 1544 + pltmp[5] = 0x00caa332; /* 0x1014 AGC_Ctrl6 */ 1545 + pltmp[6] = 0xf8632112; /* 0x1018 AGC_Ctrl7 */ 1546 + pltmp[7] = 0x0FA3F0ED; /* 0x101c AGC_Ctrl8 */ 1547 + pltmp[8] = 0x04CC3640; /* 0x1020 AGC_Ctrl9 */ 1548 + pltmp[9] = 0x00002A79; /* 0x1024 AGC_Ctrl10 */ 1549 + pltmp[10] = 0x40000528; 1550 + pltmp[11] = 0x232fdf30; /* 0x102c A_ACQ_Ctrl */ 1551 + reg->BB2C = 0x232fdf30; /* antenna 1 */ 1552 + Wb35Reg_BurstWrite(pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT); 1518 1553 1519 - Wb35Reg_Write( pHwData, 0x1070, 0x00000045 ); 1520 - break; 1554 + pltmp[0] = 0x00002C54; /* 0x1030 B_ACQ_Ctrl */ 1555 + reg->BB30 = 0x00002C54; 1556 + pltmp[1] = 0x00C0D6C5; /* 0x1034 A_TXRX_Ctrl */ 1557 + pltmp[2] = 0x5b2c8769; /* 0x1038 B_TXRX_Ctrl */ 1558 + pltmp[3] = 0x00000000; /* 0x103c 11a TX LS filter */ 1559 + reg->BB3C = 0x00000000; 1560 + pltmp[4] = 0x00003F29; /* 0x1040 11a TX LS filter */ 1561 + pltmp[5] = 0x0EFEFBFE; /* 0x1044 11a TX LS filter */ 1562 + pltmp[6] = 0x002c2617; /* 0x1048 11b TX RC filter */ 1563 + pltmp[7] = 0x0800feff; /* 0x104c 11b TX RC filter */ 1564 + pltmp[8] = 0x27106208; /* 0x1050 MODE_Ctrl */ 1565 + reg->BB50 = 0x27106208; 1566 + pltmp[9] = 0; /* 0x1054 */ 1567 + reg->BB54 = 0x00000000; 1568 + pltmp[10] = 0x64644a4a; /* 0x1058 IQ_Alpha */ 1569 + reg->BB58 = 0x64646464; 1570 + pltmp[11] = 0xAA28C000; /* 0x105c DC_Cancel */ 1571 + Wb35Reg_BurstWrite(pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT); 1572 + Wb35Reg_Write(pHwData, 0x1070, 0x00000045); 1573 + break; 1574 + case RF_AIROHA_2230: 1575 + pltmp[0] = 0X16764A77; /* 0x1000 AGC_Ctrl1 */ 1576 + pltmp[1] = 0x9affafb2; /* 0x1004 AGC_Ctrl2 */ 1577 + pltmp[2] = 0x55d00a04; /* 0x1008 AGC_Ctrl3 */ 1578 + pltmp[3] = 0xFFFd203c; /* 0x100c AGC_Ctrl4 */ 1579 + reg->BB0C = 0xFFFd203c; 1580 + pltmp[4] = 0X0FBFDCc5; /* 0x1010 AGC_Ctrl5 */ 1581 + pltmp[5] = 0x00caa332; /* 0x1014 AGC_Ctrl6 */ 1582 + pltmp[6] = 0XF6632111; /* 0x1018 AGC_Ctrl7 */ 1583 + pltmp[7] = 0x0FA3F0ED; /* 0x101c AGC_Ctrl8 */ 1584 + pltmp[8] = 0x04C43640; /* 0x1020 AGC_Ctrl9 */ 1585 + pltmp[9] = 0x00002A79; /* 0x1024 AGC_Ctrl10 */ 1586 + pltmp[10] = 0X40000528; 1587 + pltmp[11] = 0x232dfF30; /* 0x102c A_ACQ_Ctrl */ 1588 + reg->BB2C = 0x232dfF30; /* antenna 1 */ 1589 + Wb35Reg_BurstWrite(pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT); 1521 1590 1522 - case RF_MAXIM_2829: 1591 + pltmp[0] = 0x00002C54; /* 0x1030 B_ACQ_Ctrl */ 1592 + reg->BB30 = 0x00002C54; 1593 + pltmp[1] = 0x00C0D6C5; /* 0x1034 A_TXRX_Ctrl */ 1594 + pltmp[2] = 0x5B2C8769; /* 0x1038 B_TXRX_Ctrl */ 1595 + pltmp[3] = 0x00000000; /* 0x103c 11a TX LS filter */ 1596 + reg->BB3C = 0x00000000; 1597 + pltmp[4] = 0x00003F29; /* 0x1040 11a TX LS filter */ 1598 + pltmp[5] = 0x0EFEFBFE; /* 0x1044 11a TX LS filter */ 1599 + pltmp[6] = BB48_DEFAULT_AL2230_11G; /* 0x1048 11b TX RC filter */ 1600 + reg->BB48 = BB48_DEFAULT_AL2230_11G; /* 20051221 ch14 */ 1601 + pltmp[7] = BB4C_DEFAULT_AL2230_11G; /* 0x104c 11b TX RC filter */ 1602 + reg->BB4C = BB4C_DEFAULT_AL2230_11G; 1603 + pltmp[8] = 0x27106200; /* 0x1050 MODE_Ctrl */ 1604 + reg->BB50 = 0x27106200; 1605 + pltmp[9] = 0; /* 0x1054 */ 1606 + reg->BB54 = 0x00000000; 1607 + pltmp[10] = 0x52524242; /* 0x1058 IQ_Alpha */ 1608 + reg->BB58 = 0x52524242; 1609 + pltmp[11] = 0xAA0AC000; /* 0x105c DC_Cancel */ 1610 + Wb35Reg_BurstWrite(pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT); 1523 1611 1524 - pltmp[0] = 0x16b47e77; // 0x1000 AGC_Ctrl1 1525 - pltmp[1] = 0x9affaea4; // 0x1004 AGC_Ctrl2 1526 - pltmp[2] = 0x55d00a04; // 0x1008 AGC_Ctrl3 1527 - pltmp[3] = 0xf4ff1632; // 0xefff1a34; // 0x100c AGC_Ctrl4 Modify for 33's 1.0.95 1528 - reg->BB0C = 0xf4ff1632; // 0xefff1a34; Modify for 33's 1.0.95 1529 - pltmp[4] = 0x0fabe0b7; // 0x1010 AGC_Ctrl5 1530 - pltmp[5] = 0x00caa332; // 0x1014 AGC_Ctrl6 1531 - pltmp[6] = 0xf8632112; // 0xf6632111; // 0x1018 AGC_Ctrl7 Modify for 33's 1.0.95 1532 - pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8 1533 - pltmp[8] = 0x04CC3640; // 0x1020 AGC_Ctrl9 1534 - pltmp[9] = 0x00002A79; // 0x1024 AGC_Ctrl10 1535 - pltmp[10] = 0x40000528; // 0x40000128; modify for 33's 1.0.95 1536 - pltmp[11] = 0x232fdf30; // 0x102c A_ACQ_Ctrl 1537 - reg->BB2C = 0x232fdf30; //Modify for 33's 1.0.95.xxx version, antenna 1 1538 - Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT ); 1612 + Wb35Reg_Write(pHwData, 0x1070, 0x00000045); 1613 + break; 1614 + case RF_AIROHA_2230S: 1615 + pltmp[0] = 0X16764A77; /* 0x1000 AGC_Ctrl1 */ 1616 + pltmp[1] = 0x9affafb2; /* 0x1004 AGC_Ctrl2 */ 1617 + pltmp[2] = 0x55d00a04; /* 0x1008 AGC_Ctrl3 */ 1618 + pltmp[3] = 0xFFFd203c; /* 0x100c AGC_Ctrl4 */ 1619 + reg->BB0C = 0xFFFd203c; 1620 + pltmp[4] = 0X0FBFDCc5; /* 0x1010 AGC_Ctrl5 */ 1621 + pltmp[5] = 0x00caa332; /* 0x1014 AGC_Ctrl6 */ 1622 + pltmp[6] = 0XF6632111; /* 0x1018 AGC_Ctrl7 */ 1623 + pltmp[7] = 0x0FA3F0ED; /* 0x101c AGC_Ctrl8 */ 1624 + pltmp[8] = 0x04C43640; /* 0x1020 AGC_Ctrl9 */ 1625 + pltmp[9] = 0x00002A79; /* 0x1024 AGC_Ctrl10 */ 1626 + pltmp[10] = 0X40000528; 1627 + pltmp[11] = 0x232dfF30; /* 0x102c A_ACQ_Ctrl */ 1628 + reg->BB2C = 0x232dfF30; /* antenna 1 */ 1629 + Wb35Reg_BurstWrite(pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT); 1539 1630 1540 - pltmp[0] = 0x00002C54; // 0x1030 B_ACQ_Ctrl 1541 - reg->BB30 = 0x00002C54; 1542 - pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl 1543 - pltmp[2] = 0x5b2c8769; // 0x5B6C8769; // 0x1038 B_TXRX_Ctrl Modify for 33's 1.0.95 1544 - pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter 1545 - reg->BB3C = 0x00000000; 1546 - pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter 1547 - pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter 1548 - pltmp[6] = 0x002c2617; // 0x00453B24; // 0x1048 11b TX RC filter Modify for 33's 1.0.95 1549 - pltmp[7] = 0x0800feff; // 0x0D00FDFF; // 0x104c 11b TX RC filter Modify for 33's 1.0.95 1550 - pltmp[8] = 0x27106208; // 0x1050 MODE_Ctrl 1551 - reg->BB50 = 0x27106208; 1552 - pltmp[9] = 0; // 0x1054 1553 - reg->BB54 = 0x00000000; 1554 - pltmp[10] = 0x64644a4a; // 0x64646464; // 0x1058 IQ_Alpha Modify for 33's 1.0.95 1555 - reg->BB58 = 0x64646464; 1556 - pltmp[11] = 0xAA28C000; // 0x105c DC_Cancel 1557 - Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT ); 1631 + pltmp[0] = 0x00002C54; /* 0x1030 B_ACQ_Ctrl */ 1632 + reg->BB30 = 0x00002C54; 1633 + pltmp[1] = 0x00C0D6C5; /* 0x1034 A_TXRX_Ctrl */ 1634 + pltmp[2] = 0x5B2C8769; /* 0x1038 B_TXRX_Ctrl */ 1635 + pltmp[3] = 0x00000000; /* 0x103c 11a TX LS filter */ 1636 + reg->BB3C = 0x00000000; 1637 + pltmp[4] = 0x00003F29; /* 0x1040 11a TX LS filter */ 1638 + pltmp[5] = 0x0EFEFBFE; /* 0x1044 11a TX LS filter */ 1639 + pltmp[6] = BB48_DEFAULT_AL2230_11G; /* 0x1048 11b TX RC filter */ 1640 + reg->BB48 = BB48_DEFAULT_AL2230_11G; /* ch14 */ 1641 + pltmp[7] = BB4C_DEFAULT_AL2230_11G; /* 0x104c 11b TX RC filter */ 1642 + reg->BB4C = BB4C_DEFAULT_AL2230_11G; 1643 + pltmp[8] = 0x27106200; /* 0x1050 MODE_Ctrl */ 1644 + reg->BB50 = 0x27106200; 1645 + pltmp[9] = 0; /* 0x1054 */ 1646 + reg->BB54 = 0x00000000; 1647 + pltmp[10] = 0x52523232; /* 0x1058 IQ_Alpha */ 1648 + reg->BB58 = 0x52523232; 1649 + pltmp[11] = 0xAA0AC000; /* 0x105c DC_Cancel */ 1650 + Wb35Reg_BurstWrite(pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT); 1558 1651 1559 - Wb35Reg_Write( pHwData, 0x1070, 0x00000045 ); 1560 - break; 1652 + Wb35Reg_Write(pHwData, 0x1070, 0x00000045); 1653 + break; 1654 + case RF_AIROHA_7230: 1655 + BBProcessor_AL7230_2400(pHwData); 1561 1656 1562 - case RF_AIROHA_2230: 1657 + Wb35Reg_Write(pHwData, 0x1070, 0x00000045); 1658 + break; 1659 + case RF_WB_242: 1660 + case RF_WB_242_1: 1661 + pltmp[0] = 0x16A8525D; /* 0x1000 AGC_Ctrl1 */ 1662 + pltmp[1] = 0x9AFF9ABA; /* 0x1004 AGC_Ctrl2 */ 1663 + pltmp[2] = 0x55D00A04; /* 0x1008 AGC_Ctrl3 */ 1664 + pltmp[3] = 0xEEE91C32; /* 0x100c AGC_Ctrl4 */ 1665 + reg->BB0C = 0xEEE91C32; 1666 + pltmp[4] = 0x0FACDCC5; /* 0x1010 AGC_Ctrl5 */ 1667 + pltmp[5] = 0x000AA344; /* 0x1014 AGC_Ctrl6 */ 1668 + pltmp[6] = 0x22222221; /* 0x1018 AGC_Ctrl7 */ 1669 + pltmp[7] = 0x0FA3F0ED; /* 0x101c AGC_Ctrl8 */ 1670 + pltmp[8] = 0x04CC3440; /* 0x1020 AGC_Ctrl9 */ 1671 + pltmp[9] = 0xA9002A79; /* 0x1024 AGC_Ctrl10 */ 1672 + pltmp[10] = 0x40000528; /* 0x1028 */ 1673 + pltmp[11] = 0x23457F30; /* 0x102c A_ACQ_Ctrl */ 1674 + reg->BB2C = 0x23457F30; 1675 + Wb35Reg_BurstWrite(pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT); 1563 1676 1564 - pltmp[0] = 0X16764A77; // 0x1000 AGC_Ctrl1 //0x16765A77 1565 - pltmp[1] = 0x9affafb2; // 0x1004 AGC_Ctrl2 1566 - pltmp[2] = 0x55d00a04; // 0x1008 AGC_Ctrl3 1567 - pltmp[3] = 0xFFFd203c; // 0xFFFb203a; // 0x100c AGC_Ctrl4 Modify for 33's 1.0.95.xxx version 1568 - reg->BB0C = 0xFFFd203c; 1569 - pltmp[4] = 0X0FBFDCc5; // 0X0FBFDCA0; // 0x1010 AGC_Ctrl5 //0x0FB2E0B7 Modify for 33's 1.0.95.xxx version 1570 - pltmp[5] = 0x00caa332; // 0x00caa333; // 0x1014 AGC_Ctrl6 Modify for 33's 1.0.95.xxx version 1571 - pltmp[6] = 0XF6632111; // 0XF1632112; // 0x1018 AGC_Ctrl7 //0xf6632112 Modify for 33's 1.0.95.xxx version 1572 - pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8 1573 - pltmp[8] = 0x04C43640; // 0x1020 AGC_Ctrl9 1574 - pltmp[9] = 0x00002A79; // 0x1024 AGC_Ctrl10 1575 - pltmp[10] = 0X40000528; //0x40000228 1576 - pltmp[11] = 0x232dfF30; // 0x232A9F30; // 0x102c A_ACQ_Ctrl //0x232a9730 1577 - reg->BB2C = 0x232dfF30; //Modify for 33's 1.0.95.xxx version, antenna 1 1578 - Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT ); 1677 + pltmp[0] = 0x00002C54; /* 0x1030 B_ACQ_Ctrl */ 1678 + reg->BB30 = 0x00002C54; 1679 + pltmp[1] = 0x00C0D6C5; /* 0x1034 A_TXRX_Ctrl */ 1680 + pltmp[2] = 0x5B2C8769; /* 0x1038 B_TXRX_Ctrl */ 1681 + pltmp[3] = pHwData->BB3c_cal; /* 0x103c 11a TX LS filter */ 1682 + reg->BB3C = pHwData->BB3c_cal; 1683 + pltmp[4] = 0x00003F29; /* 0x1040 11a TX LS filter */ 1684 + pltmp[5] = 0x0EFEFBFE; /* 0x1044 11a TX LS filter */ 1685 + pltmp[6] = BB48_DEFAULT_WB242_11G; /* 0x1048 11b TX RC filter */ 1686 + reg->BB48 = BB48_DEFAULT_WB242_11G; 1687 + pltmp[7] = BB4C_DEFAULT_WB242_11G; /* 0x104c 11b TX RC filter */ 1688 + reg->BB4C = BB4C_DEFAULT_WB242_11G; 1689 + pltmp[8] = 0x27106208; /* 0x1050 MODE_Ctrl */ 1690 + reg->BB50 = 0x27106208; 1691 + pltmp[9] = pHwData->BB54_cal; /* 0x1054 */ 1692 + reg->BB54 = pHwData->BB54_cal; 1693 + pltmp[10] = 0x52523131; /* 0x1058 IQ_Alpha */ 1694 + reg->BB58 = 0x52523131; 1695 + pltmp[11] = 0xAA0AC000; /* 0x105c DC_Cancel */ 1696 + Wb35Reg_BurstWrite(pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT); 1579 1697 1580 - pltmp[0] = 0x00002C54; // 0x1030 B_ACQ_Ctrl 1581 - reg->BB30 = 0x00002C54; 1582 - pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl 1583 - pltmp[2] = 0x5B2C8769; // 0x1038 B_TXRX_Ctrl //0x5B6C8769 1584 - pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter 1585 - reg->BB3C = 0x00000000; 1586 - pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter 1587 - pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter 1588 - pltmp[6] = BB48_DEFAULT_AL2230_11G; // 0x1048 11b TX RC filter 20060613.2 1589 - reg->BB48 = BB48_DEFAULT_AL2230_11G; // 20051221 ch14 20060613.2 1590 - pltmp[7] = BB4C_DEFAULT_AL2230_11G; // 0x104c 11b TX RC filter 20060613.2 1591 - reg->BB4C = BB4C_DEFAULT_AL2230_11G; // 20060613.1 20060613.2 1592 - pltmp[8] = 0x27106200; // 0x1050 MODE_Ctrl 1593 - reg->BB50 = 0x27106200; 1594 - pltmp[9] = 0; // 0x1054 1595 - reg->BB54 = 0x00000000; 1596 - pltmp[10] = 0x52524242; // 0x1058 IQ_Alpha 1597 - reg->BB58 = 0x52524242; 1598 - pltmp[11] = 0xAA0AC000; // 0x105c DC_Cancel 1599 - Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT ); 1698 + Wb35Reg_Write(pHwData, 0x1070, 0x00000045); 1699 + break; 1700 + } 1600 1701 1601 - Wb35Reg_Write( pHwData, 0x1070, 0x00000045 ); 1602 - break; 1603 - 1604 - case RF_AIROHA_2230S: // 20060420 Add this 1605 - 1606 - pltmp[0] = 0X16764A77; // 0x1000 AGC_Ctrl1 //0x16765A77 1607 - pltmp[1] = 0x9affafb2; // 0x1004 AGC_Ctrl2 1608 - pltmp[2] = 0x55d00a04; // 0x1008 AGC_Ctrl3 1609 - pltmp[3] = 0xFFFd203c; // 0xFFFb203a; // 0x100c AGC_Ctrl4 Modify for 33's 1.0.95.xxx version 1610 - reg->BB0C = 0xFFFd203c; 1611 - pltmp[4] = 0X0FBFDCc5; // 0X0FBFDCA0; // 0x1010 AGC_Ctrl5 //0x0FB2E0B7 Modify for 33's 1.0.95.xxx version 1612 - pltmp[5] = 0x00caa332; // 0x00caa333; // 0x1014 AGC_Ctrl6 Modify for 33's 1.0.95.xxx version 1613 - pltmp[6] = 0XF6632111; // 0XF1632112; // 0x1018 AGC_Ctrl7 //0xf6632112 Modify for 33's 1.0.95.xxx version 1614 - pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8 1615 - pltmp[8] = 0x04C43640; // 0x1020 AGC_Ctrl9 1616 - pltmp[9] = 0x00002A79; // 0x1024 AGC_Ctrl10 1617 - pltmp[10] = 0X40000528; //0x40000228 1618 - pltmp[11] = 0x232dfF30; // 0x232A9F30; // 0x102c A_ACQ_Ctrl //0x232a9730 1619 - reg->BB2C = 0x232dfF30; //Modify for 33's 1.0.95.xxx version, antenna 1 1620 - Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT ); 1621 - 1622 - pltmp[0] = 0x00002C54; // 0x1030 B_ACQ_Ctrl 1623 - reg->BB30 = 0x00002C54; 1624 - pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl 1625 - pltmp[2] = 0x5B2C8769; // 0x1038 B_TXRX_Ctrl //0x5B6C8769 1626 - pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter 1627 - reg->BB3C = 0x00000000; 1628 - pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter 1629 - pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter 1630 - pltmp[6] = BB48_DEFAULT_AL2230_11G; // 0x1048 11b TX RC filter 20060613.2 1631 - reg->BB48 = BB48_DEFAULT_AL2230_11G; // 20051221 ch14 20060613.2 1632 - pltmp[7] = BB4C_DEFAULT_AL2230_11G; // 0x104c 11b TX RC filter 20060613.2 1633 - reg->BB4C = BB4C_DEFAULT_AL2230_11G; // 20060613.1 1634 - pltmp[8] = 0x27106200; // 0x1050 MODE_Ctrl 1635 - reg->BB50 = 0x27106200; 1636 - pltmp[9] = 0; // 0x1054 1637 - reg->BB54 = 0x00000000; 1638 - pltmp[10] = 0x52523232; // 20060419 0x52524242; // 0x1058 IQ_Alpha 1639 - reg->BB58 = 0x52523232; // 20060419 0x52524242; 1640 - pltmp[11] = 0xAA0AC000; // 0x105c DC_Cancel 1641 - Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT ); 1642 - 1643 - Wb35Reg_Write( pHwData, 0x1070, 0x00000045 ); 1644 - break; 1645 - 1646 - case RF_AIROHA_7230: 1647 - /* 1648 - pltmp[0] = 0x16a84a77; // 0x1000 AGC_Ctrl1 1649 - pltmp[1] = 0x9affafb2; // 0x1004 AGC_Ctrl2 1650 - pltmp[2] = 0x55d00a04; // 0x1008 AGC_Ctrl3 1651 - pltmp[3] = 0xFFFb203a; // 0x100c AGC_Ctrl4 1652 - reg->BB0c = 0xFFFb203a; 1653 - pltmp[4] = 0x0FBFDCB7; // 0x1010 AGC_Ctrl5 1654 - pltmp[5] = 0x00caa333; // 0x1014 AGC_Ctrl6 1655 - pltmp[6] = 0xf6632112; // 0x1018 AGC_Ctrl7 1656 - pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8 1657 - pltmp[8] = 0x04C43640; // 0x1020 AGC_Ctrl9 1658 - pltmp[9] = 0x00002A79; // 0x1024 AGC_Ctrl10 1659 - pltmp[10] = 0x40000228; 1660 - pltmp[11] = 0x232A9F30;// 0x102c A_ACQ_Ctrl 1661 - reg->BB2c = 0x232A9F30; 1662 - Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT ); 1663 - 1664 - pltmp[0] = 0x00002C54; // 0x1030 B_ACQ_Ctrl 1665 - reg->BB30 = 0x00002C54; 1666 - pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl 1667 - pltmp[2] = 0x5B2C8769; // 0x1038 B_TXRX_Ctrl 1668 - pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter 1669 - reg->BB3c = 0x00000000; 1670 - pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter 1671 - pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter 1672 - pltmp[6] = 0x00453B24; // 0x1048 11b TX RC filter 1673 - pltmp[7] = 0x0E00FEFF; // 0x104c 11b TX RC filter 1674 - pltmp[8] = 0x27106200; // 0x1050 MODE_Ctrl 1675 - reg->BB50 = 0x27106200; 1676 - pltmp[9] = 0; // 0x1054 1677 - reg->BB54 = 0x00000000; 1678 - pltmp[10] = 0x64645252; // 0x1058 IQ_Alpha 1679 - reg->BB58 = 0x64645252; 1680 - pltmp[11] = 0xAA0AC000; // 0x105c DC_Cancel 1681 - Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT ); 1682 - */ 1683 - BBProcessor_AL7230_2400( pHwData ); 1684 - 1685 - Wb35Reg_Write( pHwData, 0x1070, 0x00000045 ); 1686 - break; 1687 - 1688 - case RF_WB_242: 1689 - case RF_WB_242_1: // 20060619.5 Add 1690 - 1691 - pltmp[0] = 0x16A8525D; // 0x1000 AGC_Ctrl1 1692 - pltmp[1] = 0x9AFF9ABA; // 0x1004 AGC_Ctrl2 1693 - pltmp[2] = 0x55D00A04; // 0x1008 AGC_Ctrl3 1694 - pltmp[3] = 0xEEE91C32; // 0x100c AGC_Ctrl4 1695 - reg->BB0C = 0xEEE91C32; 1696 - pltmp[4] = 0x0FACDCC5; // 0x1010 AGC_Ctrl5 1697 - pltmp[5] = 0x000AA344; // 0x1014 AGC_Ctrl6 1698 - pltmp[6] = 0x22222221; // 0x1018 AGC_Ctrl7 1699 - pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8 1700 - pltmp[8] = 0x04CC3440; // 20051018 0x03CB3440; // 0x1020 AGC_Ctrl9 20051014 0x03C33440 1701 - pltmp[9] = 0xA9002A79; // 0x1024 AGC_Ctrl10 1702 - pltmp[10] = 0x40000528; // 0x1028 1703 - pltmp[11] = 0x23457F30; // 0x102c A_ACQ_Ctrl 1704 - reg->BB2C = 0x23457F30; 1705 - Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT ); 1706 - 1707 - pltmp[0] = 0x00002C54; // 0x1030 B_ACQ_Ctrl 1708 - reg->BB30 = 0x00002C54; 1709 - pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl 1710 - pltmp[2] = 0x5B2C8769; // 0x1038 B_TXRX_Ctrl 1711 - pltmp[3] = pHwData->BB3c_cal; // 0x103c 11a TX LS filter 1712 - reg->BB3C = pHwData->BB3c_cal; 1713 - pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter 1714 - pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter 1715 - pltmp[6] = BB48_DEFAULT_WB242_11G; // 0x1048 11b TX RC filter 20060613.2 1716 - reg->BB48 = BB48_DEFAULT_WB242_11G; // 20060613.1 20060613.2 1717 - pltmp[7] = BB4C_DEFAULT_WB242_11G; // 0x104c 11b TX RC filter 20060613.2 1718 - reg->BB4C = BB4C_DEFAULT_WB242_11G; // 20060613.1 20060613.2 1719 - pltmp[8] = 0x27106208; // 0x1050 MODE_Ctrl 1720 - reg->BB50 = 0x27106208; 1721 - pltmp[9] = pHwData->BB54_cal; // 0x1054 1722 - reg->BB54 = pHwData->BB54_cal; 1723 - pltmp[10] = 0x52523131; // 0x1058 IQ_Alpha 1724 - reg->BB58 = 0x52523131; 1725 - pltmp[11] = 0xAA0AC000; // 20060825 0xAA2AC000; // 0x105c DC_Cancel 1726 - Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT ); 1727 - 1728 - Wb35Reg_Write( pHwData, 0x1070, 0x00000045 ); 1729 - break; 1730 - } 1731 - 1732 - // Fill the LNA table 1733 - reg->LNAValue[0] = (u8)(reg->BB0C & 0xff); 1702 + /* Fill the LNA table */ 1703 + reg->LNAValue[0] = (u8) (reg->BB0C & 0xff); 1734 1704 reg->LNAValue[1] = 0; 1735 - reg->LNAValue[2] = (u8)((reg->BB0C & 0xff00)>>8); 1705 + reg->LNAValue[2] = (u8) ((reg->BB0C & 0xff00) >> 8); 1736 1706 reg->LNAValue[3] = 0; 1737 1707 1738 - // Fill SQ3 table 1739 - for( i=0; i<MAX_SQ3_FILTER_SIZE; i++ ) 1740 - reg->SQ3_filter[i] = 0x2f; // half of Bit 0 ~ 6 1708 + /* Fill SQ3 table */ 1709 + for (i = 0; i < MAX_SQ3_FILTER_SIZE; i++) 1710 + reg->SQ3_filter[i] = 0x2f; /* half of Bit 0 ~ 6 */ 1741 1711 } 1742 1712 1743 - void set_tx_power_per_channel_max2829( struct hw_data * pHwData, struct chan_info Channel) 1713 + void set_tx_power_per_channel_max2829(struct hw_data *pHwData, struct chan_info Channel) 1744 1714 { 1745 - RFSynthesizer_SetPowerIndex( pHwData, 100 ); // 20060620.1 Modify 1715 + RFSynthesizer_SetPowerIndex(pHwData, 100); 1746 1716 } 1747 1717 1748 - void set_tx_power_per_channel_al2230( struct hw_data * pHwData, struct chan_info Channel ) 1718 + void set_tx_power_per_channel_al2230(struct hw_data *pHwData, struct chan_info Channel) 1749 1719 { 1750 1720 u8 index = 100; 1751 1721 1752 - if (pHwData->TxVgaFor24[Channel.ChanNo - 1] != 0xff) // 20060620.1 Add 1722 + if (pHwData->TxVgaFor24[Channel.ChanNo - 1] != 0xff) 1753 1723 index = pHwData->TxVgaFor24[Channel.ChanNo - 1]; 1754 1724 1755 - RFSynthesizer_SetPowerIndex( pHwData, index ); 1725 + RFSynthesizer_SetPowerIndex(pHwData, index); 1756 1726 } 1757 1727 1758 - void set_tx_power_per_channel_al7230( struct hw_data * pHwData, struct chan_info Channel) 1728 + void set_tx_power_per_channel_al7230(struct hw_data *pHwData, struct chan_info Channel) 1759 1729 { 1760 1730 u8 i, index = 100; 1761 1731 1762 - switch ( Channel.band ) 1763 - { 1764 - case BAND_TYPE_DSSS: 1765 - case BAND_TYPE_OFDM_24: 1766 - { 1767 - if (pHwData->TxVgaFor24[Channel.ChanNo - 1] != 0xff) 1768 - index = pHwData->TxVgaFor24[Channel.ChanNo - 1]; 1732 + switch (Channel.band) { 1733 + case BAND_TYPE_DSSS: 1734 + case BAND_TYPE_OFDM_24: 1735 + if (pHwData->TxVgaFor24[Channel.ChanNo - 1] != 0xff) 1736 + index = pHwData->TxVgaFor24[Channel.ChanNo - 1]; 1737 + break; 1738 + case BAND_TYPE_OFDM_5: 1739 + for (i = 0; i < 35; i++) { 1740 + if (Channel.ChanNo == pHwData->TxVgaFor50[i].ChanNo) { 1741 + if (pHwData->TxVgaFor50[i].TxVgaValue != 0xff) 1742 + index = pHwData->TxVgaFor50[i].TxVgaValue; 1743 + break; 1769 1744 } 1770 - break; 1771 - case BAND_TYPE_OFDM_5: 1772 - { 1773 - for (i =0; i<35; i++) 1774 - { 1775 - if (Channel.ChanNo == pHwData->TxVgaFor50[i].ChanNo) 1776 - { 1777 - if (pHwData->TxVgaFor50[i].TxVgaValue != 0xff) 1778 - index = pHwData->TxVgaFor50[i].TxVgaValue; 1779 - break; 1780 - } 1781 - } 1782 - } 1783 - break; 1745 + } 1746 + break; 1784 1747 } 1785 - RFSynthesizer_SetPowerIndex( pHwData, index ); 1748 + RFSynthesizer_SetPowerIndex(pHwData, index); 1786 1749 } 1787 1750 1788 - void set_tx_power_per_channel_wb242( struct hw_data * pHwData, struct chan_info Channel) 1751 + void set_tx_power_per_channel_wb242(struct hw_data *pHwData, struct chan_info Channel) 1789 1752 { 1790 1753 u8 index = 100; 1791 1754 1792 - switch ( Channel.band ) 1793 - { 1794 - case BAND_TYPE_DSSS: 1795 - case BAND_TYPE_OFDM_24: 1796 - { 1797 - if (pHwData->TxVgaFor24[Channel.ChanNo - 1] != 0xff) 1798 - index = pHwData->TxVgaFor24[Channel.ChanNo - 1]; 1799 - } 1800 - break; 1801 - case BAND_TYPE_OFDM_5: 1802 - break; 1755 + switch (Channel.band) { 1756 + case BAND_TYPE_DSSS: 1757 + case BAND_TYPE_OFDM_24: 1758 + if (pHwData->TxVgaFor24[Channel.ChanNo - 1] != 0xff) 1759 + index = pHwData->TxVgaFor24[Channel.ChanNo - 1]; 1760 + break; 1761 + case BAND_TYPE_OFDM_5: 1762 + break; 1803 1763 } 1804 - RFSynthesizer_SetPowerIndex( pHwData, index ); 1764 + RFSynthesizer_SetPowerIndex(pHwData, index); 1805 1765 } 1806 1766 1807 - //============================================================================================================= 1808 - // RFSynthesizer_SwitchingChannel -- 1809 - // 1810 - // Description: 1811 - // Swithch the RF channel. 1812 - // 1813 - // Arguments: 1814 - // pHwData - Handle of the USB Device. 1815 - // Channel - The channel no. 1816 - // 1817 - // Return values: 1818 - // None. 1819 - //============================================================================================================= 1820 - void 1821 - RFSynthesizer_SwitchingChannel( struct hw_data * pHwData, struct chan_info Channel ) 1767 + /* 1768 + * ========================================================================== 1769 + * RFSynthesizer_SwitchingChannel -- 1770 + * 1771 + * Description: 1772 + * Swithch the RF channel. 1773 + * 1774 + * Arguments: 1775 + * pHwData - Handle of the USB Device. 1776 + * Channel - The channel no. 1777 + * 1778 + * Return values: 1779 + * None. 1780 + * =========================================================================== 1781 + */ 1782 + void RFSynthesizer_SwitchingChannel(struct hw_data *pHwData, struct chan_info Channel) 1822 1783 { 1823 1784 struct wb35_reg *reg = &pHwData->reg; 1824 - u32 pltmp[16]; // The 16 is the maximum capability of hardware 1785 + u32 pltmp[16]; /* The 16 is the maximum capability of hardware */ 1825 1786 u32 count, ltmp; 1826 1787 u8 i, j, number; 1827 1788 u8 ChnlTmp; 1828 1789 1829 - switch( pHwData->phy_type ) 1830 - { 1831 - case RF_MAXIM_2825: 1832 - case RF_MAXIM_V1: // 11g Winbond 2nd BB(with Phy board (v1) + Maxim 331) 1790 + switch (pHwData->phy_type) { 1791 + case RF_MAXIM_2825: 1792 + case RF_MAXIM_V1: /* 11g Winbond 2nd BB(with Phy board (v1) + Maxim 331) */ 1833 1793 1834 - if( Channel.band <= BAND_TYPE_OFDM_24 ) // channel 1 ~ 13 1835 - { 1836 - for( i=0; i<3; i++ ) 1837 - pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2825_channel_data_24[Channel.ChanNo-1][i], 18); 1838 - Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT ); 1839 - } 1840 - RFSynthesizer_SetPowerIndex( pHwData, 100 ); 1841 - break; 1794 + if (Channel.band <= BAND_TYPE_OFDM_24) { /* channel 1 ~ 13 */ 1795 + for (i = 0; i < 3; i++) 1796 + pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2825_channel_data_24[Channel.ChanNo-1][i], 18); 1797 + Wb35Reg_BurstWrite(pHwData, 0x0864, pltmp, 3, NO_INCREMENT); 1798 + } 1799 + RFSynthesizer_SetPowerIndex(pHwData, 100); 1800 + break; 1801 + case RF_MAXIM_2827: 1802 + if (Channel.band <= BAND_TYPE_OFDM_24) { /* channel 1 ~ 13 */ 1803 + for (i = 0; i < 3; i++) 1804 + pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2827_channel_data_24[Channel.ChanNo-1][i], 18); 1805 + Wb35Reg_BurstWrite(pHwData, 0x0864, pltmp, 3, NO_INCREMENT); 1806 + } else if (Channel.band == BAND_TYPE_OFDM_5) { /* channel 36 ~ 64 */ 1807 + ChnlTmp = (Channel.ChanNo - 36) / 4; 1808 + for (i = 0; i < 3; i++) 1809 + pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2827_channel_data_50[ChnlTmp][i], 18); 1810 + Wb35Reg_BurstWrite(pHwData, 0x0864, pltmp, 3, NO_INCREMENT); 1811 + } 1812 + RFSynthesizer_SetPowerIndex(pHwData, 100); 1813 + break; 1814 + case RF_MAXIM_2828: 1815 + if (Channel.band <= BAND_TYPE_OFDM_24) { /* channel 1 ~ 13 */ 1816 + for (i = 0; i < 3; i++) 1817 + pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2828_channel_data_24[Channel.ChanNo-1][i], 18); 1818 + Wb35Reg_BurstWrite(pHwData, 0x0864, pltmp, 3, NO_INCREMENT); 1819 + } else if (Channel.band == BAND_TYPE_OFDM_5) { /* channel 36 ~ 64 */ 1820 + ChnlTmp = (Channel.ChanNo - 36) / 4; 1821 + for (i = 0; i < 3; i++) 1822 + pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2828_channel_data_50[ChnlTmp][i], 18); 1823 + Wb35Reg_BurstWrite(pHwData, 0x0864, pltmp, 3, NO_INCREMENT); 1824 + } 1825 + RFSynthesizer_SetPowerIndex(pHwData, 100); 1826 + break; 1827 + case RF_MAXIM_2829: 1828 + if (Channel.band <= BAND_TYPE_OFDM_24) { 1829 + for (i = 0; i < 3; i++) 1830 + pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2829_channel_data_24[Channel.ChanNo-1][i], 18); 1831 + Wb35Reg_BurstWrite(pHwData, 0x0864, pltmp, 3, NO_INCREMENT); 1832 + } else if (Channel.band == BAND_TYPE_OFDM_5) { 1833 + count = sizeof(max2829_channel_data_50) / sizeof(max2829_channel_data_50[0]); 1842 1834 1843 - case RF_MAXIM_2827: 1835 + for (i = 0; i < count; i++) { 1836 + if (max2829_channel_data_50[i][0] == Channel.ChanNo) { 1837 + for (j = 0; j < 3; j++) 1838 + pltmp[j] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2829_channel_data_50[i][j+1], 18); 1839 + Wb35Reg_BurstWrite(pHwData, 0x0864, pltmp, 3, NO_INCREMENT); 1844 1840 1845 - if( Channel.band <= BAND_TYPE_OFDM_24 ) // channel 1 ~ 13 1846 - { 1847 - for( i=0; i<3; i++ ) 1848 - pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2827_channel_data_24[Channel.ChanNo-1][i], 18); 1849 - Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT ); 1850 - } 1851 - else if( Channel.band == BAND_TYPE_OFDM_5 ) // channel 36 ~ 64 1852 - { 1853 - ChnlTmp = (Channel.ChanNo - 36) / 4; 1854 - for( i=0; i<3; i++ ) 1855 - pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2827_channel_data_50[ChnlTmp][i], 18); 1856 - Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT ); 1857 - } 1858 - RFSynthesizer_SetPowerIndex( pHwData, 100 ); 1859 - break; 1860 - 1861 - case RF_MAXIM_2828: 1862 - 1863 - if( Channel.band <= BAND_TYPE_OFDM_24 ) // channel 1 ~ 13 1864 - { 1865 - for( i=0; i<3; i++ ) 1866 - pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2828_channel_data_24[Channel.ChanNo-1][i], 18); 1867 - Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT ); 1868 - } 1869 - else if( Channel.band == BAND_TYPE_OFDM_5 ) // channel 36 ~ 64 1870 - { 1871 - ChnlTmp = (Channel.ChanNo - 36) / 4; 1872 - for ( i = 0; i < 3; i++) 1873 - pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2828_channel_data_50[ChnlTmp][i], 18); 1874 - Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT ); 1875 - } 1876 - RFSynthesizer_SetPowerIndex( pHwData, 100 ); 1877 - break; 1878 - 1879 - case RF_MAXIM_2829: 1880 - 1881 - if( Channel.band <= BAND_TYPE_OFDM_24) 1882 - { 1883 - for( i=0; i<3; i++ ) 1884 - pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2829_channel_data_24[Channel.ChanNo-1][i], 18); 1885 - Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT ); 1886 - } 1887 - else if( Channel.band == BAND_TYPE_OFDM_5 ) 1888 - { 1889 - count = sizeof(max2829_channel_data_50) / sizeof(max2829_channel_data_50[0]); 1890 - 1891 - for( i=0; i<count; i++ ) 1892 - { 1893 - if( max2829_channel_data_50[i][0] == Channel.ChanNo ) 1894 - { 1895 - for( j=0; j<3; j++ ) 1896 - pltmp[j] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2829_channel_data_50[i][j+1], 18); 1897 - Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT ); 1898 - 1899 - if( (max2829_channel_data_50[i][3] & 0x3FFFF) == 0x2A946 ) 1900 - { 1901 - ltmp = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( (5<<18)|0x2A906, 18); 1902 - Wb35Reg_Write( pHwData, 0x0864, ltmp ); 1903 - } 1904 - else // 0x2A9C6 1905 - { 1906 - ltmp = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( (5<<18)|0x2A986, 18); 1907 - Wb35Reg_Write( pHwData, 0x0864, ltmp ); 1908 - } 1841 + if ((max2829_channel_data_50[i][3] & 0x3FFFF) == 0x2A946) { 1842 + ltmp = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse((5 << 18) | 0x2A906, 18); 1843 + Wb35Reg_Write(pHwData, 0x0864, ltmp); 1844 + } else { /* 0x2A9C6 */ 1845 + ltmp = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse((5 << 18) | 0x2A986, 18); 1846 + Wb35Reg_Write(pHwData, 0x0864, ltmp); 1909 1847 } 1910 1848 } 1911 1849 } 1912 - set_tx_power_per_channel_max2829( pHwData, Channel ); 1913 - break; 1850 + } 1851 + set_tx_power_per_channel_max2829(pHwData, Channel); 1852 + break; 1853 + case RF_AIROHA_2230: 1854 + case RF_AIROHA_2230S: 1855 + if (Channel.band <= BAND_TYPE_OFDM_24) { /* channel 1 ~ 14 */ 1856 + for (i = 0; i < 2; i++) 1857 + pltmp[i] = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse(al2230_channel_data_24[Channel.ChanNo-1][i], 20); 1858 + Wb35Reg_BurstWrite(pHwData, 0x0864, pltmp, 2, NO_INCREMENT); 1859 + } 1860 + set_tx_power_per_channel_al2230(pHwData, Channel); 1861 + break; 1862 + case RF_AIROHA_7230: 1863 + /* Channel independent registers */ 1864 + if (Channel.band != pHwData->band) { 1865 + if (Channel.band <= BAND_TYPE_OFDM_24) { 1866 + /* Update BB register */ 1867 + BBProcessor_AL7230_2400(pHwData); 1914 1868 1915 - case RF_AIROHA_2230: 1916 - case RF_AIROHA_2230S: // 20060420 Add this 1869 + number = sizeof(al7230_rf_data_24) / sizeof(al7230_rf_data_24[0]); 1870 + Set_ChanIndep_RfData_al7230_24(pHwData, pltmp, number); 1871 + } else { 1872 + /* Update BB register */ 1873 + BBProcessor_AL7230_5000(pHwData); 1917 1874 1918 - if( Channel.band <= BAND_TYPE_OFDM_24 ) // channel 1 ~ 14 1919 - { 1920 - for( i=0; i<2; i++ ) 1921 - pltmp[i] = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( al2230_channel_data_24[Channel.ChanNo-1][i], 20); 1922 - Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 2, NO_INCREMENT ); 1923 - } 1924 - set_tx_power_per_channel_al2230( pHwData, Channel ); 1925 - break; 1926 - 1927 - case RF_AIROHA_7230: 1928 - 1929 - //Start to fill RF parameters, PLL_ON should be pulled low. 1930 - //Wb35Reg_Write( pHwData, 0x03dc, 0x00000000 ); 1931 - //printk("* PLL_ON low\n"); 1932 - 1933 - //Channel independent registers 1934 - if( Channel.band != pHwData->band) 1935 - { 1936 - if (Channel.band <= BAND_TYPE_OFDM_24) 1937 - { 1938 - //Update BB register 1939 - BBProcessor_AL7230_2400(pHwData); 1940 - 1941 - number = sizeof(al7230_rf_data_24)/sizeof(al7230_rf_data_24[0]); 1942 - Set_ChanIndep_RfData_al7230_24(pHwData, pltmp, number); 1943 - } 1944 - else 1945 - { 1946 - //Update BB register 1947 - BBProcessor_AL7230_5000(pHwData); 1948 - 1949 - number = sizeof(al7230_rf_data_50)/sizeof(al7230_rf_data_50[0]); 1950 - Set_ChanIndep_RfData_al7230_50(pHwData, pltmp, number); 1951 - } 1952 - 1953 - // Write to register. number must less and equal than 16 1954 - Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, number, NO_INCREMENT ); 1955 - #ifdef _PE_STATE_DUMP_ 1956 - printk("Band changed\n"); 1957 - #endif 1875 + number = sizeof(al7230_rf_data_50) / sizeof(al7230_rf_data_50[0]); 1876 + Set_ChanIndep_RfData_al7230_50(pHwData, pltmp, number); 1958 1877 } 1959 1878 1960 - if( Channel.band <= BAND_TYPE_OFDM_24 ) // channel 1 ~ 14 1961 - { 1962 - for( i=0; i<2; i++ ) 1963 - pltmp[i] = (1 << 31) | (0 << 30) | (24 << 24) | (al7230_channel_data_24[Channel.ChanNo-1][i]&0xffffff); 1964 - Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 2, NO_INCREMENT ); 1879 + /* Write to register. number must less and equal than 16 */ 1880 + Wb35Reg_BurstWrite(pHwData, 0x0864, pltmp, number, NO_INCREMENT); 1881 + #ifdef _PE_STATE_DUMP_ 1882 + printk("Band changed\n"); 1883 + #endif 1884 + } 1885 + 1886 + if (Channel.band <= BAND_TYPE_OFDM_24) { /* channel 1 ~ 14 */ 1887 + for (i = 0; i < 2; i++) 1888 + pltmp[i] = (1 << 31) | (0 << 30) | (24 << 24) | (al7230_channel_data_24[Channel.ChanNo-1][i]&0xffffff); 1889 + Wb35Reg_BurstWrite(pHwData, 0x0864, pltmp, 2, NO_INCREMENT); 1890 + } else if (Channel.band == BAND_TYPE_OFDM_5) { 1891 + /* Update Reg12 */ 1892 + if ((Channel.ChanNo > 64) && (Channel.ChanNo <= 165)) { 1893 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x00143c; 1894 + Wb35Reg_Write(pHwData, 0x0864, ltmp); 1895 + } else { /* reg12 = 0x00147c at Channel 4920 ~ 5320 */ 1896 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x00147c; 1897 + Wb35Reg_Write(pHwData, 0x0864, ltmp); 1965 1898 } 1966 - else if( Channel.band == BAND_TYPE_OFDM_5 ) 1967 - { 1968 - //Update Reg12 1969 - if ((Channel.ChanNo > 64) && (Channel.ChanNo <= 165)) 1970 - { 1971 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x00143c; 1972 - Wb35Reg_Write( pHwData, 0x0864, ltmp ); 1973 - } 1974 - else //reg12 = 0x00147c at Channel 4920 ~ 5320 1975 - { 1976 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x00147c; 1977 - Wb35Reg_Write( pHwData, 0x0864, ltmp ); 1978 - } 1979 1899 1980 - count = sizeof(al7230_channel_data_5) / sizeof(al7230_channel_data_5[0]); 1900 + count = sizeof(al7230_channel_data_5) / sizeof(al7230_channel_data_5[0]); 1981 1901 1982 - for (i=0; i<count; i++) 1983 - { 1984 - if (al7230_channel_data_5[i][0] == Channel.ChanNo) 1985 - { 1986 - for( j=0; j<3; j++ ) 1987 - pltmp[j] = (1 << 31) | (0 << 30) | (24 << 24) | ( al7230_channel_data_5[i][j+1]&0xffffff); 1988 - Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT ); 1989 - } 1902 + for (i = 0; i < count; i++) { 1903 + if (al7230_channel_data_5[i][0] == Channel.ChanNo) { 1904 + for (j = 0; j < 3; j++) 1905 + pltmp[j] = (1 << 31) | (0 << 30) | (24 << 24) | (al7230_channel_data_5[i][j+1] & 0xffffff); 1906 + Wb35Reg_BurstWrite(pHwData, 0x0864, pltmp, 3, NO_INCREMENT); 1990 1907 } 1991 1908 } 1992 - set_tx_power_per_channel_al7230(pHwData, Channel); 1993 - break; 1909 + } 1910 + set_tx_power_per_channel_al7230(pHwData, Channel); 1911 + break; 1912 + case RF_WB_242: 1913 + case RF_WB_242_1: 1994 1914 1995 - case RF_WB_242: 1996 - case RF_WB_242_1: // 20060619.5 Add 1997 - 1998 - if( Channel.band <= BAND_TYPE_OFDM_24 ) // channel 1 ~ 14 1999 - { 2000 - ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( w89rf242_channel_data_24[Channel.ChanNo-1][0], 24); 2001 - Wb35Reg_Write( pHwData, 0x864, ltmp ); 2002 - } 2003 - set_tx_power_per_channel_wb242(pHwData, Channel); 2004 - break; 1915 + if (Channel.band <= BAND_TYPE_OFDM_24) { /* channel 1 ~ 14 */ 1916 + ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse(w89rf242_channel_data_24[Channel.ChanNo-1][0], 24); 1917 + Wb35Reg_Write(pHwData, 0x864, ltmp); 1918 + } 1919 + set_tx_power_per_channel_wb242(pHwData, Channel); 1920 + break; 2005 1921 } 2006 1922 2007 - if( Channel.band <= BAND_TYPE_OFDM_24 ) 2008 - { 2009 - // BB: select 2.4 GHz, bit[12-11]=00 2010 - reg->BB50 &= ~(BIT(11)|BIT(12)); 2011 - Wb35Reg_Write( pHwData, 0x1050, reg->BB50 ); // MODE_Ctrl 2012 - // MAC: select 2.4 GHz, bit[5]=0 1923 + if (Channel.band <= BAND_TYPE_OFDM_24) { 1924 + /* BB: select 2.4 GHz, bit[12-11]=00 */ 1925 + reg->BB50 &= ~(BIT(11) | BIT(12)); 1926 + Wb35Reg_Write(pHwData, 0x1050, reg->BB50); /* MODE_Ctrl */ 1927 + /* MAC: select 2.4 GHz, bit[5]=0 */ 2013 1928 reg->M78_ERPInformation &= ~BIT(5); 2014 - Wb35Reg_Write( pHwData, 0x0878, reg->M78_ERPInformation ); 2015 - // enable 11b Baseband 1929 + Wb35Reg_Write(pHwData, 0x0878, reg->M78_ERPInformation); 1930 + /* enable 11b Baseband */ 2016 1931 reg->BB30 &= ~BIT(31); 2017 - Wb35Reg_Write( pHwData, 0x1030, reg->BB30 ); 2018 - } 2019 - else if( (Channel.band == BAND_TYPE_OFDM_5) ) 2020 - { 2021 - // BB: select 5 GHz 2022 - reg->BB50 &= ~(BIT(11)|BIT(12)); 2023 - if (Channel.ChanNo <=64 ) 2024 - reg->BB50 |= BIT(12); // 10-5.25GHz 1932 + Wb35Reg_Write(pHwData, 0x1030, reg->BB30); 1933 + } else if (Channel.band == BAND_TYPE_OFDM_5) { 1934 + /* BB: select 5 GHz */ 1935 + reg->BB50 &= ~(BIT(11) | BIT(12)); 1936 + if (Channel.ChanNo <= 64) 1937 + reg->BB50 |= BIT(12); /* 10-5.25GHz */ 2025 1938 else if ((Channel.ChanNo >= 100) && (Channel.ChanNo <= 124)) 2026 - reg->BB50 |= BIT(11); // 01-5.48GHz 2027 - else if ((Channel.ChanNo >=128) && (Channel.ChanNo <= 161)) 2028 - reg->BB50 |= (BIT(12)|BIT(11)); // 11-5.775GHz 2029 - else //Chan 184 ~ 196 will use bit[12-11] = 10 in version sh-src-1.2.25 1939 + reg->BB50 |= BIT(11); /* 01-5.48GHz */ 1940 + else if ((Channel.ChanNo >= 128) && (Channel.ChanNo <= 161)) 1941 + reg->BB50 |= (BIT(12) | BIT(11)); /* 11-5.775GHz */ 1942 + else /* Chan 184 ~ 196 will use bit[12-11] = 10 in version sh-src-1.2.25 */ 2030 1943 reg->BB50 |= BIT(12); 2031 - Wb35Reg_Write( pHwData, 0x1050, reg->BB50 ); // MODE_Ctrl 1944 + Wb35Reg_Write(pHwData, 0x1050, reg->BB50); /* MODE_Ctrl */ 2032 1945 2033 - //(1) M78 should alway use 2.4G setting when using RF_AIROHA_7230 2034 - //(2) BB30 has been updated previously. 2035 - if (pHwData->phy_type != RF_AIROHA_7230) 2036 - { 2037 - // MAC: select 5 GHz, bit[5]=1 1946 + /* (1) M78 should alway use 2.4G setting when using RF_AIROHA_7230 */ 1947 + /* (2) BB30 has been updated previously. */ 1948 + if (pHwData->phy_type != RF_AIROHA_7230) { 1949 + /* MAC: select 5 GHz, bit[5]=1 */ 2038 1950 reg->M78_ERPInformation |= BIT(5); 2039 - Wb35Reg_Write( pHwData, 0x0878, reg->M78_ERPInformation ); 1951 + Wb35Reg_Write(pHwData, 0x0878, reg->M78_ERPInformation); 2040 1952 2041 - // disable 11b Baseband 1953 + /* disable 11b Baseband */ 2042 1954 reg->BB30 |= BIT(31); 2043 - Wb35Reg_Write( pHwData, 0x1030, reg->BB30 ); 1955 + Wb35Reg_Write(pHwData, 0x1030, reg->BB30); 2044 1956 } 2045 1957 } 2046 1958 } 2047 1959 2048 - //Set the tx power directly from DUT GUI, not from the EEPROM. Return the current setting 2049 - u8 RFSynthesizer_SetPowerIndex( struct hw_data * pHwData, u8 PowerIndex ) 1960 + /* 1961 + * Set the tx power directly from DUT GUI, not from the EEPROM. 1962 + * Return the current setting 1963 + */ 1964 + u8 RFSynthesizer_SetPowerIndex(struct hw_data *pHwData, u8 PowerIndex) 2050 1965 { 2051 1966 u32 Band = pHwData->band; 2052 - u8 index=0; 1967 + u8 index = 0; 2053 1968 2054 - if( pHwData->power_index == PowerIndex ) // 20060620.1 Add 1969 + if (pHwData->power_index == PowerIndex) 2055 1970 return PowerIndex; 2056 1971 2057 - if (RF_MAXIM_2825 == pHwData->phy_type) 2058 - { 2059 - // Channel 1 - 13 2060 - index = RFSynthesizer_SetMaxim2825Power( pHwData, PowerIndex ); 2061 - } 2062 - else if (RF_MAXIM_2827 == pHwData->phy_type) 2063 - { 2064 - if( Band <= BAND_TYPE_OFDM_24 ) // Channel 1 - 13 2065 - index = RFSynthesizer_SetMaxim2827_24Power( pHwData, PowerIndex ); 2066 - else// if( Band == BAND_TYPE_OFDM_5 ) // Channel 36 - 64 2067 - index = RFSynthesizer_SetMaxim2827_50Power( pHwData, PowerIndex ); 2068 - } 2069 - else if (RF_MAXIM_2828 == pHwData->phy_type) 2070 - { 2071 - if( Band <= BAND_TYPE_OFDM_24 ) // Channel 1 - 13 2072 - index = RFSynthesizer_SetMaxim2828_24Power( pHwData, PowerIndex ); 2073 - else// if( Band == BAND_TYPE_OFDM_5 ) // Channel 36 - 64 2074 - index = RFSynthesizer_SetMaxim2828_50Power( pHwData, PowerIndex ); 2075 - } 2076 - else if( RF_AIROHA_2230 == pHwData->phy_type ) 2077 - { 2078 - //Power index: 0 ~ 63 // Channel 1 - 14 2079 - index = RFSynthesizer_SetAiroha2230Power( pHwData, PowerIndex ); 2080 - index = (u8)al2230_txvga_data[index][1]; 2081 - } 2082 - else if( RF_AIROHA_2230S == pHwData->phy_type ) // 20060420 Add this 2083 - { 2084 - //Power index: 0 ~ 63 // Channel 1 - 14 2085 - index = RFSynthesizer_SetAiroha2230Power( pHwData, PowerIndex ); 2086 - index = (u8)al2230_txvga_data[index][1]; 2087 - } 2088 - else if( RF_AIROHA_7230 == pHwData->phy_type ) 2089 - { 2090 - //Power index: 0 ~ 63 2091 - index = RFSynthesizer_SetAiroha7230Power( pHwData, PowerIndex ); 1972 + if (RF_MAXIM_2825 == pHwData->phy_type) { 1973 + /* Channel 1 - 13 */ 1974 + index = RFSynthesizer_SetMaxim2825Power(pHwData, PowerIndex); 1975 + } else if (RF_MAXIM_2827 == pHwData->phy_type) { 1976 + if (Band <= BAND_TYPE_OFDM_24) /* Channel 1 - 13 */ 1977 + index = RFSynthesizer_SetMaxim2827_24Power(pHwData, PowerIndex); 1978 + else /* Channel 36 - 64 */ 1979 + index = RFSynthesizer_SetMaxim2827_50Power(pHwData, PowerIndex); 1980 + } else if (RF_MAXIM_2828 == pHwData->phy_type) { 1981 + if (Band <= BAND_TYPE_OFDM_24) /* Channel 1 - 13 */ 1982 + index = RFSynthesizer_SetMaxim2828_24Power(pHwData, PowerIndex); 1983 + else /* Channel 36 - 64 */ 1984 + index = RFSynthesizer_SetMaxim2828_50Power(pHwData, PowerIndex); 1985 + } else if (RF_AIROHA_2230 == pHwData->phy_type) { 1986 + /* Power index: 0 ~ 63 --- Channel 1 - 14 */ 1987 + index = RFSynthesizer_SetAiroha2230Power(pHwData, PowerIndex); 1988 + index = (u8) al2230_txvga_data[index][1]; 1989 + } else if (RF_AIROHA_2230S == pHwData->phy_type) { 1990 + /* Power index: 0 ~ 63 --- Channel 1 - 14 */ 1991 + index = RFSynthesizer_SetAiroha2230Power(pHwData, PowerIndex); 1992 + index = (u8) al2230_txvga_data[index][1]; 1993 + } else if (RF_AIROHA_7230 == pHwData->phy_type) { 1994 + /* Power index: 0 ~ 63 */ 1995 + index = RFSynthesizer_SetAiroha7230Power(pHwData, PowerIndex); 2092 1996 index = (u8)al7230_txvga_data[index][1]; 2093 - } 2094 - else if( (RF_WB_242 == pHwData->phy_type) || 2095 - (RF_WB_242_1 == pHwData->phy_type) ) // 20060619.5 Add 2096 - { 2097 - //Power index: 0 ~ 19 for original. New range is 0 ~ 33 2098 - index = RFSynthesizer_SetWinbond242Power( pHwData, PowerIndex ); 1997 + } else if ((RF_WB_242 == pHwData->phy_type) || 1998 + (RF_WB_242_1 == pHwData->phy_type)) { 1999 + /* Power index: 0 ~ 19 for original. New range is 0 ~ 33 */ 2000 + index = RFSynthesizer_SetWinbond242Power(pHwData, PowerIndex); 2099 2001 index = (u8)w89rf242_txvga_data[index][1]; 2100 2002 } 2101 2003 2102 - pHwData->power_index = index; // Backup current 2004 + pHwData->power_index = index; /* Backup current */ 2103 2005 return index; 2104 2006 } 2105 2007 2106 - //-- Sub function 2107 - u8 RFSynthesizer_SetMaxim2828_24Power( struct hw_data * pHwData, u8 index ) 2008 + /* -- Sub function */ 2009 + u8 RFSynthesizer_SetMaxim2828_24Power(struct hw_data *pHwData, u8 index) 2108 2010 { 2109 - u32 PowerData; 2110 - if( index > 1 ) index = 1; 2111 - PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2828_power_data_24[index], 18); 2112 - Wb35Reg_Write( pHwData, 0x0864, PowerData ); 2011 + u32 PowerData; 2012 + if (index > 1) 2013 + index = 1; 2014 + PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2828_power_data_24[index], 18); 2015 + Wb35Reg_Write(pHwData, 0x0864, PowerData); 2113 2016 return index; 2114 2017 } 2115 - //-- 2116 - u8 RFSynthesizer_SetMaxim2828_50Power( struct hw_data * pHwData, u8 index ) 2018 + 2019 + u8 RFSynthesizer_SetMaxim2828_50Power(struct hw_data *pHwData, u8 index) 2117 2020 { 2118 - u32 PowerData; 2119 - if( index > 1 ) index = 1; 2120 - PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2828_power_data_50[index], 18); 2121 - Wb35Reg_Write( pHwData, 0x0864, PowerData ); 2021 + u32 PowerData; 2022 + if (index > 1) 2023 + index = 1; 2024 + PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2828_power_data_50[index], 18); 2025 + Wb35Reg_Write(pHwData, 0x0864, PowerData); 2122 2026 return index; 2123 2027 } 2124 - //-- 2125 - u8 RFSynthesizer_SetMaxim2827_24Power( struct hw_data * pHwData, u8 index ) 2028 + 2029 + u8 RFSynthesizer_SetMaxim2827_24Power(struct hw_data *pHwData, u8 index) 2126 2030 { 2127 - u32 PowerData; 2128 - if( index > 1 ) index = 1; 2129 - PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2827_power_data_24[index], 18); 2130 - Wb35Reg_Write( pHwData, 0x0864, PowerData ); 2031 + u32 PowerData; 2032 + if (index > 1) 2033 + index = 1; 2034 + PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2827_power_data_24[index], 18); 2035 + Wb35Reg_Write(pHwData, 0x0864, PowerData); 2131 2036 return index; 2132 2037 } 2133 - //-- 2134 - u8 RFSynthesizer_SetMaxim2827_50Power( struct hw_data * pHwData, u8 index ) 2038 + 2039 + u8 RFSynthesizer_SetMaxim2827_50Power(struct hw_data *pHwData, u8 index) 2135 2040 { 2136 - u32 PowerData; 2137 - if( index > 1 ) index = 1; 2138 - PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2827_power_data_50[index], 18); 2139 - Wb35Reg_Write( pHwData, 0x0864, PowerData ); 2041 + u32 PowerData; 2042 + if (index > 1) 2043 + index = 1; 2044 + PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2827_power_data_50[index], 18); 2045 + Wb35Reg_Write(pHwData, 0x0864, PowerData); 2140 2046 return index; 2141 2047 } 2142 - //-- 2143 - u8 RFSynthesizer_SetMaxim2825Power( struct hw_data * pHwData, u8 index ) 2048 + 2049 + u8 RFSynthesizer_SetMaxim2825Power(struct hw_data *pHwData, u8 index) 2144 2050 { 2145 - u32 PowerData; 2146 - if( index > 1 ) index = 1; 2147 - PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2825_power_data_24[index], 18); 2148 - Wb35Reg_Write( pHwData, 0x0864, PowerData ); 2051 + u32 PowerData; 2052 + if (index > 1) 2053 + index = 1; 2054 + PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse(max2825_power_data_24[index], 18); 2055 + Wb35Reg_Write(pHwData, 0x0864, PowerData); 2149 2056 return index; 2150 2057 } 2151 - //-- 2152 - u8 RFSynthesizer_SetAiroha2230Power( struct hw_data * pHwData, u8 index ) 2058 + 2059 + u8 RFSynthesizer_SetAiroha2230Power(struct hw_data *pHwData, u8 index) 2153 2060 { 2154 - u32 PowerData; 2155 - u8 i,count; 2061 + u32 PowerData; 2062 + u8 i, count; 2156 2063 2157 2064 count = sizeof(al2230_txvga_data) / sizeof(al2230_txvga_data[0]); 2158 - for (i=0; i<count; i++) 2159 - { 2065 + for (i = 0; i < count; i++) { 2160 2066 if (al2230_txvga_data[i][1] >= index) 2161 2067 break; 2162 2068 } 2163 2069 if (i == count) 2164 2070 i--; 2165 2071 2166 - PowerData = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( al2230_txvga_data[i][0], 20); 2167 - Wb35Reg_Write( pHwData, 0x0864, PowerData ); 2072 + PowerData = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse(al2230_txvga_data[i][0], 20); 2073 + Wb35Reg_Write(pHwData, 0x0864, PowerData); 2168 2074 return i; 2169 2075 } 2170 - //-- 2171 - u8 RFSynthesizer_SetAiroha7230Power( struct hw_data * pHwData, u8 index ) 2172 - { 2173 - u32 PowerData; 2174 - u8 i,count; 2175 2076 2176 - //PowerData = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( airoha_power_data_24[index], 20); 2077 + u8 RFSynthesizer_SetAiroha7230Power(struct hw_data *pHwData, u8 index) 2078 + { 2079 + u32 PowerData; 2080 + u8 i, count; 2081 + 2177 2082 count = sizeof(al7230_txvga_data) / sizeof(al7230_txvga_data[0]); 2178 - for (i=0; i<count; i++) 2179 - { 2083 + for (i = 0; i < count; i++) { 2180 2084 if (al7230_txvga_data[i][1] >= index) 2181 2085 break; 2182 2086 } 2183 2087 if (i == count) 2184 2088 i--; 2185 - PowerData = (1 << 31) | (0 << 30) | (24 << 24) | (al7230_txvga_data[i][0]&0xffffff); 2186 - Wb35Reg_Write( pHwData, 0x0864, PowerData ); 2089 + PowerData = (1 << 31) | (0 << 30) | (24 << 24) | (al7230_txvga_data[i][0] & 0xffffff); 2090 + Wb35Reg_Write(pHwData, 0x0864, PowerData); 2187 2091 return i; 2188 2092 } 2189 2093 2190 - u8 RFSynthesizer_SetWinbond242Power( struct hw_data * pHwData, u8 index ) 2094 + u8 RFSynthesizer_SetWinbond242Power(struct hw_data *pHwData, u8 index) 2191 2095 { 2192 - u32 PowerData; 2193 - u8 i,count; 2096 + u32 PowerData; 2097 + u8 i, count; 2194 2098 2195 2099 count = sizeof(w89rf242_txvga_data) / sizeof(w89rf242_txvga_data[0]); 2196 - for (i=0; i<count; i++) 2197 - { 2100 + for (i = 0; i < count; i++) { 2198 2101 if (w89rf242_txvga_data[i][1] >= index) 2199 2102 break; 2200 2103 } 2201 2104 if (i == count) 2202 2105 i--; 2203 2106 2204 - // Set TxVga into RF 2205 - PowerData = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( w89rf242_txvga_data[i][0], 24); 2206 - Wb35Reg_Write( pHwData, 0x0864, PowerData ); 2107 + /* Set TxVga into RF */ 2108 + PowerData = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse(w89rf242_txvga_data[i][0], 24); 2109 + Wb35Reg_Write(pHwData, 0x0864, PowerData); 2207 2110 2208 - // Update BB48 BB4C BB58 for high precision txvga 2209 - Wb35Reg_Write( pHwData, 0x1048, w89rf242_txvga_data[i][2] ); 2210 - Wb35Reg_Write( pHwData, 0x104c, w89rf242_txvga_data[i][3] ); 2211 - Wb35Reg_Write( pHwData, 0x1058, w89rf242_txvga_data[i][4] ); 2111 + /* Update BB48 BB4C BB58 for high precision txvga */ 2112 + Wb35Reg_Write(pHwData, 0x1048, w89rf242_txvga_data[i][2]); 2113 + Wb35Reg_Write(pHwData, 0x104c, w89rf242_txvga_data[i][3]); 2114 + Wb35Reg_Write(pHwData, 0x1058, w89rf242_txvga_data[i][4]); 2212 2115 2213 - // Rf vga 0 ~ 3 for temperature compensate. It will affect the scan Bss. 2214 - // The i value equals to 8 or 7 usually. So It's not necessary to setup this RF register. 2215 - // if( i <= 3 ) 2216 - // PowerData = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( 0x000024, 24 ); 2217 - // else 2218 - // PowerData = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( 0x001824, 24 ); 2219 - // Wb35Reg_Write( pHwData, 0x0864, PowerData ); 2220 2116 return i; 2221 2117 } 2222 2118 2223 - //=========================================================================================================== 2224 - // Dxx_initial -- 2225 - // Mxx_initial -- 2226 - // 2227 - // Routine Description: 2228 - // Initial the hardware setting and module variable 2229 - // 2230 - //=========================================================================================================== 2231 - void Dxx_initial( struct hw_data * pHwData ) 2119 + /* 2120 + * =========================================================================== 2121 + * Dxx_initial -- 2122 + * Mxx_initial -- 2123 + * 2124 + * Routine Description: 2125 + * Initial the hardware setting and module variable 2126 + * =========================================================================== 2127 + */ 2128 + void Dxx_initial(struct hw_data *pHwData) 2232 2129 { 2233 2130 struct wb35_reg *reg = &pHwData->reg; 2234 2131 2235 - // Old IC:Single mode only. 2236 - // New IC: operation decide by Software set bit[4]. 1:multiple 0: single 2237 - reg->D00_DmaControl = 0xc0000004; //Txon, Rxon, multiple Rx for new 4k DMA 2238 - //Txon, Rxon, single Rx for old 8k ASIC 2239 - if( !HAL_USB_MODE_BURST( pHwData ) ) 2240 - reg->D00_DmaControl = 0xc0000000;//Txon, Rxon, single Rx for new 4k DMA 2132 + /* 2133 + * Old IC: Single mode only. 2134 + * New IC: operation decide by Software set bit[4]. 1:multiple 0: single 2135 + */ 2136 + reg->D00_DmaControl = 0xc0000004; /* Txon, Rxon, multiple Rx for new 4k DMA */ 2137 + /* Txon, Rxon, single Rx for old 8k ASIC */ 2138 + if (!HAL_USB_MODE_BURST(pHwData)) 2139 + reg->D00_DmaControl = 0xc0000000; /* Txon, Rxon, single Rx for new 4k DMA */ 2241 2140 2242 - Wb35Reg_WriteSync( pHwData, 0x0400, reg->D00_DmaControl ); 2141 + Wb35Reg_WriteSync(pHwData, 0x0400, reg->D00_DmaControl); 2243 2142 } 2244 2143 2245 - void Mxx_initial( struct hw_data * pHwData ) 2144 + void Mxx_initial(struct hw_data *pHwData) 2246 2145 { 2247 2146 struct wb35_reg *reg = &pHwData->reg; 2248 - u32 tmp; 2249 - u32 pltmp[11]; 2147 + u32 tmp; 2148 + u32 pltmp[11]; 2250 2149 u16 i; 2251 2150 2252 2151 2253 - //====================================================== 2254 - // Initial Mxx register 2255 - //====================================================== 2152 + /* 2153 + * ====================================================== 2154 + * Initial Mxx register 2155 + * ====================================================== 2156 + */ 2256 2157 2257 - // M00 bit set 2258 - #ifdef _IBSS_BEACON_SEQ_STICK_ 2259 - reg->M00_MacControl = 0; // Solve beacon sequence number stop by software 2260 - #else 2261 - reg->M00_MacControl = 0x80000000; // Solve beacon sequence number stop by hardware 2262 - #endif 2158 + /* M00 bit set */ 2159 + #ifdef _IBSS_BEACON_SEQ_STICK_ 2160 + reg->M00_MacControl = 0; /* Solve beacon sequence number stop by software */ 2161 + #else 2162 + reg->M00_MacControl = 0x80000000; /* Solve beacon sequence number stop by hardware */ 2163 + #endif 2263 2164 2264 - // M24 disable enter power save, BB RxOn and enable NAV attack 2165 + /* M24 disable enter power save, BB RxOn and enable NAV attack */ 2265 2166 reg->M24_MacControl = 0x08040042; 2266 2167 pltmp[0] = reg->M24_MacControl; 2267 2168 2268 - pltmp[1] = 0; // Skip M28, because no initialize value is required. 2169 + pltmp[1] = 0; /* Skip M28, because no initialize value is required. */ 2269 2170 2270 - // M2C CWmin and CWmax setting 2171 + /* M2C CWmin and CWmax setting */ 2271 2172 pHwData->cwmin = DEFAULT_CWMIN; 2272 2173 pHwData->cwmax = DEFAULT_CWMAX; 2273 2174 reg->M2C_MacControl = DEFAULT_CWMIN << 10; 2274 2175 reg->M2C_MacControl |= DEFAULT_CWMAX; 2275 2176 pltmp[2] = reg->M2C_MacControl; 2276 2177 2277 - // M30 BSSID 2178 + /* M30 BSSID */ 2278 2179 pltmp[3] = *(u32 *)pHwData->bssid; 2279 2180 2280 - // M34 2181 + /* M34 */ 2281 2182 pHwData->AID = DEFAULT_AID; 2282 - tmp = *(u16 *)(pHwData->bssid+4); 2183 + tmp = *(u16 *) (pHwData->bssid + 4); 2283 2184 tmp |= DEFAULT_AID << 16; 2284 2185 pltmp[4] = tmp; 2285 2186 2286 - // M38 2287 - reg->M38_MacControl = (DEFAULT_RATE_RETRY_LIMIT<<8) | (DEFAULT_LONG_RETRY_LIMIT << 4) | DEFAULT_SHORT_RETRY_LIMIT; 2187 + /* M38 */ 2188 + reg->M38_MacControl = (DEFAULT_RATE_RETRY_LIMIT << 8) | (DEFAULT_LONG_RETRY_LIMIT << 4) | DEFAULT_SHORT_RETRY_LIMIT; 2288 2189 pltmp[5] = reg->M38_MacControl; 2289 2190 2290 - // M3C 2191 + /* M3C */ 2291 2192 tmp = (DEFAULT_PIFST << 26) | (DEFAULT_EIFST << 16) | (DEFAULT_DIFST << 8) | (DEFAULT_SIFST << 4) | DEFAULT_OSIFST ; 2292 2193 reg->M3C_MacControl = tmp; 2293 2194 pltmp[6] = tmp; 2294 2195 2295 - // M40 2196 + /* M40 */ 2296 2197 pHwData->slot_time_select = DEFAULT_SLOT_TIME; 2297 2198 tmp = (DEFAULT_ATIMWD << 16) | DEFAULT_SLOT_TIME; 2298 2199 reg->M40_MacControl = tmp; 2299 2200 pltmp[7] = tmp; 2300 2201 2301 - // M44 2302 - tmp = DEFAULT_MAX_TX_MSDU_LIFE_TIME << 10; // *1024 2202 + /* M44 */ 2203 + tmp = DEFAULT_MAX_TX_MSDU_LIFE_TIME << 10; /* *1024 */ 2303 2204 reg->M44_MacControl = tmp; 2304 2205 pltmp[8] = tmp; 2305 2206 2306 - // M48 2207 + /* M48 */ 2307 2208 pHwData->BeaconPeriod = DEFAULT_BEACON_INTERVAL; 2308 2209 pHwData->ProbeDelay = DEFAULT_PROBE_DELAY_TIME; 2309 2210 tmp = (DEFAULT_BEACON_INTERVAL << 16) | DEFAULT_PROBE_DELAY_TIME; 2310 2211 reg->M48_MacControl = tmp; 2311 2212 pltmp[9] = tmp; 2312 2213 2313 - //M4C 2214 + /* M4C */ 2314 2215 reg->M4C_MacStatus = (DEFAULT_PROTOCOL_VERSION << 30) | (DEFAULT_MAC_POWER_STATE << 28) | (DEFAULT_DTIM_ALERT_TIME << 24); 2315 2216 pltmp[10] = reg->M4C_MacStatus; 2316 2217 2317 - // Burst write 2318 - //Wb35Reg_BurstWrite( pHwData, 0x0824, pltmp, 11, AUTO_INCREMENT ); 2319 - for( i=0; i<11; i++ ) 2320 - Wb35Reg_WriteSync( pHwData, 0x0824 + i*4, pltmp[i] ); 2218 + for (i = 0; i < 11; i++) 2219 + Wb35Reg_WriteSync(pHwData, 0x0824 + i * 4, pltmp[i]); 2321 2220 2322 - // M60 2323 - Wb35Reg_WriteSync( pHwData, 0x0860, 0x12481248 ); 2221 + /* M60 */ 2222 + Wb35Reg_WriteSync(pHwData, 0x0860, 0x12481248); 2324 2223 reg->M60_MacControl = 0x12481248; 2325 2224 2326 - // M68 2327 - Wb35Reg_WriteSync( pHwData, 0x0868, 0x00050900 ); // 20051018 0x000F0F00 ); // 940930 0x00131300 2225 + /* M68 */ 2226 + Wb35Reg_WriteSync(pHwData, 0x0868, 0x00050900); 2328 2227 reg->M68_MacControl = 0x00050900; 2329 2228 2330 - // M98 2331 - Wb35Reg_WriteSync( pHwData, 0x0898, 0xffff8888 ); 2229 + /* M98 */ 2230 + Wb35Reg_WriteSync(pHwData, 0x0898, 0xffff8888); 2332 2231 reg->M98_MacControl = 0xffff8888; 2333 2232 } 2334 2233 2335 2234 2336 - void Uxx_power_off_procedure( struct hw_data * pHwData ) 2235 + void Uxx_power_off_procedure(struct hw_data *pHwData) 2337 2236 { 2338 - // SW, PMU reset and turn off clock 2339 - Wb35Reg_WriteSync( pHwData, 0x03b0, 3 ); 2340 - Wb35Reg_WriteSync( pHwData, 0x03f0, 0xf9 ); 2237 + /* SW, PMU reset and turn off clock */ 2238 + Wb35Reg_WriteSync(pHwData, 0x03b0, 3); 2239 + Wb35Reg_WriteSync(pHwData, 0x03f0, 0xf9); 2341 2240 } 2342 2241 2343 - //Decide the TxVga of every channel 2344 - void GetTxVgaFromEEPROM( struct hw_data * pHwData ) 2242 + /*Decide the TxVga of every channel */ 2243 + void GetTxVgaFromEEPROM(struct hw_data *pHwData) 2345 2244 { 2346 - u32 i, j, ltmp; 2347 - u16 Value[MAX_TXVGA_EEPROM]; 2348 - u8 *pctmp; 2349 - u8 ctmp=0; 2245 + u32 i, j, ltmp; 2246 + u16 Value[MAX_TXVGA_EEPROM]; 2247 + u8 *pctmp; 2248 + u8 ctmp = 0; 2350 2249 2351 - // Get the entire TxVga setting in EEPROM 2352 - for( i=0; i<MAX_TXVGA_EEPROM; i++ ) 2353 - { 2354 - Wb35Reg_WriteSync( pHwData, 0x03b4, 0x08100000 + 0x00010000*i ); 2355 - Wb35Reg_ReadSync( pHwData, 0x03b4, &ltmp ); 2356 - Value[i] = (u16)( ltmp & 0xffff ); // Get 16 bit available 2357 - Value[i] = cpu_to_le16( Value[i] ); // [7:0]2412 [7:0]2417 .... 2250 + /* Get the entire TxVga setting in EEPROM */ 2251 + for (i = 0; i < MAX_TXVGA_EEPROM; i++) { 2252 + Wb35Reg_WriteSync(pHwData, 0x03b4, 0x08100000 + 0x00010000 * i); 2253 + Wb35Reg_ReadSync(pHwData, 0x03b4, &ltmp); 2254 + Value[i] = (u16) (ltmp & 0xffff); /* Get 16 bit available */ 2255 + Value[i] = cpu_to_le16(Value[i]); /* [7:0]2412 [7:0]2417 .... */ 2358 2256 } 2359 2257 2360 - // Adjust the filed which fills with reserved value. 2361 - pctmp = (u8 *)Value; 2362 - for( i=0; i<(MAX_TXVGA_EEPROM*2); i++ ) 2363 - { 2364 - if( pctmp[i] != 0xff ) 2258 + /* Adjust the filed which fills with reserved value. */ 2259 + pctmp = (u8 *) Value; 2260 + for (i = 0; i < (MAX_TXVGA_EEPROM * 2); i++) { 2261 + if (pctmp[i] != 0xff) 2365 2262 ctmp = pctmp[i]; 2366 2263 else 2367 2264 pctmp[i] = ctmp; 2368 2265 } 2369 2266 2370 - // Adjust WB_242 to WB_242_1 TxVga scale 2371 - if( pHwData->phy_type == RF_WB_242 ) 2372 - { 2373 - for( i=0; i<4; i++ ) // Only 2412 2437 2462 2484 case must be modified 2374 - { 2375 - for( j=0; j<(sizeof(w89rf242_txvga_old_mapping)/sizeof(w89rf242_txvga_old_mapping[0])); j++ ) 2376 - { 2377 - if( pctmp[i] < (u8)w89rf242_txvga_old_mapping[j][1] ) 2378 - { 2379 - pctmp[i] = (u8)w89rf242_txvga_old_mapping[j][0]; 2267 + /* Adjust WB_242 to WB_242_1 TxVga scale */ 2268 + if (pHwData->phy_type == RF_WB_242) { 2269 + for (i = 0; i < 4; i++) { /* Only 2412 2437 2462 2484 case must be modified */ 2270 + for (j = 0; j < (sizeof(w89rf242_txvga_old_mapping) / sizeof(w89rf242_txvga_old_mapping[0])); j++) { 2271 + if (pctmp[i] < (u8) w89rf242_txvga_old_mapping[j][1]) { 2272 + pctmp[i] = (u8) w89rf242_txvga_old_mapping[j][0]; 2380 2273 break; 2381 2274 } 2382 2275 } 2383 2276 2384 - if( j == (sizeof(w89rf242_txvga_old_mapping)/sizeof(w89rf242_txvga_old_mapping[0])) ) 2277 + if (j == (sizeof(w89rf242_txvga_old_mapping) / sizeof(w89rf242_txvga_old_mapping[0]))) 2385 2278 pctmp[i] = (u8)w89rf242_txvga_old_mapping[j-1][0]; 2386 2279 } 2387 2280 } 2388 2281 2389 - // 20060621 Add 2390 - memcpy( pHwData->TxVgaSettingInEEPROM, pctmp, MAX_TXVGA_EEPROM*2 ); //MAX_TXVGA_EEPROM is u16 count 2391 - EEPROMTxVgaAdjust( pHwData ); 2282 + memcpy(pHwData->TxVgaSettingInEEPROM, pctmp, MAX_TXVGA_EEPROM * 2); /* MAX_TXVGA_EEPROM is u16 count */ 2283 + EEPROMTxVgaAdjust(pHwData); 2392 2284 } 2393 2285 2394 - // This function will affect the TxVga parameter in HAL. If hal_set_current_channel 2395 - // or RFSynthesizer_SetPowerIndex be called, new TxVga will take effect. 2396 - // TxVgaSettingInEEPROM of sHwData is an u8 array point to EEPROM contain for IS89C35 2397 - // This function will use default TxVgaSettingInEEPROM data to calculate new TxVga. 2398 - void EEPROMTxVgaAdjust( struct hw_data * pHwData ) // 20060619.5 Add 2286 + /* 2287 + * This function will affect the TxVga parameter in HAL. If hal_set_current_channel 2288 + * or RFSynthesizer_SetPowerIndex be called, new TxVga will take effect. 2289 + * TxVgaSettingInEEPROM of sHwData is an u8 array point to EEPROM contain for IS89C35 2290 + * This function will use default TxVgaSettingInEEPROM data to calculate new TxVga. 2291 + */ 2292 + void EEPROMTxVgaAdjust(struct hw_data *pHwData) 2399 2293 { 2400 - u8 * pTxVga = pHwData->TxVgaSettingInEEPROM; 2401 - s16 i, stmp; 2294 + u8 *pTxVga = pHwData->TxVgaSettingInEEPROM; 2295 + s16 i, stmp; 2402 2296 2403 - //-- 2.4G -- 20060704.2 Request from Tiger 2404 - //channel 1 ~ 5 2297 + /* -- 2.4G -- */ 2298 + /* channel 1 ~ 5 */ 2405 2299 stmp = pTxVga[1] - pTxVga[0]; 2406 - for( i=0; i<5; i++ ) 2407 - pHwData->TxVgaFor24[i] = pTxVga[0] + stmp*i/4; 2408 - //channel 6 ~ 10 2300 + for (i = 0; i < 5; i++) 2301 + pHwData->TxVgaFor24[i] = pTxVga[0] + stmp * i / 4; 2302 + /* channel 6 ~ 10 */ 2409 2303 stmp = pTxVga[2] - pTxVga[1]; 2410 - for( i=5; i<10; i++ ) 2411 - pHwData->TxVgaFor24[i] = pTxVga[1] + stmp*(i-5)/4; 2412 - //channel 11 ~ 13 2304 + for (i = 5; i < 10; i++) 2305 + pHwData->TxVgaFor24[i] = pTxVga[1] + stmp * (i - 5) / 4; 2306 + /* channel 11 ~ 13 */ 2413 2307 stmp = pTxVga[3] - pTxVga[2]; 2414 - for( i=10; i<13; i++ ) 2415 - pHwData->TxVgaFor24[i] = pTxVga[2] + stmp*(i-10)/2; 2416 - //channel 14 2308 + for (i = 10; i < 13; i++) 2309 + pHwData->TxVgaFor24[i] = pTxVga[2] + stmp * (i - 10) / 2; 2310 + /* channel 14 */ 2417 2311 pHwData->TxVgaFor24[13] = pTxVga[3]; 2418 2312 2419 - //-- 5G -- 2420 - if( pHwData->phy_type == RF_AIROHA_7230 ) 2421 - { 2422 - //channel 184 2313 + /* -- 5G -- */ 2314 + if (pHwData->phy_type == RF_AIROHA_7230) { 2315 + /* channel 184 */ 2423 2316 pHwData->TxVgaFor50[0].ChanNo = 184; 2424 2317 pHwData->TxVgaFor50[0].TxVgaValue = pTxVga[4]; 2425 - //channel 196 2318 + /* channel 196 */ 2426 2319 pHwData->TxVgaFor50[3].ChanNo = 196; 2427 2320 pHwData->TxVgaFor50[3].TxVgaValue = pTxVga[5]; 2428 - //interpolate 2321 + /* interpolate */ 2429 2322 pHwData->TxVgaFor50[1].ChanNo = 188; 2430 2323 pHwData->TxVgaFor50[2].ChanNo = 192; 2431 2324 stmp = pTxVga[5] - pTxVga[4]; 2432 - pHwData->TxVgaFor50[2].TxVgaValue = pTxVga[5] - stmp/3; 2433 - pHwData->TxVgaFor50[1].TxVgaValue = pTxVga[5] - stmp*2/3; 2325 + pHwData->TxVgaFor50[2].TxVgaValue = pTxVga[5] - stmp / 3; 2326 + pHwData->TxVgaFor50[1].TxVgaValue = pTxVga[5] - stmp * 2 / 3; 2434 2327 2435 - //channel 16 2328 + /* channel 16 */ 2436 2329 pHwData->TxVgaFor50[6].ChanNo = 16; 2437 2330 pHwData->TxVgaFor50[6].TxVgaValue = pTxVga[6]; 2438 2331 pHwData->TxVgaFor50[4].ChanNo = 8; ··· 2250 2523 pHwData->TxVgaFor50[5].ChanNo = 12; 2251 2524 pHwData->TxVgaFor50[5].TxVgaValue = pTxVga[6]; 2252 2525 2253 - //channel 36 2526 + /* channel 36 */ 2254 2527 pHwData->TxVgaFor50[8].ChanNo = 36; 2255 2528 pHwData->TxVgaFor50[8].TxVgaValue = pTxVga[7]; 2256 2529 pHwData->TxVgaFor50[7].ChanNo = 34; ··· 2258 2531 pHwData->TxVgaFor50[9].ChanNo = 38; 2259 2532 pHwData->TxVgaFor50[9].TxVgaValue = pTxVga[7]; 2260 2533 2261 - //channel 40 2534 + /* channel 40 */ 2262 2535 pHwData->TxVgaFor50[10].ChanNo = 40; 2263 2536 pHwData->TxVgaFor50[10].TxVgaValue = pTxVga[8]; 2264 - //channel 48 2537 + /* channel 48 */ 2265 2538 pHwData->TxVgaFor50[14].ChanNo = 48; 2266 2539 pHwData->TxVgaFor50[14].TxVgaValue = pTxVga[9]; 2267 - //interpolate 2540 + /* interpolate */ 2268 2541 pHwData->TxVgaFor50[11].ChanNo = 42; 2269 2542 pHwData->TxVgaFor50[12].ChanNo = 44; 2270 2543 pHwData->TxVgaFor50[13].ChanNo = 46; 2271 2544 stmp = pTxVga[9] - pTxVga[8]; 2272 - pHwData->TxVgaFor50[13].TxVgaValue = pTxVga[9] - stmp/4; 2273 - pHwData->TxVgaFor50[12].TxVgaValue = pTxVga[9] - stmp*2/4; 2274 - pHwData->TxVgaFor50[11].TxVgaValue = pTxVga[9] - stmp*3/4; 2545 + pHwData->TxVgaFor50[13].TxVgaValue = pTxVga[9] - stmp / 4; 2546 + pHwData->TxVgaFor50[12].TxVgaValue = pTxVga[9] - stmp * 2 / 4; 2547 + pHwData->TxVgaFor50[11].TxVgaValue = pTxVga[9] - stmp * 3 / 4; 2275 2548 2276 - //channel 52 2549 + /* channel 52 */ 2277 2550 pHwData->TxVgaFor50[15].ChanNo = 52; 2278 2551 pHwData->TxVgaFor50[15].TxVgaValue = pTxVga[10]; 2279 - //channel 64 2552 + /* channel 64 */ 2280 2553 pHwData->TxVgaFor50[18].ChanNo = 64; 2281 2554 pHwData->TxVgaFor50[18].TxVgaValue = pTxVga[11]; 2282 - //interpolate 2555 + /* interpolate */ 2283 2556 pHwData->TxVgaFor50[16].ChanNo = 56; 2284 2557 pHwData->TxVgaFor50[17].ChanNo = 60; 2285 2558 stmp = pTxVga[11] - pTxVga[10]; 2286 - pHwData->TxVgaFor50[17].TxVgaValue = pTxVga[11] - stmp/3; 2287 - pHwData->TxVgaFor50[16].TxVgaValue = pTxVga[11] - stmp*2/3; 2559 + pHwData->TxVgaFor50[17].TxVgaValue = pTxVga[11] - stmp / 3; 2560 + pHwData->TxVgaFor50[16].TxVgaValue = pTxVga[11] - stmp * 2 / 3; 2288 2561 2289 - //channel 100 2562 + /* channel 100 */ 2290 2563 pHwData->TxVgaFor50[19].ChanNo = 100; 2291 2564 pHwData->TxVgaFor50[19].TxVgaValue = pTxVga[12]; 2292 - //channel 112 2565 + /* channel 112 */ 2293 2566 pHwData->TxVgaFor50[22].ChanNo = 112; 2294 2567 pHwData->TxVgaFor50[22].TxVgaValue = pTxVga[13]; 2295 - //interpolate 2568 + /* interpolate */ 2296 2569 pHwData->TxVgaFor50[20].ChanNo = 104; 2297 2570 pHwData->TxVgaFor50[21].ChanNo = 108; 2298 2571 stmp = pTxVga[13] - pTxVga[12]; 2299 - pHwData->TxVgaFor50[21].TxVgaValue = pTxVga[13] - stmp/3; 2300 - pHwData->TxVgaFor50[20].TxVgaValue = pTxVga[13] - stmp*2/3; 2572 + pHwData->TxVgaFor50[21].TxVgaValue = pTxVga[13] - stmp / 3; 2573 + pHwData->TxVgaFor50[20].TxVgaValue = pTxVga[13] - stmp * 2 / 3; 2301 2574 2302 - //channel 128 2575 + /* channel 128 */ 2303 2576 pHwData->TxVgaFor50[26].ChanNo = 128; 2304 2577 pHwData->TxVgaFor50[26].TxVgaValue = pTxVga[14]; 2305 - //interpolate 2578 + /* interpolate */ 2306 2579 pHwData->TxVgaFor50[23].ChanNo = 116; 2307 2580 pHwData->TxVgaFor50[24].ChanNo = 120; 2308 2581 pHwData->TxVgaFor50[25].ChanNo = 124; 2309 2582 stmp = pTxVga[14] - pTxVga[13]; 2310 - pHwData->TxVgaFor50[25].TxVgaValue = pTxVga[14] - stmp/4; 2311 - pHwData->TxVgaFor50[24].TxVgaValue = pTxVga[14] - stmp*2/4; 2312 - pHwData->TxVgaFor50[23].TxVgaValue = pTxVga[14] - stmp*3/4; 2583 + pHwData->TxVgaFor50[25].TxVgaValue = pTxVga[14] - stmp / 4; 2584 + pHwData->TxVgaFor50[24].TxVgaValue = pTxVga[14] - stmp * 2 / 4; 2585 + pHwData->TxVgaFor50[23].TxVgaValue = pTxVga[14] - stmp * 3 / 4; 2313 2586 2314 - //channel 140 2587 + /* channel 140 */ 2315 2588 pHwData->TxVgaFor50[29].ChanNo = 140; 2316 2589 pHwData->TxVgaFor50[29].TxVgaValue = pTxVga[15]; 2317 - //interpolate 2590 + /* interpolate */ 2318 2591 pHwData->TxVgaFor50[27].ChanNo = 132; 2319 2592 pHwData->TxVgaFor50[28].ChanNo = 136; 2320 2593 stmp = pTxVga[15] - pTxVga[14]; 2321 - pHwData->TxVgaFor50[28].TxVgaValue = pTxVga[15] - stmp/3; 2322 - pHwData->TxVgaFor50[27].TxVgaValue = pTxVga[15] - stmp*2/3; 2594 + pHwData->TxVgaFor50[28].TxVgaValue = pTxVga[15] - stmp / 3; 2595 + pHwData->TxVgaFor50[27].TxVgaValue = pTxVga[15] - stmp * 2 / 3; 2323 2596 2324 - //channel 149 2597 + /* channel 149 */ 2325 2598 pHwData->TxVgaFor50[30].ChanNo = 149; 2326 2599 pHwData->TxVgaFor50[30].TxVgaValue = pTxVga[16]; 2327 - //channel 165 2600 + /* channel 165 */ 2328 2601 pHwData->TxVgaFor50[34].ChanNo = 165; 2329 2602 pHwData->TxVgaFor50[34].TxVgaValue = pTxVga[17]; 2330 - //interpolate 2603 + /* interpolate */ 2331 2604 pHwData->TxVgaFor50[31].ChanNo = 153; 2332 2605 pHwData->TxVgaFor50[32].ChanNo = 157; 2333 2606 pHwData->TxVgaFor50[33].ChanNo = 161; 2334 2607 stmp = pTxVga[17] - pTxVga[16]; 2335 - pHwData->TxVgaFor50[33].TxVgaValue = pTxVga[17] - stmp/4; 2336 - pHwData->TxVgaFor50[32].TxVgaValue = pTxVga[17] - stmp*2/4; 2337 - pHwData->TxVgaFor50[31].TxVgaValue = pTxVga[17] - stmp*3/4; 2608 + pHwData->TxVgaFor50[33].TxVgaValue = pTxVga[17] - stmp / 4; 2609 + pHwData->TxVgaFor50[32].TxVgaValue = pTxVga[17] - stmp * 2 / 4; 2610 + pHwData->TxVgaFor50[31].TxVgaValue = pTxVga[17] - stmp * 3 / 4; 2338 2611 } 2339 2612 2340 2613 #ifdef _PE_STATE_DUMP_ 2341 - printk(" TxVgaFor24 : \n"); 2342 - DataDmp((u8 *)pHwData->TxVgaFor24, 14 ,0); 2343 - printk(" TxVgaFor50 : \n"); 2344 - DataDmp((u8 *)pHwData->TxVgaFor50, 70 ,0); 2614 + printk(" TxVgaFor24 :\n"); 2615 + DataDmp((u8 *)pHwData->TxVgaFor24, 14 , 0); 2616 + printk(" TxVgaFor50 :\n"); 2617 + DataDmp((u8 *)pHwData->TxVgaFor50, 70 , 0); 2345 2618 #endif 2346 2619 } 2347 2620 2348 - void BBProcessor_RateChanging( struct hw_data * pHwData, u8 rate ) // 20060613.1 2621 + void BBProcessor_RateChanging(struct hw_data *pHwData, u8 rate) 2349 2622 { 2350 2623 struct wb35_reg *reg = &pHwData->reg; 2351 - unsigned char Is11bRate; 2624 + unsigned char Is11bRate; 2352 2625 2353 2626 Is11bRate = (rate % 6) ? 1 : 0; 2354 - switch( pHwData->phy_type ) 2355 - { 2356 - case RF_AIROHA_2230: 2357 - case RF_AIROHA_2230S: // 20060420 Add this 2358 - if( Is11bRate ) 2359 - { 2360 - if( (reg->BB48 != BB48_DEFAULT_AL2230_11B) && 2361 - (reg->BB4C != BB4C_DEFAULT_AL2230_11B) ) 2362 - { 2363 - Wb35Reg_Write( pHwData, 0x1048, BB48_DEFAULT_AL2230_11B ); 2364 - Wb35Reg_Write( pHwData, 0x104c, BB4C_DEFAULT_AL2230_11B ); 2365 - } 2627 + switch (pHwData->phy_type) { 2628 + case RF_AIROHA_2230: 2629 + case RF_AIROHA_2230S: 2630 + if (Is11bRate) { 2631 + if ((reg->BB48 != BB48_DEFAULT_AL2230_11B) && 2632 + (reg->BB4C != BB4C_DEFAULT_AL2230_11B)) { 2633 + Wb35Reg_Write(pHwData, 0x1048, BB48_DEFAULT_AL2230_11B); 2634 + Wb35Reg_Write(pHwData, 0x104c, BB4C_DEFAULT_AL2230_11B); 2366 2635 } 2367 - else 2368 - { 2369 - if( (reg->BB48 != BB48_DEFAULT_AL2230_11G) && 2370 - (reg->BB4C != BB4C_DEFAULT_AL2230_11G) ) 2371 - { 2372 - Wb35Reg_Write( pHwData, 0x1048, BB48_DEFAULT_AL2230_11G ); 2373 - Wb35Reg_Write( pHwData, 0x104c, BB4C_DEFAULT_AL2230_11G ); 2374 - } 2636 + } else { 2637 + if ((reg->BB48 != BB48_DEFAULT_AL2230_11G) && 2638 + (reg->BB4C != BB4C_DEFAULT_AL2230_11G)) { 2639 + Wb35Reg_Write(pHwData, 0x1048, BB48_DEFAULT_AL2230_11G); 2640 + Wb35Reg_Write(pHwData, 0x104c, BB4C_DEFAULT_AL2230_11G); 2375 2641 } 2376 - break; 2377 - 2378 - case RF_WB_242: // 20060623 The fix only for old TxVGA setting 2379 - if( Is11bRate ) 2380 - { 2381 - if( (reg->BB48 != BB48_DEFAULT_WB242_11B) && 2382 - (reg->BB4C != BB4C_DEFAULT_WB242_11B) ) 2383 - { 2384 - reg->BB48 = BB48_DEFAULT_WB242_11B; 2385 - reg->BB4C = BB4C_DEFAULT_WB242_11B; 2386 - Wb35Reg_Write( pHwData, 0x1048, BB48_DEFAULT_WB242_11B ); 2387 - Wb35Reg_Write( pHwData, 0x104c, BB4C_DEFAULT_WB242_11B ); 2388 - } 2642 + } 2643 + break; 2644 + case RF_WB_242: 2645 + if (Is11bRate) { 2646 + if ((reg->BB48 != BB48_DEFAULT_WB242_11B) && 2647 + (reg->BB4C != BB4C_DEFAULT_WB242_11B)) { 2648 + reg->BB48 = BB48_DEFAULT_WB242_11B; 2649 + reg->BB4C = BB4C_DEFAULT_WB242_11B; 2650 + Wb35Reg_Write(pHwData, 0x1048, BB48_DEFAULT_WB242_11B); 2651 + Wb35Reg_Write(pHwData, 0x104c, BB4C_DEFAULT_WB242_11B); 2389 2652 } 2390 - else 2391 - { 2392 - if( (reg->BB48 != BB48_DEFAULT_WB242_11G) && 2393 - (reg->BB4C != BB4C_DEFAULT_WB242_11G) ) 2394 - { 2395 - reg->BB48 = BB48_DEFAULT_WB242_11G; 2396 - reg->BB4C = BB4C_DEFAULT_WB242_11G; 2397 - Wb35Reg_Write( pHwData, 0x1048, BB48_DEFAULT_WB242_11G ); 2398 - Wb35Reg_Write( pHwData, 0x104c, BB4C_DEFAULT_WB242_11G ); 2399 - } 2653 + } else { 2654 + if ((reg->BB48 != BB48_DEFAULT_WB242_11G) && 2655 + (reg->BB4C != BB4C_DEFAULT_WB242_11G)) { 2656 + reg->BB48 = BB48_DEFAULT_WB242_11G; 2657 + reg->BB4C = BB4C_DEFAULT_WB242_11G; 2658 + Wb35Reg_Write(pHwData, 0x1048, BB48_DEFAULT_WB242_11G); 2659 + Wb35Reg_Write(pHwData, 0x104c, BB4C_DEFAULT_WB242_11G); 2400 2660 } 2401 - break; 2661 + } 2662 + break; 2402 2663 } 2403 2664 } 2404 - 2405 - 2406 - 2407 - 2408 - 2409 - 2410 2665