[PATCH v8 13/24] rockchip: rk3288: syscon_rk3288: store syscon platdata in regmap
john at metanate.com
Mon Mar 13 14:26:07 CET 2023
On Mon, Mar 13, 2023 at 01:30:57AM +0100, Johan Jonker wrote:
> The Rockchip SoC rk3288 has 2 types of device trees floating around.
> A 64bit reg size when synced from Linux and a 32bit for U-boot.
> A pre-probe function in the syscon class driver assumes only 32bit.
> For other odd reg structures the regmap must be defined in the individual
> syscon driver. Store rk3288 platdata in a regmap before pre-probe
> during bind.
> Signed-off-by: Johan Jonker <jbx6244 at gmail.com>
What is special about the rk3288 syscon that means the driver needs this
handling? Isn't this a general problem for DTs with 64-bit addresses on
32-bit systems that could be solved in syscon-uclass.c?
I suspect it's difficult to handle the general case since #memory-cells
may be difference for difference syscons so a global constant doesn't
work, but the approach in this patch seems incredibly verbose for
something that is likely to be needed for many platforms.
Could we use driver flags with something like:
.flags = of_platdata_reg_size(struct rockchip_rk3288_noc_plat),
and this untested macro:
#define of_platdata_reg_size(s) \
((sizeof(((struct rockchip_rk3288_noc_plat *) 0)->reg) == 64) ? \
DM_FLAGS_PLATDATA_REG_64BIT : 0)
More information about the U-Boot