Re: [PATCH] Omnikey Cardman 4040 driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday 05 September 2005 21:54, Harald Welte wrote:
> Hi!
> 
> I've now incorporated all the suggested changes (thanks once again on
> the many comments received).  The resulting driver has been tested and
> works fine.
> 
> Please consider applying the driver to the mainline tree, thanks.
> 
What did you diff this against?  When I applied it to the 2.6.13 source I got :

patching file MAINTAINERS
Hunk #1 succeeded at 1730 (offset -7 lines).
patching file drivers/char/pcmcia/Kconfig
patching file drivers/char/pcmcia/Makefile
patching file drivers/char/pcmcia/cm4040_cs.c
patching file drivers/char/pcmcia/cm4040_cs.h

Anyway, I did a small cleanup.
 Removed all instances of trailing whitespace ( sed -r s/"[ \t]+$"/""/ ).
 Removed some excessive (IMHO) use of blank lines.
 A few CodingStyle related whitespace fixes (spaces after "," etc).
 Removed some pointless casts.

Hope this is useful to you (applies on top of the version you just posted).


/Jesper Juhl


--- drivers/char/pcmcia/cm4040_cs.c.orig	2005-09-05 21:39:05.000000000 +0200
+++ drivers/char/pcmcia/cm4040_cs.c	2005-09-05 22:01:19.000000000 +0200
@@ -1,4 +1,4 @@
- /*
+/*
  * A driver for the Omnikey PCMCIA smartcard reader CardMan 4040
  *
  * (c) 2000-2004 Omnikey AG (http://www.omnikey.com/)
@@ -68,28 +68,25 @@ static char *version =
 static void reader_release(dev_link_t *link);
 static void reader_detach(dev_link_t *link);
 
-static int major;	
+static int major;
 
 #define		BS_READABLE	0x01
 #define		BS_WRITABLE	0x02
 
 struct reader_dev {
-	dev_link_t		link;		
-	dev_node_t		node;		
-	wait_queue_head_t	devq;	
-
+	dev_link_t		link;
+	dev_node_t		node;
+	wait_queue_head_t	devq;
 	wait_queue_head_t	poll_wait;
 	wait_queue_head_t	read_wait;
 	wait_queue_head_t	write_wait;
-
 	unsigned int 	  	buffer_status;
-
 	unsigned int      	timer_expired;
 	struct timer_list	timer;
 	unsigned long     	timeout;
 	unsigned char     	s_buf[READ_WRITE_BUFFER_SIZE];
 	unsigned char     	r_buf[READ_WRITE_BUFFER_SIZE];
-	struct task_struct 	*owner;	
+	struct task_struct 	*owner;
 };
 
 static dev_info_t dev_info = MODULE_NAME;
@@ -104,7 +101,7 @@ static struct timer_list cm4040_poll_tim
 static inline void xoutb(unsigned char val, unsigned short port)
 {
 	DEBUG(7, "outb(val=%.2x,port=%.4x)\n", val, port);
-	outb(val,port);
+	outb(val, port);
 }
 
 static inline unsigned char xinb(unsigned short port)
@@ -122,7 +119,7 @@ static inline unsigned char xinb(unsigne
 static void cm4040_do_poll(unsigned long dummy)
 {
 	unsigned int i;
-	/* walk through all devices */	
+	/* walk through all devices */
 	for (i = 0; dev_table[i]; i++) {
 		dev_link_t *dl = dev_table[i];
 		struct reader_dev *dev = dl->priv;
@@ -156,7 +153,7 @@ static int wait_for_bulk_out_ready(struc
 	int i, rc;
 	int iobase = dev->link.io.BasePort1;
 
-	for (i=0; i < POLL_LOOP_COUNT; i++) {
+	for (i = 0; i < POLL_LOOP_COUNT; i++) {
 		if ((xinb(iobase + REG_OFFSET_BUFFER_STATUS)
 		    & BSR_BULK_OUT_FULL) == 0) {
 			DEBUG(4, "BulkOut empty (i=%d)\n", i);
@@ -191,7 +188,7 @@ static int write_sync_reg(unsigned char 
 	if (rc <= 0)
 		return rc;
 
-	xoutb(val,iobase + REG_OFFSET_SYNC_CONTROL);
+	xoutb(val, iobase + REG_OFFSET_SYNC_CONTROL);
 	rc = wait_for_bulk_out_ready(dev);
 	if (rc <= 0)
 		return rc;
@@ -204,7 +201,7 @@ static int wait_for_bulk_in_ready(struct
 	int i, rc;
 	int iobase = dev->link.io.BasePort1;
 
-	for (i=0; i < POLL_LOOP_COUNT; i++) {
+	for (i = 0; i < POLL_LOOP_COUNT; i++) {
 		if ((xinb(iobase + REG_OFFSET_BUFFER_STATUS)
 		    & BSR_BULK_IN_FULL) == BSR_BULK_IN_FULL) {
 			DEBUG(3, "BulkIn full (i=%d)\n", i);
@@ -215,7 +212,7 @@ static int wait_for_bulk_in_ready(struct
 	DEBUG(4, "wait_event_interruptible_timeout(timeout=%ld\n",
 		dev->timeout);
 	rc = wait_event_interruptible_timeout(dev->read_wait,
-					      test_and_clear_bit(BS_READABLE, 
+					      test_and_clear_bit(BS_READABLE,
 						 	&dev->buffer_status),
 					      dev->timeout);
 	if (rc > 0)
@@ -231,7 +228,7 @@ static int wait_for_bulk_in_ready(struct
 static ssize_t cm4040_read(struct file *filp, char __user *buf,
 			size_t count, loff_t *ppos)
 {
-	struct reader_dev *dev = (struct reader_dev *) filp->private_data;
+	struct reader_dev *dev = filp->private_data;
 	int iobase = dev->link.io.BasePort1;
 	unsigned long bytes_to_read;
 	unsigned long i;
@@ -239,7 +236,7 @@ static ssize_t cm4040_read(struct file *
 	int rc;
 	unsigned char uc;
 
-	DEBUG(2, "-> cm4040_read(%s,%d)\n", current->comm,current->pid);
+	DEBUG(2, "-> cm4040_read(%s,%d)\n", current->comm, current->pid);
 
 	if (count == 0)
 		return 0;
@@ -247,17 +244,17 @@ static ssize_t cm4040_read(struct file *
 	if (count < 10)
 		return -EFAULT;
 
-	if (filp->f_flags & O_NONBLOCK) { 
+	if (filp->f_flags & O_NONBLOCK) {
 		DEBUG(4, "filep->f_flags O_NONBLOCK set\n");
 		DEBUG(2, "<- cm4040_read (failure)\n");
 		return -EAGAIN;
 	}
 
-	if ((dev->link.state & DEV_PRESENT)==0)	
+	if ((dev->link.state & DEV_PRESENT)==0)
 		return -ENODEV;
 
 	schedule_timeout(1*HZ);
-	for (i=0; i<5; i++) {
+	for (i = 0; i < 5; i++) {
 		rc = wait_for_bulk_in_ready(dev);
 		if (rc <= 0) {
 			DEBUG(5,"wait_for_bulk_in_ready rc=%.2x\n",rc);
@@ -284,7 +281,7 @@ static ssize_t cm4040_read(struct file *
 
 	DEBUG(6, "Min=%lu\n", min_bytes_to_read);
 
-	for (i=0; i < (min_bytes_to_read-5); i++) {
+	for (i = 0; i < (min_bytes_to_read-5); i++) {
 		rc = wait_for_bulk_in_ready(dev);
 		if (rc <= 0) {
 			DEBUG(5,"wait_for_bulk_in_ready rc=%.2x\n",rc);
@@ -302,7 +299,6 @@ static ssize_t cm4040_read(struct file *
 	if (copy_to_user(buf, dev->r_buf, min_bytes_to_read))
 		return -EFAULT;
 
-
 	rc = wait_for_bulk_in_ready(dev);
 	if (rc <= 0) {
 		DEBUG(5,"wait_for_bulk_in_ready rc=%.2x\n",rc);
@@ -331,11 +327,11 @@ static ssize_t cm4040_read(struct file *
 static ssize_t cm4040_write(struct file *filp, const char __user *buf,
 			 size_t count, loff_t *ppos)
 {
-	struct reader_dev *dev = (struct reader_dev *) filp->private_data;
+	struct reader_dev *dev = filp->private_data;
 	int iobase = dev->link.io.BasePort1;
 	ssize_t rc;
 	int i;
-	unsigned int bytes_to_write; 
+	unsigned int bytes_to_write;
 
 	DEBUG(2, "-> cm4040_write(%s,%d)\n", current->comm, current->pid);
 
@@ -349,13 +345,13 @@ static ssize_t cm4040_write(struct file 
 		return -EIO;
 	}
 
-	if (filp->f_flags & O_NONBLOCK) { 
+	if (filp->f_flags & O_NONBLOCK) {
 		DEBUG(4, "filep->f_flags O_NONBLOCK set\n");
 		DEBUG(4, "<- cm4040_write (failure)\n");
 		return -EAGAIN;
 	}
 
-	if ((dev->link.state & DEV_PRESENT) == 0)	
+	if ((dev->link.state & DEV_PRESENT) == 0)
 		return -ENODEV;
 
 	bytes_to_write = count;
@@ -377,7 +373,7 @@ static ssize_t cm4040_write(struct file 
 		case CMD_PC_TO_RDR_GETSLOTSTATUS:
 		case CMD_PC_TO_RDR_ICCPOWEROFF:
 		case CMD_PC_TO_RDR_GETPARAMETERS:
-		case CMD_PC_TO_RDR_RESETPARAMETERS:  
+		case CMD_PC_TO_RDR_RESETPARAMETERS:
 		case CMD_PC_TO_RDR_SETPARAMETERS:
 		case CMD_PC_TO_RDR_ESCAPE:
 		case CMD_PC_TO_RDR_ICCCLOCK:
@@ -396,10 +392,9 @@ static ssize_t cm4040_write(struct file 
 			return -EIO;
 	}
 
-
 	DEBUG(4, "start \n");
 
-	for (i=0; i < bytes_to_write; i++) {
+	for (i = 0; i < bytes_to_write; i++) {
 		rc = wait_for_bulk_out_ready(dev);
 		if (rc <= 0) {
 			DEBUG(5, "wait_for_bulk_out_ready rc=%.2Zx\n", rc);
@@ -409,7 +404,7 @@ static ssize_t cm4040_write(struct file 
 			else
 				return -EIO;
 		}
-	 
+
 		xoutb(dev->s_buf[i],iobase + REG_OFFSET_BULK_OUT);
 		DEBUG(4, "%.2x ", dev->s_buf[i]);
 	}
@@ -432,7 +427,7 @@ static ssize_t cm4040_write(struct file 
 
 static unsigned int cm4040_poll(struct file *filp, poll_table *wait)
 {
-	struct reader_dev *dev = (struct reader_dev *) filp->private_data;
+	struct reader_dev *dev = filp->private_data;
 	unsigned int mask = 0;
 
 	poll_wait(filp, &dev->poll_wait, wait);
@@ -478,14 +473,14 @@ static int cm4040_open(struct inode *ino
 	dev = (struct reader_dev *)link->priv;
 	filp->private_data = dev;
 
-	if (filp->f_flags & O_NONBLOCK) { 
+	if (filp->f_flags & O_NONBLOCK) {
 		DEBUG(4, "filep->f_flags O_NONBLOCK set\n");
 		DEBUG(4, "<- cm4040_open (failure)\n");
 		return -EAGAIN;
 	}
 
 	dev->owner = current;
-	link->open = 1;		
+	link->open = 1;
 
 	atomic_inc(&cm4040_num_devices_open);
 	mod_timer(&cm4040_poll_timer, jiffies + POLL_PERIOD);
@@ -494,7 +489,7 @@ static int cm4040_open(struct inode *ino
 	return nonseekable_open(inode, filp);
 }
 
-static int cm4040_close(struct inode *inode,struct file *filp)
+static int cm4040_close(struct inode *inode, struct file *filp)
 {
 	struct reader_dev *dev;
 	dev_link_t *link;
@@ -511,10 +506,10 @@ static int cm4040_close(struct inode *in
 	if (link == NULL)
 		return -ENODEV;
 
-	dev = (struct reader_dev *) link->priv;
+	dev = link->priv;
 
 	link->open = 0;
-	wake_up(&dev->devq);	
+	wake_up(&dev->devq);
 
 	atomic_dec(&cm4040_num_devices_open);
 
@@ -524,16 +519,16 @@ static int cm4040_close(struct inode *in
 
 static void cm4040_reader_release(dev_link_t *link)
 {
-	struct reader_dev *dev = (struct reader_dev *) link->priv;
+	struct reader_dev *dev = link->priv;
 
-	DEBUG(3, "-> cm4040_reader_release\n"); 
+	DEBUG(3, "-> cm4040_reader_release\n");
 	while (link->open) {
 		DEBUG(3, KERN_INFO MODULE_NAME ": delaying release until "
 		      "process '%s', pid %d has terminated\n",
-		      dev->owner->comm,dev->owner->pid);
+		      dev->owner->comm, dev->owner->pid);
  		wait_event(dev->devq, (link->open == 0));
 	}
-	DEBUG(3, "<- cm4040_reader_release\n"); 
+	DEBUG(3, "<- cm4040_reader_release\n");
 	return;
 }
 
@@ -600,7 +595,7 @@ static void reader_config(dev_link_t *li
 
 		DEBUG(2, "tupleIndex=%d\n", parse.cftable_entry.index);
 		link->conf.ConfigIndex = parse.cftable_entry.index;
-		
+
 		if (!parse.cftable_entry.io.nwin)
 			continue;
 
@@ -621,8 +616,8 @@ static void reader_config(dev_link_t *li
 		rc = pcmcia_request_io(handle, &link->io);
 		if (rc == CS_SUCCESS) {
 			DEBUG(2, "RequestIO OK\n");
-			break; 
-		} else 
+			break;
+		} else
 			DEBUG(2, "RequestIO failed\n");
 	}
 	if (rc != CS_SUCCESS) {
@@ -684,7 +679,7 @@ static int reader_event(event_t event, i
 		case CS_EVENT_CARD_INSERTION:
 			DEBUG(5, "CS_EVENT_CARD_INSERTION\n");
 			link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-			reader_config(link,devno);
+			reader_config(link, devno);
 			break;
 		case CS_EVENT_CARD_REMOVAL:
 			DEBUG(5, "CS_EVENT_CARD_REMOVAL\n");
@@ -694,7 +689,7 @@ static int reader_event(event_t event, i
 			DEBUG(5, "CS_EVENT_PM_SUSPEND "
 			      "(fall-through to CS_EVENT_RESET_PHYSICAL)\n");
 			link->state |= DEV_SUSPEND;
-		
+
 		case CS_EVENT_RESET_PHYSICAL:
 			DEBUG(5, "CS_EVENT_RESET_PHYSICAL\n");
 			if (link->state & DEV_CONFIG) {
@@ -706,7 +701,7 @@ static int reader_event(event_t event, i
 			DEBUG(5, "CS_EVENT_PM_RESUME "
 			      "(fall-through to CS_EVENT_CARD_RESET)\n");
 			link->state &= ~DEV_SUSPEND;
-		
+
 		case CS_EVENT_CARD_RESET:
 			DEBUG(5, "CS_EVENT_CARD_RESET\n");
 			if ((link->state & DEV_CONFIG)) {
@@ -728,7 +723,7 @@ static void reader_release(dev_link_t *l
 	int rc;
 
 	DEBUG(3, "-> reader_release\n");
-	cm4040_reader_release(link->priv); 
+	cm4040_reader_release(link->priv);
 	rc = pcmcia_release_configuration(link->handle);
 	if (rc != CS_SUCCESS)
 		DEBUG(5, "couldn't ReleaseConfiguration "
@@ -748,7 +743,7 @@ static dev_link_t *reader_attach(void)
 	int i;
 
 	DEBUG(3, "reader_attach\n");
-	for (i=0; i < CM_MAX_DEV; i++) {
+	for (i = 0; i < CM_MAX_DEV; i++) {
 		if (dev_table[i] == NULL)
 			break;
 	}
@@ -757,7 +752,7 @@ static dev_link_t *reader_attach(void)
 		printk(KERN_NOTICE "all devices in use\n");
 		return NULL;
 	}
-	
+
 	DEBUG(5, "create reader device instance\n");
 	dev = kmalloc(sizeof(struct reader_dev), GFP_KERNEL);
 	if (dev == NULL)
@@ -774,7 +769,6 @@ static dev_link_t *reader_attach(void)
 	link->conf.IntType = INT_MEMORY_AND_IO;
 	dev_table[i] = link;
 
-	
 	DEBUG(5, "Register with Card Services\n");
 	client_reg.dev_info = &dev_info;
 	client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
@@ -829,7 +823,7 @@ static void reader_detach(dev_link_t *li
 			break;
 	}
 	if (i == CM_MAX_DEV) {
-		printk(KERN_WARNING MODULE_NAME 
+		printk(KERN_WARNING MODULE_NAME
 			": detach for unkown device aborted\n");
 		return;
 	}
@@ -849,7 +843,7 @@ static struct file_operations reader_fop
 
 static struct pcmcia_device_id cm4040_ids[] = {
 	PCMCIA_DEVICE_MANF_CARD(0x0223, 0x0200),
-	PCMCIA_DEVICE_PROD_ID12("OMNIKEY", "CardMan 4040", 
+	PCMCIA_DEVICE_PROD_ID12("OMNIKEY", "CardMan 4040",
 				0xE32CDD8C, 0x8F23318B),
 	PCMCIA_DEVICE_NULL,
 };
@@ -884,7 +878,7 @@ static void __exit cm4040_exit(void)
 	int i;
 
 	printk(KERN_INFO MODULE_NAME ": unloading\n");
-	pcmcia_unregister_driver(&reader_driver);  
+	pcmcia_unregister_driver(&reader_driver);
 	for (i = 0; i < CM_MAX_DEV; i++) {
 		if (dev_table[i])
 			reader_detach_by_devno(i, dev_table[i]);

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux