Commit 3e749fe1f75f4b84ee6d8141b65acde9215484b7
1 parent
f331110f
simulate a null modem cable
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1808 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
3 additions
and
2 deletions
hw/serial.c
| @@ -78,7 +78,7 @@ struct SerialState { | @@ -78,7 +78,7 @@ struct SerialState { | ||
| 78 | uint8_t lcr; | 78 | uint8_t lcr; |
| 79 | uint8_t mcr; | 79 | uint8_t mcr; |
| 80 | uint8_t lsr; /* read only */ | 80 | uint8_t lsr; /* read only */ |
| 81 | - uint8_t msr; | 81 | + uint8_t msr; /* read only */ |
| 82 | uint8_t scr; | 82 | uint8_t scr; |
| 83 | /* NOTE: this hidden state is necessary for tx irq generation as | 83 | /* NOTE: this hidden state is necessary for tx irq generation as |
| 84 | it can be reset while reading iir */ | 84 | it can be reset while reading iir */ |
| @@ -200,7 +200,6 @@ static void serial_ioport_write(void *opaque, uint32_t addr, uint32_t val) | @@ -200,7 +200,6 @@ static void serial_ioport_write(void *opaque, uint32_t addr, uint32_t val) | ||
| 200 | case 5: | 200 | case 5: |
| 201 | break; | 201 | break; |
| 202 | case 6: | 202 | case 6: |
| 203 | - s->msr = val; | ||
| 204 | break; | 203 | break; |
| 205 | case 7: | 204 | case 7: |
| 206 | s->scr = val; | 205 | s->scr = val; |
| @@ -356,6 +355,7 @@ SerialState *serial_init(SetIRQFunc *set_irq, void *opaque, | @@ -356,6 +355,7 @@ SerialState *serial_init(SetIRQFunc *set_irq, void *opaque, | ||
| 356 | s->irq = irq; | 355 | s->irq = irq; |
| 357 | s->lsr = UART_LSR_TEMT | UART_LSR_THRE; | 356 | s->lsr = UART_LSR_TEMT | UART_LSR_THRE; |
| 358 | s->iir = UART_IIR_NO_INT; | 357 | s->iir = UART_IIR_NO_INT; |
| 358 | + s->msr = UART_MSR_DCD | UART_MSR_DSR | UART_MSR_CTS; | ||
| 359 | 359 | ||
| 360 | register_savevm("serial", base, 1, serial_save, serial_load, s); | 360 | register_savevm("serial", base, 1, serial_save, serial_load, s); |
| 361 | 361 | ||
| @@ -440,6 +440,7 @@ SerialState *serial_mm_init (SetIRQFunc *set_irq, void *opaque, | @@ -440,6 +440,7 @@ SerialState *serial_mm_init (SetIRQFunc *set_irq, void *opaque, | ||
| 440 | s->irq = irq; | 440 | s->irq = irq; |
| 441 | s->lsr = UART_LSR_TEMT | UART_LSR_THRE; | 441 | s->lsr = UART_LSR_TEMT | UART_LSR_THRE; |
| 442 | s->iir = UART_IIR_NO_INT; | 442 | s->iir = UART_IIR_NO_INT; |
| 443 | + s->msr = UART_MSR_DCD | UART_MSR_DSR | UART_MSR_CTS; | ||
| 443 | s->base = base; | 444 | s->base = base; |
| 444 | s->it_shift = it_shift; | 445 | s->it_shift = it_shift; |
| 445 | 446 |