Hardware Libraries  20.1
Stratix 10 SoC Hardware Manager
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
alt_16550_uart.h
1 /*****************************************************************************
2 *
3 * Copyright 2013-2017 Altera Corporation. All Rights Reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14 *
15 * 3. Neither the name of the copyright holder nor the names of its contributors
16 * may be used to endorse or promote products derived from this software without
17 * specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 *
31 *****************************************************************************/
32 
33 /*
34  * $Id: //acds/main/embedded/ip/hps/armv8/hwlib/include/alt_16550_uart.h#1 $
35  */
36 
37 #ifndef __ALT_16550_UART_H__
38 #define __ALT_16550_UART_H__
39 
40 #include "hwlib.h"
41 #include "alt_clock_manager.h"
42 
43 #ifdef __cplusplus
44 extern "C"
45 {
46 #endif
47 
77 typedef enum ALT_16550_DEVICE_e
78 {
83 
88 
94 }
96 
102 typedef struct ALT_16550_HANDLE_s
103 {
104  ALT_16550_DEVICE_t device;
105  void * location;
106  alt_freq_t clock_freq;
107  uint32_t data;
108  uint32_t fcr;
109 }
111 
143 ALT_STATUS_CODE alt_16550_init(ALT_16550_DEVICE_t device,
144  void * location,
145  alt_freq_t clock_freq,
146  ALT_16550_HANDLE_t * handle);
147 
162 ALT_STATUS_CODE alt_16550_uninit(ALT_16550_HANDLE_t * handle);
163 
175 ALT_STATUS_CODE alt_16550_reset(ALT_16550_HANDLE_t * handle);
176 
187 ALT_STATUS_CODE alt_16550_enable(ALT_16550_HANDLE_t * handle);
188 
200 ALT_STATUS_CODE alt_16550_disable(ALT_16550_HANDLE_t * handle);
201 
213 ALT_STATUS_CODE alt_16550_read(ALT_16550_HANDLE_t * handle,
214  char * item);
215 
230 ALT_STATUS_CODE alt_16550_write(ALT_16550_HANDLE_t * handle,
231  char item);
232 
252 {
257 
263 
269 
275 }
277 
283 {
288 
293 
299 
305 }
307 
319 ALT_STATUS_CODE alt_16550_fifo_enable(ALT_16550_HANDLE_t * handle);
320 
332 ALT_STATUS_CODE alt_16550_fifo_disable(ALT_16550_HANDLE_t * handle);
333 
374 ALT_STATUS_CODE alt_16550_fifo_read(ALT_16550_HANDLE_t * handle,
375  char * buffer,
376  size_t count);
377 
416 ALT_STATUS_CODE alt_16550_fifo_write(ALT_16550_HANDLE_t * handle,
417  const char * buffer,
418  size_t count);
419 
420 
450 ALT_STATUS_CODE alt_16550_fifo_write_safe(ALT_16550_HANDLE_t * handle,
451  const char * buffer,
452  size_t count,
453  bool safe);
468 ALT_STATUS_CODE alt_16550_fifo_clear_rx(ALT_16550_HANDLE_t * handle);
469 
484 ALT_STATUS_CODE alt_16550_fifo_clear_tx(ALT_16550_HANDLE_t * handle);
485 
500 ALT_STATUS_CODE alt_16550_fifo_clear_all(ALT_16550_HANDLE_t * handle);
501 
516 ALT_STATUS_CODE alt_16550_fifo_size_get_rx(ALT_16550_HANDLE_t * handle,
517  uint32_t * size);
518 
533 ALT_STATUS_CODE alt_16550_fifo_size_get_tx(ALT_16550_HANDLE_t * handle,
534  uint32_t * size);
535 
558 ALT_STATUS_CODE alt_16550_fifo_level_get_rx(ALT_16550_HANDLE_t * handle,
559  uint32_t * level);
560 
583 ALT_STATUS_CODE alt_16550_fifo_level_get_tx(ALT_16550_HANDLE_t * handle,
584  uint32_t * level);
585 
605 ALT_STATUS_CODE alt_16550_fifo_trigger_set_rx(ALT_16550_HANDLE_t * handle,
607 
627 ALT_STATUS_CODE alt_16550_fifo_trigger_set_tx(ALT_16550_HANDLE_t * handle,
629 
652 {
672 }
674 
693 ALT_STATUS_CODE alt_16550_baudrate_get(ALT_16550_HANDLE_t * handle,
694  uint32_t * baudrate);
695 
716 ALT_STATUS_CODE alt_16550_baudrate_set(ALT_16550_HANDLE_t * handle,
717  uint32_t baudrate);
718 
736 ALT_STATUS_CODE alt_16550_divisor_get(ALT_16550_HANDLE_t * handle,
737  uint32_t * divisor);
738 
759 ALT_STATUS_CODE alt_16550_divisor_set(ALT_16550_HANDLE_t * handle,
760  uint32_t divisor);
761 
782 {
790 
812 
823 
844 
851 
856 }
858 
859 
877 ALT_STATUS_CODE alt_16550_int_enable_rx(ALT_16550_HANDLE_t * handle);
878 
889 ALT_STATUS_CODE alt_16550_int_disable_rx(ALT_16550_HANDLE_t * handle);
890 
907 ALT_STATUS_CODE alt_16550_int_enable_tx(ALT_16550_HANDLE_t * handle);
908 
919 ALT_STATUS_CODE alt_16550_int_disable_tx(ALT_16550_HANDLE_t * handle);
920 
935 ALT_STATUS_CODE alt_16550_int_enable_line(ALT_16550_HANDLE_t * handle);
936 
947 ALT_STATUS_CODE alt_16550_int_disable_line(ALT_16550_HANDLE_t * handle);
948 
963 ALT_STATUS_CODE alt_16550_int_enable_modem(ALT_16550_HANDLE_t * handle);
964 
975 ALT_STATUS_CODE alt_16550_int_disable_modem(ALT_16550_HANDLE_t * handle);
976 
987 ALT_STATUS_CODE alt_16550_int_disable_all(ALT_16550_HANDLE_t * handle);
988 
1005 ALT_STATUS_CODE alt_16550_int_status_get(ALT_16550_HANDLE_t * handle,
1006  ALT_16550_INT_STATUS_t * status);
1007 
1026 {
1033 
1041 
1049 
1056 
1065 
1073 
1081 
1089 }
1091 
1115 ALT_STATUS_CODE alt_16550_flowcontrol_enable(ALT_16550_HANDLE_t * handle);
1116 
1135 ALT_STATUS_CODE alt_16550_flowcontrol_disable(ALT_16550_HANDLE_t * handle);
1136 
1158 ALT_STATUS_CODE alt_16550_loopback_enable(ALT_16550_HANDLE_t * handle);
1159 
1170 ALT_STATUS_CODE alt_16550_loopback_disable(ALT_16550_HANDLE_t * handle);
1171 
1185 ALT_STATUS_CODE alt_16550_modem_enable_out1(ALT_16550_HANDLE_t * handle);
1186 
1200 ALT_STATUS_CODE alt_16550_modem_disable_out1(ALT_16550_HANDLE_t * handle);
1201 
1215 ALT_STATUS_CODE alt_16550_modem_enable_out2(ALT_16550_HANDLE_t * handle);
1216 
1230 ALT_STATUS_CODE alt_16550_modem_disable_out2(ALT_16550_HANDLE_t * handle);
1231 
1250 ALT_STATUS_CODE alt_16550_modem_enable_rts(ALT_16550_HANDLE_t * handle);
1251 
1269 ALT_STATUS_CODE alt_16550_modem_disable_rts(ALT_16550_HANDLE_t * handle);
1270 
1286 ALT_STATUS_CODE alt_16550_modem_enable_dtr(ALT_16550_HANDLE_t * handle);
1287 
1302 ALT_STATUS_CODE alt_16550_modem_disable_dtr(ALT_16550_HANDLE_t * handle);
1303 
1318 ALT_STATUS_CODE alt_16550_modem_status_get(ALT_16550_HANDLE_t * handle,
1319  uint32_t * status);
1320 
1338 {
1343 
1348 
1353 
1358 }
1360 
1365 {
1370 
1376 }
1378 
1383 {
1388 
1394 
1400 }
1402 
1408 {
1417 
1428 
1454 
1466 
1478 
1488 
1501 
1507 }
1509 
1529 ALT_STATUS_CODE alt_16550_line_config_set(ALT_16550_HANDLE_t * handle,
1530  ALT_16550_DATABITS_t databits,
1531  ALT_16550_PARITY_t parity,
1532  ALT_16550_STOPBITS_t stopbits);
1533 
1545 ALT_STATUS_CODE alt_16550_line_break_enable(ALT_16550_HANDLE_t * handle);
1546 
1557 ALT_STATUS_CODE alt_16550_line_break_disable(ALT_16550_HANDLE_t * handle);
1558 
1573 ALT_STATUS_CODE alt_16550_line_status_get(ALT_16550_HANDLE_t * handle,
1574  uint32_t * status);
1575 
1584 #ifdef __cplusplus
1585 }
1586 #endif
1587 
1588 #endif /* __ALT_16550_UART_H__ */