[PATCH 3/4] [RFC] ARM: dts: stm32: Rework DDR DT inclusion
Patrick DELAUNAY
patrick.delaunay at st.com
Thu Apr 9 19:05:23 CEST 2020
Hi Marek,
> From: Marek Vasut <marex at denx.de>
> Sent: mercredi 8 avril 2020 15:54
>
> On 4/8/20 12:09 PM, Patrick DELAUNAY wrote:
> > Hi,
>
> Hi,
>
> >> From: Marek Vasut <marex at denx.de>
> >> Sent: mardi 7 avril 2020 22:01
> >>
> >> On 4/7/20 3:00 PM, Patrick DELAUNAY wrote:
> >>> Dear Marek,
> >>
> >> Hi,
> >>
[...]
> >>>
> >>> And I want to propose, for DH board with several configuration
> >>>
> >>> &ddr {
> >>> config-1 {
> >>> #include "stm32mp15-ddr3-1x4Gb-1066-binG.dtsi"
> >>> }
> >>> config-2 {
> >>> #include "stm32mp15-ddr3-2x4Gb-1066-binG.dtsi"
> >>> }
> >>> }
> >>>
> >>>
> >>> For ST board with only one configuration (don't change the device
> >>> tree, config at the same level) &ddr { #include
> >>> "stm32mp15-ddr3-1x4Gb-1066-binG.dtsi"
> >>> }
> >>>
> >>>
[...]
> >>
> >> I would much rather prefer to avoid manually writing the config@<foo>
> >> parts, that should be handled by some macro magic instead. With my
> >> proposal, it is not necessary at all either.
> >
[....]
> >
> > So the file generate by CubeMX don't change = stm32mp15-ddr3-1x4Gb-1066-
> binG.dtsi and stm32mp15-ddr3-2x4Gb-1066-binG.dtsi.
> >
> > The ST board devicetree don't change: the DDR configuration is still
> > in ddr node (as in TF-A)
> >
> > For your board, the device tree
> > /arch/arm/dts/stm32mp15xx-dhcor-u-boot.dtsi
> >
> > [...]
> > #define DDR_MEM_CONFIG 2
> > #include "stm32mp15-ddr3-1x4Gb-1066-binG.dtsi"
> >
> > #define DDR_MEM_CONFIG 3
> > #include "stm32mp15-ddr3-2x4Gb-1066-binG.dtsi"
> > [...]
> >
> > And you can directly compare reg value of sub node with ddr3code.
> >
> > It is more acceptable ?
>
> I wonder, can't we have some sort of macro where you would specify a compatible
> string for the DDR config (on which you can match in your
> board_stm32mp1_ddr_config_name_match() and the dtsi file to be included, and
> the macro would generate the necessary entries in the &ddr {} controller node ?
>
> E.g. like this:
>
> #include "stm32mp15-ddr.dtsi"
> STM32MP15_DDR("vendor,board-1gib", stm32mp15-ddr3-2x4Gb-1066-binG.dtsi);
> STM32MP15_DDR("vendor,board-2gib", stm32mp15-ddr3-4x4Gb-1066-binG.dtsi);
>
> and then in board_stm32mp1_ddr_config_name_match()
> {
> if (!strcmp(..., "vendor,board-1gib"))
> return 0;
> ...
> }
Yes, I agree, compatible is the better solution and the binding
./doc/device-tree-bindings/memory-controllers/st,stm32mp1-ddr.txt becomes
ddr: ddr at 0x5A003000{
compatible = "st,stm32mp1-ddr";
[...]
config-1 {
compatible = "vendor,board-1gib";
st,mem-name = "..."
[...]
st,phy-timing = <...>
}
config-2 {
compatible = "vendor,board-2gib";
st,mem-name = "..."
[...]
st,phy-timing = <...>
}
status = "okay";
}
And you match this configuration with compatible.
For the macro, it should be perfect, if it is not too complicate.
Because I afraid that "#include" in macro isn't allowed.
regards
Patrick
More information about the U-Boot
mailing list