sim: serial: Send '\r\n' instead of just '\n'
authorStafford Horne <shorne@gmail.com>
Tue, 9 Oct 2018 02:16:05 +0000 (11:16 +0900)
committerStafford Horne <shorne@gmail.com>
Tue, 9 Oct 2018 02:18:11 +0000 (11:18 +0900)
This fixes an issue when running with the HDMI2USB firmware which
expects \r\n to come from the UART.  Since the verilator adapter
is just sending \n commands cannot be executed.

Also, one minor whitespace cleanup. (could remove if needed)

litex/build/sim/core/modules/serial2console/serial2console.c

index 20cb12d2ea31d81bd32b08ff6f73e9b157e8565a..12704c42353073394de0574aee4cc6642cd37250 100644 (file)
@@ -76,6 +76,11 @@ void read_handler(int fd, short event, void *arg)
   int i;
   read_len = read(fd, buffer, 1024);
   for(i = 0; i < read_len; i++) {
+    /* If we are reading a newline make sure its \r\n.  */
+    if (buffer[i] == '\n') {
+      s->databuf[(s->data_start + s->datalen ) % 2048] = '\r';
+      s->datalen++;
+    }
     s->databuf[(s->data_start + s->datalen ) % 2048] = buffer[i];
     s->datalen++;
   }
@@ -157,7 +162,7 @@ static int serial2console_tick(void *sess) {
 
   *s->rx_valid = 0;
   if(s->datalen) {
-    *s->rx=s->databuf[s->data_start];
+    *s->rx = s->databuf[s->data_start];
     s->data_start = (s->data_start + 1) % 2048;
     s->datalen--;
     *s->rx_valid = 1;