Hardware Libraries
20.1
Arria 10 SoC Hardware Manager
Main Page
Address Space
Data Structures
Files
File List
Globals
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
{
82
ALT_16550_DEVICE_SOCFPGA_UART0
= 0,
83
87
ALT_16550_DEVICE_SOCFPGA_UART1
= 1,
88
93
ALT_16550_DEVICE_ALTERA_16550_UART
= 0x100
94
}
95
ALT_16550_DEVICE_t
;
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
}
110
ALT_16550_HANDLE_t
;
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
255
typedef
enum
ALT_16550_FIFO_TRIGGER_RX_e
256
{
260
ALT_16550_FIFO_TRIGGER_RX_ANY
= 0,
261
266
ALT_16550_FIFO_TRIGGER_RX_QUARTER_FULL
= 1,
267
272
ALT_16550_FIFO_TRIGGER_RX_HALF_FULL
= 2,
273
278
ALT_16550_FIFO_TRIGGER_RX_ALMOST_FULL
= 3
279
}
280
ALT_16550_FIFO_TRIGGER_RX_t
;
281
286
typedef
enum
ALT_16550_FIFO_TRIGGER_TX_e
287
{
291
ALT_16550_FIFO_TRIGGER_TX_EMPTY
= 0,
292
296
ALT_16550_FIFO_TRIGGER_TX_ALMOST_EMPTY
= 1,
297
302
ALT_16550_FIFO_TRIGGER_TX_QUARTER_FULL
= 2,
303
308
ALT_16550_FIFO_TRIGGER_TX_HALF_FULL
= 3
309
}
310
ALT_16550_FIFO_TRIGGER_TX_t
;
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,
610
ALT_16550_FIFO_TRIGGER_RX_t
trigger);
611
631
ALT_STATUS_CODE
alt_16550_fifo_trigger_set_tx
(
ALT_16550_HANDLE_t
* handle,
632
ALT_16550_FIFO_TRIGGER_TX_t
trigger);
633
655
typedef
enum
ALT_16550_BAUDRATE_e
656
{
657
ALT_16550_BAUDRATE_50
= 50,
658
ALT_16550_BAUDRATE_75
= 75,
659
ALT_16550_BAUDRATE_150
= 150,
660
ALT_16550_BAUDRATE_300
= 300,
661
ALT_16550_BAUDRATE_600
= 600,
662
ALT_16550_BAUDRATE_900
= 900,
663
ALT_16550_BAUDRATE_1200
= 1200,
664
ALT_16550_BAUDRATE_1800
= 1800,
665
ALT_16550_BAUDRATE_2400
= 2400,
666
ALT_16550_BAUDRATE_3600
= 3600,
667
ALT_16550_BAUDRATE_4800
= 4800,
668
ALT_16550_BAUDRATE_7200
= 7200,
669
ALT_16550_BAUDRATE_9600
= 9600,
670
ALT_16550_BAUDRATE_14400
= 14400,
671
ALT_16550_BAUDRATE_19200
= 19200,
672
ALT_16550_BAUDRATE_28800
= 28800,
673
ALT_16550_BAUDRATE_38400
= 38400,
674
ALT_16550_BAUDRATE_57600
= 57600,
675
ALT_16550_BAUDRATE_115200
= 115200
676
}
677
ALT_16550_BAUDRATE_t
;
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
785
typedef
enum
ALT_16550_INT_STATUS_e
786
{
793
ALT_16550_INT_STATUS_LINE
= 0x6,
794
815
ALT_16550_INT_STATUS_RX_DATA
= 0x4,
816
826
ALT_16550_INT_STATUS_RX_TIMEOUT
= 0xC,
827
847
ALT_16550_INT_STATUS_TX_IDLE
= 0x2,
848
854
ALT_16550_INT_STATUS_MODEM
= 0x0,
855
859
ALT_16550_INT_STATUS_NONE
= 0x1
860
}
861
ALT_16550_INT_STATUS_t
;
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
1028
typedef
enum
ALT_16550_MODEM_STATUS_e
1029
{
1035
ALT_16550_MODEM_STATUS_DCD
= 1 << 7,
1036
1043
ALT_16550_MODEM_STATUS_RI
= 1 << 6,
1044
1051
ALT_16550_MODEM_STATUS_DSR
= 1 << 5,
1052
1058
ALT_16550_MODEM_STATUS_CTS
= 1 << 4,
1059
1067
ALT_16550_MODEM_STATUS_DDCD
= 1 << 3,
1068
1075
ALT_16550_MODEM_STATUS_TERI
= 1 << 2,
1076
1083
ALT_16550_MODEM_STATUS_DDSR
= 1 << 1,
1084
1091
ALT_16550_MODEM_STATUS_DCTS
= 1 << 0
1092
}
1093
ALT_16550_MODEM_STATUS_t
;
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
1340
typedef
enum
ALT_16550_DATABITS_e
1341
{
1345
ALT_16550_DATABITS_5
= 0,
1346
1350
ALT_16550_DATABITS_6
= 1,
1351
1355
ALT_16550_DATABITS_7
= 2,
1356
1360
ALT_16550_DATABITS_8
= 3
1361
}
1362
ALT_16550_DATABITS_t
;
1363
1367
typedef
enum
ALT_16550_STOPBITS_e
1368
{
1372
ALT_16550_STOPBITS_1
= 0,
1373
1378
ALT_16550_STOPBITS_2
= 1
1379
}
1380
ALT_16550_STOPBITS_t
;
1381
1385
typedef
enum
ALT_16550_PARITY_e
1386
{
1390
ALT_16550_PARITY_DISABLE
= 0,
1391
1396
ALT_16550_PARITY_ODD
= 1,
1397
1402
ALT_16550_PARITY_EVEN
= 2
1403
}
1404
ALT_16550_PARITY_t
;
1405
1410
typedef
enum
ALT_16550_LINE_STATUS_e
1411
{
1419
ALT_16550_LINE_STATUS_RFE
= 1 << 7,
1420
1430
ALT_16550_LINE_STATUS_TEMT
= 1 << 6,
1431
1456
ALT_16550_LINE_STATUS_THRE
= 1 << 5,
1457
1468
ALT_16550_LINE_STATUS_BI
= 1 << 4,
1469
1480
ALT_16550_LINE_STATUS_FE
= 1 << 3,
1481
1490
ALT_16550_LINE_STATUS_PE
= 1 << 2,
1491
1503
ALT_16550_LINE_STATUS_OE
= 1 << 1,
1504
1509
ALT_16550_LINE_STATUS_DR
= 1 << 0
1510
}
1511
ALT_16550_LINE_STATUS_t
;
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__ */
include
alt_16550_uart.h
Generated on Tue Oct 27 2020 08:37:28 for Hardware Libraries by
1.8.2