Altera HWLIB
16.0
The Altera HW Manager API Reference Manual
Main Page
Address Space
Data Structures
Files
File List
Globals
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
{
86
ALT_16550_DEVICE_SOCFPGA_UART0
= 0,
87
91
ALT_16550_DEVICE_SOCFPGA_UART1
= 1,
92
97
ALT_16550_DEVICE_ALTERA_16550_UART
= 0x100
98
}
99
ALT_16550_DEVICE_t
;
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
}
114
ALT_16550_HANDLE_t
;
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
259
typedef
enum
ALT_16550_FIFO_TRIGGER_RX_e
260
{
264
ALT_16550_FIFO_TRIGGER_RX_ANY
= 0,
265
270
ALT_16550_FIFO_TRIGGER_RX_QUARTER_FULL
= 1,
271
276
ALT_16550_FIFO_TRIGGER_RX_HALF_FULL
= 2,
277
282
ALT_16550_FIFO_TRIGGER_RX_ALMOST_FULL
= 3
283
}
284
ALT_16550_FIFO_TRIGGER_RX_t
;
285
290
typedef
enum
ALT_16550_FIFO_TRIGGER_TX_e
291
{
295
ALT_16550_FIFO_TRIGGER_TX_EMPTY
= 0,
296
300
ALT_16550_FIFO_TRIGGER_TX_ALMOST_EMPTY
= 1,
301
306
ALT_16550_FIFO_TRIGGER_TX_QUARTER_FULL
= 2,
307
312
ALT_16550_FIFO_TRIGGER_TX_HALF_FULL
= 3
313
}
314
ALT_16550_FIFO_TRIGGER_TX_t
;
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,
614
ALT_16550_FIFO_TRIGGER_RX_t
trigger);
615
635
ALT_STATUS_CODE
alt_16550_fifo_trigger_set_tx
(
ALT_16550_HANDLE_t
* handle,
636
ALT_16550_FIFO_TRIGGER_TX_t
trigger);
637
659
typedef
enum
ALT_16550_BAUDRATE_e
660
{
661
ALT_16550_BAUDRATE_50
= 50,
662
ALT_16550_BAUDRATE_75
= 75,
663
ALT_16550_BAUDRATE_150
= 150,
664
ALT_16550_BAUDRATE_300
= 300,
665
ALT_16550_BAUDRATE_600
= 600,
666
ALT_16550_BAUDRATE_900
= 900,
667
ALT_16550_BAUDRATE_1200
= 1200,
668
ALT_16550_BAUDRATE_1800
= 1800,
669
ALT_16550_BAUDRATE_2400
= 2400,
670
ALT_16550_BAUDRATE_3600
= 3600,
671
ALT_16550_BAUDRATE_4800
= 4800,
672
ALT_16550_BAUDRATE_7200
= 7200,
673
ALT_16550_BAUDRATE_9600
= 9600,
674
ALT_16550_BAUDRATE_14400
= 14400,
675
ALT_16550_BAUDRATE_19200
= 19200,
676
ALT_16550_BAUDRATE_28800
= 28800,
677
ALT_16550_BAUDRATE_38400
= 38400,
678
ALT_16550_BAUDRATE_57600
= 57600,
679
ALT_16550_BAUDRATE_115200
= 115200
680
}
681
ALT_16550_BAUDRATE_t
;
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
789
typedef
enum
ALT_16550_INT_STATUS_e
790
{
797
ALT_16550_INT_STATUS_LINE
= 0x6,
798
819
ALT_16550_INT_STATUS_RX_DATA
= 0x4,
820
830
ALT_16550_INT_STATUS_RX_TIMEOUT
= 0xC,
831
851
ALT_16550_INT_STATUS_TX_IDLE
= 0x2,
852
858
ALT_16550_INT_STATUS_MODEM
= 0x0,
859
863
ALT_16550_INT_STATUS_NONE
= 0x1
864
}
865
ALT_16550_INT_STATUS_t
;
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
1032
typedef
enum
ALT_16550_MODEM_STATUS_e
1033
{
1039
ALT_16550_MODEM_STATUS_DCD
= 1 << 7,
1040
1047
ALT_16550_MODEM_STATUS_RI
= 1 << 6,
1048
1055
ALT_16550_MODEM_STATUS_DSR
= 1 << 5,
1056
1062
ALT_16550_MODEM_STATUS_CTS
= 1 << 4,
1063
1071
ALT_16550_MODEM_STATUS_DDCD
= 1 << 3,
1072
1079
ALT_16550_MODEM_STATUS_TERI
= 1 << 2,
1080
1087
ALT_16550_MODEM_STATUS_DDSR
= 1 << 1,
1088
1095
ALT_16550_MODEM_STATUS_DCTS
= 1 << 0
1096
}
1097
ALT_16550_MODEM_STATUS_t
;
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
1344
typedef
enum
ALT_16550_DATABITS_e
1345
{
1349
ALT_16550_DATABITS_5
= 0,
1350
1354
ALT_16550_DATABITS_6
= 1,
1355
1359
ALT_16550_DATABITS_7
= 2,
1360
1364
ALT_16550_DATABITS_8
= 3
1365
}
1366
ALT_16550_DATABITS_t
;
1367
1371
typedef
enum
ALT_16550_STOPBITS_e
1372
{
1376
ALT_16550_STOPBITS_1
= 0,
1377
1382
ALT_16550_STOPBITS_2
= 1
1383
}
1384
ALT_16550_STOPBITS_t
;
1385
1389
typedef
enum
ALT_16550_PARITY_e
1390
{
1394
ALT_16550_PARITY_DISABLE
= 0,
1395
1400
ALT_16550_PARITY_ODD
= 1,
1401
1406
ALT_16550_PARITY_EVEN
= 2
1407
}
1408
ALT_16550_PARITY_t
;
1409
1414
typedef
enum
ALT_16550_LINE_STATUS_e
1415
{
1423
ALT_16550_LINE_STATUS_RFE
= 1 << 7,
1424
1434
ALT_16550_LINE_STATUS_TEMT
= 1 << 6,
1435
1460
ALT_16550_LINE_STATUS_THRE
= 1 << 5,
1461
1472
ALT_16550_LINE_STATUS_BI
= 1 << 4,
1473
1484
ALT_16550_LINE_STATUS_FE
= 1 << 3,
1485
1494
ALT_16550_LINE_STATUS_PE
= 1 << 2,
1495
1507
ALT_16550_LINE_STATUS_OE
= 1 << 1,
1508
1513
ALT_16550_LINE_STATUS_DR
= 1 << 0
1514
}
1515
ALT_16550_LINE_STATUS_t
;
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__ */
include
alt_16550_uart.h
Generated on Tue Sep 8 2015 13:35:04 for Altera HWLIB by
1.8.2