diff options
Diffstat (limited to 'include/linux/fmc-sdb.h')
-rw-r--r-- | include/linux/fmc-sdb.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/include/linux/fmc-sdb.h b/include/linux/fmc-sdb.h new file mode 100644 index 000000000000..1974317a9b3d --- /dev/null +++ b/include/linux/fmc-sdb.h | |||
@@ -0,0 +1,36 @@ | |||
1 | /* | ||
2 | * This file is separate from sdb.h, because I want that one to remain | ||
3 | * unchanged (as far as possible) from the official sdb distribution | ||
4 | * | ||
5 | * This file and associated functionality are a playground for me to | ||
6 | * understand stuff which will later be implemented in more generic places. | ||
7 | */ | ||
8 | #include <linux/sdb.h> | ||
9 | |||
10 | /* This is the union of all currently defined types */ | ||
11 | union sdb_record { | ||
12 | struct sdb_interconnect ic; | ||
13 | struct sdb_device dev; | ||
14 | struct sdb_bridge bridge; | ||
15 | struct sdb_integration integr; | ||
16 | struct sdb_empty empty; | ||
17 | }; | ||
18 | |||
19 | struct fmc_device; | ||
20 | |||
21 | /* Every sdb table is turned into this structure */ | ||
22 | struct sdb_array { | ||
23 | int len; | ||
24 | int level; | ||
25 | unsigned long baseaddr; | ||
26 | struct fmc_device *fmc; /* the device that hosts it */ | ||
27 | struct sdb_array *parent; /* NULL at root */ | ||
28 | union sdb_record *record; /* copies of the struct */ | ||
29 | struct sdb_array **subtree; /* only valid for bridge items */ | ||
30 | }; | ||
31 | |||
32 | extern int fmc_scan_sdb_tree(struct fmc_device *fmc, unsigned long address); | ||
33 | extern void fmc_show_sdb_tree(const struct fmc_device *fmc); | ||
34 | extern signed long fmc_find_sdb_device(struct sdb_array *tree, uint64_t vendor, | ||
35 | uint32_t device, unsigned long *sz); | ||
36 | extern int fmc_free_sdb_tree(struct fmc_device *fmc); | ||