From: Umang Jain <umang.jain@ideasonboard.com>
To: linux-staging@lists.linux.dev,
linux-rpi-kernel@lists.infradead.org,
linux-arm-kernel@lists.infradead.org,
linux-media@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Stefan Wahren <stefan.wahren@i2se.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Florian Fainelli <f.fainelli@gmail.com>,
Adrien Thierry <athierry@redhat.com>,
Dan Carpenter <error27@gmail.com>,
Nicolas Saenz Julienne <nsaenz@kernel.org>,
Phil Elwell <phil@raspberrypi.com>,
Dave Stevenson <dave.stevenson@raspberrypi.com>,
Kieran Bingham <kieran.bingham@ideasonboard.com>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Umang Jain <umang.jain@ideasonboard.com>
Subject: [PATCH] staging: vc04_services: vchiq_arm: Create platform_device per device
Date: Tue, 20 Dec 2022 14:14:04 +0530 [thread overview]
Message-ID: <20221220084404.19280-1-umang.jain@ideasonboard.com> (raw)
Create a proper per device platorm_device structure for all the child
devices that needs to be registered by vchiq platform driver. Replace
the vchiq_register_child() with platform_add_devices() to register the
child devices.
This is part of an effort to address TODO item "Get rid of all non
essential global structures and create a proper per device structure"
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
---
.../interface/vchiq_arm/vchiq_arm.c | 59 ++++++++++---------
1 file changed, 31 insertions(+), 28 deletions(-)
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
index 22de23f3af02..fa42ea3791a7 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
@@ -65,8 +65,29 @@ int vchiq_susp_log_level = VCHIQ_LOG_ERROR;
DEFINE_SPINLOCK(msg_queue_spinlock);
struct vchiq_state g_state;
-static struct platform_device *bcm2835_camera;
-static struct platform_device *bcm2835_audio;
+static u64 vchiq_device_dmamask = DMA_BIT_MASK(32);
+
+static struct platform_device bcm2835_camera = {
+ .name = "bcm2835-camera",
+ .id = PLATFORM_DEVID_NONE,
+ .dev = {
+ .dma_mask = &vchiq_device_dmamask,
+ }
+};
+
+static struct platform_device bcm2835_audio = {
+ .name = "bcm2835_audio",
+ .id = PLATFORM_DEVID_NONE,
+ .dev = {
+ .dma_mask = &vchiq_device_dmamask,
+ }
+
+};
+
+static struct platform_device *vchiq_devices[] __initdata = {
+ &bcm2835_camera,
+ &bcm2835_audio,
+};
struct vchiq_drvdata {
const unsigned int cache_line_size;
@@ -1763,28 +1784,6 @@ static const struct of_device_id vchiq_of_match[] = {
};
MODULE_DEVICE_TABLE(of, vchiq_of_match);
-static struct platform_device *
-vchiq_register_child(struct platform_device *pdev, const char *name)
-{
- struct platform_device_info pdevinfo;
- struct platform_device *child;
-
- memset(&pdevinfo, 0, sizeof(pdevinfo));
-
- pdevinfo.parent = &pdev->dev;
- pdevinfo.name = name;
- pdevinfo.id = PLATFORM_DEVID_NONE;
- pdevinfo.dma_mask = DMA_BIT_MASK(32);
-
- child = platform_device_register_full(&pdevinfo);
- if (IS_ERR(child)) {
- dev_warn(&pdev->dev, "%s not registered\n", name);
- child = NULL;
- }
-
- return child;
-}
-
static int vchiq_probe(struct platform_device *pdev)
{
struct device_node *fw_node;
@@ -1832,8 +1831,11 @@ static int vchiq_probe(struct platform_device *pdev)
goto error_exit;
}
- bcm2835_camera = vchiq_register_child(pdev, "bcm2835-camera");
- bcm2835_audio = vchiq_register_child(pdev, "bcm2835_audio");
+ err = platform_add_devices(vchiq_devices, ARRAY_SIZE(vchiq_devices));
+ if (err) {
+ dev_warn(&pdev->dev, "Failed to add vchiq child devices");
+ goto error_exit;
+ }
return 0;
@@ -1845,8 +1847,9 @@ static int vchiq_probe(struct platform_device *pdev)
static int vchiq_remove(struct platform_device *pdev)
{
- platform_device_unregister(bcm2835_audio);
- platform_device_unregister(bcm2835_camera);
+ for (unsigned int i = 0; i < ARRAY_SIZE(vchiq_devices); i++)
+ platform_device_unregister(vchiq_devices[i]);
+
vchiq_debugfs_deinit();
vchiq_deregister_chrdev();
--
2.38.1
next reply other threads:[~2022-12-20 8:44 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-20 8:44 Umang Jain [this message]
2022-12-21 11:14 ` [PATCH] staging: vc04_services: vchiq_arm: Create platform_device per device Laurent Pinchart
2022-12-21 13:10 ` Greg Kroah-Hartman
2022-12-22 8:29 ` Umang Jain
2022-12-22 17:35 ` Laurent Pinchart
2022-12-23 11:24 ` Stefan Wahren
2022-12-23 14:48 ` Greg Kroah-Hartman
2022-12-26 10:06 ` Laurent Pinchart
2022-12-26 10:27 ` Greg Kroah-Hartman
2022-12-26 10:04 ` Laurent Pinchart
2023-01-06 17:04 ` Dave Stevenson
2023-01-06 18:36 ` Laurent Pinchart
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=20221220084404.19280-1-umang.jain@ideasonboard.com \
--to=umang.jain@ideasonboard.com \
--cc=athierry@redhat.com \
--cc=dave.stevenson@raspberrypi.com \
--cc=error27@gmail.com \
--cc=f.fainelli@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=kieran.bingham@ideasonboard.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-rpi-kernel@lists.infradead.org \
--cc=linux-staging@lists.linux.dev \
--cc=nsaenz@kernel.org \
--cc=phil@raspberrypi.com \
--cc=stefan.wahren@i2se.com \
/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;
as well as URLs for NNTP newsgroup(s).