From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Vikas Sajjan <vikas.sajjan@linaro.org>
Cc: linux-fbdev@vger.kernel.org, Sebastien Guiriec <s-guiriec@ti.com>,
DRI mailing list <dri-devel@lists.freedesktop.org>,
Jesse Barnes <jesse.barnes@intel.com>,
Benjamin Gaignard <benjamin.gaignard@linaro.org>,
Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>,
Tom Gall <tom.gall@linaro.org>,
Kyungmin Park <kyungmin.park@samsung.com>,
Tomi Valkeinen <tomi.valkeinen@ti.com>,
linux-media@vger.kernel.org,
Stephen Warren <swarren@wwwdotorg.org>,
Mark Zhang <markz@nvidia.com>,
Alexandre Courbot <acourbot@nvidia.com>,
Ragesh Radhakrishnan <Ragesh.R@linaro.org>,
Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
Sunil Joshi <joshi@samsung.com>,
Maxime Ripard <maxime.ripard@free-electrons.com>,
Marcus Lorentzon <marcus.lorentzon@huawei.com>
Subject: Re: [PATCH/RFC v3 08/19] video: display: Add MIPI DBI bus support
Date: Fri, 06 Sep 2013 16:37:48 +0200 [thread overview]
Message-ID: <2207987.VxcRbivMXz@avalon> (raw)
In-Reply-To: <CAD025yRFOcs7h1OTzBuMWxtmOdtX2zTYg2t_Vd6z96n=-q8GmA@mail.gmail.com>
Hi Vikas,
On Wednesday 04 September 2013 16:20:59 Vikas Sajjan wrote:
> On 9 August 2013 22:44, Laurent Pinchart wrote:
> > MIPI DBI is a configurable-width parallel display bus that transmits
> > commands and data.
> >
> > Add a new DBI Linux bus type that implements the usual bus
> > infrastructure (including devices and drivers (un)registration and
> > matching, and bus configuration and access functions).
> >
> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > ---
> >
> > drivers/video/display/Kconfig | 8 ++
> > drivers/video/display/Makefile | 1 +
> > drivers/video/display/mipi-dbi-bus.c | 234 ++++++++++++++++++++++++++++++
> > include/video/display.h | 4 +
> > include/video/mipi-dbi-bus.h | 125 +++++++++++++++++++
> > 5 files changed, 372 insertions(+)
> > create mode 100644 drivers/video/display/mipi-dbi-bus.c
> > create mode 100644 include/video/mipi-dbi-bus.h
[snip]
> > diff --git a/drivers/video/display/mipi-dbi-bus.c
> > b/drivers/video/display/mipi-dbi-bus.c new file mode 100644
> > index 0000000..791fb4d
> > --- /dev/null
> > +++ b/drivers/video/display/mipi-dbi-bus.c
[snip]
> > +/* ----------------------------------------------------------------------
> > + * Device and driver (un)registration
> > + */
> > +
> > +/**
> > + * mipi_dbi_device_register - register a DBI device
> > + * @dev: DBI device we're registering
> > + */
> > +int mipi_dbi_device_register(struct mipi_dbi_device *dev,
> > + struct mipi_dbi_bus *bus)
> > +{
> > + device_initialize(&dev->dev);
> > +
> > + dev->bus = bus;
> > + dev->dev.bus = &mipi_dbi_bus_type;
> > + dev->dev.parent = bus->dev;
> > +
> > + if (dev->id != -1)
> > + dev_set_name(&dev->dev, "%s.%d", dev->name, dev->id);
> > + else
> > + dev_set_name(&dev->dev, "%s", dev->name);
> > +
> > + return device_add(&dev->dev);
> > +}
>
> The function looks very much specific to NON-DT case where you will be
> calling mipi_dbi_device_register() in the machine file.
You're absolutely right.
> I was actually trying to migrate to CDFv3 and adding MIPI DSI support
> for exynos5250,
> but in my case where exynos5250 is fully DT based, in which case we
> need something like ./drivers/of/platform.c for MIPI DBI and MIPI DSI
> to add the MIPI DBI/DSI device via DT way, ./drivers/of/mipi_dbi.c and
> ./drivers/of/mipi_dsi.c
>
> may look like below,
>
> int of_mipi_dbi_device_register(struct device_node *np,
> const char *bus_id,
> struct device *parent)
> {
> struct mipi_dbi_device *dev;
> dev = of_device_alloc(np, bus_id, parent);
>
> if (!dev)
> return NULL;
> device_initialize(dev);
>
> dev->bus = &mipi_dbi_bus_type;
> dev->parent = parent;
>
> return of_device_add(dev);
> }
>
> Correct me if I am wrong.
You're correct, but the implementation will need to be a little bit more
complex than that. From an API point of view, something like
of_i2c_register_devices() (drivers/of/of_i2c.c) would probably make sense. the
function should iterate over child nodes, and call
of_mipi_dbi_device_register() (we could maybe rename that to
of_mipi_dbi_device_create() to mimic the platform device code) for each child.
In your above code, you should replace of_device_alloc() with
of_mipi_dbi_device_alloc(), as of_device_alloc() allocates a struct
platform_device. You should also call mipi_dsi_device_put() on the device if
of_device_add() returns a failure.
Would you like to send a patch on top of 08/19 to implement this ?
> > +EXPORT_SYMBOL_GPL(mipi_dbi_device_register);
> > +
> > +/**
> > + * mipi_dbi_device_unregister - unregister a DBI device
> > + * @dev: DBI device we're unregistering
> > + */
> > +void mipi_dbi_device_unregister(struct mipi_dbi_device *dev)
> > +{
> > + device_del(&dev->dev);
> > + put_device(&dev->dev);
> > +}
> > +EXPORT_SYMBOL_GPL(mipi_dbi_device_unregister);
> > +
> > +static int mipi_dbi_drv_probe(struct device *_dev)
> > +{
> > + struct mipi_dbi_driver *drv = to_mipi_dbi_driver(_dev->driver);
> > + struct mipi_dbi_device *dev = to_mipi_dbi_device(_dev);
>
> Here we are assuming that mipi_dbi_device can be obtained by using
> _dev pointer, which may NOT be true in DT case, i think.
Why wouldn't it be true (if we create the devices as explained above) ?
> let me know if i am missing something.
>
> if you can give me a example for DT case, that would be helpful.
I'm afraid I don't have any, as the DBI drivers I wrote are used by a platform
that doesn't support DT.
> > +
> > + return drv->probe(dev);
> > +}
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2013-09-06 14:37 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-09 17:14 [PATCH/RFC v3 00/19] Common Display Framework Laurent Pinchart
2013-08-09 17:14 ` [PATCH/RFC v3 01/19] OMAPDSS: panels: Rename Kconfig options to OMAP2_DISPLAY_* Laurent Pinchart
2013-08-09 17:14 ` [PATCH/RFC v3 02/19] video: Add Common Display Framework core Laurent Pinchart
2013-09-02 8:42 ` Tomi Valkeinen
2013-09-03 11:29 ` Laurent Pinchart
2013-08-09 17:14 ` [PATCH/RFC v3 03/19] video: display: Add video and stream control operations Laurent Pinchart
2013-08-09 17:14 ` [PATCH/RFC v3 04/19] video: display: Add display entity notifier Laurent Pinchart
2013-08-09 17:14 ` [PATCH/RFC v3 05/19] video: display: Graph helpers Laurent Pinchart
2013-08-09 17:14 ` [PATCH/RFC v3 06/19] video: display: OF support Laurent Pinchart
2013-08-13 14:37 ` Philipp Zabel
2013-08-21 1:02 ` Laurent Pinchart
2013-08-21 9:10 ` Philipp Zabel
2013-08-22 0:51 ` Laurent Pinchart
2013-08-09 17:14 ` [PATCH/RFC v3 07/19] video: display: Add pixel coding definitions Laurent Pinchart
2013-08-09 17:14 ` [PATCH/RFC v3 08/19] video: display: Add MIPI DBI bus support Laurent Pinchart
2013-08-14 0:52 ` Rob Clark
2013-08-20 13:26 ` Laurent Pinchart
2013-08-26 11:10 ` Tomi Valkeinen
2013-09-06 14:09 ` Laurent Pinchart
2013-09-06 15:43 ` Tomi Valkeinen
2013-09-07 9:35 ` Tomi Valkeinen
2013-09-04 10:50 ` Vikas Sajjan
2013-09-06 14:37 ` Laurent Pinchart [this message]
2013-09-18 10:59 ` Vikas Sajjan
2013-09-04 12:52 ` Vikas Sajjan
2013-09-06 14:56 ` Laurent Pinchart
2013-08-09 17:15 ` [PATCH/RFC v3 09/19] video: panel: Add DPI panel support Laurent Pinchart
2013-08-09 17:15 ` [PATCH/RFC v3 10/19] video: panel: Add R61505 " Laurent Pinchart
2013-08-09 17:15 ` [PATCH/RFC v3 11/19] video: panel: Add R61517 " Laurent Pinchart
2013-08-09 17:15 ` [PATCH/RFC v3 12/19] video: display: Add VGA Digital to Analog Converter support Laurent Pinchart
2013-08-09 17:15 ` [PATCH/RFC v3 13/19] video: display: Add VGA connector support Laurent Pinchart
2013-08-09 17:15 ` [PATCH/RFC v3 14/19] ARM: shmobile: r8a7790: Add DU clocks for DT Laurent Pinchart
2013-08-09 17:15 ` [PATCH/RFC v3 15/19] ARM: shmobile: r8a7790: Add DU device node to device tree Laurent Pinchart
2013-08-09 17:15 ` [PATCH/RFC v3 16/19] ARM: shmobile: marzen: Port DU platform data to CDF Laurent Pinchart
2013-08-09 17:15 ` [PATCH/RFC v3 17/19] ARM: shmobile: lager: " Laurent Pinchart
2013-08-09 17:15 ` [PATCH/RFC v3 18/19] ARM: shmobile: lager-reference: Add display device nodes to device tree Laurent Pinchart
2013-08-09 17:15 ` [PATCH/RFC v3 19/19] drm/rcar-du: Port to the Common Display Framework Laurent Pinchart
2013-08-14 0:43 ` [PATCH/RFC v3 00/19] " Rob Clark
2013-08-20 15:24 ` Laurent Pinchart
2013-08-20 18:40 ` Rob Clark
2013-08-21 7:09 ` Sascha Hauer
2013-08-21 12:22 ` Rob Clark
2013-09-06 16:16 ` Laurent Pinchart
2013-09-09 12:12 ` Tomi Valkeinen
2013-09-09 14:17 ` Rob Clark
2013-09-09 14:58 ` Tomi Valkeinen
2013-09-09 15:10 ` Rob Clark
2013-09-02 11:06 ` Tomi Valkeinen
2013-09-30 13:48 ` Tomi Valkeinen
2013-10-02 12:23 ` Andrzej Hajda
2013-10-02 13:24 ` Tomi Valkeinen
2013-10-09 14:08 ` Andrzej Hajda
2013-10-11 6:37 ` Tomi Valkeinen
2013-10-11 11:19 ` Andrzej Hajda
2013-10-11 12:30 ` Tomi Valkeinen
2013-10-11 14:16 ` Andrzej Hajda
2013-10-11 14:45 ` Tomi Valkeinen
2013-10-17 7:48 ` Andrzej Hajda
2013-10-17 8:18 ` Tomi Valkeinen
2013-10-17 12:26 ` Andrzej Hajda
2013-10-17 12:55 ` Tomi Valkeinen
2013-10-18 11:55 ` Andrzej Hajda
-- strict thread matches above, loose matches on Subject: below --
2013-08-09 23:02 Laurent Pinchart
2013-08-09 23:03 ` [PATCH/RFC v3 08/19] video: display: Add MIPI DBI bus support Laurent Pinchart
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=2207987.VxcRbivMXz@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=Ragesh.R@linaro.org \
--cc=acourbot@nvidia.com \
--cc=benjamin.gaignard@linaro.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=jesse.barnes@intel.com \
--cc=joshi@samsung.com \
--cc=kyungmin.park@samsung.com \
--cc=laurent.pinchart+renesas@ideasonboard.com \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=marcus.lorentzon@huawei.com \
--cc=markz@nvidia.com \
--cc=maxime.ripard@free-electrons.com \
--cc=s-guiriec@ti.com \
--cc=swarren@wwwdotorg.org \
--cc=thomas.petazzoni@free-electrons.com \
--cc=tom.gall@linaro.org \
--cc=tomi.valkeinen@ti.com \
--cc=vikas.sajjan@linaro.org \
/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