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
next prev 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