, FLD_REG, FLD_FLD_NUM(2) | FLD_FLD_EN4 |
> - FLD_FLD_EN3 | FLD_FLD_EN2 | FLD_FLD_EN);
> + rcsi2_write(priv, FLD_REG, fld);
> rcsi2_write(priv, VCDT_REG, vcdt);
> if (vcdt2)
> rcsi2_write(priv, VCDT2_REG, vcdt2);
> @@ -662,6 +687,8 @@ static int rcsi2_get_pad_format(struct v4l2_subdev *sd,
> }
>
> static const struct v4l2_subdev_video_ops rcar_csi2_video_ops = {
> + .s_std = rcsi2_s_std,
> + .g_std = rcsi2_g_std,
> .s_stream = rcsi2_s_stream,
> };
>
--
Regards,
Laurent Pinchart
Hi Niklas,
On Thu, Mar 07, 2019 at 01:22:36AM +0100, Niklas Söderlund wrote:
> On 2019-03-07 02:13:18 +0200, Laurent Pinchart wrote:
> > On Sat, Feb 16, 2019 at 11:57:58PM +0100, Niklas Söderlund wrote:
> >> Allow the hardware to to do proper field detection for interlaced fie
Hi Hans,
On Thu, Mar 07, 2019 at 09:54:53AM +0100, Hans Verkuil wrote:
> On 3/5/19 8:46 PM, Laurent Pinchart wrote:
> > On Tue, Mar 05, 2019 at 10:58:44AM +0100, hverkuil-ci...@xs4all.nl wrote:
> >> From: Hans Verkuil
> >>
> >> If the subdevice created a devi
Hi Hans,
On Thu, Mar 07, 2019 at 10:23:03AM +0100, Hans Verkuil wrote:
> On 3/5/19 8:39 PM, Laurent Pinchart wrote:
> > On Tue, Mar 05, 2019 at 10:58:42AM +0100, hverkuil-ci...@xs4all.nl wrote:
> >> From: Hans Verkuil
> >>
> >> Ensure that this pointer is set
Hi Jacopo,
On Thu, Mar 07, 2019 at 11:35:11AM +0100, Jacopo Mondi wrote:
> On Wed, Mar 06, 2019 at 09:15:21PM +0200, Laurent Pinchart wrote:
> > On Wed, Mar 06, 2019 at 12:26:59PM +0100, Jacopo Mondi wrote:
> >> When both the media links between AFE and HDMI and the two TX CSI-2
Hi Niklas,
(CC'ing Sakari)
On Thu, Mar 07, 2019 at 01:38:20AM +0100, Niklas Söderlund wrote:
> On 2019-03-07 02:26:45 +0200, Laurent Pinchart wrote:
> > On Thu, Mar 07, 2019 at 01:22:36AM +0100, Niklas Söderlund wrote:
> >> On 2019-03-07 02:13:18 +0200, Laurent Pinchart w
> vimc is unbound and then bound again.
>
> So call memset to ensure any left-over values are cleared.
>
> Signed-off-by: Hans Verkuil
Reviewed-by: Laurent Pinchart
Do I recall correctly that you mentioned there's work in progress that
will allocate this dynamically ? If
do so.
Signed-off-by: Laurent Pinchart
diff --git a/drivers/media/platform/rockchip/isp1/mipi_dphy_sy.c
b/drivers/media/platform/rockchip/isp1/mipi_dphy_sy.c
index 32140960557a..8a7d070314c9 100644
--- a/drivers/media/platform/rockchip/isp1/mipi_dphy_sy.c
+++ b/drivers/media/platform/rockchip
; + interrupts = ;
> + clocks = <&clks IMX7D_IPG_ROOT_CLK>,
> + <&clks IMX7D_MIPI_CSI_ROOT_CLK>,
> + <&clks IMX7D_MIPI_DPHY_ROOT_CLK>;
> + clock-names = "pclk", "wrap", "phy";
> + power-domains = <&pgc_mipi_phy>;
> + phy-supply = <®_1p0d>;
> + resets = <&src IMX7_RESET_MIPI_PHY_MRST>;
> + reset-names = "mrst";
> + status = "disabled";
How about already declaring port@0 here too (but obviously without any
endoint) ?
> + };
> };
>
> aips3: aips-bus@3080 {
--
Regards,
Laurent Pinchart
>> +
> >> +- reg : (required) can take the values 0 or 1,
> >> where 0 is the
> >> + related sink port and port 1 should be
> >> the source one;
> >> +
> >> +endpoint node
> >> +-
> >> +
> >> +- data-lanes: (required) an array specifying active
> >> physical MIPI-CSI2
> >> + data input lanes and their mapping to logical
> >> lanes; the
> >> + array's content is unused, only its length is
> >> meaningful;
> >> +
> >> +- fsl,csis-hs-settle : (optional) differential receiver
> >> (HS-RX) settle time;
> >
> > Could you calculate this, as other drivers do? It probably
> > changes
> > depending on the device runtime configuration.
>
> The only reference to possible values to this parameter is given
> by table in [0], can you point me out the formula for imx7 in the
> documentation?
>
> [0] https://community.nxp.com/thread/463777
Can't you use the values from that table ? :-) You can get the link
speed by querying the connected subdev and reading its
V4L2_CID_PIXEL_RATE control.
--
Regards,
Laurent Pinchart
> http://www.retiisi.org.uk/~sailus/v4l2/notes/osseu18-media.html>
> > >
> > >
> > > Attendees
> > > -
> > >
> > > Brad Love
> > > Ezequiel Garcia
> > > Gustavo Padovan
> > > Hans Verku
Hi Rui,
On Tue, Mar 12, 2019 at 02:05:24PM +, Rui Miguel Silva wrote:
> On Sun 10 Mar 2019 at 21:41, Laurent Pinchart wrote:
> > Hi Rui,
> >
> > Thank you for the patch.
>
> Where have you been for the latest 14 versions? :)
Elsewhere I suppose :-)
> This is
Hi Rui,
On Tue, Mar 12, 2019 at 02:07:02PM +, Rui Miguel Silva wrote:
> On Sun 10 Mar 2019 at 21:48, Laurent Pinchart wrote:
> > On Fri, May 18, 2018 at 09:27:58AM +0100, Rui Miguel Silva wrote:
> >> On Fri 18 May 2018 at 06:58, Sakari Ailus wrote:
> >>> On T
URB status: No such file or directory (-ENOENT) (-2)
> URB length [bytes]: 0
> Data length [bytes]: 0
> [Request in: 86]
> [Time from request: 5.119484000 seconds]
> Unused Setup Header
> Interval: 0
> Start frame: 0
> Copy of Transfer Flags: 0x0200
> Number of ISO descriptors: 0
> [bInterfaceClass: Video (0x0e)]
> [Interface: 0x01]
> [Entity: 0x00]
> [Control Selector: Probe (0x01)]
--
Regards,
Laurent Pinchart
Hi Tomasz,
On Fri, Mar 15, 2019 at 01:18:17PM +0900, Tomasz Figa wrote:
> On Fri, Oct 26, 2018 at 10:42 PM Laurent Pinchart wrote:
> > On Friday, 26 October 2018 14:41:26 EEST Tomasz Figa wrote:
> >> On Thu, Sep 20, 2018 at 11:42 PM Hans Verkuil wrote:
> >>>
Laurent Pinchart (1):
v4l: rcar_fdp1: Fix indentation oddities
drivers/media/platform/rcar_fdp1.c | 28 ++--
1 file changed, 14 insertions(+), 14 deletions(-)
--
Regards,
Laurent Pinchart
an 02, 2019 at 10:38:33AM +0800, Bingbu Cao wrote:
> >> On 12/26/2018 07:03 PM, Laurent Pinchart wrote:
> >>> Hello Bingbu,
> >>>
> >
> > [snip]
> >
> >>>>>>>>> 2. ImgU pipeline needs to be configured for image pro
27;t get the information
in a generic way by querying the control.
One option to keep the code generic would be to add protocol version
information to the uvc_control_mapping structure, to condition control
information on the protocol version. It could take the form of a [min,
max] version range for instance. Entries that don't set the min and max
versions would be applicable to all versions.
>
> > };
> >
> > static const struct uvc_menu_info exposure_auto_controls[] = {
--
Regards,
Laurent Pinchart
d field here instead of
copying it, as we know it has to be zero.
> +
> + return 0;
> }
>
> #define MEDIA_IOC_ENUM_LINKS32 _IOWR('|', 0x02, struct
> media_links_enum32)
--
Regards,
Laurent Pinchart
le device entry isn't added, does the uvcvideo driver
print error messages to the kernel log ?
> /* Alcor Micro AU3820 (Future Boy PC USB Webcam) */
> { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
--
Regards,
Laurent Pinchart
est. If time permits, after getting capture working, I'll see if I can
start cleaning it up.
> Reported-by: Laurent Pinchart
> Signed-off-by: Rui Miguel Silva
> ---
> drivers/staging/media/imx/imx-ic-prpencvf.c | 2 +-
> drivers/staging/media/imx/imx-media-capture.c
bably not in use any more
> so I don't really mind.
As this driver is quite old I assume there's little interest in
investing in it, but is there any chance Samsung would be interested in
contributing to libcamera for newer generations ? :-)
--
Regards,
Laurent Pinchart
Laurent Pinchart (6):
v4l: Add definitions for missing 32-bit RGB formats
v4l: Add definitions for missing 16-bit RGB formats
v4l: Add definitions for missing 16-bit RGB555 formats
media: vsp1: Add support for missing 32-bit RGB formats
media: vsp1: Add
Hi Mauro,
On Monday, 26 March 2018 23:28:55 EEST Mauro Carvalho Chehab wrote:
> Em Mon, 26 Mar 2018 21:47:33 +0300 Laurent Pinchart escreveu:
> > On Monday, 26 March 2018 13:08:16 EEST Mauro Carvalho Chehab wrote:
> > > Em Fri, 23 Mar 2018 23:53:56 +0200 Sakari Ailus escreveu:
&
mpat-ioctl32.c
> > @@ -101,7 +101,7 @@ static int get_v4l2_window32(struct v4l2_window __user
> > *kp,
> > static int put_v4l2_window32(struct v4l2_window __user *kp,
> > struct v4l2_window32 __user *up)
> > {
> > - struct v4l2_clip __user *kclips = kp->clips;
> > + struct v4l2_clip __user *kclips;
> > struct v4l2_clip32 __user *uclips;
> > compat_caddr_t p;
> > u32 clipcount;
> > @@ -116,6 +116,8 @@ static int put_v4l2_window32(struct v4l2_window __user
> > *kp,
> > if (!clipcount)
> > return 0;
> >
> > + if (get_user(kclips, &kp->clips))
> > + return -EFAULT;
> > if (get_user(p, &up->clips))
> > return -EFAULT;
> > uclips = compat_ptr(p);
>
> Good find. I checked for similar problems elsewhere in the file but could
> not find any.
>
> Reviewed-by: Sakari Ailus
Would it be useful to rename kp to something that doesn't imply the memory is
kernel memory ? I was confused at first when reading this patch.
--
Regards,
Laurent Pinchart
Hi Kieran,
On Wednesday, 28 March 2018 22:04:49 EEST Kieran Bingham wrote:
> On 28/03/18 13:27, Kieran Bingham wrote:
> > On 26/02/18 21:45, Laurent Pinchart wrote:
> >> The entities in the pipeline are all started when the LIF is setup.
> >> Remove the outdated c
Hi Kieran,
On Wednesday, 28 March 2018 17:10:10 EEST Kieran Bingham wrote:
> On 26/02/18 21:45, Laurent Pinchart wrote:
> > The DRM pipeline handling code uses the entity's pipe list head to check
> > whether the entity is already included in a pipeline. This method is a
&g
Hi Kieran,
On Wednesday, 28 March 2018 17:43:13 EEST Kieran Bingham wrote:
> On 26/02/18 21:45, Laurent Pinchart wrote:
> > The DRM pipeline setup code used at atomic commit time is similar to the
> > setup code used when enabling the pipeline. Move it to a separate
> > funct
Hi Sakari,
On Thursday, 29 March 2018 10:35:49 EEST Sakari Ailus wrote:
> On Thu, Mar 29, 2018 at 09:19:43AM +0300, Laurent Pinchart wrote:
> > On Wednesday, 28 March 2018 23:16:08 EEST Sakari Ailus wrote:
> > > On Wed, Mar 28, 2018 at 02:59:22PM -0300, Mauro Carvalho Chehab
Hi Kieran,
On Thursday, 29 March 2018 14:49:12 EEST Kieran Bingham wrote:
> Hi Laurent,
>
> Thank you for another patch :D
You're welcome, there will be more ;-)
> On 26/02/18 21:45, Laurent Pinchart wrote:
> > In order to make the vsp1_du_setup_lif() easier to read, an
Hi Kieran,
On Thursday, 29 March 2018 14:37:07 EEST Kieran Bingham wrote:
> On 26/02/18 21:45, Laurent Pinchart wrote:
> > When disabling a DRM plane, the corresponding RPF is only marked as
> > removed from the pipeline in the atomic update handler, with the actual
> > r
s pointed out by Geert and Sergei,
> >
> > thanks!
> >
> > - Refresh patch 2/32 with an updated version, thanks Sakari for pointing
> >
> > this out.
> >
> > - Add Sakaris Ack to patch 1/32.
> > - Rebase on top of v4.9-rc1 instead of v4.9-rc3 to ease integration
> >
> > testing together with renesas-drivers tree.
> >
> > Fabrizio Castro (2):
> > dt-bindings: media: rcar_vin: Reverse SoC part number list
> > dt-bindings: media: rcar_vin: add device tree support for r8a774[35]
> >
> > Niklas Söderlund (31):
> > rcar-vin: add Gen3 devicetree bindings documentation
> > rcar-vin: rename poorly named initialize and cleanup functions
> > rcar-vin: unregister video device on driver removal
> > rcar-vin: move subdevice handling to async callbacks
> > rcar-vin: move model information to own struct
> > rcar-vin: move max width and height information to chip information
> > rcar-vin: move functions regarding scaling
> > rcar-vin: all Gen2 boards can scale simplify logic
> > rcar-vin: set a default field to fallback on
> > rcar-vin: fix handling of single field frames (top, bottom and
> >
> > alternate fields)
> >
> > rcar-vin: update bytesperline and sizeimage calculation
> > rcar-vin: align pixelformat check
> > rcar-vin: break out format alignment and checking
> > rcar-vin: simplify how formats are set and reset
> > rcar-vin: cache video standard
> > rcar-vin: move media bus configuration to struct rvin_dev
> > rcar-vin: enable Gen3 hardware configuration
> > rcar-vin: add function to manipulate Gen3 chsel value
> > rcar-vin: add flag to switch to media controller mode
> > rcar-vin: use different v4l2 operations in media controller mode
> > rcar-vin: force default colorspace for media centric mode
> > rcar-vin: prepare for media controller mode initialization
> > rcar-vin: add group allocator functions
> > rcar-vin: change name of video device
> > rcar-vin: add chsel information to rvin_info
> > rcar-vin: parse Gen3 OF and setup media graph
> > rcar-vin: add link notify for Gen3
> > rcar-vin: extend {start,stop}_streaming to work with media controller
> > rcar-vin: enable support for r8a7795
> > rcar-vin: enable support for r8a7796
> > rcar-vin: enable support for r8a77970
> >
> > .../devicetree/bindings/media/rcar_vin.txt | 137 ++-
> > drivers/media/platform/rcar-vin/Kconfig| 2 +-
> > drivers/media/platform/rcar-vin/rcar-core.c| 962
> > +++-- drivers/media/platform/rcar-vin/rcar-dma.c
> > | 785 ++--- drivers/media/platform/rcar-vin/rcar-v4l2.c
> >| 488 ++- drivers/media/platform/rcar-vin/rcar-vin.h |
> > 146 +++-
> > 6 files changed, 1913 insertions(+), 607 deletions(-)
--
Regards,
Laurent Pinchart
MLINK;
> + goto out;
> + }
> +
> + /* New valid CHSEL found, set the new value. */
> + ret = rvin_set_channel_routing(group->vin[master_id], __ffs(mask_new));
> +out:
> + mutex_unlock(&group->lock);
> +
> + return ret;
> +}
> +
> +static const struct media_device_ops rvin_media_ops = {
> + .link_notify = rvin_group_link_notify,
> +};
> +
> /*
> ---
> -- * Gen3 CSI2 Group Allocator
> */
> @@ -85,6 +231,7 @@ static int rvin_group_init(struct rvin_group *group,
> struct rvin_dev *vin) vin_dbg(vin, "found %u enabled VIN's in DT",
> group->count);
>
> mdev->dev = vin->dev;
> + mdev->ops = &rvin_media_ops;
>
> match = of_match_node(vin->dev->driver->of_match_table,
> vin->dev->of_node);
--
Regards,
Laurent Pinchart
he struct rvin_info.
>
> Signed-off-by: Niklas Söderlund
> Reviewed-by: Hans Verkuil
Reviewed-by: Laurent Pinchart
> ---
>
> * Changes since v11
> - Fixed spelling.
> - Reorderd filed order in struct rvin_group_route.
> - Renamed chan to channel in struct rvin_group_ro
the API. Until the API is updated to
> allow for userspace to set these Hans wants the fields to be set by the
> driver to fixed values.
>
> Signed-off-by: Niklas Söderlund
> Reviewed-by: Hans Verkuil
Reviewed-by: Laurent Pinchart
> ---
> drivers/media
this mode a different set
> of v4l2 operations needs to be used.
>
> Add a new set of v4l2 operations to support operation without directly
> interacting with the source subdevice.
>
> Signed-off-by: Niklas Söderlund
> Reviewed-by: Hans Verkuil
Reviewed-by: Laurent Pinc
> + case V4L2_FIELD_INTERLACED_BT:
> + case V4L2_FIELD_INTERLACED:
> + break;
> + case V4L2_FIELD_ALTERNATE:
> + /*
> + * Driver dose not (yet) support outputting ALTERNATE to a
s/dose/does/
Apart from that,
Reviewed-by: Laurent Pinchart
> + * usersp
+ * Driver dose not (yet) support outputting ALTERNATE to a
s/dose/does/
Apart from that, I'll overlook the fact that if rvin_reset_format() function
is called from S_STD or S_DV_TIMINGS and userspace calls G_FMT immediately
after that, the field will be set to V4L2_FIELD_ALT
> - pix->pixelformat = RVIN_DEFAULT_FORMAT;
> -
> - /* Limit to source capabilities */
> - ret = __rvin_try_format_source(vin, which, pix, source);
> - if (ret)
> - return ret;
> -
> - return rvin_format_align(vin, pix);
> + ret
t;
> Signed-off-by: Niklas Söderlund
> Reviewed-by: Hans Verkuil
Reviewed-by: Laurent Pinchart
> ---
> drivers/media/platform/rcar-vin/rcar-core.c | 6 ++
> drivers/media/platform/rcar-vin/rcar-dma.c | 7 ++-
> drivers/media/platform/rcar-vin/rcar-v4l2.c |
ices. There are only
> a few possible routes which are set by hardware limitations, which are
> different for each SoC in the Gen3 family.
>
> Signed-off-by: Niklas Söderlund
> Acked-by: Rob Herring
> Acked-by: Sakari Ailus
Reviewed-by: Laurent Pinchart
> ---
> .../bin
->subdev, &pdev->dev);
> + snprintf(priv->subdev.name, V4L2_SUBDEV_NAME_SIZE, "%s %s",
> + KBUILD_MODNAME, dev_name(&pdev->dev));
> + priv->subdev.flags = V4L2_SUBDEV_FL_HAS_DEVNODE;
> +
> + priv->subdev.entity.function = MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER;
> + priv->subdev.entity.ops = &rcar_csi2_entity_ops;
> +
> + priv->pads[RCAR_CSI2_SINK].flags = MEDIA_PAD_FL_SINK;
> + for (i = RCAR_CSI2_SOURCE_VC0; i < NR_OF_RCAR_CSI2_PAD; i++)
> + priv->pads[i].flags = MEDIA_PAD_FL_SOURCE;
> +
> + ret = media_entity_pads_init(&priv->subdev.entity, NR_OF_RCAR_CSI2_PAD,
> + priv->pads);
> + if (ret)
> + goto error;
> +
> + pm_runtime_enable(&pdev->dev);
> +
> + ret = v4l2_async_register_subdev(&priv->subdev);
> + if (ret < 0)
> + goto error;
> +
> + dev_info(priv->dev, "%d lanes found\n", priv->lanes);
priv->lanes is unsigned you should use %u.
> +
> + return 0;
> +
> +error:
> + v4l2_async_notifier_unregister(&priv->notifier);
> + v4l2_async_notifier_cleanup(&priv->notifier);
> +
> + return ret;
> +}
[snip]
With these small issues fixed and Kieran's and Maxime's comments addressed as
you see fit,
Reviewed-by: Laurent Pinchart
--
Regards,
Laurent Pinchart
/* r8a7795 ES1.x behaves different then ES2.0+ but no own compat */
>
> /*
> * r8a7795 ES1.x behaves differently than the ES2.0+ but doesn't have it's
> own
> * compatible string
> */
With a period at the end of the sentence if would be perfect :-)
> > + attr = soc_device_match(r8a7795es1);
> > + if (attr)
> > + priv->info = attr->data;
> > +
> > + priv->dev = &pdev->dev;
> > +
> > + mutex_init(&priv->lock);
> > + priv->stream_count = 0;
> > +
> > + ret = rcar_csi2_probe_resources(priv, pdev);
> > + if (ret) {
> > + dev_err(priv->dev, "Failed to get resources\n");
> > + return ret;
> > + }
> > +
> > + platform_set_drvdata(pdev, priv);
> > +
> > + ret = rcar_csi2_parse_dt(priv);
> > + if (ret)
> > + return ret;
> > +
> > + priv->subdev.owner = THIS_MODULE;
> > + priv->subdev.dev = &pdev->dev;
> > + v4l2_subdev_init(&priv->subdev, &rcar_csi2_subdev_ops);
> > + v4l2_set_subdevdata(&priv->subdev, &pdev->dev);
> > + snprintf(priv->subdev.name, V4L2_SUBDEV_NAME_SIZE, "%s %s",
> > +KBUILD_MODNAME, dev_name(&pdev->dev));
> > + priv->subdev.flags = V4L2_SUBDEV_FL_HAS_DEVNODE;
> > +
> > + priv->subdev.entity.function = MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER;
> > + priv->subdev.entity.ops = &rcar_csi2_entity_ops;
> > +
> > + priv->pads[RCAR_CSI2_SINK].flags = MEDIA_PAD_FL_SINK;
> > + for (i = RCAR_CSI2_SOURCE_VC0; i < NR_OF_RCAR_CSI2_PAD; i++)
> > + priv->pads[i].flags = MEDIA_PAD_FL_SOURCE;
> > +
> > + ret = media_entity_pads_init(&priv->subdev.entity, NR_OF_RCAR_CSI2_PAD,
> > +priv->pads);
> > + if (ret)
> > + goto error;
> > +
> > + pm_runtime_enable(&pdev->dev);
> > +
> > + ret = v4l2_async_register_subdev(&priv->subdev);
> > + if (ret < 0)
> > + goto error;
> > +
> > + dev_info(priv->dev, "%d lanes found\n", priv->lanes);
> > +
> > + return 0;
> > +
> > +error:
> > + v4l2_async_notifier_unregister(&priv->notifier);
> > + v4l2_async_notifier_cleanup(&priv->notifier);
> > +
> > + return ret;
> > +}
[snip]
> Well ... phew ... done :) I can go to bed.
I wish I could do the same :-)
--
Regards,
Laurent Pinchart
< NR_OF_RCAR_CSI2_PAD; i++)
> > + priv->pads[i].flags = MEDIA_PAD_FL_SOURCE;
> > +
> > + ret = media_entity_pads_init(&priv->subdev.entity, NR_OF_RCAR_CSI2_PAD,
> > +priv->pads);
> > + if (ret)
> > + goto error;
> > +
> > + pm_runtime_enable(&pdev->dev);
>
> Is CONFIG_PM mandatory on Renesas SoCs? If not, you end up with the
> device uninitialised at probe, and pm_runtime_get_sync will not
> initialise it either if CONFIG_PM is not enabled. I guess you could
> call your runtime_resume function unconditionally, and mark the device
> as active in runtime_pm using pm_runtime_set_active.
>
> Looks good otherwise, once fixed (and if relevant):
> Reviewed-by: Maxime Ripard
--
Regards,
Laurent Pinchart
Hi Kieran,
On Wednesday, 4 April 2018 19:15:19 EEST Kieran Bingham wrote:
> On 02/04/18 13:35, Laurent Pinchart wrote:
>
>
>
> >>> +/* Setup the output side of the pipeline (WPF and LIF). */
> >>> +static int vsp1_du_pipeline_s
Hi Kieran,
On Wednesday, 4 April 2018 19:16:46 EEST Kieran Bingham wrote:
> On 26/02/18 21:45, Laurent Pinchart wrote:
> > Display list completion is already reported to the frame end handler,
> > but that mechanism is global to all display lists. In order to implement
e and the
details this time.
> On 26/02/18 21:45, Laurent Pinchart wrote:
> > The VSPDL variant drives two DU channels through two LIF and two
> > blenders, BRU and BRS. The DU channels thus share the five available
> > VSPDL inputs and expose them as five KMS planes.
>
Hi Geert,
On Thursday, 5 April 2018 10:33:55 EEST Geert Uytterhoeven wrote:
> On Wed, Apr 4, 2018 at 5:26 PM, Laurent Pinchart wrote:
> > On Thursday, 29 March 2018 14:30:39 EEST Maxime Ripard wrote:
> >> On Tue, Feb 13, 2018 at 12:01:32AM +0100, Niklas Söderlund wrote:
>
d in individual changelogs.
Laurent Pinchart (15):
v4l: vsp1: Don't start/stop media pipeline for DRM
v4l: vsp1: Remove unused field from vsp1_drm_pipeline structure
v4l: vsp1: Store pipeline pointer in vsp1_entity
v4l: vsp1: Use vsp1_entity.pipe to check if entity belongs to a
The vsp1_drm_pipeline enabled field is set but never used. Remove it.
Signed-off-by: Laurent Pinchart
Reviewed-by: Kieran Bingham
---
drivers/media/platform/vsp1/vsp1_drm.c | 4
drivers/media/platform/vsp1/vsp1_drm.h | 2 --
2 files changed, 6 deletions(-)
diff --git a/drivers/media
Move the duplicated DRM pipeline configuration code to a function and
call it from vsp1_du_setup_lif() and vsp1_du_atomic_flush().
Signed-off-by: Laurent Pinchart
Reviewed-by: Kieran Bingham
---
drivers/media/platform/vsp1/vsp1_drm.c | 95 +++---
1 file changed, 43
vsp1_du_pipeline_setup_input() function will not setup any RPF, and will
thus not setup formats on the BRU sink pads. This isn't a problem as all
inputs are disabled, and the BRU sink pads will be reconfigured from the
atomic commit handler when inputs will be enabled.
Signed-off-by: Laurent Pinchart
Review
driver. Extend the display list API to support such an
internal use of the display list.
Signed-off-by: Laurent Pinchart
---
Changes since v1:
- Use the frame end status flags to report notification
- Rename the notify flag to internal
---
drivers/media/platform/vsp1/vsp1_dl.c| 23
inter.
Signed-off-by: Laurent Pinchart
Reviewed-by: Kieran Bingham
---
drivers/media/platform/vsp1/vsp1_drm.c | 8
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/media/platform/vsp1/vsp1_drm.c
b/drivers/media/platform/vsp1/vsp1_drm.c
index a7ad85ab0b08..e210917fdc3f 1
The DRM pipeline setup code used at atomic commit time is similar to the
setup code used when enabling the pipeline. Move it to a separate
function in order to share it.
Signed-off-by: Laurent Pinchart
Reviewed-by: Kieran Bingham
---
drivers/media/platform/vsp1/vsp1_drm.c | 347
registers to stay close to the datasheet.
Signed-off-by: Laurent Pinchart
Acked-by: Kieran Bingham
---
drivers/media/platform/vsp1/Makefile | 2 +-
drivers/media/platform/vsp1/vsp1.h | 6 +-
.../media/platform/vsp1/{vsp1_bru.c => vsp1_brx.c} |
In order to make the vsp1_du_setup_lif() easier to read, and for
symmetry with the DRM pipeline input setup, move the pipeline output
setup code to a separate function.
Signed-off-by: Laurent Pinchart
Reviewed-by: Kieran Bingham
--
Changes since v1:
- Rename vsp1_du_pipeline_setup_input() to
rrent
implementation is not correct. Remove the incorrect and unneeded code.
While at it remove the outdated comment that states that entities are
not started when the LIF is setup, as they now are.
Signed-off-by: Laurent Pinchart
Reviewed-by: Kieran Bingham
--
Changes since v1:
- Remove outdated co
To implement fully dynamic plane assignment to pipelines, we need to
reassign the BRU and BRS to the DRM pipelines in the atomic commit
handler. In preparation for this setup factor out the BRU source pad
code and call it both at LIF setup and atomic commit time.
Signed-off-by: Laurent Pinchart
Various types of objects subclassing vsp1_entity currently store a
pointer to the pipeline. Move the pointer to vsp1_entity to simplify the
code and avoid storing the pipeline in more entity subclasses later.
Signed-off-by: Laurent Pinchart
Reviewed-by: Kieran Bingham
---
drivers/media
, this requires reconfiguring the
other pipeline to free the BRU before processing, which can result in
frame drop on both pipelines.
Signed-off-by: Laurent Pinchart
Reviewed-by: Kieran Bingham
---
drivers/media/platform/vsp1/vsp1_drm.c | 161 +++--
drivers/media/platform
We will soon need to return more than a boolean completion status from
the vsp1_dlm_irq_frame_end() IRQ handler. Turn the return value into a
bitfield to prepare for that. No functional change is introduced here.
Signed-off-by: Laurent Pinchart
---
drivers/media/platform/vsp1/vsp1_dl.c| 22
Dynamic assignment of the BRU and BRS to pipelines is prone to
regressions, add messages to make debugging easier. Keep it as a
separate commit to ease removal of those messages once the code will
deem to be completely stable.
Signed-off-by: Laurent Pinchart
Acked-by: Kieran Bingham
done from the atomic update handler.
The current implementation is RPF-specific. Make it independent of the
entity type by using the entity's pipe pointer to mark removal from the
pipeline. This will allow using the mechanism to remove BRU instances.
Signed-off-by: Laurent Pinchart
Reviewed-
those stubs, sorry. Otherwise
where do you stop ? If you have half of the code that is architecture-
dependent, would you stub it ? And what if the stubs you define here generate
warnings in static analyzers ?
If you want to make drivers compile for all architectures, the APIs they use
must be defined in linux/, not in asm/. They can be stubbed there when not
implemented in a particular architecture, but not in the driver.
> #include
> #include
--
Regards,
Laurent Pinchart
d me. The problem has been
there from the start :-/
You should add a fixes tag:
Fixes: 9b28ee3c9122 ("[media] omap3isp: Use the common clock framework")
Apart from that,
Reviewed-by: Laurent Pinchart
I think Sakari is planning a pull request for the omap3isp driver so I'll let
> +static inline void omapdss_compat_uninit(void) {};
> +
> +static inline int omap_dss_get_num_overlay_managers(void)
> +{ return 0; };
> +
> +static inline struct omap_overlay_manager *omap_dss_get_overlay_manager(int
> num) +{ return NULL; };
> +
> +static inline int omap_dss_get_num_overlays(void)
> +{ return 0; };
> +
> +static inline struct omap_overlay *omap_dss_get_overlay(int num)
> +{ return NULL; };
> +
> +
> +#endif /* FB_OMAP2 */
> +
>
> #endif /* __OMAPFB_DSS_H */
--
Regards,
Laurent Pinchart
Hi Mauro,
Thank you for the patch.
On Thursday, 5 April 2018 23:29:44 EEST Mauro Carvalho Chehab wrote:
> This driver compile as-is with COMPILE_TEST.
>
> Signed-off-by: Mauro Carvalho Chehab
Acked-by: Laurent Pinchart
I don't have patches pending for the omap4iss driver, c
long)buf->dma_addr,
> - (unsigned long)buf->virt_addr);
> + buf->virt_addr);
While at it you can use %pad for buf->dma_addr.
dev_dbg(stat->isp->dev,
"%s: buffer[%u] allocated. dma=%pad virt=
r to explain what the problem is and how
you fix it, otherwise one might be left wondering if the fix is correct, or if
it could be a false positive.
With the commit message updated,
Reviewed-by: Laurent Pinchart
> Signed-off-by: Mauro Carvalho Chehab
> ---
> drivers/media/platform/
The DRM pipeline setup code used at atomic commit time is similar to the
setup code used when enabling the pipeline. Move it to a separate
function in order to share it.
Signed-off-by: Laurent Pinchart
Reviewed-by: Kieran Bingham
---
Changes since v2:
- Rename vsp1_du_pipeline_setup_input() to
In order to make the vsp1_du_setup_lif() easier to read, and for
symmetry with the DRM pipeline input setup, move the pipeline output
setup code to a separate function.
Signed-off-by: Laurent Pinchart
Reviewed-by: Kieran Bingham
--
Changes since v2:
- Moved vsp1_du_pipeline_setup_input
is call, and must not free it
> + * explicitly with vsp1_dl_body_free().
> *
> - * Fragments are only usable for display lists in header mode. Attempt to
> - * add a fragment to a header-less display list will return an error.
> + * Additional bodies are only usable for display lists in header mode.
> + * Attempting to add a body to a header-less display list will return an
> error.
> */
[snip]
With those two small issues fixed,
Reviewed-by: Laurent Pinchart
--
Regards,
Laurent Pinchart
7f986b69a..031032e304d2
> 100644
> --- a/drivers/media/platform/vsp1/vsp1_dl.h
> +++ b/drivers/media/platform/vsp1/vsp1_dl.h
> @@ -17,6 +17,7 @@
>
> struct vsp1_device;
> struct vsp1_dl_body;
> +struct vsp1_dl_body_pool;
> struct vsp1_dl_list;
> struct vsp1_dl_manager;
>
> @@ -34,6 +35,13 @@ void vsp1_dl_list_put(struct vsp1_dl_list *dl);
> void vsp1_dl_list_write(struct vsp1_dl_list *dl, u32 reg, u32 data);
> void vsp1_dl_list_commit(struct vsp1_dl_list *dl);
>
> +struct vsp1_dl_body_pool *
> +vsp1_dl_body_pool_create(struct vsp1_device *vsp1, unsigned int num_bodies,
> + unsigned int num_entries, size_t extra_size);
> +void vsp1_dl_body_pool_destroy(struct vsp1_dl_body_pool *pool);
> +struct vsp1_dl_body *vsp1_dl_body_get(struct vsp1_dl_body_pool *pool);
> +void vsp1_dl_body_put(struct vsp1_dl_body *dlb);
> +
> struct vsp1_dl_body *vsp1_dl_body_alloc(struct vsp1_device *vsp1,
> unsigned int num_entries);
> void vsp1_dl_body_free(struct vsp1_dl_body *dlb);
--
Regards,
Laurent Pinchart
m->gc_bodies);
> - INIT_WORK(&dlm->gc_work, vsp1_dlm_garbage_collect);
> +
> + /*
> + * Initialize the display list body and allocate DMA memory for the body
> + * and the optional header. Both are allocated together to avoid memory
> + * fragmentation, with the header located right after the body in
> + * memory.
> + */
> + header_size = dlm->mode == VSP1_DL_MODE_HEADER
> + ? ALIGN(sizeof(struct vsp1_dl_header), 8)
> + : 0;
> +
> + dlm->pool = vsp1_dl_body_pool_create(vsp1, prealloc,
> + VSP1_DL_NUM_ENTRIES, header_size);
> + if (!dlm->pool)
> + return NULL;
>
> for (i = 0; i < prealloc; ++i) {
> struct vsp1_dl_list *dl;
>
> - dl = vsp1_dl_list_alloc(dlm);
> + dl = vsp1_dl_list_alloc(dlm, dlm->pool);
> if (!dl)
> return NULL;
>
> @@ -955,12 +838,10 @@ void vsp1_dlm_destroy(struct vsp1_dl_manager *dlm)
> if (!dlm)
> return;
>
> - cancel_work_sync(&dlm->gc_work);
> -
> list_for_each_entry_safe(dl, next, &dlm->free, list) {
> list_del(&dl->list);
> vsp1_dl_list_free(dl);
> }
>
> - vsp1_dlm_bodies_free(dlm);
> + vsp1_dl_body_pool_destroy(dlm->pool);
> }
[snip]
--
Regards,
Laurent Pinchart
> b/drivers/media/platform/vsp1/vsp1_lut.c index 262cb72139d6..77cf7137a0f2
> 100644
> --- a/drivers/media/platform/vsp1/vsp1_lut.c
> +++ b/drivers/media/platform/vsp1/vsp1_lut.c
> @@ -213,8 +213,13 @@ static void lut_configure(struct vsp1_entity *entity,
> lut->lut = NULL;
> spin_unlock_irqrestore(&lut->lock, flags);
>
> - if (dlb)
> + if (dlb) {
> vsp1_dl_list_add_body(dl, dlb);
> +
> + /* release our local reference */
s/release/Release/
s/reference/reference./
With these small issues fixed,
Reviewed-by: Laurent Pinchart
> + vsp1_dl_body_put(dlb);
> + }
> +
> break;
> }
> }
--
Regards,
Laurent Pinchart
is used
for the sole purpose of checking whether to configure frame-related parameters
when partition == 0 makes me think that having two separate operations could
make sense.
> * @max_width: Return the max supported width of data that the entity
> can
> * process in a single operation.
> * @partition: Process the partition construction based on this
> entity's
[snip]
--
Regards,
Laurent Pinchart
>
> - vsp1_wpf_write(wpf, dl, VI6_WPF_SRCRPF, srcrpf);
> + vsp1_wpf_write(wpf, dlb, VI6_WPF_SRCRPF, srcrpf);
>
> /* Enable interrupts */
> - vsp1_dl_list_write(dl, VI6_WPF_IRQ_STA(wpf->entity.index), 0);
> - vsp1_dl_list_write(dl, VI6_WPF_IRQ_ENB(wpf->entity.index),
> -VI6_WFP_IRQ_ENB_DFEE);
> + vsp1_dl_body_write(dlb, VI6_WPF_IRQ_STA(wpf->entity.index), 0);
> + vsp1_dl_body_write(dlb, VI6_WPF_IRQ_ENB(wpf->entity.index),
> +VI6_WFP_IRQ_ENB_DFEE);
Here too.
> }
[snip]
With those small issues fixed,
Reviewed-by: Laurent Pinchart
--
Regards,
Laurent Pinchart
pipe->dl);
> - pipe->dl = NULL;
> }
> mutex_unlock(&pipe->lock);
>
> @@ -1240,6 +1247,16 @@ struct vsp1_video *vsp1_video_create(struct
> vsp1_device *vsp1, goto error;
> }
>
> + /*
> + * Utilise a body pool to cache the constant configuration of the
> + * pipeline object.
> + */
> + video->dlbs = vsp1_dl_body_pool_create(vsp1, 3, 128, 0);
> + if (!video->dlbs) {
> + ret = -ENOMEM;
> + goto error;
> + }
> +
> return video;
>
> error:
> @@ -1249,6 +1266,8 @@ struct vsp1_video *vsp1_video_create(struct
> vsp1_device *vsp1,
>
> void vsp1_video_cleanup(struct vsp1_video *video)
> {
> + vsp1_dl_body_pool_destroy(video->dlbs);
> +
> if (video_is_registered(&video->video))
> video_unregister_device(&video->video);
>
> diff --git a/drivers/media/platform/vsp1/vsp1_video.h
> b/drivers/media/platform/vsp1/vsp1_video.h index 50ea7f02205f..e84f8ee902c1
> 100644
> --- a/drivers/media/platform/vsp1/vsp1_video.h
> +++ b/drivers/media/platform/vsp1/vsp1_video.h
> @@ -43,6 +43,8 @@ struct vsp1_video {
>
> struct mutex lock;
>
> + struct vsp1_dl_body_pool *dlbs;
> + struct vsp1_dl_body *pipe_config;
> unsigned int pipe_index;
>
> struct vb2_queue queue;
--
Regards,
Laurent Pinchart
t; drivers/media/platform/vsp1/vsp1_drm.c| 35 +--
> drivers/media/platform/vsp1/vsp1_entity.c | 26 +-
> drivers/media/platform/vsp1/vsp1_entity.h | 38 +-
> drivers/media/platform/vsp1/vsp1_hgo.c| 26 +--
> drivers/media/platform/vsp1/vsp1_hgt.c| 28 +--
> drivers/media/platform/vsp1/vsp1_hsit.c | 20 +-
> drivers/media/platform/vsp1/vsp1_lif.c| 25 +-
> drivers/media/platform/vsp1/vsp1_lut.c| 77 +++--
> drivers/media/platform/vsp1/vsp1_lut.h| 1 +-
> drivers/media/platform/vsp1/vsp1_pipe.c | 11 +-
> drivers/media/platform/vsp1/vsp1_pipe.h | 7 +-
> drivers/media/platform/vsp1/vsp1_rpf.c| 183 +--
> drivers/media/platform/vsp1/vsp1_sru.c| 24 +-
> drivers/media/platform/vsp1/vsp1_uds.c| 75 ++--
> drivers/media/platform/vsp1/vsp1_uds.h| 2 +-
> drivers/media/platform/vsp1/vsp1_video.c | 82 ++---
> drivers/media/platform/vsp1/vsp1_video.h | 2 +-
> drivers/media/platform/vsp1/vsp1_wpf.c| 327 +--
> 23 files changed, 845 insertions(+), 691 deletions(-)
>
> base-commit: 8514509ba5933f4e4ade0d5d81be117f18c1ebd2
--
Regards,
Laurent Pinchart
it right
away.
> On Fri, 23 Mar 2018, Laurent Pinchart wrote:
> > Hi Guennadi,
> >
> > Thank you for the patch.
> >
> > On Friday, 23 March 2018 11:24:00 EET Laurent Pinchart wrote:
> > > From: Guennadi Liakhovetski
> > >
> > > UVC
Hi Guennadi,
Thank you for the patch.
On Friday, 23 March 2018 11:24:01 EEST Laurent Pinchart wrote:
> From: Guennadi Liakhovetski
>
> When a command ends up in a STALL on the control pipe, use the Request
> Error Code control to provide a more precise error information to the
>
s.
Signed-off-by: Laurent Pinchart
---
drivers/media/platform/Kconfig | 5 -
1 file changed, 4 insertions(+), 1 deletion(-)
Hi Mauro,
While we continue the discussions on whether the ARM IOMMU functions should be
stubbed in the omap3isp driver itself or not, I propose already merging this
PILE_TEST
>
> select FB_OMAP2_DSS
> select OMAP2_VRFB if ARCH_OMAP2 || ARCH_OMAP3
--
Regards,
Laurent Pinchart
Hi Mauro,
On Thursday, 5 April 2018 22:44:44 EEST Mauro Carvalho Chehab wrote:
> Em Thu, 05 Apr 2018 21:30:27 +0300 Laurent Pinchart escreveu:
> > On Thursday, 5 April 2018 20:54:02 EEST Mauro Carvalho Chehab wrote:
> > > There aren't much things required for it to
t; +#endif
>
> #include
> #include
As just commented on in a reply to v1 I still don't think this is a proper
solution. I'm all for extending compile-test coverage, but I don't believe we
need to make all drivers compile on every platform. ARM is certainly a
mainstream-enough platform nowadays to be worth having the media tree compiled
for.
--
Regards,
Laurent Pinchart
Hi Mauro,
On Saturday, 7 April 2018 16:16:57 EEST Mauro Carvalho Chehab wrote:
> Em Sat, 7 Apr 2018 14:40:08 +0300 Laurent Pinchart escreveu:
> > The omap3isp driver can't be compiled on non-ARM platforms but has no
> > compile-time dependency on OMAP. It however r
have tested it on the Migo-R board where I have an ov772x installed
> and it works fine.
>
> Although I would like to have a confirmation this is fine by people
> how has seen more i2c adapters in action than me :)
>
> > Cc: Jacopo Mondi
> > Cc: Laure
r to find in the code.
>
> Signed-off-by: Simon Que
I like this and agree with the two reasons you have given.
Acked-by: Laurent Pinchart
> ---
> drivers/media/v4l2-core/v4l2-dev.c | 22 +++---
> 1 file changed, 11 insertions(+), 11 deletions(-)
>
> dif
er functions, I propose calling this
ov5640_set_ctrl_light_freq().
Apart from that,
Reviewed-by: Laurent Pinchart
> +{
> + int ret;
> +
> + ret = ov5640_mod_reg(sensor, OV5640_REG_HZ5060_CTRL01, BIT(7),
> + (value == V4L2_CID_POWER_LINE_FRE
st_pattern_menu);
>
> + ctrls->auto_focus = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_FOCUS_AUTO,
> + 0, 1, 1, 0);
> +
> if (hdl->error) {
> ret = hdl->error;
> goto free_ctrls;
--
Regards,
Laurent Pinchart
a more appropriate platform dependency
> than the legacy ARCH_SHMOBILE, hence use the former.
>
> This will allow to drop ARCH_SHMOBILE on ARM and ARM64 in the near
> future.
>
> Signed-off-by: Geert Uytterhoeven
Acked-by: Laurent Pinchart
How would you like to get this merg
removing the
computation and returning the incoming pixel clock rate directly.
- The AFE performs similar calculation, while it should simply return
the fixed pixel rate for analog sources, mandated by the ADV748x to be
28.63636 MHz.
Signed-off-by: Laurent Pinchart
---
drivers/media/i2c/adv748x
Hi Geert,
On Saturday, 21 April 2018 11:07:11 EEST Laurent Pinchart wrote:
> On Friday, 20 April 2018 16:28:29 EEST Geert Uytterhoeven wrote:
> > The Renesas Fine Display Processor driver is used on Renesas R-Car SoCs
> > only. Since commit 9b5ba0df4ea4f940 ("ARM:
indentation oddities I
have run across during development.
Geert Uytterhoeven (1):
v4l: rcar_fdp1: Change platform dependency to ARCH_RENESAS
Laurent Pinchart (2):
v4l: rcar_fdp1: Enable compilation on Gen2 platforms
v4l: rcar_fdp1: Fix indentation oddities
drivers/media/platform/Kconfig | 4
This will allow to drop ARCH_SHMOBILE on ARM and ARM64 in the near
future.
Signed-off-by: Geert Uytterhoeven
Acked-by: Laurent Pinchart
Signed-off-by: Laurent Pinchart
---
drivers/media/platform/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/platform
ombination ARCH_RENESAS && !VIDEO_RENESAS_FCP. Fix it by handling the
dependency the same way the vsp1 driver did in commit 199946731fa4
("[media] vsp1: clarify FCP dependency").
Fixes: 1d3897143815 ("[media] v4l: rcar_fdp1: add FCP dependency")
Signed-off-by: Laurent Pinchar
Indentation is odd in several places, especially when printing messages
to the kernel log. Fix it to match the usual coding style.
Signed-off-by: Laurent Pinchart
---
drivers/media/platform/rcar_fdp1.c | 28 ++--
1 file changed, 14 insertions(+), 14 deletions(-)
diff
up to 5c0a8b4dfadee010a68b88d82b28f09f373faf86:
v4l: vsp1: Rename BRU to BRx (2018-04-22 14:11:06 +0300)
Laurent Pinchart (15):
v4l: vsp1: Don't start/stop media pipeline for DRM
v4l: vsp1: Remove unused field
The implementation of the set_fmt pad operation is identical in the
three modules. Move it to a generic helper function.
Signed-off-by: Laurent Pinchart
---
drivers/media/platform/vsp1/vsp1_clu.c| 65 +--
drivers/media/platform/vsp1/vsp1_entity.c | 75
701 - 800 of 8133 matches
Mail list logo