Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 20697cb7 authored by Stephen Rothwell's avatar Stephen Rothwell
Browse files

Merge branch 'hvc_iseries'

parents 54f5cd8a 4e9e95a3
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -3,7 +3,11 @@ menu "iSeries device drivers"
	depends on PPC_ISERIES

config VIOCONS
	tristate "iSeries Virtual Console Support"
	tristate "iSeries Virtual Console Support (Obsolete)"
	help
	  This is the old virtual console driver for legacy iSeries.
	  You should use the iSeries Hypervisor Virtual Console
	  support instead.

config VIODASD
	tristate "iSeries Virtual I/O disk support"
+2 −1
Original line number Diff line number Diff line
@@ -298,7 +298,8 @@ static void __init dt_vdevices(struct iseries_flat_dt *dt)
	dt_prop_u32(dt, "#address-cells", 1);
	dt_prop_u32(dt, "#size-cells", 0);

	dt_do_vdevice(dt, "vty", reg, -1, device_type_serial, NULL, 1);
	dt_do_vdevice(dt, "vty", reg, -1, device_type_serial,
			"IBM,iSeries-vty", 1);
	reg++;

	dt_do_vdevice(dt, "v-scsi", reg, -1, device_type_vscsi,
+7 −0
Original line number Diff line number Diff line
@@ -610,6 +610,13 @@ config HVC_CONSOLE
	  console. This driver allows each pSeries partition to have a console
	  which is accessed via the HMC.

config HVC_ISERIES
	bool "iSeries Hypervisor Virtual Console support"
	depends on PPC_ISERIES && !VIOCONS
	select HVC_DRIVER
	help
	  iSeries machines support a hypervisor virtual console.

config HVC_RTAS
	bool "IBM RTAS Console support"
	depends on PPC_RTAS
+1 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o
obj-$(CONFIG_SX)		+= sx.o generic_serial.o
obj-$(CONFIG_RIO)		+= rio/ generic_serial.o
obj-$(CONFIG_HVC_CONSOLE)	+= hvc_vio.o hvsi.o
obj-$(CONFIG_HVC_ISERIES)	+= hvc_iseries.o
obj-$(CONFIG_HVC_RTAS)		+= hvc_rtas.o
obj-$(CONFIG_HVC_DRIVER)	+= hvc_console.o
obj-$(CONFIG_RAW_DRIVER)	+= raw.o
+9 −5
Original line number Diff line number Diff line
@@ -80,7 +80,8 @@ struct hvc_struct {
	struct tty_struct *tty;
	unsigned int count;
	int do_wakeup;
	char outbuf[N_OUTBUF] __ALIGNED__;
	char *outbuf;
	int outbuf_size;
	int n_outbuf;
	uint32_t vtermno;
	struct hv_ops *ops;
@@ -505,7 +506,7 @@ static int hvc_write(struct tty_struct *tty, const unsigned char *buf, int count
	if (hp->n_outbuf > 0)
		hvc_push(hp);

	while (count > 0 && (rsize = N_OUTBUF - hp->n_outbuf) > 0) {
	while (count > 0 && (rsize = hp->outbuf_size - hp->n_outbuf) > 0) {
		if (rsize > count)
			rsize = count;
		memcpy(hp->outbuf + hp->n_outbuf, buf, rsize);
@@ -538,7 +539,7 @@ static int hvc_write_room(struct tty_struct *tty)
	if (!hp)
		return -1;

	return N_OUTBUF - hp->n_outbuf;
	return hp->outbuf_size - hp->n_outbuf;
}

static int hvc_chars_in_buffer(struct tty_struct *tty)
@@ -728,12 +729,13 @@ static struct kobj_type hvc_kobj_type = {
};

struct hvc_struct __devinit *hvc_alloc(uint32_t vtermno, int irq,
					struct hv_ops *ops)
					struct hv_ops *ops, int outbuf_size)
{
	struct hvc_struct *hp;
	int i;

	hp = kmalloc(sizeof(*hp), GFP_KERNEL);
	hp = kmalloc(ALIGN(sizeof(*hp), sizeof(long)) + outbuf_size,
			GFP_KERNEL);
	if (!hp)
		return ERR_PTR(-ENOMEM);

@@ -742,6 +744,8 @@ struct hvc_struct __devinit *hvc_alloc(uint32_t vtermno, int irq,
	hp->vtermno = vtermno;
	hp->irq = irq;
	hp->ops = ops;
	hp->outbuf_size = outbuf_size;
	hp->outbuf = &((char *)hp)[ALIGN(sizeof(*hp), sizeof(long))];

	kobject_init(&hp->kobj);
	hp->kobj.ktype = &hvc_kobj_type;
Loading