From: Hans Verkuil <hverkuil@xs4all.nl>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: William Towle <william.towle@codethink.co.uk>,
linux-media@vger.kernel.org, g.liakhovetski@gmx.de,
sergei.shtylyov@cogentembedded.com, rob.taylor@codethink.co.uk
Subject: Re: [PATCH 08/20] media: soc_camera pad-aware driver initialisation
Date: Mon, 25 May 2015 00:43:25 +0200 [thread overview]
Message-ID: <5562540D.5090106@xs4all.nl> (raw)
In-Reply-To: <1930195.jDtoRqGTcH@avalon>
On 05/24/2015 11:50 PM, Laurent Pinchart wrote:
> Hi Hans,
>
> On Sunday 24 May 2015 10:08:15 Hans Verkuil wrote:
>> On 05/23/2015 08:32 PM, Laurent Pinchart wrote:
>>> On Thursday 21 May 2015 07:55:10 Hans Verkuil wrote:
>>>> On 05/20/2015 06:39 PM, William Towle wrote:
>>>>> Add detection of source pad number for drivers aware of the media
>>>>> controller API, so that soc_camera/rcar_vin can create device nodes
>>>>> to support a driver such as adv7604.c (for HDMI on Lager) underneath.
>>>>>
>>>>> Signed-off-by: William Towle <william.towle@codethink.co.uk>
>>>>> Reviewed-by: Rob Taylor <rob.taylor@codethink.co.uk>
>>>>> ---
>>>>>
>>>>> drivers/media/platform/soc_camera/rcar_vin.c | 4 ++++
>>>>> drivers/media/platform/soc_camera/soc_camera.c | 27 ++++++++++++++++-
>>>>> include/media/soc_camera.h | 1 +
>>>>> 3 files changed, 31 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/media/platform/soc_camera/rcar_vin.c
>>>>> b/drivers/media/platform/soc_camera/rcar_vin.c index 0f67646..b4e9b43
>>>>> 100644
>>>>> --- a/drivers/media/platform/soc_camera/rcar_vin.c
>>>>> +++ b/drivers/media/platform/soc_camera/rcar_vin.c
>>>>> @@ -1364,8 +1364,12 @@ static int rcar_vin_get_formats(struct
>>>>> soc_camera_device *icd, unsigned int idx,
>>>>> struct v4l2_mbus_framefmt *mf = &fmt.format;
>>>>> struct v4l2_rect rect;
>>>>> struct device *dev = icd->parent;
>>>>> + struct media_pad *remote_pad;
>>>>> int shift;
>>>>>
>>>>> + remote_pad = media_entity_remote_pad(
>>>>> + &icd->vdev->entity.pads[0]);
>>>>> + fmt.pad = remote_pad->index;
>>>>
>>>> This won't work if CONFIG_MEDIA_CONTROLLER isn't defined. All these media
>>>> calls would all have to be under #ifdef CONFIG_MEDIA_CONTROLLER.
>>>>
>>>> Unfortunately, if it is not defined, then you still have no way of
>>>> finding the source pad.
>>>>
>>>> Laurent, do you think if it would make sense to add a new subdev core op
>>>> that will return the default source pad (I'm saying 'default' in case
>>>> there are more) of a subdev? That way it can be used in non-MC drivers.
>>>> We never needed the source pad before, but now we do, and this op only
>>>> needs to be implemented if the default source pad != 0.
>>>
>>> I'm not too fond of that. Is there something wrong with the method
>>> implemented in this patch ? Is the dependency on CONFIG_MEDIA_CONTROLLER
>>> an issue ?
>>
>> 1) it's a heck of a lot of code just to get a simple source pad that the
>> subdev knows anyway,
>
> I don't think the subdev knows. If a subdev has multiple source pads there's
> no concept of a default source. It all depends on how the subdevs are
> connected, and media_entity_remote_pad() is the right way to find out.
Note that with 'source pad' I am referring to the output pad of a subdev
(ADV7604_PAD_SOURCE in the case of the adv7604). There may be some confusion
here.
In my experience subdevs in a capture path have usually multiple input (sink)
pads, but only one output (source) pad. Subdevs in a video output path tend to
have one input (sink) pad and multiple output (source) pads.
The multiple inputs/outputs are things like composite, S-Video, HDMI, VGA, etc.
and the single input/output pad is where the device is hooked up to the mediabus
which in turn connects to a DMA engine.
>> 2) soc-camera doesn't use the media controller today, so this would add a
>> dependency on the mc just for this,
>
> I agree that we shouldn't pull the whole MC userspace API in just for this,
> but the kernel side of the API should be available as pad-level operations
> depend on MC. We could split the CONFIG_MEDIA_CONTROLLER option in two.
The way it is now is pretty OK. We just miss the information about the pad
that feeds the dma capture path and for output we miss the the pad that is fed
by the dma output path.
Bridge drivers currently just assume pad 0 in all cases, but that's obviously
not always right as the adv7604 illustrates.
The alternative would be to just hardcode it in platform data or card information.
What this patch does is just enumerating pads until it finds the first one that
fits the criteria, which fails as well if there are multiple pads that would
match and is a lot more code than just have the subdev provide the information.
Regards,
Hans
>> 3) it doesn't actually make a media device, it is just fakes enough to make
>> the subdev think it there is an MC.
>>
>> It doesn't actually have to be a new op, it could be a new field in
>> v4l2_subdev as well. For those bridge drivers that do not use the MC but do
>> need to know the source pad this is important information.
>>
>> It might even simplify the device tree if the default source pad is implied
>> unless stated otherwise (but that might be a step too far).
>>
>> I wonder if a default input pad might also be useful to expose. I suspect
>> this might become important if we want to add MC support to all existing
>> v4l2 drivers.
>
> The concept of a default sink pad makes more sense, but I'm not sure I like it
> too much either. I'd have to think about it.
>
next prev parent reply other threads:[~2015-05-24 22:43 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-20 16:39 HDMI and Composite capture on Lager, for kernel 4.1 William Towle
2015-05-20 16:39 ` [PATCH 01/20] ARM: shmobile: lager dts: Add entries for VIN HDMI input support William Towle
2015-05-20 16:39 ` [PATCH 02/20] media: adv7180: add of match table William Towle
2015-05-20 16:39 ` [PATCH 03/20] media: adv7604: chip info and formats for ADV7612 William Towle
2015-05-25 13:38 ` Guennadi Liakhovetski
2015-05-20 16:39 ` [PATCH 04/20] media: adv7604: document support for ADV7612 dual HDMI input decoder William Towle
2015-05-20 16:39 ` [PATCH 05/20] media: adv7604: ability to read default input port from DT William Towle
2015-05-20 16:39 ` [PATCH 06/20] ARM: shmobile: lager dts: specify default-input for ADV7612 William Towle
2015-05-20 16:39 ` [PATCH 07/20] media: soc_camera: rcar_vin: Add BT.709 24-bit RGB888 input support William Towle
2015-05-25 14:18 ` Guennadi Liakhovetski
2015-05-26 11:17 ` William Towle
2015-05-20 16:39 ` [PATCH 08/20] media: soc_camera pad-aware driver initialisation William Towle
2015-05-20 20:22 ` Sergei Shtylyov
2015-05-21 5:55 ` Hans Verkuil
2015-05-23 18:32 ` Laurent Pinchart
2015-05-24 8:08 ` Hans Verkuil
2015-05-24 21:50 ` Laurent Pinchart
2015-05-24 22:43 ` Hans Verkuil [this message]
2015-05-25 11:37 ` Laurent Pinchart
2015-05-20 16:39 ` [PATCH 09/20] media: rcar_vin: Use correct pad number in try_fmt William Towle
2015-05-21 5:58 ` Hans Verkuil
2015-05-23 18:24 ` Laurent Pinchart
2015-05-20 16:39 ` [PATCH 10/20] media: soc_camera: soc_scale_crop: Use correct pad when calling subdev try_fmt William Towle
2015-05-20 16:39 ` [PATCH 11/20] media: soc_camera: Fill std field in enum_input William Towle
2015-05-20 16:39 ` [PATCH 12/20] media: soc_camera: Fix error reporting in expbuf William Towle
2015-05-20 16:39 ` [PATCH 13/20] media: soc_camera: v4l2-compliance fixes for querycap William Towle
2015-05-21 5:58 ` Hans Verkuil
2015-05-21 12:46 ` Rob Taylor
2015-05-29 1:08 ` [Linux-kernel] " Ben Hutchings
2015-05-29 10:10 ` Hans Verkuil
2015-05-29 11:13 ` Rob Taylor
2015-05-25 15:02 ` Guennadi Liakhovetski
2015-05-20 16:39 ` [PATCH 14/20] media: rcar_vin: Reject videobufs that are too small for current format William Towle
2015-05-25 15:03 ` Guennadi Liakhovetski
2015-05-20 16:39 ` [PATCH 15/20] media: rcar_vin: Don't advertise support for USERPTR William Towle
2015-05-21 6:03 ` Hans Verkuil
2015-05-21 12:50 ` Rob Taylor
2015-05-20 16:39 ` [PATCH 16/20] media: adv7180: Fix set_pad_format() passing wrong format William Towle
2015-05-25 15:12 ` Guennadi Liakhovetski
2015-05-20 16:39 ` [PATCH 17/20] media: adv7604: Support V4L_FIELD_INTERLACED William Towle
2015-05-21 6:10 ` Hans Verkuil
2015-05-21 10:40 ` Rob Taylor
2015-05-25 15:15 ` Guennadi Liakhovetski
2015-05-20 16:39 ` [PATCH 18/20] media: adv7604: Always query_dv_timings in adv76xx_fill_format William Towle
2015-05-21 6:13 ` Hans Verkuil
2015-05-20 16:39 ` [PATCH 19/20] media: rcar_vin: Clean up format debugging statements William Towle
2015-05-25 17:20 ` Guennadi Liakhovetski
2015-05-20 16:39 ` [PATCH 20/20] media: soc_camera: Add debugging for get_formats William Towle
2015-05-25 15:32 ` Guennadi Liakhovetski
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=5562540D.5090106@xs4all.nl \
--to=hverkuil@xs4all.nl \
--cc=g.liakhovetski@gmx.de \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=rob.taylor@codethink.co.uk \
--cc=sergei.shtylyov@cogentembedded.com \
--cc=william.towle@codethink.co.uk \
/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.