Re: [PATCH 2/2] dt-bindings: clock: update rk3588 clock definitions

From: Mark Kettenis
Date: Sun Mar 26 2023 - 17:42:35 EST


> Date: Sun, 26 Mar 2023 22:02:39 +0200
> From: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx>
>
> On 26/03/2023 19:51, Shane Francis wrote:
> >> Bootloader also does not use mainline DTS, so where is exactly the problem?
> >
> > In this case uboot does load the target DTB, and it seems a common
> > function in rockchips
> > downstream boot process, see :
> >
> > https://github.com/rockchip-linux/u-boot/blob/ef1dd650042f61915c4859ecc94623a09a3529fa/arch/arm/mach-rockchip/kernel_dtb.c#L70
> >

That code makes absolutely no sense. This tries to transplant
phandles from one DTB into another DTB? Mainline U-Boot has no code
like that. I think this is just broken beyond repair.

> U-Boot comes with its own DTB, so what does it means "loads the target
> DTB"? From where? The one appended to the kernel zImage? No, it cannot...
>
> Any component which operates on mainline DTB must conform to the
> bindings (with respect to the ABI), thus your arguments here mean you
> are not allowed to change ABI in the future. Never. This change,
> assuming original binding was broken, could be warranted.

The current mainline binding isn't broken; 0 is a perfectly fine clock
index. The RK3588 clock bindings are already used by U-Boot (too late
to fix for the 2023.4 release happening in a few days) and OpenBSD
(too late to fix for the 7.3 release that will happen a few weeks).
Changing the clock binding will just create more chaos.

<rant>

What is broken here is the development process. Rockchip shouldn't be
maintaining these heavily modified forks of U-Boot and the Linux
kernel. But at the same time mainline Linux developers should not be
asking for arbitrary changes to the device tree bindings just to
satisfy some unwritten rules. The clock bindings were originaly
submitted with clock numbers identical to those that Rockchip uses:

https://lore.kernel.org/all/20220623160329.239501-2-sebastian.reichel@xxxxxxxxxxxxx/

but then changed because a reviewer wanted them to start at 0 and
didn't want any holes:

https://lore.kernel.org/all/0841741a-22f6-40f6-c745-6065dfdbcb1d@xxxxxxxxxx/

This isn't the first example where this happened. And it invariably
leads to confusion and breakage in projects that try to follow the
mainline Linux device tree bindings.

</rant>