Ignore:
Timestamp:
2010-07-27T20:13:05Z (14 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1720cf9
Parents:
a9b5b5f
Message:

Operate S3C24xx UART in FIFO mode.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/genarch/src/drivers/s3c24xx_uart/s3c24xx_uart.c

    ra9b5b5f r3d9d948  
    5151#define S3C24XX_UTRSTAT_RDATA           0x1
    5252
     53#define S3C24XX_UFSTAT_TX_FULL          0x4000
     54#define S3C24XX_UFSTAT_RX_FULL          0x0040
     55#define S3C24XX_UFSTAT_RX_COUNT         0x002f
     56
    5357static void s3c24xx_uart_sendb(outdev_t *dev, uint8_t byte)
    5458{
     
    5660            (s3c24xx_uart_t *) dev->data;
    5761
    58         /* Wait for transmitter to be empty. */
    59         while ((pio_read_32(&uart->io->utrstat) & S3C24XX_UTRSTAT_TX_EMPTY) == 0)
     62        /* Wait for space becoming available in Tx FIFO. */
     63        while ((pio_read_32(&uart->io->ufstat) & S3C24XX_UFSTAT_TX_FULL) != 0)
    6064                ;
    6165
     
    8589        s3c24xx_uart_t *uart = irq->instance;
    8690
    87         if ((pio_read_32(&uart->io->utrstat) & S3C24XX_UTRSTAT_RDATA) != 0) {
     91        while ((pio_read_32(&uart->io->ufstat) & S3C24XX_UFSTAT_RX_COUNT) != 0) {
    8892                uint32_t data = pio_read_32(&uart->io->urxh);
     93                pio_read_32(&uart->io->uerstat);
    8994                indev_push_character(uart->indev, data & 0xff);
    9095        }
     
    123128        uart->irq.instance = uart;
    124129
    125         /* Disable FIFO */
    126         pio_write_32(&uart->io->ufcon,
    127             pio_read_32(&uart->io->ufcon) & ~0x01);
     130        /* Enable FIFO, Tx trigger level: empty, Rx trigger level: 1 byte. */
     131        pio_write_32(&uart->io->ufcon, 0x01);
    128132
    129133        /* Set RX interrupt to pulse mode */
Note: See TracChangeset for help on using the changeset viewer.