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 1b70d80103af..95e013eccd3e 100644 --- a/configs/amd-seattle.c +++ b/configs/amd-seattle.c @@ -30,7 +30,7 @@ struct { .debug_console = { .address = 0xe1010000, .size = 0x1000, - .flags = JAILHOUSE_DBG_TYPE_UART_ARM | + .flags = JAILHOUSE_DBG_TYPE_PL011 | JAILHOUSE_DBG_FLAG_MMIO | JAILHOUSE_DBG_FLAG_REG_WIDTH_32, }, diff --git a/configs/bananapi.c b/configs/bananapi.c index 0f7f6df385b2..e712c5e16b38 100644 --- a/configs/bananapi.c +++ b/configs/bananapi.c @@ -35,7 +35,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 | JAILHOUSE_DBG_FLAG_REG_WIDTH_32, }, diff --git a/configs/foundation-v8.c b/configs/foundation-v8.c index 479021fe0167..eea7e38160e8 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 | JAILHOUSE_DBG_FLAG_REG_WIDTH_32, }, diff --git a/configs/hikey.c b/configs/hikey.c index 8da01d55a2b8..0496b02525f3 100644 --- a/configs/hikey.c +++ b/configs/hikey.c @@ -30,7 +30,7 @@ struct { .debug_console = { .address = 0xf7113000, .size = 0x1000, - .flags = JAILHOUSE_DBG_TYPE_UART_ARM | + .flags = JAILHOUSE_DBG_TYPE_PL011 | JAILHOUSE_DBG_FLAG_MMIO | JAILHOUSE_DBG_FLAG_REG_WIDTH_32, }, diff --git a/configs/jetson-tk1.c b/configs/jetson-tk1.c index b24029a918e9..e2fbaad5fae9 100644 --- a/configs/jetson-tk1.c +++ b/configs/jetson-tk1.c @@ -38,7 +38,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 | JAILHOUSE_DBG_FLAG_REG_WIDTH_32, }, diff --git a/configs/vexpress.c b/configs/vexpress.c index b407ca6cfe79..31c53c11718b 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 | JAILHOUSE_DBG_FLAG_REG_WIDTH_32, }, diff --git a/hypervisor/arch/arm-common/Kbuild b/hypervisor/arch/arm-common/Kbuild index bf23f57d3efb..868adf971ca9 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 +OBJS-y += irqchip.o gic-common.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 9c091d0d0be5..eae367e2b0af 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; @@ -49,10 +49,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 1224d0332e30..d1afb545e731 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 ba8560bb1a5a..113fc0bc58d3 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 ea6a235662e8..7695950f74fe 100644 --- a/hypervisor/include/jailhouse/cell-config.h +++ b/hypervisor/include/jailhouse/cell-config.h @@ -167,8 +167,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.10.2 -- 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.
