Support serial UART without FIFO. Patch from EluanCM.
This commit is contained in:
parent
1181b13c2d
commit
dcf354688d
6 changed files with 24 additions and 20 deletions
|
|
@ -111,7 +111,8 @@ void serial_write(uint16_t addr, uint8_t val, void *p)
|
|||
serial_update_ints(serial);
|
||||
break;
|
||||
case 2:
|
||||
serial->fcr = val;
|
||||
if (serial->has_fifo)
|
||||
serial->fcr = val;
|
||||
break;
|
||||
case 3:
|
||||
serial->lcr = val;
|
||||
|
|
@ -247,7 +248,7 @@ void serial_receive_callback(void *p)
|
|||
}
|
||||
|
||||
/*Tandy might need COM1 at 2f8*/
|
||||
void serial1_init(uint16_t addr, int irq)
|
||||
void serial1_init(uint16_t addr, int irq, int has_fifo)
|
||||
{
|
||||
memset(&serial1, 0, sizeof(serial1));
|
||||
io_sethandler(addr, 0x0008, serial_read, NULL, NULL, serial_write, NULL, NULL, &serial1);
|
||||
|
|
@ -255,6 +256,7 @@ void serial1_init(uint16_t addr, int irq)
|
|||
serial1.addr = addr;
|
||||
serial1.rcr_callback = NULL;
|
||||
timer_add(&serial1.receive_timer, serial_receive_callback, &serial1, 0);
|
||||
serial1.has_fifo = has_fifo;
|
||||
}
|
||||
void serial1_set(uint16_t addr, int irq)
|
||||
{
|
||||
|
|
@ -268,7 +270,7 @@ void serial1_remove()
|
|||
io_removehandler(serial1.addr, 0x0008, serial_read, NULL, NULL, serial_write, NULL, NULL, &serial1);
|
||||
}
|
||||
|
||||
void serial2_init(uint16_t addr, int irq)
|
||||
void serial2_init(uint16_t addr, int irq, int has_fifo)
|
||||
{
|
||||
memset(&serial2, 0, sizeof(serial2));
|
||||
io_sethandler(addr, 0x0008, serial_read, NULL, NULL, serial_write, NULL, NULL, &serial2);
|
||||
|
|
@ -276,6 +278,7 @@ void serial2_init(uint16_t addr, int irq)
|
|||
serial2.addr = addr;
|
||||
serial2.rcr_callback = NULL;
|
||||
timer_add(&serial2.receive_timer, serial_receive_callback, &serial2, 0);
|
||||
serial2.has_fifo = has_fifo;
|
||||
}
|
||||
void serial2_set(uint16_t addr, int irq)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue