[PATCH 11/13] ARM: dts: stm32: fix LTDC port node on STM32 MCU ad MPU
Marek Vasut
marex at denx.de
Thu Apr 15 15:59:39 BST 2021
On 4/15/21 4:35 PM, Alexandre TORGUE wrote:
>
>
> On 4/15/21 4:30 PM, Marek Vasut wrote:
>> On 4/15/21 3:34 PM, Alexandre TORGUE wrote:
>>> Hi Marek
>>
>> Hello Alexandre,
>>
>>>>> diff --git a/arch/arm/boot/dts/stm32mp157c-dk2.dts
>>>>> b/arch/arm/boot/dts/stm32mp157c-dk2.dts
>>>>> index 2bc92ef3aeb9..19ef475a48fc 100644
>>>>> --- a/arch/arm/boot/dts/stm32mp157c-dk2.dts
>>>>> +++ b/arch/arm/boot/dts/stm32mp157c-dk2.dts
>>>>> @@ -82,9 +82,15 @@
>>>>> };
>>>>> <dc {
>>>>> - status = "okay";
>>>>> -
>>>>> port {
>>>>> + #address-cells = <1>;
>>>>> + #size-cells = <0>;
>>>>> +
>>>>> + ltdc_ep0_out: endpoint at 0 {
>>>>> + reg = <0>;
>>>>> + remote-endpoint = <&sii9022_in>;
>>>>> + };
>>>>> +
>>>>> ltdc_ep1_out: endpoint at 1 {
>>>>> reg = <1>;
>>>>> remote-endpoint = <&dsi_in>;
>>>>
>>>> [...]
>>>>
>>>>> diff --git a/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
>>>>> b/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
>>>>> index 64dca5b7f748..e7f10975cacf 100644
>>>>> --- a/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
>>>>> +++ b/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
>>>>> @@ -277,11 +277,7 @@
>>>>> status = "okay";
>>>>> port {
>>>>> - #address-cells = <1>;
>>>>> - #size-cells = <0>;
>>>>> -
>>>>> - ltdc_ep0_out: endpoint at 0 {
>>>>> - reg = <0>;
>>>>> + ltdc_ep0_out: endpoint {
>>>>> remote-endpoint = <&adv7513_in>;
>>>>> };
>>>>> };
>>>>
>>>> I think this is wrong, the AV96 can have two displays connected to
>>>> two ports of the LTDC, just like DK2 for example.
>>>
>>> As for dk2 address/size cells are added only if there are 2
>>> endpoints. It is for this reason I moved endpoint0 definition from
>>> stm32mp15xx-dkx to stm32mp151a-dk1.dts (dk1 has only one endpoint).
>>>
>>> Here it's the same, if you have second endpoint then adress/size will
>>> have to be added.
>>
>> That's a bit problematic. Consider either the use case of DTO which
>> adds the other display, or even a custom board DTS. Without your
>> patch, this works:
>>
>> arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
>> <dc {
>> ...
>> ports {
>> ltdc_ep0_out: endpoint at 0 {
>> remote-endpoint = <&adv7513_in>;
>> };
>> };
>> };
>>
>> board-with-display.dts or board-overlay.dts
>> <dc {
>> ports {
>> endpoint at 1 { // just add another endpoint at 1, no problem
>> remote-endpoint = <&display>;
>> };
>> };
>> };
>>
>> With your patch, the DTS would have to modify the "endpoint" node to
>> be "endpoint at 0" probably with a whole lot of /detele-node/ etc. magic
>> (DTO cannot do that, so that's a problem, and I do use DTOs on AV96
>> extensively for the various expansion cards) and then add the
>> endpoint at 1. That becomes real complicated in custom board DT, and
>> impossible with DTO.
>
> Yes I agree that it'll be problematic. So maybe so solution would be to
> not detect a warning for the initial case (only one endpoint with a reg)
That looks OK. Or even better, if the checker warned only on IPs which
cannot have more than one endpoint, but have endpoint at N in DT (where N
in 0..+inf) . On IPs which can have one or more endpoints, the warning
should not be emitted.
More information about the linux-arm-kernel
mailing list