[PATCH 1/2] drm/bridge: Add virtual display DT bindings

Andrzej Hajda a.hajda at samsung.com
Wed Aug 29 08:16:34 UTC 2018


On 28.08.2018 16:35, Liviu Dudau wrote:
> Hi Andrzej,
>
> Chirping in, as it was originally my work that Linus is adopting.
>
> On Mon, Aug 27, 2018 at 01:53:00PM +0200, Andrzej Hajda wrote:
>> On 24.08.2018 14:23, Linus Walleij wrote:
>>> This adds bindings for a virtual display to be used with displays
>>> inside entirely virtual environments which do not emulate things
>>> like monitors but just need timing information to be supplied to
>>> its display controller.
>>>
>>> This is inspired by earlier work by Liviu Dudau.
>> If this is pure virtual then it should be connected to other pure
>> virtual components.
> Any reason why you think this is the only way this should be connected?

I think pure virtual sink device cannot be connected to real pins of
source device :)
Either source exposes some virtual interfaces either its output will go
to /dev/null, it would be good to know which case author want to address
with these patches.

> My original implementation (and I haven't seen anything in this patch
> that would invalidate it) assumed that the virtual bridge can be used by
> any driver that uses the component framework. Hiding implementation
> details is one of the benefits of using the component framework, so I
> don't see what you gain by restricting connection to only other pure
> virtual components.

I suppose these patches were created for some reason, so more
explanation will be helpful.

>
>> What will be this virtual bridge attached to? I expect some virtual
>> encoder, virtual crtc? If yes then why don't you create whole virtual
>> drm pipeline in one patchset?
> This comment is probably more relevant to patch 2/2, but I agree that
> it probably needs a virtual encoder. As for the CRTC, it should work
> with any real DRM driver, AFAICT.

I do not think so, I guess it could work with sources which do not
communicate with sinks, ie. they have only output pins - in such case
video stream will not be visible, is this something we want? Why?
In case source expects some signals on pins connected to sink, it could
be problematic.

>
>> Could you describe more what do you want to do.
> He wants to enable the PL110 DRM driver on systems that lack a way of
> detecting the actual encoder and connector being used (either because
> there is none and they are emulated in software that doesn't mimic the
> HW behaviour, or because the way you access the HW is done in a way that
> doesn't model easily in the current DRM framework: by firmware, for
> example).

And finally here is real reason to cope with. Since Linus also explained
it in separate mail I will continue the thread with answering to his mail.


Regards
Andrzej

>
> Best regards,
> Liviu
>
>> And one more thing, you are defining virtual panel but you are using
>> drm_bridge framework, why not drm_panel?
>>
>> Regards
>> Andrzej
>>
>>> Cc: Liviu Dudau <Liviu.Dudau at arm.com>
>>> Cc: Ryan Harkin <ryan.harkin at linaro.org>
>>> Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
>>> ---
>>>  .../display/bridge/virtual-display-bridge.txt | 62 +++++++++++++++++++
>>>  1 file changed, 62 insertions(+)
>>>  create mode 100644 Documentation/devicetree/bindings/display/bridge/virtual-display-bridge.txt
>>>
>>> diff --git a/Documentation/devicetree/bindings/display/bridge/virtual-display-bridge.txt b/Documentation/devicetree/bindings/display/bridge/virtual-display-bridge.txt
>>> new file mode 100644
>>> index 000000000000..ea4f5a91ab94
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/display/bridge/virtual-display-bridge.txt
>>> @@ -0,0 +1,62 @@
>>> +Virtual Display Bridge
>>> +
>>> +This represents a display that is contained within an emulated
>>> +environment.
>>> +
>>> +This means that the display engine mainly expects some timing
>>> +parameters to be written into it, and after that the emulator will
>>> +respond by creating a virtual display with the requested
>>> +resolution characteristics.
>>> +
>>> +As the operating system cannot "detect" such a display, rather the
>>> +emulator will respond to what the controller outputs, a
>>> +chicken-and-egg problem needs to be solved: the resolution and
>>> +timing characteristics need to be defined and set up somewhere.
>>> +
>>> +The virtual display bridge solves this by defining a bridge with
>>> +all timing characteristics encoded into the device tree node.
>>> +
>>> +Required properies:
>>> +- compatible: shall be "virtual-display-bridge"
>>> +
>>> +Required subnodes:
>>> +- display-timings: contains in turn a display timing node
>>> +  see display-timing.txt
>>> +- ports: contains the display ports, see media/video-interfaces.txt
>>> +
>>> +Example:
>>> +
>>> +bridge {
>>> +	compatible = "virtual-display-bridge";
>>> +	#address-cells = <1>;
>>> +	#size-cells = <0>;
>>> +
>>> +	display-timings {
>>> +		/* Some standard VGA timing */
>>> +		timing0 {
>>> +			clock-frequency = <23750>;
>>> +			hactive = <640>;
>>> +			vactive = <480>;
>>> +			hfront-porch = <48>;
>>> +			hback-porch = <16>;
>>> +			hsync-len = <96>;
>>> +			vfront-porch = <33>;
>>> +			vback-porch = <9>;
>>> +			vsync-len = <3>;
>>> +			vrefresh = <60>;
>>> +		};
>>> +	};
>>> +
>>> +	ports {
>>> +		#address-cells = <1>;
>>> +		#size-cells = <0>;
>>> +
>>> +		port at 0 {
>>> +			reg = <0>;
>>> +
>>> +			display_bridge_in: endpoint {
>>> +				remote-endpoint = <&foo>;
>>> +			};
>>> +		};
>>> +	};
>>> +};
>>



More information about the dri-devel mailing list