xref: /aosp_15_r20/external/pciutils/lib/names.h (revision c2e0c6b56a71da9abe8df5c8348fb3eb5c2c9251)
1*c2e0c6b5SAndroid Build Coastguard Worker /*
2*c2e0c6b5SAndroid Build Coastguard Worker  *	The PCI Library -- ID to Name Translation
3*c2e0c6b5SAndroid Build Coastguard Worker  *
4*c2e0c6b5SAndroid Build Coastguard Worker  *	Copyright (c) 1997--2014 Martin Mares <[email protected]>
5*c2e0c6b5SAndroid Build Coastguard Worker  *
6*c2e0c6b5SAndroid Build Coastguard Worker  *	Can be freely distributed and used under the terms of the GNU GPL v2+
7*c2e0c6b5SAndroid Build Coastguard Worker  *
8*c2e0c6b5SAndroid Build Coastguard Worker  *	SPDX-License-Identifier: GPL-2.0-or-later
9*c2e0c6b5SAndroid Build Coastguard Worker  */
10*c2e0c6b5SAndroid Build Coastguard Worker 
11*c2e0c6b5SAndroid Build Coastguard Worker #define MAX_LINE 1024
12*c2e0c6b5SAndroid Build Coastguard Worker 
13*c2e0c6b5SAndroid Build Coastguard Worker /* names-hash.c */
14*c2e0c6b5SAndroid Build Coastguard Worker 
15*c2e0c6b5SAndroid Build Coastguard Worker struct id_entry {
16*c2e0c6b5SAndroid Build Coastguard Worker   struct id_entry *next;
17*c2e0c6b5SAndroid Build Coastguard Worker   u32 id12, id34;
18*c2e0c6b5SAndroid Build Coastguard Worker   byte cat;
19*c2e0c6b5SAndroid Build Coastguard Worker   byte src;
20*c2e0c6b5SAndroid Build Coastguard Worker   char name[1];
21*c2e0c6b5SAndroid Build Coastguard Worker };
22*c2e0c6b5SAndroid Build Coastguard Worker 
23*c2e0c6b5SAndroid Build Coastguard Worker enum id_entry_type {
24*c2e0c6b5SAndroid Build Coastguard Worker   ID_UNKNOWN,
25*c2e0c6b5SAndroid Build Coastguard Worker   ID_VENDOR,
26*c2e0c6b5SAndroid Build Coastguard Worker   ID_DEVICE,
27*c2e0c6b5SAndroid Build Coastguard Worker   ID_SUBSYSTEM,
28*c2e0c6b5SAndroid Build Coastguard Worker   ID_GEN_SUBSYSTEM,
29*c2e0c6b5SAndroid Build Coastguard Worker   ID_CLASS,
30*c2e0c6b5SAndroid Build Coastguard Worker   ID_SUBCLASS,
31*c2e0c6b5SAndroid Build Coastguard Worker   ID_PROGIF
32*c2e0c6b5SAndroid Build Coastguard Worker };
33*c2e0c6b5SAndroid Build Coastguard Worker 
34*c2e0c6b5SAndroid Build Coastguard Worker enum id_entry_src {
35*c2e0c6b5SAndroid Build Coastguard Worker   SRC_UNKNOWN,
36*c2e0c6b5SAndroid Build Coastguard Worker   SRC_CACHE,
37*c2e0c6b5SAndroid Build Coastguard Worker   SRC_NET,
38*c2e0c6b5SAndroid Build Coastguard Worker   SRC_HWDB,
39*c2e0c6b5SAndroid Build Coastguard Worker   SRC_LOCAL,
40*c2e0c6b5SAndroid Build Coastguard Worker };
41*c2e0c6b5SAndroid Build Coastguard Worker 
42*c2e0c6b5SAndroid Build Coastguard Worker #define BUCKET_SIZE 8192
43*c2e0c6b5SAndroid Build Coastguard Worker #define HASH_SIZE 4099
44*c2e0c6b5SAndroid Build Coastguard Worker 
id_pair(unsigned int x,unsigned int y)45*c2e0c6b5SAndroid Build Coastguard Worker static inline u32 id_pair(unsigned int x, unsigned int y)
46*c2e0c6b5SAndroid Build Coastguard Worker {
47*c2e0c6b5SAndroid Build Coastguard Worker   return ((x << 16) | y);
48*c2e0c6b5SAndroid Build Coastguard Worker }
49*c2e0c6b5SAndroid Build Coastguard Worker 
pair_first(unsigned int x)50*c2e0c6b5SAndroid Build Coastguard Worker static inline unsigned int pair_first(unsigned int x)
51*c2e0c6b5SAndroid Build Coastguard Worker {
52*c2e0c6b5SAndroid Build Coastguard Worker   return (x >> 16) & 0xffff;
53*c2e0c6b5SAndroid Build Coastguard Worker }
54*c2e0c6b5SAndroid Build Coastguard Worker 
pair_second(unsigned int x)55*c2e0c6b5SAndroid Build Coastguard Worker static inline unsigned int pair_second(unsigned int x)
56*c2e0c6b5SAndroid Build Coastguard Worker {
57*c2e0c6b5SAndroid Build Coastguard Worker   return x & 0xffff;
58*c2e0c6b5SAndroid Build Coastguard Worker }
59*c2e0c6b5SAndroid Build Coastguard Worker 
60*c2e0c6b5SAndroid Build Coastguard Worker int pci_id_insert(struct pci_access *a, int cat, int id1, int id2, int id3, int id4, char *text, enum id_entry_src src);
61*c2e0c6b5SAndroid Build Coastguard Worker char *pci_id_lookup(struct pci_access *a, int flags, int cat, int id1, int id2, int id3, int id4);
62*c2e0c6b5SAndroid Build Coastguard Worker 
63*c2e0c6b5SAndroid Build Coastguard Worker /* names-cache.c */
64*c2e0c6b5SAndroid Build Coastguard Worker 
65*c2e0c6b5SAndroid Build Coastguard Worker int pci_id_cache_load(struct pci_access *a, int flags);
66*c2e0c6b5SAndroid Build Coastguard Worker void pci_id_cache_dirty(struct pci_access *a);
67*c2e0c6b5SAndroid Build Coastguard Worker void pci_id_cache_flush(struct pci_access *a);
68*c2e0c6b5SAndroid Build Coastguard Worker void pci_id_hash_free(struct pci_access *a);
69*c2e0c6b5SAndroid Build Coastguard Worker 
70*c2e0c6b5SAndroid Build Coastguard Worker /* names-dns.c */
71*c2e0c6b5SAndroid Build Coastguard Worker 
72*c2e0c6b5SAndroid Build Coastguard Worker char *pci_id_net_lookup(struct pci_access *a, int cat, int id1, int id2, int id3, int id4);
73*c2e0c6b5SAndroid Build Coastguard Worker 
74*c2e0c6b5SAndroid Build Coastguard Worker /* names-hwdb.c */
75*c2e0c6b5SAndroid Build Coastguard Worker 
76*c2e0c6b5SAndroid Build Coastguard Worker char *pci_id_hwdb_lookup(struct pci_access *a, int cat, int id1, int id2, int id3, int id4);
77*c2e0c6b5SAndroid Build Coastguard Worker void pci_id_hwdb_free(struct pci_access *a);
78