[PATCH/RFC v3 08/19] video: display: Add MIPI DBI bus support

Tomi Valkeinen tomi.valkeinen at ti.com
Sat Sep 7 02:35:36 PDT 2013


On 06/09/13 18:43, Tomi Valkeinen wrote:
> On 06/09/13 17:09, Laurent Pinchart wrote:
>> Hi Tomi,
>>
>> On Monday 26 August 2013 14:10:50 Tomi Valkeinen wrote:
>>> On 09/08/13 20:14, 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).
>>>
>>> This has been discussed before, but I don't remember that the issue would
>>> have been cleared, so I'm bringing it up again.
>>>
>>> What benefit does a real Linux DBI (or DSI) bus give us, compared to
>>> representing the DBI the same way as DPI? DBI & DSI are in practice point-
>>> to-point buses, and they do not support probing. Is it just that because DBI
>>> and DSI can be used to control a device, they have to be Linux buses?
>>
>> The idea was to reuse the Linux bus infrastructure to benefit from features 
>> such as power management. Implementing DBI/DSI control functions using a 
>> DBI/DSI bus is also pretty easy, and would allow controlling DBI/DSI entities 
>> much like we control I2C entities. I don't like the idea of using an I2C bus 
>> with I2C access functions on one side, and embedding the DBI/DSI access 
>> functions as part of CDF entity operations on the other side very much.
> 
> While I somewhat like the thought of having DBI and DSI as Linux buses,
> I just don't see how it would work. Well, I'm mostly thinking about DSI
> here, I have not used DBI for years.
> 
> Also, I might remember wrong, but I think I saw Linus expressing his
> opinion at some point that he doesn't really like the idea of having a
> Linux bus for simple point-to-point buses, which don't have probing
> support, and so there isn't much "bus" to speak of, just a point to
> point link.
> 
> And I think we get the same power management with just having a device
> as a child device of another.
> 
>> This being said, this isn't the part of CDF that matters the most to me (it's 
>> actually not part of CDF strictly speaking). If your model works well enough 
>> it won't be too hard to convince me :-)
>>
>>> How do you see handling the devices where DBI or DSI is used for video only,
>>> and the control is handled via, say, i2c? The module has to register two
>>> drivers, and try to keep those in sync? I feel that could get rather hacky.
>>
>> If DBI or DSI is used for video only you don't need DBI/DSI control 
>> operations, right ? So the entity driver will just be a regular I2C device 
>> driver.
> 
> Well, DSI can't be used just like that. You need to configure it.
> 
> The thing is, DSI is used for both control and video. They are really
> the same thing, both are sent as DSI packets. Both need similar kind of
> configuration for the bus. If the DSI peripheral sits on a DSI bus, I
> imagine this configuration is done via the DSI bus support. But if
> there's no DSI bus, how is the configuration done?
> 
> I guess a possibility is to have a fixed configuration that cannot be
> changed dynamically. But I have a feeling that it'll be a bit limiting
> for some cases.
> 
> And even with fixed configuration, I think the configuration would
> somehow be passed as DSI bus parameters from the board files or in the
> DT data (the same way as, say i2c bus speed). If there's no DSI bus, as
> the DSI peripheral sits on the i2c bus, where are the parameters?

Continuing my thoughts on the bus issue, I think there's a fundamental
difference between "real" buses like i2c and DSI/DBI: i2c peripherals
are designed with the mind set that there are other peripherals on the
bus, whereas DSI/DBI peripherals are known to be alone, and the DSI/DBI
peripheral may thus require the bus parameters to be changed according
to the whims of the peripheral.

Some examples coming to my mind from the hardware I know are the need to
change the DBI bus width depending on what is being sent, changing the
DSI bus clock speed, changing DSI return packet size.

It's ok for the DBI/DSI peripheral HW designers to require things like
that, because the spec doesn't say those can't be done, and the
peripheral is alone on the bus.

We can support those kinds of operations both with the bus model you
have, and my no-bus model. But with your bus model, I believe at least
some of those operations may be needed even when the peripheral is
controlled via i2c/spi.

This also is related to the control model. I'm not sure of the details
of the pipeline controller, but I fear that having the controller be the
entity that knows about the strange needs of individual video
peripherals will lead to lots of customized controllers for individual
boards.

That said, I agree that it's difficult to embed all the information into
individual device drivers (although that's where it should be), because
sometimes a wider view of the pipeline is needed to properly configure
things.

 Tomi


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 901 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20130907/e3e4ace7/attachment.pgp>


More information about the dri-devel mailing list