1 | /**************************************************************************** |
---|
2 | * This file defines a nano-driver for SocLib vci_multi_tty component, used * |
---|
3 | * by the ALMOS-MKH boot-loader. * |
---|
4 | * * |
---|
5 | * The SEG_TTY_BASE address must be defined in the 'hard_config.h' file. * |
---|
6 | * * |
---|
7 | * All accesses to the device registers are performed via 2 low-level * |
---|
8 | * functions 'boot_tty_get_register()' and 'boot_tty_set_register()'. * |
---|
9 | ****************************************************************************/ |
---|
10 | |
---|
11 | #ifndef BOOT_TTY_DRIVER_H |
---|
12 | #define BOOT_TTY_DRIVER_H |
---|
13 | |
---|
14 | #include <hal_types.h> |
---|
15 | |
---|
16 | /**************************************************************************** |
---|
17 | * Driver register map. * |
---|
18 | ****************************************************************************/ |
---|
19 | |
---|
20 | enum TTY_registers |
---|
21 | { |
---|
22 | TTY_WRITE = 0, /* character to be displayed on screen */ |
---|
23 | TTY_STATUS = 1, /* read and write buffer status */ |
---|
24 | TTY_READ = 2, /* character in the keyboard */ |
---|
25 | TTY_CONFIG = 3, /* unused */ |
---|
26 | |
---|
27 | TTY_SPAN = 4, /* segment size for one channel ( words ) */ |
---|
28 | }; |
---|
29 | |
---|
30 | /**************************************************************************** |
---|
31 | * Driver status value. * |
---|
32 | ****************************************************************************/ |
---|
33 | |
---|
34 | enum TTY_status |
---|
35 | { |
---|
36 | TTY_READ_BUSY = 1, /* Set if TTY_READ register contains a data. */ |
---|
37 | TTY_WRITE_BUSY = 2, /* Set if TTY_WRITE register contains a data. */ |
---|
38 | }; |
---|
39 | |
---|
40 | /**************************************************************************** |
---|
41 | * Driver API functions. * |
---|
42 | ****************************************************************************/ |
---|
43 | |
---|
44 | /**************************************************************************** |
---|
45 | * This function writes a character string from the 'buf' buffer to the * |
---|
46 | * boot TTY terminal. It tests the TTY_STATUS register before writing each * |
---|
47 | * character of the string to the TTY_WRITE register. If TTY_WRITE_BUSY * |
---|
48 | * bit is set, it keeps testing the TTY_STATUS register. If after 10000 * |
---|
49 | * retries the bit is still set, the function reports an error and returns. * |
---|
50 | * @ buf : buffer containing the string to be printed * |
---|
51 | * @ nbytes : number of characters to be printed * |
---|
52 | * @ returns 0 on success, -1 on error. * |
---|
53 | ****************************************************************************/ |
---|
54 | int boot_tty_write( char * buf, |
---|
55 | uint32_t nbytes ); |
---|
56 | |
---|
57 | #endif // BOOT_TTY_DRIVER_H |
---|