Regarding the UART numbers. My view on this is:
1) I agree with Sylvain that the driver should simply take a uart-number as input, and what that number maps to should be SoC-specific.
2) We should either a) have a #define for every board (not SoC), which is something like #define CONS_UART_NR 0" and which is then used in the actual callers of the uart driver, or b) have a global board-configuration structure which gets filled in by the board_init() code, which then contains a boardcf->cons_uart_nr member whihc can be used by the callers of the uart driver.
'2a' requires that we modify our build system to make per-board compiles.
Regards, Harald