/trunk/kernel/genarch/include/drivers/ns16550/ns16550.h |
---|
68,7 → 68,7 |
indev_t kbrdin; |
} ns16550_instance_t; |
extern indev_t *ns16550_init(ns16550_t *, devno_t, inr_t, cir_t, void *) |
extern indev_t *ns16550_init(ns16550_t *, devno_t, inr_t, cir_t, void *); |
#endif |
/trunk/kernel/arch/ia64/include/ski/ski.h |
---|
35,7 → 35,6 |
#ifndef KERN_ia64_SKI_H_ |
#define KERN_ia64_SKI_H_ |
#include <arch/types.h> |
#include <console/chardev.h> |
#define SKI_INIT_CONSOLE 20 |
42,7 → 41,8 |
#define SKI_GETCHAR 21 |
#define SKI_PUTCHAR 31 |
extern void ski_console_init(chardev_t *); |
extern indev_t *skiin_init(void); |
extern void skiout_init(void); |
extern void ski_kbd_grab(void); |
extern void ski_kbd_release(void); |
/trunk/kernel/arch/ia64/src/asm.S |
---|
51,7 → 51,7 |
adds r14 = 7, in1 |
mov r2 = ar.lc |
mov r8 = in0 |
mov r8 = in0 ;; |
and r14 = -8, r14 ;; |
cmp.ne p6, p7 = r14, in1 |
(p7) br.cond.dpnt 3f ;; |
/trunk/kernel/arch/ia64/src/ia64.c |
---|
150,8 → 150,11 |
void arch_post_smp_init(void) |
{ |
#ifdef SKI |
srln_init(stdin); |
ski_console_init(&srlnin); |
indev_t *in; |
in = skiin_init(); |
if (in) |
srln_init(in); |
skiout_init(); |
#endif |
#ifdef I460GX |
165,7 → 168,7 |
#ifdef CONFIG_NS16550 |
inr = NS16550_IRQ; |
indev_t *kbrdin = ns16550_init(ns16550_t *) NS16550_BASE, devno, inr, NULL, NULL); |
indev_t *kbrdin = ns16550_init((ns16550_t *) NS16550_BASE, devno, inr, NULL, NULL); |
if (kbrdin) |
srln_init(kbrdin); |
/trunk/kernel/arch/ia64/src/ski/ski.c |
---|
43,10 → 43,9 |
#include <arch/drivers/kbd.h> |
#include <arch.h> |
static chardev_t *skiout; |
static indev_t skiin; /**< Ski input device. */ |
static outdev_t skiout; /**< Ski output device. */ |
static chardev_t ski_stdout; |
static bool kbd_disabled; |
/** Display character on debug console |
57,7 → 56,7 |
* @param d Character device. |
* @param ch Character to be printed. |
*/ |
static void ski_putchar(chardev_t *d, const char ch, bool silent) |
static void ski_putchar(outdev_t *d, const char ch, bool silent) |
{ |
if (!silent) { |
asm volatile ( |
74,7 → 73,11 |
} |
} |
static chardev_operations_t ski_ops = { |
static indev_operations_t skiin_ops = { |
.poll = NULL |
}; |
static outdev_operations_t skiout_ops = { |
.write = ski_putchar |
}; |
108,25 → 111,16 |
static void poll_keyboard(void) |
{ |
char ch; |
ipl_t ipl; |
ipl = interrupts_disable(); |
if (kbd_disabled) { |
interrupts_restore(ipl); |
if (kbd_disabled) |
return; |
} |
ch = ski_getchar(); |
if(ch == '\r') |
ch = '\n'; |
if (ch && skiout) { |
chardev_push_character(skiout, ch); |
interrupts_restore(ipl); |
if (ch) { |
indev_push_character(&skiin, ch); |
return; |
} |
interrupts_restore(ipl); |
} |
#define POLL_INTERVAL 10000 /* 10 ms */ |
147,8 → 141,13 |
* Issue SSC (Simulator System Call) to |
* to open debug console. |
*/ |
void ski_console_init(chardev_t *devout) |
static void ski_init(void) |
{ |
static bool initialized; |
if (initialized) |
return; |
asm volatile ( |
"mov r15 = %0\n" |
"break 0x80000\n" |
157,18 → 156,34 |
: "r15", "r8" |
); |
skiout = devout; |
chardev_initialize("ski_stdout", &ski_stdout, &ski_ops); |
stdout = &ski_stdout; |
initialized = true; |
} |
indev_t *skiin_init(void) |
{ |
ski_init(); |
indev_initialize("skiin", &skiin, &skiin_ops); |
thread_t *t = thread_create(kkbdpoll, NULL, TASK, 0, "kkbdpoll", true); |
if (!t) |
panic("Cannot create kkbdpoll."); |
if (t) |
thread_ready(t); |
else |
return NULL; |
sysinfo_set_item_val("kbd", NULL, true); |
sysinfo_set_item_val("kbd.type", NULL, KBD_SKI); |
return &skiin; |
} |
void skiout_init(void) |
{ |
ski_init(); |
outdev_initialize("skiout", &skiout, &skiout_ops); |
stdout = &skiout; |
sysinfo_set_item_val("fb", NULL, false); |
} |
/trunk/HelenOS.config |
---|
333,12 → 333,22 |
% Input device class |
@ "generic" Keyboard or serial line |
@ "none" No input device |
! [PLATFORM=ia32|PLATFORM=amd64|PLATFORM=mips32] CONFIG_HID_IN (choice) |
! [PLATFORM=ia32|PLATFORM=amd64|(PLATFORM=mips32&MACHINE!=msim)] CONFIG_HID_IN (choice) |
% Input device class |
@ "serial" Serial line |
@ "none" No input device |
! [MACHINE=ski|MACHINE=serengeti|MACHINE=msim] CONFIG_HID_IN (choice) |
% Output device class |
@ "serial" Serial line |
@ "none" No output device |
! [MACHINE=ski|MACHINE=serengeti|MACHINE=msim] CONFIG_HID_OUT (choice) |
% Output device class |
@ "generic" Monitor or serial line |
@ "none" No output device |
! [PLATFORM=ia32|PLATFORM=amd64|(PLATFORM=mips32&MACHINE=msim)] CONFIG_HID_OUT (choice) |
! [PLATFORM=ia32|PLATFORM=amd64] CONFIG_HID_OUT (choice) |
% Output device class |
@ "generic" Monitor or serial line |