Messages in this thread Patch in this message | | | From | Bard Liao <> | Subject | [PATCH 2/2] device property: add description of fwnode cases | Date | Tue, 5 Jan 2021 17:11:46 +0800 |
| |
There are only four valid fwnode cases which are - primary --> secondary --> -ENODEV - primary --> NULL - secondary --> -ENODEV - NULL
dev->fwnode should be converted between the 4 cases above no matter how/when set_primary_fwnode() and set_secondary_fwnode() are called. Describe it in the code so people will keep it in mind.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> --- drivers/base/core.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/drivers/base/core.c b/drivers/base/core.c index 51b9545a050b..17eb14607074 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -4414,6 +4414,12 @@ static inline bool fwnode_is_primary(struct fwnode_handle *fwnode) * * Set the device's firmware node pointer to @fwnode, but if a secondary * firmware node of the device is present, preserve it. + * + * Valid fwnode cases are: + * - primary --> secondary --> -ENODEV + * - primary --> NULL + * - secondary --> -ENODEV + * - NULL */ void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode) { @@ -4432,6 +4438,7 @@ void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode) } else { if (fwnode_is_primary(fn)) { dev->fwnode = fn->secondary; + /* Set fn->secondary = NULL to keep fn as a primary fwnode */ if (!(parent && fn == parent->fwnode)) fn->secondary = NULL; } else { -- 2.17.1
| |