return p;
}
+static void
+set_pci_option(struct pci_access *pacc, char *arg)
+{
+ if (!strcmp(arg, "help"))
+ {
+ struct pci_param *p;
+ printf("Known PCI access parameters:\n\n");
+ for (p=NULL; p=pci_walk_params(pacc, p);)
+ printf("%-20s %s (%s)\n", p->param, p->help, p->value);
+ exit(0);
+ }
+ else
+ {
+ char *sep = strchr(arg, '=');
+ if (!sep)
+ die("Invalid PCI access parameter syntax: %s", arg);
+ *sep++ = 0;
+ if (pci_set_param(pacc, arg, sep) < 0)
+ die("Unrecognized PCI access parameter: %s", arg);
+ }
+}
+
int
parse_generic_option(int i, struct pci_access *pacc, char *optarg)
{
case 'G':
pacc->debugging++;
break;
+ case 'O':
+ set_pci_option(pacc, optarg);
+ break;
default:
return 0;
}
#define GENHELP_DUMP
#endif
-#define GENERIC_OPTIONS "G" GENOPT_PROC GENOPT_INTEL GENOPT_DUMP
+#define GENERIC_OPTIONS "GO:" GENOPT_PROC GENOPT_INTEL GENOPT_DUMP
#define GENERIC_HELP GENHELP_PROC GENHELP_INTEL GENHELP_DUMP \
- "-G\t\tEnable PCI access debugging\n"
+ "-G\t\tEnable PCI access debugging\n" \
+ "-O <par>=<val>\tSet PCI access parameter (see `-O help' for the list)\n"