On Fri, Feb 14, 2025 at 8:40 AM Andre Przywara <andre.przywara@xxxxxxx> wrote: > > The Allwinner pincontroller register layout used to allow for at least > 11 banks per controller, any more banks would reside at a second > controller instance. > When the per-bank register map size was increased with the D1, it turned > out that the last bank (port K) of those maximum 11 banks actually would > not fit anymore in the 512 bytes reserved for the pincontroller registers. > On new SoCs Allwinner thus moved the last bank beyond the existing > registers, at offset 0x500. > > So far SoCs never used more than 9 banks per controller, but the new > Allwinner A523 actually uses all 11 banks. Since that SoC also uses the > extended layout, its PortK needs to be programmed at offset 0x500. > > Factor out the bank offset calculation into a new function, and handle > the case for the last bank separately. Since none of the older SoCs ever > used PortK, we can ignore this case, and just always use offset 0x500 > for the last bank. > > Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx> Reviewed-by: Chen-Yu Tsai <wens@xxxxxxxx>