} 
static int __init am79c961_init(void){	struct net_device *dev;	struct dev_priv *priv;	int i, ret;	dev = alloc_etherdev(sizeof(struct dev_priv));	ret = -ENOMEM;	if (!dev)		goto out;	priv = netdev_priv(dev);	/*	 * Fixed address and IRQ lines here.	 * The PNP initialisation should have been	 * done by the ether bootp loader.	 */	dev->base_addr = 0x220;	dev->irq = IRQ_EBSA110_ETHERNET;    	ret = -ENODEV;	if (!request_region(dev->base_addr, 0x18, dev->name))		goto nodev;	/*	 * Reset the device.	 */	inb(dev->base_addr + NET_RESET);	udelay(5);	/*	 * Check the manufacturer part of the	 * ether address.	 */	if (inb(dev->base_addr) != 0x08 ||	    inb(dev->base_addr + 2) != 0x00 ||	    inb(dev->base_addr + 4) != 0x2b)	    	goto release;	am79c961_banner();	printk(KERN_INFO "%s: ether address ", dev->name);	/* Retrive and print the ethernet address. */	for (i = 0; i < 6; i++) {		dev->dev_addr[i] = inb(dev->base_addr + i * 2) & 0xff;		printk (i == 5 ? "%02x\n" : "%02x:", dev->dev_addr[i]);	}	spin_lock_init(&priv->chip_lock);	init_timer(&priv->timer);	priv->timer.data = (unsigned long)dev;	priv->timer.function = am79c961_timer;	if (am79c961_hw_init(dev))		goto release;	dev->open		= am79c961_open;	dev->stop		= am79c961_close;	dev->hard_start_xmit	= am79c961_sendpacket;	dev->get_stats		= am79c961_getstats;	dev->set_multicast_list	= am79c961_setmulticastlist;	dev->tx_timeout		= am79c961_timeout;#ifdef CONFIG_NET_POLL_CONTROLLER	dev->poll_controller	= am79c961_poll_controller;#endif	ret = register_netdev(dev);	if (ret == 0)		return 0;release:	release_region(dev->base_addr, 0x18);nodev:	free_netdev(dev);out:	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/487fd4eb1445407c9760af08b0b34c3f4cdb4afc/am79c961a.c/buggy/drivers/net/arm/am79c961a.c