XenevaOS
Loading...
Searching...
No Matches
fwnode.h
Go to the documentation of this file.
1#ifndef __LINUX_FWNODE_H__
2#define __LINUX_FWNODE_H__
3
4/*
5 * DCL <linux/fwnode.h> -- the one fwnode entry point the vendored drm core
6 * links against, fwnode_handle_put().
7 *
8 * mainline v7.2 defines struct fwnode_handle in this header and spells
9 * fwnode_handle_put() as a static inline in <linux/property.h> (a
10 * fwnode_call_void_op over fwnode->ops->put). DCL keeps the struct in
11 * property.h -- that is where its only member reader, drm_connector.c:3492
12 * (`connector->fwnode->secondary`), picked it up -- and has no body for
13 * struct fwnode_operations at all, so an inline cannot reach ->ops->put.
14 * The declaration is therefore an ordinary extern whose no-op body sits in
15 * DCL/linux_device_shim.c, and that body is exactly what this kernel can
16 * observe: dev_fwnode() (property.h) answers NULL for every device and
17 * nothing creates a node, so the one caller, drm_connector_cleanup()
18 * (drm_connector.c:798), only ever passes NULL.
19 *
20 * property.h is included rather than re-declaring the tag so that a later
21 * consumer that names <linux/fwnode.h> the way mainline sources do finds a
22 * complete struct; property.h does not include this header, so there is no
23 * cycle. The header exists because device.h includes it for the callers
24 * that cannot name it themselves -- the same routing device.h's own comment
25 * describes.
26 */
27
28#include <linux/property.h> /* struct fwnode_handle */
29
30void fwnode_handle_put(struct fwnode_handle* fwnode);
31
32#endif /* __LINUX_FWNODE_H__ */
void fwnode_handle_put(struct fwnode_handle *fwnode)
Definition property.h:56