mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: barebox@lists.infradead.org
Cc: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>,
	Ahmad Fatoum <a.fatoum@pengutronix.de>
Subject: [PATCH master 05/23] driver: move out struct device definition into its own header
Date: Wed, 24 Apr 2024 08:40:40 +0200	[thread overview]
Message-ID: <20240424064058.3608016-6-a.fatoum@pengutronix.de> (raw)
In-Reply-To: <20240424064058.3608016-1-a.fatoum@pengutronix.de>

<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@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@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




  parent reply	other threads:[~2024-04-24  6:42 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-24  6:40 [PATCH master 00/23] treewide: fix bugs using DMA API Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 01/23] habv4: use DMA-capable memory for getting event from BootROM Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 02/23] dma: give inline dma_alloc a single external definition Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 03/23] dma: add definition for dma_zalloc Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 04/23] include: linux/kernel.h: factor out alignment macros Ahmad Fatoum
2024-04-24  6:40 ` Ahmad Fatoum [this message]
2024-04-24  6:40 ` [PATCH master 06/23] dma: remove common.h include from asm/dma.h Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 07/23] RISC-V: dma: fix dma.h inclusion Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 08/23] sandbox: dma: drop unused driver.h include Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 09/23] dma: remove linux/kernel.h dependency from dma.h Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 10/23] include: linux/slab: fix possible overflow in kmalloc_array Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 11/23] include: linux/slab: use dma_alloc for kmalloc Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 12/23] include: linux/slab: retire krealloc Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 13/23] commands: mmc_extcsd: use DMA capable memory where needed Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 14/23] net: macb: use DMA-capable memory for receive buffer Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 15/23] firmware: qemu_fw_cfg: use bounce buffer for write Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 16/23] net: usb: asix: use dma_alloc for buffers in USB control messages Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 17/23] net: usb: smsc95xx: use DMA memory for usb_control_msg Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 18/23] usb: hub: use DMA memory in usb_get_port_status Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 19/23] usb: hub: use DMA-capable memory in usb_hub_configure Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 20/23] treewide: use new dma_zalloc instead of opencoding Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 21/23] usb: dwc2: host: fix mismatch between dma_map_single and unmap Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 22/23] net: bcmgenet: map DMA buffers with dma_map_single Ahmad Fatoum
2024-04-24  6:40 ` [PATCH master 23/23] dma: debug: add alignment check when mapping buffers Ahmad Fatoum
2024-04-25  7:39 ` [PATCH master 00/23] treewide: fix bugs using DMA API Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240424064058.3608016-6-a.fatoum@pengutronix.de \
    --to=a.fatoum@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    --cc=enrico.scholz@sigma-chemnitz.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox