On 2013-03-31 12:17, Igor Grinberg wrote:
> 
> 
> On 03/28/13 19:02, Tomi Valkeinen wrote:
>> On 2013-03-28 18:09, Igor Grinberg wrote:
>>> On 03/28/13 14:49, Tomi Valkeinen wrote:
>>>> Boards with multiple display options for the same video bus have all the
>>>> possible linux display devices present at the same time. Only one of
>>>> those devices should be used at a time, as the video bus cannot be
>>>> shared.
>>>
>>> Yes, only one can be used at a time, but you can switch at runtime...
> 
>> Yep. But the panel drivers need to know about this, and they cannot do
>> more or less anything in the driver probe function, which I think should
>> be the place to reserve resources and do initialization. With the
>> current model that would lead to multiple drivers trying to acquire the
>> same resources.
> 
> Yep, this is a problem, but it only means that probably
> the platform device framework is not suitable for this.
> 
> What about having some kind of display manager which will have a private
> list of registered devices and will instantiate only those that are marked
> active?
> This also might be useful with DT.

We can't have a generic manager that handles instantiating the devices,
as we don't know what device they are. They could be platform devices,
i2c, anything. There could even be a single device that creates multiple
displays.

>>>> This model is hacky, and will be changed in the forthcoming DSS patches
>>>> to a model where only one display device can be present on a single
>>>> video bus.
>>>
>>> What do you mean by "present"?
>>> Is it active? or registered? or compiled in?
> 
>> I mean that only one device can be registered. Well, nothing strictly
>> prevents having multiple devices registered, but if the devices have
>> matching drivers, the drivers would acquire the same resources. Possibly
>> the same gpios, but at least the same video bus.
> 
> Well, I think, we should follow/extend the already existing EDID concept...
> Instantiate a display device only when one has been "plugged in".
> By "plugged in" I mean enabled - made active.

This brings the complication that we need a way to make the display
active even if the display device doesn't exist. So we need to know
about the display even if it's not there.

>>>> This patch creates Kconfig options to select which of the display
>>>> devices is present on the board. While this model is also somewhat
>>>> hacky, and prevents us from using a single kernel image for all the
>>>> display options, it allows us to make the DSS driver changes for DT
>>>> adaptation. And with DT, the information about display devices can be
>>>> passed from the bootloader, solving the mess.
>>>
>>> Hmmm, the fact that we cannot use the same binary for multiple displays...
>>> This does not sound right and good at all...
>>> While we try to move to support multiple platforms in the same binary, we
>>> cannot support multiple displays? I agree that the multiplatform stuff is
>>> not really related, but you know what I mean...
> 
>> Yes, I quite agree that this sucks =). There are a few reasons I chose
>> to try this approach:
> 
>> - The whole multi-display feature is hacky
> 
>> - DT support for DSS has been in development too long time. We really
>> need it, preferably yesterday. This change helps getting DT support ready.
> 
> Yes, but I don't think this should involve removing the existing
> functionality..
> Let me exaggerate a bit: this is like removing ARM support from mainline,
> so it will make less noise and headache to Linus...

That is exaggerating quite a bit ;). But yes, I agree that we should not
remove the features. I just couldn't find a manageable way to have them
while still moving forward to DT and CDF.

 Tomi

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to