Subject: [PATCH v1 3/4] arm64: Add arm64 kexec support

From: [email-masked] (Pratyush Anand)
Date: Fri, 22 Jul 2016 09:38:42 +0530

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.

~Pratyush