Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 4113 → Rev 4114

/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"
156,19 → 155,35
: "i" (SKI_INIT_CONSOLE)
: "r15", "r8"
);
initialized = true;
}
 
skiout = devout;
chardev_initialize("ski_stdout", &ski_stdout, &ski_ops);
stdout = &ski_stdout;
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.");
thread_ready(t);
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