On Fri, Jul 22, 2016 at 09:38:42AM +0530, Pratyush Anand wrote: > On 21/07/2016:02:49:36 PM, Geoff Levand wrote: > > On Thu, 2016-07-21 at 11:50 +0100, Robin Murphy wrote: > > > The Exynos UART (drivers/tty/serial/samsung.c) is one which comes to > > > mind as definitely existing, and on arm64 systems to boot. The TX > > > register is at offset 0x20 there. > > > > Here's what I came up with. > > > > > > + struct data {const char *name; int tx_offset;}; > > + static const struct data ok_list[] = { > > + /* {"armada-3700-uart", ?}, */ > > + {"exynos4210-uart", 0x20}, > > + /* {"ls1021a-lpuart", ?}, */ > > + /* {"meson-uart", ?}, */ > > + /* {"mt6577-uart", ?}, */ > > + {"ns16550", 0}, > > + {"ns16550a", 0}, > > + {"pl011", 0}, > > + {NULL, 0} > > + }; > > sinc functionality is just to debug the scenario when something goes wrong in > purgatory. IMHO, it should be disabled by default. So, why not to keep it as > simple as possible. Its a low level debugging mainly for developer, so user > should know the absolute address. Therefore, I think no need to parse earlycon > or earlyprintk from command line. Whatever user passes in --port can be treated > as address of TX register. If TX offset is 0x20, then user can pass --port as > base+0x20. Additionally, we can pass TX register width as well. So what about > something like "--port=0x1c020000,1" where 0x1c020000 is TX register address and > 1 says about it's width in bytes. That all sounds sensible to me. Given it's rather messy w.r.t. address and size, leaving this up to the user is better than trying to handle this automatically and getting something wrong. Thanks, Mark.