xref: /aosp_15_r20/external/coreboot/src/vendorcode/cavium/bdk/libbdk-hal/bdk-config.c (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /*
2  * Copyright (c) 2003-2017  Cavium Inc. ([email protected]). All rights
3  * reserved.
4  * Copyright 2018-present Facebook, Inc.
5  *
6  * SPDX-License-Identifier: BSD-3-Clause
7  *
8  * This file consists of data imported from bdk-config.c
9  */
10 
11 #include <bdk.h>
12 #include <libbdk-hal/bdk-config.h>
13 #include <stdlib.h>
14 #include <string.h>
15 #include <assert.h>
16 #include <lame_string.h>
17 #include <stdio.h>
18 
19 static struct bdk_devicetree_key_value *config_fdt;
20 
bdk_config_duplicate(const struct bdk_devicetree_key_value * old,size_t free_space)21 static struct bdk_devicetree_key_value *bdk_config_duplicate(
22         const struct bdk_devicetree_key_value *old,
23         size_t free_space)
24 {
25     struct bdk_devicetree_key_value *new;
26     size_t len = sizeof(struct bdk_devicetree_key_value) + free_space;
27     const struct bdk_devicetree_key_value *iter = old;
28     while (iter->key) {
29        iter++;
30        len += sizeof(struct bdk_devicetree_key_value);
31     }
32     new = malloc(len);
33     if (!new)
34        return NULL;
35 
36     memcpy(new, old, len);
37 
38     return new;
39 }
40 
41 /**
42  * Set the device tree used for configuration
43  *
44  * @param fdt    Device tree to use. Memory is assumed to be from malloc() and bdk_config takes
45  *               over ownership on success
46  *
47  * @return Zero on success, negative on failure
48  */
bdk_config_set_fdt(const struct bdk_devicetree_key_value * fdt)49 int bdk_config_set_fdt(const struct bdk_devicetree_key_value *fdt)
50 {
51     if (ENV_HAS_HEAP_SECTION)
52         config_fdt = bdk_config_duplicate(fdt, 0);
53     else
54         config_fdt = (void *)fdt;
55 
56     return 0;
57 }
58 
59 /**
60  * Look up a configuration item in the environment and replace it.
61  *
62  * @param name
63  *
64  * @return
65  */
set_value(const char * name,const char * val)66 static void set_value(const char *name, const char *val)
67 {
68     struct bdk_devicetree_key_value *iter;
69     char n[64];
70 
71     strncpy(n, name, sizeof(n));
72     n[sizeof(n)-1] = '\0';
73 
74     iter = config_fdt;
75     while (iter->key) {
76         if (strcmp(iter->key, n) == 0) {
77             // we are leaking memory here...
78             iter->value = (const char *)strdup(val);
79             return;
80         }
81         iter++;
82     }
83     /* Not found: Create one */
84     iter = bdk_config_duplicate(config_fdt,
85        sizeof(struct bdk_devicetree_key_value));
86     if (!iter)
87         return;
88 
89     free(config_fdt);
90     config_fdt = iter;
91     while (iter->key) {
92         iter++;
93     }
94     iter->key = (const char *)strdup(name);
95     iter->value = (const char *)strdup(val);
96     iter++;
97     iter->key = 0;
98     iter->value = 0;
99 }
100 
101 /**
102  * Look up a configuration item in the environment.
103  *
104  * @param name
105  *
106  * @return
107  */
get_value(const char * name)108 static const char *get_value(const char *name)
109 {
110     const struct bdk_devicetree_key_value *iter;
111     char n[64];
112 
113     strncpy(n, name, sizeof(n));
114     n[sizeof(n)-1] = '\0';
115 
116     while (*n) {
117         iter = config_fdt;
118         while (iter->key) {
119             if (strcmp(iter->key, n) == 0)
120                 return iter->value;
121             iter++;
122         }
123 
124         char *p = strrchr(n, '.');
125         if (p)
126             *p = '\0';
127         else
128             break;
129     }
130     return NULL;
131 }
132 
133 /**
134  * Get an integer configuration item
135  *
136  * @param cfg_item  Config item to get. If the item takes parameters (see bdk_config_t), then the
137  *                  parameters are listed following cfg_item.
138  *
139  * @return The value of the configuration item, or def_value if the item is not set
140  */
bdk_config_get_int(bdk_config_t cfg_item,...)141 int64_t bdk_config_get_int(bdk_config_t cfg_item, ...)
142 {
143     char name[64];
144     size_t count;
145     int64_t tmp;
146 
147     assert(cfg_item < __BDK_CONFIG_END);
148 
149     /* Make sure the correct access function was called */
150     assert(config_info[cfg_item].ctype == BDK_CONFIG_TYPE_INT);
151 
152     if (!config_fdt)
153         return config_info[cfg_item].default_value;
154 
155     va_list args;
156     va_start(args, cfg_item);
157     vsnprintf(name, sizeof(name)-1, config_info[cfg_item].format, args);
158     va_end(args);
159 
160     const char *val = get_value(name);
161     if (!val)
162         return config_info[cfg_item].default_value;
163 
164 #if 0
165         if ((val[0] == '0') && (val[1] == 'x'))
166             count = sscanf(val + 2, "%lx", &tmp);
167         else
168             count = sscanf(val, "%li", &tmp);
169 #endif
170 
171     if ((val[0] == '0') && (val[1] == 'x'))
172         count = str_to_hex(val + 2, &tmp);
173     else
174         count = str_to_int(val, &tmp);
175     if (count == 1) {
176         if ((tmp < config_info[cfg_item].min_value) ||
177             (tmp > config_info[cfg_item].max_value)) {
178             printk(BIOS_WARNING, "Out of range for %s = %s, using "
179                    "default\n", name, val);
180             return config_info[cfg_item].default_value;
181         }
182         return tmp;
183     }
184 
185     printk(BIOS_WARNING, "Failed to parse %s = %s, using default\n",
186            name, val);
187     return config_info[cfg_item].default_value;
188 }
189 
190 /**
191  * Set an integer configuration item. Note this only sets the item in memory,
192  * persistent storage is not updated.
193  *
194  * @param value    Configuration item value
195  * @param cfg_item Config item to set. If the item takes parameters (see bdk_config_t), then the
196  *                 parameters are listed following cfg_item.
197  */
bdk_config_set_int(int64_t value,bdk_config_t cfg_item,...)198 void bdk_config_set_int(int64_t value, bdk_config_t cfg_item, ...)
199 {
200     char name[64], val[32];
201 
202     assert(cfg_item < __BDK_CONFIG_END);
203 
204     /* Make sure the correct access function was called */
205     assert(config_info[cfg_item].ctype == BDK_CONFIG_TYPE_INT);
206 
207     if (!ENV_HAS_HEAP_SECTION)
208         return;
209 
210     if (!config_fdt)
211         return;
212 
213     va_list args;
214     va_start(args, cfg_item);
215     vsnprintf(name, sizeof(name)-1, config_info[cfg_item].format, args);
216     va_end(args);
217 
218     snprintf(val, sizeof(val), "0x%016llx", value);
219     set_value(name, val);
220 }
221 
222 /**
223  * Get a string configuration item
224  *
225  * @param cfg_item  Config item to get. If the item takes parameters (see bdk_config_t), then the
226  *                  parameters are listed following cfg_item.
227  *
228  * @return The value of the configuration item, or def_value if the item is not set
229  */
bdk_config_get_str(bdk_config_t cfg_item,...)230 const char *bdk_config_get_str(bdk_config_t cfg_item, ...)
231 {
232     char name[64];
233 
234     /* Make sure the correct access function was called */
235     assert(config_info[cfg_item].ctype == BDK_CONFIG_TYPE_STR);
236 
237     if (!config_fdt)
238         return (const char *)config_info[cfg_item].default_value;
239 
240     va_list args;
241     va_start(args, cfg_item);
242     vsnprintf(name, sizeof(name)-1, config_info[cfg_item].format, args);
243 
244     if (BDK_CONFIG_QLM_MODE == cfg_item) {
245         char name2[64];
246         vsnprintf(name2, sizeof(name2)-1,"QLM-MODE.N%d.DLM%d" , args);
247         const char *val = get_value(name2);
248         if (val)
249             printk(BIOS_WARNING, "%s: QLM-MODE.N%%d.DLM%%d format "
250                    "depricated. Please use QLM-MODE.N%%d.QLM%%d "
251                    "instead\n", name2);
252     }
253     va_end(args);
254 
255     const char *val = get_value(name);
256     if (val)
257         return val;
258     else
259         return (const char *)config_info[cfg_item].default_value;
260 }
261 
262 bdk_config_info_t config_info[] = {
263     /* Board manufacturing data */
264     [BDK_CONFIG_BOARD_MODEL] = {
265         .format = "BOARD-MODEL", /* String, No parameters */
266         .ctype = BDK_CONFIG_TYPE_STR,
267         .default_value = (long)"unknown",
268     },
269     [BDK_CONFIG_BOARD_REVISION] = {
270         .format = "BOARD-REVISION", /* String, No parameters */
271         .ctype = BDK_CONFIG_TYPE_STR,
272         .default_value = (long)"unknown",
273     },
274     [BDK_CONFIG_BOARD_SERIAL] = {
275         .format = "BOARD-SERIAL", /* String, No parameters */
276         .ctype = BDK_CONFIG_TYPE_STR,
277         .default_value = (long)"unknown",
278     },
279     [BDK_CONFIG_MAC_ADDRESS] = {
280         .format = "BOARD-MAC-ADDRESS", /* Int64, No parameters */
281         .ctype = BDK_CONFIG_TYPE_INT,
282         .default_value = 0, /* Default updated at boot based on fuses */
283         .min_value = 0,
284         .max_value = 0xffffffffffffll,
285     },
286     [BDK_CONFIG_MAC_ADDRESS_NUM] = {
287         .format = "BOARD-MAC-ADDRESS-NUM", /* Int, No parameters */
288         .ctype = BDK_CONFIG_TYPE_INT,
289         .default_value = 0,
290         .min_value = 0,
291         .max_value = 256,
292     },
293     [BDK_CONFIG_MAC_ADDRESS_NUM_OVERRIDE] = {
294         .format = "BOARD-MAC-ADDRESS-NUM-OVERRIDE", /* Int, No parameters */
295         .ctype = BDK_CONFIG_TYPE_INT,
296         .default_value = -1,
297         .min_value = -1,
298         .max_value = 256,
299     },
300 
301     /* Board generic */
302     [BDK_CONFIG_BMC_TWSI] = {
303         .format = "BMC-TWSI", /* No parameters */
304         .ctype = BDK_CONFIG_TYPE_INT,
305         .default_value = -1, /* TWSI bus number, -1 = disabled */
306         .min_value = -1,
307         .max_value = 5,
308     },
309     [BDK_CONFIG_WATCHDOG_TIMEOUT] = {
310         .format = "WATCHDOG-TIMEOUT", /* No parameters */
311         .ctype = BDK_CONFIG_TYPE_INT,
312         .default_value = 0, /* 0 = disabled */
313         .min_value = 0,
314         .max_value = 10000,
315     },
316     [BDK_CONFIG_TWSI_WRITE] = {
317         .format = "TWSI-WRITE", /* No parameters */
318         .ctype = BDK_CONFIG_TYPE_STR_LIST,
319     },
320     [BDK_CONFIG_MDIO_WRITE] = {
321         .format = "MDIO-WRITE", /* No parameters */
322         .ctype = BDK_CONFIG_TYPE_STR_LIST,
323     },
324 
325     /* Board wiring of network ports and PHYs */
326     [BDK_CONFIG_PHY_ADDRESS] = {
327         .format = "PHY-ADDRESS.N%d.BGX%d.P%d", /* Parameters: Node, Interface, Port */
328         .ctype = BDK_CONFIG_TYPE_INT,
329         .default_value = -1, /* Default to no PHY */
330         .min_value = -1,
331         .max_value = 0xffffffffll,
332     },
333     [BDK_CONFIG_BGX_ENABLE] = {
334         .format = "BGX-ENABLE.N%d.BGX%d.P%d", /* Parameters: Node, BGX, Port */
335         .ctype = BDK_CONFIG_TYPE_INT,
336         .default_value = 1, /* 0 = disable, 1 = enable */
337         .min_value = 0,
338         .max_value = 1,
339     },
340     /* Non-EBB specific SFF8104 board and alike */
341     [BDK_CONFIG_AQUANTIA_PHY] = {
342         .format = "AQUANTIA-PHY.N%d.BGX%d.P%d", /*Parameters: Node, BGX, Port */
343         .default_value = 0,
344         .min_value = 0,
345         .max_value = 0xffffll,
346     },
347 
348 
349     /* BDK Configuration params */
350     [BDK_CONFIG_VERSION] = {
351         .format = "BDK-VERSION",
352         .ctype = BDK_CONFIG_TYPE_STR,
353     },
354     [BDK_CONFIG_NUM_PACKET_BUFFERS] = {
355         .format = "BDK-NUM-PACKET-BUFFERS",
356         .ctype = BDK_CONFIG_TYPE_INT,
357         .default_value = 0, /* Default updated at boot */
358         .min_value = 0,
359         .max_value = 1000000,
360     },
361     [BDK_CONFIG_PACKET_BUFFER_SIZE] = {
362         .format = "BDK-PACKET-BUFFER-SIZE",
363         .ctype = BDK_CONFIG_TYPE_INT,
364         .default_value = 1024, /* bytes */
365         .min_value = 128,
366         .max_value = 32768,
367     },
368     [BDK_CONFIG_SHOW_LINK_STATUS] = {
369         .format = "BDK-SHOW-LINK-STATUS",
370         .ctype = BDK_CONFIG_TYPE_INT,
371         .default_value = 1, /* 0 = off, 1 = on */
372         .min_value = 0,
373         .max_value = 1,
374     },
375     [BDK_CONFIG_COREMASK] = {
376         .format = "BDK-COREMASK",
377         .ctype = BDK_CONFIG_TYPE_INT,
378         .default_value = 0, /* Zero means all cores */
379         .min_value = 0,
380         .max_value = 0xffffffffffffll,
381     },
382     [BDK_CONFIG_BOOT_MENU_TIMEOUT] = {
383         .format = "BDK-BOOT-MENU-TIMEOUT",
384         .ctype = BDK_CONFIG_TYPE_INT,
385         .default_value = 10, /* seconds */
386         .min_value = 0,
387         .max_value = 300,
388     },
389     [BDK_CONFIG_BOOT_PATH_OPTION] = {
390         .format = "BDK-BOOT-PATH-OPTION",
391         .ctype = BDK_CONFIG_TYPE_INT,
392         .default_value = 0, /* 0 = normal, 1 = diagnostics */
393         .min_value = 0,
394         .max_value = 1,
395     },
396     [BDK_CONFIG_BOOT_NEXT_STAGE] = {
397         .format = "BDK-CONFIG-BOOT-NEXT-STAGE-%s",
398         .ctype = BDK_CONFIG_TYPE_STR,
399     },
400     [BDK_CONFIG_TRACE] = {
401         .format = "BDK-CONFIG-TRACE",
402         .ctype = BDK_CONFIG_TYPE_INT,
403         .default_value = 0, /* bitmask */
404         .min_value = 0,
405         .max_value = 0x7fffffffffffffffull,
406     },
407 
408     /* Chip feature items */
409     [BDK_CONFIG_MULTI_NODE] = {
410         .format = "MULTI-NODE", /* No parameters */
411         .ctype = BDK_CONFIG_TYPE_INT,
412         .default_value = 2, /* 2 = Auto */
413         .min_value = 0,
414         .max_value = 2,
415     },
416     [BDK_CONFIG_PCIE_EA] = {
417         .format = "PCIE-ENHANCED-ALLOCATION", /* No parameters */
418         .ctype = BDK_CONFIG_TYPE_INT,
419         .default_value = 1, /* 1 = EA supported, 0 = EA not supported */
420         .min_value = 0,
421         .max_value = 1,
422     },
423     [BDK_CONFIG_PCIE_ORDERING] = {
424         .format = "PCIE-ORDERING", /* No parameters */
425         .ctype = BDK_CONFIG_TYPE_INT,
426         .default_value = 0, /* 1 = Wait for commit, 0 = Don't wait for commit */
427         .min_value = 0,
428         .max_value = 1,
429     },
430     [BDK_CONFIG_PCIE_PRESET_REQUEST_VECTOR] = {
431         .format = "PCIE-PRESET-REQUEST-VECTOR.N%d.PORT%d", /* Parameters: Node, Port */
432         .ctype = BDK_CONFIG_TYPE_INT,
433         .default_value = 0x593, /* Value for PCIERCX_CFG554[PRV] */
434         .min_value = 0,
435         .max_value = 0xffff,
436     },
437     [BDK_CONFIG_PCIE_WIDTH] = {
438     .format = "PCIE-WIDTH.N%d.PORT%d", /* Parameters: Node, Port */
439     .ctype = BDK_CONFIG_TYPE_INT,
440     .default_value = -1, /* Width override for PCIe links */
441     .min_value = -1,
442     .max_value = 16,
443     },
444     [BDK_CONFIG_PCIE_PHYSICAL_SLOT] = {
445         .format = "PCIE-PHYSICAL-SLOT.N%d.PORT%d", /* Parameters: Node, Port */
446         .ctype = BDK_CONFIG_TYPE_INT,
447         .default_value = -1, /* Define which physical slot we connect to on the board */
448         .min_value = -1,
449         .max_value = 8191,
450     },
451     [BDK_CONFIG_PCIE_SKIP_LINK_TRAIN] = {
452             .format = "PCIE-SKIP-LINK-TRAIN.N%d.PORT%d", /* Parameters: Node, Port */
453             .ctype = BDK_CONFIG_TYPE_INT,
454             .default_value = 0, /* Define which physical slot we connect to on the board */
455             .min_value = 0,
456             .max_value = 1,
457         },
458     [BDK_CONFIG_PCIE_FLASH] = {
459         .format = "PCIE-FLASH.N%d.PORT%d", /* Parameters: Node, Port */
460         .ctype = BDK_CONFIG_TYPE_STR_LIST,
461     },
462     [BDK_CONFIG_CCPI_LANE_REVERSE] = {
463         .format = "CCPI-LANE-REVERSE", /* No parameters */
464         .ctype = BDK_CONFIG_TYPE_INT,
465         .default_value = 0, /* 0 = No forced lane reversal, 1 = forced lane reversal */
466         .min_value = 0,
467         .max_value = 1,
468     },
469     [BDK_CONFIG_CHIP_SKU] = {
470         .format = "CHIP-SKU.NODE%d", /* Parameter: Node */
471         .ctype = BDK_CONFIG_TYPE_STR,
472         .default_value = (long)"TBD",
473     },
474     [BDK_CONFIG_CHIP_SERIAL] = {
475         .format = "CHIP-SERIAL.NODE%d", /* Parameter: Node */
476         .ctype = BDK_CONFIG_TYPE_STR,
477         .default_value = (long)"TBD",
478     },
479     [BDK_CONFIG_CHIP_UNIQUE_ID] = {
480         .format = "CHIP-UNIQUE-ID.NODE%d", /* Parameter: Node */
481         .ctype = BDK_CONFIG_TYPE_STR,
482         .default_value = (long)"TBD",
483     },
484 
485     /* QLM related config */
486     [BDK_CONFIG_QLM_AUTO_CONFIG] = {
487         .format = "QLM-AUTO-CONFIG", /* Parameters: Node */
488         .ctype = BDK_CONFIG_TYPE_INT,
489         .default_value = 0, /* 0 = off, 1 = on */
490         .min_value = 0,
491         .max_value = 1,
492     },
493     /* SFF8104 related QLM config */
494     [BDK_CONFIG_QLM_DIP_AUTO_CONFIG] = {
495         .format = "QLM-DIP-AUTO-CONFIG", /* Parameters: Node */
496         .ctype = BDK_CONFIG_TYPE_INT,
497         .default_value = 0, /* 0 = off, 1 = on */
498         .min_value = 0,
499         .max_value = 1,
500     },
501 
502     [BDK_CONFIG_QLM_MODE] = {
503         .format = "QLM-MODE.N%d.QLM%d", /* Parameters: Node, QLM */
504         .ctype = BDK_CONFIG_TYPE_STR,
505     },
506     [BDK_CONFIG_QLM_FREQ] = {
507         .format = "QLM-FREQ.N%d.QLM%d", /* Parameters: Node, QLM */
508         .ctype = BDK_CONFIG_TYPE_INT,
509         .default_value = 0, /* Mhz */
510         .min_value = 0,
511         .max_value = 10312,
512     },
513     [BDK_CONFIG_QLM_CLK] = {
514         .format = "QLM-CLK.N%d.QLM%d", /* Parameters: Node, QLM */
515         .ctype = BDK_CONFIG_TYPE_INT,
516         .default_value = 2, /* 2 = External */
517         .min_value = 0,
518         .max_value = 2,
519     },
520     [BDK_CONFIG_QLM_TUNING_TX_SWING] = {
521         .format = "QLM-TUNING-TX-SWING.N%d.QLM%d.LANE%d", /* Parameters: Node, QLM, Lane */
522         .ctype = BDK_CONFIG_TYPE_INT,
523         .default_value = -1, /* Default of no tuning */
524         .min_value = -1,
525         .max_value = 31,
526     },
527     [BDK_CONFIG_QLM_TUNING_TX_PREMPTAP] = {
528         .format = "QLM-TUNING-TX-PREMPTAP.N%d.QLM%d.LANE%d", /* Parameters: Node, QLM, Lane */
529         .ctype = BDK_CONFIG_TYPE_INT,
530         .default_value = -1, /* Default of no tuning */
531         .min_value = -1,
532         .max_value = 511,
533     },
534     [BDK_CONFIG_QLM_TUNING_TX_GAIN] = {
535         .format = "QLM-TUNING-TX-GAIN.N%d.QLM%d.LANE%d", /* Parameters: Node, QLM, Lane */
536         .ctype = BDK_CONFIG_TYPE_INT,
537         .default_value = -1, /* Default of no tuning */
538         .min_value = -1,
539         .max_value = 7,
540     },
541     [BDK_CONFIG_QLM_TUNING_TX_VBOOST] = {
542         .format = "QLM-TUNING-TX-VBOOST.N%d.QLM%d.LANE%d", /* Parameters: Node, QLM, Lane */
543         .ctype = BDK_CONFIG_TYPE_INT,
544         .default_value = -1, /* Default of no tuning */
545         .min_value = -1,
546         .max_value = 1,
547     },
548     [BDK_CONFIG_QLM_CHANNEL_LOSS] = {
549         .format = "QLM-CHANNEL-LOSS.N%d.QLM%d", /* Parameters: Node, QLM */
550         .ctype = BDK_CONFIG_TYPE_INT,
551         .default_value = -1, /* Default will use Cavium defaults */
552         .min_value = -1,
553         .max_value = 40,
554     },
555     /* DRAM configuration options */
556     [BDK_CONFIG_DDR_SPEED] = {
557         .format = "DDR-SPEED.N%d", /* Parameters: Node */
558         .ctype = BDK_CONFIG_TYPE_INT,
559         .default_value = 0, /* In MT/s */
560         .min_value = 0,
561         .max_value = 2400,
562     },
563     [BDK_CONFIG_DDR_ALT_REFCLK] = {
564         .format = "DDR-ALT-REFCLK.N%d", /* Parameters: Node */
565         .ctype = BDK_CONFIG_TYPE_INT,
566         .default_value = 0, /* Mhz */
567         .min_value = 0,
568         .max_value = 100,
569     },
570     [BDK_CONFIG_DDR_SPD_ADDR] = {
571         .format = "DDR-CONFIG-SPD-ADDR.DIMM%d.LMC%d.N%d", /* Parameters: DIMM, LMC, Node */
572         .ctype = BDK_CONFIG_TYPE_INT,
573         .default_value = 0,
574         .min_value = 0,
575         .max_value = 0xffff,
576     },
577     [BDK_CONFIG_DDR_SPD_DATA] = {
578         .format = "DDR-CONFIG-SPD-DATA.DIMM%d.LMC%d.N%d", /* Parameters: DIMM, LMC, Node */
579         .ctype = BDK_CONFIG_TYPE_BINARY,
580     },
581     [BDK_CONFIG_DDR_RANKS_DQX_CTL] = {
582         .format = "DDR-CONFIG-DQX-CTL.RANKS%d.DIMMS%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, LMC, Node */
583         .ctype = BDK_CONFIG_TYPE_INT,
584         .default_value = 0,
585         .min_value = 0,
586         .max_value = 0xf,
587     },
588     [BDK_CONFIG_DDR_RANKS_WODT_MASK] = {
589         .format = "DDR-CONFIG-WODT-MASK.RANKS%d.DIMMS%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, LMC, Node */
590         .ctype = BDK_CONFIG_TYPE_INT,
591         .default_value = 0,
592         .min_value = 0,
593         .max_value = 0xfffffff,
594     },
595     [BDK_CONFIG_DDR_RANKS_MODE1_PASR] = {
596         .format = "DDR-CONFIG-MODE1-PASR.RANKS%d.DIMMS%d.RANK%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, Rank, LMC, Node */
597         .ctype = BDK_CONFIG_TYPE_INT,
598         .default_value = 0,
599         .min_value = 0,
600         .max_value = 0x7,
601     },
602     [BDK_CONFIG_DDR_RANKS_MODE1_ASR] = {
603         .format = "DDR-CONFIG-MODE1-ASR.RANKS%d.DIMMS%d.RANK%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, Rank, LMC, Node */
604         .ctype = BDK_CONFIG_TYPE_INT,
605         .default_value = 0,
606         .min_value = 0,
607         .max_value = 1,
608     },
609     [BDK_CONFIG_DDR_RANKS_MODE1_SRT] = {
610         .format = "DDR-CONFIG-MODE1-SRT.RANKS%d.DIMMS%d.RANK%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, Rank, LMC, Node */
611         .ctype = BDK_CONFIG_TYPE_INT,
612         .default_value = 0,
613         .min_value = 0,
614         .max_value = 1,
615     },
616     [BDK_CONFIG_DDR_RANKS_MODE1_RTT_WR] = {
617         .format = "DDR-CONFIG-MODE1-RTT-WR.RANKS%d.DIMMS%d.RANK%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, Rank, LMC, Node */
618         .ctype = BDK_CONFIG_TYPE_INT, // Split for extension bit
619         .default_value = 0,
620         .min_value = 0,
621         .max_value = 0x7,
622     },
623     [BDK_CONFIG_DDR_RANKS_MODE1_DIC] = {
624         .format = "DDR-CONFIG-MODE1-DIC.RANKS%d.DIMMS%d.RANK%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, Rank, LMC, Node */
625         .ctype = BDK_CONFIG_TYPE_INT,
626         .default_value = 0,
627         .min_value = 0,
628         .max_value = 0x3,
629     },
630     [BDK_CONFIG_DDR_RANKS_MODE1_RTT_NOM] = {
631         .format = "DDR-CONFIG-MODE1-RTT-NOM.RANKS%d.DIMMS%d.RANK%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, Rank, LMC, Node */
632         .ctype = BDK_CONFIG_TYPE_INT,
633         .default_value = 0,
634         .min_value = 0,
635         .max_value = 0x7,
636     },
637     [BDK_CONFIG_DDR_RANKS_MODE1_DB_OUTPUT_IMPEDANCE] = {
638         .format = "DDR-CONFIG-MODE1-DB-OUTPUT-IMPEDANCE.RANKS%d.DIMMS%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, LMC, Node */
639         .ctype = BDK_CONFIG_TYPE_INT, // Not per RANK, only one
640         .default_value = 0,
641         .min_value = 0,
642         .max_value = 0x7,
643     },
644     [BDK_CONFIG_DDR_RANKS_MODE2_RTT_PARK] = {
645         .format = "DDR-CONFIG-MODE2-RTT-PARK.RANKS%d.DIMMS%d.RANK%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, Rank, LMC, Node */
646         .ctype = BDK_CONFIG_TYPE_INT,
647         .default_value = 0,
648         .min_value = 0,
649         .max_value = 0x7,
650     },
651     [BDK_CONFIG_DDR_RANKS_MODE2_VREF_VALUE] = {
652         .format = "DDR-CONFIG-MODE2-VREF-VALUE.RANKS%d.DIMMS%d.RANK%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, Rank, LMC, Node */
653         .ctype = BDK_CONFIG_TYPE_INT,
654         .default_value = 0,
655         .min_value = 0,
656         .max_value = 0x3f,
657     },
658     [BDK_CONFIG_DDR_RANKS_MODE2_VREF_RANGE] = {
659         .format = "DDR-CONFIG-MODE2-VREF-RANGE.RANKS%d.DIMMS%d.RANK%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, Rank, LMC, Node */
660         .ctype = BDK_CONFIG_TYPE_INT,
661         .default_value = 0,
662         .min_value = 0,
663         .max_value = 1,
664     },
665     [BDK_CONFIG_DDR_RANKS_MODE2_VREFDQ_TRAIN_EN] = {
666         .format = "DDR-CONFIG-MODE2-VREFDQ-TRAIN-EN.RANKS%d.DIMMS%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, LMC, Node */
667         .ctype = BDK_CONFIG_TYPE_INT, // Not per RANK, only one
668         .default_value = 0,
669         .min_value = 0,
670         .max_value = 1,
671     },
672 
673     [BDK_CONFIG_DDR_RANKS_RODT_CTL] = {
674         .format = "DDR-CONFIG-RODT-CTL.RANKS%d.DIMMS%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, LMC, Node */
675         .ctype = BDK_CONFIG_TYPE_INT,
676         .default_value = 0,
677         .min_value = 0,
678         .max_value = 0xf,
679     },
680     [BDK_CONFIG_DDR_RANKS_RODT_MASK] = {
681         .format = "DDR-CONFIG-RODT-MASK.RANKS%d.DIMMS%d.LMC%d.N%d", /* Parameters: Num Ranks, Num DIMMs, LMC, Node */
682         .ctype = BDK_CONFIG_TYPE_INT,
683         .default_value = 0,
684         .min_value = 0,
685         .max_value = 0xfffffff,
686     },
687     [BDK_CONFIG_DDR_CUSTOM_MIN_RTT_NOM_IDX] = {
688         .format = "DDR-CONFIG-CUSTOM-MIN-RTT-NOM-IDX.LMC%d.N%d", /* Parameters: LMC, Node */
689         .ctype = BDK_CONFIG_TYPE_INT,
690         .default_value = 1,
691         .min_value = 0,
692         .max_value = 7,
693     },
694     [BDK_CONFIG_DDR_CUSTOM_MAX_RTT_NOM_IDX] = {
695         .format = "DDR-CONFIG-CUSTOM-MAX-RTT-NOM-IDX.LMC%d.N%d", /* Parameters: LMC, Node */
696         .ctype = BDK_CONFIG_TYPE_INT,
697         .default_value = 5,
698         .min_value = 0,
699         .max_value = 7,
700     },
701     [BDK_CONFIG_DDR_CUSTOM_MIN_RODT_CTL] = {
702         .format = "DDR-CONFIG-CUSTOM-MIN-RODT-CTL.LMC%d.N%d", /* Parameters: LMC, Node */
703         .ctype = BDK_CONFIG_TYPE_INT,
704         .default_value = 1,
705         .min_value = 0,
706         .max_value = 7,
707     },
708     [BDK_CONFIG_DDR_CUSTOM_MAX_RODT_CTL] = {
709         .format = "DDR-CONFIG-CUSTOM-MAX-RODT-CTL.LMC%d.N%d", /* Parameters: LMC, Node */
710         .ctype = BDK_CONFIG_TYPE_INT,
711         .default_value = 5,
712         .min_value = 0,
713         .max_value = 7,
714     },
715     [BDK_CONFIG_DDR_CUSTOM_CK_CTL] = {
716         .format = "DDR-CONFIG-CUSTOM-CK-CTL.LMC%d.N%d", /* Parameters: LMC, Node */
717         .ctype = BDK_CONFIG_TYPE_INT,
718         .default_value = 0,
719         .min_value = 0,
720         .max_value = 0xffff,
721     },
722     [BDK_CONFIG_DDR_CUSTOM_CMD_CTL] = {
723         .format = "DDR-CONFIG-CUSTOM-CMD-CTL.LMC%d.N%d", /* Parameters: LMC, Node */
724         .ctype = BDK_CONFIG_TYPE_INT,
725         .default_value = 0,
726         .min_value = 0,
727         .max_value = 0xffff,
728     },
729     [BDK_CONFIG_DDR_CUSTOM_CTL_CTL] = {
730         .format = "DDR-CONFIG-CUSTOM-CTL-CTL.LMC%d.N%d", /* Parameters: LMC, Node */
731         .ctype = BDK_CONFIG_TYPE_INT,
732         .default_value = 0,
733         .min_value = 0,
734         .max_value = 0xf,
735     },
736     [BDK_CONFIG_DDR_CUSTOM_MIN_CAS_LATENCY] = {
737         .format = "DDR-CONFIG-CUSTOM-MIN-CAS-LATENCY.LMC%d.N%d", /* Parameters: LMC, Node */
738         .ctype = BDK_CONFIG_TYPE_INT,
739         .default_value = 0,
740         .min_value = 0,
741         .max_value = 0xffff,
742     },
743     [BDK_CONFIG_DDR_CUSTOM_OFFSET_EN] = {
744         .format = "DDR-CONFIG-CUSTOM-OFFSET-EN.LMC%d.N%d", /* Parameters: LMC, Node */
745         .ctype = BDK_CONFIG_TYPE_INT,
746         .default_value = 1,
747         .min_value = 0,
748         .max_value = 1,
749     },
750     [BDK_CONFIG_DDR_CUSTOM_OFFSET] = {
751         .format = "DDR-CONFIG-CUSTOM-OFFSET.%s.LMC%d.N%d", /* Parameters: Type(UDIMM,RDIMM), LMC, Node */
752         .ctype = BDK_CONFIG_TYPE_INT, // UDIMM or RDIMM
753         .default_value = 0,
754         .min_value = 0,
755         .max_value = 0xf,
756     },
757     [BDK_CONFIG_DDR_CUSTOM_RLEVEL_COMPUTE] = {
758         .format = "DDR-CONFIG-CUSTOM-RLEVEL-COMPUTE.LMC%d.N%d", /* Parameters: LMC, Node */
759         .ctype = BDK_CONFIG_TYPE_INT,
760         .default_value = 0,
761         .min_value = 0,
762         .max_value = 1,
763     },
764     [BDK_CONFIG_DDR_CUSTOM_RLEVEL_COMP_OFFSET] = {
765         .format = "DDR-CONFIG-CUSTOM-RLEVEL-COMP-OFFSET.%s.LMC%d.N%d", /* Parameters: Type(UDIMM,RDIMM), LMC, Node */
766         .ctype = BDK_CONFIG_TYPE_INT, // UDIMM or RDIMM
767         .default_value = 2,
768         .min_value = 0,
769         .max_value = 0xffff,
770     },
771     [BDK_CONFIG_DDR_CUSTOM_DDR2T] = {
772         .format = "DDR-CONFIG-CUSTOM-DDR2T.%s.LMC%d.N%d", /* Parameters: Type(UDIMM,RDIMM), LMC, Node */
773         .ctype = BDK_CONFIG_TYPE_INT, // UDIMM or RDIMM
774         .default_value = 0,
775         .min_value = 0,
776         .max_value = 1,
777     },
778     [BDK_CONFIG_DDR_CUSTOM_DISABLE_SEQUENTIAL_DELAY_CHECK] = {
779         .format = "DDR-CONFIG-CUSTOM-DISABLE-SEQUENTIAL-DELAY-CHECK.LMC%d.N%d", /* Parameters: LMC, Node */
780         .ctype = BDK_CONFIG_TYPE_INT,
781         .default_value = 0,
782         .min_value = 0,
783         .max_value = 1,
784     },
785     [BDK_CONFIG_DDR_CUSTOM_MAXIMUM_ADJACENT_RLEVEL_DELAY_INCREMENT] = {
786         .format = "DDR-CONFIG-CUSTOM-MAXIMUM-ADJACENT-RLEVEL-DELAY-INCREMENT.LMC%d.N%d", /* Parameters: LMC, Node */
787         .ctype = BDK_CONFIG_TYPE_INT,
788         .default_value = 0,
789         .min_value = 0,
790         .max_value = 0xffff,
791     },
792     [BDK_CONFIG_DDR_CUSTOM_PARITY] = {
793         .format = "DDR-CONFIG-CUSTOM-PARITY.LMC%d.N%d", /* Parameters: LMC, Node */
794         .ctype = BDK_CONFIG_TYPE_INT,
795         .default_value = 0,
796         .min_value = 0,
797         .max_value = 1,
798     },
799     [BDK_CONFIG_DDR_CUSTOM_FPRCH2] = {
800         .format = "DDR-CONFIG-CUSTOM-FPRCH2.LMC%d.N%d", /* Parameters: LMC, Node */
801         .ctype = BDK_CONFIG_TYPE_INT,
802         .default_value = 0,
803         .min_value = 0,
804         .max_value = 0xf,
805     },
806     [BDK_CONFIG_DDR_CUSTOM_MODE32B] = {
807         .format = "DDR-CONFIG-CUSTOM-MODE32B.LMC%d.N%d", /* Parameters: LMC, Node */
808         .ctype = BDK_CONFIG_TYPE_INT,
809         .default_value = 0,
810         .min_value = 0,
811         .max_value = 1,
812     },
813     [BDK_CONFIG_DDR_CUSTOM_MEASURED_VREF] = {
814         .format = "DDR-CONFIG-CUSTOM-MEASURED-VREF.LMC%d.N%d", /* Parameters: LMC, Node */
815         .ctype = BDK_CONFIG_TYPE_INT,
816         .default_value = 0,
817         .min_value = 0,
818         .max_value = 1,
819     },
820     [BDK_CONFIG_DDR_CUSTOM_DLL_WRITE_OFFSET] = {
821         .format = "DDR-CONFIG-CUSTOM-DLL-WRITE-OFFSET.BYTE%d.LMC%d.N%d", /* Parameters: Byte, LMC, Node */
822         .ctype = BDK_CONFIG_TYPE_INT,
823         .default_value = 0,
824         .min_value = -63,
825         .max_value = 63,
826     },
827     [BDK_CONFIG_DDR_CUSTOM_DLL_READ_OFFSET] = {
828         .format = "DDR-CONFIG-CUSTOM-DLL-READ-OFFSET.BYTE%d.LMC%d.N%d", /* Parameters: Byte, LMC, Node */
829         .ctype = BDK_CONFIG_TYPE_INT,
830         .default_value = 0,
831         .min_value = -63,
832         .max_value = 63,
833     },
834 
835     /* High level DRAM options */
836     [BDK_CONFIG_DRAM_VERBOSE] = {
837         .format = "DDR-VERBOSE", /* Parameters: Node */
838         .ctype = BDK_CONFIG_TYPE_INT,
839         .default_value = 0, /* 0 = off */
840         .min_value = 0,
841         .max_value = 255,
842     },
843     [BDK_CONFIG_DRAM_BOOT_TEST] = {
844         .format = "DDR-TEST-BOOT", /* No parameters */
845         .ctype = BDK_CONFIG_TYPE_INT,
846         .default_value = 0, /* 0 = off, 1 = on */
847         .min_value = 0,
848         .max_value = 1,
849     },
850     [BDK_CONFIG_DRAM_CONFIG_GPIO] = {
851         .format = "DDR-CONFIG-GPIO", /* No parameters */
852         .ctype = BDK_CONFIG_TYPE_INT,
853         .default_value = -1, /* -1 = disabled, otherwise GPIO number */
854         .min_value = -1,
855         .max_value = 63,
856     },
857     [BDK_CONFIG_DRAM_SCRAMBLE] = {
858         .format = "DDR-CONFIG-SCRAMBLE", /* No parameters */
859         .ctype = BDK_CONFIG_TYPE_INT,
860         .default_value = 2, /* 0=off, 1=on, 2=trust on, non-trust off */
861         .min_value = 0,
862         .max_value = 2,
863     },
864 
865     /* USB */
866     [BDK_CONFIG_USB_PWR_GPIO] = {
867         .format = "USB-PWR-GPIO.N%d.PORT%d", /* Parameters: Node, Port */
868         .ctype = BDK_CONFIG_TYPE_INT,
869         .default_value = -1, /* GPIO number, or -1 for none */
870         .min_value = -1,
871         .max_value = 49,
872     },
873     [BDK_CONFIG_USB_PWR_GPIO_POLARITY] = {
874         .format = "USB-PWR-GPIO-POLARITY.N%d.PORT%d", /* Parameters: Node, Port */
875         .ctype = BDK_CONFIG_TYPE_INT,
876         .default_value = 1, /* GPIO polarity: 1=high, 0=low */
877         .min_value = 0,
878         .max_value = 1,
879     },
880     [BDK_CONFIG_USB_REFCLK_SRC] = {
881         .format = "USB-REFCLK-SRC.N%d.PORT%d", /* Parameters: Node, Port */
882         .ctype = BDK_CONFIG_TYPE_INT,
883         .default_value = 0, /* Clock Source (SS:HS)
884                             ** 0 - SS(USB_REF_CLK)   HS(USB_REF_CLK)
885                             ** 1 - SS(DLMC_REF_CLK0) HS(DLMC_REF_CLK0)
886                             ** 2 - SS(DLMC_REF_CLK1) HS(DLMC_REF_CLK1)
887                             ** 3 - SS(USB_REF_CLK)   HS(PLL_REF_CLK)
888                             ** 4 - SS(DLMC_REF_CLK0) HS(PLL_REF_CLK)
889                             ** 5 - SS(DLMC_REF_CLK1) HS(PLL_REF_CLK)
890                             */
891         .min_value = 0,
892         .max_value = 5,
893     },
894 
895     /* Nitrox reset - For CN88XX SC and SNT part. High drives Nitrox DC_OK high */
896     [BDK_CONFIG_NITROX_GPIO] = {
897         .format = "NITROX-GPIO.N%d", /* Parameters: Node */
898         .ctype = BDK_CONFIG_TYPE_INT,
899         .default_value = -1, /* GPIO number, or -1 for none */
900         .min_value = -1,
901         .max_value = 49,
902     },
903 
904     /* How EYE diagrams are captured from a QLM */
905     [BDK_CONFIG_EYE_ZEROS] = {
906         .format = "QLM-EYE-NUM-ZEROS", /* No parameters */
907         .ctype = BDK_CONFIG_TYPE_INT,
908         .default_value = 2,
909         .min_value = 1,
910         .max_value = 63,
911     },
912     [BDK_CONFIG_EYE_SAMPLE_TIME] = {
913         .format = "QLM-EYE-SAMPLE-TIME", /* No parameters */
914         .ctype = BDK_CONFIG_TYPE_INT,
915         .default_value = 400, /* us */
916         .min_value = 20, /* us */
917         .max_value = 10000000, /* us */
918     },
919     [BDK_CONFIG_EYE_SETTLE_TIME] = {
920         .format = "QLM-EYE-SETTLE-TIME", /* No parameters */
921         .ctype = BDK_CONFIG_TYPE_INT,
922         .default_value = 50, /* us */
923         .min_value = 20, /* us */
924         .max_value = 100000, /* us */
925     },
926 
927     /* SGPIO */
928     [BDK_CONFIG_SGPIO_SCLOCK_FREQ] = {
929         .format = "SGPIO-SCLOCK-FREQ.N%d",  /* Parameters: Node */
930         .ctype = BDK_CONFIG_TYPE_INT,
931         .default_value = 10000, /* Hz */
932         .min_value = 128, /* Hz */
933         .max_value = 100000, /* Hz */
934     },
935     [BDK_CONFIG_SGPIO_PIN_POWER] = {
936         .format = "SGPIO-PIN-POWER.N%d", /* Parameters: Node */
937         .ctype = BDK_CONFIG_TYPE_INT,
938         .default_value = -1, /* GPIO number, or -1 for none */
939         .min_value = -1,
940         .max_value = 50,
941     },
942     [BDK_CONFIG_SGPIO_PIN_SCLOCK] = {
943         .format = "SGPIO-PIN-SCLOCK.N%d", /* Parameters: Node */
944         .ctype = BDK_CONFIG_TYPE_INT,
945         .default_value = -1, /* GPIO number, or -1 for none */
946         .min_value = -1,
947         .max_value = 50,
948     },
949     [BDK_CONFIG_SGPIO_PIN_SLOAD] = {
950         .format = "SGPIO-PIN-SLOAD.N%d", /* Parameters: Node */
951         .ctype = BDK_CONFIG_TYPE_INT,
952         .default_value = -1, /* GPIO number, or -1 for none */
953         .min_value = -1,
954         .max_value = 50,
955     },
956     [BDK_CONFIG_SGPIO_PIN_SDATAOUT] = {
957         .format = "SGPIO-PIN-SDATAOUT.N%d.D%d", /* Parameters: Node, Dataline */
958         .ctype = BDK_CONFIG_TYPE_INT,
959         .default_value = -1, /* GPIO number, or -1 for none */
960         .min_value = -1,
961         .max_value = 50,
962     },
963 
964     /* VRM temperature throttling */
965     [BDK_CONFIG_VRM_TEMP_TRIP] = {
966         .format = "VRM-TEMP-TRIP.N%d",  /* Parameters: Node */
967         .ctype = BDK_CONFIG_TYPE_INT,
968         .default_value = 110, /* Degrees C */
969         .min_value = 0, /* Degrees C */
970         .max_value = 110, /* Degrees C. Max die temp plus 5 for uncertainty of measurement */
971     },
972     [BDK_CONFIG_VRM_TEMP_HIGH] = {
973         .format = "VRM-TEMP-HIGH.N%d",  /* Parameters: Node */
974         .ctype = BDK_CONFIG_TYPE_INT,
975         .default_value = 110, /* Degrees C */
976         .min_value = 0, /* Degrees C */
977         .max_value = 110, /* Degrees C. Max die temp plus 5 for uncertainty of measurement */
978     },
979     [BDK_CONFIG_VRM_TEMP_LOW] = {
980         .format = "VRM-TEMP-LOW.N%d",  /* Parameters: Node */
981         .ctype = BDK_CONFIG_TYPE_INT,
982         .default_value = 100, /* Degrees C */
983         .min_value = 0, /* Degrees C */
984         .max_value = 110, /* Degrees C. Max die temp plus 5 for uncertainty of measurement */
985     },
986     [BDK_CONFIG_VRM_THROTTLE_NORMAL] = {
987         .format = "VRM-THROTTLE-NORMAL.N%d",  /* Parameters: Node */
988         .ctype = BDK_CONFIG_TYPE_INT,
989         .default_value = 65, /* Percentage */
990         .min_value = 1, /* Percentage */
991         .max_value = 100, /* Percentage */
992     },
993     [BDK_CONFIG_VRM_THROTTLE_THERM] = {
994         .format = "VRM-THROTTLE-THERM.N%d",  /* Parameters: Node */
995         .ctype = BDK_CONFIG_TYPE_INT,
996         .default_value = 15, /* Percentage */
997         .min_value = 1, /* Percentage */
998         .max_value = 100, /* Percentage */
999     },
1000 
1001     /* Generic GPIO, unrelated to a specific block */
1002     [BDK_CONFIG_GPIO_PIN_SELECT] = {
1003         .format = "GPIO-PIN-SELECT-GPIO%d.N%d",  /* Parameters: GPIO, Node */
1004         .ctype = BDK_CONFIG_TYPE_INT,
1005         .default_value = -1, /* Hardware default, normal GPIO pin */
1006         .min_value = 0, /* GPIO_PIN_SEL_E enumeration */
1007         .max_value = 65535, /* GPIO_PIN_SEL_E enumeration */
1008     },
1009     [BDK_CONFIG_GPIO_POLARITY] = {
1010         .format = "GPIO-POLARITY-GPIO%d.N%d",  /* Parameters: GPIO, Node */
1011         .ctype = BDK_CONFIG_TYPE_INT,
1012         .default_value = 0, /* Hardware default, not inverted */
1013         .min_value = 0, /* Not inverted */
1014         .max_value = 1, /* Inverted */
1015     },
1016 
1017     /* PBUS */
1018     [BDK_CONFIG_PBUS_CFG] = {
1019         .format = "PBUS-CFG.REGION%d.N%d",  /* Parameters: Region, Node */
1020         .ctype = BDK_CONFIG_TYPE_INT,
1021         .default_value = 0, /* Hardware default */
1022         .min_value = 0, /* No change */
1023         .max_value = 0x0000ffffffffffffll, /* PBUS_REGX_CFG value */
1024     },
1025     [BDK_CONFIG_PBUS_TIM] = {
1026         .format = "PBUS-TIM.REGION%d.N%d",  /* Parameters: Region, Node */
1027         .ctype = BDK_CONFIG_TYPE_INT,
1028         .default_value = 0, /* Hardware default, not inverted */
1029         .min_value = 0x8000000000000000ll, /* PBUS_REGX_TIM value, zero is no change */
1030         .max_value = 0x7fffffffffffffffll, /* PBUS_REGX_TIM value */
1031     },
1032 
1033     /* Trusted boot information */
1034     [BDK_CONFIG_TRUST_CSIB] = {
1035         .format = "TRUST-CSIB",  /* No parameters */
1036         .ctype = BDK_CONFIG_TYPE_BINARY,
1037         .default_value = 0, /* Hardware default */
1038     },
1039     [BDK_CONFIG_TRUST_ROT_ADDR] = {
1040         .format = "TRUST-ROT-ADDR",  /* No parameters */
1041         .ctype = BDK_CONFIG_TYPE_INT,
1042         .default_value = 0, /* Non-trusted */
1043         .min_value = 0, /* No key */
1044         .max_value = 0x0000ffffffffffffll, /* Address in key memory */
1045     },
1046     [BDK_CONFIG_TRUST_BSSK_ADDR] = {
1047         .format = "TRUST-BSSK-ADDR",  /* No parameters */
1048         .ctype = BDK_CONFIG_TYPE_INT,
1049         .default_value = 0, /* No HUK, so no BSSK */
1050         .min_value = 0, /* No HUK, so no BSSK */
1051         .max_value = 0x0000ffffffffffffll, /* Address in key memory */
1052     },
1053 };
1054 
1055