[PATCH RFC 26/26] dts: support building all dtb files for a specific vendor

Caleb Connolly caleb.connolly at linaro.org
Thu Mar 21 21:20:07 CET 2024


Hi Sumit,

On 06/03/2024 11:50, Sumit Garg wrote:
> On Tue, 5 Mar 2024 at 19:45, Caleb Connolly <caleb.connolly at linaro.org> wrote:
>>
>> [trimmed CC list a bit as this is getting offtopic for the original thread]
>>
>> On 05/03/2024 13:14, Sumit Garg wrote:
>>> On Tue, 5 Mar 2024 at 18:21, Caleb Connolly <caleb.connolly at linaro.org> wrote:
>>>>
>>>>
>>>>
>>>> On 05/03/2024 12:35, Sumit Garg wrote:
>>>>> Hi Caleb,
>>>>>
>>>>> On Mon, 4 Mar 2024 at 22:22, Caleb Connolly <caleb.connolly at linaro.org> wrote:
>>>>>>
>>>>>> This adjusts OF_UPSTREAM to behave more like the kernel by allowing for
>>>>>> all the devicetree files for a given vendor to be compiled. This is
>>>>>> useful for Qualcomm in particular as most boards are supported by a
>>>>>> single U-Boot build just provided with a different DT.
>>>>>>
>>>>>> Signed-off-by: Caleb Connolly <caleb.connolly at linaro.org>
>>>>>> ---
>>>>>>  dts/Kconfig          | 24 ++++++++++++++++++++++++
>>>>>>  scripts/Makefile.dts | 17 ++++++++++++++++-
>>>>>>  2 files changed, 40 insertions(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git a/dts/Kconfig b/dts/Kconfig
>>>>>> index b9b6367154ef..67d9dc489856 100644
>>>>>> --- a/dts/Kconfig
>>>>>> +++ b/dts/Kconfig
>>>>>> @@ -100,8 +100,32 @@ config OF_UPSTREAM
>>>>>>           However, newer boards whose devicetree source files haven't landed in
>>>>>>           the dts/upstream subtree, they can override this option to have the
>>>>>>           DT build from existing U-Boot tree location instead.
>>>>>>
>>>>>> +config OF_UPSTREAM_BUILD_VENDOR
>>>>>> +       bool "Build all devicetree files for a particular vendor"
>>>>>> +       depends on OF_UPSTREAM
>>>>>> +       help
>>>>>> +         Enable building all devicetree files for a particular vendor. This
>>>>>
>>>>> Do we really want to build all the DTBs even if many of those aren't
>>>>> supported by U-Boot at all? I would have rather added Makefile targets
>>>>> for boards which really supports a single defconfig eg.
>>>>> qcom_defconfig.
>>>>
>>>> Yes, for the 4 Qualcomm SoCs currently supported there are 51 dts
>>>> targets that ought to be able to run U-Boot to some extent
>>>
>>> Have you tested U-Boot on all of them? IMO, it would be good to make
>>> people aware about supported boards via listing their DTs at least.
>>
>> Well the "ideal" goal is that every SoC in upstream is supported. All of
>> the changes I've introduced so far work towards that end, so this is
>> just another step in that direction. Obviously it's a lofty one, but I
>> see no reason to intentionally make things harder for ourselves by
>> gatekeeping what DTB files we build.
>>
>> I have additional features planned that help here, and plenty more
>> ideas... But I can confirm that most of the phones (which are pretty
>> much identical to the reference boards) do indeed "just work" provided
>> the SoC is supported.
>>
>> It makes sense to use board/qualcomm/<soc-codename>/MAINTAINERS for this
>> imo, there we can reference the specific dts files so device maintainers
>> can be CC'd if there are relevant changes when deviceree-rebasing is
>> updated.
>>
>> I would like to update the Qualcomm docs to describe the general
>> approach here and help guide new contributors. But (as is hopefully
>> obvious by this email) I'm still very much learning as I go. What do you
>> think?
> 
> I am still not convinced that we should be building all the DTBs if
> all of them aren't supported. The docs are there to help people about
> what they have built rather than the opposite being what you have
> built isn't currently supported.
> 
> However, I will let others chime in too. Maybe I am missing something.

Hi Sumit,

I guess nobody else has very strong opinions on this... I've thought on
it some more and I definitely get your concern about not having a
specific list of supported devices.

However, I think the potential for a device to be supported without
having to send any patches to U-Boot (just upstream the DTS!) is pretty
awesome... Would it be a suitable middleground to maintain a list of
supported Qualcomm devices (and features) in the documentation?

Kind regards,
> 
> -Sumit
> 
>>>
>>>>
>>>> $ ls -l dts/upstream/src/arm6/qcom/{msm8916,sdm845,msm8996,qcs404}*.dts\
>>>>         | wc -l
>>>> 51
>>>>
>>>
>>> qcom_defconfig currently only supports sdm845 and qcs404.
>>>
>>>> What do you mean by a "makefile target"? Like copying
>>>> arch/arm64/boot/dts/qcom/Makefile from Linux? I guess my concern here
>>>> would be keeping it in sync, and introducing additional busywork when
>>>> porting.
>>>
>>> See following diff:
>>>
>>> diff --git a/dts/upstream/src/arm64/Makefile b/dts/upstream/src/arm64/Makefile
>>> index 9a8f6aa35846..ecc15021cb08 100644
>>> --- a/dts/upstream/src/arm64/Makefile
>>> +++ b/dts/upstream/src/arm64/Makefile
>>> @@ -2,6 +2,10 @@
>>>
>>>  include $(srctree)/scripts/Makefile.dts
>>>
>>> +dtb-$(CONFIG_ARCH_SNAPDRAGON) += qcom/sdm845-db845c.dtb \
>>> +       qcom/sdm845-samsung-starqltechn.dtb \
>>> +       qcom/qcs404-evb-4000.dtb
>>> +
>>>  targets += $(dtb-y)
>>>
>>>>
>>>> We do have a lot of Qualcomm DTS files, it takes maybe 10 seconds to
>>>> compile them all on my machine, but that's only once. With incremental
>>>> builds this becomes largely irrelevant.
>>>
>>> Maybe someone cares about build time too but that's not my primary
>>> concern. We shouldn't be giving the false impression that all the DTs
>>> present in the vendor directory are supported by U-Boot.
>>>
>>> -Sumit
>>
>> --
>> // Caleb (they/them)

-- 
// Caleb (they/them)


More information about the U-Boot mailing list