diff mbox series

media: i2c: max9286: Pass default bus type when parsing fwnode endpoint

Message ID 20191001145503.5170-1-manivannan.sadhasivam@linaro.org (mailing list archive)
State New, archived
Headers show
Series media: i2c: max9286: Pass default bus type when parsing fwnode endpoint | expand

Commit Message

Manivannan Sadhasivam Oct. 1, 2019, 2:55 p.m. UTC
The caller of v4l2_fwnode_endpoint_alloc_parse() is expected to pass a
valid bus_type parameter for proper working of this API. Hence, pass
V4L2_MBUS_CSI2_DPHY as the bus_type parameter as this driver only supports
MIPI CSI2 for now. Without this commit, the API fails on 96Boards
Dragonboard410c connected to MAX9286 deserializer.

Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---

This patch depends on the latest "MAX9286 GMSL Support" series posted
by Kieran Bingham.

 drivers/media/i2c/max9286.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Jacopo Mondi Oct. 2, 2019, 7:54 a.m. UTC | #1
Hello Manivannan,

On Tue, Oct 01, 2019 at 08:25:03PM +0530, Manivannan Sadhasivam wrote:
> The caller of v4l2_fwnode_endpoint_alloc_parse() is expected to pass a
> valid bus_type parameter for proper working of this API. Hence, pass
> V4L2_MBUS_CSI2_DPHY as the bus_type parameter as this driver only supports
> MIPI CSI2 for now. Without this commit, the API fails on 96Boards
> Dragonboard410c connected to MAX9286 deserializer.
>
> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
> ---
>
> This patch depends on the latest "MAX9286 GMSL Support" series posted
> by Kieran Bingham.
>
>  drivers/media/i2c/max9286.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c
> index 9390edf5ad9c..6e1299f15493 100644
> --- a/drivers/media/i2c/max9286.c
> +++ b/drivers/media/i2c/max9286.c
> @@ -976,7 +976,9 @@ static int max9286_parse_dt(struct max9286_device *max9286)
>
>  		/* For the source endpoint just parse the bus configuration. */
>  		if (ep.port == MAX9286_SRC_PAD) {
> -			struct v4l2_fwnode_endpoint vep;
> +			struct v4l2_fwnode_endpoint vep = {
> +				.bus_type = V4L2_MBUS_CSI2_DPHY
> +			};

Isn't the bus_type just an hint ? __v4l2_fwnode_endpoint_parse()
should try to parse CSI2 first, and should be able to to deduct the bus
type from the properties specified in DT...

Anyway, I'm not against this change, the contrary actually, I'm just
afraid it might hide some more subtile bug, as we don't need this on
our platforms...

Is the db410c mainline ? Do you have DT snippets for db410c+max9286 to
share?

Thanks
  j

>  			int ret;
>
>  			ret = v4l2_fwnode_endpoint_alloc_parse(
> --
> 2.17.1
>
Sakari Ailus Oct. 2, 2019, 8:56 a.m. UTC | #2
Hi Jacopo, Manivannan,

On Wed, Oct 02, 2019 at 09:54:32AM +0200, Jacopo Mondi wrote:
> Hello Manivannan,
> 
> On Tue, Oct 01, 2019 at 08:25:03PM +0530, Manivannan Sadhasivam wrote:
> > The caller of v4l2_fwnode_endpoint_alloc_parse() is expected to pass a
> > valid bus_type parameter for proper working of this API. Hence, pass
> > V4L2_MBUS_CSI2_DPHY as the bus_type parameter as this driver only supports
> > MIPI CSI2 for now. Without this commit, the API fails on 96Boards
> > Dragonboard410c connected to MAX9286 deserializer.
> >
> > Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
> > ---
> >
> > This patch depends on the latest "MAX9286 GMSL Support" series posted
> > by Kieran Bingham.
> >
> >  drivers/media/i2c/max9286.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c
> > index 9390edf5ad9c..6e1299f15493 100644
> > --- a/drivers/media/i2c/max9286.c
> > +++ b/drivers/media/i2c/max9286.c
> > @@ -976,7 +976,9 @@ static int max9286_parse_dt(struct max9286_device *max9286)
> >
> >  		/* For the source endpoint just parse the bus configuration. */
> >  		if (ep.port == MAX9286_SRC_PAD) {
> > -			struct v4l2_fwnode_endpoint vep;
> > +			struct v4l2_fwnode_endpoint vep = {
> > +				.bus_type = V4L2_MBUS_CSI2_DPHY
> > +			};
> 
> Isn't the bus_type just an hint ? __v4l2_fwnode_endpoint_parse()
> should try to parse CSI2 first, and should be able to to deduct the bus
> type from the properties specified in DT...

It's basically telling the V4L2 fwnode parser to parse that bus only, and
not guess what the caller wanted.

This is what drivers should actually be doing. It also allows setting the
defaults that many drivers declare in their DT bindings but very few
actually implement.

> 
> Anyway, I'm not against this change, the contrary actually, I'm just
> afraid it might hide some more subtile bug, as we don't need this on
> our platforms...

I'd expect it to be safer this way, as there's no guessing involved.
diff mbox series

Patch

diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c
index 9390edf5ad9c..6e1299f15493 100644
--- a/drivers/media/i2c/max9286.c
+++ b/drivers/media/i2c/max9286.c
@@ -976,7 +976,9 @@  static int max9286_parse_dt(struct max9286_device *max9286)
 
 		/* For the source endpoint just parse the bus configuration. */
 		if (ep.port == MAX9286_SRC_PAD) {
-			struct v4l2_fwnode_endpoint vep;
+			struct v4l2_fwnode_endpoint vep = {
+				.bus_type = V4L2_MBUS_CSI2_DPHY
+			};
 			int ret;
 
 			ret = v4l2_fwnode_endpoint_alloc_parse(