hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/base/base.h
....@@ -1,4 +1,15 @@
11 /* SPDX-License-Identifier: GPL-2.0 */
2
+/*
3
+ * Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org>
4
+ * Copyright (c) 2004-2009 Greg Kroah-Hartman <gregkh@suse.de>
5
+ * Copyright (c) 2008-2012 Novell Inc.
6
+ * Copyright (c) 2012-2019 Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7
+ * Copyright (c) 2012-2019 Linux Foundation
8
+ *
9
+ * Core driver model functions and structures that should not be
10
+ * shared outside of the drivers/base/ directory.
11
+ *
12
+ */
213 #include <linux/notifier.h>
314
415 /**
....@@ -60,6 +71,7 @@
6071 * @knode_parent - node in sibling list
6172 * @knode_driver - node in driver list
6273 * @knode_bus - node in bus list
74
+ * @knode_class - node in class list
6375 * @deferred_probe - entry in deferred_probe_list which is used to retry the
6476 * binding of drivers which were unable to get all the resources needed by
6577 * the device; typically because it depends on another driver getting
....@@ -78,8 +90,10 @@
7890 struct klist_node knode_parent;
7991 struct klist_node knode_driver;
8092 struct klist_node knode_bus;
93
+ struct klist_node knode_class;
8194 struct list_head deferred_probe;
8295 struct device_driver *async_driver;
96
+ char *deferred_probe_reason;
8397 struct device *device;
8498 u8 dead:1;
8599 };
....@@ -89,6 +103,8 @@
89103 container_of(obj, struct device_private, knode_driver)
90104 #define to_device_private_bus(obj) \
91105 container_of(obj, struct device_private, knode_bus)
106
+#define to_device_private_class(obj) \
107
+ container_of(obj, struct device_private, knode_class)
92108
93109 /* initialisation functions */
94110 extern int devices_init(void);
....@@ -119,6 +135,8 @@
119135 extern void driver_detach(struct device_driver *drv);
120136 extern int driver_probe_device(struct device_driver *drv, struct device *dev);
121137 extern void driver_deferred_probe_del(struct device *dev);
138
+extern void device_set_deferred_probe_reason(const struct device *dev,
139
+ struct va_format *vaf);
122140 static inline int driver_match_device(struct device_driver *drv,
123141 struct device *dev)
124142 {
....@@ -161,6 +179,7 @@
161179 /* Device links support */
162180 extern int device_links_read_lock(void);
163181 extern void device_links_read_unlock(int idx);
182
+extern int device_links_read_lock_held(void);
164183 extern int device_links_check_suppliers(struct device *dev);
165184 extern void device_links_driver_bound(struct device *dev);
166185 extern void device_links_driver_cleanup(struct device *dev);
....@@ -170,3 +189,11 @@
170189
171190 /* device pm support */
172191 void device_pm_move_to_tail(struct device *dev);
192
+
193
+#ifdef CONFIG_DEVTMPFS
194
+int devtmpfs_create_node(struct device *dev);
195
+int devtmpfs_delete_node(struct device *dev);
196
+#else
197
+static inline int devtmpfs_create_node(struct device *dev) { return 0; }
198
+static inline int devtmpfs_delete_node(struct device *dev) { return 0; }
199
+#endif