Hardware Libraries
20.1
Stratix 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-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
{
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
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
251
typedef
enum
ALT_16550_FIFO_TRIGGER_RX_e
252
{
256
ALT_16550_FIFO_TRIGGER_RX_ANY
= 0,
257
262
ALT_16550_FIFO_TRIGGER_RX_QUARTER_FULL
= 1,
263
268
ALT_16550_FIFO_TRIGGER_RX_HALF_FULL
= 2,
269
274
ALT_16550_FIFO_TRIGGER_RX_ALMOST_FULL
= 3
275
}
276
ALT_16550_FIFO_TRIGGER_RX_t
;
277
282
typedef
enum
ALT_16550_FIFO_TRIGGER_TX_e
283
{
287
ALT_16550_FIFO_TRIGGER_TX_EMPTY
= 0,
288
292
ALT_16550_FIFO_TRIGGER_TX_ALMOST_EMPTY
= 1,
293
298
ALT_16550_FIFO_TRIGGER_TX_QUARTER_FULL
= 2,
299
304
ALT_16550_FIFO_TRIGGER_TX_HALF_FULL
= 3
305
}
306
ALT_16550_FIFO_TRIGGER_TX_t
;
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,
606
ALT_16550_FIFO_TRIGGER_RX_t
trigger);
607
627
ALT_STATUS_CODE
alt_16550_fifo_trigger_set_tx
(
ALT_16550_HANDLE_t
* handle,
628
ALT_16550_FIFO_TRIGGER_TX_t
trigger);
629
651
typedef
enum
ALT_16550_BAUDRATE_e
652
{
653
ALT_16550_BAUDRATE_50
= 50,
654
ALT_16550_BAUDRATE_75
= 75,
655
ALT_16550_BAUDRATE_150
= 150,
656
ALT_16550_BAUDRATE_300
= 300,
657
ALT_16550_BAUDRATE_600
= 600,
658
ALT_16550_BAUDRATE_900
= 900,
659
ALT_16550_BAUDRATE_1200
= 1200,
660
ALT_16550_BAUDRATE_1800
= 1800,
661
ALT_16550_BAUDRATE_2400
= 2400,
662
ALT_16550_BAUDRATE_3600
= 3600,
663
ALT_16550_BAUDRATE_4800
= 4800,
664
ALT_16550_BAUDRATE_7200
= 7200,
665
ALT_16550_BAUDRATE_9600
= 9600,
666
ALT_16550_BAUDRATE_14400
= 14400,
667
ALT_16550_BAUDRATE_19200
= 19200,
668
ALT_16550_BAUDRATE_28800
= 28800,
669
ALT_16550_BAUDRATE_38400
= 38400,
670
ALT_16550_BAUDRATE_57600
= 57600,
671
ALT_16550_BAUDRATE_115200
= 115200
672
}
673
ALT_16550_BAUDRATE_t
;
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
781
typedef
enum
ALT_16550_INT_STATUS_e
782
{
789
ALT_16550_INT_STATUS_LINE
= 0x6,
790
811
ALT_16550_INT_STATUS_RX_DATA
= 0x4,
812
822
ALT_16550_INT_STATUS_RX_TIMEOUT
= 0xC,
823
843
ALT_16550_INT_STATUS_TX_IDLE
= 0x2,
844
850
ALT_16550_INT_STATUS_MODEM
= 0x0,
851
855
ALT_16550_INT_STATUS_NONE
= 0x1
856
}
857
ALT_16550_INT_STATUS_t
;
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
1025
typedef
enum
ALT_16550_MODEM_STATUS_e
1026
{
1032
ALT_16550_MODEM_STATUS_DCD
= 1 << 7,
1033
1040
ALT_16550_MODEM_STATUS_RI
= 1 << 6,
1041
1048
ALT_16550_MODEM_STATUS_DSR
= 1 << 5,
1049
1055
ALT_16550_MODEM_STATUS_CTS
= 1 << 4,
1056
1064
ALT_16550_MODEM_STATUS_DDCD
= 1 << 3,
1065
1072
ALT_16550_MODEM_STATUS_TERI
= 1 << 2,
1073
1080
ALT_16550_MODEM_STATUS_DDSR
= 1 << 1,
1081
1088
ALT_16550_MODEM_STATUS_DCTS
= 1 << 0
1089
}
1090
ALT_16550_MODEM_STATUS_t
;
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
1337
typedef
enum
ALT_16550_DATABITS_e
1338
{
1342
ALT_16550_DATABITS_5
= 0,
1343
1347
ALT_16550_DATABITS_6
= 1,
1348
1352
ALT_16550_DATABITS_7
= 2,
1353
1357
ALT_16550_DATABITS_8
= 3
1358
}
1359
ALT_16550_DATABITS_t
;
1360
1364
typedef
enum
ALT_16550_STOPBITS_e
1365
{
1369
ALT_16550_STOPBITS_1
= 0,
1370
1375
ALT_16550_STOPBITS_2
= 1
1376
}
1377
ALT_16550_STOPBITS_t
;
1378
1382
typedef
enum
ALT_16550_PARITY_e
1383
{
1387
ALT_16550_PARITY_DISABLE
= 0,
1388
1393
ALT_16550_PARITY_ODD
= 1,
1394
1399
ALT_16550_PARITY_EVEN
= 2
1400
}
1401
ALT_16550_PARITY_t
;
1402
1407
typedef
enum
ALT_16550_LINE_STATUS_e
1408
{
1416
ALT_16550_LINE_STATUS_RFE
= 1 << 7,
1417
1427
ALT_16550_LINE_STATUS_TEMT
= 1 << 6,
1428
1453
ALT_16550_LINE_STATUS_THRE
= 1 << 5,
1454
1465
ALT_16550_LINE_STATUS_BI
= 1 << 4,
1466
1477
ALT_16550_LINE_STATUS_FE
= 1 << 3,
1478
1487
ALT_16550_LINE_STATUS_PE
= 1 << 2,
1488
1500
ALT_16550_LINE_STATUS_OE
= 1 << 1,
1501
1506
ALT_16550_LINE_STATUS_DR
= 1 << 0
1507
}
1508
ALT_16550_LINE_STATUS_t
;
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__ */
include
alt_16550_uart.h
Generated on Tue Oct 27 2020 08:52:47 for Hardware Libraries by
1.8.2