dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Lucas Stach <l.stach@pengutronix.de>
To: Thierry Reding <treding@nvidia.com>
Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org, a.hajda@samsung.com
Subject: Re: [RFC 0/2] drm/dsi: DSI for devices with different control bus
Date: Wed, 19 Aug 2015 16:52:24 +0200	[thread overview]
Message-ID: <1439995944.31432.34.camel@pengutronix.de> (raw)
In-Reply-To: <20150819143452.GH15607@ulmo.nvidia.com>

Am Mittwoch, den 19.08.2015, 16:34 +0200 schrieb Thierry Reding:
> On Wed, Aug 19, 2015 at 04:17:08PM +0200, Lucas Stach wrote:
> > Hi Thierry, Archit,
> > 
[...]
> > > Perhaps a better way would be to invert this relationship. According to
> > > your proposal we'd have to have DT like this:
> > > 
> > > 	i2c@... {
> > > 		...
> > > 
> > > 		dsi-device@... {
> > > 			...
> > > 			dsi-bus = <&dsi>;
> > > 			...
> > > 		};
> > > 
> > > 		...
> > > 	};
> > > 
> > > 	dsi@... {
> > > 		...
> > > 	};
> > > 
> > > Inversing the relationship would become something like this:
> > > 
> > > 	i2c@... {
> > > 		...
> > > 	};
> > > 
> > > 	dsi@... {
> > > 		...
> > > 
> > > 		peripheral@... {
> > > 			...
> > > 			i2c-bus = <&i2c>;
> > > 			...
> > > 		};
> > > 
> > > 		...
> > > 	};
> > > 
> > > Both of those aren't fundamentally different, and they both have the
> > > disavantage of lacking ways to transport configuration data that the
> > > other bus needs to instantiate the dummy device (such as the reg
> > > property for example, denoting the I2C slave address or the DSI VC).
> > > 
> > > So how about we create two devices in the device tree and fuse them at
> > > the driver level:
> > > 
> > > 	i2c@... {
> > > 		...
> > > 
> > > 		i2cdsi: dsi-device@... {
> > > 			...
> > > 		};
> > > 
> > > 		...
> > > 	};
> > > 
> > > 	dsi@... {
> > > 		...
> > > 
> > > 		peripheral@... {
> > > 			...
> > > 			control = <&i2cdsi>;
> > > 			...
> > > 		};
> > > 
> > > 		...
> > > 	};
> > > 
> > > This way we'll get both an I2C device and a DSI device that we can fully
> > > describe using the standard device tree bindings. At driver time we can
> > > get the I2C device from the phandle in the control property of the DSI
> > > device and use it to execute I2C transactions.
> > > 
> > I don't really like to see that you are inventing yet-another-way to
> > handle devices connected to multiple buses.
> > 
> > Devicetree is structured along the control buses, even if the devices
> > are connected to multiple buses, in the DT they are always children of
> > the bus that is used to control their registers from the CPUs
> > perspective. So a DSI encoder that is controlled through i2c is clearly
> > a child of the i2c master controller and only of that one.
> 
> I think that's a flawed interpretation of what's going on here. The
> device in fact has two interfaces: one is I2C, the other is DSI. In my
> opinion that's reason enough to represent it as two logical devices.
> 
Does it really have 2 control interfaces that are used at the same time?
Or is the DSI connection a passive data bus if the register control
happens through i2c?

> > If you need to model connections between devices that are not reflected
> > through the control bus hierarchy you should really consider using the
> > standardized of-graph bindings.
> > (Documentation/devicetree/bindings/graph.txt)
> 
> The problem is that the original proposal would instantiate a dummy
> device, so it wouldn't be represented in DT at all. So unless you do add
> two logical devices to DT (one for each bus interface), you don't have
> anything to glue together with an OF graph.
> 
I see that the having dummy device is the least desirable solution. But
if there is only one control bus to the device I think it should be one
device sitting beneath the control bus.

You can then use of-graph to model the data path between the DSI encoder
and device.

> > Multiple device drivers in both the media and DRM universe have shown
> > that they are a working way to represent those data bus connections
> > between devices.
> > I know this might make things a bit more complicated for Tegra DRM,
> > where you have a nice parent<->child relationship between the components
> > even on the control path so far, but we should really move into the
> > direction of more drivers using the standardized bindings for this
> > stuff, instead of doing another round of NIH.
> 
> Why are you bringing up Tegra DRM? I don't see how it's relevant in any
> way to this discussion.
> 
Just disregard this comment then. Lets concentrate on the points above.

Regards,
Lucas 
-- 
Pengutronix e.K.             | Lucas Stach                 |
Industrial Linux Solutions   | http://www.pengutronix.de/  |

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2015-08-19 14:52 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-30  5:24 [RFC 0/2] drm/dsi: DSI for devices with different control bus Archit Taneja
2015-06-30  5:24 ` [RFC 1/2] drm/dsi: Create dummy DSI devices Archit Taneja
2015-08-19  8:10   ` Andrzej Hajda
2015-08-19  9:30     ` Archit Taneja
2015-06-30  5:24 ` [RFC 2/2] drm/dsi: Get DSI host by DT device node Archit Taneja
2015-08-19  8:46   ` Andrzej Hajda
2015-08-19  5:07 ` [RFC 0/2] drm/dsi: DSI for devices with different control bus Archit Taneja
2015-08-19 13:13   ` Thierry Reding
2015-08-19 14:17     ` Lucas Stach
2015-08-19 14:34       ` Thierry Reding
2015-08-19 14:52         ` Lucas Stach [this message]
2015-08-19 15:02           ` Thierry Reding
2015-08-19 15:39             ` Jani Nikula
2015-08-20  4:16             ` Archit Taneja
2015-08-20 11:48               ` Thierry Reding
2015-08-21  6:09                 ` Archit Taneja
2015-09-07 11:46                   ` Archit Taneja
2015-09-08 10:27                     ` Andrzej Hajda
2015-09-10  6:15                       ` Archit Taneja
2015-09-10  7:32                         ` Thierry Reding
2015-09-15 10:32                           ` Archit Taneja
2015-09-15 15:43                             ` Rob Herring
2015-09-17  8:56                               ` Archit Taneja
2015-09-15 10:41                           ` Archit Taneja
2015-10-06  9:24 ` [RFC v2 0/5] " Archit Taneja
2015-10-06  9:24   ` [RFC v2 1/5] drm/dsi: Refactor device creation Archit Taneja
2015-10-30 11:28     ` Andrzej Hajda
2015-10-06  9:24   ` [RFC v2 2/5] drm/dsi: Try to match non-DT dsi devices Archit Taneja
2015-10-30 12:42     ` Andrzej Hajda
2015-11-02  5:26       ` Archit Taneja
2015-10-06  9:24   ` [RFC v2 3/5] drm/dsi: Check for used channels Archit Taneja
2015-10-30 12:52     ` Andrzej Hajda
2015-11-02  5:28       ` Archit Taneja
2015-10-06  9:24   ` [RFC v2 4/5] drm/dsi: Add routine to unregister dsi device Archit Taneja
2015-10-30 14:21     ` Andrzej Hajda
2015-11-02  6:28       ` Archit Taneja
2015-11-02 10:42         ` Andrzej Hajda
2015-11-03  7:18           ` Archit Taneja
2015-10-06  9:24   ` [RFC v2 5/5] drm/dsi: Get DSI host by DT device node Archit Taneja
2015-10-06 10:00     ` kbuild test robot
2015-11-02 10:50     ` Andrzej Hajda
2015-11-03  7:20       ` Archit Taneja
2015-11-30 12:01   ` [PATCH v3 0/5] drm/dsi: DSI for devices with different control bus Archit Taneja
2015-11-30 12:01     ` [PATCH v3 1/5] drm/dsi: Refactor device creation Archit Taneja
2015-11-30 12:01     ` [PATCH v3 2/5] drm/dsi: Try to match non-DT dsi devices Archit Taneja
2015-11-30 12:45       ` kbuild test robot
2015-12-07  5:29         ` Archit Taneja
2015-12-07  8:45           ` Jani Nikula
2015-12-07  8:59             ` Archit Taneja
2015-12-07  9:10               ` Jani Nikula
2015-12-07  9:18                 ` Archit Taneja
2015-12-07 10:07                   ` Jani Nikula
2015-12-07 16:55             ` Rob Clark
2015-11-30 12:01     ` [PATCH v3 3/5] drm/dsi: Check for used channels Archit Taneja
2015-11-30 12:01     ` [PATCH v3 4/5] drm/dsi: Add routine to unregister dsi device Archit Taneja
2015-11-30 12:34       ` Andrzej Hajda
2015-11-30 12:01     ` [PATCH v3 5/5] drm/dsi: Get DSI host by DT device node Archit Taneja
2015-12-10 12:41     ` [PATCH v4 0/6] drm/dsi: DSI for devices with different control bus Archit Taneja
2015-12-10 12:41       ` [PATCH v4 1/6] drm/dsi: check for CONFIG_OF when defining of_mipi_dsi_device_add Archit Taneja
2016-01-21 15:31         ` Thierry Reding
2016-01-26 14:59           ` Archit Taneja
2015-12-10 12:41       ` [PATCH v4 2/6] drm/dsi: Refactor device creation Archit Taneja
2016-01-21 15:46         ` Thierry Reding
2016-01-26 17:05           ` Archit Taneja
2015-12-10 12:41       ` [PATCH v4 3/6] drm/dsi: Try to match non-DT dsi devices Archit Taneja
2016-01-21 16:05         ` Thierry Reding
2016-01-26 18:04           ` Archit Taneja
2015-12-10 12:41       ` [PATCH v4 4/6] drm/dsi: Check for used channels Archit Taneja
2016-01-21 16:11         ` Thierry Reding
2016-01-27  5:16           ` Archit Taneja
2015-12-10 12:41       ` [PATCH v4 5/6] drm/dsi: Add routine to unregister dsi device Archit Taneja
2016-01-21 16:12         ` Thierry Reding
2016-01-27  5:20           ` Archit Taneja
2015-12-10 12:41       ` [PATCH v4 6/6] drm/dsi: Get DSI host by DT device node Archit Taneja
2016-01-21 16:16         ` Thierry Reding
2016-01-27  5:21           ` Archit Taneja
2016-01-05  5:29       ` [PATCH v4 0/6] drm/dsi: DSI for devices with different control bus Archit Taneja
2016-02-12  9:18       ` [PATCH v5 0/5] " Archit Taneja
2016-02-12  9:18         ` [PATCH v5 1/5] drm/dsi: check for CONFIG_OF when defining of_mipi_dsi_device_add Archit Taneja
2016-02-12  9:18         ` [PATCH v5 2/5] drm/dsi: Use mipi_dsi_device_register_full for DSI device creation Archit Taneja
2016-02-12  9:18         ` [PATCH v5 3/5] drm/dsi: Try to match non-DT DSI devices Archit Taneja
2016-02-12  9:18         ` [PATCH v5 4/5] drm/dsi: Add routine to unregister a DSI device Archit Taneja
2016-02-12  9:18         ` [PATCH v5 5/5] drm/dsi: Get DSI host by DT device node Archit Taneja
2016-03-02 16:05         ` [PATCH v5 0/5] drm/dsi: DSI for devices with different control bus Thierry Reding

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=1439995944.31432.34.camel@pengutronix.de \
    --to=l.stach@pengutronix.de \
    --cc=a.hajda@samsung.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=treding@nvidia.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: 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;
as well as URLs for NNTP newsgroup(s).