|
From: | LIU Zhiwei |
Subject: | Re: [PATCH v5 07/11] hw/char: Initial commit of Ibex UART |
Date: | Tue, 2 Jun 2020 20:28:02 +0800 |
User-agent: | Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.8.1 |
Hi Alistair, There are still some questions I don't understand. 1. Is the baud rate or fifo a necessary feature to simulate? As you can see, qemu_chr_fe_write will send the byte as soon as possible.When you want to transmit a byte through WDATA, you can call qemu_chr_fe_write directly.
2. The baud rate calculation method is not strictly right.I think when a byte write to FIFO, char_tx_time * 8 is the correct time to send the byte instead of
char_tx_time * 4. 3. Why add a watch here?
+ s->uart_status |= UART_STATUS_TXEMPTY; + s->uart_intr_state |= INTR_STATE_TX_EMPTY; + s->uart_intr_state &= ~INTR_STATE_TX_WATERMARK; + ibex_uart_update_irqs(s); + return FALSE; + } + + ret = qemu_chr_fe_write(&s->chr, s->tx_fifo, s->tx_level); + + if (ret >= 0) { + s->tx_level -= ret; + memmove(s->tx_fifo, s->tx_fifo + ret, s->tx_level); + } + + if (s->tx_level) { + guint r = qemu_chr_fe_add_watch(&s->chr, G_IO_OUT | G_IO_HUP, + ibex_uart_xmit, s); + if (!r) { + s->tx_level = 0; + return FALSE; + } + }+
Zhiwei
[Prev in Thread] | Current Thread | [Next in Thread] |