From: "Niklas Söderlund" <niklas.soderlund@ragnatech.se> To: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Hans Verkuil <hverkuil@xs4all.nl>, linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, tomoharu.fukawa.eb@renesas.com, Kieran Bingham <kieran.bingham@ideasonboard.com> Subject: Re: [PATCH v9 16/28] rcar-vin: add function to manipulate Gen3 chsel value Date: Wed, 20 Dec 2017 22:20:38 +0100 [thread overview] Message-ID: <20171220212038.GG32148@bigcity.dyn.berto.se> (raw) In-Reply-To: <20173129.GKy7R676Pn@avalon> Hi Laurent, Thanks for your comments. On 2017-12-08 11:52:01 +0200, Laurent Pinchart wrote: > Hi Niklas, > > Thank you for the patch. > > On Friday, 8 December 2017 03:08:30 EET Niklas Söderlund wrote: > > On Gen3 the CSI-2 routing is controlled by the VnCSI_IFMD register. One > > feature of this register is that it's only present in the VIN0 and VIN4 > > instances. The register in VIN0 controls the routing for VIN0-3 and the > > register in VIN4 controls routing for VIN4-7. > > > > To be able to control routing from a media device this function is need > > to control runtime PM for the subgroup master (VIN0 and VIN4). The > > subgroup master must be switched on before the register is manipulated, > > once the operation is complete it's safe to switch the master off and > > the new routing will still be in effect. > > > > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> > > Reviewed-by: Hans Verkuil <hans.verkuil@cisco.com> > > --- > > drivers/media/platform/rcar-vin/rcar-dma.c | 25 +++++++++++++++++++++++++ > > drivers/media/platform/rcar-vin/rcar-vin.h | 2 ++ > > 2 files changed, 27 insertions(+) > > > > diff --git a/drivers/media/platform/rcar-vin/rcar-dma.c > > b/drivers/media/platform/rcar-vin/rcar-dma.c index > > ace95d5b543a17e3..d2788d8bb9565aaa 100644 > > --- a/drivers/media/platform/rcar-vin/rcar-dma.c > > +++ b/drivers/media/platform/rcar-vin/rcar-dma.c > > @@ -16,6 +16,7 @@ > > > > #include <linux/delay.h> > > #include <linux/interrupt.h> > > +#include <linux/pm_runtime.h> > > > > #include <media/videobuf2-dma-contig.h> > > > > @@ -1228,3 +1229,27 @@ int rvin_dma_register(struct rvin_dev *vin, int irq) > > > > return ret; > > } > > + > > +/* ------------------------------------------------------------------------ > > + * Gen3 CHSEL manipulation > > + */ > > + > > +void rvin_set_chsel(struct rvin_dev *vin, u8 chsel) > > How about naming the function a bit more explicitly, > rvin_set_channel_routing() for instance ? I agree, it's a much better name. > > > +{ > > + u32 ifmd, vnmc; > > + > > + pm_runtime_get_sync(vin->dev); > > Shouldn't you check the return value of this function ? Sakari asked the same thing in v4 :-) In short no its not needed please see Geert's response [1]. If I recall correctly this was also discussed in more detail in another thread for some other driver whit a bit longer answer saying that it pm_runtime_get_sync() fails you have big problems but I can't find that thread now :-( 1. https://www.spinics.net/lists/linux-media/msg115241.html > > > + > > + /* Make register writes take effect immediately */ > > + vnmc = rvin_read(vin, VNMC_REG) & ~VNMC_VUP; > > + rvin_write(vin, vnmc, VNMC_REG); > > Shouldn't you restore the original value of VNMC at the end of the function ? > What if this races with device access local to the VIN0 or VIN4 instance ? Media link changes are not allowed when any VIN in the group are streaming so this should not be an issue. But I agree it's good form to restore the value anyhow so I will update this for the next version. > > > + ifmd = VNCSI_IFMD_DES2 | VNCSI_IFMD_DES1 | VNCSI_IFMD_DES0 | > > + VNCSI_IFMD_CSI_CHSEL(chsel); > > + > > + rvin_write(vin, ifmd, VNCSI_IFMD_REG); > > + > > + vin_dbg(vin, "Set IFMD 0x%x\n", ifmd); > > + > > + pm_runtime_put(vin->dev); > > +} > > diff --git a/drivers/media/platform/rcar-vin/rcar-vin.h > > b/drivers/media/platform/rcar-vin/rcar-vin.h index > > a440effe4b86af31..7819c760c2c13422 100644 > > --- a/drivers/media/platform/rcar-vin/rcar-vin.h > > +++ b/drivers/media/platform/rcar-vin/rcar-vin.h > > @@ -163,4 +163,6 @@ void rvin_v4l2_unregister(struct rvin_dev *vin); > > > > const struct rvin_video_format *rvin_format_from_pixel(u32 pixelformat); > > > > +void rvin_set_chsel(struct rvin_dev *vin, u8 chsel); > > + > > #endif > > -- > Regards, > > Laurent Pinchart > -- Regards, Niklas Söderlund
WARNING: multiple messages have this Message-ID (diff)
From: "Niklas Söderlund" <niklas.soderlund@ragnatech.se> To: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Hans Verkuil <hverkuil@xs4all.nl>, linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, tomoharu.fukawa.eb@renesas.com, Kieran Bingham <kieran.bingham@ideasonboard.com> Subject: Re: [PATCH v9 16/28] rcar-vin: add function to manipulate Gen3 chsel value Date: Wed, 20 Dec 2017 22:20:38 +0100 [thread overview] Message-ID: <20171220212038.GG32148@bigcity.dyn.berto.se> (raw) In-Reply-To: <20173129.GKy7R676Pn@avalon> Hi Laurent, Thanks for your comments. On 2017-12-08 11:52:01 +0200, Laurent Pinchart wrote: > Hi Niklas, > > Thank you for the patch. > > On Friday, 8 December 2017 03:08:30 EET Niklas S�derlund wrote: > > On Gen3 the CSI-2 routing is controlled by the VnCSI_IFMD register. One > > feature of this register is that it's only present in the VIN0 and VIN4 > > instances. The register in VIN0 controls the routing for VIN0-3 and the > > register in VIN4 controls routing for VIN4-7. > > > > To be able to control routing from a media device this function is need > > to control runtime PM for the subgroup master (VIN0 and VIN4). The > > subgroup master must be switched on before the register is manipulated, > > once the operation is complete it's safe to switch the master off and > > the new routing will still be in effect. > > > > Signed-off-by: Niklas S�derlund <niklas.soderlund+renesas@ragnatech.se> > > Reviewed-by: Hans Verkuil <hans.verkuil@cisco.com> > > --- > > drivers/media/platform/rcar-vin/rcar-dma.c | 25 +++++++++++++++++++++++++ > > drivers/media/platform/rcar-vin/rcar-vin.h | 2 ++ > > 2 files changed, 27 insertions(+) > > > > diff --git a/drivers/media/platform/rcar-vin/rcar-dma.c > > b/drivers/media/platform/rcar-vin/rcar-dma.c index > > ace95d5b543a17e3..d2788d8bb9565aaa 100644 > > --- a/drivers/media/platform/rcar-vin/rcar-dma.c > > +++ b/drivers/media/platform/rcar-vin/rcar-dma.c > > @@ -16,6 +16,7 @@ > > > > #include <linux/delay.h> > > #include <linux/interrupt.h> > > +#include <linux/pm_runtime.h> > > > > #include <media/videobuf2-dma-contig.h> > > > > @@ -1228,3 +1229,27 @@ int rvin_dma_register(struct rvin_dev *vin, int irq) > > > > return ret; > > } > > + > > +/* ------------------------------------------------------------------------ > > + * Gen3 CHSEL manipulation > > + */ > > + > > +void rvin_set_chsel(struct rvin_dev *vin, u8 chsel) > > How about naming the function a bit more explicitly, > rvin_set_channel_routing() for instance ? I agree, it's a much better name. > > > +{ > > + u32 ifmd, vnmc; > > + > > + pm_runtime_get_sync(vin->dev); > > Shouldn't you check the return value of this function ? Sakari asked the same thing in v4 :-) In short no its not needed please see Geert's response [1]. If I recall correctly this was also discussed in more detail in another thread for some other driver whit a bit longer answer saying that it pm_runtime_get_sync() fails you have big problems but I can't find that thread now :-( 1. https://www.spinics.net/lists/linux-media/msg115241.html > > > + > > + /* Make register writes take effect immediately */ > > + vnmc = rvin_read(vin, VNMC_REG) & ~VNMC_VUP; > > + rvin_write(vin, vnmc, VNMC_REG); > > Shouldn't you restore the original value of VNMC at the end of the function ? > What if this races with device access local to the VIN0 or VIN4 instance ? Media link changes are not allowed when any VIN in the group are streaming so this should not be an issue. But I agree it's good form to restore the value anyhow so I will update this for the next version. > > > + ifmd = VNCSI_IFMD_DES2 | VNCSI_IFMD_DES1 | VNCSI_IFMD_DES0 | > > + VNCSI_IFMD_CSI_CHSEL(chsel); > > + > > + rvin_write(vin, ifmd, VNCSI_IFMD_REG); > > + > > + vin_dbg(vin, "Set IFMD 0x%x\n", ifmd); > > + > > + pm_runtime_put(vin->dev); > > +} > > diff --git a/drivers/media/platform/rcar-vin/rcar-vin.h > > b/drivers/media/platform/rcar-vin/rcar-vin.h index > > a440effe4b86af31..7819c760c2c13422 100644 > > --- a/drivers/media/platform/rcar-vin/rcar-vin.h > > +++ b/drivers/media/platform/rcar-vin/rcar-vin.h > > @@ -163,4 +163,6 @@ void rvin_v4l2_unregister(struct rvin_dev *vin); > > > > const struct rvin_video_format *rvin_format_from_pixel(u32 pixelformat); > > > > +void rvin_set_chsel(struct rvin_dev *vin, u8 chsel); > > + > > #endif > > -- > Regards, > > Laurent Pinchart > -- Regards, Niklas S�derlund
next prev parent reply other threads:[~2017-12-20 21:20 UTC|newest] Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-12-08 1:08 [PATCH v9 00/28] rcar-vin: Add Gen3 with media controller Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 01/28] rcar-vin: add Gen3 devicetree bindings documentation Niklas Söderlund 2017-12-08 7:46 ` Laurent Pinchart 2017-12-08 12:55 ` Niklas Söderlund 2017-12-08 12:55 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 02/28] rcar-vin: rename poorly named initialize and cleanup functions Niklas Söderlund 2017-12-08 7:49 ` Laurent Pinchart 2017-12-08 12:58 ` Niklas Söderlund 2017-12-08 12:58 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 03/28] rcar-vin: unregister video device on driver removal Niklas Söderlund 2017-12-08 7:54 ` Laurent Pinchart 2017-12-08 8:46 ` Hans Verkuil 2017-12-08 8:49 ` Laurent Pinchart 2017-12-08 13:09 ` Niklas Söderlund 2017-12-08 13:09 ` Niklas Söderlund 2017-12-08 19:07 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 04/28] rcar-vin: move subdevice handling to async callbacks Niklas Söderlund 2017-12-08 8:03 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 05/28] rcar-vin: move chip information to own struct Niklas Söderlund 2017-12-08 8:08 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 06/28] rcar-vin: move max width and height information to chip information Niklas Söderlund 2017-12-08 8:10 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 07/28] rcar-vin: change name of video device Niklas Söderlund 2017-12-08 8:17 ` Laurent Pinchart 2017-12-14 14:25 ` Sakari Ailus 2017-12-14 14:25 ` Sakari Ailus 2017-12-14 15:50 ` Laurent Pinchart 2017-12-20 15:20 ` Niklas Söderlund 2017-12-20 15:20 ` Niklas Söderlund 2018-01-08 16:35 ` Laurent Pinchart 2018-01-08 16:42 ` Niklas Söderlund 2018-01-08 16:42 ` Niklas Söderlund 2018-01-08 17:48 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 08/28] rcar-vin: move functions regarding scaling Niklas Söderlund 2017-12-08 8:28 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 09/28] rcar-vin: all Gen2 boards can scale simplify logic Niklas Söderlund 2017-12-08 8:33 ` Laurent Pinchart 2017-12-20 16:17 ` Niklas Söderlund 2017-12-20 16:17 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 10/28] rcar-vin: do not reset crop and compose when setting format Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 11/28] rcar-vin: do not allow changing scaling and composing while streaming Niklas Söderlund 2017-12-08 9:04 ` Laurent Pinchart 2017-12-08 14:14 ` Niklas Söderlund 2017-12-08 14:14 ` Niklas Söderlund 2017-12-08 19:20 ` Laurent Pinchart 2017-12-20 16:26 ` Niklas Söderlund 2017-12-20 16:26 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 12/28] rcar-vin: read subdevice format for crop only when needed Niklas Söderlund 2017-12-08 9:11 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 13/28] rcar-vin: fix handling of single field frames (top, bottom and alternate fields) Niklas Söderlund 2017-12-08 9:35 ` Laurent Pinchart 2017-12-08 14:06 ` Niklas Söderlund 2017-12-08 14:06 ` Niklas Söderlund 2017-12-08 19:30 ` Laurent Pinchart 2017-12-20 17:17 ` Niklas Söderlund 2017-12-20 17:17 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 14/28] rcar-vin: move media bus configuration to struct rvin_info Niklas Söderlund 2017-12-08 9:40 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 15/28] rcar-vin: enable Gen3 hardware configuration Niklas Söderlund 2017-12-08 9:47 ` Laurent Pinchart 2017-12-20 21:09 ` Niklas Söderlund 2017-12-20 21:09 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 16/28] rcar-vin: add function to manipulate Gen3 chsel value Niklas Söderlund 2017-12-08 9:52 ` Laurent Pinchart 2017-12-20 21:20 ` Niklas Söderlund [this message] 2017-12-20 21:20 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 17/28] rcar-vin: add flag to switch to media controller mode Niklas Söderlund 2017-12-08 9:52 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 18/28] rcar-vin: break out format alignment and checking Niklas Söderlund 2017-12-08 10:01 ` Laurent Pinchart 2017-12-21 0:25 ` Niklas Söderlund 2017-12-21 0:25 ` Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 19/28] rcar-vin: use different v4l2 operations in media controller mode Niklas Söderlund 2017-12-08 10:14 ` Laurent Pinchart 2017-12-08 10:24 ` Hans Verkuil 2017-12-08 19:31 ` Laurent Pinchart 2018-01-19 0:46 ` Niklas Söderlund 2018-01-19 0:46 ` Niklas Söderlund 2018-03-02 11:33 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 20/28] rcar-vin: prepare for media controller mode initialization Niklas Söderlund 2017-12-08 10:20 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 21/28] rcar-vin: add group allocator functions Niklas Söderlund 2017-12-08 20:12 ` Laurent Pinchart 2018-01-08 17:24 ` Niklas Söderlund 2018-01-08 17:24 ` Niklas Söderlund 2018-01-08 17:57 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 22/28] rcar-vin: add chsel information to rvin_info Niklas Söderlund 2017-12-08 20:37 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 23/28] rcar-vin: parse Gen3 OF and setup media graph Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 24/28] rcar-vin: add link notify for Gen3 Niklas Söderlund 2017-12-08 1:08 ` [PATCH v9 25/28] rcar-vin: extend {start,stop}_streaming to work with media controller Niklas Söderlund 2017-12-08 20:45 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 26/28] rcar-vin: enable support for r8a7795 Niklas Söderlund 2017-12-08 10:21 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 27/28] rcar-vin: enable support for r8a7796 Niklas Söderlund 2017-12-08 10:25 ` Laurent Pinchart 2017-12-08 1:08 ` [PATCH v9 28/28] rcar-vin: enable support for r8a77970 Niklas Söderlund
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=20171220212038.GG32148@bigcity.dyn.berto.se \ --to=niklas.soderlund@ragnatech.se \ --cc=hverkuil@xs4all.nl \ --cc=kieran.bingham@ideasonboard.com \ --cc=laurent.pinchart@ideasonboard.com \ --cc=linux-media@vger.kernel.org \ --cc=linux-renesas-soc@vger.kernel.org \ --cc=tomoharu.fukawa.eb@renesas.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: linkBe 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.