Lines Matching refs:leuart
73 struct efm32_leuart_device_t *leuart; in rt_leuart_init() local
75 leuart = (struct efm32_leuart_device_t *)(dev->user_data); in rt_leuart_init()
83 dma_tx = (struct efm32_leuart_dma_mode_t *)(leuart->tx_mode); in rt_leuart_init()
85 leuart->state |= LEUART_STATE_RX_BUSY; in rt_leuart_init()
92 int_rx = (struct efm32_leuart_int_mode_t *)(leuart->rx_mode); in rt_leuart_init()
98 LEUART_Enable(leuart->leuart_device, leuartEnable); in rt_leuart_init()
127 struct efm32_leuart_device_t *leuart; in rt_leuart_open() local
129 leuart = (struct efm32_leuart_device_t *)(dev->user_data); in rt_leuart_open()
139 int_mode = (struct efm32_leuart_int_mode_t *)(leuart->rx_mode); in rt_leuart_open()
143 leuart_debug("LEUART%d err: no mem for RX BUF\n", leuart->unit); in rt_leuart_open()
153 leuart->leuart_device->IEN = LEUART_IEN_RXDATAV; in rt_leuart_open()
156 switch (leuart->unit) in rt_leuart_open()
176 leuart->leuart_device->IFC = _LEUART_IFC_MASK; in rt_leuart_open()
184 leuart->counter++; in rt_leuart_open()
185 leuart_debug("LEUART%d: Open with flag %x\n", leuart->unit, oflag); in rt_leuart_open()
207 struct efm32_leuart_device_t *leuart; in rt_leuart_close() local
209 leuart = (struct efm32_leuart_device_t *)(dev->user_data); in rt_leuart_close()
211 if (--leuart->counter == 0) in rt_leuart_close()
217 int_rx = (struct efm32_leuart_int_mode_t *)leuart->rx_mode; in rt_leuart_close()
256 struct efm32_leuart_device_t *leuart; in rt_leuart_read() local
261 leuart = (struct efm32_leuart_device_t *)(dev->user_data); in rt_leuart_read()
266 err_code = rt_sem_take(leuart->lock, RT_WAITING_NO); in rt_leuart_read()
270 err_code = rt_sem_take(leuart->lock, RT_WAITING_FOREVER); in rt_leuart_read()
327 leuart = (struct efm32_leuart_device_t *)(dev->user_data); in rt_leuart_read()
345 rt_sem_release(leuart->lock); in rt_leuart_read()
383 struct efm32_leuart_device_t* leuart; in rt_leuart_write() local
386 leuart = (struct efm32_leuart_device_t*)(dev->user_data); in rt_leuart_write()
391 err_code = rt_sem_take(leuart->lock, RT_WAITING_NO); in rt_leuart_write()
395 err_code = rt_sem_take(leuart->lock, RT_WAITING_FOREVER); in rt_leuart_write()
417 dma_tx = (struct efm32_leuart_dma_mode_t *)(leuart->tx_mode); in rt_leuart_write()
421 leuart->state |= LEUART_STATE_TX_BUSY; in rt_leuart_write()
427 (void *)&(leuart->leuart_device->TXDATA), in rt_leuart_write()
434 while(leuart->state & LEUART_STATE_TX_BUSY); in rt_leuart_write()
457 while (!(leuart->leuart_device->STATUS & LEUART_STATUS_TXBL)); in rt_leuart_write()
458 leuart->leuart_device->TXDATA = '\r'; in rt_leuart_write()
461 while (!(leuart->leuart_device->STATUS & LEUART_STATUS_TXBL)); in rt_leuart_write()
462 leuart->leuart_device->TXDATA = (rt_uint32_t)*ptr; in rt_leuart_write()
471 while (!(leuart->leuart_device->STATUS & LEUART_STATUS_TXBL)); in rt_leuart_write()
472 leuart->leuart_device->TXDATA = (rt_uint32_t)*ptr; in rt_leuart_write()
481 rt_sem_release(leuart->lock); in rt_leuart_write()
516 struct efm32_leuart_device_t *leuart; in rt_leuart_control() local
518 leuart = (struct efm32_leuart_device_t *)(dev->user_data); in rt_leuart_control()
523 err_code = rt_sem_take(leuart->lock, RT_WAITING_NO); in rt_leuart_control()
527 err_code = rt_sem_take(leuart->lock, RT_WAITING_FOREVER); in rt_leuart_control()
539 LEUART_Enable(leuart->leuart_device, leuartDisable); in rt_leuart_control()
545 LEUART_Enable(leuart->leuart_device, leuartEnable); in rt_leuart_control()
554 int_rx = (struct efm32_leuart_int_mode_t *)(leuart->rx_mode); in rt_leuart_control()
571 leuart_debug("LEUART%d err: no mem for RX BUF\n", leuart->unit); in rt_leuart_control()
584 leuart_debug("LEUART%d err: no mem for RX BUF\n", leuart->unit); in rt_leuart_control()
598 rt_sem_release(leuart->lock); in rt_leuart_control()
616 struct efm32_leuart_device_t *leuart; in rt_hw_leuart_rx_isr() local
623 leuart = (struct efm32_leuart_device_t *)(dev->user_data); in rt_hw_leuart_rx_isr()
624 int_rx = (struct efm32_leuart_int_mode_t *)(leuart->rx_mode); in rt_hw_leuart_rx_isr()
629 leuart->state |= LEUART_STATE_RX_BUSY; in rt_hw_leuart_rx_isr()
632 while (leuart->leuart_device->STATUS & LEUART_STATUS_RXDATAV) in rt_hw_leuart_rx_isr()
641 (rt_uint8_t)(leuart->leuart_device->RXDATA & 0xFFUL); in rt_hw_leuart_rx_isr()
688 struct efm32_leuart_device_t *leuart; in rt_hw_leuart_dma_tx_isr() local
693 leuart = (struct efm32_leuart_device_t *)(dev->user_data); in rt_hw_leuart_dma_tx_isr()
694 dma_tx = (struct efm32_leuart_dma_mode_t *)(leuart->tx_mode); in rt_hw_leuart_dma_tx_isr()
703 leuart->state &= ~(rt_uint32_t)LEUART_STATE_TX_BUSY; in rt_hw_leuart_dma_tx_isr()
733 struct efm32_leuart_device_t *leuart) in rt_hw_leuart_register() argument
752 device->user_data = leuart; in rt_hw_leuart_register()
795 struct efm32_leuart_device_t *leuart; in rt_hw_leuart_unit_init() local
808 leuart = rt_malloc(sizeof(struct efm32_leuart_device_t)); in rt_hw_leuart_unit_init()
809 if (leuart == RT_NULL) in rt_hw_leuart_unit_init()
814 leuart->counter = 0; in rt_hw_leuart_unit_init()
815 leuart->unit = unitNumber; in rt_hw_leuart_unit_init()
816 leuart->state = config; in rt_hw_leuart_unit_init()
817 leuart->tx_mode = RT_NULL; in rt_hw_leuart_unit_init()
818 leuart->rx_mode = RT_NULL; in rt_hw_leuart_unit_init()
824 leuart->tx_mode = dma_mode = rt_malloc(sizeof(struct efm32_leuart_dma_mode_t)); in rt_hw_leuart_unit_init()
836 leuart->rx_mode = rt_malloc(sizeof(struct efm32_leuart_int_mode_t)); in rt_hw_leuart_unit_init()
837 if (leuart->rx_mode == RT_NULL) in rt_hw_leuart_unit_init()
852 leuart->leuart_device = LEUART0; in rt_hw_leuart_unit_init()
862 leuart->leuart_device = LEUART1; in rt_hw_leuart_unit_init()
942 LEUART_Init(leuart->leuart_device, &init); in rt_hw_leuart_unit_init()
945 leuart->leuart_device->ROUTE = LEUART_ROUTE_RXPEN | LEUART_ROUTE_TXPEN | \ in rt_hw_leuart_unit_init()
949 leuart->leuart_device->CMD = LEUART_CMD_CLEARRX | LEUART_CMD_CLEARTX; in rt_hw_leuart_unit_init()
951 return leuart; in rt_hw_leuart_unit_init()
954 if (leuart->rx_mode) in rt_hw_leuart_unit_init()
956 rt_free(leuart->rx_mode); in rt_hw_leuart_unit_init()
958 if (leuart->tx_mode) in rt_hw_leuart_unit_init()
960 rt_free(leuart->tx_mode); in rt_hw_leuart_unit_init()
962 if (leuart) in rt_hw_leuart_unit_init()
964 rt_free(leuart); in rt_hw_leuart_unit_init()
968 rt_free(leuart); in rt_hw_leuart_unit_init()
986 struct efm32_leuart_device_t *leuart; in rt_hw_leuart_init() local
1009 if ((leuart = rt_hw_leuart_unit_init( in rt_hw_leuart_init()
1017 rt_hw_leuart_register(&leuart0_device, RT_LEUART0_NAME, flag, leuart); in rt_hw_leuart_init()
1024 leuart->lock = &leuart0_lock; in rt_hw_leuart_init()
1025 if (rt_sem_init(leuart->lock, RT_LEUART0_NAME, 1, RT_IPC_FLAG_FIFO) != RT_EOK) in rt_hw_leuart_init()
1048 if ((leuart = rt_hw_leuart_unit_init( in rt_hw_leuart_init()
1056 rt_hw_leuart_register(&leuart1_device, RT_LEUART1_NAME, flag, leuart); in rt_hw_leuart_init()
1063 leuart->lock = &leuart1_lock; in rt_hw_leuart_init()
1064 if (rt_sem_init(leuart->lock, RT_LEUART1_NAME, 1, RT_IPC_FLAG_FIFO) != RT_EOK) in rt_hw_leuart_init()