From: Umang Jain <umang.jain@ideasonboard.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-staging@lists.linux.dev,
linux-arm-kernel@lists.infradead.org,
linux-rpi-kernel@lists.infradead.org,
linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
Stefan Wahren <stefan.wahren@i2se.com>,
Florian Fainelli <f.fainelli@gmail.com>,
Adrien Thierry <athierry@redhat.com>,
Dan Carpenter <error27@gmail.com>,
Dave Stevenson <dave.stevenson@raspberrypi.com>,
Kieran Bingham <kieran.bingham@ideasonboard.com>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Subject: Re: [PATCH v12 5/6] staging: bcm2835-camera: Register bcm2835-camera with vchiq_bus_type
Date: Mon, 9 Oct 2023 09:50:29 +0530 [thread overview]
Message-ID: <ca3ec33e-4e42-9bce-eb24-99df0e39473e@ideasonboard.com> (raw)
In-Reply-To: <2023100542-gluten-rally-5a96@gregkh>
Hi Greg,
Sorry for late reply, as I was traveling and then was on vacation for
rest of the week.
On 10/5/23 1:34 PM, Greg Kroah-Hartman wrote:
> On Sat, Sep 23, 2023 at 08:01:59PM +0530, Umang Jain wrote:
>> Register the bcm2835-camera with the vchiq_bus_type instead of using
>> platform driver/device.
>>
>> Since we moved away bcm2835-camera from platform driver/device,
>> we have to set the DMA mask explicitly. Set the DMA mask at probe
>> time.
>>
>> Also the VCHIQ firmware doesn't support device enumeration, hence
>> one has to maintain a list of devices to be registered in the interface.
>>
>> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
>> ---
>> .../bcm2835-camera/bcm2835-camera.c | 21 ++++++++++---------
>> .../interface/vchiq_arm/vchiq_arm.c | 11 +++++++---
>> 2 files changed, 19 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
>> index fcad5118f3e8..c873eace1437 100644
>> --- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
>> +++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
>> @@ -11,6 +11,7 @@
>> * Luke Diamand @ Broadcom
>> */
>>
>> +#include <linux/dma-mapping.h>
>> #include <linux/errno.h>
>> #include <linux/kernel.h>
>> #include <linux/module.h>
>> @@ -24,8 +25,8 @@
>> #include <media/v4l2-event.h>
>> #include <media/v4l2-common.h>
>> #include <linux/delay.h>
>> -#include <linux/platform_device.h>
>>
>> +#include "../interface/vchiq_arm/vchiq_bus.h"
>> #include "../vchiq-mmal/mmal-common.h"
>> #include "../vchiq-mmal/mmal-encodings.h"
>> #include "../vchiq-mmal/mmal-vchiq.h"
>> @@ -1841,7 +1842,7 @@ static struct v4l2_format default_v4l2_format = {
>> .fmt.pix.sizeimage = 1024 * 768,
>> };
>>
>> -static int bcm2835_mmal_probe(struct platform_device *pdev)
>> +static int bcm2835_mmal_probe(struct vchiq_device *device)
>> {
>> int ret;
>> struct bcm2835_mmal_dev *dev;
>> @@ -1852,9 +1853,9 @@ static int bcm2835_mmal_probe(struct platform_device *pdev)
>> unsigned int resolutions[MAX_BCM2835_CAMERAS][2];
>> int i;
>>
>> - ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
>> + ret = dma_set_mask_and_coherent(&device->dev, DMA_BIT_MASK(32));
>> if (ret) {
>> - dev_err(&pdev->dev, "dma_set_mask_and_coherent failed: %d\n", ret);
>> + dev_err(&device->dev, "dma_set_mask_and_coherent failed: %d\n", ret);
>> return ret;
>> }
>>
>> @@ -1902,7 +1903,7 @@ static int bcm2835_mmal_probe(struct platform_device *pdev)
>> &camera_instance);
>> ret = v4l2_device_register(NULL, &dev->v4l2_dev);
>> if (ret) {
>> - dev_err(&pdev->dev, "%s: could not register V4L2 device: %d\n",
>> + dev_err(&device->dev, "%s: could not register V4L2 device: %d\n",
>> __func__, ret);
>> goto free_dev;
>> }
>> @@ -1982,7 +1983,7 @@ static int bcm2835_mmal_probe(struct platform_device *pdev)
>> return ret;
>> }
>>
>> -static void bcm2835_mmal_remove(struct platform_device *pdev)
>> +static void bcm2835_mmal_remove(struct vchiq_device *device)
>> {
>> int camera;
>> struct vchiq_mmal_instance *instance = gdev[0]->instance;
>> @@ -1994,17 +1995,17 @@ static void bcm2835_mmal_remove(struct platform_device *pdev)
>> vchiq_mmal_finalise(instance);
>> }
>>
>> -static struct platform_driver bcm2835_camera_driver = {
>> +static struct vchiq_driver bcm2835_camera_driver = {
>> .probe = bcm2835_mmal_probe,
>> - .remove_new = bcm2835_mmal_remove,
>> + .remove = bcm2835_mmal_remove,
>> .driver = {
>> .name = "bcm2835-camera",
>> },
>> };
>>
>> -module_platform_driver(bcm2835_camera_driver)
>> +module_vchiq_driver(bcm2835_camera_driver)
>>
>> MODULE_DESCRIPTION("Broadcom 2835 MMAL video capture");
>> MODULE_AUTHOR("Vincent Sanders");
>> MODULE_LICENSE("GPL");
>> -MODULE_ALIAS("platform:bcm2835-camera");
>> +MODULE_ALIAS("bcm2835-camera");
> Now that you are on your own bus, why do you need the MODULE_ALIAS()
> line at all?
Because it breaks the module auto-loading support...
If you look at the vchiq_bus patch (3/6) in this series, there is
vchiq_bus_uevent() which sends a event that includes the MODALIAS.
>
> thanks,
>
> greg k-h
WARNING: multiple messages have this Message-ID (diff)
From: Umang Jain <umang.jain@ideasonboard.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-staging@lists.linux.dev,
linux-arm-kernel@lists.infradead.org,
linux-rpi-kernel@lists.infradead.org,
linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
Stefan Wahren <stefan.wahren@i2se.com>,
Florian Fainelli <f.fainelli@gmail.com>,
Adrien Thierry <athierry@redhat.com>,
Dan Carpenter <error27@gmail.com>,
Dave Stevenson <dave.stevenson@raspberrypi.com>,
Kieran Bingham <kieran.bingham@ideasonboard.com>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Subject: Re: [PATCH v12 5/6] staging: bcm2835-camera: Register bcm2835-camera with vchiq_bus_type
Date: Mon, 9 Oct 2023 09:50:29 +0530 [thread overview]
Message-ID: <ca3ec33e-4e42-9bce-eb24-99df0e39473e@ideasonboard.com> (raw)
In-Reply-To: <2023100542-gluten-rally-5a96@gregkh>
Hi Greg,
Sorry for late reply, as I was traveling and then was on vacation for
rest of the week.
On 10/5/23 1:34 PM, Greg Kroah-Hartman wrote:
> On Sat, Sep 23, 2023 at 08:01:59PM +0530, Umang Jain wrote:
>> Register the bcm2835-camera with the vchiq_bus_type instead of using
>> platform driver/device.
>>
>> Since we moved away bcm2835-camera from platform driver/device,
>> we have to set the DMA mask explicitly. Set the DMA mask at probe
>> time.
>>
>> Also the VCHIQ firmware doesn't support device enumeration, hence
>> one has to maintain a list of devices to be registered in the interface.
>>
>> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
>> ---
>> .../bcm2835-camera/bcm2835-camera.c | 21 ++++++++++---------
>> .../interface/vchiq_arm/vchiq_arm.c | 11 +++++++---
>> 2 files changed, 19 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
>> index fcad5118f3e8..c873eace1437 100644
>> --- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
>> +++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
>> @@ -11,6 +11,7 @@
>> * Luke Diamand @ Broadcom
>> */
>>
>> +#include <linux/dma-mapping.h>
>> #include <linux/errno.h>
>> #include <linux/kernel.h>
>> #include <linux/module.h>
>> @@ -24,8 +25,8 @@
>> #include <media/v4l2-event.h>
>> #include <media/v4l2-common.h>
>> #include <linux/delay.h>
>> -#include <linux/platform_device.h>
>>
>> +#include "../interface/vchiq_arm/vchiq_bus.h"
>> #include "../vchiq-mmal/mmal-common.h"
>> #include "../vchiq-mmal/mmal-encodings.h"
>> #include "../vchiq-mmal/mmal-vchiq.h"
>> @@ -1841,7 +1842,7 @@ static struct v4l2_format default_v4l2_format = {
>> .fmt.pix.sizeimage = 1024 * 768,
>> };
>>
>> -static int bcm2835_mmal_probe(struct platform_device *pdev)
>> +static int bcm2835_mmal_probe(struct vchiq_device *device)
>> {
>> int ret;
>> struct bcm2835_mmal_dev *dev;
>> @@ -1852,9 +1853,9 @@ static int bcm2835_mmal_probe(struct platform_device *pdev)
>> unsigned int resolutions[MAX_BCM2835_CAMERAS][2];
>> int i;
>>
>> - ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
>> + ret = dma_set_mask_and_coherent(&device->dev, DMA_BIT_MASK(32));
>> if (ret) {
>> - dev_err(&pdev->dev, "dma_set_mask_and_coherent failed: %d\n", ret);
>> + dev_err(&device->dev, "dma_set_mask_and_coherent failed: %d\n", ret);
>> return ret;
>> }
>>
>> @@ -1902,7 +1903,7 @@ static int bcm2835_mmal_probe(struct platform_device *pdev)
>> &camera_instance);
>> ret = v4l2_device_register(NULL, &dev->v4l2_dev);
>> if (ret) {
>> - dev_err(&pdev->dev, "%s: could not register V4L2 device: %d\n",
>> + dev_err(&device->dev, "%s: could not register V4L2 device: %d\n",
>> __func__, ret);
>> goto free_dev;
>> }
>> @@ -1982,7 +1983,7 @@ static int bcm2835_mmal_probe(struct platform_device *pdev)
>> return ret;
>> }
>>
>> -static void bcm2835_mmal_remove(struct platform_device *pdev)
>> +static void bcm2835_mmal_remove(struct vchiq_device *device)
>> {
>> int camera;
>> struct vchiq_mmal_instance *instance = gdev[0]->instance;
>> @@ -1994,17 +1995,17 @@ static void bcm2835_mmal_remove(struct platform_device *pdev)
>> vchiq_mmal_finalise(instance);
>> }
>>
>> -static struct platform_driver bcm2835_camera_driver = {
>> +static struct vchiq_driver bcm2835_camera_driver = {
>> .probe = bcm2835_mmal_probe,
>> - .remove_new = bcm2835_mmal_remove,
>> + .remove = bcm2835_mmal_remove,
>> .driver = {
>> .name = "bcm2835-camera",
>> },
>> };
>>
>> -module_platform_driver(bcm2835_camera_driver)
>> +module_vchiq_driver(bcm2835_camera_driver)
>>
>> MODULE_DESCRIPTION("Broadcom 2835 MMAL video capture");
>> MODULE_AUTHOR("Vincent Sanders");
>> MODULE_LICENSE("GPL");
>> -MODULE_ALIAS("platform:bcm2835-camera");
>> +MODULE_ALIAS("bcm2835-camera");
> Now that you are on your own bus, why do you need the MODULE_ALIAS()
> line at all?
Because it breaks the module auto-loading support...
If you look at the vchiq_bus patch (3/6) in this series, there is
vchiq_bus_uevent() which sends a event that includes the MODALIAS.
>
> thanks,
>
> greg k-h
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-10-09 4:26 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-23 14:31 [PATCH v12 0/6] staging: vc04_services: vchiq: Register devices with a custom bus_type Umang Jain
2023-09-23 14:31 ` Umang Jain
2023-09-23 14:31 ` [PATCH v12 1/6] staging: vc04_services: bcm2835-camera: Explicitly set DMA mask Umang Jain
2023-09-23 14:31 ` Umang Jain
2023-09-23 14:31 ` [PATCH v12 2/6] staging: vc04_services: bcm2835-audio: " Umang Jain
2023-09-23 14:31 ` Umang Jain
2023-09-23 14:31 ` [PATCH v12 3/6] staging: vc04_services: vchiq_arm: Add new bus type and device type Umang Jain
2023-09-23 14:31 ` Umang Jain
2023-10-05 8:03 ` Greg Kroah-Hartman
2023-10-05 8:03 ` Greg Kroah-Hartman
2023-09-23 14:31 ` [PATCH v12 4/6] staging: vc04_services: vchiq_arm: Register vchiq_bus_type Umang Jain
2023-09-23 14:31 ` Umang Jain
2023-09-23 14:31 ` [PATCH v12 5/6] staging: bcm2835-camera: Register bcm2835-camera with vchiq_bus_type Umang Jain
2023-09-23 14:31 ` Umang Jain
2023-10-05 8:04 ` Greg Kroah-Hartman
2023-10-05 8:04 ` Greg Kroah-Hartman
2023-10-09 4:20 ` Umang Jain [this message]
2023-10-09 4:20 ` Umang Jain
2023-10-09 10:12 ` Greg Kroah-Hartman
2023-10-09 10:12 ` Greg Kroah-Hartman
2023-09-23 14:32 ` [PATCH v12 6/6] staging: bcm2835-audio: Register bcm2835-audio " Umang Jain
2023-09-23 14:32 ` Umang Jain
2023-10-05 8:04 ` Greg Kroah-Hartman
2023-10-05 8:04 ` Greg Kroah-Hartman
2023-09-23 14:33 ` [PATCH v12 0/6] staging: vc04_services: vchiq: Register devices with a custom bus_type Umang Jain
2023-09-23 14:33 ` Umang Jain
2023-09-30 10:10 ` Stefan Wahren
2023-09-30 10:10 ` Stefan Wahren
2023-10-05 8:05 ` Greg Kroah-Hartman
2023-10-05 8:05 ` Greg Kroah-Hartman
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=ca3ec33e-4e42-9bce-eb24-99df0e39473e@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=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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.