public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab@redhat.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Prabhakar Lad <prabhakar.csengg@gmail.com>,
	LMML <linux-media@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	DLOS <davinci-linux-open-source@linux.davincidsp.com>,
	Manjunath Hadli <manjunath.hadli@ti.com>,
	Prabhakar Lad <prabhakar.lad@ti.com>,
	devel@driverdev.osuosl.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Sakari Ailus <sakari.ailus@iki.fi>,
	Hans Verkuil <hans.verkuil@cisco.com>
Subject: Re: [PATCH v3 9/9] davinci: vpfe: Add documentation and TODO
Date: Wed, 28 Nov 2012 17:35:29 -0200	[thread overview]
Message-ID: <20121128173529.1a264c53@redhat.com> (raw)
In-Reply-To: <1555450.K4uAzFNhY7@avalon>

Hi Laurent,

Em Wed, 28 Nov 2012 14:00:14 +0100
Laurent Pinchart <laurent.pinchart@ideasonboard.com> escreveu:

> Hi Mauro,
> 
> Please see below.
> 
> On Wednesday 28 November 2012 09:22:13 Mauro Carvalho Chehab wrote:
> > Hi Prabhakar,
> > 
> > Em Wed, 28 Nov 2012 16:12:09 +0530
> > 
> > Prabhakar Lad <prabhakar.csengg@gmail.com> escreveu:
> > > +Introduction
> > > +============
> > > +
> > > + This file documents the Texas Instruments Davinci Video processing Front
> > > + End (VPFE) driver located under drivers/media/platform/davinci. The
> > > + original driver exists for Davinci VPFE, which is now being changed to
> > > + Media Controller Framework.
> > 
> > Hmm... please correct me if I'm wrong, but are you wanting to replace an
> > existing driver at drivers/media/platform/davinci, by another one at
> > staging that has lots of known issues, as pointed at your TODO????
> > 
> > If so, please don't do that. Replacing a driver by some other one is
> > generally a very bad idea, especially in this case, where the new driver
> > has clearly several issues, the main one being to define its own proprietary
> > and undocumented API:
> >
> > > +As of now since the interface will undergo few changes all the include
> > > +files are present in staging itself, to build for dm365 follow below
> > > +steps,
> > > +
> > > +- copy vpfe.h from drivers/staging/media/davinci_vpfe/ to
> > > +  include/media/davinci/ folder for building the uImage.
> > > +- copy davinci_vpfe_user.h from drivers/staging/media/davinci_vpfe/ to
> > > +  include/uapi/linux/davinci_vpfe.h, and add a entry in Kbuild (required
> > > +  for building application).
> > > +- copy dm365_ipipeif_user.h from drivers/staging/media/davinci_vpfe/ to
> > > +  include/uapi/linux/dm365_ipipeif.h and a entry in Kbuild (required
> > > +  for building application).
> > 
> > Among other things, with those ugly and very likely mandatory API calls:
> >
> > >+/*
> > >+ * Private IOCTL
> > >+ * VIDIOC_VPFE_IPIPEIF_S_CONFIG: Set IPIEIF configuration
> > >+ * VIDIOC_VPFE_IPIPEIF_G_CONFIG: Get IPIEIF configuration
> > >+ */
> > >+#define VIDIOC_VPFE_IPIPEIF_S_CONFIG \
> > >+	_IOWR('I', BASE_VIDIOC_PRIVATE + 1, struct ipipeif_params)
> > >+#define VIDIOC_VPFE_IPIPEIF_G_CONFIG \
> > >+	_IOWR('I', BASE_VIDIOC_PRIVATE + 2, struct ipipeif_params)
> > >+
> > >+#endif
> > 
> > I remember we rejected already drivers like that with obscure "S_CONFIG"
> > private ioctl that were suspect to send a big initialization undocumented
> > blob to the driver, as only the vendor's application would be able to use
> > such driver.
> 
> That's correct, and that's why the driver is going to staging. From there it 
> will be incrementally fixed and then moved to drivers/media/, or dropped if 
> not maintained.
> 
> > So, instead, of submitting it to staging, you should be sending incremental
> > patches for the existing driver, adding newer functionality there, and
> > using the proper V4L2 API, with makes life easier for reviewers and
> > application developers.
> 
> I agree that it would be the best thing to do, but I don't think it's going to 
> happen. We need to decide between two options.
> 
> - Push back now and insist in incremental patches for the existing driver, and 
> get nothing back as TI will very likely give up completely.
> - Accept the driver in staging, get it fixed incrementally, and finally move 
> it to drivers/media/
> 
> There's a political side to this issue, we need to decide whether we want to 
> insist vendors getting everything right before any code reaches mainline, in 
> which case I believe we will lose some of them in the process, including major 
> vendors such as TI, or if we can make the mainline learning curve and 
> experience a bit more smooth by accepting such code in staging.
> 
> I would vote for the second option, with a very clear rule that getting the 
> driver in staging is only one step in the journey: if the development effort 
> stops there, the driver *will* be removed.

What concerns most is that we'll be adding yet-another-driver for the same
hardware, but using a different API set (Media controller + subdevs, instead
of pure V4L2).

It should be noticed that even basic stuff seems to be missing at the driver,
like proper locks[1].

[1] I'm basing my comments only at this patchset's TODO list - I didn't 
reviewed the code, but it this is one of the listed items: "Check proper
serialisation (through mutexes and spinlocks)"

As no regressions are accepted, on non-staging drivers, the switch from the
already working, stable one to the new one, when this driver reaches the
required quality, will be a very hard task, as one would need to check the
exact behavior of the existing driver, and check if the new driver will
behave the same, in order to warrant that no regressions will be introduced.

This doesn't sound something easy to do, especially if the implementation
decisions taken on the second driver aren't based on the same way as the
existing driver.

The risk is that this driver would never be merged upstream, due to those
conflicts, or that we'll take several years to solve it, before being
able to warrant that userspace binaries developed for the first driver
will work as-is with the new one.

Regards,
Mauro

  reply	other threads:[~2012-11-28 19:35 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-28 10:42 [PATCH v3 0/9] Media Controller capture driver for DM365 Prabhakar Lad
2012-11-28 10:42 ` [PATCH v3 1/9] davinci: vpfe: add v4l2 capture driver with media interface Prabhakar Lad
2012-11-28 10:42 ` [PATCH v3 2/9] davinci: vpfe: add v4l2 video driver support Prabhakar Lad
2012-11-28 10:42 ` [PATCH v3 3/9] davinci: vpfe: dm365: add IPIPEIF driver based on media framework Prabhakar Lad
2012-11-28 10:42 ` [PATCH v3 4/9] davinci: vpfe: dm365: add ISIF " Prabhakar Lad
2012-11-28 10:42 ` [PATCH v3 5/9] davinci: vpfe: dm365: add IPIPE support for media controller driver Prabhakar Lad
2012-11-28 10:42 ` [PATCH v3 6/9] davinci: vpfe: dm365: add IPIPE hardware layer support Prabhakar Lad
2012-11-28 10:42 ` [PATCH v3 7/9] davinci: vpfe: dm365: resizer driver based on media framework Prabhakar Lad
2012-11-28 10:42 ` [PATCH v3 8/9] davinci: vpfe: dm365: add build infrastructure for capture driver Prabhakar Lad
2012-11-28 10:42 ` [PATCH v3 9/9] davinci: vpfe: Add documentation and TODO Prabhakar Lad
2012-11-28 11:22   ` Mauro Carvalho Chehab
2012-11-28 13:00     ` Laurent Pinchart
2012-11-28 19:35       ` Mauro Carvalho Chehab [this message]
2012-11-29  3:08         ` Prabhakar Lad
2012-11-28 20:00     ` Sakari Ailus
2012-11-28 11:45 ` [PATCH v3 0/9] Media Controller capture driver for DM365 Dan Carpenter
2012-11-28 11:56   ` Hans Verkuil
2012-11-28 12:18     ` Mauro Carvalho Chehab
2012-11-28 17:22       ` Greg Kroah-Hartman
2012-11-28 19:18         ` Hans Verkuil
2012-11-28 19:30           ` Greg Kroah-Hartman
2012-11-29  7:43             ` Hans Verkuil
2012-11-29 10:39               ` Mauro Carvalho Chehab
2012-11-29 12:45                 ` Manjunath Hadli
2012-11-29 16:38                   ` Mauro Carvalho Chehab
2012-11-28 21:04           ` Dan Carpenter
2012-11-28 12:22     ` Dan Carpenter
2012-11-28 19:30       ` Sylwester Nawrocki
2012-11-28 20:46         ` Greg Kroah-Hartman
2012-11-28 21:29         ` Dan Carpenter
2012-11-28 23:47           ` Sylwester Nawrocki
2012-11-29  7:40             ` Hans Verkuil
2012-11-28 20:04     ` Sakari Ailus
2012-11-29 10:12 ` Laurent Pinchart
2012-11-30  9:47 ` Sakari Ailus
2012-11-30  9:54   ` Hans Verkuil

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=20121128173529.1a264c53@redhat.com \
    --to=mchehab@redhat.com \
    --cc=davinci-linux-open-source@linux.davincidsp.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hans.verkuil@cisco.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=manjunath.hadli@ti.com \
    --cc=prabhakar.csengg@gmail.com \
    --cc=prabhakar.lad@ti.com \
    --cc=sakari.ailus@iki.fi \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox