static pciclass old[] = {
	{0x0, "Pre-2.0 PCI Specification Device, Non-VGA"},
	{0x1, "Pre-2.0 PCI Specification Device, VGA Compatible"},
	{0, NULL}
};

static pciclass storage[] = {
	{0x00, "Mass Storage Controller, SCSI"},
	{0x01, "Mass Storage Controller, IDE"},
	{0x02, "Mass Storage Controller, Floppy"},
	{0x03, "Mass Storage Controller, IPI"},
	{0x04, "Mass Storage Controller, RAID"},
	{0x05, "Mass Storage Controller, ATA controller with single DMA"},
	{0x06, "Mass Storage Controller, SATA"},
	{0x07, "Mass Storage Controller, SAS"},
	{0x08, "Mass Storage Controller, NVM"},
	{0x80, "Mass Storage Controller, Other"},
	{0, NULL}
};

static pciclass network[] = {
	{0x00, "Network Controller, Ethernet"},
	{0x01, "Network Controller, Token Ring"},
	{0x02, "Network Controller, FDDI"},
	{0x03, "Network Controller, ATM"},
	{0x04, "Network Controller, ISDN"},
	{0x80, "Network Controller, Other"},
	{0, NULL}
};

static pciclass display[] = {
	{0x00, "Display Controller, VGA"},
	{0x01, "Display Controller, XGA"},
	{0x02, "Display Controller, 3D"},
	{0x80, "Display Controller, Other"},
	{0, NULL}
};

static pciclass multimedia[] = {
	{0x00, "Multimedia Device, Video"},
	{0x01, "Multimedia Device, Audio"},
	{0x02, "Multimedia Device, Telephony"},
	{0x03, "Multimedia Device, HDA"},
	{0x80, "Multimedia Device, Other"},
	{0, NULL}
};

static pciclass memory[] = {
	{0x00, "Memory Controller, RAM"},
	{0x01, "Memory Controller, Flash"},
	{0x80, "Memory Controller, Other"},
	{0, NULL}
};

static pciclass bridge[] = {
	{0x00, "Bridge Device, Host/PCI"},
	{0x01, "Bridge Device, PCI/ISA"},
	{0x02, "Bridge Device, PCI/EISA"},
	{0x03, "Bridge Device, PCI/Micro Channel"},
	{0x04, "Bridge Device, PCI/PCI"},
	{0x05, "Bridge Device, PCI/PCMCIA"},
	{0x06, "Bridge Device, PCI/NuBus"},
	{0x07, "Bridge Device, PCI/CardBus"},
	{0x08, "Bridge Device, PCI/RACEway"},
	{0x09, "Bridge Device, PCI/Transparent"},
	{0x0a, "Bridge Device, Infiniband"},
	{0x80, "Bridge Device, Other"},
	{0, NULL}
};

static pciclass simplecomm[] = {
	{0x00, "Simple Communications Controller, Serial"},
	{0x01, "Simple Communications Controller, Parallel"},
	{0x02, "Simple Communications Controller, Multiport"},
	{0x03, "Simple Communications Controller, Modem"},
	{0x04, "Simple Communications Controller, GPIB"},
	{0x05, "Simple Communications Controller, Smart Card"},
	{0x80, "Simple Communications Controller, Other"},
	{0, NULL}
};

static pciclass baseperiph[] = {
	{0x00, "Base Systems Peripheral, Interrupt Controller"},
	{0x01, "Base Systems Peripheral, DMA"},
	{0x02, "Base Systems Peripheral, System Timer"},
	{0x03, "Base Systems Peripheral, Real Time Clock"},
	{0x04, "Base Systems Peripheral, PCI Hot-plug"},
	{0x05, "Base Systems Peripheral, SD Host Controller"},
	{0x06, "Base Systems Peripheral, IOMMU"},
	{0x80, "Base Systems Peripheral, Other"},
	{0, NULL}
};

static pciclass input[] = {
	{0x00, "Input Device, Keyboard"},
	{0x01, "Input Device, Digitizer"},
	{0x02, "Input Device, Mouse"},
	{0x03, "Input Device, Scanner"},
	{0x04, "Input Device, Game Port"},
	{0x80, "Input Device, Other"},
	{0, NULL}
};

static pciclass docking[] = {
	{0x00, "Docking Station, Generic"},
	{0x80, "Docking Station, Other"},
	{0, NULL}
};

static pciclass processor[] = {
	{0x00, "Processor, i386"},
	{0x01, "Processor, i486"},
	{0x02, "Processor, Pentium"},
	{0x10, "Processor, Alpha"},
	{0x20, "Processor, Power PC"},
	{0x80, "Processor, Co-processor"},
	{0, NULL}
};

static pciclass serial[] = {
	{0x00, "Serial Bus Controller, Firewire"},
	{0x01, "Serial Bus Controller, ACCESS.bus"},
	{0x02, "Serial Bus Controller, SSA"},
	{0x03, "Serial Bus Controller, USB"},
	{0x04, "Serial Bus Controller, Fibre Channel"},
	{0x05, "Serial Bus Controller, SMBus"},
	{0x06, "Serial Bus Controller, Inifiniband"},
	{0x07, "Serial Bus Controller, IPMI"},
	{0, NULL}
};

static pciclass wireless[] = {
	{0x00, "Wireless Controller, iRDA"},
	{0x01, "Wireless Controller, IR"},
	{0x10, "Wireless Controller, RF"},
	{0x11, "Wireless Controller, Bluetooth"},
	{0x12, "Wireless Controller, Broadband"},
	{0x20, "Wireless Controller, 802.11a"},
	{0x21, "Wireless Controller, 802.11b"},
	{0x80, "Wireless Controller, Other"},
	{0, NULL}
};

static pciclass intelliio[] = {
	{0x00, "Intelligent IO Controller, I2O"},
	{0, NULL}
};

static pciclass satcomm[] = {
	{0x00, "Satellite Communication Controller, TV"},
	{0x01, "Satellite Communication Controller, Audio"},
	{0x02, "Satellite Communication Controller, Voice"},
	{0x03, "Satellite Communication Controller, Data"},
	{0, NULL}
};

static pciclass crypto[] = {
	{0x00, "Encryption/Decryption Controller, Network/computer"},
	{0x01, "Encryption/Decryption Controller, Entertainment"},
	{0x80, "Encryption/Decryption Controller, Other"},
	{0, NULL}
};

static pciclass dasp[] = {
	{0x00, "Data Acquisition and Signal Processing Controller, DPIO"},
	{0x01,
	 "Data Acquisition and Signal Processing Controller, Performance Counter"},
	{0x10,
	 "Data Acquisition and Signal Processing Controller, Communications Synchronization"},
	{0x20,
	 "Data Acquisition and Signal Processing Controller, Management Card"},
	{0x80, "Data Acquisition and Signal Processing Controller, Other"},
	{0, NULL}
};

static pciclass *classcodes[] = {
	old,
	storage,
	network,
	display,
	multimedia,
	memory,
	bridge,
	simplecomm,
	baseperiph,
	input,
	docking,
	processor,
	serial,
	wireless,
	intelliio,
	satcomm,
	crypto,
	dasp,
	[255] = NULL
};
