0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include "b43.h"
0013 #include "tables_phy_ht.h"
0014 #include "phy_common.h"
0015 #include "phy_ht.h"
0016
0017 static const u16 b43_httab_0x12[] = {
0018 0x0000, 0x0008, 0x000a, 0x0010, 0x0012, 0x0019,
0019 0x001a, 0x001c, 0x0080, 0x0088, 0x008a, 0x0090,
0020 0x0092, 0x0099, 0x009a, 0x009c, 0x0100, 0x0108,
0021 0x010a, 0x0110, 0x0112, 0x0119, 0x011a, 0x011c,
0022 0x0180, 0x0188, 0x018a, 0x0190, 0x0192, 0x0199,
0023 0x019a, 0x019c, 0x0000, 0x0098, 0x00a0, 0x00a8,
0024 0x009a, 0x00a2, 0x00aa, 0x0120, 0x0128, 0x0128,
0025 0x0130, 0x0138, 0x0138, 0x0140, 0x0122, 0x012a,
0026 0x012a, 0x0132, 0x013a, 0x013a, 0x0142, 0x01a8,
0027 0x01b0, 0x01b8, 0x01b0, 0x01b8, 0x01c0, 0x01c8,
0028 0x01c0, 0x01c8, 0x01d0, 0x01d0, 0x01d8, 0x01aa,
0029 0x01b2, 0x01ba, 0x01b2, 0x01ba, 0x01c2, 0x01ca,
0030 0x01c2, 0x01ca, 0x01d2, 0x01d2, 0x01da, 0x0001,
0031 0x0002, 0x0004, 0x0009, 0x000c, 0x0011, 0x0014,
0032 0x0018, 0x0020, 0x0021, 0x0022, 0x0024, 0x0081,
0033 0x0082, 0x0084, 0x0089, 0x008c, 0x0091, 0x0094,
0034 0x0098, 0x00a0, 0x00a1, 0x00a2, 0x00a4, 0x0007,
0035 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
0036 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
0037 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
0038 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
0039 0x0007, 0x0007,
0040 };
0041
0042 static const u16 b43_httab_0x27[] = {
0043 0x0009, 0x000e, 0x0011, 0x0014, 0x0017, 0x001a,
0044 0x001d, 0x0020, 0x0009, 0x000e, 0x0011, 0x0014,
0045 0x0017, 0x001a, 0x001d, 0x0020, 0x0009, 0x000e,
0046 0x0011, 0x0014, 0x0017, 0x001a, 0x001d, 0x0020,
0047 0x0009, 0x000e, 0x0011, 0x0014, 0x0017, 0x001a,
0048 0x001d, 0x0020,
0049 };
0050
0051 static const u16 b43_httab_0x26[] = {
0052 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0053 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0054 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0055 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0056 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0057 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0058 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0059 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0060 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0061 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0062 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0063 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0064 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0065 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0066 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0067 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0068 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0069 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0070 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0071 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0072 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0073 0x0000, 0x0000,
0074 };
0075
0076 static const u32 b43_httab_0x25[] = {
0077 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0078 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0079 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0080 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0081 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0082 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0083 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0084 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0085 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0086 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0087 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0088 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0089 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0090 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0091 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0092 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0093 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0094 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0095 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0096 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0097 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0098 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0099 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0100 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0101 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0102 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0103 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0104 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0105 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0106 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0107 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0108 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0109 };
0110
0111 static const u32 b43_httab_0x2f[] = {
0112 0x00035700, 0x0002cc9a, 0x00026666, 0x0001581f,
0113 0x0001581f, 0x0001581f, 0x0001581f, 0x0001581f,
0114 0x0001581f, 0x0001581f, 0x0001581f, 0x00035700,
0115 0x0002cc9a, 0x00026666, 0x0001581f, 0x0001581f,
0116 0x0001581f, 0x0001581f, 0x0001581f, 0x0001581f,
0117 0x0001581f, 0x0001581f,
0118 };
0119
0120 static const u16 b43_httab_0x1a[] = {
0121 0x0055, 0x0054, 0x0054, 0x0053, 0x0052, 0x0052,
0122 0x0051, 0x0051, 0x0050, 0x004f, 0x004f, 0x004e,
0123 0x004e, 0x004d, 0x004c, 0x004c, 0x004b, 0x004a,
0124 0x0049, 0x0049, 0x0048, 0x0047, 0x0046, 0x0046,
0125 0x0045, 0x0044, 0x0043, 0x0042, 0x0041, 0x0040,
0126 0x0040, 0x003f, 0x003e, 0x003d, 0x003c, 0x003a,
0127 0x0039, 0x0038, 0x0037, 0x0036, 0x0035, 0x0033,
0128 0x0032, 0x0031, 0x002f, 0x002e, 0x002c, 0x002b,
0129 0x0029, 0x0027, 0x0025, 0x0023, 0x0021, 0x001f,
0130 0x001d, 0x001a, 0x0018, 0x0015, 0x0012, 0x000e,
0131 0x000b, 0x0007, 0x0002, 0x00fd,
0132 };
0133
0134 static const u16 b43_httab_0x1b[] = {
0135 0x0055, 0x0054, 0x0054, 0x0053, 0x0052, 0x0052,
0136 0x0051, 0x0051, 0x0050, 0x004f, 0x004f, 0x004e,
0137 0x004e, 0x004d, 0x004c, 0x004c, 0x004b, 0x004a,
0138 0x0049, 0x0049, 0x0048, 0x0047, 0x0046, 0x0046,
0139 0x0045, 0x0044, 0x0043, 0x0042, 0x0041, 0x0040,
0140 0x0040, 0x003f, 0x003e, 0x003d, 0x003c, 0x003a,
0141 0x0039, 0x0038, 0x0037, 0x0036, 0x0035, 0x0033,
0142 0x0032, 0x0031, 0x002f, 0x002e, 0x002c, 0x002b,
0143 0x0029, 0x0027, 0x0025, 0x0023, 0x0021, 0x001f,
0144 0x001d, 0x001a, 0x0018, 0x0015, 0x0012, 0x000e,
0145 0x000b, 0x0007, 0x0002, 0x00fd,
0146 };
0147
0148 static const u16 b43_httab_0x1c[] = {
0149 0x0055, 0x0054, 0x0054, 0x0053, 0x0052, 0x0052,
0150 0x0051, 0x0051, 0x0050, 0x004f, 0x004f, 0x004e,
0151 0x004e, 0x004d, 0x004c, 0x004c, 0x004b, 0x004a,
0152 0x0049, 0x0049, 0x0048, 0x0047, 0x0046, 0x0046,
0153 0x0045, 0x0044, 0x0043, 0x0042, 0x0041, 0x0040,
0154 0x0040, 0x003f, 0x003e, 0x003d, 0x003c, 0x003a,
0155 0x0039, 0x0038, 0x0037, 0x0036, 0x0035, 0x0033,
0156 0x0032, 0x0031, 0x002f, 0x002e, 0x002c, 0x002b,
0157 0x0029, 0x0027, 0x0025, 0x0023, 0x0021, 0x001f,
0158 0x001d, 0x001a, 0x0018, 0x0015, 0x0012, 0x000e,
0159 0x000b, 0x0007, 0x0002, 0x00fd,
0160 };
0161
0162 static const u32 b43_httab_0x1a_0xc0[] = {
0163 0x5bf70044, 0x5bf70042, 0x5bf70040, 0x5bf7003e,
0164 0x5bf7003c, 0x5bf7003b, 0x5bf70039, 0x5bf70037,
0165 0x5bf70036, 0x5bf70034, 0x5bf70033, 0x5bf70031,
0166 0x5bf70030, 0x5ba70044, 0x5ba70042, 0x5ba70040,
0167 0x5ba7003e, 0x5ba7003c, 0x5ba7003b, 0x5ba70039,
0168 0x5ba70037, 0x5ba70036, 0x5ba70034, 0x5ba70033,
0169 0x5b770044, 0x5b770042, 0x5b770040, 0x5b77003e,
0170 0x5b77003c, 0x5b77003b, 0x5b770039, 0x5b770037,
0171 0x5b770036, 0x5b770034, 0x5b770033, 0x5b770031,
0172 0x5b770030, 0x5b77002f, 0x5b77002d, 0x5b77002c,
0173 0x5b470044, 0x5b470042, 0x5b470040, 0x5b47003e,
0174 0x5b47003c, 0x5b47003b, 0x5b470039, 0x5b470037,
0175 0x5b470036, 0x5b470034, 0x5b470033, 0x5b470031,
0176 0x5b470030, 0x5b47002f, 0x5b47002d, 0x5b47002c,
0177 0x5b47002b, 0x5b47002a, 0x5b270044, 0x5b270042,
0178 0x5b270040, 0x5b27003e, 0x5b27003c, 0x5b27003b,
0179 0x5b270039, 0x5b270037, 0x5b270036, 0x5b270034,
0180 0x5b270033, 0x5b270031, 0x5b270030, 0x5b27002f,
0181 0x5b170044, 0x5b170042, 0x5b170040, 0x5b17003e,
0182 0x5b17003c, 0x5b17003b, 0x5b170039, 0x5b170037,
0183 0x5b170036, 0x5b170034, 0x5b170033, 0x5b170031,
0184 0x5b170030, 0x5b17002f, 0x5b17002d, 0x5b17002c,
0185 0x5b17002b, 0x5b17002a, 0x5b170028, 0x5b170027,
0186 0x5b170026, 0x5b170025, 0x5b170024, 0x5b170023,
0187 0x5b070044, 0x5b070042, 0x5b070040, 0x5b07003e,
0188 0x5b07003c, 0x5b07003b, 0x5b070039, 0x5b070037,
0189 0x5b070036, 0x5b070034, 0x5b070033, 0x5b070031,
0190 0x5b070030, 0x5b07002f, 0x5b07002d, 0x5b07002c,
0191 0x5b07002b, 0x5b07002a, 0x5b070028, 0x5b070027,
0192 0x5b070026, 0x5b070025, 0x5b070024, 0x5b070023,
0193 0x5b070022, 0x5b070021, 0x5b070020, 0x5b07001f,
0194 0x5b07001e, 0x5b07001d, 0x5b07001d, 0x5b07001c,
0195 };
0196
0197 static const u32 b43_httab_0x1a_0x140[] = {
0198 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0199 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0200 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0201 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0202 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0203 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0204 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0205 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0206 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0207 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0208 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0209 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0210 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0211 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0212 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0213 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0214 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0215 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0216 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0217 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0218 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0219 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0220 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0221 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0222 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0223 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0224 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0225 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0226 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0227 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0228 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0229 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0230 };
0231
0232 static const u32 b43_httab_0x1b_0x140[] = {
0233 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0234 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0235 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0236 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0237 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0238 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0239 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0240 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0241 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0242 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0243 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0244 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0245 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0246 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0247 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0248 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0249 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0250 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0251 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0252 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0253 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0254 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0255 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0256 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0257 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0258 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0259 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0260 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0261 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0262 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0263 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0264 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0265 };
0266
0267 static const u32 b43_httab_0x1c_0x140[] = {
0268 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0269 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0270 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0271 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0272 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0273 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0274 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0275 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0276 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0277 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0278 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0279 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0280 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0281 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0282 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0283 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0284 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0285 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0286 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0287 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0288 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0289 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0290 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0291 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0292 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0293 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0294 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0295 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0296 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0297 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0298 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0299 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0300 };
0301
0302 static const u16 b43_httab_0x1a_0x1c0[] = {
0303 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0304 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0305 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0306 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0307 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0308 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0309 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0310 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0311 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0312 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0313 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0314 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0315 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0316 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0317 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0318 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0319 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0320 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0321 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0322 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0323 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0324 0x0000, 0x0000,
0325 };
0326
0327 static const u16 b43_httab_0x1b_0x1c0[] = {
0328 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0329 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0330 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0331 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0332 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0333 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0334 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0335 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0336 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0337 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0338 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0339 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0340 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0341 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0342 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0343 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0344 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0345 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0346 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0347 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0348 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0349 0x0000, 0x0000,
0350 };
0351
0352 static const u16 b43_httab_0x1c_0x1c0[] = {
0353 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0354 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0355 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0356 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0357 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0358 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0359 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0360 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0361 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0362 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0363 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0364 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0365 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0366 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0367 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0368 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0369 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0370 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0371 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0372 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0373 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0374 0x0000, 0x0000,
0375 };
0376
0377 static const u16 b43_httab_0x1a_0x240[] = {
0378 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
0379 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
0380 0x0036, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
0381 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
0382 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0383 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0384 0x001e, 0x001e, 0x001e, 0x001e, 0x000e, 0x000e,
0385 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
0386 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
0387 0x000e, 0x000e, 0x000e, 0x000e, 0x01fc, 0x01fc,
0388 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
0389 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
0390 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee,
0391 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee,
0392 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee,
0393 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee,
0394 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0395 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0396 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0397 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0398 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0399 0x01d6, 0x01d6,
0400 };
0401
0402 static const u16 b43_httab_0x1b_0x240[] = {
0403 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
0404 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
0405 0x0036, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
0406 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
0407 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0408 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0409 0x001e, 0x001e, 0x001e, 0x001e, 0x000e, 0x000e,
0410 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
0411 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
0412 0x000e, 0x000e, 0x000e, 0x000e, 0x01fc, 0x01fc,
0413 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
0414 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
0415 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee,
0416 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee,
0417 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee,
0418 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee,
0419 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0420 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0421 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0422 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0423 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0424 0x01d6, 0x01d6,
0425 };
0426
0427 static const u16 b43_httab_0x1c_0x240[] = {
0428 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
0429 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
0430 0x0036, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
0431 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
0432 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0433 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0434 0x001e, 0x001e, 0x001e, 0x001e, 0x000e, 0x000e,
0435 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
0436 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
0437 0x000e, 0x000e, 0x000e, 0x000e, 0x01fc, 0x01fc,
0438 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
0439 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
0440 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee,
0441 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee,
0442 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee,
0443 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee,
0444 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0445 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0446 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0447 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0448 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6,
0449 0x01d6, 0x01d6,
0450 };
0451
0452 static const u32 b43_httab_0x1f[] = {
0453 0x00000000, 0x00000000, 0x00016023, 0x00006028,
0454 0x00034036, 0x0003402e, 0x0007203c, 0x0006e037,
0455 0x00070030, 0x0009401f, 0x0009a00f, 0x000b600d,
0456 0x000c8007, 0x000ce007, 0x00101fff, 0x00121ff9,
0457 0x0012e004, 0x0014dffc, 0x0016dff6, 0x0018dfe9,
0458 0x001b3fe5, 0x001c5fd0, 0x001ddfc2, 0x001f1fb6,
0459 0x00207fa4, 0x00219f8f, 0x0022ff7d, 0x00247f6c,
0460 0x0024df5b, 0x00267f4b, 0x0027df3b, 0x0029bf3b,
0461 0x002b5f2f, 0x002d3f2e, 0x002f5f2a, 0x002fff15,
0462 0x00315f0b, 0x0032defa, 0x0033beeb, 0x0034fed9,
0463 0x00353ec5, 0x00361eb0, 0x00363e9b, 0x0036be87,
0464 0x0036be70, 0x0038fe67, 0x0044beb2, 0x00513ef3,
0465 0x00595f11, 0x00669f3d, 0x0078dfdf, 0x00a143aa,
0466 0x01642fff, 0x0162afff, 0x01620fff, 0x0160cfff,
0467 0x015f0fff, 0x015dafff, 0x015bcfff, 0x015bcfff,
0468 0x015b4fff, 0x015acfff, 0x01590fff, 0x0156cfff,
0469 };
0470
0471 static const u32 b43_httab_0x21[] = {
0472 0x00000000, 0x00000000, 0x00016023, 0x00006028,
0473 0x00034036, 0x0003402e, 0x0007203c, 0x0006e037,
0474 0x00070030, 0x0009401f, 0x0009a00f, 0x000b600d,
0475 0x000c8007, 0x000ce007, 0x00101fff, 0x00121ff9,
0476 0x0012e004, 0x0014dffc, 0x0016dff6, 0x0018dfe9,
0477 0x001b3fe5, 0x001c5fd0, 0x001ddfc2, 0x001f1fb6,
0478 0x00207fa4, 0x00219f8f, 0x0022ff7d, 0x00247f6c,
0479 0x0024df5b, 0x00267f4b, 0x0027df3b, 0x0029bf3b,
0480 0x002b5f2f, 0x002d3f2e, 0x002f5f2a, 0x002fff15,
0481 0x00315f0b, 0x0032defa, 0x0033beeb, 0x0034fed9,
0482 0x00353ec5, 0x00361eb0, 0x00363e9b, 0x0036be87,
0483 0x0036be70, 0x0038fe67, 0x0044beb2, 0x00513ef3,
0484 0x00595f11, 0x00669f3d, 0x0078dfdf, 0x00a143aa,
0485 0x01642fff, 0x0162afff, 0x01620fff, 0x0160cfff,
0486 0x015f0fff, 0x015dafff, 0x015bcfff, 0x015bcfff,
0487 0x015b4fff, 0x015acfff, 0x01590fff, 0x0156cfff,
0488 };
0489
0490 static const u32 b43_httab_0x23[] = {
0491 0x00000000, 0x00000000, 0x00016023, 0x00006028,
0492 0x00034036, 0x0003402e, 0x0007203c, 0x0006e037,
0493 0x00070030, 0x0009401f, 0x0009a00f, 0x000b600d,
0494 0x000c8007, 0x000ce007, 0x00101fff, 0x00121ff9,
0495 0x0012e004, 0x0014dffc, 0x0016dff6, 0x0018dfe9,
0496 0x001b3fe5, 0x001c5fd0, 0x001ddfc2, 0x001f1fb6,
0497 0x00207fa4, 0x00219f8f, 0x0022ff7d, 0x00247f6c,
0498 0x0024df5b, 0x00267f4b, 0x0027df3b, 0x0029bf3b,
0499 0x002b5f2f, 0x002d3f2e, 0x002f5f2a, 0x002fff15,
0500 0x00315f0b, 0x0032defa, 0x0033beeb, 0x0034fed9,
0501 0x00353ec5, 0x00361eb0, 0x00363e9b, 0x0036be87,
0502 0x0036be70, 0x0038fe67, 0x0044beb2, 0x00513ef3,
0503 0x00595f11, 0x00669f3d, 0x0078dfdf, 0x00a143aa,
0504 0x01642fff, 0x0162afff, 0x01620fff, 0x0160cfff,
0505 0x015f0fff, 0x015dafff, 0x015bcfff, 0x015bcfff,
0506 0x015b4fff, 0x015acfff, 0x01590fff, 0x0156cfff,
0507 };
0508
0509 static const u32 b43_httab_0x20[] = {
0510 0x0b5e002d, 0x0ae2002f, 0x0a3b0032, 0x09a70035,
0511 0x09220038, 0x08ab003b, 0x081f003f, 0x07a20043,
0512 0x07340047, 0x06d2004b, 0x067a004f, 0x06170054,
0513 0x05bf0059, 0x0571005e, 0x051e0064, 0x04d3006a,
0514 0x04910070, 0x044c0077, 0x040f007e, 0x03d90085,
0515 0x03a1008d, 0x036f0095, 0x033d009e, 0x030b00a8,
0516 0x02e000b2, 0x02b900bc, 0x029200c7, 0x026d00d3,
0517 0x024900e0, 0x022900ed, 0x020a00fb, 0x01ec010a,
0518 0x01d20119, 0x01b7012a, 0x019e013c, 0x0188014e,
0519 0x01720162, 0x015d0177, 0x0149018e, 0x013701a5,
0520 0x012601be, 0x011501d8, 0x010601f4, 0x00f70212,
0521 0x00e90231, 0x00dc0253, 0x00d00276, 0x00c4029b,
0522 0x00b902c3, 0x00af02ed, 0x00a50319, 0x009c0348,
0523 0x0093037a, 0x008b03af, 0x008303e6, 0x007c0422,
0524 0x00750460, 0x006e04a3, 0x006804e9, 0x00620533,
0525 0x005d0582, 0x005805d6, 0x0053062e, 0x004e068c,
0526 };
0527
0528 static const u32 b43_httab_0x22[] = {
0529 0x0b5e002d, 0x0ae2002f, 0x0a3b0032, 0x09a70035,
0530 0x09220038, 0x08ab003b, 0x081f003f, 0x07a20043,
0531 0x07340047, 0x06d2004b, 0x067a004f, 0x06170054,
0532 0x05bf0059, 0x0571005e, 0x051e0064, 0x04d3006a,
0533 0x04910070, 0x044c0077, 0x040f007e, 0x03d90085,
0534 0x03a1008d, 0x036f0095, 0x033d009e, 0x030b00a8,
0535 0x02e000b2, 0x02b900bc, 0x029200c7, 0x026d00d3,
0536 0x024900e0, 0x022900ed, 0x020a00fb, 0x01ec010a,
0537 0x01d20119, 0x01b7012a, 0x019e013c, 0x0188014e,
0538 0x01720162, 0x015d0177, 0x0149018e, 0x013701a5,
0539 0x012601be, 0x011501d8, 0x010601f4, 0x00f70212,
0540 0x00e90231, 0x00dc0253, 0x00d00276, 0x00c4029b,
0541 0x00b902c3, 0x00af02ed, 0x00a50319, 0x009c0348,
0542 0x0093037a, 0x008b03af, 0x008303e6, 0x007c0422,
0543 0x00750460, 0x006e04a3, 0x006804e9, 0x00620533,
0544 0x005d0582, 0x005805d6, 0x0053062e, 0x004e068c,
0545 };
0546
0547 static const u32 b43_httab_0x24[] = {
0548 0x0b5e002d, 0x0ae2002f, 0x0a3b0032, 0x09a70035,
0549 0x09220038, 0x08ab003b, 0x081f003f, 0x07a20043,
0550 0x07340047, 0x06d2004b, 0x067a004f, 0x06170054,
0551 0x05bf0059, 0x0571005e, 0x051e0064, 0x04d3006a,
0552 0x04910070, 0x044c0077, 0x040f007e, 0x03d90085,
0553 0x03a1008d, 0x036f0095, 0x033d009e, 0x030b00a8,
0554 0x02e000b2, 0x02b900bc, 0x029200c7, 0x026d00d3,
0555 0x024900e0, 0x022900ed, 0x020a00fb, 0x01ec010a,
0556 0x01d20119, 0x01b7012a, 0x019e013c, 0x0188014e,
0557 0x01720162, 0x015d0177, 0x0149018e, 0x013701a5,
0558 0x012601be, 0x011501d8, 0x010601f4, 0x00f70212,
0559 0x00e90231, 0x00dc0253, 0x00d00276, 0x00c4029b,
0560 0x00b902c3, 0x00af02ed, 0x00a50319, 0x009c0348,
0561 0x0093037a, 0x008b03af, 0x008303e6, 0x007c0422,
0562 0x00750460, 0x006e04a3, 0x006804e9, 0x00620533,
0563 0x005d0582, 0x005805d6, 0x0053062e, 0x004e068c,
0564 };
0565
0566
0567 const u32 b43_httab_0x1a_0xc0_late[] = {
0568 0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
0569 0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
0570 0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
0571 0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
0572 0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
0573 0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
0574 0x10390038, 0x10390035, 0x1031003a, 0x10310036,
0575 0x10310033, 0x1029003a, 0x10290037, 0x10290034,
0576 0x10290031, 0x10210039, 0x10210036, 0x10210033,
0577 0x10210030, 0x1019003c, 0x10190039, 0x10190036,
0578 0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
0579 0x10190028, 0x1011003a, 0x10110036, 0x10110033,
0580 0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
0581 0x10110027, 0x10110024, 0x10110022, 0x10110020,
0582 0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
0583 0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
0584 0x10090029, 0x10090027, 0x10090025, 0x10090023,
0585 0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
0586 0x1009001a, 0x10090018, 0x10090017, 0x10090016,
0587 0x10090015, 0x10090013, 0x10090012, 0x10090011,
0588 0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
0589 0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
0590 0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
0591 0x10090008, 0x10090008, 0x10090007, 0x10090007,
0592 0x10090007, 0x10090006, 0x10090006, 0x10090005,
0593 0x10090005, 0x10090005, 0x10090005, 0x10090004,
0594 0x10090004, 0x10090004, 0x10090004, 0x10090003,
0595 0x10090003, 0x10090003, 0x10090003, 0x10090003,
0596 0x10090003, 0x10090002, 0x10090002, 0x10090002,
0597 0x10090002, 0x10090002, 0x10090002, 0x10090002,
0598 0x10090002, 0x10090002, 0x10090001, 0x10090001,
0599 0x10090001, 0x10090001, 0x10090001, 0x10090001,
0600 };
0601
0602
0603
0604
0605
0606 u32 b43_httab_read(struct b43_wldev *dev, u32 offset)
0607 {
0608 u32 type, value;
0609
0610 type = offset & B43_HTTAB_TYPEMASK;
0611 offset &= ~B43_HTTAB_TYPEMASK;
0612 B43_WARN_ON(offset > 0xFFFF);
0613
0614 switch (type) {
0615 case B43_HTTAB_8BIT:
0616 b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
0617 value = b43_phy_read(dev, B43_PHY_HT_TABLE_DATALO) & 0xFF;
0618 break;
0619 case B43_HTTAB_16BIT:
0620 b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
0621 value = b43_phy_read(dev, B43_PHY_HT_TABLE_DATALO);
0622 break;
0623 case B43_HTTAB_32BIT:
0624 b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
0625 value = b43_phy_read(dev, B43_PHY_HT_TABLE_DATAHI);
0626 value <<= 16;
0627 value |= b43_phy_read(dev, B43_PHY_HT_TABLE_DATALO);
0628 break;
0629 default:
0630 B43_WARN_ON(1);
0631 value = 0;
0632 }
0633
0634 return value;
0635 }
0636
0637 void b43_httab_read_bulk(struct b43_wldev *dev, u32 offset,
0638 unsigned int nr_elements, void *_data)
0639 {
0640 u32 type;
0641 u8 *data = _data;
0642 unsigned int i;
0643
0644 type = offset & B43_HTTAB_TYPEMASK;
0645 offset &= ~B43_HTTAB_TYPEMASK;
0646 B43_WARN_ON(offset > 0xFFFF);
0647
0648 b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
0649
0650 for (i = 0; i < nr_elements; i++) {
0651 switch (type) {
0652 case B43_HTTAB_8BIT:
0653 *data = b43_phy_read(dev, B43_PHY_HT_TABLE_DATALO) & 0xFF;
0654 data++;
0655 break;
0656 case B43_HTTAB_16BIT:
0657 *((u16 *)data) = b43_phy_read(dev, B43_PHY_HT_TABLE_DATALO);
0658 data += 2;
0659 break;
0660 case B43_HTTAB_32BIT:
0661 *((u32 *)data) = b43_phy_read(dev, B43_PHY_HT_TABLE_DATAHI);
0662 *((u32 *)data) <<= 16;
0663 *((u32 *)data) |= b43_phy_read(dev, B43_PHY_HT_TABLE_DATALO);
0664 data += 4;
0665 break;
0666 default:
0667 B43_WARN_ON(1);
0668 }
0669 }
0670 }
0671
0672 void b43_httab_write(struct b43_wldev *dev, u32 offset, u32 value)
0673 {
0674 u32 type;
0675
0676 type = offset & B43_HTTAB_TYPEMASK;
0677 offset &= 0xFFFF;
0678
0679 switch (type) {
0680 case B43_HTTAB_8BIT:
0681 B43_WARN_ON(value & ~0xFF);
0682 b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
0683 b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value);
0684 break;
0685 case B43_HTTAB_16BIT:
0686 B43_WARN_ON(value & ~0xFFFF);
0687 b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
0688 b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value);
0689 break;
0690 case B43_HTTAB_32BIT:
0691 b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
0692 b43_phy_write(dev, B43_PHY_HT_TABLE_DATAHI, value >> 16);
0693 b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value & 0xFFFF);
0694 break;
0695 default:
0696 B43_WARN_ON(1);
0697 }
0698
0699 return;
0700 }
0701
0702 void b43_httab_write_few(struct b43_wldev *dev, u32 offset, size_t num, ...)
0703 {
0704 va_list args;
0705 u32 type, value;
0706 unsigned int i;
0707
0708 type = offset & B43_HTTAB_TYPEMASK;
0709 offset &= 0xFFFF;
0710
0711 va_start(args, num);
0712 switch (type) {
0713 case B43_HTTAB_8BIT:
0714 b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
0715 for (i = 0; i < num; i++) {
0716 value = va_arg(args, int);
0717 B43_WARN_ON(value & ~0xFF);
0718 b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value);
0719 }
0720 break;
0721 case B43_HTTAB_16BIT:
0722 b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
0723 for (i = 0; i < num; i++) {
0724 value = va_arg(args, int);
0725 B43_WARN_ON(value & ~0xFFFF);
0726 b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value);
0727 }
0728 break;
0729 case B43_HTTAB_32BIT:
0730 b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
0731 for (i = 0; i < num; i++) {
0732 value = va_arg(args, int);
0733 b43_phy_write(dev, B43_PHY_HT_TABLE_DATAHI,
0734 value >> 16);
0735 b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO,
0736 value & 0xFFFF);
0737 }
0738 break;
0739 default:
0740 B43_WARN_ON(1);
0741 }
0742 va_end(args);
0743
0744 return;
0745 }
0746
0747 void b43_httab_write_bulk(struct b43_wldev *dev, u32 offset,
0748 unsigned int nr_elements, const void *_data)
0749 {
0750 u32 type, value;
0751 const u8 *data = _data;
0752 unsigned int i;
0753
0754 type = offset & B43_HTTAB_TYPEMASK;
0755 offset &= ~B43_HTTAB_TYPEMASK;
0756 B43_WARN_ON(offset > 0xFFFF);
0757
0758 b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
0759
0760 for (i = 0; i < nr_elements; i++) {
0761 switch (type) {
0762 case B43_HTTAB_8BIT:
0763 value = *data;
0764 data++;
0765 B43_WARN_ON(value & ~0xFF);
0766 b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value);
0767 break;
0768 case B43_HTTAB_16BIT:
0769 value = *((u16 *)data);
0770 data += 2;
0771 B43_WARN_ON(value & ~0xFFFF);
0772 b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value);
0773 break;
0774 case B43_HTTAB_32BIT:
0775 value = *((u32 *)data);
0776 data += 4;
0777 b43_phy_write(dev, B43_PHY_HT_TABLE_DATAHI, value >> 16);
0778 b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO,
0779 value & 0xFFFF);
0780 break;
0781 default:
0782 B43_WARN_ON(1);
0783 }
0784 }
0785 }
0786
0787
0788
0789
0790
0791 #define httab_upload(dev, offset, data) do { \
0792 b43_httab_write_bulk(dev, offset, ARRAY_SIZE(data), data); \
0793 } while (0)
0794 void b43_phy_ht_tables_init(struct b43_wldev *dev)
0795 {
0796 BUILD_BUG_ON(ARRAY_SIZE(b43_httab_0x1a_0xc0_late) !=
0797 B43_HTTAB_1A_C0_LATE_SIZE);
0798
0799 httab_upload(dev, B43_HTTAB16(0x12, 0), b43_httab_0x12);
0800 httab_upload(dev, B43_HTTAB16(0x27, 0), b43_httab_0x27);
0801 httab_upload(dev, B43_HTTAB16(0x26, 0), b43_httab_0x26);
0802 httab_upload(dev, B43_HTTAB32(0x25, 0), b43_httab_0x25);
0803 httab_upload(dev, B43_HTTAB32(0x2f, 0), b43_httab_0x2f);
0804 httab_upload(dev, B43_HTTAB16(0x1a, 0), b43_httab_0x1a);
0805 httab_upload(dev, B43_HTTAB16(0x1b, 0), b43_httab_0x1b);
0806 httab_upload(dev, B43_HTTAB16(0x1c, 0), b43_httab_0x1c);
0807 httab_upload(dev, B43_HTTAB32(0x1a, 0x0c0), b43_httab_0x1a_0xc0);
0808 httab_upload(dev, B43_HTTAB32(0x1a, 0x140), b43_httab_0x1a_0x140);
0809 httab_upload(dev, B43_HTTAB32(0x1b, 0x140), b43_httab_0x1b_0x140);
0810 httab_upload(dev, B43_HTTAB32(0x1c, 0x140), b43_httab_0x1c_0x140);
0811 httab_upload(dev, B43_HTTAB16(0x1a, 0x1c0), b43_httab_0x1a_0x1c0);
0812 httab_upload(dev, B43_HTTAB16(0x1b, 0x1c0), b43_httab_0x1b_0x1c0);
0813 httab_upload(dev, B43_HTTAB16(0x1c, 0x1c0), b43_httab_0x1c_0x1c0);
0814 httab_upload(dev, B43_HTTAB16(0x1a, 0x240), b43_httab_0x1a_0x240);
0815 httab_upload(dev, B43_HTTAB16(0x1b, 0x240), b43_httab_0x1b_0x240);
0816 httab_upload(dev, B43_HTTAB16(0x1c, 0x240), b43_httab_0x1c_0x240);
0817 httab_upload(dev, B43_HTTAB32(0x1f, 0), b43_httab_0x1f);
0818 httab_upload(dev, B43_HTTAB32(0x21, 0), b43_httab_0x21);
0819 httab_upload(dev, B43_HTTAB32(0x23, 0), b43_httab_0x23);
0820 httab_upload(dev, B43_HTTAB32(0x20, 0), b43_httab_0x20);
0821 httab_upload(dev, B43_HTTAB32(0x22, 0), b43_httab_0x22);
0822 httab_upload(dev, B43_HTTAB32(0x24, 0), b43_httab_0x24);
0823 }