33
33
34
34
#include "uart16550.h"
35
35
36
+ static uint8_t vuart_com_irq = CONFIG_COM_IRQ ;
37
+ static uint16_t vuart_com_base = CONFIG_COM_BASE ;
36
38
37
39
#ifndef CONFIG_PARTITION_MODE
38
40
static char vuart_rx_buf [RX_BUF_SIZE ];
@@ -111,8 +113,7 @@ static uint8_t vuart_intr_reason(const struct acrn_vuart *vu)
111
113
{
112
114
if (((vu -> lsr & LSR_OE ) != 0U ) && ((vu -> ier & IER_ELSI ) != 0U )) {
113
115
return IIR_RLS ;
114
- } else if ((fifo_numchars (& vu -> rxfifo ) > 0U ) &&
115
- ((vu -> ier & IER_ERBFI ) != 0U )) {
116
+ } else if ((fifo_numchars (& vu -> rxfifo ) > 0U ) && ((vu -> ier & IER_ERBFI ) != 0U )) {
116
117
return IIR_RXTOUT ;
117
118
} else if (vu -> thre_int_pending && ((vu -> ier & IER_ETBEI ) != 0U )) {
118
119
return IIR_TXRDY ;
@@ -132,7 +133,7 @@ static void vuart_toggle_intr(const struct acrn_vuart *vu)
132
133
uint32_t operation ;
133
134
134
135
intr_reason = vuart_intr_reason (vu );
135
- vioapic_get_rte (vu -> vm , CONFIG_COM_IRQ , & rte );
136
+ vioapic_get_rte (vu -> vm , vuart_com_irq , & rte );
136
137
137
138
/* TODO:
138
139
* Here should assert vuart irq according to CONFIG_COM_IRQ polarity.
@@ -143,15 +144,13 @@ static void vuart_toggle_intr(const struct acrn_vuart *vu)
143
144
* we want to make it as an known issue.
144
145
*/
145
146
if ((rte .full & IOAPIC_RTE_INTPOL ) != 0UL ) {
146
- operation = (intr_reason != IIR_NOPEND ) ?
147
- GSI_SET_LOW : GSI_SET_HIGH ;
147
+ operation = (intr_reason != IIR_NOPEND ) ? GSI_SET_LOW : GSI_SET_HIGH ;
148
148
} else {
149
- operation = (intr_reason != IIR_NOPEND ) ?
150
- GSI_SET_HIGH : GSI_SET_LOW ;
149
+ operation = (intr_reason != IIR_NOPEND ) ? GSI_SET_HIGH : GSI_SET_LOW ;
151
150
}
152
151
153
- vpic_set_irq (vu -> vm , CONFIG_COM_IRQ , operation );
154
- vioapic_set_irq (vu -> vm , CONFIG_COM_IRQ , operation );
152
+ vpic_set_irq (vu -> vm , vuart_com_irq , operation );
153
+ vioapic_set_irq (vu -> vm , vuart_com_irq , operation );
155
154
}
156
155
157
156
static void vuart_write (struct acrn_vm * vm , uint16_t offset_arg ,
@@ -202,8 +201,7 @@ static void vuart_write(struct acrn_vm *vm, uint16_t offset_arg,
202
201
fifo_reset (& vu -> rxfifo );
203
202
}
204
203
205
- vu -> fcr = value_u8 &
206
- (FCR_FIFOE | FCR_DMA | FCR_RX_MASK );
204
+ vu -> fcr = value_u8 & (FCR_FIFOE | FCR_DMA | FCR_RX_MASK );
207
205
}
208
206
break ;
209
207
case UART16550_LCR :
@@ -323,7 +321,7 @@ static void vuart_register_io_handler(struct acrn_vm *vm)
323
321
{
324
322
struct vm_io_range range = {
325
323
.flags = IO_ATTR_RW ,
326
- .base = CONFIG_COM_BASE ,
324
+ .base = vuart_com_base ,
327
325
.len = 8U
328
326
};
329
327
@@ -402,7 +400,7 @@ void vuart_init(struct acrn_vm *vm)
402
400
vm -> vuart .dlh = (uint8_t )(divisor >> 8U );
403
401
404
402
vm -> vuart .active = false;
405
- vm -> vuart .base = CONFIG_COM_BASE ;
403
+ vm -> vuart .base = vuart_com_base ;
406
404
vm -> vuart .vm = vm ;
407
405
vuart_fifo_init (vu );
408
406
vuart_lock_init (vu );
@@ -411,5 +409,5 @@ void vuart_init(struct acrn_vm *vm)
411
409
412
410
bool hv_used_dbg_intx (uint8_t intx_pin )
413
411
{
414
- return is_dbg_uart_enabled () && (intx_pin == CONFIG_COM_IRQ );
412
+ return is_dbg_uart_enabled () && (intx_pin == vuart_com_irq );
415
413
}
0 commit comments