Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/ia64/hp/sim/hpsim_console.c
15126 views
1
/*
2
* Platform dependent support for HP simulator.
3
*
4
* Copyright (C) 1998, 1999, 2002 Hewlett-Packard Co
5
* David Mosberger-Tang <[email protected]>
6
* Copyright (C) 1999 Vijay Chander <[email protected]>
7
*/
8
9
#include <linux/init.h>
10
#include <linux/kernel.h>
11
#include <linux/param.h>
12
#include <linux/string.h>
13
#include <linux/types.h>
14
#include <linux/tty.h>
15
#include <linux/kdev_t.h>
16
#include <linux/console.h>
17
18
#include <asm/delay.h>
19
#include <asm/irq.h>
20
#include <asm/pal.h>
21
#include <asm/machvec.h>
22
#include <asm/pgtable.h>
23
#include <asm/sal.h>
24
#include <asm/hpsim.h>
25
26
#include "hpsim_ssc.h"
27
28
static int simcons_init (struct console *, char *);
29
static void simcons_write (struct console *, const char *, unsigned);
30
static struct tty_driver *simcons_console_device (struct console *, int *);
31
32
static struct console hpsim_cons = {
33
.name = "simcons",
34
.write = simcons_write,
35
.device = simcons_console_device,
36
.setup = simcons_init,
37
.flags = CON_PRINTBUFFER,
38
.index = -1,
39
};
40
41
static int
42
simcons_init (struct console *cons, char *options)
43
{
44
return 0;
45
}
46
47
static void
48
simcons_write (struct console *cons, const char *buf, unsigned count)
49
{
50
unsigned long ch;
51
52
while (count-- > 0) {
53
ch = *buf++;
54
ia64_ssc(ch, 0, 0, 0, SSC_PUTCHAR);
55
if (ch == '\n')
56
ia64_ssc('\r', 0, 0, 0, SSC_PUTCHAR);
57
}
58
}
59
60
static struct tty_driver *simcons_console_device (struct console *c, int *index)
61
{
62
*index = c->index;
63
return hp_simserial_driver;
64
}
65
66
int simcons_register(void)
67
{
68
if (!ia64_platform_is("hpsim"))
69
return 1;
70
71
if (hpsim_cons.flags & CON_ENABLED)
72
return 1;
73
74
register_console(&hpsim_cons);
75
return 0;
76
}
77
78