And add two new debug types: JAILHOUSE_DBG_TYPE_PL011 JAILHOUSE_DBG_TYPE_8250
Those drivers can now explicitely be chosen in the configuration, no need for conditional compilation any more. Signed-off-by: Ralf Ramsauer <[email protected]> --- configs/amd-seattle.c | 2 +- configs/bananapi.c | 2 +- configs/foundation-v8.c | 2 +- configs/hikey.c | 2 +- configs/jetson-tk1.c | 2 +- configs/vexpress.c | 2 +- hypervisor/arch/arm-common/Kbuild | 4 +--- hypervisor/arch/arm-common/dbg-write.c | 10 +++++----- hypervisor/arch/arm-common/uart-8250.c | 2 +- hypervisor/arch/arm-common/uart-pl011.c | 2 +- hypervisor/include/jailhouse/cell-config.h | 5 +++-- 11 files changed, 17 insertions(+), 18 deletions(-) diff --git a/configs/amd-seattle.c b/configs/amd-seattle.c index 575c883218..89e6c6a565 100644 --- a/configs/amd-seattle.c +++ b/configs/amd-seattle.c @@ -31,7 +31,7 @@ struct { .debug_console = { .address = 0xe1010000, .size = 0x1000, - .flags = JAILHOUSE_DBG_TYPE_UART_ARM | + .flags = JAILHOUSE_DBG_TYPE_PL011 | JAILHOUSE_DBG_FLAG_MMIO, }, .platform_info = { diff --git a/configs/bananapi.c b/configs/bananapi.c index ce641f7a4d..7f5096255b 100644 --- a/configs/bananapi.c +++ b/configs/bananapi.c @@ -36,7 +36,7 @@ struct { /* .clock_reg = 0x01c2006c, */ /* .gate_nr = 16 */ /* .divider = 0x0d, */ - .flags = JAILHOUSE_DBG_TYPE_UART_ARM | + .flags = JAILHOUSE_DBG_TYPE_8250 | JAILHOUSE_DBG_FLAG_MMIO, }, .platform_info = { diff --git a/configs/foundation-v8.c b/configs/foundation-v8.c index 43513560da..57387f810a 100644 --- a/configs/foundation-v8.c +++ b/configs/foundation-v8.c @@ -30,7 +30,7 @@ struct { .debug_console = { .address = 0x1c090000, .size = 0x1000, - .flags = JAILHOUSE_DBG_TYPE_UART_ARM | + .flags = JAILHOUSE_DBG_TYPE_PL011 | JAILHOUSE_DBG_FLAG_MMIO, }, .platform_info.arm = { diff --git a/configs/hikey.c b/configs/hikey.c index aee4ab4dc0..7dd78808e7 100644 --- a/configs/hikey.c +++ b/configs/hikey.c @@ -31,7 +31,7 @@ struct { .debug_console = { .address = 0xf7113000, .size = 0x1000, - .flags = JAILHOUSE_DBG_TYPE_UART_ARM | + .flags = JAILHOUSE_DBG_TYPE_PL011 | JAILHOUSE_DBG_FLAG_MMIO, }, .platform_info = { diff --git a/configs/jetson-tk1.c b/configs/jetson-tk1.c index 18e2840b6d..db2162bdca 100644 --- a/configs/jetson-tk1.c +++ b/configs/jetson-tk1.c @@ -39,7 +39,7 @@ struct { /* .clock_reg = 0x60006000 + 0x330, */ /* .gate_nr = (65 % 32), */ /* .divider = 0xdd, */ - .flags = JAILHOUSE_DBG_TYPE_UART_ARM | + .flags = JAILHOUSE_DBG_TYPE_8250 | JAILHOUSE_DBG_FLAG_MMIO, }, .platform_info = { diff --git a/configs/vexpress.c b/configs/vexpress.c index ce788212be..675f621d4d 100644 --- a/configs/vexpress.c +++ b/configs/vexpress.c @@ -30,7 +30,7 @@ struct { .debug_console = { .address = 0x1c090000, .size = 0x1000, - .flags = JAILHOUSE_DBG_TYPE_UART_ARM | + .flags = JAILHOUSE_DBG_TYPE_PL011 | JAILHOUSE_DBG_FLAG_MMIO, }, .platform_info.arm = { diff --git a/hypervisor/arch/arm-common/Kbuild b/hypervisor/arch/arm-common/Kbuild index b6930ae2bb..0aa613d322 100644 --- a/hypervisor/arch/arm-common/Kbuild +++ b/hypervisor/arch/arm-common/Kbuild @@ -13,9 +13,7 @@ include $(CONFIG_MK) OBJS-y += dbg-write.o lib.o psci.o control.o paging.o mmu_cell.o -OBJS-y += irqchip.o gic-common.o pci.o ivshmem.o +OBJS-y += irqchip.o gic-common.o pci.o ivshmem.o uart-pl011.o uart-8250.o OBJS-$(CONFIG_ARM_GIC_V2) += gic-v2.o -OBJS-$(CONFIG_SERIAL_8250) += uart-8250.o -OBJS-$(CONFIG_SERIAL_AMBA_PL011) += uart-pl011.o COMMON_OBJECTS = $(addprefix ../arm-common/,$(OBJS-y)) diff --git a/hypervisor/arch/arm-common/dbg-write.c b/hypervisor/arch/arm-common/dbg-write.c index ab5f2ba0f8..080d80ceb2 100644 --- a/hypervisor/arch/arm-common/dbg-write.c +++ b/hypervisor/arch/arm-common/dbg-write.c @@ -18,7 +18,7 @@ #include <jailhouse/processor.h> #include <asm/uart.h> -extern struct uart_chip uart_ops; +extern struct uart_chip uart_8250_ops, uart_pl011_ops; static struct uart_chip *uart = NULL; @@ -48,10 +48,10 @@ void arch_dbg_write_init(void) if (!DBG_IS_MMIO(system_config->debug_console.flags)) return; - if (dbg_type != JAILHOUSE_DBG_TYPE_UART_ARM) - return; - - uart = &uart_ops; + if (dbg_type == JAILHOUSE_DBG_TYPE_PL011) + uart = &uart_pl011_ops; + else if (dbg_type == JAILHOUSE_DBG_TYPE_8250) + uart = &uart_8250_ops; if (uart) { uart->debug_console = &system_config->debug_console; diff --git a/hypervisor/arch/arm-common/uart-8250.c b/hypervisor/arch/arm-common/uart-8250.c index 1224d0332e..d1afb545e7 100644 --- a/hypervisor/arch/arm-common/uart-8250.c +++ b/hypervisor/arch/arm-common/uart-8250.c @@ -55,7 +55,7 @@ static void uart_write(struct uart_chip *chip, char c) mmio_write32(chip->virt_base + UART_TX, c); } -struct uart_chip uart_ops = { +struct uart_chip uart_8250_ops = { .wait = uart_wait, .write = uart_write, .init = uart_init, diff --git a/hypervisor/arch/arm-common/uart-pl011.c b/hypervisor/arch/arm-common/uart-pl011.c index ba8560bb1a..113fc0bc58 100644 --- a/hypervisor/arch/arm-common/uart-pl011.c +++ b/hypervisor/arch/arm-common/uart-pl011.c @@ -67,7 +67,7 @@ static void uart_write(struct uart_chip *chip, char c) mmio_write32(chip->virt_base + UARTDR, c); } -struct uart_chip uart_ops = { +struct uart_chip uart_pl011_ops = { .wait = uart_wait, .write = uart_write, .init = uart_init, diff --git a/hypervisor/include/jailhouse/cell-config.h b/hypervisor/include/jailhouse/cell-config.h index 65bf28ed9e..d9ae03d750 100644 --- a/hypervisor/include/jailhouse/cell-config.h +++ b/hypervisor/include/jailhouse/cell-config.h @@ -169,8 +169,9 @@ struct jailhouse_iommu { /* Bits 0..3 are used to select the particular driver */ #define JAILHOUSE_DBG_TYPE_NONE 0x0000 #define JAILHOUSE_DBG_TYPE_UART_X86 0x0001 -#define JAILHOUSE_DBG_TYPE_UART_ARM 0x0002 -#define JAILHOUSE_DBG_TYPE_VGA 0x0003 +#define JAILHOUSE_DBG_TYPE_VGA 0x0002 +#define JAILHOUSE_DBG_TYPE_8250 0x0003 +#define JAILHOUSE_DBG_TYPE_PL011 0x0004 #define JAILHOUSE_DBG_TYPE_MASK 0x000f #define DBG_TYPE(flags) ((flags) & JAILHOUSE_DBG_TYPE_MASK) -- 2.11.0.rc2 -- You received this message because you are subscribed to the Google Groups "Jailhouse" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
