[PATCH master 05/23] driver: move out struct device definition into its own header
Ahmad Fatoum
a.fatoum at pengutronix.de
Tue Apr 23 23:40:40 PDT 2024
<driver.h> got so big that it can introduce issues with recursive
inclusion. Let's start breaking it up by moving the struct device
definition into a new device.h header.
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
include/device.h | 111 +++++++++++++++++++++++++++++++++++++++++++++++
include/driver.h | 93 +--------------------------------------
2 files changed, 112 insertions(+), 92 deletions(-)
create mode 100644 include/device.h
diff --git a/include/device.h b/include/device.h
new file mode 100644
index 000000000000..8c3561e5a2f6
--- /dev/null
+++ b/include/device.h
@@ -0,0 +1,111 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * (C) 2007 Pengutronix, Sascha Hauer <s.hauer at pengutronix.de>
+ */
+
+#ifndef DEVICE_H
+#define DEVICE_H
+
+#include <linux/types.h>
+
+enum dev_dma_coherence {
+ DEV_DMA_COHERENCE_DEFAULT = 0,
+ DEV_DMA_COHERENT,
+ DEV_DMA_NON_COHERENT,
+};
+
+struct device;
+struct bus_type;
+struct resource;
+struct driver;
+struct generic_pm_domain;
+struct platform_device_id;
+struct of_device_id;
+
+/** @brief Describes a particular device present in the system */
+struct device {
+ /*! This member (and 'type' described below) is used to match
+ * with a driver. This is a descriptive name and could be
+ * MPC5XXX_ether or imx_serial. Unless absolutely necessary,
+ * should not be modified directly and dev_set_name() should
+ * be used instead.
+ */
+ char *name;
+
+ /*! This member is used to store device's unique name as
+ * obtained by calling dev_id(). Internal field, do not
+ * access it directly.
+ */
+ char *unique_name;
+ /*! The id is used to uniquely identify a device in the system. The id
+ * will show up under /dev/ as the device's name. Usually this is
+ * something like eth0 or nor0. */
+ int id;
+
+ enum dev_dma_coherence dma_coherent;
+
+ struct resource *resource;
+ int num_resources;
+
+ void *platform_data; /*! board specific information about this device */
+
+ /*! Devices of a particular class normaly need to store more
+ * information than struct device holds.
+ */
+ void *priv;
+ void *type_data; /*! In case this device is a specific device, this pointer
+ * points to the type specific device, i.e. eth_device
+ */
+ struct driver *driver; /*! The driver for this device */
+
+ struct list_head list; /* The list of all devices */
+ struct list_head bus_list; /* our bus */
+ struct list_head children; /* our children */
+ struct list_head sibling;
+ struct list_head active; /* The list of all devices which have a driver */
+
+ struct device *parent; /* our parent, NULL if not present */
+
+ struct generic_pm_domain *pm_domain; /* attached power domain */
+
+ struct bus_type *bus;
+
+ /*! The parameters for this device. This is used to carry information
+ * of board specific data from the board code to the device driver. */
+ struct list_head parameters;
+
+ struct list_head cdevs;
+
+ const struct platform_device_id *id_entry;
+ union {
+ struct device_node *device_node;
+ struct device_node *of_node;
+ };
+
+ const struct of_device_id *of_id_entry;
+
+ u64 dma_mask;
+
+ unsigned long dma_offset;
+
+ void (*info) (struct device *);
+ /*
+ * For devices which take longer to probe this is called
+ * when the driver should actually detect client devices
+ */
+ int (*detect) (struct device *);
+ void (*rescan) (struct device *);
+
+ /*
+ * if a driver probe is deferred, this stores the last error
+ */
+ char *deferred_probe_reason;
+};
+
+struct device_alias {
+ struct device *dev;
+ struct list_head list;
+ char name[];
+};
+
+#endif
diff --git a/include/driver.h b/include/driver.h
index e02815d09b76..066e632134a1 100644
--- a/include/driver.h
+++ b/include/driver.h
@@ -10,6 +10,7 @@
#include <linux/ioport.h>
#include <linux/uuid.h>
#include <linux/printk.h>
+#include <device.h>
#include <of.h>
#include <init.h>
#include <filetype.h>
@@ -27,98 +28,6 @@ struct platform_device_id {
unsigned long driver_data;
};
-enum dev_dma_coherence {
- DEV_DMA_COHERENCE_DEFAULT = 0,
- DEV_DMA_COHERENT,
- DEV_DMA_NON_COHERENT,
-};
-
-/** @brief Describes a particular device present in the system */
-struct device {
- /*! This member (and 'type' described below) is used to match
- * with a driver. This is a descriptive name and could be
- * MPC5XXX_ether or imx_serial. Unless absolutely necessary,
- * should not be modified directly and dev_set_name() should
- * be used instead.
- */
- char *name;
-
- /*! This member is used to store device's unique name as
- * obtained by calling dev_id(). Internal field, do not
- * access it directly.
- */
- char *unique_name;
- /*! The id is used to uniquely identify a device in the system. The id
- * will show up under /dev/ as the device's name. Usually this is
- * something like eth0 or nor0. */
- int id;
-
- enum dev_dma_coherence dma_coherent;
-
- struct resource *resource;
- int num_resources;
-
- void *platform_data; /*! board specific information about this device */
-
- /*! Devices of a particular class normaly need to store more
- * information than struct device holds.
- */
- void *priv;
- void *type_data; /*! In case this device is a specific device, this pointer
- * points to the type specific device, i.e. eth_device
- */
- struct driver *driver; /*! The driver for this device */
-
- struct list_head list; /* The list of all devices */
- struct list_head bus_list; /* our bus */
- struct list_head children; /* our children */
- struct list_head sibling;
- struct list_head active; /* The list of all devices which have a driver */
-
- struct device *parent; /* our parent, NULL if not present */
-
- struct generic_pm_domain *pm_domain; /* attached power domain */
-
- struct bus_type *bus;
-
- /*! The parameters for this device. This is used to carry information
- * of board specific data from the board code to the device driver. */
- struct list_head parameters;
-
- struct list_head cdevs;
-
- const struct platform_device_id *id_entry;
- union {
- struct device_node *device_node;
- struct device_node *of_node;
- };
-
- const struct of_device_id *of_id_entry;
-
- u64 dma_mask;
-
- unsigned long dma_offset;
-
- void (*info) (struct device *);
- /*
- * For devices which take longer to probe this is called
- * when the driver should actually detect client devices
- */
- int (*detect) (struct device *);
- void (*rescan) (struct device *);
-
- /*
- * if a driver probe is deferred, this stores the last error
- */
- char *deferred_probe_reason;
-};
-
-struct device_alias {
- struct device *dev;
- struct list_head list;
- char name[];
-};
-
/** @brief Describes a driver present in the system */
struct driver {
/*! The name of this driver. Used to match to
--
2.39.2
More information about the barebox
mailing list