memset(&serial_req, 0, sizeof(struct serial_struct)); 
memset(&uport, 0, sizeof(struct uart_port)); 
static int __init hp300_8250_init(void){	static int called = 0;	int num_ports;#ifdef CONFIG_HPAPCI	int line;	unsigned long base;	struct serial_struct serial_req;	struct hp300_port *port;	int i;#endif	if (called)		return -ENODEV;	called = 1;	if (!MACH_IS_HP300)		return -ENODEV;	num_ports = 0;#ifdef CONFIG_HPDCA	if (dio_module_init(&hpdca_driver) == 0)		num_ports++;#endif#ifdef CONFIG_HPAPCI	if (hp300_model < HP_400) {		if (!num_ports)			return -ENODEV;		return 0;	}	/* These models have the Frodo chip.	 * Port 0 is reserved for the Apollo Domain keyboard.	 * Port 1 is either the console or the DCA.	 */	for (i = 1; i < 4; i++) {		/* Port 1 is the console on a 425e, on other machines it's mapped to		 * DCA.		 */#ifdef CONFIG_SERIAL_8250_CONSOLE		if (i == 1) {			continue;		}#endif		/* Create new serial device */		port = kmalloc(sizeof(struct hp300_port), GFP_KERNEL);		if (!port)			return -ENOMEM;		memset(&serial_req, 0, sizeof(struct serial_struct));		base = (FRODO_BASE + FRODO_APCI_OFFSET(i));		/* Memory mapped I/O */		serial_req.io_type = SERIAL_IO_MEM;		serial_req.flags = UPF_SKIP_TEST | UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF;		/* XXX - no interrupt support yet */		serial_req.irq = 0;		serial_req.baud_base = HPAPCI_BAUD_BASE;		serial_req.iomap_base = base;		serial_req.iomem_base = (char *)(serial_req.iomap_base + DIO_VIRADDRBASE);		serial_req.iomem_reg_shift = 2;		line = register_serial(&serial_req);		if (line < 0) {			printk(KERN_NOTICE "8250_hp300: register_serial() APCI %d"			       " irq %d failed\n", i, serial_req.irq);			kfree(port);			continue;		}		port->line = line;		port->next = hp300_ports;		hp300_ports = port;		num_ports++;	}#endif	/* Any boards found? */	if (!num_ports)		return -ENODEV;	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/2b49abac5855aff9b42cf2cdb5376ac805bebd86/8250_hp300.c/clean/drivers/serial/8250_hp300.c