CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
orangepi-xunlong

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

GitHub Repository: orangepi-xunlong/orangepi-build
Path: blob/next/external/cache/sources/hcitools/csr.c
Views: 3959
1
/*
2
*
3
* BlueZ - Bluetooth protocol stack for Linux
4
*
5
* Copyright (C) 2003-2010 Marcel Holtmann <[email protected]>
6
*
7
*
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the GNU General Public License
19
* along with this program; if not, write to the Free Software
20
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
*
22
*/
23
24
#ifdef HAVE_CONFIG_H
25
#include <config.h>
26
#endif
27
28
#include <stdio.h>
29
#include <errno.h>
30
#include <fcntl.h>
31
#include <unistd.h>
32
#include <stdlib.h>
33
#include <string.h>
34
#include <sys/stat.h>
35
#include <sys/mman.h>
36
#include <sys/socket.h>
37
38
#include <bluetooth/bluetooth.h>
39
#include <bluetooth/hci.h>
40
#include <bluetooth/hci_lib.h>
41
42
#include "csr.h"
43
44
struct psr_data {
45
uint16_t pskey;
46
uint8_t *value;
47
uint8_t size;
48
struct psr_data *next;
49
};
50
51
static struct psr_data *head = NULL, *tail = NULL;
52
53
static struct {
54
uint16_t id;
55
char *str;
56
} csr_map[] = {
57
{ 66, "HCI 9.8" },
58
{ 97, "HCI 10.3" },
59
{ 101, "HCI 10.5" },
60
{ 111, "HCI 11.0" },
61
{ 112, "HCI 11.1" },
62
{ 114, "HCI 11.2" },
63
{ 115, "HCI 11.3" },
64
{ 117, "HCI 12.0" },
65
{ 119, "HCI 12.1" },
66
{ 133, "HCI 12.2" },
67
{ 134, "HCI 12.3" },
68
{ 162, "HCI 12.4" },
69
{ 165, "HCI 12.5" },
70
{ 169, "HCI 12.6" },
71
{ 188, "HCI 12.7" },
72
{ 218, "HCI 12.8" },
73
{ 283, "HCI 12.9" },
74
{ 203, "HCI 13.2" },
75
{ 204, "HCI 13.2" },
76
{ 210, "HCI 13.3" },
77
{ 211, "HCI 13.3" },
78
{ 213, "HCI 13.4" },
79
{ 214, "HCI 13.4" },
80
{ 225, "HCI 13.5" },
81
{ 226, "HCI 13.5" },
82
{ 237, "HCI 13.6" },
83
{ 238, "HCI 13.6" },
84
{ 242, "HCI 14.0" },
85
{ 243, "HCI 14.0" },
86
{ 244, "HCI 14.0" },
87
{ 245, "HCI 14.0" },
88
{ 254, "HCI 13.7" },
89
{ 255, "HCI 13.7" },
90
{ 264, "HCI 14.1" },
91
{ 265, "HCI 14.1" },
92
{ 267, "HCI 14.2" },
93
{ 268, "HCI 14.2" },
94
{ 272, "HCI 14.3" },
95
{ 273, "HCI 14.3" },
96
{ 274, "HCI 13.8" },
97
{ 275, "HCI 13.8" },
98
{ 286, "HCI 13.9" },
99
{ 287, "HCI 13.9" },
100
{ 309, "HCI 13.10" },
101
{ 310, "HCI 13.10" },
102
{ 313, "HCI 14.4" },
103
{ 314, "HCI 14.4" },
104
{ 323, "HCI 14.5" },
105
{ 324, "HCI 14.5" },
106
{ 336, "HCI 14.6" },
107
{ 337, "HCI 14.6" },
108
{ 351, "HCI 13.11" },
109
{ 352, "HCI 13.11" },
110
{ 362, "HCI 15.0" },
111
{ 363, "HCI 15.0" },
112
{ 364, "HCI 15.0" },
113
{ 365, "HCI 15.0" },
114
{ 373, "HCI 14.7" },
115
{ 374, "HCI 14.7" },
116
{ 379, "HCI 15.1" },
117
{ 380, "HCI 15.1" },
118
{ 381, "HCI 15.1" },
119
{ 382, "HCI 15.1" },
120
{ 392, "HCI 15.2" },
121
{ 393, "HCI 15.2" },
122
{ 394, "HCI 15.2" },
123
{ 395, "HCI 15.2" },
124
{ 436, "HCI 16.0" },
125
{ 437, "HCI 16.0" },
126
{ 438, "HCI 16.0" },
127
{ 439, "HCI 16.0" },
128
{ 443, "HCI 15.3" },
129
{ 444, "HCI 15.3" },
130
{ 465, "HCI 16.1" },
131
{ 466, "HCI 16.1" },
132
{ 467, "HCI 16.1" },
133
{ 468, "HCI 16.1" },
134
{ 487, "HCI 14.8" },
135
{ 488, "HCI 14.8" },
136
{ 492, "HCI 16.2" },
137
{ 493, "HCI 16.2" },
138
{ 495, "HCI 16.2" },
139
{ 496, "HCI 16.2" },
140
{ 502, "HCI 16.1.1" },
141
{ 503, "HCI 16.1.1" },
142
{ 504, "HCI 16.1.1" },
143
{ 505, "HCI 16.1.1" },
144
{ 506, "HCI 16.1.2" },
145
{ 507, "HCI 16.1.2" },
146
{ 508, "HCI 16.1.2" },
147
{ 509, "HCI 16.1.2" },
148
{ 516, "HCI 16.3" },
149
{ 517, "HCI 16.3" },
150
{ 518, "HCI 16.3" },
151
{ 519, "HCI 16.3" },
152
{ 523, "HCI 16.4" },
153
{ 524, "HCI 16.4" },
154
{ 525, "HCI 16.4" },
155
{ 526, "HCI 16.4" },
156
{ 553, "HCI 15.3" },
157
{ 554, "HCI 15.3" },
158
{ 562, "HCI 16.5" },
159
{ 563, "HCI 16.5" },
160
{ 564, "HCI 16.5" },
161
{ 565, "HCI 16.5" },
162
{ 593, "HCI 17.0" },
163
{ 594, "HCI 17.0" },
164
{ 595, "HCI 17.0" },
165
{ 599, "HCI 17.0" },
166
{ 600, "HCI 17.0" },
167
{ 608, "HCI 13.10.1" },
168
{ 609, "HCI 13.10.1" },
169
{ 613, "HCI 17.1" },
170
{ 614, "HCI 17.1" },
171
{ 615, "HCI 17.1" },
172
{ 616, "HCI 17.1" },
173
{ 618, "HCI 17.1" },
174
{ 624, "HCI 17.2" },
175
{ 625, "HCI 17.2" },
176
{ 626, "HCI 17.2" },
177
{ 627, "HCI 17.2" },
178
{ 637, "HCI 16.6" },
179
{ 638, "HCI 16.6" },
180
{ 639, "HCI 16.6" },
181
{ 640, "HCI 16.6" },
182
{ 642, "HCI 13.10.2" },
183
{ 643, "HCI 13.10.2" },
184
{ 644, "HCI 13.10.3" },
185
{ 645, "HCI 13.10.3" },
186
{ 668, "HCI 13.10.4" },
187
{ 669, "HCI 13.10.4" },
188
{ 681, "HCI 16.7" },
189
{ 682, "HCI 16.7" },
190
{ 683, "HCI 16.7" },
191
{ 684, "HCI 16.7" },
192
{ 704, "HCI 16.8" },
193
{ 718, "HCI 16.4.1" },
194
{ 719, "HCI 16.4.1" },
195
{ 720, "HCI 16.4.1" },
196
{ 721, "HCI 16.4.1" },
197
{ 722, "HCI 16.7.1" },
198
{ 723, "HCI 16.7.1" },
199
{ 724, "HCI 16.7.1" },
200
{ 725, "HCI 16.7.1" },
201
{ 731, "HCI 16.7.2" },
202
{ 732, "HCI 16.7.2" },
203
{ 733, "HCI 16.7.2" },
204
{ 734, "HCI 16.7.2" },
205
{ 735, "HCI 16.4.2" },
206
{ 736, "HCI 16.4.2" },
207
{ 737, "HCI 16.4.2" },
208
{ 738, "HCI 16.4.2" },
209
{ 750, "HCI 16.7.3" },
210
{ 751, "HCI 16.7.3" },
211
{ 752, "HCI 16.7.3" },
212
{ 753, "HCI 16.7.3" },
213
{ 760, "HCI 16.7.4" },
214
{ 761, "HCI 16.7.4" },
215
{ 762, "HCI 16.7.4" },
216
{ 763, "HCI 16.7.4" },
217
{ 770, "HCI 16.9" },
218
{ 771, "HCI 16.9" },
219
{ 772, "HCI 16.9" },
220
{ 773, "HCI 16.9" },
221
{ 774, "HCI 17.3" },
222
{ 775, "HCI 17.3" },
223
{ 776, "HCI 17.3" },
224
{ 777, "HCI 17.3" },
225
{ 781, "HCI 16.7.5" },
226
{ 786, "HCI 16.10" },
227
{ 787, "HCI 16.10" },
228
{ 788, "HCI 16.10" },
229
{ 789, "HCI 16.10" },
230
{ 791, "HCI 16.4.3" },
231
{ 792, "HCI 16.4.3" },
232
{ 793, "HCI 16.4.3" },
233
{ 794, "HCI 16.4.3" },
234
{ 798, "HCI 16.11" },
235
{ 799, "HCI 16.11" },
236
{ 800, "HCI 16.11" },
237
{ 801, "HCI 16.11" },
238
{ 806, "HCI 16.7.5" },
239
{ 807, "HCI 16.12" },
240
{ 808, "HCI 16.12" },
241
{ 809, "HCI 16.12" },
242
{ 810, "HCI 16.12" },
243
{ 817, "HCI 16.13" },
244
{ 818, "HCI 16.13" },
245
{ 819, "HCI 16.13" },
246
{ 820, "HCI 16.13" },
247
{ 823, "HCI 13.10.5" },
248
{ 824, "HCI 13.10.5" },
249
{ 826, "HCI 16.14" },
250
{ 827, "HCI 16.14" },
251
{ 828, "HCI 16.14" },
252
{ 829, "HCI 16.14" },
253
{ 843, "HCI 17.3.1" },
254
{ 856, "HCI 17.3.2" },
255
{ 857, "HCI 17.3.2" },
256
{ 858, "HCI 17.3.2" },
257
{ 1120, "HCI 17.11" },
258
{ 1168, "HCI 18.1" },
259
{ 1169, "HCI 18.1" },
260
{ 1241, "HCI 18.x" },
261
{ 1298, "HCI 18.2" },
262
{ 1354, "HCI 18.2" },
263
{ 1392, "HCI 18.2" },
264
{ 1393, "HCI 18.2" },
265
{ 1501, "HCI 18.2" },
266
{ 1503, "HCI 18.2" },
267
{ 1504, "HCI 18.2" },
268
{ 1505, "HCI 18.2" },
269
{ 1506, "HCI 18.2" },
270
{ 1520, "HCI 18.2" },
271
{ 1586, "HCI 18.2" },
272
{ 1591, "HCI 18.2" },
273
{ 1592, "HCI 18.2" },
274
{ 1593, "HCI 18.2.1" },
275
{ 1733, "HCI 18.3" },
276
{ 1734, "HCI 18.3" },
277
{ 1735, "HCI 18.3" },
278
{ 1737, "HCI 18.3" },
279
{ 1915, "HCI 19.2" },
280
{ 1916, "HCI 19.2" },
281
{ 1958, "HCI 19.2" },
282
{ 1981, "Unified 20a" },
283
{ 1982, "Unified 20a" },
284
{ 1989, "HCI 18.4" },
285
{ 2062, "Unified 20a1" },
286
{ 2063, "Unified 20a1" },
287
{ 2067, "Unified 18f" },
288
{ 2068, "Unified 18f" },
289
{ 2243, "Unified 18e" },
290
{ 2244, "Unified 18e" },
291
{ 2258, "Unified 20d" },
292
{ 2259, "Unified 20d" },
293
{ 2361, "Unified 20e" },
294
{ 2362, "Unified 20e" },
295
{ 2386, "Unified 21a" },
296
{ 2387, "Unified 21a" },
297
{ 2423, "Unified 21a" },
298
{ 2424, "Unified 21a" },
299
{ 2623, "Unified 21c" },
300
{ 2624, "Unified 21c" },
301
{ 2625, "Unified 21c" },
302
{ 2626, "Unified 21c" },
303
{ 2627, "Unified 21c" },
304
{ 2628, "Unified 21c" },
305
{ 2629, "Unified 21c" },
306
{ 2630, "Unified 21c" },
307
{ 2631, "Unified 21c" },
308
{ 2632, "Unified 21c" },
309
{ 2633, "Unified 21c" },
310
{ 2634, "Unified 21c" },
311
{ 2635, "Unified 21c" },
312
{ 2636, "Unified 21c" },
313
{ 2649, "Unified 21c" },
314
{ 2650, "Unified 21c" },
315
{ 2651, "Unified 21c" },
316
{ 2652, "Unified 21c" },
317
{ 2653, "Unified 21c" },
318
{ 2654, "Unified 21c" },
319
{ 2655, "Unified 21c" },
320
{ 2656, "Unified 21c" },
321
{ 2658, "Unified 21c" },
322
{ 3057, "Unified 21d" },
323
{ 3058, "Unified 21d" },
324
{ 3059, "Unified 21d" },
325
{ 3060, "Unified 21d" },
326
{ 3062, "Unified 21d" },
327
{ 3063, "Unified 21d" },
328
{ 3064, "Unified 21d" },
329
{ 3164, "Unified 21e" },
330
{ 3413, "Unified 21f" },
331
{ 3414, "Unified 21f" },
332
{ 3415, "Unified 21f" },
333
{ 3424, "Unified 21f" },
334
{ 3454, "Unified 21f" },
335
{ 3684, "Unified 21f" },
336
{ 3764, "Unified 21f" },
337
{ 4276, "Unified 22b" },
338
{ 4277, "Unified 22b" },
339
{ 4279, "Unified 22b" },
340
{ 4281, "Unified 22b" },
341
{ 4282, "Unified 22b" },
342
{ 4283, "Unified 22b" },
343
{ 4284, "Unified 22b" },
344
{ 4285, "Unified 22b" },
345
{ 4289, "Unified 22b" },
346
{ 4290, "Unified 22b" },
347
{ 4291, "Unified 22b" },
348
{ 4292, "Unified 22b" },
349
{ 4293, "Unified 22b" },
350
{ 4294, "Unified 22b" },
351
{ 4295, "Unified 22b" },
352
{ 4363, "Unified 22c" },
353
{ 4373, "Unified 22c" },
354
{ 4374, "Unified 22c" },
355
{ 4532, "Unified 22d" },
356
{ 4533, "Unified 22d" },
357
{ 4698, "Unified 23c" },
358
{ 4839, "Unified 23c" },
359
{ 4841, "Unified 23c" },
360
{ 4866, "Unified 23c" },
361
{ 4867, "Unified 23c" },
362
{ 4868, "Unified 23c" },
363
{ 4869, "Unified 23c" },
364
{ 4870, "Unified 23c" },
365
{ 4871, "Unified 23c" },
366
{ 4872, "Unified 23c" },
367
{ 4874, "Unified 23c" },
368
{ 4875, "Unified 23c" },
369
{ 4876, "Unified 23c" },
370
{ 4877, "Unified 23c" },
371
{ 2526, "Marcel 1 (2005-09-26)" },
372
{ 2543, "Marcel 2 (2005-09-28)" },
373
{ 2622, "Marcel 3 (2005-10-27)" },
374
{ 3326, "Marcel 4 (2006-06-16)" },
375
{ 3612, "Marcel 5 (2006-10-24)" },
376
{ 4509, "Marcel 6 (2007-06-11)" },
377
{ 5417, "Marcel 7 (2008-08-26)" },
378
{ 195, "Sniff 1 (2001-11-27)" },
379
{ 220, "Sniff 2 (2002-01-03)" },
380
{ 269, "Sniff 3 (2002-02-22)" },
381
{ 270, "Sniff 4 (2002-02-26)" },
382
{ 284, "Sniff 5 (2002-03-12)" },
383
{ 292, "Sniff 6 (2002-03-20)" },
384
{ 305, "Sniff 7 (2002-04-12)" },
385
{ 306, "Sniff 8 (2002-04-12)" },
386
{ 343, "Sniff 9 (2002-05-02)" },
387
{ 346, "Sniff 10 (2002-05-03)" },
388
{ 355, "Sniff 11 (2002-05-16)" },
389
{ 256, "Sniff 11 (2002-05-16)" },
390
{ 390, "Sniff 12 (2002-06-26)" },
391
{ 450, "Sniff 13 (2002-08-16)" },
392
{ 451, "Sniff 13 (2002-08-16)" },
393
{ 533, "Sniff 14 (2002-10-11)" },
394
{ 580, "Sniff 15 (2002-11-14)" },
395
{ 623, "Sniff 16 (2002-12-12)" },
396
{ 678, "Sniff 17 (2003-01-29)" },
397
{ 847, "Sniff 18 (2003-04-17)" },
398
{ 876, "Sniff 19 (2003-06-10)" },
399
{ 997, "Sniff 22 (2003-09-05)" },
400
{ 1027, "Sniff 23 (2003-10-03)" },
401
{ 1029, "Sniff 24 (2003-10-03)" },
402
{ 1112, "Sniff 25 (2003-12-03)" },
403
{ 1113, "Sniff 25 (2003-12-03)" },
404
{ 1133, "Sniff 26 (2003-12-18)" },
405
{ 1134, "Sniff 26 (2003-12-18)" },
406
{ 1223, "Sniff 27 (2004-03-08)" },
407
{ 1224, "Sniff 27 (2004-03-08)" },
408
{ 1319, "Sniff 31 (2004-04-22)" },
409
{ 1320, "Sniff 31 (2004-04-22)" },
410
{ 1427, "Sniff 34 (2004-06-16)" },
411
{ 1508, "Sniff 35 (2004-07-19)" },
412
{ 1509, "Sniff 35 (2004-07-19)" },
413
{ 1587, "Sniff 36 (2004-08-18)" },
414
{ 1588, "Sniff 36 (2004-08-18)" },
415
{ 1641, "Sniff 37 (2004-09-16)" },
416
{ 1642, "Sniff 37 (2004-09-16)" },
417
{ 1699, "Sniff 38 (2004-10-07)" },
418
{ 1700, "Sniff 38 (2004-10-07)" },
419
{ 1752, "Sniff 39 (2004-11-02)" },
420
{ 1753, "Sniff 39 (2004-11-02)" },
421
{ 1759, "Sniff 40 (2004-11-03)" },
422
{ 1760, "Sniff 40 (2004-11-03)" },
423
{ 1761, "Sniff 40 (2004-11-03)" },
424
{ 2009, "Sniff 41 (2005-04-06)" },
425
{ 2010, "Sniff 41 (2005-04-06)" },
426
{ 2011, "Sniff 41 (2005-04-06)" },
427
{ 2016, "Sniff 42 (2005-04-11)" },
428
{ 2017, "Sniff 42 (2005-04-11)" },
429
{ 2018, "Sniff 42 (2005-04-11)" },
430
{ 2023, "Sniff 43 (2005-04-14)" },
431
{ 2024, "Sniff 43 (2005-04-14)" },
432
{ 2025, "Sniff 43 (2005-04-14)" },
433
{ 2032, "Sniff 44 (2005-04-18)" },
434
{ 2033, "Sniff 44 (2005-04-18)" },
435
{ 2034, "Sniff 44 (2005-04-18)" },
436
{ 2288, "Sniff 45 (2005-07-08)" },
437
{ 2289, "Sniff 45 (2005-07-08)" },
438
{ 2290, "Sniff 45 (2005-07-08)" },
439
{ 2388, "Sniff 46 (2005-08-17)" },
440
{ 2389, "Sniff 46 (2005-08-17)" },
441
{ 2390, "Sniff 46 (2005-08-17)" },
442
{ 2869, "Sniff 47 (2006-02-15)" },
443
{ 2870, "Sniff 47 (2006-02-15)" },
444
{ 2871, "Sniff 47 (2006-02-15)" },
445
{ 3214, "Sniff 48 (2006-05-16)" },
446
{ 3215, "Sniff 48 (2006-05-16)" },
447
{ 3216, "Sniff 48 (2006-05-16)" },
448
{ 3356, "Sniff 49 (2006-07-17)" },
449
{ 3529, "Sniff 50 (2006-09-21)" },
450
{ 3546, "Sniff 51 (2006-09-29)" },
451
{ 3683, "Sniff 52 (2006-11-03)" },
452
{ 0, }
453
};
454
455
char *csr_builddeftostr(uint16_t def)
456
{
457
switch (def) {
458
case 0x0000:
459
return "NONE";
460
case 0x0001:
461
return "CHIP_BASE_BC01";
462
case 0x0002:
463
return "CHIP_BASE_BC02";
464
case 0x0003:
465
return "CHIP_BC01B";
466
case 0x0004:
467
return "CHIP_BC02_EXTERNAL";
468
case 0x0005:
469
return "BUILD_HCI";
470
case 0x0006:
471
return "BUILD_RFCOMM";
472
case 0x0007:
473
return "BT_VER_1_1";
474
case 0x0008:
475
return "TRANSPORT_ALL";
476
case 0x0009:
477
return "TRANSPORT_BCSP";
478
case 0x000a:
479
return "TRANSPORT_H4";
480
case 0x000b:
481
return "TRANSPORT_USB";
482
case 0x000c:
483
return "MAX_CRYPT_KEY_LEN_56";
484
case 0x000d:
485
return "MAX_CRYPT_KEY_LEN_128";
486
case 0x000e:
487
return "TRANSPORT_USER";
488
case 0x000f:
489
return "CHIP_BC02_KATO";
490
case 0x0010:
491
return "TRANSPORT_NONE";
492
case 0x0012:
493
return "REQUIRE_8MBIT";
494
case 0x0013:
495
return "RADIOTEST";
496
case 0x0014:
497
return "RADIOTEST_LITE";
498
case 0x0015:
499
return "INSTALL_FLASH";
500
case 0x0016:
501
return "INSTALL_EEPROM";
502
case 0x0017:
503
return "INSTALL_COMBO_DOT11";
504
case 0x0018:
505
return "LOWPOWER_TX";
506
case 0x0019:
507
return "TRANSPORT_TWUTL";
508
case 0x001a:
509
return "COMPILER_GCC";
510
case 0x001b:
511
return "CHIP_BC02_CLOUSEAU";
512
case 0x001c:
513
return "CHIP_BC02_TOULOUSE";
514
case 0x001d:
515
return "CHIP_BASE_BC3";
516
case 0x001e:
517
return "CHIP_BC3_NICKNACK";
518
case 0x001f:
519
return "CHIP_BC3_KALIMBA";
520
case 0x0020:
521
return "INSTALL_HCI_MODULE";
522
case 0x0021:
523
return "INSTALL_L2CAP_MODULE";
524
case 0x0022:
525
return "INSTALL_DM_MODULE";
526
case 0x0023:
527
return "INSTALL_SDP_MODULE";
528
case 0x0024:
529
return "INSTALL_RFCOMM_MODULE";
530
case 0x0025:
531
return "INSTALL_HIDIO_MODULE";
532
case 0x0026:
533
return "INSTALL_PAN_MODULE";
534
case 0x0027:
535
return "INSTALL_IPV4_MODULE";
536
case 0x0028:
537
return "INSTALL_IPV6_MODULE";
538
case 0x0029:
539
return "INSTALL_TCP_MODULE";
540
case 0x002a:
541
return "BT_VER_1_2";
542
case 0x002b:
543
return "INSTALL_UDP_MODULE";
544
case 0x002c:
545
return "REQUIRE_0_WAIT_STATES";
546
case 0x002d:
547
return "CHIP_BC3_PADDYWACK";
548
case 0x002e:
549
return "CHIP_BC4_COYOTE";
550
case 0x002f:
551
return "CHIP_BC4_ODDJOB";
552
case 0x0030:
553
return "TRANSPORT_H4DS";
554
case 0x0031:
555
return "CHIP_BASE_BC4";
556
default:
557
return "UNKNOWN";
558
}
559
}
560
561
char *csr_buildidtostr(uint16_t id)
562
{
563
static char str[12];
564
int i;
565
566
for (i = 0; csr_map[i].id; i++)
567
if (csr_map[i].id == id)
568
return csr_map[i].str;
569
570
snprintf(str, 11, "Build %d", id);
571
return str;
572
}
573
574
char *csr_chipvertostr(uint16_t ver, uint16_t rev)
575
{
576
switch (ver) {
577
case 0x00:
578
return "BlueCore01a";
579
case 0x01:
580
switch (rev) {
581
case 0x64:
582
return "BlueCore01b (ES)";
583
case 0x65:
584
default:
585
return "BlueCore01b";
586
}
587
case 0x02:
588
switch (rev) {
589
case 0x89:
590
return "BlueCore02-External (ES2)";
591
case 0x8a:
592
return "BlueCore02-External";
593
case 0x28:
594
return "BlueCore02-ROM/Audio/Flash";
595
default:
596
return "BlueCore02";
597
}
598
case 0x03:
599
switch (rev) {
600
case 0x43:
601
return "BlueCore3-MM";
602
case 0x15:
603
return "BlueCore3-ROM";
604
case 0xe2:
605
return "BlueCore3-Flash";
606
case 0x26:
607
return "BlueCore4-External";
608
case 0x30:
609
return "BlueCore4-ROM";
610
default:
611
return "BlueCore3 or BlueCore4";
612
}
613
default:
614
return "Unknown";
615
}
616
}
617
618
char *csr_pskeytostr(uint16_t pskey)
619
{
620
switch (pskey) {
621
case CSR_PSKEY_BDADDR:
622
return "Bluetooth address";
623
case CSR_PSKEY_COUNTRYCODE:
624
return "Country code";
625
case CSR_PSKEY_CLASSOFDEVICE:
626
return "Class of device";
627
case CSR_PSKEY_DEVICE_DRIFT:
628
return "Device drift";
629
case CSR_PSKEY_DEVICE_JITTER:
630
return "Device jitter";
631
case CSR_PSKEY_MAX_ACLS:
632
return "Maximum ACL links";
633
case CSR_PSKEY_MAX_SCOS:
634
return "Maximum SCO links";
635
case CSR_PSKEY_MAX_REMOTE_MASTERS:
636
return "Maximum remote masters";
637
case CSR_PSKEY_ENABLE_MASTERY_WITH_SLAVERY:
638
return "Support master and slave roles simultaneously";
639
case CSR_PSKEY_H_HC_FC_MAX_ACL_PKT_LEN:
640
return "Maximum HCI ACL packet length";
641
case CSR_PSKEY_H_HC_FC_MAX_SCO_PKT_LEN:
642
return "Maximum HCI SCO packet length";
643
case CSR_PSKEY_H_HC_FC_MAX_ACL_PKTS:
644
return "Maximum number of HCI ACL packets";
645
case CSR_PSKEY_H_HC_FC_MAX_SCO_PKTS:
646
return "Maximum number of HCI SCO packets";
647
case CSR_PSKEY_LC_FC_BUFFER_LOW_WATER_MARK:
648
return "Flow control low water mark";
649
case CSR_PSKEY_LC_MAX_TX_POWER:
650
return "Maximum transmit power";
651
case CSR_PSKEY_TX_GAIN_RAMP:
652
return "Transmit gain ramp rate";
653
case CSR_PSKEY_LC_POWER_TABLE:
654
return "Radio power table";
655
case CSR_PSKEY_LC_PEER_POWER_PERIOD:
656
return "Peer transmit power control interval";
657
case CSR_PSKEY_LC_FC_POOLS_LOW_WATER_MARK:
658
return "Flow control pool low water mark";
659
case CSR_PSKEY_LC_DEFAULT_TX_POWER:
660
return "Default transmit power";
661
case CSR_PSKEY_LC_RSSI_GOLDEN_RANGE:
662
return "RSSI at bottom of golden receive range";
663
case CSR_PSKEY_LC_COMBO_DISABLE_PIO_MASK:
664
return "Combo: PIO lines and logic to disable transmit";
665
case CSR_PSKEY_LC_COMBO_PRIORITY_PIO_MASK:
666
return "Combo: priority activity PIO lines and logic";
667
case CSR_PSKEY_LC_COMBO_DOT11_CHANNEL_PIO_BASE:
668
return "Combo: 802.11b channel number base PIO line";
669
case CSR_PSKEY_LC_COMBO_DOT11_BLOCK_CHANNELS:
670
return "Combo: channels to block either side of 802.11b";
671
case CSR_PSKEY_LC_MAX_TX_POWER_NO_RSSI:
672
return "Maximum transmit power when peer has no RSSI";
673
case CSR_PSKEY_LC_CONNECTION_RX_WINDOW:
674
return "Receive window size during connections";
675
case CSR_PSKEY_LC_COMBO_DOT11_TX_PROTECTION_MODE:
676
return "Combo: which TX packets shall we protect";
677
case CSR_PSKEY_LC_ENHANCED_POWER_TABLE:
678
return "Radio power table";
679
case CSR_PSKEY_LC_WIDEBAND_RSSI_CONFIG:
680
return "RSSI configuration for use with wideband RSSI";
681
case CSR_PSKEY_LC_COMBO_DOT11_PRIORITY_LEAD:
682
return "Combo: How much notice will we give the Combo Card";
683
case CSR_PSKEY_BT_CLOCK_INIT:
684
return "Initial value of Bluetooth clock";
685
case CSR_PSKEY_TX_MR_MOD_DELAY:
686
return "TX Mod delay";
687
case CSR_PSKEY_RX_MR_SYNC_TIMING:
688
return "RX MR Sync Timing";
689
case CSR_PSKEY_RX_MR_SYNC_CONFIG:
690
return "RX MR Sync Configuration";
691
case CSR_PSKEY_LC_LOST_SYNC_SLOTS:
692
return "Time in ms for lost sync in low power modes";
693
case CSR_PSKEY_RX_MR_SAMP_CONFIG:
694
return "RX MR Sync Configuration";
695
case CSR_PSKEY_AGC_HYST_LEVELS:
696
return "AGC hysteresis levels";
697
case CSR_PSKEY_RX_LEVEL_LOW_SIGNAL:
698
return "ANA_RX_LVL at low signal strengths";
699
case CSR_PSKEY_AGC_IQ_LVL_VALUES:
700
return "ANA_IQ_LVL values for AGC algorithmn";
701
case CSR_PSKEY_MR_FTRIM_OFFSET_12DB:
702
return "ANA_RX_FTRIM offset when using 12 dB IF atten ";
703
case CSR_PSKEY_MR_FTRIM_OFFSET_6DB:
704
return "ANA_RX_FTRIM offset when using 6 dB IF atten ";
705
case CSR_PSKEY_NO_CAL_ON_BOOT:
706
return "Do not calibrate radio on boot";
707
case CSR_PSKEY_RSSI_HI_TARGET:
708
return "RSSI high target";
709
case CSR_PSKEY_PREFERRED_MIN_ATTENUATION:
710
return "Preferred minimum attenuator setting";
711
case CSR_PSKEY_LC_COMBO_DOT11_PRIORITY_OVERRIDE:
712
return "Combo: Treat all packets as high priority";
713
case CSR_PSKEY_LC_MULTISLOT_HOLDOFF:
714
return "Time till single slot packets are used for resync";
715
case CSR_PSKEY_FREE_KEY_PIGEON_HOLE:
716
return "Link key store bitfield";
717
case CSR_PSKEY_LINK_KEY_BD_ADDR0:
718
return "Bluetooth address + link key 0";
719
case CSR_PSKEY_LINK_KEY_BD_ADDR1:
720
return "Bluetooth address + link key 1";
721
case CSR_PSKEY_LINK_KEY_BD_ADDR2:
722
return "Bluetooth address + link key 2";
723
case CSR_PSKEY_LINK_KEY_BD_ADDR3:
724
return "Bluetooth address + link key 3";
725
case CSR_PSKEY_LINK_KEY_BD_ADDR4:
726
return "Bluetooth address + link key 4";
727
case CSR_PSKEY_LINK_KEY_BD_ADDR5:
728
return "Bluetooth address + link key 5";
729
case CSR_PSKEY_LINK_KEY_BD_ADDR6:
730
return "Bluetooth address + link key 6";
731
case CSR_PSKEY_LINK_KEY_BD_ADDR7:
732
return "Bluetooth address + link key 7";
733
case CSR_PSKEY_LINK_KEY_BD_ADDR8:
734
return "Bluetooth address + link key 8";
735
case CSR_PSKEY_LINK_KEY_BD_ADDR9:
736
return "Bluetooth address + link key 9";
737
case CSR_PSKEY_LINK_KEY_BD_ADDR10:
738
return "Bluetooth address + link key 10";
739
case CSR_PSKEY_LINK_KEY_BD_ADDR11:
740
return "Bluetooth address + link key 11";
741
case CSR_PSKEY_LINK_KEY_BD_ADDR12:
742
return "Bluetooth address + link key 12";
743
case CSR_PSKEY_LINK_KEY_BD_ADDR13:
744
return "Bluetooth address + link key 13";
745
case CSR_PSKEY_LINK_KEY_BD_ADDR14:
746
return "Bluetooth address + link key 14";
747
case CSR_PSKEY_LINK_KEY_BD_ADDR15:
748
return "Bluetooth address + link key 15";
749
case CSR_PSKEY_ENC_KEY_LMIN:
750
return "Minimum encryption key length";
751
case CSR_PSKEY_ENC_KEY_LMAX:
752
return "Maximum encryption key length";
753
case CSR_PSKEY_LOCAL_SUPPORTED_FEATURES:
754
return "Local supported features block";
755
case CSR_PSKEY_LM_USE_UNIT_KEY:
756
return "Allow use of unit key for authentication?";
757
case CSR_PSKEY_HCI_NOP_DISABLE:
758
return "Disable the HCI Command_Status event on boot";
759
case CSR_PSKEY_LM_MAX_EVENT_FILTERS:
760
return "Maximum number of event filters";
761
case CSR_PSKEY_LM_USE_ENC_MODE_BROADCAST:
762
return "Allow LM to use enc_mode=2";
763
case CSR_PSKEY_LM_TEST_SEND_ACCEPTED_TWICE:
764
return "LM sends two LMP_accepted messages in test mode";
765
case CSR_PSKEY_LM_MAX_PAGE_HOLD_TIME:
766
return "Maximum time we hold a device around page";
767
case CSR_PSKEY_AFH_ADAPTATION_RESPONSE_TIME:
768
return "LM period for AFH adaption";
769
case CSR_PSKEY_AFH_OPTIONS:
770
return "Options to configure AFH";
771
case CSR_PSKEY_AFH_RSSI_RUN_PERIOD:
772
return "AFH RSSI reading period";
773
case CSR_PSKEY_AFH_REENABLE_CHANNEL_TIME:
774
return "AFH good channel adding time";
775
case CSR_PSKEY_NO_DROP_ON_ACR_MS_FAIL:
776
return "Complete link if acr barge-in role switch refused";
777
case CSR_PSKEY_MAX_PRIVATE_KEYS:
778
return "Max private link keys stored";
779
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR0:
780
return "Bluetooth address + link key 0";
781
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR1:
782
return "Bluetooth address + link key 1";
783
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR2:
784
return "Bluetooth address + link key 2";
785
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR3:
786
return "Bluetooth address + link key 3";
787
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR4:
788
return "Bluetooth address + link key 4";
789
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR5:
790
return "Bluetooth address + link key 5";
791
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR6:
792
return "Bluetooth address + link key 6";
793
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR7:
794
return "Bluetooth address + link key 7";
795
case CSR_PSKEY_LOCAL_SUPPORTED_COMMANDS:
796
return "Local supported commands";
797
case CSR_PSKEY_LM_MAX_ABSENCE_INDEX:
798
return "Maximum absence index allowed";
799
case CSR_PSKEY_DEVICE_NAME:
800
return "Local device's \"user friendly\" name";
801
case CSR_PSKEY_AFH_RSSI_THRESHOLD:
802
return "AFH RSSI threshold";
803
case CSR_PSKEY_LM_CASUAL_SCAN_INTERVAL:
804
return "Scan interval in slots for casual scanning";
805
case CSR_PSKEY_AFH_MIN_MAP_CHANGE:
806
return "The minimum amount to change an AFH map by";
807
case CSR_PSKEY_AFH_RSSI_LP_RUN_PERIOD:
808
return "AFH RSSI reading period when in low power mode";
809
case CSR_PSKEY_HCI_LMP_LOCAL_VERSION:
810
return "The HCI and LMP version reported locally";
811
case CSR_PSKEY_LMP_REMOTE_VERSION:
812
return "The LMP version reported remotely";
813
case CSR_PSKEY_HOLD_ERROR_MESSAGE_NUMBER:
814
return "Maximum number of queued HCI Hardware Error Events";
815
case CSR_PSKEY_DFU_ATTRIBUTES:
816
return "DFU attributes";
817
case CSR_PSKEY_DFU_DETACH_TO:
818
return "DFU detach timeout";
819
case CSR_PSKEY_DFU_TRANSFER_SIZE:
820
return "DFU transfer size";
821
case CSR_PSKEY_DFU_ENABLE:
822
return "DFU enable";
823
case CSR_PSKEY_DFU_LIN_REG_ENABLE:
824
return "Linear Regulator enabled at boot in DFU mode";
825
case CSR_PSKEY_DFUENC_VMAPP_PK_MODULUS_MSB:
826
return "DFU encryption VM application public key MSB";
827
case CSR_PSKEY_DFUENC_VMAPP_PK_MODULUS_LSB:
828
return "DFU encryption VM application public key LSB";
829
case CSR_PSKEY_DFUENC_VMAPP_PK_M_DASH:
830
return "DFU encryption VM application M dash";
831
case CSR_PSKEY_DFUENC_VMAPP_PK_R2N_MSB:
832
return "DFU encryption VM application public key R2N MSB";
833
case CSR_PSKEY_DFUENC_VMAPP_PK_R2N_LSB:
834
return "DFU encryption VM application public key R2N LSB";
835
case CSR_PSKEY_BCSP_LM_PS_BLOCK:
836
return "BCSP link establishment block";
837
case CSR_PSKEY_HOSTIO_FC_PS_BLOCK:
838
return "HCI flow control block";
839
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO0:
840
return "Host transport channel 0 settings (BCSP ACK)";
841
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO1:
842
return "Host transport channel 1 settings (BCSP-LE)";
843
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO2:
844
return "Host transport channel 2 settings (BCCMD)";
845
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO3:
846
return "Host transport channel 3 settings (HQ)";
847
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO4:
848
return "Host transport channel 4 settings (DM)";
849
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO5:
850
return "Host transport channel 5 settings (HCI CMD/EVT)";
851
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO6:
852
return "Host transport channel 6 settings (HCI ACL)";
853
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO7:
854
return "Host transport channel 7 settings (HCI SCO)";
855
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO8:
856
return "Host transport channel 8 settings (L2CAP)";
857
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO9:
858
return "Host transport channel 9 settings (RFCOMM)";
859
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO10:
860
return "Host transport channel 10 settings (SDP)";
861
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO11:
862
return "Host transport channel 11 settings (TEST)";
863
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO12:
864
return "Host transport channel 12 settings (DFU)";
865
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO13:
866
return "Host transport channel 13 settings (VM)";
867
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO14:
868
return "Host transport channel 14 settings";
869
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO15:
870
return "Host transport channel 15 settings";
871
case CSR_PSKEY_HOSTIO_UART_RESET_TIMEOUT:
872
return "UART reset counter timeout";
873
case CSR_PSKEY_HOSTIO_USE_HCI_EXTN:
874
return "Use hci_extn to route non-hci channels";
875
case CSR_PSKEY_HOSTIO_USE_HCI_EXTN_CCFC:
876
return "Use command-complete flow control for hci_extn";
877
case CSR_PSKEY_HOSTIO_HCI_EXTN_PAYLOAD_SIZE:
878
return "Maximum hci_extn payload size";
879
case CSR_PSKEY_BCSP_LM_CNF_CNT_LIMIT:
880
return "BCSP link establishment conf message count";
881
case CSR_PSKEY_HOSTIO_MAP_SCO_PCM:
882
return "Map SCO over PCM";
883
case CSR_PSKEY_HOSTIO_AWKWARD_PCM_SYNC:
884
return "PCM interface synchronisation is difficult";
885
case CSR_PSKEY_HOSTIO_BREAK_POLL_PERIOD:
886
return "Break poll period (microseconds)";
887
case CSR_PSKEY_HOSTIO_MIN_UART_HCI_SCO_SIZE:
888
return "Minimum SCO packet size sent to host over UART HCI";
889
case CSR_PSKEY_HOSTIO_MAP_SCO_CODEC:
890
return "Map SCO over the built-in codec";
891
case CSR_PSKEY_PCM_CVSD_TX_HI_FREQ_BOOST:
892
return "High frequency boost for PCM when transmitting CVSD";
893
case CSR_PSKEY_PCM_CVSD_RX_HI_FREQ_BOOST:
894
return "High frequency boost for PCM when receiving CVSD";
895
case CSR_PSKEY_PCM_CONFIG32:
896
return "PCM interface settings bitfields";
897
case CSR_PSKEY_USE_OLD_BCSP_LE:
898
return "Use the old version of BCSP link establishment";
899
case CSR_PSKEY_PCM_CVSD_USE_NEW_FILTER:
900
return "CVSD uses the new filter if available";
901
case CSR_PSKEY_PCM_FORMAT:
902
return "PCM data format";
903
case CSR_PSKEY_CODEC_OUT_GAIN:
904
return "Audio output gain when using built-in codec";
905
case CSR_PSKEY_CODEC_IN_GAIN:
906
return "Audio input gain when using built-in codec";
907
case CSR_PSKEY_CODEC_PIO:
908
return "PIO to enable when built-in codec is enabled";
909
case CSR_PSKEY_PCM_LOW_JITTER_CONFIG:
910
return "PCM interface settings for low jitter master mode";
911
case CSR_PSKEY_HOSTIO_SCO_PCM_THRESHOLDS:
912
return "Thresholds for SCO PCM buffers";
913
case CSR_PSKEY_HOSTIO_SCO_HCI_THRESHOLDS:
914
return "Thresholds for SCO HCI buffers";
915
case CSR_PSKEY_HOSTIO_MAP_SCO_PCM_SLOT:
916
return "Route SCO data to specified slot in pcm frame";
917
case CSR_PSKEY_UART_BAUDRATE:
918
return "UART Baud rate";
919
case CSR_PSKEY_UART_CONFIG_BCSP:
920
return "UART configuration when using BCSP";
921
case CSR_PSKEY_UART_CONFIG_H4:
922
return "UART configuration when using H4";
923
case CSR_PSKEY_UART_CONFIG_H5:
924
return "UART configuration when using H5";
925
case CSR_PSKEY_UART_CONFIG_USR:
926
return "UART configuration when under VM control";
927
case CSR_PSKEY_UART_TX_CRCS:
928
return "Use CRCs for BCSP or H5";
929
case CSR_PSKEY_UART_ACK_TIMEOUT:
930
return "Acknowledgement timeout for BCSP and H5";
931
case CSR_PSKEY_UART_TX_MAX_ATTEMPTS:
932
return "Max times to send reliable BCSP or H5 message";
933
case CSR_PSKEY_UART_TX_WINDOW_SIZE:
934
return "Transmit window size for BCSP and H5";
935
case CSR_PSKEY_UART_HOST_WAKE:
936
return "UART host wakeup";
937
case CSR_PSKEY_HOSTIO_THROTTLE_TIMEOUT:
938
return "Host interface performance control.";
939
case CSR_PSKEY_PCM_ALWAYS_ENABLE:
940
return "PCM port is always enable when chip is running";
941
case CSR_PSKEY_UART_HOST_WAKE_SIGNAL:
942
return "Signal to use for uart host wakeup protocol";
943
case CSR_PSKEY_UART_CONFIG_H4DS:
944
return "UART configuration when using H4DS";
945
case CSR_PSKEY_H4DS_WAKE_DURATION:
946
return "How long to spend waking the host when using H4DS";
947
case CSR_PSKEY_H4DS_MAXWU:
948
return "Maximum number of H4DS Wake-Up messages to send";
949
case CSR_PSKEY_H4DS_LE_TIMER_PERIOD:
950
return "H4DS Link Establishment Tsync and Tconf period";
951
case CSR_PSKEY_H4DS_TWU_TIMER_PERIOD:
952
return "H4DS Twu timer period";
953
case CSR_PSKEY_H4DS_UART_IDLE_TIMER_PERIOD:
954
return "H4DS Tuart_idle timer period";
955
case CSR_PSKEY_ANA_FTRIM:
956
return "Crystal frequency trim";
957
case CSR_PSKEY_WD_TIMEOUT:
958
return "Watchdog timeout (microseconds)";
959
case CSR_PSKEY_WD_PERIOD:
960
return "Watchdog period (microseconds)";
961
case CSR_PSKEY_HOST_INTERFACE:
962
return "Host interface";
963
case CSR_PSKEY_HQ_HOST_TIMEOUT:
964
return "HQ host command timeout";
965
case CSR_PSKEY_HQ_ACTIVE:
966
return "Enable host query task?";
967
case CSR_PSKEY_BCCMD_SECURITY_ACTIVE:
968
return "Enable configuration security";
969
case CSR_PSKEY_ANA_FREQ:
970
return "Crystal frequency";
971
case CSR_PSKEY_PIO_PROTECT_MASK:
972
return "Access to PIO pins";
973
case CSR_PSKEY_PMALLOC_SIZES:
974
return "pmalloc sizes array";
975
case CSR_PSKEY_UART_BAUD_RATE:
976
return "UART Baud rate (pre 18)";
977
case CSR_PSKEY_UART_CONFIG:
978
return "UART configuration bitfield";
979
case CSR_PSKEY_STUB:
980
return "Stub";
981
case CSR_PSKEY_TXRX_PIO_CONTROL:
982
return "TX and RX PIO control";
983
case CSR_PSKEY_ANA_RX_LEVEL:
984
return "ANA_RX_LVL register initial value";
985
case CSR_PSKEY_ANA_RX_FTRIM:
986
return "ANA_RX_FTRIM register initial value";
987
case CSR_PSKEY_PSBC_DATA_VERSION:
988
return "Persistent store version";
989
case CSR_PSKEY_PCM0_ATTENUATION:
990
return "Volume control on PCM channel 0";
991
case CSR_PSKEY_LO_LVL_MAX:
992
return "Maximum value of LO level control register";
993
case CSR_PSKEY_LO_ADC_AMPL_MIN:
994
return "Minimum value of the LO amplitude measured on the ADC";
995
case CSR_PSKEY_LO_ADC_AMPL_MAX:
996
return "Maximum value of the LO amplitude measured on the ADC";
997
case CSR_PSKEY_IQ_TRIM_CHANNEL:
998
return "IQ calibration channel";
999
case CSR_PSKEY_IQ_TRIM_GAIN:
1000
return "IQ calibration gain";
1001
case CSR_PSKEY_IQ_TRIM_ENABLE:
1002
return "IQ calibration enable";
1003
case CSR_PSKEY_TX_OFFSET_HALF_MHZ:
1004
return "Transmit offset";
1005
case CSR_PSKEY_GBL_MISC_ENABLES:
1006
return "Global miscellaneous hardware enables";
1007
case CSR_PSKEY_UART_SLEEP_TIMEOUT:
1008
return "Time in ms to deep sleep if nothing received";
1009
case CSR_PSKEY_DEEP_SLEEP_STATE:
1010
return "Deep sleep state usage";
1011
case CSR_PSKEY_IQ_ENABLE_PHASE_TRIM:
1012
return "IQ phase enable";
1013
case CSR_PSKEY_HCI_HANDLE_FREEZE_PERIOD:
1014
return "Time for which HCI handle is frozen after link removal";
1015
case CSR_PSKEY_MAX_FROZEN_HCI_HANDLES:
1016
return "Maximum number of frozen HCI handles";
1017
case CSR_PSKEY_PAGETABLE_DESTRUCTION_DELAY:
1018
return "Delay from freezing buf handle to deleting page table";
1019
case CSR_PSKEY_IQ_TRIM_PIO_SETTINGS:
1020
return "IQ PIO settings";
1021
case CSR_PSKEY_USE_EXTERNAL_CLOCK:
1022
return "Device uses an external clock";
1023
case CSR_PSKEY_DEEP_SLEEP_WAKE_CTS:
1024
return "Exit deep sleep on CTS line activity";
1025
case CSR_PSKEY_FC_HC2H_FLUSH_DELAY:
1026
return "Delay from disconnect to flushing HC->H FC tokens";
1027
case CSR_PSKEY_RX_HIGHSIDE:
1028
return "Disable the HIGHSIDE bit in ANA_CONFIG";
1029
case CSR_PSKEY_TX_PRE_LVL:
1030
return "TX pre-amplifier level";
1031
case CSR_PSKEY_RX_SINGLE_ENDED:
1032
return "RX single ended";
1033
case CSR_PSKEY_TX_FILTER_CONFIG:
1034
return "TX filter configuration";
1035
case CSR_PSKEY_CLOCK_REQUEST_ENABLE:
1036
return "External clock request enable";
1037
case CSR_PSKEY_RX_MIN_ATTEN:
1038
return "Minimum attenuation allowed for receiver";
1039
case CSR_PSKEY_XTAL_TARGET_AMPLITUDE:
1040
return "Crystal target amplitude";
1041
case CSR_PSKEY_PCM_MIN_CPU_CLOCK:
1042
return "Minimum CPU clock speed with PCM port running";
1043
case CSR_PSKEY_HOST_INTERFACE_PIO_USB:
1044
return "USB host interface selection PIO line";
1045
case CSR_PSKEY_CPU_IDLE_MODE:
1046
return "CPU idle mode when radio is active";
1047
case CSR_PSKEY_DEEP_SLEEP_CLEAR_RTS:
1048
return "Deep sleep clears the UART RTS line";
1049
case CSR_PSKEY_RF_RESONANCE_TRIM:
1050
return "Frequency trim for IQ and LNA resonant circuits";
1051
case CSR_PSKEY_DEEP_SLEEP_PIO_WAKE:
1052
return "PIO line to wake the chip from deep sleep";
1053
case CSR_PSKEY_DRAIN_BORE_TIMERS:
1054
return "Energy consumption measurement settings";
1055
case CSR_PSKEY_DRAIN_TX_POWER_BASE:
1056
return "Energy consumption measurement settings";
1057
case CSR_PSKEY_MODULE_ID:
1058
return "Module serial number";
1059
case CSR_PSKEY_MODULE_DESIGN:
1060
return "Module design ID";
1061
case CSR_PSKEY_MODULE_SECURITY_CODE:
1062
return "Module security code";
1063
case CSR_PSKEY_VM_DISABLE:
1064
return "VM disable";
1065
case CSR_PSKEY_MOD_MANUF0:
1066
return "Module manufactuer data 0";
1067
case CSR_PSKEY_MOD_MANUF1:
1068
return "Module manufactuer data 1";
1069
case CSR_PSKEY_MOD_MANUF2:
1070
return "Module manufactuer data 2";
1071
case CSR_PSKEY_MOD_MANUF3:
1072
return "Module manufactuer data 3";
1073
case CSR_PSKEY_MOD_MANUF4:
1074
return "Module manufactuer data 4";
1075
case CSR_PSKEY_MOD_MANUF5:
1076
return "Module manufactuer data 5";
1077
case CSR_PSKEY_MOD_MANUF6:
1078
return "Module manufactuer data 6";
1079
case CSR_PSKEY_MOD_MANUF7:
1080
return "Module manufactuer data 7";
1081
case CSR_PSKEY_MOD_MANUF8:
1082
return "Module manufactuer data 8";
1083
case CSR_PSKEY_MOD_MANUF9:
1084
return "Module manufactuer data 9";
1085
case CSR_PSKEY_DUT_VM_DISABLE:
1086
return "VM disable when entering radiotest modes";
1087
case CSR_PSKEY_USR0:
1088
return "User configuration data 0";
1089
case CSR_PSKEY_USR1:
1090
return "User configuration data 1";
1091
case CSR_PSKEY_USR2:
1092
return "User configuration data 2";
1093
case CSR_PSKEY_USR3:
1094
return "User configuration data 3";
1095
case CSR_PSKEY_USR4:
1096
return "User configuration data 4";
1097
case CSR_PSKEY_USR5:
1098
return "User configuration data 5";
1099
case CSR_PSKEY_USR6:
1100
return "User configuration data 6";
1101
case CSR_PSKEY_USR7:
1102
return "User configuration data 7";
1103
case CSR_PSKEY_USR8:
1104
return "User configuration data 8";
1105
case CSR_PSKEY_USR9:
1106
return "User configuration data 9";
1107
case CSR_PSKEY_USR10:
1108
return "User configuration data 10";
1109
case CSR_PSKEY_USR11:
1110
return "User configuration data 11";
1111
case CSR_PSKEY_USR12:
1112
return "User configuration data 12";
1113
case CSR_PSKEY_USR13:
1114
return "User configuration data 13";
1115
case CSR_PSKEY_USR14:
1116
return "User configuration data 14";
1117
case CSR_PSKEY_USR15:
1118
return "User configuration data 15";
1119
case CSR_PSKEY_USR16:
1120
return "User configuration data 16";
1121
case CSR_PSKEY_USR17:
1122
return "User configuration data 17";
1123
case CSR_PSKEY_USR18:
1124
return "User configuration data 18";
1125
case CSR_PSKEY_USR19:
1126
return "User configuration data 19";
1127
case CSR_PSKEY_USR20:
1128
return "User configuration data 20";
1129
case CSR_PSKEY_USR21:
1130
return "User configuration data 21";
1131
case CSR_PSKEY_USR22:
1132
return "User configuration data 22";
1133
case CSR_PSKEY_USR23:
1134
return "User configuration data 23";
1135
case CSR_PSKEY_USR24:
1136
return "User configuration data 24";
1137
case CSR_PSKEY_USR25:
1138
return "User configuration data 25";
1139
case CSR_PSKEY_USR26:
1140
return "User configuration data 26";
1141
case CSR_PSKEY_USR27:
1142
return "User configuration data 27";
1143
case CSR_PSKEY_USR28:
1144
return "User configuration data 28";
1145
case CSR_PSKEY_USR29:
1146
return "User configuration data 29";
1147
case CSR_PSKEY_USR30:
1148
return "User configuration data 30";
1149
case CSR_PSKEY_USR31:
1150
return "User configuration data 31";
1151
case CSR_PSKEY_USR32:
1152
return "User configuration data 32";
1153
case CSR_PSKEY_USR33:
1154
return "User configuration data 33";
1155
case CSR_PSKEY_USR34:
1156
return "User configuration data 34";
1157
case CSR_PSKEY_USR35:
1158
return "User configuration data 35";
1159
case CSR_PSKEY_USR36:
1160
return "User configuration data 36";
1161
case CSR_PSKEY_USR37:
1162
return "User configuration data 37";
1163
case CSR_PSKEY_USR38:
1164
return "User configuration data 38";
1165
case CSR_PSKEY_USR39:
1166
return "User configuration data 39";
1167
case CSR_PSKEY_USR40:
1168
return "User configuration data 40";
1169
case CSR_PSKEY_USR41:
1170
return "User configuration data 41";
1171
case CSR_PSKEY_USR42:
1172
return "User configuration data 42";
1173
case CSR_PSKEY_USR43:
1174
return "User configuration data 43";
1175
case CSR_PSKEY_USR44:
1176
return "User configuration data 44";
1177
case CSR_PSKEY_USR45:
1178
return "User configuration data 45";
1179
case CSR_PSKEY_USR46:
1180
return "User configuration data 46";
1181
case CSR_PSKEY_USR47:
1182
return "User configuration data 47";
1183
case CSR_PSKEY_USR48:
1184
return "User configuration data 48";
1185
case CSR_PSKEY_USR49:
1186
return "User configuration data 49";
1187
case CSR_PSKEY_USB_VERSION:
1188
return "USB specification version number";
1189
case CSR_PSKEY_USB_DEVICE_CLASS_CODES:
1190
return "USB device class codes";
1191
case CSR_PSKEY_USB_VENDOR_ID:
1192
return "USB vendor identifier";
1193
case CSR_PSKEY_USB_PRODUCT_ID:
1194
return "USB product identifier";
1195
case CSR_PSKEY_USB_MANUF_STRING:
1196
return "USB manufacturer string";
1197
case CSR_PSKEY_USB_PRODUCT_STRING:
1198
return "USB product string";
1199
case CSR_PSKEY_USB_SERIAL_NUMBER_STRING:
1200
return "USB serial number string";
1201
case CSR_PSKEY_USB_CONFIG_STRING:
1202
return "USB configuration string";
1203
case CSR_PSKEY_USB_ATTRIBUTES:
1204
return "USB attributes bitmap";
1205
case CSR_PSKEY_USB_MAX_POWER:
1206
return "USB device maximum power consumption";
1207
case CSR_PSKEY_USB_BT_IF_CLASS_CODES:
1208
return "USB Bluetooth interface class codes";
1209
case CSR_PSKEY_USB_LANGID:
1210
return "USB language strings supported";
1211
case CSR_PSKEY_USB_DFU_CLASS_CODES:
1212
return "USB DFU class codes block";
1213
case CSR_PSKEY_USB_DFU_PRODUCT_ID:
1214
return "USB DFU product ID";
1215
case CSR_PSKEY_USB_PIO_DETACH:
1216
return "USB detach/attach PIO line";
1217
case CSR_PSKEY_USB_PIO_WAKEUP:
1218
return "USB wakeup PIO line";
1219
case CSR_PSKEY_USB_PIO_PULLUP:
1220
return "USB D+ pullup PIO line";
1221
case CSR_PSKEY_USB_PIO_VBUS:
1222
return "USB VBus detection PIO Line";
1223
case CSR_PSKEY_USB_PIO_WAKE_TIMEOUT:
1224
return "Timeout for assertion of USB PIO wake signal";
1225
case CSR_PSKEY_USB_PIO_RESUME:
1226
return "PIO signal used in place of bus resume";
1227
case CSR_PSKEY_USB_BT_SCO_IF_CLASS_CODES:
1228
return "USB Bluetooth SCO interface class codes";
1229
case CSR_PSKEY_USB_SUSPEND_PIO_LEVEL:
1230
return "USB PIO levels to set when suspended";
1231
case CSR_PSKEY_USB_SUSPEND_PIO_DIR:
1232
return "USB PIO I/O directions to set when suspended";
1233
case CSR_PSKEY_USB_SUSPEND_PIO_MASK:
1234
return "USB PIO lines to be set forcibly in suspend";
1235
case CSR_PSKEY_USB_ENDPOINT_0_MAX_PACKET_SIZE:
1236
return "The maxmimum packet size for USB endpoint 0";
1237
case CSR_PSKEY_USB_CONFIG:
1238
return "USB config params for new chips (>bc2)";
1239
case CSR_PSKEY_RADIOTEST_ATTEN_INIT:
1240
return "Radio test initial attenuator";
1241
case CSR_PSKEY_RADIOTEST_FIRST_TRIM_TIME:
1242
return "IQ first calibration period in test";
1243
case CSR_PSKEY_RADIOTEST_SUBSEQUENT_TRIM_TIME:
1244
return "IQ subsequent calibration period in test";
1245
case CSR_PSKEY_RADIOTEST_LO_LVL_TRIM_ENABLE:
1246
return "LO_LVL calibration enable";
1247
case CSR_PSKEY_RADIOTEST_DISABLE_MODULATION:
1248
return "Disable modulation during radiotest transmissions";
1249
case CSR_PSKEY_RFCOMM_FCON_THRESHOLD:
1250
return "RFCOMM aggregate flow control on threshold";
1251
case CSR_PSKEY_RFCOMM_FCOFF_THRESHOLD:
1252
return "RFCOMM aggregate flow control off threshold";
1253
case CSR_PSKEY_IPV6_STATIC_ADDR:
1254
return "Static IPv6 address";
1255
case CSR_PSKEY_IPV4_STATIC_ADDR:
1256
return "Static IPv4 address";
1257
case CSR_PSKEY_IPV6_STATIC_PREFIX_LEN:
1258
return "Static IPv6 prefix length";
1259
case CSR_PSKEY_IPV6_STATIC_ROUTER_ADDR:
1260
return "Static IPv6 router address";
1261
case CSR_PSKEY_IPV4_STATIC_SUBNET_MASK:
1262
return "Static IPv4 subnet mask";
1263
case CSR_PSKEY_IPV4_STATIC_ROUTER_ADDR:
1264
return "Static IPv4 router address";
1265
case CSR_PSKEY_MDNS_NAME:
1266
return "Multicast DNS name";
1267
case CSR_PSKEY_FIXED_PIN:
1268
return "Fixed PIN";
1269
case CSR_PSKEY_MDNS_PORT:
1270
return "Multicast DNS port";
1271
case CSR_PSKEY_MDNS_TTL:
1272
return "Multicast DNS TTL";
1273
case CSR_PSKEY_MDNS_IPV4_ADDR:
1274
return "Multicast DNS IPv4 address";
1275
case CSR_PSKEY_ARP_CACHE_TIMEOUT:
1276
return "ARP cache timeout";
1277
case CSR_PSKEY_HFP_POWER_TABLE:
1278
return "HFP power table";
1279
case CSR_PSKEY_DRAIN_BORE_TIMER_COUNTERS:
1280
return "Energy consumption estimation timer counters";
1281
case CSR_PSKEY_DRAIN_BORE_COUNTERS:
1282
return "Energy consumption estimation counters";
1283
case CSR_PSKEY_LOOP_FILTER_TRIM:
1284
return "Trim value to optimise loop filter";
1285
case CSR_PSKEY_DRAIN_BORE_CURRENT_PEAK:
1286
return "Energy consumption estimation current peak";
1287
case CSR_PSKEY_VM_E2_CACHE_LIMIT:
1288
return "Maximum RAM for caching EEPROM VM application";
1289
case CSR_PSKEY_FORCE_16MHZ_REF_PIO:
1290
return "PIO line to force 16 MHz reference to be assumed";
1291
case CSR_PSKEY_CDMA_LO_REF_LIMITS:
1292
return "Local oscillator frequency reference limits for CDMA";
1293
case CSR_PSKEY_CDMA_LO_ERROR_LIMITS:
1294
return "Local oscillator frequency error limits for CDMA";
1295
case CSR_PSKEY_CLOCK_STARTUP_DELAY:
1296
return "Clock startup delay in milliseconds";
1297
case CSR_PSKEY_DEEP_SLEEP_CORRECTION_FACTOR:
1298
return "Deep sleep clock correction factor";
1299
case CSR_PSKEY_TEMPERATURE_CALIBRATION:
1300
return "Temperature in deg C for a given internal setting";
1301
case CSR_PSKEY_TEMPERATURE_VS_DELTA_INTERNAL_PA:
1302
return "Temperature for given internal PA adjustment";
1303
case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_PRE_LVL:
1304
return "Temperature for a given TX_PRE_LVL adjustment";
1305
case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB:
1306
return "Temperature for a given TX_BB adjustment";
1307
case CSR_PSKEY_TEMPERATURE_VS_DELTA_ANA_FTRIM:
1308
return "Temperature for given crystal trim adjustment";
1309
case CSR_PSKEY_TEST_DELTA_OFFSET:
1310
return "Frequency offset applied to synthesiser in test mode";
1311
case CSR_PSKEY_RX_DYNAMIC_LVL_OFFSET:
1312
return "Receiver dynamic level offset depending on channel";
1313
case CSR_PSKEY_TEST_FORCE_OFFSET:
1314
return "Force use of exact value in PSKEY_TEST_DELTA_OFFSET";
1315
case CSR_PSKEY_RF_TRAP_BAD_DIVISION_RATIOS:
1316
return "Trap bad division ratios in radio frequency tables";
1317
case CSR_PSKEY_RADIOTEST_CDMA_LO_REF_LIMITS:
1318
return "LO frequency reference limits for CDMA in radiotest";
1319
case CSR_PSKEY_INITIAL_BOOTMODE:
1320
return "Initial device bootmode";
1321
case CSR_PSKEY_ONCHIP_HCI_CLIENT:
1322
return "HCI traffic routed internally";
1323
case CSR_PSKEY_RX_ATTEN_BACKOFF:
1324
return "Receiver attenuation back-off";
1325
case CSR_PSKEY_RX_ATTEN_UPDATE_RATE:
1326
return "Receiver attenuation update rate";
1327
case CSR_PSKEY_SYNTH_TXRX_THRESHOLDS:
1328
return "Local oscillator tuning voltage limits for tx and rx";
1329
case CSR_PSKEY_MIN_WAIT_STATES:
1330
return "Flash wait state indicator";
1331
case CSR_PSKEY_RSSI_CORRECTION:
1332
return "RSSI correction factor.";
1333
case CSR_PSKEY_SCHED_THROTTLE_TIMEOUT:
1334
return "Scheduler performance control.";
1335
case CSR_PSKEY_DEEP_SLEEP_USE_EXTERNAL_CLOCK:
1336
return "Deep sleep uses external 32 kHz clock source";
1337
case CSR_PSKEY_TRIM_RADIO_FILTERS:
1338
return "Trim rx and tx radio filters if true.";
1339
case CSR_PSKEY_TRANSMIT_OFFSET:
1340
return "Transmit offset in units of 62.5 kHz";
1341
case CSR_PSKEY_USB_VM_CONTROL:
1342
return "VM application will supply USB descriptors";
1343
case CSR_PSKEY_MR_ANA_RX_FTRIM:
1344
return "Medium rate value for the ANA_RX_FTRIM register";
1345
case CSR_PSKEY_I2C_CONFIG:
1346
return "I2C configuration";
1347
case CSR_PSKEY_IQ_LVL_RX:
1348
return "IQ demand level for reception";
1349
case CSR_PSKEY_MR_TX_FILTER_CONFIG:
1350
return "TX filter configuration used for enhanced data rate";
1351
case CSR_PSKEY_MR_TX_CONFIG2:
1352
return "TX filter configuration used for enhanced data rate";
1353
case CSR_PSKEY_USB_DONT_RESET_BOOTMODE_ON_HOST_RESET:
1354
return "Don't reset bootmode if USB host resets";
1355
case CSR_PSKEY_LC_USE_THROTTLING:
1356
return "Adjust packet selection on packet error rate";
1357
case CSR_PSKEY_CHARGER_TRIM:
1358
return "Trim value for the current charger";
1359
case CSR_PSKEY_CLOCK_REQUEST_FEATURES:
1360
return "Clock request is tristated if enabled";
1361
case CSR_PSKEY_TRANSMIT_OFFSET_CLASS1:
1362
return "Transmit offset / 62.5 kHz for class 1 radios";
1363
case CSR_PSKEY_TX_AVOID_PA_CLASS1_PIO:
1364
return "PIO line asserted in class1 operation to avoid PA";
1365
case CSR_PSKEY_MR_PIO_CONFIG:
1366
return "PIO line asserted in class1 operation to avoid PA";
1367
case CSR_PSKEY_UART_CONFIG2:
1368
return "The UART Sampling point";
1369
case CSR_PSKEY_CLASS1_IQ_LVL:
1370
return "IQ demand level for class 1 power level";
1371
case CSR_PSKEY_CLASS1_TX_CONFIG2:
1372
return "TX filter configuration used for class 1 tx power";
1373
case CSR_PSKEY_TEMPERATURE_VS_DELTA_INTERNAL_PA_CLASS1:
1374
return "Temperature for given internal PA adjustment";
1375
case CSR_PSKEY_TEMPERATURE_VS_DELTA_EXTERNAL_PA_CLASS1:
1376
return "Temperature for given internal PA adjustment";
1377
case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_PRE_LVL_MR:
1378
return "Temperature adjustment for TX_PRE_LVL in EDR";
1379
case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB_MR_HEADER:
1380
return "Temperature for a given TX_BB in EDR header";
1381
case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB_MR_PAYLOAD:
1382
return "Temperature for a given TX_BB in EDR payload";
1383
case CSR_PSKEY_RX_MR_EQ_TAPS:
1384
return "Adjust receiver configuration for EDR";
1385
case CSR_PSKEY_TX_PRE_LVL_CLASS1:
1386
return "TX pre-amplifier level in class 1 operation";
1387
case CSR_PSKEY_ANALOGUE_ATTENUATOR:
1388
return "TX analogue attenuator setting";
1389
case CSR_PSKEY_MR_RX_FILTER_TRIM:
1390
return "Trim for receiver used in EDR.";
1391
case CSR_PSKEY_MR_RX_FILTER_RESPONSE:
1392
return "Filter response for receiver used in EDR.";
1393
case CSR_PSKEY_PIO_WAKEUP_STATE:
1394
return "PIO deep sleep wake up state ";
1395
case CSR_PSKEY_MR_TX_IF_ATTEN_OFF_TEMP:
1396
return "TX IF atten off temperature when using EDR.";
1397
case CSR_PSKEY_LO_DIV_LATCH_BYPASS:
1398
return "Bypass latch for LO dividers";
1399
case CSR_PSKEY_LO_VCO_STANDBY:
1400
return "Use standby mode for the LO VCO";
1401
case CSR_PSKEY_SLOW_CLOCK_FILTER_SHIFT:
1402
return "Slow clock sampling filter constant";
1403
case CSR_PSKEY_SLOW_CLOCK_FILTER_DIVIDER:
1404
return "Slow clock filter fractional threshold";
1405
case CSR_PSKEY_USB_ATTRIBUTES_POWER:
1406
return "USB self powered";
1407
case CSR_PSKEY_USB_ATTRIBUTES_WAKEUP:
1408
return "USB responds to wake-up";
1409
case CSR_PSKEY_DFU_ATTRIBUTES_MANIFESTATION_TOLERANT:
1410
return "DFU manifestation tolerant";
1411
case CSR_PSKEY_DFU_ATTRIBUTES_CAN_UPLOAD:
1412
return "DFU can upload";
1413
case CSR_PSKEY_DFU_ATTRIBUTES_CAN_DOWNLOAD:
1414
return "DFU can download";
1415
case CSR_PSKEY_UART_CONFIG_STOP_BITS:
1416
return "UART: stop bits";
1417
case CSR_PSKEY_UART_CONFIG_PARITY_BIT:
1418
return "UART: parity bit";
1419
case CSR_PSKEY_UART_CONFIG_FLOW_CTRL_EN:
1420
return "UART: hardware flow control";
1421
case CSR_PSKEY_UART_CONFIG_RTS_AUTO_EN:
1422
return "UART: RTS auto-enabled";
1423
case CSR_PSKEY_UART_CONFIG_RTS:
1424
return "UART: RTS asserted";
1425
case CSR_PSKEY_UART_CONFIG_TX_ZERO_EN:
1426
return "UART: TX zero enable";
1427
case CSR_PSKEY_UART_CONFIG_NON_BCSP_EN:
1428
return "UART: enable BCSP-specific hardware";
1429
case CSR_PSKEY_UART_CONFIG_RX_RATE_DELAY:
1430
return "UART: RX rate delay";
1431
case CSR_PSKEY_UART_SEQ_TIMEOUT:
1432
return "UART: BCSP ack timeout";
1433
case CSR_PSKEY_UART_SEQ_RETRIES:
1434
return "UART: retry limit in sequencing layer";
1435
case CSR_PSKEY_UART_SEQ_WINSIZE:
1436
return "UART: BCSP transmit window size";
1437
case CSR_PSKEY_UART_USE_CRC_ON_TX:
1438
return "UART: use BCSP CRCs";
1439
case CSR_PSKEY_UART_HOST_INITIAL_STATE:
1440
return "UART: initial host state";
1441
case CSR_PSKEY_UART_HOST_ATTENTION_SPAN:
1442
return "UART: host attention span";
1443
case CSR_PSKEY_UART_HOST_WAKEUP_TIME:
1444
return "UART: host wakeup time";
1445
case CSR_PSKEY_UART_HOST_WAKEUP_WAIT:
1446
return "UART: host wakeup wait";
1447
case CSR_PSKEY_BCSP_LM_MODE:
1448
return "BCSP link establishment mode";
1449
case CSR_PSKEY_BCSP_LM_SYNC_RETRIES:
1450
return "BCSP link establishment sync retries";
1451
case CSR_PSKEY_BCSP_LM_TSHY:
1452
return "BCSP link establishment Tshy";
1453
case CSR_PSKEY_UART_DFU_CONFIG_STOP_BITS:
1454
return "DFU mode UART: stop bits";
1455
case CSR_PSKEY_UART_DFU_CONFIG_PARITY_BIT:
1456
return "DFU mode UART: parity bit";
1457
case CSR_PSKEY_UART_DFU_CONFIG_FLOW_CTRL_EN:
1458
return "DFU mode UART: hardware flow control";
1459
case CSR_PSKEY_UART_DFU_CONFIG_RTS_AUTO_EN:
1460
return "DFU mode UART: RTS auto-enabled";
1461
case CSR_PSKEY_UART_DFU_CONFIG_RTS:
1462
return "DFU mode UART: RTS asserted";
1463
case CSR_PSKEY_UART_DFU_CONFIG_TX_ZERO_EN:
1464
return "DFU mode UART: TX zero enable";
1465
case CSR_PSKEY_UART_DFU_CONFIG_NON_BCSP_EN:
1466
return "DFU mode UART: enable BCSP-specific hardware";
1467
case CSR_PSKEY_UART_DFU_CONFIG_RX_RATE_DELAY:
1468
return "DFU mode UART: RX rate delay";
1469
case CSR_PSKEY_AMUX_AIO0:
1470
return "Multiplexer for AIO 0";
1471
case CSR_PSKEY_AMUX_AIO1:
1472
return "Multiplexer for AIO 1";
1473
case CSR_PSKEY_AMUX_AIO2:
1474
return "Multiplexer for AIO 2";
1475
case CSR_PSKEY_AMUX_AIO3:
1476
return "Multiplexer for AIO 3";
1477
case CSR_PSKEY_LOCAL_NAME_SIMPLIFIED:
1478
return "Local Name (simplified)";
1479
case CSR_PSKEY_EXTENDED_STUB:
1480
return "Extended stub";
1481
default:
1482
return "Unknown";
1483
}
1484
}
1485
1486
char *csr_pskeytoval(uint16_t pskey)
1487
{
1488
switch (pskey) {
1489
case CSR_PSKEY_BDADDR:
1490
return "BDADDR";
1491
case CSR_PSKEY_COUNTRYCODE:
1492
return "COUNTRYCODE";
1493
case CSR_PSKEY_CLASSOFDEVICE:
1494
return "CLASSOFDEVICE";
1495
case CSR_PSKEY_DEVICE_DRIFT:
1496
return "DEVICE_DRIFT";
1497
case CSR_PSKEY_DEVICE_JITTER:
1498
return "DEVICE_JITTER";
1499
case CSR_PSKEY_MAX_ACLS:
1500
return "MAX_ACLS";
1501
case CSR_PSKEY_MAX_SCOS:
1502
return "MAX_SCOS";
1503
case CSR_PSKEY_MAX_REMOTE_MASTERS:
1504
return "MAX_REMOTE_MASTERS";
1505
case CSR_PSKEY_ENABLE_MASTERY_WITH_SLAVERY:
1506
return "ENABLE_MASTERY_WITH_SLAVERY";
1507
case CSR_PSKEY_H_HC_FC_MAX_ACL_PKT_LEN:
1508
return "H_HC_FC_MAX_ACL_PKT_LEN";
1509
case CSR_PSKEY_H_HC_FC_MAX_SCO_PKT_LEN:
1510
return "H_HC_FC_MAX_SCO_PKT_LEN";
1511
case CSR_PSKEY_H_HC_FC_MAX_ACL_PKTS:
1512
return "H_HC_FC_MAX_ACL_PKTS";
1513
case CSR_PSKEY_H_HC_FC_MAX_SCO_PKTS:
1514
return "H_HC_FC_MAX_SCO_PKTS";
1515
case CSR_PSKEY_LC_FC_BUFFER_LOW_WATER_MARK:
1516
return "LC_FC_BUFFER_LOW_WATER_MARK";
1517
case CSR_PSKEY_LC_MAX_TX_POWER:
1518
return "LC_MAX_TX_POWER";
1519
case CSR_PSKEY_TX_GAIN_RAMP:
1520
return "TX_GAIN_RAMP";
1521
case CSR_PSKEY_LC_POWER_TABLE:
1522
return "LC_POWER_TABLE";
1523
case CSR_PSKEY_LC_PEER_POWER_PERIOD:
1524
return "LC_PEER_POWER_PERIOD";
1525
case CSR_PSKEY_LC_FC_POOLS_LOW_WATER_MARK:
1526
return "LC_FC_POOLS_LOW_WATER_MARK";
1527
case CSR_PSKEY_LC_DEFAULT_TX_POWER:
1528
return "LC_DEFAULT_TX_POWER";
1529
case CSR_PSKEY_LC_RSSI_GOLDEN_RANGE:
1530
return "LC_RSSI_GOLDEN_RANGE";
1531
case CSR_PSKEY_LC_COMBO_DISABLE_PIO_MASK:
1532
return "LC_COMBO_DISABLE_PIO_MASK";
1533
case CSR_PSKEY_LC_COMBO_PRIORITY_PIO_MASK:
1534
return "LC_COMBO_PRIORITY_PIO_MASK";
1535
case CSR_PSKEY_LC_COMBO_DOT11_CHANNEL_PIO_BASE:
1536
return "LC_COMBO_DOT11_CHANNEL_PIO_BASE";
1537
case CSR_PSKEY_LC_COMBO_DOT11_BLOCK_CHANNELS:
1538
return "LC_COMBO_DOT11_BLOCK_CHANNELS";
1539
case CSR_PSKEY_LC_MAX_TX_POWER_NO_RSSI:
1540
return "LC_MAX_TX_POWER_NO_RSSI";
1541
case CSR_PSKEY_LC_CONNECTION_RX_WINDOW:
1542
return "LC_CONNECTION_RX_WINDOW";
1543
case CSR_PSKEY_LC_COMBO_DOT11_TX_PROTECTION_MODE:
1544
return "LC_COMBO_DOT11_TX_PROTECTION_MODE";
1545
case CSR_PSKEY_LC_ENHANCED_POWER_TABLE:
1546
return "LC_ENHANCED_POWER_TABLE";
1547
case CSR_PSKEY_LC_WIDEBAND_RSSI_CONFIG:
1548
return "LC_WIDEBAND_RSSI_CONFIG";
1549
case CSR_PSKEY_LC_COMBO_DOT11_PRIORITY_LEAD:
1550
return "LC_COMBO_DOT11_PRIORITY_LEAD";
1551
case CSR_PSKEY_BT_CLOCK_INIT:
1552
return "BT_CLOCK_INIT";
1553
case CSR_PSKEY_TX_MR_MOD_DELAY:
1554
return "TX_MR_MOD_DELAY";
1555
case CSR_PSKEY_RX_MR_SYNC_TIMING:
1556
return "RX_MR_SYNC_TIMING";
1557
case CSR_PSKEY_RX_MR_SYNC_CONFIG:
1558
return "RX_MR_SYNC_CONFIG";
1559
case CSR_PSKEY_LC_LOST_SYNC_SLOTS:
1560
return "LC_LOST_SYNC_SLOTS";
1561
case CSR_PSKEY_RX_MR_SAMP_CONFIG:
1562
return "RX_MR_SAMP_CONFIG";
1563
case CSR_PSKEY_AGC_HYST_LEVELS:
1564
return "AGC_HYST_LEVELS";
1565
case CSR_PSKEY_RX_LEVEL_LOW_SIGNAL:
1566
return "RX_LEVEL_LOW_SIGNAL";
1567
case CSR_PSKEY_AGC_IQ_LVL_VALUES:
1568
return "AGC_IQ_LVL_VALUES";
1569
case CSR_PSKEY_MR_FTRIM_OFFSET_12DB:
1570
return "MR_FTRIM_OFFSET_12DB";
1571
case CSR_PSKEY_MR_FTRIM_OFFSET_6DB:
1572
return "MR_FTRIM_OFFSET_6DB";
1573
case CSR_PSKEY_NO_CAL_ON_BOOT:
1574
return "NO_CAL_ON_BOOT";
1575
case CSR_PSKEY_RSSI_HI_TARGET:
1576
return "RSSI_HI_TARGET";
1577
case CSR_PSKEY_PREFERRED_MIN_ATTENUATION:
1578
return "PREFERRED_MIN_ATTENUATION";
1579
case CSR_PSKEY_LC_COMBO_DOT11_PRIORITY_OVERRIDE:
1580
return "LC_COMBO_DOT11_PRIORITY_OVERRIDE";
1581
case CSR_PSKEY_LC_MULTISLOT_HOLDOFF:
1582
return "LC_MULTISLOT_HOLDOFF";
1583
case CSR_PSKEY_FREE_KEY_PIGEON_HOLE:
1584
return "FREE_KEY_PIGEON_HOLE";
1585
case CSR_PSKEY_LINK_KEY_BD_ADDR0:
1586
return "LINK_KEY_BD_ADDR0";
1587
case CSR_PSKEY_LINK_KEY_BD_ADDR1:
1588
return "LINK_KEY_BD_ADDR1";
1589
case CSR_PSKEY_LINK_KEY_BD_ADDR2:
1590
return "LINK_KEY_BD_ADDR2";
1591
case CSR_PSKEY_LINK_KEY_BD_ADDR3:
1592
return "LINK_KEY_BD_ADDR3";
1593
case CSR_PSKEY_LINK_KEY_BD_ADDR4:
1594
return "LINK_KEY_BD_ADDR4";
1595
case CSR_PSKEY_LINK_KEY_BD_ADDR5:
1596
return "LINK_KEY_BD_ADDR5";
1597
case CSR_PSKEY_LINK_KEY_BD_ADDR6:
1598
return "LINK_KEY_BD_ADDR6";
1599
case CSR_PSKEY_LINK_KEY_BD_ADDR7:
1600
return "LINK_KEY_BD_ADDR7";
1601
case CSR_PSKEY_LINK_KEY_BD_ADDR8:
1602
return "LINK_KEY_BD_ADDR8";
1603
case CSR_PSKEY_LINK_KEY_BD_ADDR9:
1604
return "LINK_KEY_BD_ADDR9";
1605
case CSR_PSKEY_LINK_KEY_BD_ADDR10:
1606
return "LINK_KEY_BD_ADDR10";
1607
case CSR_PSKEY_LINK_KEY_BD_ADDR11:
1608
return "LINK_KEY_BD_ADDR11";
1609
case CSR_PSKEY_LINK_KEY_BD_ADDR12:
1610
return "LINK_KEY_BD_ADDR12";
1611
case CSR_PSKEY_LINK_KEY_BD_ADDR13:
1612
return "LINK_KEY_BD_ADDR13";
1613
case CSR_PSKEY_LINK_KEY_BD_ADDR14:
1614
return "LINK_KEY_BD_ADDR14";
1615
case CSR_PSKEY_LINK_KEY_BD_ADDR15:
1616
return "LINK_KEY_BD_ADDR15";
1617
case CSR_PSKEY_ENC_KEY_LMIN:
1618
return "ENC_KEY_LMIN";
1619
case CSR_PSKEY_ENC_KEY_LMAX:
1620
return "ENC_KEY_LMAX";
1621
case CSR_PSKEY_LOCAL_SUPPORTED_FEATURES:
1622
return "LOCAL_SUPPORTED_FEATURES";
1623
case CSR_PSKEY_LM_USE_UNIT_KEY:
1624
return "LM_USE_UNIT_KEY";
1625
case CSR_PSKEY_HCI_NOP_DISABLE:
1626
return "HCI_NOP_DISABLE";
1627
case CSR_PSKEY_LM_MAX_EVENT_FILTERS:
1628
return "LM_MAX_EVENT_FILTERS";
1629
case CSR_PSKEY_LM_USE_ENC_MODE_BROADCAST:
1630
return "LM_USE_ENC_MODE_BROADCAST";
1631
case CSR_PSKEY_LM_TEST_SEND_ACCEPTED_TWICE:
1632
return "LM_TEST_SEND_ACCEPTED_TWICE";
1633
case CSR_PSKEY_LM_MAX_PAGE_HOLD_TIME:
1634
return "LM_MAX_PAGE_HOLD_TIME";
1635
case CSR_PSKEY_AFH_ADAPTATION_RESPONSE_TIME:
1636
return "AFH_ADAPTATION_RESPONSE_TIME";
1637
case CSR_PSKEY_AFH_OPTIONS:
1638
return "AFH_OPTIONS";
1639
case CSR_PSKEY_AFH_RSSI_RUN_PERIOD:
1640
return "AFH_RSSI_RUN_PERIOD";
1641
case CSR_PSKEY_AFH_REENABLE_CHANNEL_TIME:
1642
return "AFH_REENABLE_CHANNEL_TIME";
1643
case CSR_PSKEY_NO_DROP_ON_ACR_MS_FAIL:
1644
return "NO_DROP_ON_ACR_MS_FAIL";
1645
case CSR_PSKEY_MAX_PRIVATE_KEYS:
1646
return "MAX_PRIVATE_KEYS";
1647
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR0:
1648
return "PRIVATE_LINK_KEY_BD_ADDR0";
1649
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR1:
1650
return "PRIVATE_LINK_KEY_BD_ADDR1";
1651
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR2:
1652
return "PRIVATE_LINK_KEY_BD_ADDR2";
1653
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR3:
1654
return "PRIVATE_LINK_KEY_BD_ADDR3";
1655
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR4:
1656
return "PRIVATE_LINK_KEY_BD_ADDR4";
1657
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR5:
1658
return "PRIVATE_LINK_KEY_BD_ADDR5";
1659
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR6:
1660
return "PRIVATE_LINK_KEY_BD_ADDR6";
1661
case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR7:
1662
return "PRIVATE_LINK_KEY_BD_ADDR7";
1663
case CSR_PSKEY_LOCAL_SUPPORTED_COMMANDS:
1664
return "LOCAL_SUPPORTED_COMMANDS";
1665
case CSR_PSKEY_LM_MAX_ABSENCE_INDEX:
1666
return "LM_MAX_ABSENCE_INDEX";
1667
case CSR_PSKEY_DEVICE_NAME:
1668
return "DEVICE_NAME";
1669
case CSR_PSKEY_AFH_RSSI_THRESHOLD:
1670
return "AFH_RSSI_THRESHOLD";
1671
case CSR_PSKEY_LM_CASUAL_SCAN_INTERVAL:
1672
return "LM_CASUAL_SCAN_INTERVAL";
1673
case CSR_PSKEY_AFH_MIN_MAP_CHANGE:
1674
return "AFH_MIN_MAP_CHANGE";
1675
case CSR_PSKEY_AFH_RSSI_LP_RUN_PERIOD:
1676
return "AFH_RSSI_LP_RUN_PERIOD";
1677
case CSR_PSKEY_HCI_LMP_LOCAL_VERSION:
1678
return "HCI_LMP_LOCAL_VERSION";
1679
case CSR_PSKEY_LMP_REMOTE_VERSION:
1680
return "LMP_REMOTE_VERSION";
1681
case CSR_PSKEY_HOLD_ERROR_MESSAGE_NUMBER:
1682
return "HOLD_ERROR_MESSAGE_NUMBER";
1683
case CSR_PSKEY_DFU_ATTRIBUTES:
1684
return "DFU_ATTRIBUTES";
1685
case CSR_PSKEY_DFU_DETACH_TO:
1686
return "DFU_DETACH_TO";
1687
case CSR_PSKEY_DFU_TRANSFER_SIZE:
1688
return "DFU_TRANSFER_SIZE";
1689
case CSR_PSKEY_DFU_ENABLE:
1690
return "DFU_ENABLE";
1691
case CSR_PSKEY_DFU_LIN_REG_ENABLE:
1692
return "DFU_LIN_REG_ENABLE";
1693
case CSR_PSKEY_DFUENC_VMAPP_PK_MODULUS_MSB:
1694
return "DFUENC_VMAPP_PK_MODULUS_MSB";
1695
case CSR_PSKEY_DFUENC_VMAPP_PK_MODULUS_LSB:
1696
return "DFUENC_VMAPP_PK_MODULUS_LSB";
1697
case CSR_PSKEY_DFUENC_VMAPP_PK_M_DASH:
1698
return "DFUENC_VMAPP_PK_M_DASH";
1699
case CSR_PSKEY_DFUENC_VMAPP_PK_R2N_MSB:
1700
return "DFUENC_VMAPP_PK_R2N_MSB";
1701
case CSR_PSKEY_DFUENC_VMAPP_PK_R2N_LSB:
1702
return "DFUENC_VMAPP_PK_R2N_LSB";
1703
case CSR_PSKEY_BCSP_LM_PS_BLOCK:
1704
return "BCSP_LM_PS_BLOCK";
1705
case CSR_PSKEY_HOSTIO_FC_PS_BLOCK:
1706
return "HOSTIO_FC_PS_BLOCK";
1707
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO0:
1708
return "HOSTIO_PROTOCOL_INFO0";
1709
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO1:
1710
return "HOSTIO_PROTOCOL_INFO1";
1711
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO2:
1712
return "HOSTIO_PROTOCOL_INFO2";
1713
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO3:
1714
return "HOSTIO_PROTOCOL_INFO3";
1715
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO4:
1716
return "HOSTIO_PROTOCOL_INFO4";
1717
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO5:
1718
return "HOSTIO_PROTOCOL_INFO5";
1719
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO6:
1720
return "HOSTIO_PROTOCOL_INFO6";
1721
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO7:
1722
return "HOSTIO_PROTOCOL_INFO7";
1723
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO8:
1724
return "HOSTIO_PROTOCOL_INFO8";
1725
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO9:
1726
return "HOSTIO_PROTOCOL_INFO9";
1727
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO10:
1728
return "HOSTIO_PROTOCOL_INFO10";
1729
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO11:
1730
return "HOSTIO_PROTOCOL_INFO11";
1731
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO12:
1732
return "HOSTIO_PROTOCOL_INFO12";
1733
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO13:
1734
return "HOSTIO_PROTOCOL_INFO13";
1735
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO14:
1736
return "HOSTIO_PROTOCOL_INFO14";
1737
case CSR_PSKEY_HOSTIO_PROTOCOL_INFO15:
1738
return "HOSTIO_PROTOCOL_INFO15";
1739
case CSR_PSKEY_HOSTIO_UART_RESET_TIMEOUT:
1740
return "HOSTIO_UART_RESET_TIMEOUT";
1741
case CSR_PSKEY_HOSTIO_USE_HCI_EXTN:
1742
return "HOSTIO_USE_HCI_EXTN";
1743
case CSR_PSKEY_HOSTIO_USE_HCI_EXTN_CCFC:
1744
return "HOSTIO_USE_HCI_EXTN_CCFC";
1745
case CSR_PSKEY_HOSTIO_HCI_EXTN_PAYLOAD_SIZE:
1746
return "HOSTIO_HCI_EXTN_PAYLOAD_SIZE";
1747
case CSR_PSKEY_BCSP_LM_CNF_CNT_LIMIT:
1748
return "BCSP_LM_CNF_CNT_LIMIT";
1749
case CSR_PSKEY_HOSTIO_MAP_SCO_PCM:
1750
return "HOSTIO_MAP_SCO_PCM";
1751
case CSR_PSKEY_HOSTIO_AWKWARD_PCM_SYNC:
1752
return "HOSTIO_AWKWARD_PCM_SYNC";
1753
case CSR_PSKEY_HOSTIO_BREAK_POLL_PERIOD:
1754
return "HOSTIO_BREAK_POLL_PERIOD";
1755
case CSR_PSKEY_HOSTIO_MIN_UART_HCI_SCO_SIZE:
1756
return "HOSTIO_MIN_UART_HCI_SCO_SIZE";
1757
case CSR_PSKEY_HOSTIO_MAP_SCO_CODEC:
1758
return "HOSTIO_MAP_SCO_CODEC";
1759
case CSR_PSKEY_PCM_CVSD_TX_HI_FREQ_BOOST:
1760
return "PCM_CVSD_TX_HI_FREQ_BOOST";
1761
case CSR_PSKEY_PCM_CVSD_RX_HI_FREQ_BOOST:
1762
return "PCM_CVSD_RX_HI_FREQ_BOOST";
1763
case CSR_PSKEY_PCM_CONFIG32:
1764
return "PCM_CONFIG32";
1765
case CSR_PSKEY_USE_OLD_BCSP_LE:
1766
return "USE_OLD_BCSP_LE";
1767
case CSR_PSKEY_PCM_CVSD_USE_NEW_FILTER:
1768
return "PCM_CVSD_USE_NEW_FILTER";
1769
case CSR_PSKEY_PCM_FORMAT:
1770
return "PCM_FORMAT";
1771
case CSR_PSKEY_CODEC_OUT_GAIN:
1772
return "CODEC_OUT_GAIN";
1773
case CSR_PSKEY_CODEC_IN_GAIN:
1774
return "CODEC_IN_GAIN";
1775
case CSR_PSKEY_CODEC_PIO:
1776
return "CODEC_PIO";
1777
case CSR_PSKEY_PCM_LOW_JITTER_CONFIG:
1778
return "PCM_LOW_JITTER_CONFIG";
1779
case CSR_PSKEY_HOSTIO_SCO_PCM_THRESHOLDS:
1780
return "HOSTIO_SCO_PCM_THRESHOLDS";
1781
case CSR_PSKEY_HOSTIO_SCO_HCI_THRESHOLDS:
1782
return "HOSTIO_SCO_HCI_THRESHOLDS";
1783
case CSR_PSKEY_HOSTIO_MAP_SCO_PCM_SLOT:
1784
return "HOSTIO_MAP_SCO_PCM_SLOT";
1785
case CSR_PSKEY_UART_BAUDRATE:
1786
return "UART_BAUDRATE";
1787
case CSR_PSKEY_UART_CONFIG_BCSP:
1788
return "UART_CONFIG_BCSP";
1789
case CSR_PSKEY_UART_CONFIG_H4:
1790
return "UART_CONFIG_H4";
1791
case CSR_PSKEY_UART_CONFIG_H5:
1792
return "UART_CONFIG_H5";
1793
case CSR_PSKEY_UART_CONFIG_USR:
1794
return "UART_CONFIG_USR";
1795
case CSR_PSKEY_UART_TX_CRCS:
1796
return "UART_TX_CRCS";
1797
case CSR_PSKEY_UART_ACK_TIMEOUT:
1798
return "UART_ACK_TIMEOUT";
1799
case CSR_PSKEY_UART_TX_MAX_ATTEMPTS:
1800
return "UART_TX_MAX_ATTEMPTS";
1801
case CSR_PSKEY_UART_TX_WINDOW_SIZE:
1802
return "UART_TX_WINDOW_SIZE";
1803
case CSR_PSKEY_UART_HOST_WAKE:
1804
return "UART_HOST_WAKE";
1805
case CSR_PSKEY_HOSTIO_THROTTLE_TIMEOUT:
1806
return "HOSTIO_THROTTLE_TIMEOUT";
1807
case CSR_PSKEY_PCM_ALWAYS_ENABLE:
1808
return "PCM_ALWAYS_ENABLE";
1809
case CSR_PSKEY_UART_HOST_WAKE_SIGNAL:
1810
return "UART_HOST_WAKE_SIGNAL";
1811
case CSR_PSKEY_UART_CONFIG_H4DS:
1812
return "UART_CONFIG_H4DS";
1813
case CSR_PSKEY_H4DS_WAKE_DURATION:
1814
return "H4DS_WAKE_DURATION";
1815
case CSR_PSKEY_H4DS_MAXWU:
1816
return "H4DS_MAXWU";
1817
case CSR_PSKEY_H4DS_LE_TIMER_PERIOD:
1818
return "H4DS_LE_TIMER_PERIOD";
1819
case CSR_PSKEY_H4DS_TWU_TIMER_PERIOD:
1820
return "H4DS_TWU_TIMER_PERIOD";
1821
case CSR_PSKEY_H4DS_UART_IDLE_TIMER_PERIOD:
1822
return "H4DS_UART_IDLE_TIMER_PERIOD";
1823
case CSR_PSKEY_ANA_FTRIM:
1824
return "ANA_FTRIM";
1825
case CSR_PSKEY_WD_TIMEOUT:
1826
return "WD_TIMEOUT";
1827
case CSR_PSKEY_WD_PERIOD:
1828
return "WD_PERIOD";
1829
case CSR_PSKEY_HOST_INTERFACE:
1830
return "HOST_INTERFACE";
1831
case CSR_PSKEY_HQ_HOST_TIMEOUT:
1832
return "HQ_HOST_TIMEOUT";
1833
case CSR_PSKEY_HQ_ACTIVE:
1834
return "HQ_ACTIVE";
1835
case CSR_PSKEY_BCCMD_SECURITY_ACTIVE:
1836
return "BCCMD_SECURITY_ACTIVE";
1837
case CSR_PSKEY_ANA_FREQ:
1838
return "ANA_FREQ";
1839
case CSR_PSKEY_PIO_PROTECT_MASK:
1840
return "PIO_PROTECT_MASK";
1841
case CSR_PSKEY_PMALLOC_SIZES:
1842
return "PMALLOC_SIZES";
1843
case CSR_PSKEY_UART_BAUD_RATE:
1844
return "UART_BAUD_RATE";
1845
case CSR_PSKEY_UART_CONFIG:
1846
return "UART_CONFIG";
1847
case CSR_PSKEY_STUB:
1848
return "STUB";
1849
case CSR_PSKEY_TXRX_PIO_CONTROL:
1850
return "TXRX_PIO_CONTROL";
1851
case CSR_PSKEY_ANA_RX_LEVEL:
1852
return "ANA_RX_LEVEL";
1853
case CSR_PSKEY_ANA_RX_FTRIM:
1854
return "ANA_RX_FTRIM";
1855
case CSR_PSKEY_PSBC_DATA_VERSION:
1856
return "PSBC_DATA_VERSION";
1857
case CSR_PSKEY_PCM0_ATTENUATION:
1858
return "PCM0_ATTENUATION";
1859
case CSR_PSKEY_LO_LVL_MAX:
1860
return "LO_LVL_MAX";
1861
case CSR_PSKEY_LO_ADC_AMPL_MIN:
1862
return "LO_ADC_AMPL_MIN";
1863
case CSR_PSKEY_LO_ADC_AMPL_MAX:
1864
return "LO_ADC_AMPL_MAX";
1865
case CSR_PSKEY_IQ_TRIM_CHANNEL:
1866
return "IQ_TRIM_CHANNEL";
1867
case CSR_PSKEY_IQ_TRIM_GAIN:
1868
return "IQ_TRIM_GAIN";
1869
case CSR_PSKEY_IQ_TRIM_ENABLE:
1870
return "IQ_TRIM_ENABLE";
1871
case CSR_PSKEY_TX_OFFSET_HALF_MHZ:
1872
return "TX_OFFSET_HALF_MHZ";
1873
case CSR_PSKEY_GBL_MISC_ENABLES:
1874
return "GBL_MISC_ENABLES";
1875
case CSR_PSKEY_UART_SLEEP_TIMEOUT:
1876
return "UART_SLEEP_TIMEOUT";
1877
case CSR_PSKEY_DEEP_SLEEP_STATE:
1878
return "DEEP_SLEEP_STATE";
1879
case CSR_PSKEY_IQ_ENABLE_PHASE_TRIM:
1880
return "IQ_ENABLE_PHASE_TRIM";
1881
case CSR_PSKEY_HCI_HANDLE_FREEZE_PERIOD:
1882
return "HCI_HANDLE_FREEZE_PERIOD";
1883
case CSR_PSKEY_MAX_FROZEN_HCI_HANDLES:
1884
return "MAX_FROZEN_HCI_HANDLES";
1885
case CSR_PSKEY_PAGETABLE_DESTRUCTION_DELAY:
1886
return "PAGETABLE_DESTRUCTION_DELAY";
1887
case CSR_PSKEY_IQ_TRIM_PIO_SETTINGS:
1888
return "IQ_TRIM_PIO_SETTINGS";
1889
case CSR_PSKEY_USE_EXTERNAL_CLOCK:
1890
return "USE_EXTERNAL_CLOCK";
1891
case CSR_PSKEY_DEEP_SLEEP_WAKE_CTS:
1892
return "DEEP_SLEEP_WAKE_CTS";
1893
case CSR_PSKEY_FC_HC2H_FLUSH_DELAY:
1894
return "FC_HC2H_FLUSH_DELAY";
1895
case CSR_PSKEY_RX_HIGHSIDE:
1896
return "RX_HIGHSIDE";
1897
case CSR_PSKEY_TX_PRE_LVL:
1898
return "TX_PRE_LVL";
1899
case CSR_PSKEY_RX_SINGLE_ENDED:
1900
return "RX_SINGLE_ENDED";
1901
case CSR_PSKEY_TX_FILTER_CONFIG:
1902
return "TX_FILTER_CONFIG";
1903
case CSR_PSKEY_CLOCK_REQUEST_ENABLE:
1904
return "CLOCK_REQUEST_ENABLE";
1905
case CSR_PSKEY_RX_MIN_ATTEN:
1906
return "RX_MIN_ATTEN";
1907
case CSR_PSKEY_XTAL_TARGET_AMPLITUDE:
1908
return "XTAL_TARGET_AMPLITUDE";
1909
case CSR_PSKEY_PCM_MIN_CPU_CLOCK:
1910
return "PCM_MIN_CPU_CLOCK";
1911
case CSR_PSKEY_HOST_INTERFACE_PIO_USB:
1912
return "HOST_INTERFACE_PIO_USB";
1913
case CSR_PSKEY_CPU_IDLE_MODE:
1914
return "CPU_IDLE_MODE";
1915
case CSR_PSKEY_DEEP_SLEEP_CLEAR_RTS:
1916
return "DEEP_SLEEP_CLEAR_RTS";
1917
case CSR_PSKEY_RF_RESONANCE_TRIM:
1918
return "RF_RESONANCE_TRIM";
1919
case CSR_PSKEY_DEEP_SLEEP_PIO_WAKE:
1920
return "DEEP_SLEEP_PIO_WAKE";
1921
case CSR_PSKEY_DRAIN_BORE_TIMERS:
1922
return "DRAIN_BORE_TIMERS";
1923
case CSR_PSKEY_DRAIN_TX_POWER_BASE:
1924
return "DRAIN_TX_POWER_BASE";
1925
case CSR_PSKEY_MODULE_ID:
1926
return "MODULE_ID";
1927
case CSR_PSKEY_MODULE_DESIGN:
1928
return "MODULE_DESIGN";
1929
case CSR_PSKEY_MODULE_SECURITY_CODE:
1930
return "MODULE_SECURITY_CODE";
1931
case CSR_PSKEY_VM_DISABLE:
1932
return "VM_DISABLE";
1933
case CSR_PSKEY_MOD_MANUF0:
1934
return "MOD_MANUF0";
1935
case CSR_PSKEY_MOD_MANUF1:
1936
return "MOD_MANUF1";
1937
case CSR_PSKEY_MOD_MANUF2:
1938
return "MOD_MANUF2";
1939
case CSR_PSKEY_MOD_MANUF3:
1940
return "MOD_MANUF3";
1941
case CSR_PSKEY_MOD_MANUF4:
1942
return "MOD_MANUF4";
1943
case CSR_PSKEY_MOD_MANUF5:
1944
return "MOD_MANUF5";
1945
case CSR_PSKEY_MOD_MANUF6:
1946
return "MOD_MANUF6";
1947
case CSR_PSKEY_MOD_MANUF7:
1948
return "MOD_MANUF7";
1949
case CSR_PSKEY_MOD_MANUF8:
1950
return "MOD_MANUF8";
1951
case CSR_PSKEY_MOD_MANUF9:
1952
return "MOD_MANUF9";
1953
case CSR_PSKEY_DUT_VM_DISABLE:
1954
return "DUT_VM_DISABLE";
1955
case CSR_PSKEY_USR0:
1956
return "USR0";
1957
case CSR_PSKEY_USR1:
1958
return "USR1";
1959
case CSR_PSKEY_USR2:
1960
return "USR2";
1961
case CSR_PSKEY_USR3:
1962
return "USR3";
1963
case CSR_PSKEY_USR4:
1964
return "USR4";
1965
case CSR_PSKEY_USR5:
1966
return "USR5";
1967
case CSR_PSKEY_USR6:
1968
return "USR6";
1969
case CSR_PSKEY_USR7:
1970
return "USR7";
1971
case CSR_PSKEY_USR8:
1972
return "USR8";
1973
case CSR_PSKEY_USR9:
1974
return "USR9";
1975
case CSR_PSKEY_USR10:
1976
return "USR10";
1977
case CSR_PSKEY_USR11:
1978
return "USR11";
1979
case CSR_PSKEY_USR12:
1980
return "USR12";
1981
case CSR_PSKEY_USR13:
1982
return "USR13";
1983
case CSR_PSKEY_USR14:
1984
return "USR14";
1985
case CSR_PSKEY_USR15:
1986
return "USR15";
1987
case CSR_PSKEY_USR16:
1988
return "USR16";
1989
case CSR_PSKEY_USR17:
1990
return "USR17";
1991
case CSR_PSKEY_USR18:
1992
return "USR18";
1993
case CSR_PSKEY_USR19:
1994
return "USR19";
1995
case CSR_PSKEY_USR20:
1996
return "USR20";
1997
case CSR_PSKEY_USR21:
1998
return "USR21";
1999
case CSR_PSKEY_USR22:
2000
return "USR22";
2001
case CSR_PSKEY_USR23:
2002
return "USR23";
2003
case CSR_PSKEY_USR24:
2004
return "USR24";
2005
case CSR_PSKEY_USR25:
2006
return "USR25";
2007
case CSR_PSKEY_USR26:
2008
return "USR26";
2009
case CSR_PSKEY_USR27:
2010
return "USR27";
2011
case CSR_PSKEY_USR28:
2012
return "USR28";
2013
case CSR_PSKEY_USR29:
2014
return "USR29";
2015
case CSR_PSKEY_USR30:
2016
return "USR30";
2017
case CSR_PSKEY_USR31:
2018
return "USR31";
2019
case CSR_PSKEY_USR32:
2020
return "USR32";
2021
case CSR_PSKEY_USR33:
2022
return "USR33";
2023
case CSR_PSKEY_USR34:
2024
return "USR34";
2025
case CSR_PSKEY_USR35:
2026
return "USR35";
2027
case CSR_PSKEY_USR36:
2028
return "USR36";
2029
case CSR_PSKEY_USR37:
2030
return "USR37";
2031
case CSR_PSKEY_USR38:
2032
return "USR38";
2033
case CSR_PSKEY_USR39:
2034
return "USR39";
2035
case CSR_PSKEY_USR40:
2036
return "USR40";
2037
case CSR_PSKEY_USR41:
2038
return "USR41";
2039
case CSR_PSKEY_USR42:
2040
return "USR42";
2041
case CSR_PSKEY_USR43:
2042
return "USR43";
2043
case CSR_PSKEY_USR44:
2044
return "USR44";
2045
case CSR_PSKEY_USR45:
2046
return "USR45";
2047
case CSR_PSKEY_USR46:
2048
return "USR46";
2049
case CSR_PSKEY_USR47:
2050
return "USR47";
2051
case CSR_PSKEY_USR48:
2052
return "USR48";
2053
case CSR_PSKEY_USR49:
2054
return "USR49";
2055
case CSR_PSKEY_USB_VERSION:
2056
return "USB_VERSION";
2057
case CSR_PSKEY_USB_DEVICE_CLASS_CODES:
2058
return "USB_DEVICE_CLASS_CODES";
2059
case CSR_PSKEY_USB_VENDOR_ID:
2060
return "USB_VENDOR_ID";
2061
case CSR_PSKEY_USB_PRODUCT_ID:
2062
return "USB_PRODUCT_ID";
2063
case CSR_PSKEY_USB_MANUF_STRING:
2064
return "USB_MANUF_STRING";
2065
case CSR_PSKEY_USB_PRODUCT_STRING:
2066
return "USB_PRODUCT_STRING";
2067
case CSR_PSKEY_USB_SERIAL_NUMBER_STRING:
2068
return "USB_SERIAL_NUMBER_STRING";
2069
case CSR_PSKEY_USB_CONFIG_STRING:
2070
return "USB_CONFIG_STRING";
2071
case CSR_PSKEY_USB_ATTRIBUTES:
2072
return "USB_ATTRIBUTES";
2073
case CSR_PSKEY_USB_MAX_POWER:
2074
return "USB_MAX_POWER";
2075
case CSR_PSKEY_USB_BT_IF_CLASS_CODES:
2076
return "USB_BT_IF_CLASS_CODES";
2077
case CSR_PSKEY_USB_LANGID:
2078
return "USB_LANGID";
2079
case CSR_PSKEY_USB_DFU_CLASS_CODES:
2080
return "USB_DFU_CLASS_CODES";
2081
case CSR_PSKEY_USB_DFU_PRODUCT_ID:
2082
return "USB_DFU_PRODUCT_ID";
2083
case CSR_PSKEY_USB_PIO_DETACH:
2084
return "USB_PIO_DETACH";
2085
case CSR_PSKEY_USB_PIO_WAKEUP:
2086
return "USB_PIO_WAKEUP";
2087
case CSR_PSKEY_USB_PIO_PULLUP:
2088
return "USB_PIO_PULLUP";
2089
case CSR_PSKEY_USB_PIO_VBUS:
2090
return "USB_PIO_VBUS";
2091
case CSR_PSKEY_USB_PIO_WAKE_TIMEOUT:
2092
return "USB_PIO_WAKE_TIMEOUT";
2093
case CSR_PSKEY_USB_PIO_RESUME:
2094
return "USB_PIO_RESUME";
2095
case CSR_PSKEY_USB_BT_SCO_IF_CLASS_CODES:
2096
return "USB_BT_SCO_IF_CLASS_CODES";
2097
case CSR_PSKEY_USB_SUSPEND_PIO_LEVEL:
2098
return "USB_SUSPEND_PIO_LEVEL";
2099
case CSR_PSKEY_USB_SUSPEND_PIO_DIR:
2100
return "USB_SUSPEND_PIO_DIR";
2101
case CSR_PSKEY_USB_SUSPEND_PIO_MASK:
2102
return "USB_SUSPEND_PIO_MASK";
2103
case CSR_PSKEY_USB_ENDPOINT_0_MAX_PACKET_SIZE:
2104
return "USB_ENDPOINT_0_MAX_PACKET_SIZE";
2105
case CSR_PSKEY_USB_CONFIG:
2106
return "USB_CONFIG";
2107
case CSR_PSKEY_RADIOTEST_ATTEN_INIT:
2108
return "RADIOTEST_ATTEN_INIT";
2109
case CSR_PSKEY_RADIOTEST_FIRST_TRIM_TIME:
2110
return "RADIOTEST_FIRST_TRIM_TIME";
2111
case CSR_PSKEY_RADIOTEST_SUBSEQUENT_TRIM_TIME:
2112
return "RADIOTEST_SUBSEQUENT_TRIM_TIME";
2113
case CSR_PSKEY_RADIOTEST_LO_LVL_TRIM_ENABLE:
2114
return "RADIOTEST_LO_LVL_TRIM_ENABLE";
2115
case CSR_PSKEY_RADIOTEST_DISABLE_MODULATION:
2116
return "RADIOTEST_DISABLE_MODULATION";
2117
case CSR_PSKEY_RFCOMM_FCON_THRESHOLD:
2118
return "RFCOMM_FCON_THRESHOLD";
2119
case CSR_PSKEY_RFCOMM_FCOFF_THRESHOLD:
2120
return "RFCOMM_FCOFF_THRESHOLD";
2121
case CSR_PSKEY_IPV6_STATIC_ADDR:
2122
return "IPV6_STATIC_ADDR";
2123
case CSR_PSKEY_IPV4_STATIC_ADDR:
2124
return "IPV4_STATIC_ADDR";
2125
case CSR_PSKEY_IPV6_STATIC_PREFIX_LEN:
2126
return "IPV6_STATIC_PREFIX_LEN";
2127
case CSR_PSKEY_IPV6_STATIC_ROUTER_ADDR:
2128
return "IPV6_STATIC_ROUTER_ADDR";
2129
case CSR_PSKEY_IPV4_STATIC_SUBNET_MASK:
2130
return "IPV4_STATIC_SUBNET_MASK";
2131
case CSR_PSKEY_IPV4_STATIC_ROUTER_ADDR:
2132
return "IPV4_STATIC_ROUTER_ADDR";
2133
case CSR_PSKEY_MDNS_NAME:
2134
return "MDNS_NAME";
2135
case CSR_PSKEY_FIXED_PIN:
2136
return "FIXED_PIN";
2137
case CSR_PSKEY_MDNS_PORT:
2138
return "MDNS_PORT";
2139
case CSR_PSKEY_MDNS_TTL:
2140
return "MDNS_TTL";
2141
case CSR_PSKEY_MDNS_IPV4_ADDR:
2142
return "MDNS_IPV4_ADDR";
2143
case CSR_PSKEY_ARP_CACHE_TIMEOUT:
2144
return "ARP_CACHE_TIMEOUT";
2145
case CSR_PSKEY_HFP_POWER_TABLE:
2146
return "HFP_POWER_TABLE";
2147
case CSR_PSKEY_DRAIN_BORE_TIMER_COUNTERS:
2148
return "DRAIN_BORE_TIMER_COUNTERS";
2149
case CSR_PSKEY_DRAIN_BORE_COUNTERS:
2150
return "DRAIN_BORE_COUNTERS";
2151
case CSR_PSKEY_LOOP_FILTER_TRIM:
2152
return "LOOP_FILTER_TRIM";
2153
case CSR_PSKEY_DRAIN_BORE_CURRENT_PEAK:
2154
return "DRAIN_BORE_CURRENT_PEAK";
2155
case CSR_PSKEY_VM_E2_CACHE_LIMIT:
2156
return "VM_E2_CACHE_LIMIT";
2157
case CSR_PSKEY_FORCE_16MHZ_REF_PIO:
2158
return "FORCE_16MHZ_REF_PIO";
2159
case CSR_PSKEY_CDMA_LO_REF_LIMITS:
2160
return "CDMA_LO_REF_LIMITS";
2161
case CSR_PSKEY_CDMA_LO_ERROR_LIMITS:
2162
return "CDMA_LO_ERROR_LIMITS";
2163
case CSR_PSKEY_CLOCK_STARTUP_DELAY:
2164
return "CLOCK_STARTUP_DELAY";
2165
case CSR_PSKEY_DEEP_SLEEP_CORRECTION_FACTOR:
2166
return "DEEP_SLEEP_CORRECTION_FACTOR";
2167
case CSR_PSKEY_TEMPERATURE_CALIBRATION:
2168
return "TEMPERATURE_CALIBRATION";
2169
case CSR_PSKEY_TEMPERATURE_VS_DELTA_INTERNAL_PA:
2170
return "TEMPERATURE_VS_DELTA_INTERNAL_PA";
2171
case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_PRE_LVL:
2172
return "TEMPERATURE_VS_DELTA_TX_PRE_LVL";
2173
case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB:
2174
return "TEMPERATURE_VS_DELTA_TX_BB";
2175
case CSR_PSKEY_TEMPERATURE_VS_DELTA_ANA_FTRIM:
2176
return "TEMPERATURE_VS_DELTA_ANA_FTRIM";
2177
case CSR_PSKEY_TEST_DELTA_OFFSET:
2178
return "TEST_DELTA_OFFSET";
2179
case CSR_PSKEY_RX_DYNAMIC_LVL_OFFSET:
2180
return "RX_DYNAMIC_LVL_OFFSET";
2181
case CSR_PSKEY_TEST_FORCE_OFFSET:
2182
return "TEST_FORCE_OFFSET";
2183
case CSR_PSKEY_RF_TRAP_BAD_DIVISION_RATIOS:
2184
return "RF_TRAP_BAD_DIVISION_RATIOS";
2185
case CSR_PSKEY_RADIOTEST_CDMA_LO_REF_LIMITS:
2186
return "RADIOTEST_CDMA_LO_REF_LIMITS";
2187
case CSR_PSKEY_INITIAL_BOOTMODE:
2188
return "INITIAL_BOOTMODE";
2189
case CSR_PSKEY_ONCHIP_HCI_CLIENT:
2190
return "ONCHIP_HCI_CLIENT";
2191
case CSR_PSKEY_RX_ATTEN_BACKOFF:
2192
return "RX_ATTEN_BACKOFF";
2193
case CSR_PSKEY_RX_ATTEN_UPDATE_RATE:
2194
return "RX_ATTEN_UPDATE_RATE";
2195
case CSR_PSKEY_SYNTH_TXRX_THRESHOLDS:
2196
return "SYNTH_TXRX_THRESHOLDS";
2197
case CSR_PSKEY_MIN_WAIT_STATES:
2198
return "MIN_WAIT_STATES";
2199
case CSR_PSKEY_RSSI_CORRECTION:
2200
return "RSSI_CORRECTION";
2201
case CSR_PSKEY_SCHED_THROTTLE_TIMEOUT:
2202
return "SCHED_THROTTLE_TIMEOUT";
2203
case CSR_PSKEY_DEEP_SLEEP_USE_EXTERNAL_CLOCK:
2204
return "DEEP_SLEEP_USE_EXTERNAL_CLOCK";
2205
case CSR_PSKEY_TRIM_RADIO_FILTERS:
2206
return "TRIM_RADIO_FILTERS";
2207
case CSR_PSKEY_TRANSMIT_OFFSET:
2208
return "TRANSMIT_OFFSET";
2209
case CSR_PSKEY_USB_VM_CONTROL:
2210
return "USB_VM_CONTROL";
2211
case CSR_PSKEY_MR_ANA_RX_FTRIM:
2212
return "MR_ANA_RX_FTRIM";
2213
case CSR_PSKEY_I2C_CONFIG:
2214
return "I2C_CONFIG";
2215
case CSR_PSKEY_IQ_LVL_RX:
2216
return "IQ_LVL_RX";
2217
case CSR_PSKEY_MR_TX_FILTER_CONFIG:
2218
return "MR_TX_FILTER_CONFIG";
2219
case CSR_PSKEY_MR_TX_CONFIG2:
2220
return "MR_TX_CONFIG2";
2221
case CSR_PSKEY_USB_DONT_RESET_BOOTMODE_ON_HOST_RESET:
2222
return "USB_DONT_RESET_BOOTMODE_ON_HOST_RESET";
2223
case CSR_PSKEY_LC_USE_THROTTLING:
2224
return "LC_USE_THROTTLING";
2225
case CSR_PSKEY_CHARGER_TRIM:
2226
return "CHARGER_TRIM";
2227
case CSR_PSKEY_CLOCK_REQUEST_FEATURES:
2228
return "CLOCK_REQUEST_FEATURES";
2229
case CSR_PSKEY_TRANSMIT_OFFSET_CLASS1:
2230
return "TRANSMIT_OFFSET_CLASS1";
2231
case CSR_PSKEY_TX_AVOID_PA_CLASS1_PIO:
2232
return "TX_AVOID_PA_CLASS1_PIO";
2233
case CSR_PSKEY_MR_PIO_CONFIG:
2234
return "MR_PIO_CONFIG";
2235
case CSR_PSKEY_UART_CONFIG2:
2236
return "UART_CONFIG2";
2237
case CSR_PSKEY_CLASS1_IQ_LVL:
2238
return "CLASS1_IQ_LVL";
2239
case CSR_PSKEY_CLASS1_TX_CONFIG2:
2240
return "CLASS1_TX_CONFIG2";
2241
case CSR_PSKEY_TEMPERATURE_VS_DELTA_INTERNAL_PA_CLASS1:
2242
return "TEMPERATURE_VS_DELTA_INTERNAL_PA_CLASS1";
2243
case CSR_PSKEY_TEMPERATURE_VS_DELTA_EXTERNAL_PA_CLASS1:
2244
return "TEMPERATURE_VS_DELTA_EXTERNAL_PA_CLASS1";
2245
case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_PRE_LVL_MR:
2246
return "TEMPERATURE_VS_DELTA_TX_PRE_LVL_MR";
2247
case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB_MR_HEADER:
2248
return "TEMPERATURE_VS_DELTA_TX_BB_MR_HEADER";
2249
case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB_MR_PAYLOAD:
2250
return "TEMPERATURE_VS_DELTA_TX_BB_MR_PAYLOAD";
2251
case CSR_PSKEY_RX_MR_EQ_TAPS:
2252
return "RX_MR_EQ_TAPS";
2253
case CSR_PSKEY_TX_PRE_LVL_CLASS1:
2254
return "TX_PRE_LVL_CLASS1";
2255
case CSR_PSKEY_ANALOGUE_ATTENUATOR:
2256
return "ANALOGUE_ATTENUATOR";
2257
case CSR_PSKEY_MR_RX_FILTER_TRIM:
2258
return "MR_RX_FILTER_TRIM";
2259
case CSR_PSKEY_MR_RX_FILTER_RESPONSE:
2260
return "MR_RX_FILTER_RESPONSE";
2261
case CSR_PSKEY_PIO_WAKEUP_STATE:
2262
return "PIO_WAKEUP_STATE";
2263
case CSR_PSKEY_MR_TX_IF_ATTEN_OFF_TEMP:
2264
return "MR_TX_IF_ATTEN_OFF_TEMP";
2265
case CSR_PSKEY_LO_DIV_LATCH_BYPASS:
2266
return "LO_DIV_LATCH_BYPASS";
2267
case CSR_PSKEY_LO_VCO_STANDBY:
2268
return "LO_VCO_STANDBY";
2269
case CSR_PSKEY_SLOW_CLOCK_FILTER_SHIFT:
2270
return "SLOW_CLOCK_FILTER_SHIFT";
2271
case CSR_PSKEY_SLOW_CLOCK_FILTER_DIVIDER:
2272
return "SLOW_CLOCK_FILTER_DIVIDER";
2273
case CSR_PSKEY_USB_ATTRIBUTES_POWER:
2274
return "USB_ATTRIBUTES_POWER";
2275
case CSR_PSKEY_USB_ATTRIBUTES_WAKEUP:
2276
return "USB_ATTRIBUTES_WAKEUP";
2277
case CSR_PSKEY_DFU_ATTRIBUTES_MANIFESTATION_TOLERANT:
2278
return "DFU_ATTRIBUTES_MANIFESTATION_TOLERANT";
2279
case CSR_PSKEY_DFU_ATTRIBUTES_CAN_UPLOAD:
2280
return "DFU_ATTRIBUTES_CAN_UPLOAD";
2281
case CSR_PSKEY_DFU_ATTRIBUTES_CAN_DOWNLOAD:
2282
return "DFU_ATTRIBUTES_CAN_DOWNLOAD";
2283
case CSR_PSKEY_UART_CONFIG_STOP_BITS:
2284
return "UART_CONFIG_STOP_BITS";
2285
case CSR_PSKEY_UART_CONFIG_PARITY_BIT:
2286
return "UART_CONFIG_PARITY_BIT";
2287
case CSR_PSKEY_UART_CONFIG_FLOW_CTRL_EN:
2288
return "UART_CONFIG_FLOW_CTRL_EN";
2289
case CSR_PSKEY_UART_CONFIG_RTS_AUTO_EN:
2290
return "UART_CONFIG_RTS_AUTO_EN";
2291
case CSR_PSKEY_UART_CONFIG_RTS:
2292
return "UART_CONFIG_RTS";
2293
case CSR_PSKEY_UART_CONFIG_TX_ZERO_EN:
2294
return "UART_CONFIG_TX_ZERO_EN";
2295
case CSR_PSKEY_UART_CONFIG_NON_BCSP_EN:
2296
return "UART_CONFIG_NON_BCSP_EN";
2297
case CSR_PSKEY_UART_CONFIG_RX_RATE_DELAY:
2298
return "UART_CONFIG_RX_RATE_DELAY";
2299
case CSR_PSKEY_UART_SEQ_TIMEOUT:
2300
return "UART_SEQ_TIMEOUT";
2301
case CSR_PSKEY_UART_SEQ_RETRIES:
2302
return "UART_SEQ_RETRIES";
2303
case CSR_PSKEY_UART_SEQ_WINSIZE:
2304
return "UART_SEQ_WINSIZE";
2305
case CSR_PSKEY_UART_USE_CRC_ON_TX:
2306
return "UART_USE_CRC_ON_TX";
2307
case CSR_PSKEY_UART_HOST_INITIAL_STATE:
2308
return "UART_HOST_INITIAL_STATE";
2309
case CSR_PSKEY_UART_HOST_ATTENTION_SPAN:
2310
return "UART_HOST_ATTENTION_SPAN";
2311
case CSR_PSKEY_UART_HOST_WAKEUP_TIME:
2312
return "UART_HOST_WAKEUP_TIME";
2313
case CSR_PSKEY_UART_HOST_WAKEUP_WAIT:
2314
return "UART_HOST_WAKEUP_WAIT";
2315
case CSR_PSKEY_BCSP_LM_MODE:
2316
return "BCSP_LM_MODE";
2317
case CSR_PSKEY_BCSP_LM_SYNC_RETRIES:
2318
return "BCSP_LM_SYNC_RETRIES";
2319
case CSR_PSKEY_BCSP_LM_TSHY:
2320
return "BCSP_LM_TSHY";
2321
case CSR_PSKEY_UART_DFU_CONFIG_STOP_BITS:
2322
return "UART_DFU_CONFIG_STOP_BITS";
2323
case CSR_PSKEY_UART_DFU_CONFIG_PARITY_BIT:
2324
return "UART_DFU_CONFIG_PARITY_BIT";
2325
case CSR_PSKEY_UART_DFU_CONFIG_FLOW_CTRL_EN:
2326
return "UART_DFU_CONFIG_FLOW_CTRL_EN";
2327
case CSR_PSKEY_UART_DFU_CONFIG_RTS_AUTO_EN:
2328
return "UART_DFU_CONFIG_RTS_AUTO_EN";
2329
case CSR_PSKEY_UART_DFU_CONFIG_RTS:
2330
return "UART_DFU_CONFIG_RTS";
2331
case CSR_PSKEY_UART_DFU_CONFIG_TX_ZERO_EN:
2332
return "UART_DFU_CONFIG_TX_ZERO_EN";
2333
case CSR_PSKEY_UART_DFU_CONFIG_NON_BCSP_EN:
2334
return "UART_DFU_CONFIG_NON_BCSP_EN";
2335
case CSR_PSKEY_UART_DFU_CONFIG_RX_RATE_DELAY:
2336
return "UART_DFU_CONFIG_RX_RATE_DELAY";
2337
case CSR_PSKEY_AMUX_AIO0:
2338
return "AMUX_AIO0";
2339
case CSR_PSKEY_AMUX_AIO1:
2340
return "AMUX_AIO1";
2341
case CSR_PSKEY_AMUX_AIO2:
2342
return "AMUX_AIO2";
2343
case CSR_PSKEY_AMUX_AIO3:
2344
return "AMUX_AIO3";
2345
case CSR_PSKEY_LOCAL_NAME_SIMPLIFIED:
2346
return "LOCAL_NAME_SIMPLIFIED";
2347
case CSR_PSKEY_EXTENDED_STUB:
2348
return "EXTENDED_STUB";
2349
default:
2350
return "UNKNOWN";
2351
}
2352
}
2353
2354
int csr_write_varid_valueless(int dd, uint16_t seqnum, uint16_t varid)
2355
{
2356
unsigned char cmd[] = { 0x02, 0x00, 0x09, 0x00,
2357
seqnum & 0xff, seqnum >> 8, varid & 0xff, varid >> 8, 0x00, 0x00,
2358
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
2359
2360
unsigned char cp[254], rp[254];
2361
struct hci_request rq;
2362
2363
memset(&cp, 0, sizeof(cp));
2364
cp[0] = 0xc2;
2365
memcpy(cp + 1, cmd, sizeof(cmd));
2366
2367
switch (varid) {
2368
case CSR_VARID_COLD_RESET:
2369
case CSR_VARID_WARM_RESET:
2370
case CSR_VARID_COLD_HALT:
2371
case CSR_VARID_WARM_HALT:
2372
return hci_send_cmd(dd, OGF_VENDOR_CMD, 0x00, sizeof(cmd) + 1, cp);
2373
}
2374
2375
memset(&rq, 0, sizeof(rq));
2376
rq.ogf = OGF_VENDOR_CMD;
2377
rq.ocf = 0x00;
2378
rq.event = EVT_VENDOR;
2379
rq.cparam = cp;
2380
rq.clen = sizeof(cmd) + 1;
2381
rq.rparam = rp;
2382
rq.rlen = sizeof(rp);
2383
2384
if (hci_send_req(dd, &rq, 2000) < 0)
2385
return -1;
2386
2387
if (rp[0] != 0xc2) {
2388
errno = EIO;
2389
return -1;
2390
}
2391
2392
if ((rp[9] + (rp[10] << 8)) != 0) {
2393
errno = ENXIO;
2394
return -1;
2395
}
2396
2397
return 0;
2398
}
2399
2400
int csr_write_varid_complex(int dd, uint16_t seqnum, uint16_t varid, uint8_t *value, uint16_t length)
2401
{
2402
unsigned char cmd[] = { 0x02, 0x00, ((length / 2) + 5) & 0xff, ((length / 2) + 5) >> 8,
2403
seqnum & 0xff, seqnum >> 8, varid & 0xff, varid >> 8, 0x00, 0x00,
2404
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
2405
2406
unsigned char cp[254], rp[254];
2407
struct hci_request rq;
2408
2409
memset(&cp, 0, sizeof(cp));
2410
cp[0] = 0xc2;
2411
memcpy(cp + 1, cmd, sizeof(cmd));
2412
memcpy(cp + 11, value, length);
2413
2414
memset(&rq, 0, sizeof(rq));
2415
rq.ogf = OGF_VENDOR_CMD;
2416
rq.ocf = 0x00;
2417
rq.event = EVT_VENDOR;
2418
rq.cparam = cp;
2419
rq.clen = sizeof(cmd) + length + 1;
2420
rq.rparam = rp;
2421
rq.rlen = sizeof(rp);
2422
2423
if (hci_send_req(dd, &rq, 2000) < 0)
2424
return -1;
2425
2426
if (rp[0] != 0xc2) {
2427
errno = EIO;
2428
return -1;
2429
}
2430
2431
if ((rp[9] + (rp[10] << 8)) != 0) {
2432
errno = ENXIO;
2433
return -1;
2434
}
2435
2436
return 0;
2437
}
2438
2439
int csr_read_varid_complex(int dd, uint16_t seqnum, uint16_t varid, uint8_t *value, uint16_t length)
2440
{
2441
unsigned char cmd[] = { 0x00, 0x00, ((length / 2) + 5) & 0xff, ((length / 2) + 5) >> 8,
2442
seqnum & 0xff, seqnum >> 8, varid & 0xff, varid >> 8, 0x00, 0x00,
2443
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
2444
2445
unsigned char cp[254], rp[254];
2446
struct hci_request rq;
2447
2448
memset(&cp, 0, sizeof(cp));
2449
cp[0] = 0xc2;
2450
memcpy(cp + 1, cmd, sizeof(cmd));
2451
memcpy(cp + 11, value, length);
2452
2453
memset(&rq, 0, sizeof(rq));
2454
rq.ogf = OGF_VENDOR_CMD;
2455
rq.ocf = 0x00;
2456
rq.event = EVT_VENDOR;
2457
rq.cparam = cp;
2458
rq.clen = sizeof(cmd) + length + 1;
2459
rq.rparam = rp;
2460
rq.rlen = sizeof(rp);
2461
2462
if (hci_send_req(dd, &rq, 2000) < 0)
2463
return -1;
2464
2465
if (rp[0] != 0xc2) {
2466
errno = EIO;
2467
return -1;
2468
}
2469
2470
if ((rp[9] + (rp[10] << 8)) != 0) {
2471
errno = ENXIO;
2472
return -1;
2473
}
2474
2475
memcpy(value, rp + 11, length);
2476
2477
return 0;
2478
}
2479
2480
int csr_read_varid_uint16(int dd, uint16_t seqnum, uint16_t varid, uint16_t *value)
2481
{
2482
unsigned char cmd[] = { 0x00, 0x00, 0x09, 0x00,
2483
seqnum & 0xff, seqnum >> 8, varid & 0xff, varid >> 8, 0x00, 0x00,
2484
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
2485
2486
unsigned char cp[254], rp[254];
2487
struct hci_request rq;
2488
2489
memset(&cp, 0, sizeof(cp));
2490
cp[0] = 0xc2;
2491
memcpy(cp + 1, cmd, sizeof(cmd));
2492
2493
memset(&rq, 0, sizeof(rq));
2494
rq.ogf = OGF_VENDOR_CMD;
2495
rq.ocf = 0x00;
2496
rq.event = EVT_VENDOR;
2497
rq.cparam = cp;
2498
rq.clen = sizeof(cmd) + 1;
2499
rq.rparam = rp;
2500
rq.rlen = sizeof(rp);
2501
2502
if (hci_send_req(dd, &rq, 2000) < 0)
2503
return -1;
2504
2505
if (rp[0] != 0xc2) {
2506
errno = EIO;
2507
return -1;
2508
}
2509
2510
if ((rp[9] + (rp[10] << 8)) != 0) {
2511
errno = ENXIO;
2512
return -1;
2513
}
2514
2515
*value = rp[11] + (rp[12] << 8);
2516
2517
return 0;
2518
}
2519
2520
int csr_read_varid_uint32(int dd, uint16_t seqnum, uint16_t varid, uint32_t *value)
2521
{
2522
unsigned char cmd[] = { 0x00, 0x00, 0x09, 0x00,
2523
seqnum & 0xff, seqnum >> 8, varid & 0xff, varid >> 8, 0x00, 0x00,
2524
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
2525
2526
unsigned char cp[254], rp[254];
2527
struct hci_request rq;
2528
2529
memset(&cp, 0, sizeof(cp));
2530
cp[0] = 0xc2;
2531
memcpy(cp + 1, cmd, sizeof(cmd));
2532
2533
memset(&rq, 0, sizeof(rq));
2534
rq.ogf = OGF_VENDOR_CMD;
2535
rq.ocf = 0x00;
2536
rq.event = EVT_VENDOR;
2537
rq.cparam = cp;
2538
rq.clen = sizeof(cmd) + 1;
2539
rq.rparam = rp;
2540
rq.rlen = sizeof(rp);
2541
2542
if (hci_send_req(dd, &rq, 2000) < 0)
2543
return -1;
2544
2545
if (rp[0] != 0xc2) {
2546
errno = EIO;
2547
return -1;
2548
}
2549
2550
if ((rp[9] + (rp[10] << 8)) != 0) {
2551
errno = ENXIO;
2552
return -1;
2553
}
2554
2555
*value = ((rp[11] + (rp[12] << 8)) << 16) + (rp[13] + (rp[14] << 8));
2556
2557
return 0;
2558
}
2559
2560
int csr_read_pskey_complex(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint8_t *value, uint16_t length)
2561
{
2562
unsigned char cmd[] = { 0x00, 0x00, ((length / 2) + 8) & 0xff, ((length / 2) + 8) >> 8,
2563
seqnum & 0xff, seqnum >> 8, 0x03, 0x70, 0x00, 0x00,
2564
pskey & 0xff, pskey >> 8,
2565
(length / 2) & 0xff, (length / 2) >> 8,
2566
stores & 0xff, stores >> 8, 0x00, 0x00 };
2567
2568
unsigned char cp[254], rp[254];
2569
struct hci_request rq;
2570
2571
memset(&cp, 0, sizeof(cp));
2572
cp[0] = 0xc2;
2573
memcpy(cp + 1, cmd, sizeof(cmd));
2574
2575
memset(&rq, 0, sizeof(rq));
2576
rq.ogf = OGF_VENDOR_CMD;
2577
rq.ocf = 0x00;
2578
rq.event = EVT_VENDOR;
2579
rq.cparam = cp;
2580
rq.clen = sizeof(cmd) + length - 1;
2581
rq.rparam = rp;
2582
rq.rlen = sizeof(rp);
2583
2584
if (hci_send_req(dd, &rq, 2000) < 0)
2585
return -1;
2586
2587
if (rp[0] != 0xc2) {
2588
errno = EIO;
2589
return -1;
2590
}
2591
2592
if ((rp[9] + (rp[10] << 8)) != 0) {
2593
errno = ENXIO;
2594
return -1;
2595
}
2596
2597
memcpy(value, rp + 17, length);
2598
2599
return 0;
2600
}
2601
2602
int csr_write_pskey_complex(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint8_t *value, uint16_t length)
2603
{
2604
unsigned char cmd[] = { 0x02, 0x00, ((length / 2) + 8) & 0xff, ((length / 2) + 8) >> 8,
2605
seqnum & 0xff, seqnum >> 8, 0x03, 0x70, 0x00, 0x00,
2606
pskey & 0xff, pskey >> 8,
2607
(length / 2) & 0xff, (length / 2) >> 8,
2608
stores & 0xff, stores >> 8, 0x00, 0x00 };
2609
2610
unsigned char cp[254], rp[254];
2611
struct hci_request rq;
2612
2613
memset(&cp, 0, sizeof(cp));
2614
cp[0] = 0xc2;
2615
memcpy(cp + 1, cmd, sizeof(cmd));
2616
2617
memcpy(cp + 17, value, length);
2618
2619
memset(&rq, 0, sizeof(rq));
2620
rq.ogf = OGF_VENDOR_CMD;
2621
rq.ocf = 0x00;
2622
rq.event = EVT_VENDOR;
2623
rq.cparam = cp;
2624
rq.clen = sizeof(cmd) + length - 1;
2625
rq.rparam = rp;
2626
rq.rlen = sizeof(rp);
2627
2628
if (hci_send_req(dd, &rq, 2000) < 0)
2629
return -1;
2630
2631
if (rp[0] != 0xc2) {
2632
errno = EIO;
2633
return -1;
2634
}
2635
2636
if ((rp[9] + (rp[10] << 8)) != 0) {
2637
errno = ENXIO;
2638
return -1;
2639
}
2640
2641
return 0;
2642
}
2643
2644
int csr_read_pskey_uint16(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint16_t *value)
2645
{
2646
uint8_t array[2] = { 0x00, 0x00 };
2647
int err;
2648
2649
err = csr_read_pskey_complex(dd, seqnum, pskey, stores, array, 2);
2650
2651
*value = array[0] + (array[1] << 8);
2652
2653
return err;
2654
}
2655
2656
int csr_write_pskey_uint16(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint16_t value)
2657
{
2658
uint8_t array[2] = { value & 0xff, value >> 8 };
2659
2660
return csr_write_pskey_complex(dd, seqnum, pskey, stores, array, 2);
2661
}
2662
2663
int csr_read_pskey_uint32(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint32_t *value)
2664
{
2665
uint8_t array[4] = { 0x00, 0x00, 0x00, 0x00 };
2666
int err;
2667
2668
err = csr_read_pskey_complex(dd, seqnum, pskey, stores, array, 4);
2669
2670
*value = ((array[0] + (array[1] << 8)) << 16) +
2671
(array[2] + (array[3] << 8));
2672
2673
return err;
2674
}
2675
2676
int csr_write_pskey_uint32(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint32_t value)
2677
{
2678
uint8_t array[4] = { (value & 0xff0000) >> 16, value >> 24,
2679
value & 0xff, (value & 0xff00) >> 8 };
2680
2681
return csr_write_pskey_complex(dd, seqnum, pskey, stores, array, 4);
2682
}
2683
2684
int psr_put(uint16_t pskey, uint8_t *value, uint16_t size)
2685
{
2686
struct psr_data *item;
2687
2688
item = malloc(sizeof(*item));
2689
if (!item)
2690
return -ENOMEM;
2691
2692
item->pskey = pskey;
2693
2694
if (size > 0) {
2695
item->value = malloc(size);
2696
if (!item->value) {
2697
free(item);
2698
return -ENOMEM;
2699
}
2700
2701
memcpy(item->value, value, size);
2702
item->size = size;
2703
} else {
2704
item->value = NULL;
2705
item->size = 0;
2706
}
2707
2708
item->next = NULL;
2709
2710
if (!head)
2711
head = item;
2712
else
2713
tail->next = item;
2714
2715
tail = item;
2716
2717
return 0;
2718
}
2719
2720
int psr_get(uint16_t *pskey, uint8_t *value, uint16_t *size)
2721
{
2722
struct psr_data *item = head;
2723
2724
if (!head)
2725
return -ENOENT;
2726
2727
*pskey = item->pskey;
2728
2729
if (item->value) {
2730
if (value && item->size > 0)
2731
memcpy(value, item->value, item->size);
2732
free(item->value);
2733
*size = item->size;
2734
} else
2735
*size = 0;
2736
2737
if (head == tail)
2738
tail = NULL;
2739
2740
head = head->next;
2741
free(item);
2742
2743
return 0;
2744
}
2745
2746
static int parse_line(char *str)
2747
{
2748
uint8_t array[256];
2749
uint16_t value, pskey, length = 0;
2750
char *off, *end;
2751
2752
pskey = strtol(str + 1, NULL, 16);
2753
off = strstr(str, "=") + 1;
2754
if (!off)
2755
return -EIO;
2756
2757
while (1) {
2758
value = strtol(off, &end, 16);
2759
if (value == 0 && off == end)
2760
break;
2761
2762
array[length++] = value & 0xff;
2763
array[length++] = value >> 8;
2764
2765
if (*end == '\0')
2766
break;
2767
2768
off = end + 1;
2769
}
2770
2771
return psr_put(pskey, array, length);
2772
}
2773
2774
int psr_read(const char *filename)
2775
{
2776
struct stat st;
2777
char *str, *map, *off, *end;
2778
int fd, err = 0;
2779
2780
fd = open(filename, O_RDONLY);
2781
if (fd < 0)
2782
return fd;
2783
2784
if (fstat(fd, &st) < 0) {
2785
err = -errno;
2786
goto close;
2787
}
2788
2789
map = mmap(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
2790
if (!map || map == MAP_FAILED) {
2791
err = -errno;
2792
goto close;
2793
}
2794
2795
off = map;
2796
2797
while (1) {
2798
if (*off == '\r' || *off == '\n') {
2799
off++;
2800
continue;
2801
}
2802
2803
end = strpbrk(off, "\r\n");
2804
if (!end)
2805
break;
2806
2807
str = malloc(end - off + 1);
2808
if (!str)
2809
break;
2810
2811
memset(str, 0, end - off + 1);
2812
strncpy(str, off, end - off);
2813
if (*str == '&')
2814
parse_line(str);
2815
2816
free(str);
2817
off = end + 1;
2818
}
2819
2820
munmap(map, st.st_size);
2821
2822
close:
2823
close(fd);
2824
2825
return err;
2826
}
2827
2828
int psr_print(void)
2829
{
2830
uint8_t array[256];
2831
uint16_t pskey, length;
2832
char *str, val[7];
2833
int i;
2834
2835
while (1) {
2836
if (psr_get(&pskey, array, &length) < 0)
2837
break;
2838
2839
str = csr_pskeytoval(pskey);
2840
if (!strcasecmp(str, "UNKNOWN")) {
2841
sprintf(val, "0x%04x", pskey);
2842
str = NULL;
2843
}
2844
2845
printf("// %s%s\n&%04x =", str ? "PSKEY_" : "",
2846
str ? str : val, pskey);
2847
for (i = 0; i < length / 2; i++)
2848
printf(" %02x%02x", array[i * 2 + 1], array[i * 2]);
2849
printf("\n");
2850
}
2851
2852
return 0;
2853
}
2854
2855