
Hi Tom,
On 1/17/23 23:10, Tom Rini wrote:
Prior to commit 9591b63531fa ("Convert CONFIG_SYS_NS16550_MEM32 et al to Kconfig") we had defined CONFIG_SYS_NS16550_REG_SIZE to -1 with DM_SERIAL such that we would then have a size 0 character array. This resulted in functionally no padding. The confusion on my part came from dealing with the constraints around platforms that do not use DM_SERIAL in SPL/TPL. After Andre Przywara reported that sunxi was broken, I've re-read the code and comments again and thought on this harder. What we want I believe is what this patch does now.
If DM_SERIAL is defined for this stage, regardless of CONFIG_SYS_NS16550_REG_SIZE then we will dynamically handle reg shifts and 'struct ns16550' needs no padding (which is functionally what unsigned char foo[0] provides). This is the same case as NS16550_DYNAMIC and DEBUG_UART. Expand the existing comment here slightly.
Otherwise, we will have CONFIG_SYS_NS16550_REG_SIZE set to a non-zero value, and handle padding within the struct.
Cc: Simon Glass sjg@chromium.org Cc: Sergei Antonov saproj@gmail.com Cc: Quentin Schulz quentin.schulz@theobroma-systems.com Cc: Andre Przywara andre.przywara@arm.com Fixes: 9591b63531fa ("Convert CONFIG_SYS_NS16550_MEM32 et al to Kconfig") Signed-off-by: Tom Rini trini@konsulko.com
Tested-by: Quentin Schulz quentin.schulz@theobroma-systems.com #Ringneck PX30, Puma RK3399
Thanks, Quentin