Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98b77773 authored by Dmitry Torokhov's avatar Dmitry Torokhov Committed by Linus Torvalds
Browse files

[PATCH] smsc-ircc2: formatting fixes



IRDA: smsc-ircc2 - some formatting changes for better readability.

Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
Cc: Jean Tourrilhes <jt@hpl.hp.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 527b6af4
Loading
Loading
Loading
Loading
+317 −326
Original line number Diff line number Diff line
@@ -68,6 +68,36 @@
#include "smsc-ircc2.h"
#include "smsc-sio.h"


MODULE_AUTHOR("Daniele Peri <peri@csai.unipa.it>");
MODULE_DESCRIPTION("SMC IrCC SIR/FIR controller driver");
MODULE_LICENSE("GPL");


static int ircc_dma = 255;
module_param(ircc_dma, int, 0);
MODULE_PARM_DESC(ircc_dma, "DMA channel");

static int ircc_irq = 255;
module_param(ircc_irq, int, 0);
MODULE_PARM_DESC(ircc_irq, "IRQ line");

static int ircc_fir;
module_param(ircc_fir, int, 0);
MODULE_PARM_DESC(ircc_fir, "FIR Base Address");

static int ircc_sir;
module_param(ircc_sir, int, 0);
MODULE_PARM_DESC(ircc_sir, "SIR Base Address");

static int ircc_cfg;
module_param(ircc_cfg, int, 0);
MODULE_PARM_DESC(ircc_cfg, "Configuration register base address");

static int ircc_transceiver;
module_param(ircc_transceiver, int, 0);
MODULE_PARM_DESC(ircc_transceiver, "Transceiver type");

/* Types */

struct smsc_transceiver {
@@ -294,15 +324,7 @@ static smsc_chip_address_t __initdata possible_addresses[]=
/* Globals */

static struct smsc_ircc_cb *dev_self[] = { NULL, NULL };

static int ircc_irq=255;
static int ircc_dma=255;
static int ircc_fir=0;
static int ircc_sir=0;
static int ircc_cfg=0;
static int ircc_transceiver=0;

static unsigned short	dev_count=0;
static unsigned short dev_count;

static inline void register_bank(int iobase, int bank)
{
@@ -333,7 +355,7 @@ static int __init smsc_ircc_init(void)

	dev_count = 0;

	if ((ircc_fir>0)&&(ircc_sir>0)) {
	if (ircc_fir > 0 && ircc_sir > 0) {
		IRDA_MESSAGE(" Overriding FIR address 0x%04x\n", ircc_fir);
		IRDA_MESSAGE(" Overriding SIR address 0x%04x\n", ircc_sir);

@@ -353,7 +375,8 @@ static int __init smsc_ircc_init(void)
			ret = 0;
	}

	if(smsc_ircc_look_for_chips()>0) ret = 0;
	if (smsc_ircc_look_for_chips() > 0)
		ret = 0;

	return ret;
}
@@ -444,9 +467,7 @@ static int __init smsc_ircc_open(unsigned int fir_base, unsigned int sir_base, u
	self->rx_buff.data = self->rx_buff.head;

	smsc_ircc_setup_io(self, fir_base, sir_base, dma, irq);

	smsc_ircc_setup_qos(self);

	smsc_ircc_init_chip(self);

	if (ircc_transceiver > 0  &&
@@ -469,6 +490,7 @@ static int __init smsc_ircc_open(unsigned int fir_base, unsigned int sir_base, u
	IRDA_MESSAGE("IrDA: Registered device %s\n", dev->name);

	return 0;

 err_out4:
	dma_free_coherent(NULL, self->tx_buff.truesize,
			  self->tx_buff.head, self->tx_buff_dma);
@@ -529,6 +551,7 @@ static int smsc_ircc_present(unsigned int fir_base, unsigned int sir_base)
		     chip & 0x0f, version, fir_base, sir_base, dma, irq);

	return 0;

 out3:
	release_region(sir_base, SMSC_IRCC2_SIR_CHIP_IO_EXTENT);
 out2:
@@ -566,8 +589,7 @@ static void smsc_ircc_setup_io(struct smsc_ircc_cb *self,
			IRDA_MESSAGE("%s, Overriding IRQ - chip says %d, using %d\n",
				     driver_name, chip_irq, irq);
		self->io.irq = irq;
	}
	else
	} else
		self->io.irq = chip_irq;

	if (dma < 255) {
@@ -575,8 +597,7 @@ static void smsc_ircc_setup_io(struct smsc_ircc_cb *self,
			IRDA_MESSAGE("%s, Overriding DMA - chip says %d, using %d\n",
				     driver_name, chip_dma, dma);
		self->io.dma = dma;
	}
	else
	} else
		self->io.dma = chip_dma;

}
@@ -611,8 +632,8 @@ static void smsc_ircc_init_chip(struct smsc_ircc_cb *self)
	int iobase, ir_mode, ctrl, fast;

	IRDA_ASSERT(self != NULL, return;);
	iobase = self->io.fir_base;

	iobase = self->io.fir_base;
	ir_mode = IRCC_CFGA_IRDA_SIR_A;
	ctrl = 0;
	fast = 0;
@@ -770,7 +791,7 @@ int smsc_ircc_hard_xmit_sir(struct sk_buff *skb, struct net_device *dev)

	/* Check if we need to change the speed */
	speed = irda_get_next_speed(skb);
	if ((speed != self->io.speed) && (speed != -1)) {
	if (speed != self->io.speed && speed != -1) {
		/* Check for empty frame */
		if (!skb->len) {
			/*
@@ -787,9 +808,8 @@ int smsc_ircc_hard_xmit_sir(struct sk_buff *skb, struct net_device *dev)
			spin_unlock_irqrestore(&self->lock, flags);
			dev_kfree_skb(skb);
			return 0;
		} else {
			self->new_speed = speed;
		}
		self->new_speed = speed;
	}

	/* Init tx buffer */
@@ -971,7 +991,8 @@ static void smsc_ircc_change_speed(void *priv, u32 speed)
	if (!last_speed_was_sir) speed = self->io.speed;
	#endif

	if(self->io.speed != speed) smsc_ircc_set_transceiver_for_speed(self, speed);
	if (self->io.speed != speed)
		smsc_ircc_set_transceiver_for_speed(self, speed);

	self->io.speed = speed;

@@ -981,8 +1002,7 @@ static void smsc_ircc_change_speed(void *priv, u32 speed)
			smsc_ircc_sir_start(self);
		}
		smsc_ircc_set_sir_speed(self, speed);
	}
	else {
	} else {
		if (last_speed_was_sir) {
			#if SMSC_IRCC2_C_SIR_STOP
			smsc_ircc_sir_stop(self);
@@ -1038,10 +1058,8 @@ void smsc_ircc_set_sir_speed(void *priv, __u32 speed)
	 * almost 1,7 ms at 19200 bps. At speeds above that we can just forget
	 * about this timeout since it will always be fast enough.
	 */
	if (self->io.speed < 38400)
		fcr |= UART_FCR_TRIGGER_1;
	else
		fcr |= UART_FCR_TRIGGER_14;
	fcr |= self->io.speed < 38400 ?
		UART_FCR_TRIGGER_1 : UART_FCR_TRIGGER_14;

	/* IrDA ports use 8N1 */
	lcr = UART_LCR_WLEN8;
@@ -1086,7 +1104,7 @@ static int smsc_ircc_hard_xmit_fir(struct sk_buff *skb, struct net_device *dev)

	/* Check if we need to change the speed after this frame */
	speed = irda_get_next_speed(skb);
	if ((speed != self->io.speed) && (speed != -1)) {
	if (speed != self->io.speed && speed != -1) {
		/* Check for empty frame */
		if (!skb->len) {
			/* Note : you should make sure that speed changes
@@ -1096,7 +1114,8 @@ static int smsc_ircc_hard_xmit_fir(struct sk_buff *skb, struct net_device *dev)
			spin_unlock_irqrestore(&self->lock, flags);
			dev_kfree_skb(skb);
			return 0;
		} else
		}

		self->new_speed = speed;
	}

@@ -1122,6 +1141,7 @@ static int smsc_ircc_hard_xmit_fir(struct sk_buff *skb, struct net_device *dev)
		/* Transmit frame */
		smsc_ircc_dma_xmit(self, iobase, 0);
	}

	spin_unlock_irqrestore(&self->lock, flags);
	dev_kfree_skb(skb);

@@ -1271,7 +1291,6 @@ static int smsc_ircc_dma_receive(struct smsc_ircc_cb *self, int iobase)
	outb(IRCC_IER_ACTIVE_FRAME | IRCC_IER_EOM, iobase + IRCC_IER);
	outb(IRCC_MASTER_INT_EN, iobase + IRCC_MASTER);


	/* Enable receiver */
	register_bank(iobase, 0);
	outb(IRCC_LCR_B_SCE_RECEIVE | IRCC_LCR_B_SIP_ENABLE,
@@ -1309,24 +1328,24 @@ static void smsc_ircc_dma_receive_complete(struct smsc_ircc_cb *self, int iobase

	len = self->rx_buff.truesize - get_dma_residue(self->io.dma);

	/* Look for errors
	 */

	/* Look for errors */
	if (lsr & (IRCC_LSR_FRAME_ERROR | IRCC_LSR_CRC_ERROR | IRCC_LSR_SIZE_ERROR)) {
		self->stats.rx_errors++;
		if(lsr & IRCC_LSR_FRAME_ERROR) self->stats.rx_frame_errors++;
		if(lsr & IRCC_LSR_CRC_ERROR) self->stats.rx_crc_errors++;
		if(lsr & IRCC_LSR_SIZE_ERROR) self->stats.rx_length_errors++;
		if(lsr & (IRCC_LSR_UNDERRUN | IRCC_LSR_OVERRUN)) self->stats.rx_length_errors++;
		if (lsr & IRCC_LSR_FRAME_ERROR)
			self->stats.rx_frame_errors++;
		if (lsr & IRCC_LSR_CRC_ERROR)
			self->stats.rx_crc_errors++;
		if (lsr & IRCC_LSR_SIZE_ERROR)
			self->stats.rx_length_errors++;
		if (lsr & (IRCC_LSR_UNDERRUN | IRCC_LSR_OVERRUN))
			self->stats.rx_length_errors++;
		return;
	}

	/* Remove CRC */
	if (self->io.speed < 4000000)
		len -= 2;
	else
		len -= 4;
	len -= self->io.speed < 4000000 ? 2 : 4;

	if ((len < 2) || (len > 2050)) {
	if (len < 2 || len > 2050) {
		IRDA_WARNING("%s(), bogus len=%d\n", __FUNCTION__, len);
		return;
	}
@@ -1624,9 +1643,7 @@ static int smsc_ircc_net_close(struct net_device *dev)
	self->irlap = NULL;

	free_irq(self->io.irq, dev);

	disable_dma(self->io.dma);

	free_dma(self->io.dma);

	return 0;
@@ -1637,13 +1654,11 @@ static void smsc_ircc_suspend(struct smsc_ircc_cb *self)
{
	IRDA_MESSAGE("%s, Suspending\n", driver_name);

	if (self->io.suspended)
		return;

	if (!self->io.suspended) {
		smsc_ircc_net_close(self->netdev);

		self->io.suspended = 1;
	}
}

static void smsc_ircc_wakeup(struct smsc_ircc_cb *self)
{
@@ -1862,10 +1877,8 @@ static void smsc_ircc_sir_write_wakeup(struct smsc_ircc_cb *self)
			 * is discarded. This is needed for half duplex operation
			 */
			fcr = UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR;
		if (self->io.speed < 38400)
			fcr |= UART_FCR_TRIGGER_1;
		else
			fcr |= UART_FCR_TRIGGER_14;
			fcr |= self->io.speed < 38400 ?
					UART_FCR_TRIGGER_1 : UART_FCR_TRIGGER_14;

			outb(fcr, iobase + UART_FCR);

@@ -1892,7 +1905,7 @@ static int smsc_ircc_sir_write(int iobase, int fifo_size, __u8 *buf, int len)
	}

	/* Fill FIFO with current frame */
	while ((fifo_size-- > 0) && (actual < len)) {
	while (fifo_size-- > 0 && actual < len) {
		/* Transmit next byte */
		outb(buf[actual], iobase + UART_TX);
		actual++;
@@ -1925,12 +1938,13 @@ static void smsc_ircc_probe_transceiver(struct smsc_ircc_cb *self)
	IRDA_ASSERT(self != NULL, return;);

	for (i = 0; smsc_transceivers[i].name != NULL; i++)
		if((*smsc_transceivers[i].probe)(self->io.fir_base)) {
		if (smsc_transceivers[i].probe(self->io.fir_base)) {
			IRDA_MESSAGE(" %s transceiver found\n",
				     smsc_transceivers[i].name);
			self->transceiver= i + 1;
			return;
		}

	IRDA_MESSAGE("No transceiver found. Defaulting to %s\n",
		     smsc_transceivers[SMSC_IRCC2_C_DEFAULT_TRANSCEIVER].name);

@@ -1949,7 +1963,8 @@ static void smsc_ircc_set_transceiver_for_speed(struct smsc_ircc_cb *self, u32 s
	unsigned int trx;

	trx = self->transceiver;
	if(trx>0) (*smsc_transceivers[trx-1].set_for_speed)(self->io.fir_base, speed);
	if (trx > 0)
		smsc_transceivers[trx - 1].set_for_speed(self->io.fir_base, speed);
}

/*
@@ -1977,13 +1992,11 @@ static void smsc_ircc_set_transceiver_for_speed(struct smsc_ircc_cb *self, u32 s

static void smsc_ircc_sir_wait_hw_transmitter_finish(struct smsc_ircc_cb *self)
{
	int iobase;
	int iobase = self->io.sir_base;
	int count = SMSC_IRCC2_HW_TRANSMITTER_TIMEOUT_US;

	iobase = self->io.sir_base;

	/* Calibrated busy loop */
	while((count-- > 0) && !(inb(iobase+UART_LSR) & UART_LSR_TEMT))
	while (count-- > 0 && !(inb(iobase + UART_LSR) & UART_LSR_TEMT))
		udelay(1);

	if (count == 0)
@@ -2012,21 +2025,23 @@ static int __init smsc_ircc_look_for_chips(void)

		if (address->type & SMSCSIO_TYPE_FDC) {
			type = "FDC";
			if((address->type) & SMSCSIO_TYPE_FLAT) {
				if(!smsc_superio_flat(fdc_chips_flat,cfg_base, type)) found++;
			}
			if((address->type) & SMSCSIO_TYPE_PAGED) {
				if(!smsc_superio_paged(fdc_chips_paged,cfg_base, type)) found++;
			}
			if (address->type & SMSCSIO_TYPE_FLAT)
				if (!smsc_superio_flat(fdc_chips_flat, cfg_base, type))
					found++;

			if (address->type & SMSCSIO_TYPE_PAGED)
				if (!smsc_superio_paged(fdc_chips_paged, cfg_base, type))
					found++;
		}
		if (address->type & SMSCSIO_TYPE_LPC) {
			type = "LPC";
			if((address->type) & SMSCSIO_TYPE_FLAT) {
				if(!smsc_superio_flat(lpc_chips_flat,cfg_base,type)) found++;
			}
			if((address->type) & SMSCSIO_TYPE_PAGED) {
				if(!smsc_superio_paged(lpc_chips_paged,cfg_base,"LPC")) found++;
			}
			if (address->type & SMSCSIO_TYPE_FLAT)
				if (!smsc_superio_flat(lpc_chips_flat, cfg_base, type))
					found++;

			if (address->type & SMSCSIO_TYPE_PAGED)
				if (!smsc_superio_paged(lpc_chips_paged, cfg_base, type))
					found++;
		}
		address++;
	}
@@ -2075,10 +2090,8 @@ static int __init smsc_superio_flat(const smsc_chip_t *chips, unsigned short cfg

	IRDA_MESSAGE("%s(): fir: 0x%02x, sir: 0x%02x, dma: %02d, irq: %d, mode: 0x%02x\n", __FUNCTION__, firbase, sirbase, dma, irq, mode);

	if (firbase) {
		if (smsc_ircc_open(firbase, sirbase, dma, irq) == 0)
	if (firbase && smsc_ircc_open(firbase, sirbase, dma, irq) == 0)
		ret = 0;
	}

	/* Exit configuration */
	outb(SMSCSIO_CFGEXITKEY, cfgbase);
@@ -2119,10 +2132,8 @@ static int __init smsc_superio_paged(const smsc_chip_t *chips, unsigned short cf
	fir_io |= inb(cfg_base + 1);
	outb(0x2b, cfg_base); /* ??? */

	if (fir_io) {
		if (smsc_ircc_open(fir_io, sir_io, ircc_dma, ircc_irq) == 0)
	if (fir_io && smsc_ircc_open(fir_io, sir_io, ircc_dma, ircc_irq) == 0)
		ret = 0;
	}

	/* Exit configuration */
	outb(SMSCSIO_CFGEXITKEY, cfg_base);
@@ -2136,11 +2147,7 @@ static int __init smsc_access(unsigned short cfg_base,unsigned char reg)
	IRDA_DEBUG(1, "%s\n", __FUNCTION__);

	outb(reg, cfg_base);

	if (inb(cfg_base)!=reg)
		return -1;

	return 0;
	return inb(cfg_base) != reg ? -1 : 0;
}

static const smsc_chip_t * __init smsc_ircc_probe(unsigned short cfg_base, u8 reg, const smsc_chip_t *chip, char *type)
@@ -2176,10 +2183,7 @@ static const smsc_chip_t * __init smsc_ircc_probe(unsigned short cfg_base,u8 reg

	devid = inb(cfg_base + 1);

	if (devid==0)			/* typical value for unused port */
		return NULL;

	if (devid==0xff)		/* typical value for unused port */
	if (devid == 0 || devid == 0xff)	/* typical values for unused port */
		return NULL;

	/* probe revision ID */
@@ -2205,7 +2209,8 @@ static const smsc_chip_t * __init smsc_ircc_probe(unsigned short cfg_base,u8 reg
			return NULL;
	}

	IRDA_MESSAGE("found SMC SuperIO Chip (devid=0x%02x rev=%02X base=0x%04x): %s%s\n",devid,rev,cfg_base,type,chip->name);
	IRDA_MESSAGE("found SMC SuperIO Chip (devid=0x%02x rev=%02X base=0x%04x): %s%s\n",
		     devid, rev, cfg_base, type, chip->name);

	if (chip->rev > rev) {
		IRDA_MESSAGE("Revision higher than expected\n");
@@ -2226,8 +2231,8 @@ static int __init smsc_superio_fdc(unsigned short cfg_base)
		IRDA_WARNING("%s: can't get cfg_base of 0x%03x\n",
			     __FUNCTION__, cfg_base);
	} else {
		if (!smsc_superio_flat(fdc_chips_flat,cfg_base,"FDC")
		    ||!smsc_superio_paged(fdc_chips_paged,cfg_base,"FDC"))
		if (!smsc_superio_flat(fdc_chips_flat, cfg_base, "FDC") ||
		    !smsc_superio_paged(fdc_chips_paged, cfg_base, "FDC"))
			ret =  0;

		release_region(cfg_base, 2);
@@ -2244,9 +2249,10 @@ static int __init smsc_superio_lpc(unsigned short cfg_base)
		IRDA_WARNING("%s: can't get cfg_base of 0x%03x\n",
			     __FUNCTION__, cfg_base);
	} else {
		if (!smsc_superio_flat(lpc_chips_flat,cfg_base,"LPC")
		    ||!smsc_superio_paged(lpc_chips_paged,cfg_base,"LPC"))
		if (!smsc_superio_flat(lpc_chips_flat, cfg_base, "LPC") ||
		    !smsc_superio_paged(lpc_chips_paged, cfg_base, "LPC"))
			ret = 0;

		release_region(cfg_base, 2);
	}
	return ret;
@@ -2276,8 +2282,13 @@ static void smsc_ircc_set_transceiver_smsc_ircc_atc(int fir_base, u32 speed)

	/* ATC */
	register_bank(fir_base, 4);
	outb((inb(fir_base+IRCC_ATC) & IRCC_ATC_MASK) |IRCC_ATC_nPROGREADY|IRCC_ATC_ENABLE, fir_base+IRCC_ATC);
	while((val=(inb(fir_base+IRCC_ATC) & IRCC_ATC_nPROGREADY)) && !time_after(jiffies, jiffies_timeout));
	outb((inb(fir_base + IRCC_ATC) & IRCC_ATC_MASK) | IRCC_ATC_nPROGREADY|IRCC_ATC_ENABLE,
	     fir_base + IRCC_ATC);

	while ((val = (inb(fir_base + IRCC_ATC) & IRCC_ATC_nPROGREADY)) &&
		!time_after(jiffies, jiffies_timeout))
		/* empty */;

	if (val)
		IRDA_WARNING("%s(): ATC: 0x%02x\n", __FUNCTION__,
			     inb(fir_base + IRCC_ATC));
@@ -2306,8 +2317,7 @@ static void smsc_ircc_set_transceiver_smsc_ircc_fast_pin_select(int fir_base, u3
{
	u8 fast_mode;

	switch(speed)
	{
	switch (speed) {
	default:
	case 576000 :
		fast_mode = 0;
@@ -2316,7 +2326,6 @@ static void smsc_ircc_set_transceiver_smsc_ircc_fast_pin_select(int fir_base, u3
	case 4000000 :
		fast_mode = IRCC_LCR_A_FAST;
		break;

	}
	register_bank(fir_base, 0);
	outb((inb(fir_base + IRCC_LCR_A) & 0xbf) | fast_mode, fir_base + IRCC_LCR_A);
@@ -2345,8 +2354,7 @@ static void smsc_ircc_set_transceiver_toshiba_sat1800(int fir_base, u32 speed)
{
	u8 fast_mode;

	switch(speed)
	{
	switch (speed) {
	default:
	case 576000 :
		fast_mode = 0;
@@ -2377,20 +2385,3 @@ static int smsc_ircc_probe_transceiver_toshiba_sat1800(int fir_base)

module_init(smsc_ircc_init);
module_exit(smsc_ircc_cleanup);

MODULE_AUTHOR("Daniele Peri <peri@csai.unipa.it>");
MODULE_DESCRIPTION("SMC IrCC SIR/FIR controller driver");
MODULE_LICENSE("GPL");

module_param(ircc_dma, int, 0);
MODULE_PARM_DESC(ircc_dma, "DMA channel");
module_param(ircc_irq, int, 0);
MODULE_PARM_DESC(ircc_irq, "IRQ line");
module_param(ircc_fir, int, 0);
MODULE_PARM_DESC(ircc_fir, "FIR Base Address");
module_param(ircc_sir, int, 0);
MODULE_PARM_DESC(ircc_sir, "SIR Base Address");
module_param(ircc_cfg, int, 0);
MODULE_PARM_DESC(ircc_cfg, "Configuration register base address");
module_param(ircc_transceiver, int, 0);
MODULE_PARM_DESC(ircc_transceiver, "Transceiver type");