Hardware Libraries  20.1
Arria 10 SoC Hardware Manager
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
alt_16550_uart.h
1 /*****************************************************************************
2 *
3 * Copyright 2013 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/rel/20.1/embedded/ip/hps/altera_hps/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 
217 ALT_STATUS_CODE alt_16550_read(ALT_16550_HANDLE_t * handle,
218  char * item);
219 
234 ALT_STATUS_CODE alt_16550_write(ALT_16550_HANDLE_t * handle,
235  char item);
236 
256 {
261 
267 
273 
279 }
281 
287 {
292 
297 
303 
309 }
311 
323 ALT_STATUS_CODE alt_16550_fifo_enable(ALT_16550_HANDLE_t * handle);
324 
336 ALT_STATUS_CODE alt_16550_fifo_disable(ALT_16550_HANDLE_t * handle);
337 
378 ALT_STATUS_CODE alt_16550_fifo_read(ALT_16550_HANDLE_t * handle,
379  char * buffer,
380  size_t count);
381 
420 ALT_STATUS_CODE alt_16550_fifo_write(ALT_16550_HANDLE_t * handle,
421  const char * buffer,
422  size_t count);
423 
424 
454 ALT_STATUS_CODE alt_16550_fifo_write_safe(ALT_16550_HANDLE_t * handle,
455  const char * buffer,
456  size_t count,
457  bool safe);
472 ALT_STATUS_CODE alt_16550_fifo_clear_rx(ALT_16550_HANDLE_t * handle);
473 
488 ALT_STATUS_CODE alt_16550_fifo_clear_tx(ALT_16550_HANDLE_t * handle);
489 
504 ALT_STATUS_CODE alt_16550_fifo_clear_all(ALT_16550_HANDLE_t * handle);
505 
520 ALT_STATUS_CODE alt_16550_fifo_size_get_rx(ALT_16550_HANDLE_t * handle,
521  uint32_t * size);
522 
537 ALT_STATUS_CODE alt_16550_fifo_size_get_tx(ALT_16550_HANDLE_t * handle,
538  uint32_t * size);
539 
562 ALT_STATUS_CODE alt_16550_fifo_level_get_rx(ALT_16550_HANDLE_t * handle,
563  uint32_t * level);
564 
587 ALT_STATUS_CODE alt_16550_fifo_level_get_tx(ALT_16550_HANDLE_t * handle,
588  uint32_t * level);
589 
609 ALT_STATUS_CODE alt_16550_fifo_trigger_set_rx(ALT_16550_HANDLE_t * handle,
611 
631 ALT_STATUS_CODE alt_16550_fifo_trigger_set_tx(ALT_16550_HANDLE_t * handle,
633 
656 {
676 }
678 
697 ALT_STATUS_CODE alt_16550_baudrate_get(ALT_16550_HANDLE_t * handle,
698  uint32_t * baudrate);
699 
720 ALT_STATUS_CODE alt_16550_baudrate_set(ALT_16550_HANDLE_t * handle,
721  uint32_t baudrate);
722 
740 ALT_STATUS_CODE alt_16550_divisor_get(ALT_16550_HANDLE_t * handle,
741  uint32_t * divisor);
742 
763 ALT_STATUS_CODE alt_16550_divisor_set(ALT_16550_HANDLE_t * handle,
764  uint32_t divisor);
765 
786 {
794 
816 
827 
848 
855 
860 }
862 
880 ALT_STATUS_CODE alt_16550_int_enable_rx(ALT_16550_HANDLE_t * handle);
881 
892 ALT_STATUS_CODE alt_16550_int_disable_rx(ALT_16550_HANDLE_t * handle);
893 
910 ALT_STATUS_CODE alt_16550_int_enable_tx(ALT_16550_HANDLE_t * handle);
911 
922 ALT_STATUS_CODE alt_16550_int_disable_tx(ALT_16550_HANDLE_t * handle);
923 
938 ALT_STATUS_CODE alt_16550_int_enable_line(ALT_16550_HANDLE_t * handle);
939 
950 ALT_STATUS_CODE alt_16550_int_disable_line(ALT_16550_HANDLE_t * handle);
951 
966 ALT_STATUS_CODE alt_16550_int_enable_modem(ALT_16550_HANDLE_t * handle);
967 
978 ALT_STATUS_CODE alt_16550_int_disable_modem(ALT_16550_HANDLE_t * handle);
979 
990 ALT_STATUS_CODE alt_16550_int_disable_all(ALT_16550_HANDLE_t * handle);
991 
1008 ALT_STATUS_CODE alt_16550_int_status_get(ALT_16550_HANDLE_t * handle,
1009  ALT_16550_INT_STATUS_t * status);
1010 
1029 {
1036 
1044 
1052 
1059 
1068 
1076 
1084 
1092 }
1094 
1118 ALT_STATUS_CODE alt_16550_flowcontrol_enable(ALT_16550_HANDLE_t * handle);
1119 
1138 ALT_STATUS_CODE alt_16550_flowcontrol_disable(ALT_16550_HANDLE_t * handle);
1139 
1161 ALT_STATUS_CODE alt_16550_loopback_enable(ALT_16550_HANDLE_t * handle);
1162 
1173 ALT_STATUS_CODE alt_16550_loopback_disable(ALT_16550_HANDLE_t * handle);
1174 
1188 ALT_STATUS_CODE alt_16550_modem_enable_out1(ALT_16550_HANDLE_t * handle);
1189 
1203 ALT_STATUS_CODE alt_16550_modem_disable_out1(ALT_16550_HANDLE_t * handle);
1204 
1218 ALT_STATUS_CODE alt_16550_modem_enable_out2(ALT_16550_HANDLE_t * handle);
1219 
1233 ALT_STATUS_CODE alt_16550_modem_disable_out2(ALT_16550_HANDLE_t * handle);
1234 
1253 ALT_STATUS_CODE alt_16550_modem_enable_rts(ALT_16550_HANDLE_t * handle);
1254 
1272 ALT_STATUS_CODE alt_16550_modem_disable_rts(ALT_16550_HANDLE_t * handle);
1273 
1289 ALT_STATUS_CODE alt_16550_modem_enable_dtr(ALT_16550_HANDLE_t * handle);
1290 
1305 ALT_STATUS_CODE alt_16550_modem_disable_dtr(ALT_16550_HANDLE_t * handle);
1306 
1321 ALT_STATUS_CODE alt_16550_modem_status_get(ALT_16550_HANDLE_t * handle,
1322  uint32_t * status);
1323 
1341 {
1346 
1351 
1356 
1361 }
1363 
1368 {
1373 
1379 }
1381 
1386 {
1391 
1397 
1403 }
1405 
1411 {
1420 
1431 
1457 
1469 
1481 
1491 
1504 
1510 }
1512 
1532 ALT_STATUS_CODE alt_16550_line_config_set(ALT_16550_HANDLE_t * handle,
1533  ALT_16550_DATABITS_t databits,
1534  ALT_16550_PARITY_t parity,
1535  ALT_16550_STOPBITS_t stopbits);
1536 
1548 ALT_STATUS_CODE alt_16550_line_break_enable(ALT_16550_HANDLE_t * handle);
1549 
1560 ALT_STATUS_CODE alt_16550_line_break_disable(ALT_16550_HANDLE_t * handle);
1561 
1576 ALT_STATUS_CODE alt_16550_line_status_get(ALT_16550_HANDLE_t * handle,
1577  uint32_t * status);
1578 
1587 #ifdef __cplusplus
1588 }
1589 #endif
1590 
1591 #endif /* __ALT_16550_UART_H__ */