Re: [PATCH v1 3/3] driver core: Split device related fwnode API to device/fwnode.h

From: Greg Kroah-Hartman

Date: Mon Feb 23 2026 - 19:33:33 EST


On Mon, Feb 23, 2026 at 09:30:32PM +0100, Andy Shevchenko wrote:
> device.h is a huge header which is hard to follow and easy to miss
> something. Improve that by splitting device related fwnode API
> to device/fwnode.h.
>
> In particular this helps to speedup the build of the code that includes
> device.h solely for a device related fwnode API.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
> ---
> include/linux/device.h | 17 +----------------
> include/linux/device/fwnode.h | 28 ++++++++++++++++++++++++++++
> 2 files changed, 29 insertions(+), 16 deletions(-)
> create mode 100644 include/linux/device/fwnode.h
>
> diff --git a/include/linux/device.h b/include/linux/device.h
> index 4ba6ae72ddf6..d2e2745243ea 100644
> --- a/include/linux/device.h
> +++ b/include/linux/device.h
> @@ -31,6 +31,7 @@
> #include <linux/device/devlink.h>
> #include <linux/device/devres.h>
> #include <linux/device/driver.h>
> +#include <linux/device/fwnode.h>
> #include <linux/device/types.h>
> #include <linux/cleanup.h>
>
> @@ -38,8 +39,6 @@ struct device_driver;
> struct module;
> struct class;
> struct subsys_private;
> -struct device_node;
> -struct fwnode_handle;
>
> /**
> * struct subsys_interface - interfaces to device functions
> @@ -603,20 +602,6 @@ int lock_device_hotplug_sysfs(void);
> int device_offline(struct device *dev);
> int device_online(struct device *dev);
>
> -void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode);
> -void set_secondary_fwnode(struct device *dev, struct fwnode_handle *fwnode);
> -void device_set_node(struct device *dev, struct fwnode_handle *fwnode);
> -int device_add_of_node(struct device *dev, struct device_node *of_node);
> -void device_remove_of_node(struct device *dev);
> -void device_set_of_node_from_dev(struct device *dev, const struct device *dev2);
> -
> -static inline struct device_node *dev_of_node(struct device *dev)
> -{
> - if (!IS_ENABLED(CONFIG_OF) || !dev)
> - return NULL;
> - return dev->of_node;
> -}
> -
> static inline int dev_num_vf(struct device *dev)
> {
> if (dev->bus && dev->bus->num_vf)
> diff --git a/include/linux/device/fwnode.h b/include/linux/device/fwnode.h
> new file mode 100644
> index 000000000000..4fe6107191a6
> --- /dev/null
> +++ b/include/linux/device/fwnode.h
> @@ -0,0 +1,28 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _DEVICE_FWNODE_H_
> +#define _DEVICE_FWNODE_H_

You lost the copyright notice. While not really needed from a legal
point of view, it's not all that nice from a developer point of view :(