diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c index 193fcc3..ecc2471 100644 --- a/drivers/serial/serial.c +++ b/drivers/serial/serial.c @@ -121,6 +121,7 @@ serial_initfunc(atmel_serial_initialize); serial_initfunc(mcf_serial_initialize); serial_initfunc(mpc85xx_serial_initialize); serial_initfunc(mxc_serial_initialize); +serial_initfunc(xen_serial_initialize); serial_initfunc(ns16550_serial_initialize); serial_initfunc(pl01x_serial_initialize); serial_initfunc(pxa_serial_initialize); @@ -176,6 +177,7 @@ void serial_initialize(void) mcf_serial_initialize(); mpc85xx_serial_initialize(); mxc_serial_initialize(); + xen_serial_initialize(); ns16550_serial_initialize(); pl01x_serial_initialize(); pxa_serial_initialize(); diff --git a/drivers/serial/serial_xen.c b/drivers/serial/serial_xen.c index 416d0ac..5ec490d 100644 --- a/drivers/serial/serial_xen.c +++ b/drivers/serial/serial_xen.c @@ -22,7 +22,7 @@ DECLARE_GLOBAL_DATA_PTR; -#ifdef CONFIG_DM_SERIAL +#if CONFIG_IS_ENABLED(DM_SERIAL) struct xen_uart_priv { struct xencons_interface *intf; u32 evtchn; @@ -149,7 +149,7 @@ static int write_console(struct udevice *dev, const char *data, int len) static int xen_serial_puts(struct udevice *dev, const char *str) { #ifdef CONFIG_SPL_BUILD - (void)HYPERVISOR_console_io(CONSOLEIO_write, strlen(str), str); + (void)HYPERVISOR_console_io(CONSOLEIO_write, strlen(str), (char *)str); #else write_console(dev, str, strlen(str)); #endif @@ -160,7 +160,7 @@ static int xen_serial_puts(struct udevice *dev, const char *str) static int xen_serial_putc(struct udevice *dev, const char ch) { #ifdef CONFIG_SPL_BUILD - (void)HYPERVISOR_console_io(CONSOLEIO_write, 1, &ch); + (void)HYPERVISOR_console_io(CONSOLEIO_write, 1, (char *)&ch); #else write_console(dev, &ch, 1); #endif @@ -190,9 +190,44 @@ U_BOOT_DRIVER(serial_xen) = { .flags = DM_FLAG_PRE_RELOC | DM_FLAG_IGNORE_DEFAULT_CLKS, }; #else +static void xen_serial_putc(const char c) +{ + (void)HYPERVISOR_console_io(CONSOLEIO_write, 1, (char *)&c); +} + +static void xen_serial_puts(const char *str) +{ + (void)HYPERVISOR_console_io(CONSOLEIO_write, strlen(str), (char *)str); +} + +static int xen_serial_tstc(void) +{ + return 0; +} + +static int xen_serial_init(void) +{ + return 0; +} + +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 @@ -208,7 +243,7 @@ void _debug_uart_putc(int ch) if (ch == '\n') serial_putc('\r'); - (void)HYPERVISOR_console_io(CONSOLEIO_write, 1, &ch); + (void)HYPERVISOR_console_io(CONSOLEIO_write, 1, (char *)&ch); return; } diff --git a/include/configs/imx8qm_mek_android_auto_xen.h b/include/configs/imx8qm_mek_android_auto_xen.h index 2fdff1f..68f8eb8 100644 --- a/include/configs/imx8qm_mek_android_auto_xen.h +++ b/include/configs/imx8qm_mek_android_auto_xen.h @@ -24,7 +24,7 @@ #undef CONFIG_LOADADDR #define CONFIG_LOADADDR 0x80080000 #undef CONFIG_SYS_INIT_SP_ADDR -#define CONFIG_SYS_INIT_SP_ADDR 0x80200000 +#define CONFIG_SYS_INIT_SP_ADDR 0x81200000 #undef CONFIG_REQUIRE_SERIAL_CONSOLE #undef CONFIG_IMX_SMMU @@ -35,4 +35,22 @@ /* This needs to be stay same in iomem in domu.cfg */ #define SC_IPC_CH 0x5d1d0000 +#ifdef CONFIG_SPL_BUILD +#undef CONFIG_SPL_BSS_START_ADDR +#undef CONFIG_SYS_SPL_MALLOC_START +#undef CONFIG_MALLOC_F_ADDR +#undef CONFIG_SPL_TEXT_BASE +#undef CONFIG_SPL_STACK + +#define CONFIG_SPL_TEXT_BASE 0x80080000 +#define CONFIG_MALLOC_F_ADDR 0x80100000 +#define CONFIG_SYS_SPL_MALLOC_START 0x80200000 +#define CONFIG_SPL_BSS_START_ADDR 0x80300000 +#define CONFIG_SPL_STACK 0x80400000 + +#define CONFIG_SYS_SPL_PTE_RAM_BASE 0x80500000 +#endif + +#define AVB_AB_I_UNDERSTAND_LIBAVB_AB_IS_DEPRECATED + #endif /* IMX8QM_MEK_ANDROID_AUTO_XEN_H */