vdpram: Simplify cdev operations
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Wed, 16 Jan 2013 10:36:08 +0000 (11:36 +0100)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Wed, 23 Jan 2013 09:41:33 +0000 (18:41 +0900)
Change-Id: I0d4a5f211997f69111ed79b1192e17fa38bb555e

drivers/char/vdpram.c

index 609472dfe9dc211800adef645f1e36001786edc5..8d1a29893ee1cbf58653e5e9093c3bb5e2e06783 100755 (executable)
@@ -580,26 +580,19 @@ long vdpram_ioctl(struct file* filp, unsigned int cmd, unsigned long arg)
  */
 static void vdpram_setup_cdev(struct vdpram_dev *dev, int index)
 {
-       int err, devno = vdpram_devno + index;
-       
-       if (index % 2 ==0) {
-               dev->flag = 1;
-               cdev_init(&dev->cdev, &vdpram_even_fops);
-               dev->cdev.owner = THIS_MODULE;
-               err = cdev_add (&dev->cdev, devno, 1);
-               dev->index = index;
-       }
-       else {
-               dev->flag = 0;
-               cdev_init(&dev->cdev, &vdpram_odd_fops);
-               dev->cdev.owner = THIS_MODULE;
-               err = cdev_add (&dev->cdev, devno, 1);
-               dev->index = index;
-       }
+       dev_t node = MKDEV(vdpram_major, index);
+       int err;
+       int is_odd = index & 1; // "index % 2" equivalent
+
+       dev->flag = !is_odd;
+       cdev_init(&dev->cdev, is_odd ? &vdpram_odd_fops : &vdpram_even_fops);
+       dev->cdev.owner = THIS_MODULE;
+       err = cdev_add (&dev->cdev, node, 1);
+       dev->index = index;
        
        /* Fail gracefully if need be */
        if (err)
-               printk(KERN_NOTICE "Error %d adding deive%d\n", err, index);
+               printk(KERN_NOTICE "Error %d adding device%d\n", err, index);
 }