// SPDX-License-Identifier: GPL-2.0-or-later
/*
Broadcom B43 wireless driver
IEEE 802.11n HT-PHY data tables
Copyright (c) 2011 Rafał Miłecki <zajec5@gmail.com>
*/
#include "b43.h"
#include "tables_phy_ht.h"
#include "phy_common.h"
#include "phy_ht.h"
static const u16 b43_httab_0x12[] = {
0 x0000, 0 x0008, 0 x000a, 0 x0010, 0 x0012, 0 x0019,
0 x001a, 0 x001c, 0 x0080, 0 x0088, 0 x008a, 0 x0090,
0 x0092, 0 x0099, 0 x009a, 0 x009c, 0 x0100, 0 x0108,
0 x010a, 0 x0110, 0 x0112, 0 x0119, 0 x011a, 0 x011c,
0 x0180, 0 x0188, 0 x018a, 0 x0190, 0 x0192, 0 x0199,
0 x019a, 0 x019c, 0 x0000, 0 x0098, 0 x00a0, 0 x00a8,
0 x009a, 0 x00a2, 0 x00aa, 0 x0120, 0 x0128, 0 x0128,
0 x0130, 0 x0138, 0 x0138, 0 x0140, 0 x0122, 0 x012a,
0 x012a, 0 x0132, 0 x013a, 0 x013a, 0 x0142, 0 x01a8,
0 x01b0, 0 x01b8, 0 x01b0, 0 x01b8, 0 x01c0, 0 x01c8,
0 x01c0, 0 x01c8, 0 x01d0, 0 x01d0, 0 x01d8, 0 x01aa,
0 x01b2, 0 x01ba, 0 x01b2, 0 x01ba, 0 x01c2, 0 x01ca,
0 x01c2, 0 x01ca, 0 x01d2, 0 x01d2, 0 x01da, 0 x0001,
0 x0002, 0 x0004, 0 x0009, 0 x000c, 0 x0011, 0 x0014,
0 x0018, 0 x0020, 0 x0021, 0 x0022, 0 x0024, 0 x0081,
0 x0082, 0 x0084, 0 x0089, 0 x008c, 0 x0091, 0 x0094,
0 x0098, 0 x00a0, 0 x00a1, 0 x00a2, 0 x00a4, 0 x0007,
0 x0007, 0 x0007, 0 x0007, 0 x0007, 0 x0007, 0 x0007,
0 x0007, 0 x0007, 0 x0007, 0 x0007, 0 x0007, 0 x0007,
0 x0007, 0 x0007, 0 x0007, 0 x0007, 0 x0007, 0 x0007,
0 x0007, 0 x0007, 0 x0007, 0 x0007, 0 x0007, 0 x0007,
0 x0007, 0 x0007,
};
static const u16 b43_httab_0x27[] = {
0 x0009, 0 x000e, 0 x0011, 0 x0014, 0 x0017, 0 x001a,
0 x001d, 0 x0020, 0 x0009, 0 x000e, 0 x0011, 0 x0014,
0 x0017, 0 x001a, 0 x001d, 0 x0020, 0 x0009, 0 x000e,
0 x0011, 0 x0014, 0 x0017, 0 x001a, 0 x001d, 0 x0020,
0 x0009, 0 x000e, 0 x0011, 0 x0014, 0 x0017, 0 x001a,
0 x001d, 0 x0020,
};
static const u16 b43_httab_0x26[] = {
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000,
};
static const u32 b43_httab_0x25[] = {
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
};
static const u32 b43_httab_0x2f[] = {
0 x00035700, 0 x0002cc9a, 0 x00026666, 0 x0001581f,
0 x0001581f, 0 x0001581f, 0 x0001581f, 0 x0001581f,
0 x0001581f, 0 x0001581f, 0 x0001581f, 0 x00035700,
0 x0002cc9a, 0 x00026666, 0 x0001581f, 0 x0001581f,
0 x0001581f, 0 x0001581f, 0 x0001581f, 0 x0001581f,
0 x0001581f, 0 x0001581f,
};
static const u16 b43_httab_0x1a[] = {
0 x0055, 0 x0054, 0 x0054, 0 x0053, 0 x0052, 0 x0052,
0 x0051, 0 x0051, 0 x0050, 0 x004f, 0 x004f, 0 x004e,
0 x004e, 0 x004d, 0 x004c, 0 x004c, 0 x004b, 0 x004a,
0 x0049, 0 x0049, 0 x0048, 0 x0047, 0 x0046, 0 x0046,
0 x0045, 0 x0044, 0 x0043, 0 x0042, 0 x0041, 0 x0040,
0 x0040, 0 x003f, 0 x003e, 0 x003d, 0 x003c, 0 x003a,
0 x0039, 0 x0038, 0 x0037, 0 x0036, 0 x0035, 0 x0033,
0 x0032, 0 x0031, 0 x002f, 0 x002e, 0 x002c, 0 x002b,
0 x0029, 0 x0027, 0 x0025, 0 x0023, 0 x0021, 0 x001f,
0 x001d, 0 x001a, 0 x0018, 0 x0015, 0 x0012, 0 x000e,
0 x000b, 0 x0007, 0 x0002, 0 x00fd,
};
static const u16 b43_httab_0x1b[] = {
0 x0055, 0 x0054, 0 x0054, 0 x0053, 0 x0052, 0 x0052,
0 x0051, 0 x0051, 0 x0050, 0 x004f, 0 x004f, 0 x004e,
0 x004e, 0 x004d, 0 x004c, 0 x004c, 0 x004b, 0 x004a,
0 x0049, 0 x0049, 0 x0048, 0 x0047, 0 x0046, 0 x0046,
0 x0045, 0 x0044, 0 x0043, 0 x0042, 0 x0041, 0 x0040,
0 x0040, 0 x003f, 0 x003e, 0 x003d, 0 x003c, 0 x003a,
0 x0039, 0 x0038, 0 x0037, 0 x0036, 0 x0035, 0 x0033,
0 x0032, 0 x0031, 0 x002f, 0 x002e, 0 x002c, 0 x002b,
0 x0029, 0 x0027, 0 x0025, 0 x0023, 0 x0021, 0 x001f,
0 x001d, 0 x001a, 0 x0018, 0 x0015, 0 x0012, 0 x000e,
0 x000b, 0 x0007, 0 x0002, 0 x00fd,
};
static const u16 b43_httab_0x1c[] = {
0 x0055, 0 x0054, 0 x0054, 0 x0053, 0 x0052, 0 x0052,
0 x0051, 0 x0051, 0 x0050, 0 x004f, 0 x004f, 0 x004e,
0 x004e, 0 x004d, 0 x004c, 0 x004c, 0 x004b, 0 x004a,
0 x0049, 0 x0049, 0 x0048, 0 x0047, 0 x0046, 0 x0046,
0 x0045, 0 x0044, 0 x0043, 0 x0042, 0 x0041, 0 x0040,
0 x0040, 0 x003f, 0 x003e, 0 x003d, 0 x003c, 0 x003a,
0 x0039, 0 x0038, 0 x0037, 0 x0036, 0 x0035, 0 x0033,
0 x0032, 0 x0031, 0 x002f, 0 x002e, 0 x002c, 0 x002b,
0 x0029, 0 x0027, 0 x0025, 0 x0023, 0 x0021, 0 x001f,
0 x001d, 0 x001a, 0 x0018, 0 x0015, 0 x0012, 0 x000e,
0 x000b, 0 x0007, 0 x0002, 0 x00fd,
};
static const u32 b43_httab_0x1a_0xc0[] = {
0 x5bf70044, 0 x5bf70042, 0 x5bf70040, 0 x5bf7003e,
0 x5bf7003c, 0 x5bf7003b, 0 x5bf70039, 0 x5bf70037,
0 x5bf70036, 0 x5bf70034, 0 x5bf70033, 0 x5bf70031,
0 x5bf70030, 0 x5ba70044, 0 x5ba70042, 0 x5ba70040,
0 x5ba7003e, 0 x5ba7003c, 0 x5ba7003b, 0 x5ba70039,
0 x5ba70037, 0 x5ba70036, 0 x5ba70034, 0 x5ba70033,
0 x5b770044, 0 x5b770042, 0 x5b770040, 0 x5b77003e,
0 x5b77003c, 0 x5b77003b, 0 x5b770039, 0 x5b770037,
0 x5b770036, 0 x5b770034, 0 x5b770033, 0 x5b770031,
0 x5b770030, 0 x5b77002f, 0 x5b77002d, 0 x5b77002c,
0 x5b470044, 0 x5b470042, 0 x5b470040, 0 x5b47003e,
0 x5b47003c, 0 x5b47003b, 0 x5b470039, 0 x5b470037,
0 x5b470036, 0 x5b470034, 0 x5b470033, 0 x5b470031,
0 x5b470030, 0 x5b47002f, 0 x5b47002d, 0 x5b47002c,
0 x5b47002b, 0 x5b47002a, 0 x5b270044, 0 x5b270042,
0 x5b270040, 0 x5b27003e, 0 x5b27003c, 0 x5b27003b,
0 x5b270039, 0 x5b270037, 0 x5b270036, 0 x5b270034,
0 x5b270033, 0 x5b270031, 0 x5b270030, 0 x5b27002f,
0 x5b170044, 0 x5b170042, 0 x5b170040, 0 x5b17003e,
0 x5b17003c, 0 x5b17003b, 0 x5b170039, 0 x5b170037,
0 x5b170036, 0 x5b170034, 0 x5b170033, 0 x5b170031,
0 x5b170030, 0 x5b17002f, 0 x5b17002d, 0 x5b17002c,
0 x5b17002b, 0 x5b17002a, 0 x5b170028, 0 x5b170027,
0 x5b170026, 0 x5b170025, 0 x5b170024, 0 x5b170023,
0 x5b070044, 0 x5b070042, 0 x5b070040, 0 x5b07003e,
0 x5b07003c, 0 x5b07003b, 0 x5b070039, 0 x5b070037,
0 x5b070036, 0 x5b070034, 0 x5b070033, 0 x5b070031,
0 x5b070030, 0 x5b07002f, 0 x5b07002d, 0 x5b07002c,
0 x5b07002b, 0 x5b07002a, 0 x5b070028, 0 x5b070027,
0 x5b070026, 0 x5b070025, 0 x5b070024, 0 x5b070023,
0 x5b070022, 0 x5b070021, 0 x5b070020, 0 x5b07001f,
0 x5b07001e, 0 x5b07001d, 0 x5b07001d, 0 x5b07001c,
};
static const u32 b43_httab_0x1a_0x140[] = {
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
};
static const u32 b43_httab_0x1b_0x140[] = {
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
};
static const u32 b43_httab_0x1c_0x140[] = {
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
0 x00000000, 0 x00000000, 0 x00000000, 0 x00000000,
};
static const u16 b43_httab_0x1a_0x1c0[] = {
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000,
};
static const u16 b43_httab_0x1b_0x1c0[] = {
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000,
};
static const u16 b43_httab_0x1c_0x1c0[] = {
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,
0 x0000, 0 x0000,
};
static const u16 b43_httab_0x1a_0x240[] = {
0 x0036, 0 x0036, 0 x0036, 0 x0036, 0 x0036, 0 x0036,
0 x0036, 0 x0036, 0 x0036, 0 x0036, 0 x0036, 0 x0036,
0 x0036, 0 x002a, 0 x002a, 0 x002a, 0 x002a, 0 x002a,
0 x002a, 0 x002a, 0 x002a, 0 x002a, 0 x002a, 0 x002a,
0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x001e,
0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x001e,
0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x000e, 0 x000e,
0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x000e,
0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x000e,
0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x01fc, 0 x01fc,
0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc,
0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc,
0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee,
0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee,
0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee,
0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6,
};
static const u16 b43_httab_0x1b_0x240[] = {
0 x0036, 0 x0036, 0 x0036, 0 x0036, 0 x0036, 0 x0036,
0 x0036, 0 x0036, 0 x0036, 0 x0036, 0 x0036, 0 x0036,
0 x0036, 0 x002a, 0 x002a, 0 x002a, 0 x002a, 0 x002a,
0 x002a, 0 x002a, 0 x002a, 0 x002a, 0 x002a, 0 x002a,
0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x001e,
0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x001e,
0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x000e, 0 x000e,
0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x000e,
0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x000e,
0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x01fc, 0 x01fc,
0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc,
0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc,
0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee,
0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee,
0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee,
0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6,
};
static const u16 b43_httab_0x1c_0x240[] = {
0 x0036, 0 x0036, 0 x0036, 0 x0036, 0 x0036, 0 x0036,
0 x0036, 0 x0036, 0 x0036, 0 x0036, 0 x0036, 0 x0036,
0 x0036, 0 x002a, 0 x002a, 0 x002a, 0 x002a, 0 x002a,
0 x002a, 0 x002a, 0 x002a, 0 x002a, 0 x002a, 0 x002a,
0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x001e,
0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x001e,
0 x001e, 0 x001e, 0 x001e, 0 x001e, 0 x000e, 0 x000e,
0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x000e,
0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x000e,
0 x000e, 0 x000e, 0 x000e, 0 x000e, 0 x01fc, 0 x01fc,
0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc,
0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc, 0 x01fc,
0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee,
0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee,
0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee,
0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee, 0 x01ee,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6, 0 x01d6,
0 x01d6, 0 x01d6,
};
static const u32 b43_httab_0x1f[] = {
0 x00000000, 0 x00000000, 0 x00016023, 0 x00006028,
0 x00034036, 0 x0003402e, 0 x0007203c, 0 x0006e037,
0 x00070030, 0 x0009401f, 0 x0009a00f, 0 x000b600d,
0 x000c8007, 0 x000ce007, 0 x00101fff, 0 x00121ff9,
0 x0012e004, 0 x0014dffc, 0 x0016dff6, 0 x0018dfe9,
0 x001b3fe5, 0 x001c5fd0, 0 x001ddfc2, 0 x001f1fb6,
0 x00207fa4, 0 x00219f8f, 0 x0022ff7d, 0 x00247f6c,
0 x0024df5b, 0 x00267f4b, 0 x0027df3b, 0 x0029bf3b,
0 x002b5f2f, 0 x002d3f2e, 0 x002f5f2a, 0 x002fff15,
0 x00315f0b, 0 x0032defa, 0 x0033beeb, 0 x0034fed9,
0 x00353ec5, 0 x00361eb0, 0 x00363e9b, 0 x0036be87,
0 x0036be70, 0 x0038fe67, 0 x0044beb2, 0 x00513ef3,
0 x00595f11, 0 x00669f3d, 0 x0078dfdf, 0 x00a143aa,
0 x01642fff, 0 x0162afff, 0 x01620fff, 0 x0160cfff,
0 x015f0fff, 0 x015dafff, 0 x015bcfff, 0 x015bcfff,
0 x015b4fff, 0 x015acfff, 0 x01590fff, 0 x0156cfff,
};
static const u32 b43_httab_0x21[] = {
0 x00000000, 0 x00000000, 0 x00016023, 0 x00006028,
0 x00034036, 0 x0003402e, 0 x0007203c, 0 x0006e037,
0 x00070030, 0 x0009401f, 0 x0009a00f, 0 x000b600d,
0 x000c8007, 0 x000ce007, 0 x00101fff, 0 x00121ff9,
0 x0012e004, 0 x0014dffc, 0 x0016dff6, 0 x0018dfe9,
0 x001b3fe5, 0 x001c5fd0, 0 x001ddfc2, 0 x001f1fb6,
0 x00207fa4, 0 x00219f8f, 0 x0022ff7d, 0 x00247f6c,
0 x0024df5b, 0 x00267f4b, 0 x0027df3b, 0 x0029bf3b,
0 x002b5f2f, 0 x002d3f2e, 0 x002f5f2a, 0 x002fff15,
0 x00315f0b, 0 x0032defa, 0 x0033beeb, 0 x0034fed9,
0 x00353ec5, 0 x00361eb0, 0 x00363e9b, 0 x0036be87,
0 x0036be70, 0 x0038fe67, 0 x0044beb2, 0 x00513ef3,
0 x00595f11, 0 x00669f3d, 0 x0078dfdf, 0 x00a143aa,
0 x01642fff, 0 x0162afff, 0 x01620fff, 0 x0160cfff,
0 x015f0fff, 0 x015dafff, 0 x015bcfff, 0 x015bcfff,
0 x015b4fff, 0 x015acfff, 0 x01590fff, 0 x0156cfff,
};
static const u32 b43_httab_0x23[] = {
0 x00000000, 0 x00000000, 0 x00016023, 0 x00006028,
0 x00034036, 0 x0003402e, 0 x0007203c, 0 x0006e037,
0 x00070030, 0 x0009401f, 0 x0009a00f, 0 x000b600d,
0 x000c8007, 0 x000ce007, 0 x00101fff, 0 x00121ff9,
0 x0012e004, 0 x0014dffc, 0 x0016dff6, 0 x0018dfe9,
0 x001b3fe5, 0 x001c5fd0, 0 x001ddfc2, 0 x001f1fb6,
0 x00207fa4, 0 x00219f8f, 0 x0022ff7d, 0 x00247f6c,
0 x0024df5b, 0 x00267f4b, 0 x0027df3b, 0 x0029bf3b,
0 x002b5f2f, 0 x002d3f2e, 0 x002f5f2a, 0 x002fff15,
0 x00315f0b, 0 x0032defa, 0 x0033beeb, 0 x0034fed9,
0 x00353ec5, 0 x00361eb0, 0 x00363e9b, 0 x0036be87,
0 x0036be70, 0 x0038fe67, 0 x0044beb2, 0 x00513ef3,
0 x00595f11, 0 x00669f3d, 0 x0078dfdf, 0 x00a143aa,
0 x01642fff, 0 x0162afff, 0 x01620fff, 0 x0160cfff,
0 x015f0fff, 0 x015dafff, 0 x015bcfff, 0 x015bcfff,
0 x015b4fff, 0 x015acfff, 0 x01590fff, 0 x0156cfff,
};
static const u32 b43_httab_0x20[] = {
0 x0b5e002d, 0 x0ae2002f, 0 x0a3b0032, 0 x09a70035,
0 x09220038, 0 x08ab003b, 0 x081f003f, 0 x07a20043,
0 x07340047, 0 x06d2004b, 0 x067a004f, 0 x06170054,
0 x05bf0059, 0 x0571005e, 0 x051e0064, 0 x04d3006a,
0 x04910070, 0 x044c0077, 0 x040f007e, 0 x03d90085,
0 x03a1008d, 0 x036f0095, 0 x033d009e, 0 x030b00a8,
0 x02e000b2, 0 x02b900bc, 0 x029200c7, 0 x026d00d3,
0 x024900e0, 0 x022900ed, 0 x020a00fb, 0 x01ec010a,
0 x01d20119, 0 x01b7012a, 0 x019e013c, 0 x0188014e,
0 x01720162, 0 x015d0177, 0 x0149018e, 0 x013701a5,
0 x012601be, 0 x011501d8, 0 x010601f4, 0 x00f70212,
0 x00e90231, 0 x00dc0253, 0 x00d00276, 0 x00c4029b,
0 x00b902c3, 0 x00af02ed, 0 x00a50319, 0 x009c0348,
0 x0093037a, 0 x008b03af, 0 x008303e6, 0 x007c0422,
0 x00750460, 0 x006e04a3, 0 x006804e9, 0 x00620533,
0 x005d0582, 0 x005805d6, 0 x0053062e, 0 x004e068c,
};
static const u32 b43_httab_0x22[] = {
0 x0b5e002d, 0 x0ae2002f, 0 x0a3b0032, 0 x09a70035,
0 x09220038, 0 x08ab003b, 0 x081f003f, 0 x07a20043,
0 x07340047, 0 x06d2004b, 0 x067a004f, 0 x06170054,
0 x05bf0059, 0 x0571005e, 0 x051e0064, 0 x04d3006a,
0 x04910070, 0 x044c0077, 0 x040f007e, 0 x03d90085,
0 x03a1008d, 0 x036f0095, 0 x033d009e, 0 x030b00a8,
0 x02e000b2, 0 x02b900bc, 0 x029200c7, 0 x026d00d3,
0 x024900e0, 0 x022900ed, 0 x020a00fb, 0 x01ec010a,
0 x01d20119, 0 x01b7012a, 0 x019e013c, 0 x0188014e,
0 x01720162, 0 x015d0177, 0 x0149018e, 0 x013701a5,
0 x012601be, 0 x011501d8, 0 x010601f4, 0 x00f70212,
0 x00e90231, 0 x00dc0253, 0 x00d00276, 0 x00c4029b,
0 x00b902c3, 0 x00af02ed, 0 x00a50319, 0 x009c0348,
0 x0093037a, 0 x008b03af, 0 x008303e6, 0 x007c0422,
0 x00750460, 0 x006e04a3, 0 x006804e9, 0 x00620533,
0 x005d0582, 0 x005805d6, 0 x0053062e, 0 x004e068c,
};
static const u32 b43_httab_0x24[] = {
0 x0b5e002d, 0 x0ae2002f, 0 x0a3b0032, 0 x09a70035,
0 x09220038, 0 x08ab003b, 0 x081f003f, 0 x07a20043,
0 x07340047, 0 x06d2004b, 0 x067a004f, 0 x06170054,
0 x05bf0059, 0 x0571005e, 0 x051e0064, 0 x04d3006a,
0 x04910070, 0 x044c0077, 0 x040f007e, 0 x03d90085,
0 x03a1008d, 0 x036f0095, 0 x033d009e, 0 x030b00a8,
0 x02e000b2, 0 x02b900bc, 0 x029200c7, 0 x026d00d3,
0 x024900e0, 0 x022900ed, 0 x020a00fb, 0 x01ec010a,
0 x01d20119, 0 x01b7012a, 0 x019e013c, 0 x0188014e,
0 x01720162, 0 x015d0177, 0 x0149018e, 0 x013701a5,
0 x012601be, 0 x011501d8, 0 x010601f4, 0 x00f70212,
0 x00e90231, 0 x00dc0253, 0 x00d00276, 0 x00c4029b,
0 x00b902c3, 0 x00af02ed, 0 x00a50319, 0 x009c0348,
0 x0093037a, 0 x008b03af, 0 x008303e6, 0 x007c0422,
0 x00750460, 0 x006e04a3, 0 x006804e9, 0 x00620533,
0 x005d0582, 0 x005805d6, 0 x0053062e, 0 x004e068c,
};
/* Some late-init table */
const u32 b43_httab_0x1a_0xc0_late[] = {
0 x10f90040, 0 x10e10040, 0 x10e1003c, 0 x10c9003d,
0 x10b9003c, 0 x10a9003d, 0 x10a1003c, 0 x1099003b,
0 x1091003b, 0 x1089003a, 0 x1081003a, 0 x10790039,
0 x10710039, 0 x1069003a, 0 x1061003b, 0 x1059003d,
0 x1051003f, 0 x10490042, 0 x1049003e, 0 x1049003b,
0 x1041003e, 0 x1041003b, 0 x1039003e, 0 x1039003b,
0 x10390038, 0 x10390035, 0 x1031003a, 0 x10310036,
0 x10310033, 0 x1029003a, 0 x10290037, 0 x10290034,
0 x10290031, 0 x10210039, 0 x10210036, 0 x10210033,
0 x10210030, 0 x1019003c, 0 x10190039, 0 x10190036,
0 x10190033, 0 x10190030, 0 x1019002d, 0 x1019002b,
0 x10190028, 0 x1011003a, 0 x10110036, 0 x10110033,
0 x10110030, 0 x1011002e, 0 x1011002b, 0 x10110029,
0 x10110027, 0 x10110024, 0 x10110022, 0 x10110020,
0 x1011001f, 0 x1011001d, 0 x1009003a, 0 x10090037,
0 x10090034, 0 x10090031, 0 x1009002e, 0 x1009002c,
0 x10090029, 0 x10090027, 0 x10090025, 0 x10090023,
0 x10090021, 0 x1009001f, 0 x1009001d, 0 x1009001b,
0 x1009001a, 0 x10090018, 0 x10090017, 0 x10090016,
0 x10090015, 0 x10090013, 0 x10090012, 0 x10090011,
0 x10090010, 0 x1009000f, 0 x1009000f, 0 x1009000e,
0 x1009000d, 0 x1009000c, 0 x1009000c, 0 x1009000b,
0 x1009000a, 0 x1009000a, 0 x10090009, 0 x10090009,
0 x10090008, 0 x10090008, 0 x10090007, 0 x10090007,
0 x10090007, 0 x10090006, 0 x10090006, 0 x10090005,
0 x10090005, 0 x10090005, 0 x10090005, 0 x10090004,
0 x10090004, 0 x10090004, 0 x10090004, 0 x10090003,
0 x10090003, 0 x10090003, 0 x10090003, 0 x10090003,
0 x10090003, 0 x10090002, 0 x10090002, 0 x10090002,
0 x10090002, 0 x10090002, 0 x10090002, 0 x10090002,
0 x10090002, 0 x10090002, 0 x10090001, 0 x10090001,
0 x10090001, 0 x10090001, 0 x10090001, 0 x10090001,
};
/**************************************************
* R/W ops.
**************************************************/
u32 b43_httab_read(struct b43_wldev *dev, u32 offset)
{
u32 type, value;
type = offset & B43_HTTAB_TYPEMASK;
offset &= ~B43_HTTAB_TYPEMASK;
B43_WARN_ON(offset > 0 xFFFF);
switch (type) {
case B43_HTTAB_8BIT:
b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
value = b43_phy_read(dev, B43_PHY_HT_TABLE_DATALO) & 0 xFF;
break ;
case B43_HTTAB_16BIT:
b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
value = b43_phy_read(dev, B43_PHY_HT_TABLE_DATALO);
break ;
case B43_HTTAB_32BIT:
b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
value = b43_phy_read(dev, B43_PHY_HT_TABLE_DATAHI);
value <<= 16 ;
value |= b43_phy_read(dev, B43_PHY_HT_TABLE_DATALO);
break ;
default :
B43_WARN_ON(1 );
value = 0 ;
}
return value;
}
void b43_httab_read_bulk(struct b43_wldev *dev, u32 offset,
unsigned int nr_elements, void *_data)
{
u32 type;
u8 *data = _data;
unsigned int i;
type = offset & B43_HTTAB_TYPEMASK;
offset &= ~B43_HTTAB_TYPEMASK;
B43_WARN_ON(offset > 0 xFFFF);
b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
for (i = 0 ; i < nr_elements; i++) {
switch (type) {
case B43_HTTAB_8BIT:
*data = b43_phy_read(dev, B43_PHY_HT_TABLE_DATALO) & 0 xFF;
data++;
break ;
case B43_HTTAB_16BIT:
*((u16 *)data) = b43_phy_read(dev, B43_PHY_HT_TABLE_DATALO);
data += 2 ;
break ;
case B43_HTTAB_32BIT:
*((u32 *)data) = b43_phy_read(dev, B43_PHY_HT_TABLE_DATAHI);
*((u32 *)data) <<= 16 ;
*((u32 *)data) |= b43_phy_read(dev, B43_PHY_HT_TABLE_DATALO);
data += 4 ;
break ;
default :
B43_WARN_ON(1 );
}
}
}
void b43_httab_write(struct b43_wldev *dev, u32 offset, u32 value)
{
u32 type;
type = offset & B43_HTTAB_TYPEMASK;
offset &= 0 xFFFF;
switch (type) {
case B43_HTTAB_8BIT:
B43_WARN_ON(value & ~0 xFF);
b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value);
break ;
case B43_HTTAB_16BIT:
B43_WARN_ON(value & ~0 xFFFF);
b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value);
break ;
case B43_HTTAB_32BIT:
b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
b43_phy_write(dev, B43_PHY_HT_TABLE_DATAHI, value >> 16 );
b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value & 0 xFFFF);
break ;
default :
B43_WARN_ON(1 );
}
return ;
}
void b43_httab_write_few(struct b43_wldev *dev, u32 offset, size_t num, ...)
{
va_list args;
u32 type, value;
unsigned int i;
type = offset & B43_HTTAB_TYPEMASK;
offset &= 0 xFFFF;
va_start(args, num);
switch (type) {
case B43_HTTAB_8BIT:
b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
for (i = 0 ; i < num; i++) {
value = va_arg(args, int );
B43_WARN_ON(value & ~0 xFF);
b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value);
}
break ;
case B43_HTTAB_16BIT:
b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
for (i = 0 ; i < num; i++) {
value = va_arg(args, int );
B43_WARN_ON(value & ~0 xFFFF);
b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value);
}
break ;
case B43_HTTAB_32BIT:
b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
for (i = 0 ; i < num; i++) {
value = va_arg(args, int );
b43_phy_write(dev, B43_PHY_HT_TABLE_DATAHI,
value >> 16 );
b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO,
value & 0 xFFFF);
}
break ;
default :
B43_WARN_ON(1 );
}
va_end(args);
return ;
}
void b43_httab_write_bulk(struct b43_wldev *dev, u32 offset,
unsigned int nr_elements, const void *_data)
{
u32 type, value;
const u8 *data = _data;
unsigned int i;
type = offset & B43_HTTAB_TYPEMASK;
offset &= ~B43_HTTAB_TYPEMASK;
B43_WARN_ON(offset > 0 xFFFF);
b43_phy_write(dev, B43_PHY_HT_TABLE_ADDR, offset);
for (i = 0 ; i < nr_elements; i++) {
switch (type) {
case B43_HTTAB_8BIT:
value = *data;
data++;
B43_WARN_ON(value & ~0 xFF);
b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value);
break ;
case B43_HTTAB_16BIT:
value = *((u16 *)data);
data += 2 ;
B43_WARN_ON(value & ~0 xFFFF);
b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO, value);
break ;
case B43_HTTAB_32BIT:
value = *((u32 *)data);
data += 4 ;
b43_phy_write(dev, B43_PHY_HT_TABLE_DATAHI, value >> 16 );
b43_phy_write(dev, B43_PHY_HT_TABLE_DATALO,
value & 0 xFFFF);
break ;
default :
B43_WARN_ON(1 );
}
}
}
/**************************************************
* Tables ops.
**************************************************/
#define httab_upload(dev, offset, data) do { \
b43_httab_write_bulk(dev, offset, ARRAY_SIZE(data), data); \
} while (0 )
void b43_phy_ht_tables_init(struct b43_wldev *dev)
{
BUILD_BUG_ON(ARRAY_SIZE(b43_httab_0x1a_0xc0_late) !=
B43_HTTAB_1A_C0_LATE_SIZE);
httab_upload(dev, B43_HTTAB16(0 x12, 0 ), b43_httab_0x12);
httab_upload(dev, B43_HTTAB16(0 x27, 0 ), b43_httab_0x27);
httab_upload(dev, B43_HTTAB16(0 x26, 0 ), b43_httab_0x26);
httab_upload(dev, B43_HTTAB32(0 x25, 0 ), b43_httab_0x25);
httab_upload(dev, B43_HTTAB32(0 x2f, 0 ), b43_httab_0x2f);
httab_upload(dev, B43_HTTAB16(0 x1a, 0 ), b43_httab_0x1a);
httab_upload(dev, B43_HTTAB16(0 x1b, 0 ), b43_httab_0x1b);
httab_upload(dev, B43_HTTAB16(0 x1c, 0 ), b43_httab_0x1c);
httab_upload(dev, B43_HTTAB32(0 x1a, 0 x0c0), b43_httab_0x1a_0xc0);
httab_upload(dev, B43_HTTAB32(0 x1a, 0 x140), b43_httab_0x1a_0x140);
httab_upload(dev, B43_HTTAB32(0 x1b, 0 x140), b43_httab_0x1b_0x140);
httab_upload(dev, B43_HTTAB32(0 x1c, 0 x140), b43_httab_0x1c_0x140);
httab_upload(dev, B43_HTTAB16(0 x1a, 0 x1c0), b43_httab_0x1a_0x1c0);
httab_upload(dev, B43_HTTAB16(0 x1b, 0 x1c0), b43_httab_0x1b_0x1c0);
httab_upload(dev, B43_HTTAB16(0 x1c, 0 x1c0), b43_httab_0x1c_0x1c0);
httab_upload(dev, B43_HTTAB16(0 x1a, 0 x240), b43_httab_0x1a_0x240);
httab_upload(dev, B43_HTTAB16(0 x1b, 0 x240), b43_httab_0x1b_0x240);
httab_upload(dev, B43_HTTAB16(0 x1c, 0 x240), b43_httab_0x1c_0x240);
httab_upload(dev, B43_HTTAB32(0 x1f, 0 ), b43_httab_0x1f);
httab_upload(dev, B43_HTTAB32(0 x21, 0 ), b43_httab_0x21);
httab_upload(dev, B43_HTTAB32(0 x23, 0 ), b43_httab_0x23);
httab_upload(dev, B43_HTTAB32(0 x20, 0 ), b43_httab_0x20);
httab_upload(dev, B43_HTTAB32(0 x22, 0 ), b43_httab_0x22);
httab_upload(dev, B43_HTTAB32(0 x24, 0 ), b43_httab_0x24);
}
Messung V0.5 in Prozent C=96 H=92 G=93