Altera HWLIB  16.0
The Altera HW Manager API Reference Manual
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Groups
alt_16550_uart.h
1 /*
2  * Altera - SoC UART Manager
3  */
4 
5 /*****************************************************************************
6 *
7 * Copyright 2013 Altera Corporation. All Rights Reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are met:
11 *
12 * 1. Redistributions of source code must retain the above copyright notice,
13 * this list of conditions and the following disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above copyright notice,
16 * this list of conditions and the following disclaimer in the documentation
17 * and/or other materials provided with the distribution.
18 *
19 * 3. Neither the name of the copyright holder nor the names of its contributors
20 * may be used to endorse or promote products derived from this software without
21 * specific prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
27 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 * POSSIBILITY OF SUCH DAMAGE.
34 *
35 *****************************************************************************/
36 
37 /*
38  * $Id: //depot/embedded/rel/15.0/ip/hps/altera_hps/hwlib/include/alt_16550_uart.h#1 $
39  */
40 
41 #ifndef __ALT_16550_UART_H__
42 #define __ALT_16550_UART_H__
43 
44 #include "hwlib.h"
45 #include "alt_clock_manager.h"
46 
47 #ifdef __cplusplus
48 extern "C"
49 {
50 #endif
51 
81 typedef enum ALT_16550_DEVICE_e
82 {
87 
92 
98 }
100 
106 typedef struct ALT_16550_HANDLE_s
107 {
108  ALT_16550_DEVICE_t device;
109  void * location;
110  alt_freq_t clock_freq;
111  uint32_t data;
112  uint32_t fcr;
113 }
115 
147 ALT_STATUS_CODE alt_16550_init(ALT_16550_DEVICE_t device,
148  void * location,
149  alt_freq_t clock_freq,
150  ALT_16550_HANDLE_t * handle);
151 
166 ALT_STATUS_CODE alt_16550_uninit(ALT_16550_HANDLE_t * handle);
167 
179 ALT_STATUS_CODE alt_16550_reset(ALT_16550_HANDLE_t * handle);
180 
191 ALT_STATUS_CODE alt_16550_enable(ALT_16550_HANDLE_t * handle);
192 
204 ALT_STATUS_CODE alt_16550_disable(ALT_16550_HANDLE_t * handle);
205 
221 ALT_STATUS_CODE alt_16550_read(ALT_16550_HANDLE_t * handle,
222  char * item);
223 
238 ALT_STATUS_CODE alt_16550_write(ALT_16550_HANDLE_t * handle,
239  char item);
240 
260 {
265 
271 
277 
283 }
285 
291 {
296 
301 
307 
313 }
315 
327 ALT_STATUS_CODE alt_16550_fifo_enable(ALT_16550_HANDLE_t * handle);
328 
340 ALT_STATUS_CODE alt_16550_fifo_disable(ALT_16550_HANDLE_t * handle);
341 
382 ALT_STATUS_CODE alt_16550_fifo_read(ALT_16550_HANDLE_t * handle,
383  char * buffer,
384  size_t count);
385 
424 ALT_STATUS_CODE alt_16550_fifo_write(ALT_16550_HANDLE_t * handle,
425  const char * buffer,
426  size_t count);
427 
428 
458 ALT_STATUS_CODE alt_16550_fifo_write_safe(ALT_16550_HANDLE_t * handle,
459  const char * buffer,
460  size_t count,
461  bool safe);
476 ALT_STATUS_CODE alt_16550_fifo_clear_rx(ALT_16550_HANDLE_t * handle);
477 
492 ALT_STATUS_CODE alt_16550_fifo_clear_tx(ALT_16550_HANDLE_t * handle);
493 
508 ALT_STATUS_CODE alt_16550_fifo_clear_all(ALT_16550_HANDLE_t * handle);
509 
524 ALT_STATUS_CODE alt_16550_fifo_size_get_rx(ALT_16550_HANDLE_t * handle,
525  uint32_t * size);
526 
541 ALT_STATUS_CODE alt_16550_fifo_size_get_tx(ALT_16550_HANDLE_t * handle,
542  uint32_t * size);
543 
566 ALT_STATUS_CODE alt_16550_fifo_level_get_rx(ALT_16550_HANDLE_t * handle,
567  uint32_t * level);
568 
591 ALT_STATUS_CODE alt_16550_fifo_level_get_tx(ALT_16550_HANDLE_t * handle,
592  uint32_t * level);
593 
613 ALT_STATUS_CODE alt_16550_fifo_trigger_set_rx(ALT_16550_HANDLE_t * handle,
615 
635 ALT_STATUS_CODE alt_16550_fifo_trigger_set_tx(ALT_16550_HANDLE_t * handle,
637 
660 {
680 }
682 
701 ALT_STATUS_CODE alt_16550_baudrate_get(ALT_16550_HANDLE_t * handle,
702  uint32_t * baudrate);
703 
724 ALT_STATUS_CODE alt_16550_baudrate_set(ALT_16550_HANDLE_t * handle,
725  uint32_t baudrate);
726 
744 ALT_STATUS_CODE alt_16550_divisor_get(ALT_16550_HANDLE_t * handle,
745  uint32_t * divisor);
746 
767 ALT_STATUS_CODE alt_16550_divisor_set(ALT_16550_HANDLE_t * handle,
768  uint32_t divisor);
769 
790 {
798 
820 
831 
852 
859 
864 }
866 
884 ALT_STATUS_CODE alt_16550_int_enable_rx(ALT_16550_HANDLE_t * handle);
885 
896 ALT_STATUS_CODE alt_16550_int_disable_rx(ALT_16550_HANDLE_t * handle);
897 
914 ALT_STATUS_CODE alt_16550_int_enable_tx(ALT_16550_HANDLE_t * handle);
915 
926 ALT_STATUS_CODE alt_16550_int_disable_tx(ALT_16550_HANDLE_t * handle);
927 
942 ALT_STATUS_CODE alt_16550_int_enable_line(ALT_16550_HANDLE_t * handle);
943 
954 ALT_STATUS_CODE alt_16550_int_disable_line(ALT_16550_HANDLE_t * handle);
955 
970 ALT_STATUS_CODE alt_16550_int_enable_modem(ALT_16550_HANDLE_t * handle);
971 
982 ALT_STATUS_CODE alt_16550_int_disable_modem(ALT_16550_HANDLE_t * handle);
983 
994 ALT_STATUS_CODE alt_16550_int_disable_all(ALT_16550_HANDLE_t * handle);
995 
1012 ALT_STATUS_CODE alt_16550_int_status_get(ALT_16550_HANDLE_t * handle,
1013  ALT_16550_INT_STATUS_t * status);
1014 
1033 {
1040 
1048 
1056 
1063 
1072 
1080 
1088 
1096 }
1098 
1122 ALT_STATUS_CODE alt_16550_flowcontrol_enable(ALT_16550_HANDLE_t * handle);
1123 
1142 ALT_STATUS_CODE alt_16550_flowcontrol_disable(ALT_16550_HANDLE_t * handle);
1143 
1165 ALT_STATUS_CODE alt_16550_loopback_enable(ALT_16550_HANDLE_t * handle);
1166 
1177 ALT_STATUS_CODE alt_16550_loopback_disable(ALT_16550_HANDLE_t * handle);
1178 
1192 ALT_STATUS_CODE alt_16550_modem_enable_out1(ALT_16550_HANDLE_t * handle);
1193 
1207 ALT_STATUS_CODE alt_16550_modem_disable_out1(ALT_16550_HANDLE_t * handle);
1208 
1222 ALT_STATUS_CODE alt_16550_modem_enable_out2(ALT_16550_HANDLE_t * handle);
1223 
1237 ALT_STATUS_CODE alt_16550_modem_disable_out2(ALT_16550_HANDLE_t * handle);
1238 
1257 ALT_STATUS_CODE alt_16550_modem_enable_rts(ALT_16550_HANDLE_t * handle);
1258 
1276 ALT_STATUS_CODE alt_16550_modem_disable_rts(ALT_16550_HANDLE_t * handle);
1277 
1293 ALT_STATUS_CODE alt_16550_modem_enable_dtr(ALT_16550_HANDLE_t * handle);
1294 
1309 ALT_STATUS_CODE alt_16550_modem_disable_dtr(ALT_16550_HANDLE_t * handle);
1310 
1325 ALT_STATUS_CODE alt_16550_modem_status_get(ALT_16550_HANDLE_t * handle,
1326  uint32_t * status);
1327 
1345 {
1350 
1355 
1360 
1365 }
1367 
1372 {
1377 
1383 }
1385 
1390 {
1395 
1401 
1407 }
1409 
1415 {
1424 
1435 
1461 
1473 
1485 
1495 
1508 
1514 }
1516 
1536 ALT_STATUS_CODE alt_16550_line_config_set(ALT_16550_HANDLE_t * handle,
1537  ALT_16550_DATABITS_t databits,
1538  ALT_16550_PARITY_t parity,
1539  ALT_16550_STOPBITS_t stopbits);
1540 
1552 ALT_STATUS_CODE alt_16550_line_break_enable(ALT_16550_HANDLE_t * handle);
1553 
1564 ALT_STATUS_CODE alt_16550_line_break_disable(ALT_16550_HANDLE_t * handle);
1565 
1580 ALT_STATUS_CODE alt_16550_line_status_get(ALT_16550_HANDLE_t * handle,
1581  uint32_t * status);
1582 
1591 #ifdef __cplusplus
1592 }
1593 #endif
1594 
1595 #endif /* __ALT_16550_UART_H__ */