]>
Commit | Line | Data |
---|---|---|
7b96953b KW |
1 | /* |
2 | * Mediated device interal definitions | |
3 | * | |
4 | * Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved. | |
5 | * Author: Neo Jia <cjia@nvidia.com> | |
6 | * Kirti Wankhede <kwankhede@nvidia.com> | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or modify | |
9 | * it under the terms of the GNU General Public License version 2 as | |
10 | * published by the Free Software Foundation. | |
11 | */ | |
12 | ||
13 | #ifndef MDEV_PRIVATE_H | |
14 | #define MDEV_PRIVATE_H | |
15 | ||
16 | int mdev_bus_register(void); | |
17 | void mdev_bus_unregister(void); | |
18 | ||
9372e6fe AW |
19 | struct mdev_parent { |
20 | struct device *dev; | |
21 | const struct mdev_parent_ops *ops; | |
22 | struct kref ref; | |
9372e6fe AW |
23 | struct list_head next; |
24 | struct kset *mdev_types_kset; | |
25 | struct list_head type_list; | |
5715c4dd PP |
26 | /* Synchronize device creation/removal with parent unregistration */ |
27 | struct rw_semaphore unreg_sem; | |
9372e6fe AW |
28 | }; |
29 | ||
99e3123e AW |
30 | struct mdev_device { |
31 | struct device dev; | |
32 | struct mdev_parent *parent; | |
278bca7f | 33 | guid_t uuid; |
99e3123e | 34 | void *driver_data; |
99e3123e AW |
35 | struct list_head next; |
36 | struct kobject *type_kobj; | |
8ac13175 | 37 | struct device *iommu_device; |
002fe996 | 38 | bool active; |
99e3123e AW |
39 | }; |
40 | ||
41 | #define to_mdev_device(dev) container_of(dev, struct mdev_device, dev) | |
42 | #define dev_is_mdev(d) ((d)->bus == &mdev_bus_type) | |
43 | ||
7b96953b KW |
44 | struct mdev_type { |
45 | struct kobject kobj; | |
46 | struct kobject *devices_kobj; | |
42930553 | 47 | struct mdev_parent *parent; |
7b96953b KW |
48 | struct list_head next; |
49 | struct attribute_group *group; | |
50 | }; | |
51 | ||
52 | #define to_mdev_type_attr(_attr) \ | |
53 | container_of(_attr, struct mdev_type_attribute, attr) | |
54 | #define to_mdev_type(_kobj) \ | |
55 | container_of(_kobj, struct mdev_type, kobj) | |
56 | ||
42930553 AW |
57 | int parent_create_sysfs_files(struct mdev_parent *parent); |
58 | void parent_remove_sysfs_files(struct mdev_parent *parent); | |
7b96953b KW |
59 | |
60 | int mdev_create_sysfs_files(struct device *dev, struct mdev_type *type); | |
61 | void mdev_remove_sysfs_files(struct device *dev, struct mdev_type *type); | |
62 | ||
278bca7f AS |
63 | int mdev_device_create(struct kobject *kobj, |
64 | struct device *dev, const guid_t *uuid); | |
522ecce0 | 65 | int mdev_device_remove(struct device *dev); |
7b96953b KW |
66 | |
67 | #endif /* MDEV_PRIVATE_H */ |