[PATCH v2 3/4] dt-bindings: panel: Introduce dual-link LVDS panel

Aradhya Bhatia a-bhatia1 at ti.com
Thu Feb 2 22:21:30 PST 2023


Hi Rob,

On 30-Jan-23 22:34, Rob Herring wrote:
> On Tue, Jan 24, 2023 at 03:42:37PM +0530, Aradhya Bhatia wrote:
>> Dual-link LVDS interfaces have 2 links, with even pixels traveling on
>> one link, and odd pixels on the other. These panels are also generic in
>> nature, with no documented constraints, much like their single-link
>> counterparts, "panel-lvds".
>>
>> Add a new compatible, "panel-dual-lvds", and a dt-binding document for
>> these panels.
>>
>> Signed-off-by: Aradhya Bhatia <a-bhatia1 at ti.com>
>> ---
>>   .../display/panel/panel-dual-lvds.yaml        | 149 ++++++++++++++++++
>>   MAINTAINERS                                   |   1 +
>>   2 files changed, 150 insertions(+)
>>   create mode 100644 Documentation/devicetree/bindings/display/panel/panel-dual-lvds.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/display/panel/panel-dual-lvds.yaml b/Documentation/devicetree/bindings/display/panel/panel-dual-lvds.yaml
>> new file mode 100644
>> index 000000000000..e2ce1768e9a3
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/display/panel/panel-dual-lvds.yaml
>> @@ -0,0 +1,149 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/display/panel/panel-dual-lvds.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Generic Dual-Link LVDS Display Panel
>> +
>> +maintainers:
>> +  - Aradhya Bhatia <a-bhatia1 at ti.com>
>> +  - Thierry Reding <thierry.reding at gmail.com>
>> +
>> +description: |
>> +  A dual-LVDS interface is a dual-link connection with the even pixels
>> +  traveling on one link, and the odd pixels traveling on the other.
>> +
>> +allOf:
>> +  - $ref: panel-common.yaml#
>> +  - $ref: /schemas/display/lvds.yaml#
>> +
>> +properties:
>> +  compatible:
>> +    items:
>> +      - enum:
>> +          - lincolntech,lcd185-101ct
>> +          - microtips,mf-101hiebcaf0
>> +      - const: panel-dual-lvds
> 
> Why do we need a new compatible? You have ports and properties to see if
> the panel is dual link.

Do you mean to say that we can have a generic dual-link panel
dt-binding, which will allow others to add their own dual-link panel
compatibles, but instead with the mandatory compatible "panel-lvds"?

> 
> We already have dual link LVDS supported in advantech,idk-2121wr.yaml
> which says is compatible with 'panel-lvds', so that decision has already
> been made. The hint was you added the compatible match to the driver
> with 0 other changes needed.
> 

The code which represents the HW difference between the 2 types of
panels was merged in drm/drm_of.c along with the advantech binding.

And a dual-link panel can still be made to work as single-link, as Tomi
had pointed out in the previous series[1]. So, it wouldn't be wrong to
say that a dual-link panel is panel-lvds.

The reason I have been pushing for a new compatible and binding is
because the 2nd sink in dual-lvds panels make them different enough
their from single link counterparts. At the very least, we should have
different bindings for the both of them, for ease of maintenance in
future, when more properties will get added. So, if you indeed are
suggesting that we have a separate dt-binding for these panels, but not
a new generic compatible, then I can get behind that.

And If we do go that way, I think one of your suggestions on advantech
dt-binding series[2] also gets relevant here.

oneOf:
  - required: [ports]
  - required: [port]

This way, we can have dual-lvds panels support single link mode as well.

> That schema is missing type definitions and constraints for
> dual-lvds-odd-pixels/dual-lvds-even-pixels so there does need to be some
> changes to add those.

You are right. AFAIK, the the advantech,idk-2121wr panel is also a
generic model. Which is why, these patches started out as a renaming of
the advantech binding and making the properties generic. But the diff
got bigger and I decided to make a new file.

The idea for future work, now, is to merge the "advantech,idk-2121wr"
compatible along with other panel specific compatibles in this binding.


Regards
Aradhya


[1]: https://lore.kernel.org/all/808e831f-4282-0e58-ebb2-2f556aaeaca4@ideasonboard.com/
[2]: https://lore.kernel.org/all/CAL_Jsq+5FMHK4W4UQU24g+rm3CLjnhRcB29skygRB++GaJyM0A@mail.gmail.com/

> 
>> +
>> +  ports:
>> +    $ref: /schemas/graph.yaml#/properties/ports
>> +
>> +    properties:
>> +      port at 0:
>> +        $ref: /schemas/graph.yaml#/$defs/port-base
>> +        unevaluatedProperties: false
>> +        description: The sink for first set of LVDS pixels.
>> +
>> +        properties:
>> +          dual-lvds-odd-pixels:
>> +            type: boolean
>> +
>> +          dual-lvds-even-pixels:
>> +            type: boolean
>> +
>> +        oneOf:
>> +          - required: [dual-lvds-odd-pixels]
>> +          - required: [dual-lvds-even-pixels]
>> +
>> +      port at 1:
>> +        $ref: /schemas/graph.yaml#/$defs/port-base
>> +        unevaluatedProperties: false
>> +        description: The sink for second set of LVDS pixels.
>> +
>> +        properties:
>> +          dual-lvds-even-pixels:
>> +            type: boolean
>> +
>> +          dual-lvds-odd-pixels:
>> +            type: boolean
>> +
>> +        oneOf:
>> +          - required: [dual-lvds-even-pixels]
>> +          - required: [dual-lvds-odd-pixels]
>> +
>> +    allOf:
>> +      - if:
>> +          properties:
>> +            port at 0:
>> +              required:
>> +                - dual-lvds-odd-pixels
>> +        then:
>> +          properties:
>> +            port at 1:
>> +              properties:
>> +                dual-lvds-odd-pixels: false
>> +
>> +      - if:
>> +          properties:
>> +            port at 0:
>> +              required:
>> +                - dual-lvds-even-pixels
>> +        then:
>> +          properties:
>> +            port at 1:
>> +              properties:
>> +                dual-lvds-even-pixels: false
>> +
>> +    required:
>> +      - port at 0
>> +      - port at 1
>> +
>> +  port: false
>> +
>> +unevaluatedProperties: false
>> +
>> +required:
>> +  - compatible
>> +  - width-mm
>> +  - height-mm
>> +  - data-mapping
>> +  - panel-timing
>> +  - ports
>> +
>> +examples:
>> +  - |
>> +    panel {
>> +      compatible = "microtips,mf-101hiebcaf0", "panel-dual-lvds";
>> +
>> +      width-mm = <217>;
>> +      height-mm = <136>;
>> +
>> +      data-mapping = "vesa-24";
>> +
>> +      panel-timing {
>> +        clock-frequency = <150275000>;
>> +        hactive = <1920>;
>> +        vactive = <1200>;
>> +        hfront-porch = <32>;
>> +        hsync-len = <52>;
>> +        hback-porch = <24>;
>> +        vfront-porch = <24>;
>> +        vsync-len = <8>;
>> +        vback-porch = <3>;
>> +        de-active = <1>;
>> +      };
>> +
>> +      ports {
>> +        #address-cells = <1>;
>> +        #size-cells = <0>;
>> +
>> +        port at 0 {
>> +          reg = <0>;
>> +          dual-lvds-odd-pixels;
>> +          lcd_in0: endpoint {
>> +            remote-endpoint = <&oldi_out0>;
>> +          };
>> +        };
>> +
>> +        port at 1 {
>> +          reg = <1>;
>> +          dual-lvds-even-pixels;
>> +          lcd_in1: endpoint {
>> +            remote-endpoint = <&oldi_out1>;
>> +          };
>> +        };
>> +      };
>> +    };
>> +
>> +...
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 5e18388b4579..6025bb024586 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -6461,6 +6461,7 @@ T:	git git://anongit.freedesktop.org/drm/drm-misc
>>   S:	Maintained
>>   F:	drivers/gpu/drm/panel/panel-lvds.c
>>   F:	Documentation/devicetree/bindings/display/lvds.yaml
>> +F:	Documentation/devicetree/bindings/display/panel/panel-dual-lvds.yaml
>>   F:	Documentation/devicetree/bindings/display/panel/panel-lvds.yaml
>>   
>>   DRM DRIVER FOR MANTIX MLAF057WE51 PANELS
>> -- 
>> 2.39.0
>>



More information about the linux-riscv mailing list