diff options
Diffstat (limited to 'drivers/net/ethernet/8390/smc-ultra.c')
| -rw-r--r-- | drivers/net/ethernet/8390/smc-ultra.c | 48 | 
1 files changed, 29 insertions, 19 deletions
diff --git a/drivers/net/ethernet/8390/smc-ultra.c b/drivers/net/ethernet/8390/smc-ultra.c index b0fbce39661..139385dcdaa 100644 --- a/drivers/net/ethernet/8390/smc-ultra.c +++ b/drivers/net/ethernet/8390/smc-ultra.c @@ -111,6 +111,7 @@ static struct isapnp_device_id ultra_device_ids[] __initdata = {  MODULE_DEVICE_TABLE(isapnp, ultra_device_ids);  #endif +static u32 ultra_msg_enable;  #define START_PG		0x00	/* First page of TX buffer */ @@ -211,6 +212,7 @@ static int __init ultra_probe1(struct net_device *dev, int ioaddr)  	unsigned char num_pages, irqreg, addr, piomode;  	unsigned char idreg = inb(ioaddr + 7);  	unsigned char reg4 = inb(ioaddr + 4) & 0x7f; +	struct ei_device *ei_local = netdev_priv(dev);  	if (!request_region(ioaddr, ULTRA_IO_EXTENT, DRV_NAME))  		return -EBUSY; @@ -232,16 +234,16 @@ static int __init ultra_probe1(struct net_device *dev, int ioaddr)  		goto out;  	} -	if (ei_debug  &&  version_printed++ == 0) -		printk(version); +	if ((ultra_msg_enable & NETIF_MSG_DRV) && (version_printed++ == 0)) +		netdev_info(dev, version);  	model_name = (idreg & 0xF0) == 0x20 ? "SMC Ultra" : "SMC EtherEZ";  	for (i = 0; i < 6; i++)  		dev->dev_addr[i] = inb(ioaddr + 8 + i); -	printk("%s: %s at %#3x, %pM", dev->name, model_name, -	       ioaddr, dev->dev_addr); +	netdev_info(dev, "%s at %#3x, %pM", model_name, +		    ioaddr, dev->dev_addr);  	/* Switch from the station address to the alternate register set and  	   read the useful registers there. */ @@ -265,7 +267,7 @@ static int __init ultra_probe1(struct net_device *dev, int ioaddr)  		irq = irqmap[((irqreg & 0x40) >> 4) + ((irqreg & 0x0c) >> 2)];  		if (irq == 0) { -			printk(", failed to detect IRQ line.\n"); +			pr_cont(", failed to detect IRQ line.\n");  			retval =  -EAGAIN;  			goto out;  		} @@ -296,7 +298,7 @@ static int __init ultra_probe1(struct net_device *dev, int ioaddr)  	ei_status.mem = ioremap(dev->mem_start, (ei_status.stop_page - START_PG)*256);  	if (!ei_status.mem) { -		printk(", failed to ioremap.\n"); +		pr_cont(", failed to ioremap.\n");  		retval =  -ENOMEM;  		goto out;  	} @@ -304,14 +306,15 @@ static int __init ultra_probe1(struct net_device *dev, int ioaddr)  	dev->mem_end = dev->mem_start + (ei_status.stop_page - START_PG)*256;  	if (piomode) { -		printk(",%s IRQ %d programmed-I/O mode.\n", -			   eeprom_irq ? "EEPROM" : "assigned ", dev->irq); +		pr_cont(", %s IRQ %d programmed-I/O mode.\n", +			eeprom_irq ? "EEPROM" : "assigned ", dev->irq);  		ei_status.block_input = &ultra_pio_input;  		ei_status.block_output = &ultra_pio_output;  		ei_status.get_8390_hdr = &ultra_pio_get_hdr;  	} else { -		printk(",%s IRQ %d memory %#lx-%#lx.\n", eeprom_irq ? "" : "assigned ", -			   dev->irq, dev->mem_start, dev->mem_end-1); +		pr_cont(", %s IRQ %d memory %#lx-%#lx.\n", +			eeprom_irq ? "" : "assigned ", dev->irq, dev->mem_start, +			dev->mem_end-1);  		ei_status.block_input = &ultra_block_input;  		ei_status.block_output = &ultra_block_output;  		ei_status.get_8390_hdr = &ultra_get_8390_hdr; @@ -320,6 +323,7 @@ static int __init ultra_probe1(struct net_device *dev, int ioaddr)  	dev->netdev_ops = &ultra_netdev_ops;  	NS8390_init(dev, 0); +	ei_local->msg_enable = ultra_msg_enable;  	retval = register_netdev(dev);  	if (retval) @@ -356,12 +360,15 @@ static int __init ultra_probe_isapnp(struct net_device *dev)                          /* found it */  			dev->base_addr = pnp_port_start(idev, 0);  			dev->irq = pnp_irq(idev, 0); -                        printk(KERN_INFO "smc-ultra.c: ISAPnP reports %s at i/o %#lx, irq %d.\n", -                                (char *) ultra_device_ids[i].driver_data, -                                dev->base_addr, dev->irq); +			netdev_info(dev, +				    "smc-ultra.c: ISAPnP reports %s at i/o %#lx, irq %d.\n", +				    (char *) ultra_device_ids[i].driver_data, +				    dev->base_addr, dev->irq);                          if (ultra_probe1(dev, dev->base_addr) != 0) {      /* Shouldn't happen. */ -                                printk(KERN_ERR "smc-ultra.c: Probe of ISAPnP card at %#lx failed.\n", dev->base_addr); -                                pnp_device_detach(idev); +				netdev_err(dev, +					   "smc-ultra.c: Probe of ISAPnP card at %#lx failed.\n", +					   dev->base_addr); +				pnp_device_detach(idev);  				return -ENXIO;                          }                          ei_status.priv = (unsigned long)idev; @@ -412,9 +419,10 @@ static void  ultra_reset_8390(struct net_device *dev)  {  	int cmd_port = dev->base_addr - ULTRA_NIC_OFFSET; /* ASIC base addr */ +	struct ei_device *ei_local = netdev_priv(dev);  	outb(ULTRA_RESET, cmd_port); -	if (ei_debug > 1) printk("resetting Ultra, t=%ld...", jiffies); +	netif_dbg(ei_local, hw, dev, "resetting Ultra, t=%ld...\n", jiffies);  	ei_status.txing = 0;  	outb(0x00, cmd_port);	/* Disable shared memory for safety. */ @@ -424,7 +432,7 @@ ultra_reset_8390(struct net_device *dev)  	else  		outb(0x01, cmd_port + 6);		/* Enable interrupts and memory. */ -	if (ei_debug > 1) printk("reset done\n"); +	netif_dbg(ei_local, hw, dev, "reset done\n");  }  /* Grab the 8390 specific header. Similar to the block_input routine, but @@ -530,11 +538,11 @@ static int  ultra_close_card(struct net_device *dev)  {  	int ioaddr = dev->base_addr - ULTRA_NIC_OFFSET; /* CMDREG */ +	struct ei_device *ei_local = netdev_priv(dev);  	netif_stop_queue(dev); -	if (ei_debug > 1) -		printk("%s: Shutting down ethercard.\n", dev->name); +	netif_dbg(ei_local, ifdown, dev, "Shutting down ethercard.\n");  	outb(0x00, ioaddr + 6);		/* Disable interrupts. */  	free_irq(dev->irq, dev); @@ -556,8 +564,10 @@ static int irq[MAX_ULTRA_CARDS];  module_param_array(io, int, NULL, 0);  module_param_array(irq, int, NULL, 0); +module_param_named(msg_enable, ultra_msg_enable, uint, (S_IRUSR|S_IRGRP|S_IROTH));  MODULE_PARM_DESC(io, "I/O base address(es)");  MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)"); +MODULE_PARM_DESC(msg_enable, "Debug message level (see linux/netdevice.h for bitmap)");  MODULE_DESCRIPTION("SMC Ultra/EtherEZ ISA/PnP Ethernet driver");  MODULE_LICENSE("GPL");  | 
