diff options
author | Ji Luo <ji.luo@nxp.com> | 2019-03-12 16:15:54 +0800 |
---|---|---|
committer | Ji Luo <ji.luo@nxp.com> | 2019-03-12 17:31:09 +0800 |
commit | 30beee3fe6d4b35166c6e17203909231d33bc2db (patch) | |
tree | 99cf66d3514ff58785db17556f322e40d21838df /drivers | |
parent | 6c5a2fc34ba08eb4c990ee9044fc1dfd9ecbd04f (diff) |
MA-14318-1 Support dual bootloader for xen
Trusty is not supported for xen so we don't need to check
the keyslot package or rollback index in spl. Reassign the
dram address for spl and u-boot to avoid conflicts.
Support serial init functions to enable debug console
in spl when xen is running.
Test: Boot and A/B slot switch on imx8qm_mek.
Change-Id: If6829252f1ec2e32255f951715c8747181951fd0
Signed-off-by: Ji Luo <ji.luo@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/serial/serial.c | 2 | ||||
-rw-r--r-- | drivers/serial/serial_xen.c | 36 |
2 files changed, 37 insertions, 1 deletions
diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c index 1ef27ca4b25..6c9c58e8f56 100644 --- a/drivers/serial/serial.c +++ b/drivers/serial/serial.c @@ -136,6 +136,7 @@ serial_initfunc(ml2_serial_initialize); serial_initfunc(mpc85xx_serial_initialize); serial_initfunc(mpc8xx_serial_initialize); serial_initfunc(mxc_serial_initialize); +serial_initfunc(xen_serial_initialize); serial_initfunc(serial_lpuart_initialize); serial_initfunc(mxs_auart_initialize); serial_initfunc(ns16550_serial_initialize); @@ -225,6 +226,7 @@ void serial_initialize(void) mpc85xx_serial_initialize(); mpc8xx_serial_initialize(); mxc_serial_initialize(); + xen_serial_initialize(); serial_lpuart_initialize(); mxs_auart_initialize(); ns16550_serial_initialize(); diff --git a/drivers/serial/serial_xen.c b/drivers/serial/serial_xen.c index 52b2c120ab6..f20765c3061 100644 --- a/drivers/serial/serial_xen.c +++ b/drivers/serial/serial_xen.c @@ -182,9 +182,43 @@ U_BOOT_DRIVER(serial_xen) = { .flags = DM_FLAG_PRE_RELOC, }; #else +static void xen_serial_putc(const char c) +{ + (void)HYPERVISOR_console_io(CONSOLEIO_write, 1, &c); +} + +static void xen_serial_puts(const char *str) +{ + (void)HYPERVISOR_console_io(CONSOLEIO_write, strlen(str), str); +} + +static int xen_serial_tstc(void) +{ + return 0; +} + +static int xen_serial_init(void) +{ +} + +static void xen_serial_setbrg(void) +{ +} + +static struct serial_device xen_serial_drv = { + .name = "xen_serial", + .start = xen_serial_init, + .stop = NULL, + .setbrg = xen_serial_setbrg, + .getc = NULL, + .putc = xen_serial_putc, + .puts = xen_serial_puts, + .tstc = xen_serial_tstc, +}; + __weak struct serial_device *default_serial_console(void) { - return NULL; + return &xen_serial_drv; } #endif |