Rev 4346 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4346 | Rev 4348 | ||
|---|---|---|---|
| Line 24... | Line 24... | ||
| 24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| 26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 | */ |
27 | */ |
| 28 | 28 | ||
| 29 | /** @addtogroup sparc64 |
29 | /** @addtogroup sparc64 |
| 30 | * @{ |
30 | * @{ |
| 31 | */ |
31 | */ |
| 32 | /** @file |
32 | /** @file |
| 33 | */ |
33 | */ |
| 34 | 34 | ||
| Line 90... | Line 90... | ||
| 90 | 90 | ||
| 91 | /** Initilize I/O on the Serengeti machine. */ |
91 | /** Initilize I/O on the Serengeti machine. */ |
| 92 | static void serengeti_init(void) |
92 | static void serengeti_init(void) |
| 93 | { |
93 | { |
| 94 | #ifdef CONFIG_SGCN_KBD |
94 | #ifdef CONFIG_SGCN_KBD |
| - | 95 | sgcn_instance_t *sgcn_instance = sgcnin_init(); |
|
| 95 | indev_t *kbrdin; |
96 | if (sgcn_instance) { |
| 96 | kbrdin = sgcnin_init(); |
97 | srln_instance_t *srln_instance = srln_init(); |
| 97 | if (kbrdin) |
98 | if (srln_instance) { |
| - | 99 | indev_t *sink = stdin_wire(); |
|
| - | 100 | indev_t *srln = srln_wire(srln_instance, sink); |
|
| 98 | srlnin_init(kbrdin); |
101 | sgcnin_wire(sgcn_instance, srln); |
| - | 102 | } |
|
| - | 103 | } |
|
| 99 | #endif |
104 | #endif |
| 100 | #ifdef CONFIG_SGCN_PRN |
105 | #ifdef CONFIG_SGCN_PRN |
| 101 | sgcnout_init(); |
106 | sgcnout_init(); |
| 102 | #endif |
107 | #endif |
| 103 | } |
108 | } |
| Line 116... | Line 121... | ||
| 116 | panic("Cannot find '/aliases'."); |
121 | panic("Cannot find '/aliases'."); |
| 117 | 122 | ||
| 118 | /* "def-cn" = "default console" */ |
123 | /* "def-cn" = "default console" */ |
| 119 | prop = ofw_tree_getprop(aliases, "def-cn"); |
124 | prop = ofw_tree_getprop(aliases, "def-cn"); |
| 120 | 125 | ||
| 121 | if ((!prop) || (!prop->value) || (strcmp(prop->value, "/sgcn") != 0)) { |
126 | if ((!prop) || (!prop->value) || (str_cmp(prop->value, "/sgcn") != 0)) { |
| 122 | standard_console_init(aliases); |
127 | standard_console_init(aliases); |
| 123 | } else { |
128 | } else { |
| 124 | serengeti_init(); |
129 | serengeti_init(); |
| 125 | } |
130 | } |
| 126 | } |
131 | } |
| Line 132... | Line 137... | ||
| 132 | void arch_grab_console(void) |
137 | void arch_grab_console(void) |
| 133 | { |
138 | { |
| 134 | #ifdef CONFIG_FB |
139 | #ifdef CONFIG_FB |
| 135 | scr_redraw(); |
140 | scr_redraw(); |
| 136 | #endif |
141 | #endif |
| 137 | switch (kbd_type) { |
142 | |
| 138 | #ifdef CONFIG_SGCN |
143 | #ifdef CONFIG_SGCN_KBD |
| 139 | case KBD_SGCN: |
- | |
| 140 | sgcn_grab(); |
144 | sgcn_grab(); |
| 141 | break; |
- | |
| 142 | #endif |
145 | #endif |
| 143 | default: |
- | |
| 144 | break; |
- | |
| 145 | } |
- | |
| 146 | } |
146 | } |
| 147 | 147 | ||
| 148 | /** Return console to userspace |
148 | /** Return console to userspace |
| 149 | * |
149 | * |
| 150 | */ |
150 | */ |
| 151 | void arch_release_console(void) |
151 | void arch_release_console(void) |
| 152 | { |
152 | { |
| 153 | switch (kbd_type) { |
- | |
| 154 | #ifdef CONFIG_SGCN |
153 | #ifdef CONFIG_SGCN_KBD |
| 155 | case KBD_SGCN: |
- | |
| 156 | sgcn_release(); |
154 | sgcn_release(); |
| 157 | break; |
- | |
| 158 | #endif |
155 | #endif |
| 159 | default: |
- | |
| 160 | break; |
- | |
| 161 | } |
- | |
| 162 | } |
156 | } |
| 163 | 157 | ||
| 164 | /** @} |
158 | /** @} |
| 165 | */ |
159 | */ |