sunsu_change_speed(&up->port, up->cflag, 0, quot);  
static int __init sunsu_kbd_ms_init(struct uart_sunsu_port *up, int channel){#ifdef CONFIG_SERIO	struct serio *serio;#endif	up->port.line = channel;	up->port.type = PORT_UNKNOWN;	up->port.uartclk = (SU_BASE_BAUD * 16);	if (up->su_type == SU_PORT_KBD)		up->cflag = B1200 | CS8 | CLOCAL | CREAD;	else		up->cflag = B4800 | CS8 | CLOCAL | CREAD;	sunsu_autoconfig(up);	if (up->port.type == PORT_UNKNOWN)		return -1;	printk(KERN_INFO "su%d at 0x%p (irq = %s) is a %s\n",	       channel,	       up->port.membase, __irq_itoa(up->port.irq),	       sunsu_type(&up->port));#ifdef CONFIG_SERIO	up->serio = serio = kmalloc(sizeof(struct serio), GFP_KERNEL);	if (serio) {		memset(serio, 0, sizeof(*serio));		serio->port_data = up;		serio->id.type = SERIO_RS232;		if (up->su_type == SU_PORT_KBD) {			serio->id.proto = SERIO_SUNKBD;			strlcpy(serio->name, "sukbd", sizeof(serio->name));		} else {			serio->id.proto = SERIO_SUN;			serio->id.extra = 1;			strlcpy(serio->name, "sums", sizeof(serio->name));		}		strlcpy(serio->phys, (channel == 0 ? "su/serio0" : "su/serio1"),			sizeof(serio->phys));		serio->write = sunsu_serio_write;		serio->open = sunsu_serio_open;		serio->close = sunsu_serio_close;		serio_register_port(serio);	} else {		printk(KERN_WARNING "su%d: not enough memory for serio port\n",			channel);	}#endif	sunsu_startup(&up->port);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/623f41eb923d7f34888cbd9e4f50a7b1a79d0ae5/sunsu.c/buggy/drivers/serial/sunsu.c