diff options
Diffstat (limited to 'drivers/net/irda/nsc-ircc.c')
| -rw-r--r-- | drivers/net/irda/nsc-ircc.c | 119 | 
1 files changed, 61 insertions, 58 deletions
diff --git a/drivers/net/irda/nsc-ircc.c b/drivers/net/irda/nsc-ircc.c index effc1ce8179..8583d951a6a 100644 --- a/drivers/net/irda/nsc-ircc.c +++ b/drivers/net/irda/nsc-ircc.c @@ -151,8 +151,8 @@ static char *dongle_types[] = {  static chipio_t pnp_info;  static const struct pnp_device_id nsc_ircc_pnp_table[] = {  	{ .id = "NSC6001", .driver_data = 0 }, -	{ .id = "IBM0071", .driver_data = 0 },  	{ .id = "HWPC224", .driver_data = 0 }, +	{ .id = "IBM0071", .driver_data = NSC_FORCE_DONGLE_TYPE9 },  	{ }  }; @@ -223,7 +223,7 @@ static int __init nsc_ircc_init(void)  	/* Probe for all the NSC chipsets we know about */  	for (chip = chips; chip->name ; chip++) { -		IRDA_DEBUG(2, "%s(), Probing for %s ...\n", __FUNCTION__, +		IRDA_DEBUG(2, "%s(), Probing for %s ...\n", __func__,  			   chip->name);  		/* Try all config registers for this chip */ @@ -235,7 +235,7 @@ static int __init nsc_ircc_init(void)  			/* Read index register */  			reg = inb(cfg_base);  			if (reg == 0xff) { -				IRDA_DEBUG(2, "%s() no chip at 0x%03x\n", __FUNCTION__, cfg_base); +				IRDA_DEBUG(2, "%s() no chip at 0x%03x\n", __func__, cfg_base);  				continue;  			} @@ -244,7 +244,7 @@ static int __init nsc_ircc_init(void)  			id = inb(cfg_base+1);  			if ((id & chip->cid_mask) == chip->cid_value) {  				IRDA_DEBUG(2, "%s() Found %s chip, revision=%d\n", -					   __FUNCTION__, chip->name, id & ~chip->cid_mask); +					   __func__, chip->name, id & ~chip->cid_mask);  				/*  				 * If we found a correct PnP setting, @@ -295,7 +295,7 @@ static int __init nsc_ircc_init(void)  				}  				i++;  			} else { -				IRDA_DEBUG(2, "%s(), Wrong chip id=0x%02x\n", __FUNCTION__, id); +				IRDA_DEBUG(2, "%s(), Wrong chip id=0x%02x\n", __func__, id);  			}  		}   	} @@ -345,7 +345,7 @@ static int __init nsc_ircc_open(chipio_t *info)  	void *ret;  	int err, chip_index; -	IRDA_DEBUG(2, "%s()\n", __FUNCTION__); +	IRDA_DEBUG(2, "%s()\n", __func__);   	for (chip_index = 0; chip_index < ARRAY_SIZE(dev_self); chip_index++) { @@ -354,7 +354,7 @@ static int __init nsc_ircc_open(chipio_t *info)  	}  	if (chip_index == ARRAY_SIZE(dev_self)) { -		IRDA_ERROR("%s(), maximum number of supported chips reached!\n", __FUNCTION__); +		IRDA_ERROR("%s(), maximum number of supported chips reached!\n", __func__);  		return -ENOMEM;  	} @@ -369,7 +369,7 @@ static int __init nsc_ircc_open(chipio_t *info)  	dev = alloc_irdadev(sizeof(struct nsc_ircc_cb));  	if (dev == NULL) {  		IRDA_ERROR("%s(), can't allocate memory for " -			   "control block!\n", __FUNCTION__); +			   "control block!\n", __func__);  		return -ENOMEM;  	} @@ -393,7 +393,7 @@ static int __init nsc_ircc_open(chipio_t *info)  	ret = request_region(self->io.fir_base, self->io.fir_ext, driver_name);  	if (!ret) {  		IRDA_WARNING("%s(), can't get iobase of 0x%03x\n", -			     __FUNCTION__, self->io.fir_base); +			     __func__, self->io.fir_base);  		err = -ENODEV;  		goto out1;  	} @@ -450,7 +450,7 @@ static int __init nsc_ircc_open(chipio_t *info)  	err = register_netdev(dev);  	if (err) { -		IRDA_ERROR("%s(), register_netdev() failed!\n", __FUNCTION__); +		IRDA_ERROR("%s(), register_netdev() failed!\n", __func__);  		goto out4;  	}  	IRDA_MESSAGE("IrDA: Registered device %s\n", dev->name); @@ -506,7 +506,7 @@ static int __exit nsc_ircc_close(struct nsc_ircc_cb *self)  {  	int iobase; -	IRDA_DEBUG(4, "%s()\n", __FUNCTION__); +	IRDA_DEBUG(4, "%s()\n", __func__);  	IRDA_ASSERT(self != NULL, return -1;); @@ -519,7 +519,7 @@ static int __exit nsc_ircc_close(struct nsc_ircc_cb *self)  	/* Release the PORT that this driver is using */  	IRDA_DEBUG(4, "%s(), Releasing Region %03x\n",  -		   __FUNCTION__, self->io.fir_base); +		   __func__, self->io.fir_base);  	release_region(self->io.fir_base, self->io.fir_ext);  	if (self->tx_buff.head) @@ -557,7 +557,7 @@ static int nsc_ircc_init_108(nsc_chip_t *chip, chipio_t *info)  	case 0x2e8: outb(0x15, cfg_base+1); break;  	case 0x3f8: outb(0x16, cfg_base+1); break;  	case 0x2f8: outb(0x17, cfg_base+1); break; -	default: IRDA_ERROR("%s(), invalid base_address", __FUNCTION__); +	default: IRDA_ERROR("%s(), invalid base_address", __func__);  	}  	/* Control Signal Routing Register (CSRT) */ @@ -569,7 +569,7 @@ static int nsc_ircc_init_108(nsc_chip_t *chip, chipio_t *info)  	case 9:  temp = 0x05; break;  	case 11: temp = 0x06; break;  	case 15: temp = 0x07; break; -	default: IRDA_ERROR("%s(), invalid irq", __FUNCTION__); +	default: IRDA_ERROR("%s(), invalid irq", __func__);  	}  	outb(CFG_108_CSRT, cfg_base); @@ -577,7 +577,7 @@ static int nsc_ircc_init_108(nsc_chip_t *chip, chipio_t *info)  	case 0: outb(0x08+temp, cfg_base+1); break;  	case 1: outb(0x10+temp, cfg_base+1); break;  	case 3: outb(0x18+temp, cfg_base+1); break; -	default: IRDA_ERROR("%s(), invalid dma", __FUNCTION__); +	default: IRDA_ERROR("%s(), invalid dma", __func__);  	}  	outb(CFG_108_MCTL, cfg_base);      /* Mode Control Register (MCTL) */ @@ -616,7 +616,7 @@ static int nsc_ircc_probe_108(nsc_chip_t *chip, chipio_t *info)  		break;  	}  	info->sir_base = info->fir_base; -	IRDA_DEBUG(2, "%s(), probing fir_base=0x%03x\n", __FUNCTION__, +	IRDA_DEBUG(2, "%s(), probing fir_base=0x%03x\n", __func__,  		   info->fir_base);  	/* Read control signals routing register (CSRT) */ @@ -649,7 +649,7 @@ static int nsc_ircc_probe_108(nsc_chip_t *chip, chipio_t *info)  		info->irq = 15;  		break;  	} -	IRDA_DEBUG(2, "%s(), probing irq=%d\n", __FUNCTION__, info->irq); +	IRDA_DEBUG(2, "%s(), probing irq=%d\n", __func__, info->irq);  	/* Currently we only read Rx DMA but it will also be used for Tx */  	switch ((reg >> 3) & 0x03) { @@ -666,7 +666,7 @@ static int nsc_ircc_probe_108(nsc_chip_t *chip, chipio_t *info)  		info->dma = 3;  		break;  	} -	IRDA_DEBUG(2, "%s(), probing dma=%d\n", __FUNCTION__, info->dma); +	IRDA_DEBUG(2, "%s(), probing dma=%d\n", __func__, info->dma);  	/* Read mode control register (MCTL) */  	outb(CFG_108_MCTL, cfg_base); @@ -823,7 +823,7 @@ static int nsc_ircc_init_39x(nsc_chip_t *chip, chipio_t *info)  	/* User is sure about his config... accept it. */  	IRDA_DEBUG(2, "%s(): nsc_ircc_init_39x (user settings): "  		   "io=0x%04x, irq=%d, dma=%d\n",  -		   __FUNCTION__, info->fir_base, info->irq, info->dma); +		   __func__, info->fir_base, info->irq, info->dma);  	/* Access bank for SP2 */  	outb(CFG_39X_LDN, cfg_base); @@ -864,7 +864,7 @@ static int nsc_ircc_probe_39x(nsc_chip_t *chip, chipio_t *info)  	int enabled, susp;  	IRDA_DEBUG(2, "%s(), nsc_ircc_probe_39x, base=%d\n", -		   __FUNCTION__, cfg_base); +		   __func__, cfg_base);  	/* This function should be executed with irq off to avoid  	 * another driver messing with the Super I/O bank - Jean II */ @@ -898,7 +898,7 @@ static int nsc_ircc_probe_39x(nsc_chip_t *chip, chipio_t *info)  	outb(CFG_39X_SPC, cfg_base);  	susp = 1 - ((inb(cfg_base+1) & 0x02) >> 1); -	IRDA_DEBUG(2, "%s(): io=0x%02x%02x, irq=%d (type %d), rxdma=%d, txdma=%d, enabled=%d (suspended=%d)\n", __FUNCTION__, reg1,reg2,irq,irqt,dma1,dma2,enabled,susp); +	IRDA_DEBUG(2, "%s(): io=0x%02x%02x, irq=%d (type %d), rxdma=%d, txdma=%d, enabled=%d (suspended=%d)\n", __func__, reg1,reg2,irq,irqt,dma1,dma2,enabled,susp);  	/* Configure SP2 */ @@ -930,7 +930,10 @@ static int nsc_ircc_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *i  	pnp_info.dma = -1;  	pnp_succeeded = 1; -	/* There don't seem to be any way to get the cfg_base. +	if (id->driver_data & NSC_FORCE_DONGLE_TYPE9) +		dongle_id = 0x9; + +	/* There doesn't seem to be any way of getting the cfg_base.  	 * On my box, cfg_base is in the PnP descriptor of the  	 * motherboard. Oh well... Jean II */ @@ -947,7 +950,7 @@ static int nsc_ircc_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *i  		pnp_info.dma = pnp_dma(dev, 0);  	IRDA_DEBUG(0, "%s() : From PnP, found firbase 0x%03X ; irq %d ; dma %d.\n", -		   __FUNCTION__, pnp_info.fir_base, pnp_info.irq, pnp_info.dma); +		   __func__, pnp_info.fir_base, pnp_info.irq, pnp_info.dma);  	if((pnp_info.fir_base == 0) ||  	   (pnp_info.irq == -1) || (pnp_info.dma == -1)) { @@ -976,7 +979,7 @@ static int nsc_ircc_setup(chipio_t *info)  	version = inb(iobase+MID);  	IRDA_DEBUG(2, "%s() Driver %s Found chip version %02x\n", -		   __FUNCTION__, driver_name, version); +		   __func__, driver_name, version);  	/* Should be 0x2? */  	if (0x20 != (version & 0xf0)) { @@ -1080,30 +1083,30 @@ static void nsc_ircc_init_dongle_interface (int iobase, int dongle_id)  	case 0x00: /* same as */  	case 0x01: /* Differential serial interface */  		IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", -			   __FUNCTION__, dongle_types[dongle_id]);  +			   __func__, dongle_types[dongle_id]);  		break;  	case 0x02: /* same as */  	case 0x03: /* Reserved */  		IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", -			   __FUNCTION__, dongle_types[dongle_id]);  +			   __func__, dongle_types[dongle_id]);  		break;  	case 0x04: /* Sharp RY5HD01 */  		break;  	case 0x05: /* Reserved, but this is what the Thinkpad reports */  		IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", -			   __FUNCTION__, dongle_types[dongle_id]);  +			   __func__, dongle_types[dongle_id]);  		break;  	case 0x06: /* Single-ended serial interface */  		IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", -			   __FUNCTION__, dongle_types[dongle_id]);  +			   __func__, dongle_types[dongle_id]);  		break;  	case 0x07: /* Consumer-IR only */  		IRDA_DEBUG(0, "%s(), %s is not for IrDA mode\n", -			   __FUNCTION__, dongle_types[dongle_id]);  +			   __func__, dongle_types[dongle_id]);  		break;  	case 0x08: /* HP HSDL-2300, HP HSDL-3600/HSDL-3610 */  		IRDA_DEBUG(0, "%s(), %s\n", -			   __FUNCTION__, dongle_types[dongle_id]); +			   __func__, dongle_types[dongle_id]);  		break;  	case 0x09: /* IBM31T1100 or Temic TFDS6000/TFDS6500 */  		outb(0x28, iobase+7); /* Set irsl[0-2] as output */ @@ -1111,7 +1114,7 @@ static void nsc_ircc_init_dongle_interface (int iobase, int dongle_id)  	case 0x0A: /* same as */  	case 0x0B: /* Reserved */  		IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", -			   __FUNCTION__, dongle_types[dongle_id]);  +			   __func__, dongle_types[dongle_id]);  		break;  	case 0x0C: /* same as */  	case 0x0D: /* HP HSDL-1100/HSDL-2100 */ @@ -1126,14 +1129,14 @@ static void nsc_ircc_init_dongle_interface (int iobase, int dongle_id)  		break;  	case 0x0F: /* No dongle connected */  		IRDA_DEBUG(0, "%s(), %s\n", -			   __FUNCTION__, dongle_types[dongle_id]);  +			   __func__, dongle_types[dongle_id]);  		switch_bank(iobase, BANK0);  		outb(0x62, iobase+MCR);  		break;  	default:   		IRDA_DEBUG(0, "%s(), invalid dongle_id %#x",  -			   __FUNCTION__, dongle_id); +			   __func__, dongle_id);  	}  	/* IRCFG1: IRSL1 and 2 are set to IrDA mode */ @@ -1165,30 +1168,30 @@ static void nsc_ircc_change_dongle_speed(int iobase, int speed, int dongle_id)  	case 0x00: /* same as */  	case 0x01: /* Differential serial interface */  		IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", -			   __FUNCTION__, dongle_types[dongle_id]);  +			   __func__, dongle_types[dongle_id]);  		break;  	case 0x02: /* same as */  	case 0x03: /* Reserved */  		IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", -			   __FUNCTION__, dongle_types[dongle_id]);  +			   __func__, dongle_types[dongle_id]);  		break;  	case 0x04: /* Sharp RY5HD01 */  		break;  	case 0x05: /* Reserved */  		IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", -			   __FUNCTION__, dongle_types[dongle_id]);  +			   __func__, dongle_types[dongle_id]);  		break;  	case 0x06: /* Single-ended serial interface */  		IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", -			   __FUNCTION__, dongle_types[dongle_id]);  +			   __func__, dongle_types[dongle_id]);  		break;  	case 0x07: /* Consumer-IR only */  		IRDA_DEBUG(0, "%s(), %s is not for IrDA mode\n", -			   __FUNCTION__, dongle_types[dongle_id]);  +			   __func__, dongle_types[dongle_id]);  		break;  	case 0x08: /* HP HSDL-2300, HP HSDL-3600/HSDL-3610 */  		IRDA_DEBUG(0, "%s(), %s\n",  -			   __FUNCTION__, dongle_types[dongle_id]);  +			   __func__, dongle_types[dongle_id]);  		outb(0x00, iobase+4);  		if (speed > 115200)  			outb(0x01, iobase+4); @@ -1207,7 +1210,7 @@ static void nsc_ircc_change_dongle_speed(int iobase, int speed, int dongle_id)  	case 0x0A: /* same as */  	case 0x0B: /* Reserved */  		IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", -			   __FUNCTION__, dongle_types[dongle_id]);  +			   __func__, dongle_types[dongle_id]);  		break;  	case 0x0C: /* same as */  	case 0x0D: /* HP HSDL-1100/HSDL-2100 */ @@ -1216,13 +1219,13 @@ static void nsc_ircc_change_dongle_speed(int iobase, int speed, int dongle_id)  		break;  	case 0x0F: /* No dongle connected */  		IRDA_DEBUG(0, "%s(), %s is not for IrDA mode\n", -			   __FUNCTION__, dongle_types[dongle_id]); +			   __func__, dongle_types[dongle_id]);  		switch_bank(iobase, BANK0);   		outb(0x62, iobase+MCR);  		break;  	default:  -		IRDA_DEBUG(0, "%s(), invalid data_rate\n", __FUNCTION__); +		IRDA_DEBUG(0, "%s(), invalid data_rate\n", __func__);  	}  	/* Restore bank register */  	outb(bank, iobase+BSR); @@ -1243,7 +1246,7 @@ static __u8 nsc_ircc_change_speed(struct nsc_ircc_cb *self, __u32 speed)  	__u8 bank;  	__u8 ier;                  /* Interrupt enable register */ -	IRDA_DEBUG(2, "%s(), speed=%d\n", __FUNCTION__, speed); +	IRDA_DEBUG(2, "%s(), speed=%d\n", __func__, speed);  	IRDA_ASSERT(self != NULL, return 0;); @@ -1276,20 +1279,20 @@ static __u8 nsc_ircc_change_speed(struct nsc_ircc_cb *self, __u32 speed)  		outb(inb(iobase+4) | 0x04, iobase+4);  		mcr = MCR_MIR; -		IRDA_DEBUG(0, "%s(), handling baud of 576000\n", __FUNCTION__); +		IRDA_DEBUG(0, "%s(), handling baud of 576000\n", __func__);  		break;  	case 1152000:  		mcr = MCR_MIR; -		IRDA_DEBUG(0, "%s(), handling baud of 1152000\n", __FUNCTION__); +		IRDA_DEBUG(0, "%s(), handling baud of 1152000\n", __func__);  		break;  	case 4000000:  		mcr = MCR_FIR; -		IRDA_DEBUG(0, "%s(), handling baud of 4000000\n", __FUNCTION__); +		IRDA_DEBUG(0, "%s(), handling baud of 4000000\n", __func__);  		break;  	default:  		mcr = MCR_FIR;  		IRDA_DEBUG(0, "%s(), unknown baud rate of %d\n",  -			   __FUNCTION__, speed); +			   __func__, speed);  		break;  	} @@ -1594,7 +1597,7 @@ static int nsc_ircc_pio_write(int iobase, __u8 *buf, int len, int fifo_size)  	int actual = 0;  	__u8 bank; -	IRDA_DEBUG(4, "%s()\n", __FUNCTION__); +	IRDA_DEBUG(4, "%s()\n", __func__);  	/* Save current bank */  	bank = inb(iobase+BSR); @@ -1602,7 +1605,7 @@ static int nsc_ircc_pio_write(int iobase, __u8 *buf, int len, int fifo_size)  	switch_bank(iobase, BANK0);  	if (!(inb_p(iobase+LSR) & LSR_TXEMP)) {  		IRDA_DEBUG(4, "%s(), warning, FIFO not empty yet!\n", -			   __FUNCTION__); +			   __func__);  		/* FIFO may still be filled to the Tx interrupt threshold */  		fifo_size -= 17; @@ -1615,7 +1618,7 @@ static int nsc_ircc_pio_write(int iobase, __u8 *buf, int len, int fifo_size)  	}  	IRDA_DEBUG(4, "%s(), fifo_size %d ; %d sent of %d\n",  -		   __FUNCTION__, fifo_size, actual, len); +		   __func__, fifo_size, actual, len);  	/* Restore bank */  	outb(bank, iobase+BSR); @@ -1636,7 +1639,7 @@ static int nsc_ircc_dma_xmit_complete(struct nsc_ircc_cb *self)  	__u8 bank;  	int ret = TRUE; -	IRDA_DEBUG(2, "%s()\n", __FUNCTION__); +	IRDA_DEBUG(2, "%s()\n", __func__);  	iobase = self->io.fir_base; @@ -1767,7 +1770,7 @@ static int nsc_ircc_dma_receive_complete(struct nsc_ircc_cb *self, int iobase)  		len = inb(iobase+RFLFL) | ((inb(iobase+RFLFH) & 0x1f) << 8);  		if (st_fifo->tail >= MAX_RX_WINDOW) { -			IRDA_DEBUG(0, "%s(), window is full!\n", __FUNCTION__); +			IRDA_DEBUG(0, "%s(), window is full!\n", __func__);  			continue;  		} @@ -1859,7 +1862,7 @@ static int nsc_ircc_dma_receive_complete(struct nsc_ircc_cb *self, int iobase)  			if (skb == NULL)  {  				IRDA_WARNING("%s(), memory squeeze, "  					     "dropping frame.\n", -					     __FUNCTION__); +					     __func__);  				self->stats.rx_dropped++;  				/* Restore bank register */ @@ -1965,7 +1968,7 @@ static void nsc_ircc_sir_interrupt(struct nsc_ircc_cb *self, int eir)  		 * Need to be after self->io.direction to avoid race with  		 * nsc_ircc_hard_xmit_sir() - Jean II */  		if (self->new_speed) { -			IRDA_DEBUG(2, "%s(), Changing speed!\n", __FUNCTION__); +			IRDA_DEBUG(2, "%s(), Changing speed!\n", __func__);  			self->ier = nsc_ircc_change_speed(self,  							  self->new_speed);  			self->new_speed = 0; @@ -2051,7 +2054,7 @@ static void nsc_ircc_fir_interrupt(struct nsc_ircc_cb *self, int iobase,  				} else  					IRDA_WARNING("%s(), potential "  						     "Tx queue lockup !\n", -						     __FUNCTION__); +						     __func__);  			}  		} else {  			/*  Not finished yet, so interrupt on DMA again */ @@ -2160,7 +2163,7 @@ static int nsc_ircc_net_open(struct net_device *dev)  	char hwname[32];  	__u8 bank; -	IRDA_DEBUG(4, "%s()\n", __FUNCTION__); +	IRDA_DEBUG(4, "%s()\n", __func__);  	IRDA_ASSERT(dev != NULL, return -1;);  	self = (struct nsc_ircc_cb *) dev->priv; @@ -2222,7 +2225,7 @@ static int nsc_ircc_net_close(struct net_device *dev)  	int iobase;  	__u8 bank; -	IRDA_DEBUG(4, "%s()\n", __FUNCTION__); +	IRDA_DEBUG(4, "%s()\n", __func__);  	IRDA_ASSERT(dev != NULL, return -1;); @@ -2276,7 +2279,7 @@ static int nsc_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)  	IRDA_ASSERT(self != NULL, return -1;); -	IRDA_DEBUG(2, "%s(), %s, (cmd=0x%X)\n", __FUNCTION__, dev->name, cmd); +	IRDA_DEBUG(2, "%s(), %s, (cmd=0x%X)\n", __func__, dev->name, cmd);  	switch (cmd) {  	case SIOCSBANDWIDTH: /* Set bandwidth */  |