blob: ef71a6aa72beab81ece0afee6b18cd963e0c0ae2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
OPAL Console calls
==================
There are four OPAL calls relating to the OPAL console:
+---------------------------------------------+--------------+------------------------+----------+-----------------+
| Name | API Token ID | Introduced | Required | Notes |
| | | | as of | |
+---------------------------------------------+--------------+------------------------+----------+-----------------+
| :ref:`OPAL_CONSOLE_WRITE` | 1 | v1.0 (Initial Release) | POWER8 | |
+---------------------------------------------+--------------+------------------------+----------+-----------------+
| :ref:`OPAL_CONSOLE_READ` | 2 | v1.0 (Initial Release) | POWER8 | |
+---------------------------------------------+--------------+------------------------+----------+-----------------+
| :ref:`OPAL_CONSOLE_WRITE_BUFFER_SPACE` | 25 | v1.0 (Initial Release) | POWER8 | |
+---------------------------------------------+--------------+------------------------+----------+-----------------+
| :ref:`OPAL_CONSOLE_FLUSH` | 117 | :ref:`skiboot-5.1.13` | POWER9 | |
+---------------------------------------------+--------------+------------------------+----------+-----------------+
The OPAL console calls can support multiple consoles. Each console MUST
be represented in the device tree.
A conforming implementation SHOULD have at least one console. It is valid
for it to simply be an in-memory buffer and only support writing.
[TODO: details on device tree specs for console]
.. _OPAL_CONSOLE_WRITE:
OPAL_CONSOLE_WRITE
------------------
Parameters: ::
int64_t term_number
int64_t *length,
const uint8_t *buffer
Returns:
- :ref:`OPAL_SUCCESS`
- :ref:`OPAL_PARAMETER` on invalid term_number
- :ref:`OPAL_CLOSED` if console device closed
- :ref:`OPAL_BUSY_EVENT` if unable to write any of buffer
``term_number`` is the terminal number as represented in the device tree.
``length`` is a pointer to the length of buffer.
A conforming implementation SHOULD try to NOT do partial writes, although
partial writes and not writing anything are valid.
.. _OPAL_CONSOLE_WRITE_BUFFER_SPACE:
OPAL_CONSOLE_WRITE_BUFFER_SPACE
-------------------------------
Parameters: ::
int64_t term_number
int64_t *length
Returns:
- :ref:`OPAL_SUCCESS`
- :ref:`OPAL_PARAMETER` on invalid term_number
Returns the available buffer length for OPAL_CONSOLE_WRITE in ``length``.
This call can be used to help work out if there is sufficient buffer
space to write your full message to the console with OPAL_CONSOLE_WRITE.
.. _OPAL_CONSOLE_READ:
OPAL_CONSOLE_READ
-----------------
Parameters: ::
int64_t term_number
int64_t *length
uint8_t *buffer
Returns:
- :ref:`OPAL_SUCCESS`
- :ref:`OPAL_PARAMETER` on invalid term_number
- :ref:`OPAL_CLOSED`
Use :ref:`OPAL_POLL_EVENTS` for how to determine
.. _OPAL_CONSOLE_FLUSH:
OPAL_CONSOLE_FLUSH
------------------
Parameters: ::
int64_t term_number
Returns:
- :ref:`OPAL_SUCCESS`
- :ref:`OPAL_UNSUPPORTED` if the console does not implement a flush call
- :ref:`OPAL_PARAMETER` on invalid term_number
- :ref:`OPAL_PARTIAL` if more to flush, call again
- :ref:`OPAL_BUSY` if nothing was flushed this call
|